github.com/metaprov/modela-operator@v0.0.0-20240118193048-f378be8b74d2/controllers/components/cert_manager_test.go (about)

     1  package components
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"github.com/metaprov/modela-operator/api/v1alpha1"
     7  	"github.com/metaprov/modela-operator/pkg/kube"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  	k8serr "k8s.io/apimachinery/pkg/api/errors"
    11  	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    12  	"k8s.io/client-go/kubernetes"
    13  	ctrl "sigs.k8s.io/controller-runtime"
    14  )
    15  
    16  var _ = Describe("Cert manager installer", func() {
    17  	certmanager := NewCertManager()
    18  
    19  	It("Should install cert-manager", func() {
    20  		if installed, err := certmanager.Installed(context.Background()); err == v1alpha1.ComponentNotInstalledByModelaError || installed {
    21  			Skip("Test should be run on an empty cluster")
    22  			return
    23  		}
    24  
    25  		Expect(certmanager.Install(context.Background(), &v1alpha1.Modela{
    26  			ObjectMeta: v1.ObjectMeta{Name: "modela-test"},
    27  		})).To(BeNil())
    28  
    29  		By("Checking if it was installed")
    30  		installed, err := certmanager.Installed(context.Background())
    31  		Expect(err).NotTo(HaveOccurred())
    32  		Expect(installed).To(BeTrue())
    33  
    34  		changeDeploymentModelaOperatorLabel(false, "cert-manager", "cert-manager")
    35  		installed, err = certmanager.Installed(context.Background())
    36  		Expect(err).To(Equal(v1alpha1.ComponentNotInstalledByModelaError))
    37  
    38  		By("Uninstalling cert-manager")
    39  		Expect(certmanager.Uninstall(context.Background(), &v1alpha1.Modela{})).To(BeNil())
    40  		_, err = kube.IsDeploymentCreatedByModela("cert-manager", "cert-manager")
    41  		Expect(k8serr.IsNotFound(err)).To(BeTrue())
    42  
    43  		By("Checking if it was uninstalled")
    44  		installed, err = certmanager.Installed(context.Background())
    45  		Expect(err).NotTo(HaveOccurred())
    46  		Expect(installed).To(BeFalse())
    47  	})
    48  
    49  	It("Should uninstall cert-manager", func() {
    50  		fmt.Println(certmanager.Installed(context.Background()))
    51  		By("Uninstalling cert-manager")
    52  		Expect(certmanager.Uninstall(context.Background(), &v1alpha1.Modela{})).To(BeNil())
    53  		_, err := kube.IsDeploymentCreatedByModela("cert-manager", "cert-manager")
    54  		Expect(k8serr.IsNotFound(err)).To(BeTrue())
    55  	})
    56  })
    57  
    58  func changeDeploymentModelaOperatorLabel(add bool, ns string, name string) {
    59  	clientSet := kubernetes.NewForConfigOrDie(ctrl.GetConfigOrDie())
    60  	deployment, err := clientSet.AppsV1().Deployments(ns).Get(context.Background(), name, v1.GetOptions{})
    61  	if err != nil {
    62  		return
    63  	}
    64  	if add {
    65  		deployment.SetLabels(map[string]string{"app.kubernetes.io/created-by": "modela-operator"})
    66  	} else {
    67  		deployment.SetLabels(map[string]string{"app.kubernetes.io/created-by": ""})
    68  	}
    69  
    70  	_, err = clientSet.AppsV1().Deployments(ns).Update(context.Background(), deployment, v1.UpdateOptions{})
    71  	return
    72  }
    73  
    74  func changeStatefulSetModelaOperatorLabel(add bool, ns string, name string) {
    75  	clientSet := kubernetes.NewForConfigOrDie(ctrl.GetConfigOrDie())
    76  	statefulSet, err := clientSet.AppsV1().StatefulSets(ns).Get(context.Background(), name, v1.GetOptions{})
    77  	if err != nil {
    78  		return
    79  	}
    80  	if add {
    81  		statefulSet.SetLabels(map[string]string{"app.kubernetes.io/created-by": "modela-operator"})
    82  	} else {
    83  		statefulSet.SetLabels(map[string]string{"app.kubernetes.io/created-by": ""})
    84  	}
    85  
    86  	_, err = clientSet.AppsV1().StatefulSets(ns).Update(context.Background(), statefulSet, v1.UpdateOptions{})
    87  	return
    88  }