Openstack Cinder, cinder-volume want to use LVM but cinder-netapp is present?

I’ve been trying for a while now to set up a charmed Openstack configuration using the Charmed Openstack deployment guide however I’ve broken off from the guide as it wants to use Ceph while I want to use cinder-netapp in order to emulate a production environment at work.

The problem I’m dealing with is that the cinder unit only has “enabled_backends=LVM” while the cinder-volume unit has “enabled_backends=LVM,cinder-netapp”. The unfortunate result is that volume creation using Openstack commands results in a volume in error.

Cinder Scheduler (cinder/1) shows the following error: “Failed to run task cinder.scheduler.flows.create_volume.ScheduleCreateVolumeTask;volume:create: No valid backend was found. No weighed backends available: cinder.exception.NoValidBackend: No valid backend was found. No weighed backends available”

while Cinder-Volume (and its subordinate cinder-netapp) do not show any logging when a volume is being created. The cinder-volume unit does show a successful initialization of the cinder-netapp driver when the volume service is restarted, but it complains about LVM not being confgured. The LVM backend is also auto-created and shows as down in “openstack volume service list”.

I have deployed api and scheduler to the Cinder/1 unit, while cinder-volume runs the volume service with the cinder-netapp subordinate.

I’ve checked the relations per another post on here, cinder-volume and cinder-netapp are related via the storage-backend relation and I’m not sure why cinder and cinder-volume both mention LVM when there is another storage backend available. I do not want to use LVM at all since cinder-netapp is in use.

Using: Cinder charm v20.3.1, from yoga/stable, rev 694 (cinder and cinder-volume are deployed with this charm). cinder-netapp v20.3.1 from yoga/stable, rev 28.

Any ideas on how I can get this working? Any additional information needed to diagnose this?

Replying to myself as I found a fix and can define volumes now, so I’m updating for posterity and future people with this issue. This doesn’t appear to be well documented, and the default empty value will cause problems.

You have to specify a value for “scheduler default filters” , the default value is null and without it set to something, your netapp backend won’t be weighed and scheduler won’t send your volume req to a cinder-volume/cinder-netapp backend.

juju config cinder scheduler-default-filters=CapacityFilter

A full list of scheduler filters in Cinder can be found here: (Even though it’s “latest”, this worked for Yoga) https://docs.openstack.org/cinder/latest/configuration/block-storage/scheduler-filters.html

Hi,

I think your issue could have been the same that we discussed in this other thread disable cinder LVM on Openstack - #13 by freyes ,

were you deploying your environment using a bundle?

Thanks for following up and letting others know how to get this issue sorted out.

Best,

Hello @freyes :

No bundle, just hand-jamming the juju commands. I used the commands in the walkthrough for installing the cinder unit, then pieced together several searches that explained how to split api, scheduler, and volume into two units to mimic the configuration in the prod cluster.

I saw your post come up in my searches and kept that in mind when I just redeployed my hypervisors. I kept the application defined and just used add-unit to redeploy fresh cinder and cinder-volume units. The funny bit is that there’s still LVM spam in the config and logs, but when the volume create comes down, it just does the netapp dance to make the volume as defined by volume-type.

I still see a LVM host defined in “openstack volume service list” but I’ve got it marked down so it doesn’t cause conflicts. I don’t know if there is any fix for permanently disabling LVM without chattring configs (which defeats the purpose of juju managing configs).