github.com/verrazzano/verrazzano-monitoring-operator@v0.0.30/test/integ/util/namespaces.go (about)

     1  // Copyright (C) 2020, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package util
     5  
     6  import (
     7  	"context"
     8  	"fmt"
     9  
    10  	corev1 "k8s.io/api/core/v1"
    11  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    12  	"k8s.io/client-go/kubernetes"
    13  )
    14  
    15  // CreateNamespace creates a namespace with the specified name using the provided client.
    16  func CreateNamespace(namespace string, kubeClient kubernetes.Interface) error {
    17  	var err error
    18  	fmt.Printf("Creating namespace '%s'...\n", namespace)
    19  
    20  	ns := &corev1.Namespace{
    21  		ObjectMeta: metav1.ObjectMeta{
    22  			Name: namespace,
    23  		},
    24  	}
    25  
    26  	ns, err = kubeClient.CoreV1().Namespaces().Create(context.Background(), ns, metav1.CreateOptions{})
    27  	if err != nil {
    28  		fmt.Printf("Failed to create namespace '%s': %v", namespace, err)
    29  		return err
    30  	}
    31  
    32  	fmt.Printf("Successfully created namespace '%s'\n", ns.Name)
    33  	return nil
    34  }
    35  
    36  // DeleteNamespace deletes a namespace with the specified name using the provided client.
    37  func DeleteNamespace(namespace string, kubeClient kubernetes.Interface) error {
    38  	var err error
    39  	fmt.Printf("Deleting namespace '%s'...\n", namespace)
    40  
    41  	err = kubeClient.CoreV1().Namespaces().Delete(context.Background(), namespace, metav1.DeleteOptions{})
    42  	if err != nil {
    43  		fmt.Printf("Failed to delete namespace '%s': %v", namespace, err)
    44  		return err
    45  	}
    46  
    47  	fmt.Printf("Successfully deleted namespace '%s'\n", namespace)
    48  	return nil
    49  }
    50  
    51  // NamespaceExists determines whether a namespace with the specified name exists using the provided client.
    52  func NamespaceExists(namespace string, kubeClient kubernetes.Interface) bool {
    53  	var err error
    54  
    55  	nss, err := kubeClient.CoreV1().Namespaces().List(context.Background(), metav1.ListOptions{})
    56  	if err != nil {
    57  		fmt.Printf("Failed to list namespaces %v", err)
    58  		return false
    59  	}
    60  	for _, ns := range nss.Items {
    61  		if ns.Name == namespace {
    62  			return true
    63  		}
    64  	}
    65  
    66  	return false
    67  }