summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openshift-storage-libs/openshiftstoragelibs/baseclass.py8
-rw-r--r--openshift-storage-libs/openshiftstoragelibs/openshift_ops.py26
-rw-r--r--openshift-storage-libs/openshiftstoragelibs/openshift_version.py2
-rw-r--r--tests/functional/arbiter/test_arbiter.py5
-rw-r--r--tests/functional/provisioning/test_dynamic_provisioning_block.py5
-rw-r--r--tests/functional/provisioning/test_dynamic_provisioning_file.py15
-rw-r--r--tests/functional/provisioning/test_pv_resize.py3
-rw-r--r--tests/functional/provisioning/test_storage_class_cases.py6
8 files changed, 62 insertions, 8 deletions
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
diff --git a/tests/functional/arbiter/test_arbiter.py b/tests/functional/arbiter/test_arbiter.py
index ad1094b4..d8442b31 100644
--- a/tests/functional/arbiter/test_arbiter.py
+++ b/tests/functional/arbiter/test_arbiter.py
@@ -15,6 +15,7 @@ from openshiftstoragelibs.openshift_ops import (
wait_for_pod_be_ready,
wait_for_resource_absence,
)
+from openshiftstoragelibs.openshift_version import get_openshift_version
@ddt.ddt
@@ -23,6 +24,10 @@ class TestArbiterVolumeCreateExpandDelete(BaseClass):
def setUp(self):
super(TestArbiterVolumeCreateExpandDelete, self).setUp()
self.node = self.ocp_master_node[0]
+ if get_openshift_version() < "3.9":
+ self.skipTest("Arbiter feature cannot be used on OCP older "
+ "than 3.9, because 'volumeoptions' for Heketi "
+ "is not supported there.")
version = heketi_version.get_heketi_version(self.heketi_client_node)
if version < '6.0.0-11':
self.skipTest("heketi-client package %s does not support arbiter "
diff --git a/tests/functional/provisioning/test_dynamic_provisioning_block.py b/tests/functional/provisioning/test_dynamic_provisioning_block.py
index 8b668d62..88d9c9f8 100644
--- a/tests/functional/provisioning/test_dynamic_provisioning_block.py
+++ b/tests/functional/provisioning/test_dynamic_provisioning_block.py
@@ -32,6 +32,7 @@ from openshiftstoragelibs.openshift_ops import (
wait_for_pod_be_ready,
wait_for_resource_absence,
)
+from openshiftstoragelibs.openshift_version import get_openshift_version
from openshiftstoragelibs.waiter import Waiter
@@ -316,6 +317,10 @@ class TestDynamicProvisioningBlockP0(GlusterBlockBaseClass):
def test_dynamic_provisioning_glusterblock_reclaim_policy_retain(self):
"""Validate retain policy for gluster-block after PVC deletion"""
+ if get_openshift_version() < "3.9":
+ self.skipTest(
+ "'Reclaim' feature is not supported in OCP older than 3.9")
+
self.create_storage_class(reclaim_policy='Retain')
self.create_and_wait_for_pvc()
diff --git a/tests/functional/provisioning/test_dynamic_provisioning_file.py b/tests/functional/provisioning/test_dynamic_provisioning_file.py
index e63a3035..4f361834 100644
--- a/tests/functional/provisioning/test_dynamic_provisioning_file.py
+++ b/tests/functional/provisioning/test_dynamic_provisioning_file.py
@@ -28,6 +28,7 @@ from openshiftstoragelibs.openshift_ops import (
verify_pvc_status_is_bound,
wait_for_pod_be_ready,
wait_for_resource_absence)
+from openshiftstoragelibs.openshift_version import get_openshift_version
from openshiftstoragelibs.waiter import Waiter
@@ -110,6 +111,11 @@ class TestDynamicProvisioningP0(BaseClass):
def test_dynamic_provisioning_glusterfile_volname_prefix(self):
"""Validate dynamic provisioning for gluster file with vol name prefix
"""
+ if get_openshift_version() < "3.9":
+ self.skipTest(
+ "'volumenameprefix' option for Heketi is not supported"
+ " in OCP older than 3.9")
+
g.log.info("test_dynamic_provisioning_glusterfile volname prefix")
self.dynamic_provisioning_glusterfile(True)
@@ -398,6 +404,10 @@ class TestDynamicProvisioningP0(BaseClass):
def test_dynamic_provisioning_glusterfile_reclaim_policy_retain(self):
"""Validate retain policy for glusterfs after deletion of pvc"""
+ if get_openshift_version() < "3.9":
+ self.skipTest(
+ "'Reclaim' feature is not supported in OCP older than 3.9")
+
self.create_storage_class(reclaim_policy='Retain')
self.create_and_wait_for_pvc()
@@ -442,6 +452,11 @@ class TestDynamicProvisioningP0(BaseClass):
def test_usage_of_default_storage_class(self):
"""Validate PVs creation for SC with default custom volname prefix"""
+ if get_openshift_version() < "3.9":
+ self.skipTest(
+ "'volumenameprefix' option for Heketi is not supported"
+ " in OCP older than 3.9")
+
# Unset 'default' option from all the existing Storage Classes
unset_sc_annotation_cmd = (
r"""oc annotate sc %s """
diff --git a/tests/functional/provisioning/test_pv_resize.py b/tests/functional/provisioning/test_pv_resize.py
index ec6cc24c..a5b9d2c2 100644
--- a/tests/functional/provisioning/test_pv_resize.py
+++ b/tests/functional/provisioning/test_pv_resize.py
@@ -40,8 +40,7 @@ class TestPvResizeClass(BaseClass):
def setUp(self):
super(TestPvResizeClass, self).setUp()
if getattr(self, "skip_me", False):
- msg = ("pv resize is not available in openshift "
- "version %s " % self.version)
+ msg = ("pv resize is not available in openshift older than v3.9")
g.log.error(msg)
raise self.skipTest(msg)
diff --git a/tests/functional/provisioning/test_storage_class_cases.py b/tests/functional/provisioning/test_storage_class_cases.py
index 27982d5d..8a04c8ea 100644
--- a/tests/functional/provisioning/test_storage_class_cases.py
+++ b/tests/functional/provisioning/test_storage_class_cases.py
@@ -20,6 +20,7 @@ from openshiftstoragelibs.openshift_ops import (
wait_for_pod_be_ready,
wait_for_resource_absence,
)
+from openshiftstoragelibs.openshift_version import get_openshift_version
@ddt.ddt
@@ -247,6 +248,11 @@ class TestStorageClassCases(BaseClass):
def test_create_and_verify_pvc_with_volume_name_prefix(self):
"""create and verify pvc with volname prefix on an app pod"""
+ if get_openshift_version() < "3.9":
+ self.skipTest(
+ "'volumenameprefix' option for Heketi is not supported"
+ " in OCP older than 3.9")
+
sc_name = self.create_storage_class(create_vol_name_prefix=True)
pvc_name = self.create_and_wait_for_pvc(sc_name=sc_name)
namespace = (self.sc.get(