From b4c0c24e7e41c1e17eea6a6a0425b5577045bf28 Mon Sep 17 00:00:00 2001 From: Parikshith Date: Tue, 8 Oct 2024 16:54:02 +0530 Subject: [PATCH 1/2] bz: 2294723, validate placement policy from spread to mirror of multi-region bucket class Signed-off-by: Parikshith --- .../object/mcg/test_multi_region.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/functional/object/mcg/test_multi_region.py b/tests/functional/object/mcg/test_multi_region.py index a1617ae286b..4226b2e41b1 100644 --- a/tests/functional/object/mcg/test_multi_region.py +++ b/tests/functional/object/mcg/test_multi_region.py @@ -13,8 +13,10 @@ red_squad, runs_on_provider, mcg, + tier2, ) from ocs_ci.framework.testlib import MCGTest +from ocs_ci.ocs import ocp, constants from ocs_ci.ocs.bucket_utils import ( sync_object_directory, verify_s3_object_integrity, @@ -176,3 +178,39 @@ def test_multiregion_mirror( mcg_obj.check_backingstore_state( "backing-store-" + backingstore2.name, BS_OPTIMAL ) + + @tier2 + @bugzilla("2294723") + @skipif_ocs_version("<4.17") + @pytest.mark.polarion_id("OCS-6249") + def test_multiregion_spread_to_mirror( + self, + bucket_factory, + ): + """ + Test to update and validate placement policy from spread to mirror of multi-region bucket class + """ + + bucket_class = { + "interface": "OC", + "backingstore_dict": {"aws": [(1, "us-west-1"), (1, "us-east-2")]}, + "placement_policy": "Spread", + } + # Create backing store, bucket class along with a bucket with "Spread" placement policy + bucket = bucket_factory(1, "OC", bucketclass=bucket_class)[0] + bucketclass_obj = ocp.OCP( + kind=constants.BUCKETCLASS, + namespace=constants.DEFAULT_NAMESPACE, + resource_name=bucket.bucketclass.name, + ) + # Patch bucket class to update placement from "Spread" to "Mirror" + params = '[{"op": "replace", "path": "/spec/placementPolicy/tiers/0/placement", "value": "Mirror"}]' + bucketclass_obj.patch(params=params, format_type="json") + bucketclass_obj.reload_data() + # Validate "Mirror" placement policy is applied and status of bucket class + assert ( + bucketclass_obj.data["spec"]["placementPolicy"]["tiers"][0]["placement"] + == "Mirror" + ), f"Failed Mirror policy is not updated in {bucket.bucketclass.name}" + bucketclass_obj._has_phase = True + bucketclass_obj.wait_for_phase(phase=constants.STATUS_READY, timeout=180) From 3e34b9b45b807bdae2e18b1633dac8b7d0f0bab8 Mon Sep 17 00:00:00 2001 From: Parikshith Date: Wed, 16 Oct 2024 13:24:45 +0530 Subject: [PATCH 2/2] ns fix Signed-off-by: Parikshith --- tests/functional/object/mcg/test_multi_region.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/object/mcg/test_multi_region.py b/tests/functional/object/mcg/test_multi_region.py index 4226b2e41b1..9a7fb7544d2 100644 --- a/tests/functional/object/mcg/test_multi_region.py +++ b/tests/functional/object/mcg/test_multi_region.py @@ -200,7 +200,7 @@ def test_multiregion_spread_to_mirror( bucket = bucket_factory(1, "OC", bucketclass=bucket_class)[0] bucketclass_obj = ocp.OCP( kind=constants.BUCKETCLASS, - namespace=constants.DEFAULT_NAMESPACE, + namespace=constants.OPENSHIFT_STORAGE_NAMESPACE, resource_name=bucket.bucketclass.name, ) # Patch bucket class to update placement from "Spread" to "Mirror"