From 0b2c88ee59b52312c86bcceea1645a57671894af Mon Sep 17 00:00:00 2001 From: Valerii Ponomarov Date: Tue, 2 Apr 2019 22:35:45 +0530 Subject: Fix support of OCP3.6 and 3.7 Project has lots of inconsistencies with OCP3.6 and 3.7 So, fix it. Change-Id: I8d38773637b779e1c2e1631568f100c1ab1fdd50 --- .../openshiftstoragelibs/baseclass.py | 8 +++++-- .../openshiftstoragelibs/openshift_ops.py | 26 +++++++++++++++++++--- .../openshiftstoragelibs/openshift_version.py | 2 +- 3 files changed, 30 insertions(+), 6 deletions(-) (limited to 'openshift-storage-libs') diff --git a/openshift-storage-libs/openshiftstoragelibs/baseclass.py b/openshift-storage-libs/openshiftstoragelibs/baseclass.py index 375ab7c0..9b6976f6 100644 --- a/openshift-storage-libs/openshiftstoragelibs/baseclass.py +++ b/openshift-storage-libs/openshiftstoragelibs/baseclass.py @@ -28,6 +28,7 @@ from openshiftstoragelibs.openshift_ops import ( wait_for_pod_be_ready, wait_for_resource_absence, ) +from openshiftstoragelibs.openshift_version import get_openshift_version class BaseClass(unittest.TestCase): @@ -214,8 +215,11 @@ class BaseClass(unittest.TestCase): for pvc_name in pvc_names: verify_pvc_status_is_bound(node, pvc_name, timeout, wait_step) finally: - reclaim_policy = oc_get_custom_resource( - node, 'sc', ':.reclaimPolicy', sc_name)[0] + if get_openshift_version() < "3.9": + reclaim_policy = "Delete" + else: + reclaim_policy = oc_get_custom_resource( + node, 'sc', ':.reclaimPolicy', sc_name)[0] for pvc_name in pvc_names: if reclaim_policy == 'Retain': diff --git a/openshift-storage-libs/openshiftstoragelibs/openshift_ops.py b/openshift-storage-libs/openshiftstoragelibs/openshift_ops.py index ae0de983..26d7d0b6 100644 --- a/openshift-storage-libs/openshiftstoragelibs/openshift_ops.py +++ b/openshift-storage-libs/openshiftstoragelibs/openshift_ops.py @@ -1298,9 +1298,29 @@ def get_events(hostname, field_selector.append('reason=%s' % event_reason) if event_type: field_selector.append('type=%s' % event_type) - cmd = "oc get events -o yaml --field-selector %s" % ",".join( - field_selector or "''") - return yaml.load(command.cmd_run(cmd, hostname=hostname))['items'] + cmd = "oc get events -o yaml" + if openshift_version.get_openshift_version() >= '3.9': + cmd.append(" --field-selector %s" % ",".join(field_selector or "''")) + objects = yaml.load(command.cmd_run(cmd, hostname=hostname))['items'] + if openshift_version.get_openshift_version() >= '3.9': + return objects + + # Backup approach for OCP3.6 and OCP3.7 which do not have + # '--field-selector' feature. + filtered_objects = [] + for o in objects: + if obj_name and o["involvedObject"]["name"] != obj_name: + continue + if obj_namespace and o["involvedObject"]["namespace"] != obj_namespace: + continue + if obj_type and o["involvedObject"]["kind"] != obj_type: + continue + if event_reason and o["reason"] != event_reason: + continue + if event_type and o["type"] != event_type: + continue + filtered_objects.append(o) + return filtered_objects def wait_for_events(hostname, diff --git a/openshift-storage-libs/openshiftstoragelibs/openshift_version.py b/openshift-storage-libs/openshiftstoragelibs/openshift_version.py index bc0c9be0..e1e7adaf 100644 --- a/openshift-storage-libs/openshiftstoragelibs/openshift_version.py +++ b/openshift-storage-libs/openshiftstoragelibs/openshift_version.py @@ -31,7 +31,7 @@ import six from openshiftstoragelibs import exceptions -OPENSHIFT_VERSION_RE = r"(?:v?)(\d+)(?:\.)(\d+)(?:\.(\d+))?$" +OPENSHIFT_VERSION_RE = r"(?:v?)(\d+)(?:\.)(\d+)(?:\.(\d+))?.*" OPENSHIFT_VERSION = None -- cgit