Exemplo n.º 1
0
    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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
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"