def factory(project=None, service_account=None): """ Args: project (object): ocs_ci.ocs.resources.ocs.OCS instance of 'Project' kind. service_account (str): service_account_name Returns: object: serviceaccount instance. """ nonlocal active_service_account_obj if active_service_account_obj and not service_account: return active_service_account_obj elif service_account: sa_obj = helpers.get_serviceaccount_obj( sa_name=service_account, namespace=project.namespace) if not helpers.validate_scc_policy(sa_name=service_account, namespace=project.namespace): helpers.add_scc_policy(sa_name=service_account, namespace=project.namespace) sa_obj.project = project active_service_account_obj = sa_obj instances.append(sa_obj) return sa_obj else: sa_obj = helpers.create_serviceaccount( namespace=project.namespace, ) sa_obj.project = project active_service_account_obj = sa_obj helpers.add_scc_policy(sa_name=sa_obj.name, namespace=project.namespace) assert sa_obj, "Failed to create serviceaccount" instances.append(sa_obj) return sa_obj
def create_pvc_and_deploymentconfig_pod(self, request, pvc_factory): """ """ def finalizer(): helpers.delete_deploymentconfig_pods(pod_obj) request.addfinalizer(finalizer) # Create pvc pvc_obj = pvc_factory() # Create service_account to get privilege for deployment pods sa_name = helpers.create_serviceaccount(pvc_obj.project.namespace) helpers.add_scc_policy(sa_name=sa_name.name, namespace=pvc_obj.project.namespace) pod_obj = helpers.create_pod( interface_type=constants.CEPHBLOCKPOOL, pvc_name=pvc_obj.name, namespace=pvc_obj.project.namespace, sa_name=sa_name.name, dc_deployment=True ) helpers.wait_for_resource_state(resource=pod_obj, state=constants.STATUS_RUNNING) return pod_obj, pvc_obj
def create_and_set_namespace(self): """ Create and set namespace for the pods to be created Create sa_name if Kind if DeploymentConfig """ self.namespace_list.append(helpers.create_project()) self.namespace = self.namespace_list[-1].namespace if self.dc_deployment: self.sa_name = helpers.create_serviceaccount(self.namespace) self.sa_name = self.sa_name.name helpers.add_scc_policy(sa_name=self.sa_name, namespace=self.namespace) else: self.sa_name = None
def create_serviceaccount(request): """ Create a service account """ class_instance = request.node.cls def finalizer(): """ Delete the service account """ helpers.remove_scc_policy( sa_name=class_instance.sa_obj.name, namespace=class_instance.project_obj.namespace) class_instance.sa_obj.delete() request.addfinalizer(finalizer) class_instance.sa_obj = helpers.create_serviceaccount( namespace=class_instance.project_obj.namespace, ) helpers.add_scc_policy(sa_name=class_instance.sa_obj.name, namespace=class_instance.project_obj.namespace) assert class_instance.sa_obj, "Failed to create serviceaccount"