diff --git a/ocs_ci/framework/pytest_customization/marks.py b/ocs_ci/framework/pytest_customization/marks.py index d3af750287e..9cf21c1a275 100644 --- a/ocs_ci/framework/pytest_customization/marks.py +++ b/ocs_ci/framework/pytest_customization/marks.py @@ -40,7 +40,7 @@ ) from ocs_ci.utility import version from ocs_ci.utility.aws import update_config_from_s3 -from ocs_ci.utility.utils import is_z_stream_upgrade, load_auth_config +from ocs_ci.utility.utils import load_auth_config # tier marks @@ -195,13 +195,6 @@ reason="This test cannot run on setup having more than three worker nodes", ) -# Skip if we are running z-stream upgrades -# Useful marker for DR upgrade cases -skipif_z_stream_upgrade = pytest.mark.skipif( - is_z_stream_upgrade(), - reason="This is z-stream upgrade and this component upgrade should have been taken care by other components", -) - # Skipif marks skipif_aws_creds_are_missing = pytest.mark.skipif( ( diff --git a/ocs_ci/ocs/acm_upgrade.py b/ocs_ci/ocs/acm_upgrade.py index 40829b15af4..853b5caaa8c 100644 --- a/ocs_ci/ocs/acm_upgrade.py +++ b/ocs_ci/ocs/acm_upgrade.py @@ -14,7 +14,7 @@ from ocs_ci.ocs.ocp import OCP from ocs_ci.utility import templating from ocs_ci.utility.utils import get_ocp_version, get_running_acm_version, run_cmd -from ocs_ci.utility.version import get_semantic_version + logger = logging.getLogger(__name__) @@ -31,10 +31,11 @@ def __init__(self): self.upgrade_version = config.UPGRADE["upgrade_acm_version"] # In case if we are using registry image self.acm_registry_image = config.UPGRADE.get("upgrade_acm_registry_image", "") + self.zstream_upgrade = False def get_acm_version_before_upgrade(self): running_acm_version = get_running_acm_version() - return get_semantic_version(running_acm_version) + return running_acm_version def get_parsed_versions(self): parsed_version_before_upgrade = parse_version(self.version_before_upgrade) @@ -46,6 +47,8 @@ def run_upgrade(self): self.version_change = ( self.get_parsed_versions()[1] > self.get_parsed_versions()[0] ) + if not self.version_change: + self.zstream_upgrade = True # either this would be GA to Unreleased upgrade of same version OR # GA to unreleased upgrade to higher version if self.acm_registry_image and self.version_change: @@ -123,12 +126,13 @@ def validate_upgrade(self): acm_sub = OCP( namespace=self.namespace, resource_name=self.operator_name, - kind="Subscription", - ) - assert ( - acm_sub.get()["items"][0]["spec"]["channel"] - == config.ENV_DATA["acm_hub_channel"] + kind="Subscription.operators.coreos.com", ) + if not self.zstream_upgrade: + acm_prev_channel = f"release-{self.upgrade_version}" + else: + acm_prev_channel = config.ENV_DATA["acm_hub_channel"] + assert acm_sub.get().get("spec").get("channel") == acm_prev_channel logger.info("Checking ACM status") acm_mch = OCP( kind=constants.ACM_MULTICLUSTER_HUB, diff --git a/ocs_ci/ocs/dr_upgrade.py b/ocs_ci/ocs/dr_upgrade.py index 453961b1774..e8e8199c416 100644 --- a/ocs_ci/ocs/dr_upgrade.py +++ b/ocs_ci/ocs/dr_upgrade.py @@ -239,13 +239,15 @@ class DRHubUpgrade(DRUpgrade): def __init__(self): super().__init__(resource_name=defaults.DR_HUB_OPERATOR_NAME) self.operator_name = defaults.DR_HUB_OPERATOR_NAME - self.subscription_name = constants.DR_HUB_OPERATOR_SUBSCRIPTION + self.subscription_name = constants.DR_HUB_OPERATOR_SUBSCRIPTION.replace( + "PLACEHOLDER", config.ENV_DATA["ocs_version"] + ) def run_upgrade(self): self.pod_name_pattern = "ramen-hub-operator" self.collect_data() assert ( - self.pre_upgrade_data["pod_status"] == "Running" + self.pre_upgrade_data.get("pod_status", "") == "Running" ), "ramen-hub-operator pod is not in Running status" super().run_upgrade() self.upgrade_phase = "post_upgrade" @@ -265,15 +267,20 @@ class DRClusterOperatorUpgrade(DRUpgrade): """ def __init__(self): - super().__init__(resource_name=defaults.DR_CLUSTER_OPERATOR_NAME) + super().__init__( + resource_name=defaults.DR_CLUSTER_OPERATOR_NAME, + namespace=constants.OPENSHIFT_DR_SYSTEM_NAMESPACE, + ) self.operator_name = defaults.DR_CLUSTER_OPERATOR_NAME - self.subscription_name = constants.DR_CLUSTER_OPERATOR_SUBSCRIPTION + self.subscription_name = constants.DR_CLUSTER_OPERATOR_SUBSCRIPTION.replace( + "PLACEHOLDER", config.ENV_DATA["ocs_version"] + ) def run_upgrade(self): self.pod_name_pattern = "ramen-dr-cluster-operator" self.collect_data() assert ( - self.pre_upgrade_data["pod_status"] == "Running" + self.pre_upgrade_data.get("pod_status", "") == "Running" ), "ramen-dr-operator pod is not in Running status" super().run_upgrade() self.upgrade_phase = "post_upgrade" diff --git a/ocs_ci/ocs/ocs_upgrade.py b/ocs_ci/ocs/ocs_upgrade.py index cb0ed1662b7..a791c9be76a 100644 --- a/ocs_ci/ocs/ocs_upgrade.py +++ b/ocs_ci/ocs/ocs_upgrade.py @@ -428,9 +428,14 @@ def update_subscription(self, channel): subscription_name = constants.ODF_SUBSCRIPTION else: subscription_name = constants.OCS_SUBSCRIPTION + kind_name = ( + "subscription.operators.coreos.com" + if config.multicluster + else "subscription" + ) subscription = OCP( resource_name=subscription_name, - kind="subscription", + kind=kind_name, namespace=config.ENV_DATA["cluster_namespace"], ) current_ocs_source = subscription.data["spec"]["source"] @@ -441,7 +446,7 @@ def update_subscription(self, channel): else constants.OPERATOR_CATALOG_SOURCE_NAME ) patch_subscription_cmd = ( - f"patch subscription {subscription_name} " + f"patch {kind_name} {subscription_name} " f'-n {self.namespace} --type merge -p \'{{"spec":{{"channel": ' f'"{channel}", "source": "{ocs_source}"}}}}\'' ) diff --git a/tests/functional/upgrade/test_upgrade.py b/tests/functional/upgrade/test_upgrade.py index 97630180a90..2a6c88078f4 100644 --- a/tests/functional/upgrade/test_upgrade.py +++ b/tests/functional/upgrade/test_upgrade.py @@ -5,7 +5,6 @@ from ocs_ci.framework.pytest_customization.marks import ( purple_squad, multicluster_roles, - skipif_z_stream_upgrade, ) from ocs_ci.framework.testlib import ( ocs_upgrade, @@ -24,6 +23,7 @@ DRHubUpgrade, ) from ocs_ci.utility.reporting import get_polarion_id +from ocs_ci.utility.utils import is_z_stream_upgrade log = logging.getLogger(__name__) @@ -102,26 +102,32 @@ def test_mco_upgrade(zone_rank, role_rank, config_index): @purple_squad @dr_hub_upgrade -@skipif_z_stream_upgrade @multicluster_roles(["mdr-all-acm"]) def test_dr_hub_upgrade(zone_rank, role_rank, config_index): """ Test upgrade procedure for DR hub operator """ + if is_z_stream_upgrade(): + pytest.skip( + "This is z-stream upgrade and this component upgrade should have been taken care by ODF upgrade" + ) dr_hub_upgrade_obj = DRHubUpgrade() dr_hub_upgrade_obj.run_upgrade() @purple_squad @dr_cluster_operator_upgrade -@skipif_z_stream_upgrade @multicluster_roles(["mdr-all-odf"]) def test_dr_cluster_upgrade(zone_rank, role_rank, config_index): """ Test upgrade procedure for DR cluster operator """ + if is_z_stream_upgrade(): + pytest.skip( + "This is z-stream upgrade and this component upgrade should have been taken care by ODF upgrade" + ) dr_cluster_upgrade_obj = DRClusterOperatorUpgrade() dr_cluster_upgrade_obj.run_upgrade()