nix-community / nixops-libvirtd

NixOps libvirtd backend plugin [maintainer=@AmineChikhaoui]
GNU Lesser General Public License v3.0
35 stars 20 forks source link

Trying to deploy latest NixOps: 'Deployment' object has no attribute '_eval_flags' #29

Closed onny closed 10 months ago

onny commented 2 years ago

Hey, when trying to deploy with:

$ nixops deploy -d pi-nix-testing
database> Connecting to qemu:///system...
database> preparing disk image...
Traceback (most recent call last):
  File "/nix/store/m3g2f9fj7l0n8v3p42yyfpplyf0jibp1-python3.9-nixops-2.0.0/bin/.nixops-wrapped", line 9, in <module>
    sys.exit(main())
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops/__main__.py", line 56, in main
    args.op(args)
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops/script_defs.py", line 688, in op_deploy
    depl.deploy(
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops/deployment.py", line 1352, in deploy
    self.run_with_notify("deploy", lambda: self._deploy(**kwargs))
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops/deployment.py", line 1341, in run_with_notify
    f()
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops/deployment.py", line 1352, in <lambda>
    self.run_with_notify("deploy", lambda: self._deploy(**kwargs))
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops/deployment.py", line 1255, in _deploy
    nixops.parallel.run_tasks(
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops/parallel.py", line 106, in run_tasks
    raise list(exceptions.values())[0]
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops/parallel.py", line 70, in thread_fun
    work_result = (worker_fun(t), None, t.name)
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops/deployment.py", line 1207, in worker
    r.create(
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops_virtd/backends/libvirtd.py", line 211, in create
    self._prepare_storage_volume()
  File "/nix/store/3il5njybb5whz9lh9wk9k3c70kb5xcn9-python3-3.9.6-env/lib/python3.9/site-packages/nixops_virtd/backends/libvirtd.py", line 239, in _prepare_storage_volume
    + self.depl._eval_flags(self.depl.nix_exprs)
AttributeError: 'Deployment' object has no attribute '_eval_flags'

tt fails with AttributeError: 'Deployment' object has no attribute '_eval_flags'.

This seems to be related to https://github.com/nix-community/nixops-vbox/pull/28 :

_eval_flags and nix_exprs are undefined in nixops 35ac0208, which causes an error when deploying with targetEnv="virtualbox" - one can use nixops.evaluation.eval instead to make it work.

Not sure how to patch this, looks a bit too complicated for me ...

Regards Jonas

nrdsp commented 2 years ago

Either with deployment.targetEnv = "libvirtd"; or deployment.targetEnv = "virtualbox"; I'm getting a similar error on disk creation with nixopsUnstable. Here's the relevant log for the libvirtd target environment:

nixops deploy -d test-server
test-server> Connecting to qemu:///system...
test-server> preparing disk image...
Traceback (most recent call last):
  File "/nix/store/qqr13imyf3ccg2xfa2f8fwahqxb8k0y0-python3.9-nixops-2.0.0-pre-7220cbd/bin/.nixops-wrapped", line 9, in <module>
    sys.exit(main())
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops/__main__.py", line 56, in main
    args.op(args)
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops/script_defs.py", line 715, in op_deploy
    depl.deploy(
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops/deployment.py", line 1352, in deploy
    self.run_with_notify("deploy", lambda: self._deploy(**kwargs))
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops/deployment.py", line 1341, in run_with_notify
    f()
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops/deployment.py", line 1352, in <lambda>
    self.run_with_notify("deploy", lambda: self._deploy(**kwargs))
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops/deployment.py", line 1255, in _deploy
    nixops.parallel.run_tasks(
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops/parallel.py", line 106, in run_tasks
    raise list(exceptions.values())[0]
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops/parallel.py", line 70, in thread_fun
    work_result = (worker_fun(t), None, t.name)
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops/deployment.py", line 1207, in worker
    r.create(
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops_virtd/backends/libvirtd.py", line 211, in create
    self._prepare_storage_volume()
  File "/nix/store/3gv1yir9j92y8k92pi7h1r5hlhyd0drn-python3-3.9.11-env/lib/python3.9/site-packages/nixops_virtd/backends/libvirtd.py", line 239, in _prepare_storage_volume
    + self.depl._eval_flags(self.depl.nix_exprs)
AttributeError: 'Deployment' object has no attribute '_eval_flags'
deepfire commented 11 months ago

As of latest nixops_unstable in Nixpkgs, the problem is still there.

deepfire commented 11 months ago

So, preliminary findings:

  1. _eval_flags were removed from Nixops circa 2020
  2. extra_nix_eval_flags seem to have taken their place.
deepfire commented 11 months ago

Fixed in https://github.com/nix-community/nixops-libvirtd/pull/33