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 }