We cannot rely on JUJU_AVAILABILITY_ZONE so let admin(s) set AZ for the
storage backend explicitly through a charm config. Nova-compute charm,
for example, can use JUJU_AVAILABILITY_ZONE because AZ can be set per
unit / compute node basis. However, when it comes to Cinder backends, we
cannot use JUJU_AVAILABILITY_ZONE of cinder-{api,scheduler,volume} units
since those are not related to where storage backends reside. Ceph-mon
units are not suitable either since it consist of three units usually
and the common JUJU_AVAILABILITY_ZONE across those units to represent
the volume backend AZ is not assured.
The mock third party library was needed for mock support in py2
runtimes. Since we now only support py36 and later, we can use the
standard lib unittest.mock module instead.
- Adds groovy to the series in the metadata
- Classic charms: sync charm-helpers.
- Classic ceph based charms: also sync charms.ceph
- Reactive charms: trigger a rebuild
Without a relation to at least one nova-compute application a
cinder-ceph backend will not be functional as the libvirt
secrets will not have been created to allow access to the
ceph cluster from libvirt/qemu.
Add a simple context to check that the 'ceph-access' relation
is present. This will result in a blocked status if the
relation is not detected - for example: