The issue is that the fix was only partially successful, in that whilst it avoids the 'storage.zfs_pool_name', the other branch of code doesn't get the zfs pool name, but instead the lxd pool name; if they are different then it fails.
The LXD charm used different names (it's now being patched to use the same name for the lxd pool and zfs pool), which broke nova-lxd on bionic.
The code in question is in nova/virt/lxd/driver.py in get_available_resource(self, nodename) around line 1057:
The issue is that the fix was only partially successful, in that whilst it avoids the 'storage. zfs_pool_ name', the other branch of code doesn't get the zfs pool name, but instead the lxd pool name; if they are different then it fails.
The LXD charm used different names (it's now being patched to use the same name for the lxd pool and zfs pool), which broke nova-lxd on bionic.
The code in question is in nova/virt/ lxd/driver. py in get_available_ resource( self, nodename) around line 1057:
try:
pool_ name = lxd_config[ 'config' ]['storage. zfs_pool_ name']
pool_ name = CONF.lxd.pool
local_ disk_info = _get_zpool_ info(pool_ name)
except KeyError:
i.e. storage. zfs_pool_ name vs CONF.lxd.pool
When nova-lxd is properly refactored for storage pools, this issue should be resolved.