diff options
author | Valerii Ponomarov <vponomar@redhat.com> | 2019-10-25 21:04:33 +0530 |
---|---|---|
committer | Valerii Ponomarov <vponomar@redhat.com> | 2019-10-31 19:55:46 +0530 |
commit | c2813c9d15d0ca5379a69c468c4586a623e5613a (patch) | |
tree | 60087547b3fb3b58bf3cdfccb9146bdb07d3f98a /openshift-storage-libs/openshiftstoragelibs/baseclass.py | |
parent | 8ff1ad960ac164e1157df69f12c748e764d8af4f (diff) |
Make 'provisioner' be autocalculated for storage classes
In OCS 3.11.4 was changed the approach for 'provisioners' in storage
classes due to the BugZilla bugs [1] and [2].
So, change the approach for getting 'provisioner' value in this project
making it be autocalculated based on the data taken from the
block provisioner pod, which is located in the working namespace.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1732787
[2] https://bugzilla.redhat.com/show_bug.cgi?id=1738394
Change-Id: Ic1037038e39abba2b2a1ad6dc3ddbfe42473cb88
Signed-off-by: vamahaja <vamahaja@redhat.com>
Diffstat (limited to 'openshift-storage-libs/openshiftstoragelibs/baseclass.py')
-rw-r--r-- | openshift-storage-libs/openshiftstoragelibs/baseclass.py | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/openshift-storage-libs/openshiftstoragelibs/baseclass.py b/openshift-storage-libs/openshiftstoragelibs/baseclass.py index b000a643..cd9f24ca 100644 --- a/openshift-storage-libs/openshiftstoragelibs/baseclass.py +++ b/openshift-storage-libs/openshiftstoragelibs/baseclass.py @@ -28,6 +28,7 @@ from openshiftstoragelibs.node_ops import ( node_delete_iptables_rules, ) from openshiftstoragelibs.openshift_ops import ( + get_block_provisioner, get_pod_name_from_dc, get_pv_name_from_pvc, oc_create_app_dc_with_io, @@ -80,13 +81,13 @@ class BaseClass(unittest.TestCase): cls.ocp_nodes_info = g.config['ocp_servers']['nodes'] # Initializes storage project config variables - openshift_config = g.config.get("cns", g.config.get("openshift")) - cls.storage_project_name = openshift_config.get( + cls.openshift_config = g.config.get("cns", g.config.get("openshift")) + cls.storage_project_name = cls.openshift_config.get( 'storage_project_name', - openshift_config.get('setup', {}).get('cns_project_name')) + cls.openshift_config.get('setup', {}).get('cns_project_name')) # Initializes heketi config variables - heketi_config = openshift_config['heketi_config'] + heketi_config = cls.openshift_config['heketi_config'] cls.heketi_dc_name = heketi_config['heketi_dc_name'] cls.heketi_service_name = heketi_config['heketi_service_name'] cls.heketi_client_node = heketi_config['heketi_client_node'] @@ -97,10 +98,12 @@ class BaseClass(unittest.TestCase): cls.gluster_servers = list(g.config['gluster_servers'].keys()) cls.gluster_servers_info = g.config['gluster_servers'] - cls.storage_classes = openshift_config['dynamic_provisioning'][ + cls.storage_classes = cls.openshift_config['dynamic_provisioning'][ 'storage_classes'] cls.sc = cls.storage_classes.get( 'storage_class1', cls.storage_classes.get('file_storage_class')) + cls.secret_type = "kubernetes.io/glusterfs" + cmd = "echo -n %s | base64" % cls.heketi_cli_key ret, out, err = g.run(cls.ocp_master_node[0], cmd, "root") if ret != 0: @@ -184,7 +187,8 @@ class BaseClass(unittest.TestCase): current_number_of_heketi_db_inconsistencies, error_msg) - def create_secret(self, secret_name_prefix="autotests-secret"): + def create_secret(self, secret_name_prefix="autotests-secret", + secret_type=None): secret_name = oc_create_secret( self.ocp_client[0], secret_name_prefix=secret_name_prefix, @@ -192,7 +196,7 @@ class BaseClass(unittest.TestCase): 'secretnamespace', self.sc.get('restsecretnamespace', 'default'))), data_key=self.heketi_cli_key, - secret_type=self.sc.get('provisioner', 'kubernetes.io/glusterfs')) + secret_type=secret_type or self.secret_type) self.addCleanup( oc_delete, self.ocp_client[0], 'secret', secret_name) return secret_name @@ -217,7 +221,7 @@ class BaseClass(unittest.TestCase): # Create storage class secret_name_option = "secretname" secret_namespace_option = "secretnamespace" - provisioner = self.sc.get("provisioner", "kubernetes.io/glusterfs") + provisioner = self.get_provisioner_for_sc() if provisioner != "kubernetes.io/glusterfs": secret_name_option = "rest%s" % secret_name_option secret_namespace_option = "rest%s" % secret_namespace_option @@ -264,6 +268,12 @@ class BaseClass(unittest.TestCase): self.addCleanup(oc_delete, self.ocp_client[0], "sc", self.sc_name) return self.sc_name + def get_provisioner_for_sc(self): + return "kubernetes.io/glusterfs" + + def get_block_provisioner_for_sc(self): + return get_block_provisioner(self.ocp_client[0]) + def create_and_wait_for_pvcs(self, pvc_size=1, pvc_name_prefix="autotests-pvc", pvc_amount=1, sc_name=None, @@ -513,6 +523,10 @@ class GlusterBlockBaseClass(BaseClass): super(GlusterBlockBaseClass, cls).setUpClass() cls.sc = cls.storage_classes.get( 'storage_class2', cls.storage_classes.get('block_storage_class')) + cls.secret_type = "gluster.org/glusterblock" + + def get_provisioner_for_sc(self): + return self.get_block_provisioner_for_sc() def verify_iscsi_sessions_and_multipath(self, pvc_name, rname, rtype="dc"): # Get storage ips of glusterfs pods |