nix-community / nixops-libvirtd

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

Storage pool not found: no storage pool with matching name 'default' #26

Closed onny closed 3 years ago

onny commented 3 years ago

Hey, I tried to use and install the example with NixOpsUnstable. Unfortunately it fails with this error:

machine> uploading disk image...
libvirt: Storage Driver error : Storage pool not found: no storage pool with matching name 'default'
Traceback (most recent call last):
  File "/nix/store/l0im4p7w53sr0ny8byad7c3dlam4fjwc-python3.8-nixops-2.0.0/bin/.nixops-wrapped", line 9, in <module>
    sys.exit(main())
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops/__main__.py", line 710, in main
    args.op(args)
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops/script_defs.py", line 617, in op_deploy
    depl.deploy(
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops/deployment.py", line 1479, in deploy
    self.run_with_notify("deploy", lambda: self._deploy(**kwargs))
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops/deployment.py", line 1468, in run_with_notify
    f()
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops/deployment.py", line 1479, in <lambda>
    self.run_with_notify("deploy", lambda: self._deploy(**kwargs))
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops/deployment.py", line 1382, in _deploy
    nixops.parallel.run_tasks(
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops/parallel.py", line 106, in run_tasks
    raise list(exceptions.values())[0]
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops/parallel.py", line 70, in thread_fun
    work_result = (worker_fun(t), None, t.name)
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops/deployment.py", line 1336, in worker
    r.create(
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops_virtd/backends/libvirtd.py", line 211, in create
    self._prepare_storage_volume()
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops_virtd/backends/libvirtd.py", line 257, in _prepare_storage_volume
    self._vol = self._create_volume(
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops_virtd/backends/libvirtd.py", line 287, in _create_volume
    vol = self.pool.createXML(xml)
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/nixops_virtd/backends/libvirtd.py", line 133, in pool
    self._pool = self.conn.storagePoolLookupByName(self.storage_pool_name)
  File "/nix/store/573xp8pq1cvih48az9lyh1kpdlb1bf7x-python3-3.8.8-env/lib/python3.8/site-packages/libvirt.py", line 5435, in storagePoolLookupByName
    raise libvirtError('virStoragePoolLookupByName() failed')
libvirt.libvirtError: Storage pool not found: no storage pool with matching name 'default'

But storage pool default is present and active.

onny@tuxzentrale ~/p/nixops-libvirtd (master) [1]> virsh pool-list
 Name          State    Autostart
-----------------------------------
 default       active   yes
 gnome-boxes   active   yes

Also redefining default doesn't solve the problem.

virsh pool-destroy default
virsh pool-undefine default
virsh pool-define-as --name default --type dir --target /var/lib/libvirt/images
virsh pool-autostart default
virsh pool-start default

I also tried a different name images but that doesn't help :(

Best regards Jonas

onny commented 3 years ago

That's strange, the default connection for virsh is not qemu://system? Because this connection list different defined pools :O

onny@tuxzentrale ~/p/nixops-libvirtd (master)> virsh pool-list --all
 Name          State    Autostart
-----------------------------------
 gnome-boxes   active   yes
 images        active   yes

onny@tuxzentrale ~/p/nixops-libvirtd (master)> virsh -c qemu:///system pool-list --all
 Name          State    Autostart
-----------------------------------
 ExamplePool   active   yes
onny commented 3 years ago

Okay there seems to be one user specific qemu:///session instance and an other qemu:///system instance. In my opinion the tutorial here should be more precise about that :)

onny commented 3 years ago

Okay if you run virsh with sudo it automatically chooses qemu:///system so the tutorial/example is correct :+1: