Add CEPHFS filesystem metadata verifications
Recently, we have implemented a new feature that allows the share
drivers to set metadata to the shares on the creation [1].
This feature allowed the Ceph driver to report the filesystem name
where the share was created (only when using the CEPHFS protocol),
making it easier for users to get this data before they mount
their shares.
This change adds a tempest test that will check if such config
is present in the shares.
[1] https://review.opendev.org/c/openstack/manila/+/909175
[2] https://review.opendev.org/c/openstack/manila/+/909916
Change-Id: I2ecef30de76c40b98accb5ce04b6c9eefdf7fea2
Signed-off-by: Carlos Eduardo <ces.eduardo98@gmail.com>
diff --git a/manila_tempest_tests/tests/api/test_metadata.py b/manila_tempest_tests/tests/api/test_metadata.py
index 862de50..be5b1cf 100644
--- a/manila_tempest_tests/tests/api/test_metadata.py
+++ b/manila_tempest_tests/tests/api/test_metadata.py
@@ -13,11 +13,14 @@
# License for the specific language governing permissions and limitations
# under the License.
+from tempest import config
from tempest.lib import decorators
from testtools import testcase as tc
from manila_tempest_tests.tests.api import base
+CONF = config.CONF
+
class SharesMetadataTest(base.BaseSharesMixedTest):
@@ -263,3 +266,35 @@
body_get = self.shares_v2_client.get_metadata(
self.share["id"])['metadata']
self.assertEqual(max_value, body_get["key"])
+
+
+class SharesMetadataCEPHFSTest(base.BaseSharesMixedTest):
+
+ protocol = "cephfs"
+
+ @classmethod
+ def resource_setup(cls):
+ super(SharesMetadataCEPHFSTest, cls).resource_setup()
+ # create share type
+ cls.share_type = cls.create_share_type()
+ cls.share_type_id = cls.share_type['id']
+ # create share
+ cls.share = cls.create_share(share_type_id=cls.share_type_id)
+
+ @classmethod
+ def skip_checks(cls):
+ super(SharesMetadataCEPHFSTest, cls).skip_checks()
+ if not (cls.protocol in CONF.share.enable_protocols):
+ msg = (
+ "CEPHFS filesystem metadata tests are disabled "
+ "for the %s protocol." % cls.protocol)
+ raise cls.skipException(msg)
+
+ @decorators.idempotent_id('58edc9c8-8b85-49aa-80aa-209fc8f40a13')
+ @tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
+ def test_cephfs_share_contains_mount_option(self):
+ body_get = self.shares_v2_client.get_metadata(
+ self.share["id"])['metadata']
+
+ self.assertIn("__mount_options", body_get)
+ self.assertIn("fs", body_get["__mount_options"])
diff --git a/manila_tempest_tests/tests/api/test_scheduler_hints.py b/manila_tempest_tests/tests/api/test_scheduler_hints.py
index 5012f17..e5e51a5 100644
--- a/manila_tempest_tests/tests/api/test_scheduler_hints.py
+++ b/manila_tempest_tests/tests/api/test_scheduler_hints.py
@@ -72,14 +72,17 @@
# get metadata of share
metadata_a = self.shares_v2_client.get_metadata(
self.share_a["id"])['metadata']
- md_a = {"__affinity_same_host": "%s" % share_b["id"]}
+ expected_md_a = {"__affinity_same_host": "%s" % share_b["id"]}
metadata_b = self.shares_v2_client.get_metadata(
share_b["id"])['metadata']
- md_b = {"__affinity_same_host": "%s" % self.share_a["id"]}
+ expected_md_b = {"__affinity_same_host": "%s" % self.share_a["id"]}
# verify metadata
- self.assertEqual(md_a, metadata_a)
- self.assertEqual(md_b, metadata_b)
+ for key, value in expected_md_a.items():
+ self.assertEqual(value, metadata_a.get(key))
+
+ for key, value in expected_md_b.items():
+ self.assertEqual(value, metadata_b.get(key))
@decorators.idempotent_id('6569e0c3-43c9-4ee2-84ff-ea7fa8da8110')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)