The test class BlueStoreCompressionCharmOperation gates tests on
whether the ceph release is mimic or newer but it uses the
keystone application to calculate the currently deployed version.
This PR switches the test class to ceck the version of ceph-mon
instead which makes more sense and the keystone application may
not always present in a ceph deployment.
Before this fix, the test tried to determine the OpenStack
release based on the ceph-mon charm. Unfortunately Ceph has
the same version on Ussuri and Victoria. As a consequence
the test would wrongly conclude that it's testing against
"groovy_ussuri", which isn't a valid Ubuntu/OpenStack pair.
With this fix, the test now determines the OpenStack
release based on the keystone charm, with which we are able
to tell Ussuri and Victoria apart. This test class is being
run against the following charm functional tests at the
moment, which all have a keystone charm in their test
bundles: nova-compute, cinder-ceph, glance, ceph-fs,
ceph-radosgw and gnocchi.
Extend iSCSI tests to mount multipath device and write data to it
Then unmount it and logout of the iscsi target. Finally log back
into the iscsi target, mount device and check data is present.
* Add Ceph-iscsi Erasure coding check
Add a test which created a ceph iscsi target backed by an
erasure coded pool.
* Fix EC pool type
* Test ceph iscsi target from default pool
* Add Ceph-iscsi Erasure coding check
Add a test which created a ceph iscsi target backed by an
erasure coded pool.
* Update action params inline with charm change
* Fix EC pool type
Currently test_check_pool_types will fail when it tries to check
the corresponding pool type for an application that is not present
in the deployment, this patch changes the behaviour to skip missing
applications.
Update the cinder-ceph permissions check to look for permissions
specific to the cinder-ceph usage of ceph; this ensures that if
we add glance and nova to the bundle (which creates additional
permissions) the existing test will continue to pass.
Add a ceph_ready config step which just checks that the ceph units
are in a 'active' 'Unit is Ready.*' state. This is useful when
encryption at rest is being used and the tests.yaml assumes that
the units are going to come up blocked. Once vault is ready the
tests then need to wait for the ceph units to become unblocked.
The image used for the tests is just treated as a blob, no guests
are booted using it so to speed up the tests when using slow
storage by switching to using cirros image. The cirros image is ~20
times smaller than the bionic one.
There was a race before a block_until_all_units_idle() where it
could blast through the check before it started removing the relation.
This ensures that it waits until something happens and then waits for it
to finish.
The test won't pass on serverstack due to the snapd taking a copy of the
/mnt/vdb info at boot time and thus not being able to umount it is root
without also running through all of the procs and checking if they also
have it mounted. Thus, this just disables the test on focal and newer.