github.com/redhat-appstudio/e2e-tests@v0.0.0-20230619105049-9a422b2094d7/pkg/utils/common/service_account.go (about)

     1  package common
     2  
     3  import (
     4  	"context"
     5  
     6  	corev1 "k8s.io/api/core/v1"
     7  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     8  	"k8s.io/apimachinery/pkg/util/wait"
     9  	"sigs.k8s.io/controller-runtime/pkg/client"
    10  )
    11  
    12  func (s *SuiteController) GetServiceAccount(saName, namespace string) (*corev1.ServiceAccount, error) {
    13  	return s.KubeInterface().CoreV1().ServiceAccounts(namespace).Get(context.TODO(), saName, metav1.GetOptions{})
    14  }
    15  
    16  func (s *SuiteController) ServiceaccountPresent(saName, namespace string) wait.ConditionFunc {
    17  	return func() (bool, error) {
    18  		_, err := s.GetServiceAccount(saName, namespace)
    19  		if err != nil {
    20  			return false, nil
    21  		}
    22  		return true, nil
    23  	}
    24  }
    25  
    26  // CreateServiceAccount creates a service account with the provided name and namespace using the given list of secrets.
    27  func (s *SuiteController) CreateServiceAccount(name, namespace string, serviceAccountSecretList []corev1.ObjectReference) (*corev1.ServiceAccount, error) {
    28  	serviceAccount := &corev1.ServiceAccount{
    29  		ObjectMeta: metav1.ObjectMeta{
    30  			Name:      name,
    31  			Namespace: namespace,
    32  		},
    33  		Secrets: serviceAccountSecretList,
    34  	}
    35  	return s.KubeInterface().CoreV1().ServiceAccounts(namespace).Create(context.TODO(), serviceAccount, metav1.CreateOptions{})
    36  }
    37  
    38  // DeleteAllServiceAccountsInASpecificNamespace deletes all ServiceAccount from a given namespace
    39  func (h *SuiteController) DeleteAllServiceAccountsInASpecificNamespace(namespace string) error {
    40  	return h.KubeRest().DeleteAllOf(context.TODO(), &corev1.ServiceAccount{}, client.InNamespace(namespace))
    41  }