From ba8c6261fd7728244d48ca629d423a1930f535de Mon Sep 17 00:00:00 2001 From: Alexander Greene Date: Fri, 22 Sep 2023 09:04:50 -0700 Subject: [PATCH] Use generated namespaces in e2e tests This commit updates all of OLM e2e test suites to generate a namespace rather than using a hard coded test namespace passed into the test as a parameter. The motivation for this change include: 1. Decreasing the opportunity for tests to influence each other. Tests are not guaranteed to cleanup after themselves and may influence the results of other tests. 2. Some distributions of OLM run alongside other controllers which may revert changes to resources in predetermined namespaces. Signed-off-by: Alexander Greene --- test/e2e/catalog_e2e_test.go | 202 ++++---- test/e2e/catalog_exclusion_test.go | 10 +- test/e2e/crd_e2e_test.go | 77 ++-- test/e2e/csv_e2e_test.go | 361 ++++++++------- test/e2e/deprecated_e2e_test.go | 10 +- test/e2e/disabling_copied_csv_e2e_test.go | 8 +- test/e2e/dynamic_resource_e2e_test.go | 37 +- test/e2e/fail_forward_e2e_test.go | 42 +- test/e2e/gc_e2e_test.go | 100 ++-- test/e2e/installplan_e2e_test.go | 534 ++++++++++------------ test/e2e/operator_groups_e2e_test.go | 44 +- test/e2e/packagemanifest_e2e_test.go | 38 +- 12 files changed, 705 insertions(+), 758 deletions(-) diff --git a/test/e2e/catalog_e2e_test.go b/test/e2e/catalog_e2e_test.go index b7aa95a1d8..9c698a01a8 100644 --- a/test/e2e/catalog_e2e_test.go +++ b/test/e2e/catalog_e2e_test.go @@ -49,7 +49,7 @@ const ( var _ = Describe("Starting CatalogSource e2e tests", func() { var ( - ns corev1.Namespace + generatedNamespace corev1.Namespace c operatorclient.ClientInterface crc versioned.Interface packageserverClient *packageserverclientset.Clientset @@ -67,14 +67,14 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { Namespace: namespaceName, }, } - ns = SetupGeneratedTestNamespaceWithOperatorGroup(namespaceName, og) + generatedNamespace = SetupGeneratedTestNamespaceWithOperatorGroup(namespaceName, og) c = ctx.Ctx().KubeClient() crc = ctx.Ctx().OperatorClient() packageserverClient = packageserverclientset.NewForConfigOrDie(ctx.Ctx().RESTConfig()) }) AfterEach(func() { - TeardownNamespace(ns.GetName()) + TeardownNamespace(generatedNamespace.GetName()) }) It("loading between restarts", func() { @@ -93,7 +93,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { } crd := newCRD(genName("ins-")) - csv := newCSV(packageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, nil) + csv := newCSV(packageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, nil) defer func() { Eventually(func() error { @@ -105,11 +105,11 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }() catalogSourceName := genName("mock-ocs-") - _, cleanupSource := createInternalCatalogSource(c, crc, catalogSourceName, ns.GetName(), manifests, []apiextensions.CustomResourceDefinition{crd}, []v1alpha1.ClusterServiceVersion{csv}) + _, cleanupSource := createInternalCatalogSource(c, crc, catalogSourceName, generatedNamespace.GetName(), manifests, []apiextensions.CustomResourceDefinition{crd}, []v1alpha1.ClusterServiceVersion{csv}) defer cleanupSource() // ensure the mock catalog exists and has been synced by the catalog operator - catalogSource, err := fetchCatalogSourceOnStatus(crc, catalogSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + catalogSource, err := fetchCatalogSourceOnStatus(crc, catalogSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) Expect(err).ShouldNot(HaveOccurred()) // get catalog operator deployment @@ -125,7 +125,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { // check for last synced update to catalogsource By("Checking for catalogsource lastSync updates") - _, err = fetchCatalogSourceOnStatus(crc, catalogSourceName, ns.GetName(), func(cs *v1alpha1.CatalogSource) bool { + _, err = fetchCatalogSourceOnStatus(crc, catalogSourceName, generatedNamespace.GetName(), func(cs *v1alpha1.CatalogSource) bool { before := catalogSource.Status.GRPCConnectionState after := cs.Status.GRPCConnectionState if after != nil && after.LastConnectTime.After(before.LastConnectTime.Time) { @@ -147,8 +147,8 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { stableChannel := "stable" mainCRD := newCRD(genName("ins-")) - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, nil) - replacementCSV := newCSV(mainPackageReplacement, ns.GetName(), mainPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, nil) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, nil) + replacementCSV := newCSV(mainPackageReplacement, generatedNamespace.GetName(), mainPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, nil) defer func() { Eventually(func() error { @@ -194,9 +194,9 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { // Create Subscription subscriptionName := genName("sub-") - createSubscriptionForCatalogWithSpec(GinkgoT(), crc, ns.GetName(), subscriptionName, subscriptionSpec) + createSubscriptionForCatalogWithSpec(GinkgoT(), crc, generatedNamespace.GetName(), subscriptionName, subscriptionSpec) - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ToNot(BeNil()) @@ -204,17 +204,17 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { requiresApprovalChecker := buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseRequiresApproval) Eventually(func() error { - fetchedInstallPlan, err := fetchInstallPlanWithNamespace(GinkgoT(), crc, installPlanName, ns.GetName(), requiresApprovalChecker) + fetchedInstallPlan, err := fetchInstallPlanWithNamespace(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), requiresApprovalChecker) if err != nil { return err } fetchedInstallPlan.Spec.Approved = true - _, err = crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).Update(context.Background(), fetchedInstallPlan, metav1.UpdateOptions{}) + _, err = crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).Update(context.Background(), fetchedInstallPlan, metav1.UpdateOptions{}) return err }).Should(Succeed()) - _, err = awaitCSV(crc, ns.GetName(), mainCSV.GetName(), csvSucceededChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), mainCSV.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Update manifest @@ -235,7 +235,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { fetchedUpdatedCatalog, err := fetchCatalogSourceOnStatus(crc, cs.GetName(), cs.GetNamespace(), catalogSourceRegistryPodSynced()) Expect(err).ShouldNot(HaveOccurred()) - subscription, err = fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionStateUpgradePendingChecker()) + subscription, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionStateUpgradePendingChecker()) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ShouldNot(BeNil()) @@ -256,8 +256,8 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { stableChannel := "stable" dependentCRD := newCRD(genName("ins-")) - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) - dependentCSV := newCSV(dependentPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) + dependentCSV := newCSV(dependentPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) defer func() { Eventually(func() error { @@ -295,25 +295,25 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { } // Create the initial catalogsource - createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, nil, []v1alpha1.ClusterServiceVersion{mainCSV}) + createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, nil, []v1alpha1.ClusterServiceVersion{mainCSV}) // Attempt to get the catalog source before creating install plan - fetchedInitialCatalog, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + fetchedInitialCatalog, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) Expect(err).ShouldNot(HaveOccurred()) // Get initial configmap - configMap, err := c.KubernetesInterface().CoreV1().ConfigMaps(ns.GetName()).Get(context.Background(), fetchedInitialCatalog.Spec.ConfigMap, metav1.GetOptions{}) + configMap, err := c.KubernetesInterface().CoreV1().ConfigMaps(generatedNamespace.GetName()).Get(context.Background(), fetchedInitialCatalog.Spec.ConfigMap, metav1.GetOptions{}) Expect(err).ShouldNot(HaveOccurred()) // Check pod created - initialPods, err := c.KubernetesInterface().CoreV1().Pods(ns.GetName()).List(context.Background(), metav1.ListOptions{LabelSelector: "olm.configMapResourceVersion=" + configMap.ResourceVersion}) + initialPods, err := c.KubernetesInterface().CoreV1().Pods(generatedNamespace.GetName()).List(context.Background(), metav1.ListOptions{LabelSelector: "olm.configMapResourceVersion=" + configMap.ResourceVersion}) Expect(err).ShouldNot(HaveOccurred()) Expect(initialPods.Items).To(HaveLen(1)) // Update catalog configmap - updateInternalCatalog(GinkgoT(), c, crc, mainCatalogName, ns.GetName(), []apiextensions.CustomResourceDefinition{dependentCRD}, []v1alpha1.ClusterServiceVersion{mainCSV, dependentCSV}, append(mainManifests, dependentManifests...)) + updateInternalCatalog(GinkgoT(), c, crc, mainCatalogName, generatedNamespace.GetName(), []apiextensions.CustomResourceDefinition{dependentCRD}, []v1alpha1.ClusterServiceVersion{mainCSV, dependentCSV}, append(mainManifests, dependentManifests...)) - fetchedUpdatedCatalog, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), func(catalog *v1alpha1.CatalogSource) bool { + fetchedUpdatedCatalog, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), func(catalog *v1alpha1.CatalogSource) bool { before := fetchedInitialCatalog.Status.ConfigMapResource after := catalog.Status.ConfigMapResource if after != nil && before.LastUpdateTime.Before(&after.LastUpdateTime) && @@ -330,7 +330,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { Eventually(func() (types.UID, error) { var err error // Get updated configmap - updatedConfigMap, err = c.KubernetesInterface().CoreV1().ConfigMaps(ns.GetName()).Get(context.Background(), fetchedInitialCatalog.Spec.ConfigMap, metav1.GetOptions{}) + updatedConfigMap, err = c.KubernetesInterface().CoreV1().ConfigMaps(generatedNamespace.GetName()).Get(context.Background(), fetchedInitialCatalog.Spec.ConfigMap, metav1.GetOptions{}) if err != nil { return "", err } @@ -347,27 +347,27 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { // Await 1 CatalogSource registry pod matching the updated labels singlePod := podCount(1) selector := labels.SelectorFromSet(map[string]string{"olm.catalogSource": mainCatalogName, "olm.configMapResourceVersion": updatedConfigMap.GetResourceVersion()}) - podList, err := awaitPods(GinkgoT(), c, ns.GetName(), selector.String(), singlePod) + podList, err := awaitPods(GinkgoT(), c, generatedNamespace.GetName(), selector.String(), singlePod) Expect(err).ShouldNot(HaveOccurred()) Expect(podList.Items).To(HaveLen(1), "expected pod list not of length 1") // Await 1 CatalogSource registry pod matching the updated labels selector = labels.SelectorFromSet(map[string]string{"olm.catalogSource": mainCatalogName}) - podList, err = awaitPods(GinkgoT(), c, ns.GetName(), selector.String(), singlePod) + podList, err = awaitPods(GinkgoT(), c, generatedNamespace.GetName(), selector.String(), singlePod) Expect(err).ShouldNot(HaveOccurred()) Expect(podList.Items).To(HaveLen(1), "expected pod list not of length 1") // Create Subscription subscriptionName := genName("sub-") - createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, fetchedUpdatedCatalog.GetName(), mainPackageName, stableChannel, "", v1alpha1.ApprovalAutomatic) + createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, fetchedUpdatedCatalog.GetName(), mainPackageName, stableChannel, "", v1alpha1.ApprovalAutomatic) - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionStateAtLatestChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionStateAtLatestChecker()) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ShouldNot(BeNil()) - _, err = fetchCSV(crc, subscription.Status.CurrentCSV, ns.GetName(), buildCSVConditionChecker(v1alpha1.CSVPhaseSucceeded)) + _, err = fetchCSV(crc, subscription.Status.CurrentCSV, generatedNamespace.GetName(), buildCSVConditionChecker(v1alpha1.CSVPhaseSucceeded)) Expect(err).ShouldNot(HaveOccurred()) - ipList, err := crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).List(context.Background(), metav1.ListOptions{}) + ipList, err := crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).List(context.Background(), metav1.ListOptions{}) ipCount := 0 for _, ip := range ipList.Items { if ownerutil.IsOwnedBy(&ip, subscription) { @@ -389,8 +389,8 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { stableChannel := "stable" dependentCRD := newCRD(genName("ins-")) - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) - dependentCSV := newCSV(dependentPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) + dependentCSV := newCSV(dependentPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) defer func() { Eventually(func() error { @@ -428,17 +428,17 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { } // Create the initial catalogsource - _, cleanupSource := createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, nil, []v1alpha1.ClusterServiceVersion{mainCSV}) + _, cleanupSource := createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, nil, []v1alpha1.ClusterServiceVersion{mainCSV}) // Attempt to get the catalog source before creating install plan - fetchedInitialCatalog, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + fetchedInitialCatalog, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) Expect(err).ShouldNot(HaveOccurred()) // Get initial configmap - configMap, err := c.KubernetesInterface().CoreV1().ConfigMaps(ns.GetName()).Get(context.Background(), fetchedInitialCatalog.Spec.ConfigMap, metav1.GetOptions{}) + configMap, err := c.KubernetesInterface().CoreV1().ConfigMaps(generatedNamespace.GetName()).Get(context.Background(), fetchedInitialCatalog.Spec.ConfigMap, metav1.GetOptions{}) Expect(err).ShouldNot(HaveOccurred()) // Check pod created - initialPods, err := c.KubernetesInterface().CoreV1().Pods(ns.GetName()).List(context.Background(), metav1.ListOptions{LabelSelector: "olm.configMapResourceVersion=" + configMap.ResourceVersion}) + initialPods, err := c.KubernetesInterface().CoreV1().Pods(generatedNamespace.GetName()).List(context.Background(), metav1.ListOptions{LabelSelector: "olm.configMapResourceVersion=" + configMap.ResourceVersion}) Expect(err).ShouldNot(HaveOccurred()) Expect(initialPods.Items).To(HaveLen(1)) @@ -446,16 +446,16 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { cleanupSource() // create a catalog with the same name - createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), append(mainManifests, dependentManifests...), []apiextensions.CustomResourceDefinition{dependentCRD}, []v1alpha1.ClusterServiceVersion{mainCSV, dependentCSV}) + createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), append(mainManifests, dependentManifests...), []apiextensions.CustomResourceDefinition{dependentCRD}, []v1alpha1.ClusterServiceVersion{mainCSV, dependentCSV}) // Create Subscription subscriptionName := genName("sub-") - createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", v1alpha1.ApprovalAutomatic) + createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", v1alpha1.ApprovalAutomatic) - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionStateAtLatestChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionStateAtLatestChecker()) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ToNot(BeNil()) - _, err = fetchCSV(crc, subscription.Status.CurrentCSV, ns.GetName(), buildCSVConditionChecker(v1alpha1.CSVPhaseSucceeded)) + _, err = fetchCSV(crc, subscription.Status.CurrentCSV, generatedNamespace.GetName(), buildCSVConditionChecker(v1alpha1.CSVPhaseSucceeded)) Expect(err).ShouldNot(HaveOccurred()) }) @@ -482,9 +482,9 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { stableChannel := "stable" dependentCRD := newCRD(genName("ins-")) - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) - replacementCSV := newCSV(mainPackageReplacement, ns.GetName(), mainPackageStable, semver.MustParse("0.2.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) - dependentCSV := newCSV(dependentPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) + replacementCSV := newCSV(mainPackageReplacement, generatedNamespace.GetName(), mainPackageStable, semver.MustParse("0.2.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) + dependentCSV := newCSV(dependentPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) defer func() { Eventually(func() error { @@ -536,13 +536,13 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { } // Create ConfigMap CatalogSources - createInternalCatalogSource(c, crc, mainSourceName, ns.GetName(), append(mainManifests, dependentManifests...), []apiextensions.CustomResourceDefinition{dependentCRD}, []v1alpha1.ClusterServiceVersion{mainCSV, dependentCSV}) - createInternalCatalogSource(c, crc, replacementSourceName, ns.GetName(), append(replacementManifests, dependentManifests...), []apiextensions.CustomResourceDefinition{dependentCRD}, []v1alpha1.ClusterServiceVersion{replacementCSV, mainCSV, dependentCSV}) + createInternalCatalogSource(c, crc, mainSourceName, generatedNamespace.GetName(), append(mainManifests, dependentManifests...), []apiextensions.CustomResourceDefinition{dependentCRD}, []v1alpha1.ClusterServiceVersion{mainCSV, dependentCSV}) + createInternalCatalogSource(c, crc, replacementSourceName, generatedNamespace.GetName(), append(replacementManifests, dependentManifests...), []apiextensions.CustomResourceDefinition{dependentCRD}, []v1alpha1.ClusterServiceVersion{replacementCSV, mainCSV, dependentCSV}) // Wait for ConfigMap CatalogSources to be ready - mainSource, err := fetchCatalogSourceOnStatus(crc, mainSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + mainSource, err := fetchCatalogSourceOnStatus(crc, mainSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) Expect(err).ShouldNot(HaveOccurred()) - replacementSource, err := fetchCatalogSourceOnStatus(crc, replacementSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + replacementSource, err := fetchCatalogSourceOnStatus(crc, replacementSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) Expect(err).ShouldNot(HaveOccurred()) // Replicate catalog pods with no OwnerReferences @@ -561,7 +561,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: addressSourceName, - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: v1alpha1.CatalogSourceSpec{ SourceType: v1alpha1.SourceTypeGrpc, @@ -572,10 +572,10 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, } - addressSource, err = crc.OperatorsV1alpha1().CatalogSources(ns.GetName()).Create(context.Background(), addressSource, metav1.CreateOptions{}) + addressSource, err = crc.OperatorsV1alpha1().CatalogSources(generatedNamespace.GetName()).Create(context.Background(), addressSource, metav1.CreateOptions{}) Expect(err).ShouldNot(HaveOccurred()) defer func() { - err := crc.OperatorsV1alpha1().CatalogSources(ns.GetName()).Delete(context.Background(), addressSourceName, metav1.DeleteOptions{}) + err := crc.OperatorsV1alpha1().CatalogSources(generatedNamespace.GetName()).Delete(context.Background(), addressSourceName, metav1.DeleteOptions{}) Expect(err).ShouldNot(HaveOccurred()) }() @@ -584,36 +584,36 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { Expect(err).ToNot(HaveOccurred(), "catalog source did not become ready") // Delete CatalogSources - err = crc.OperatorsV1alpha1().CatalogSources(ns.GetName()).Delete(context.Background(), mainSourceName, metav1.DeleteOptions{}) + err = crc.OperatorsV1alpha1().CatalogSources(generatedNamespace.GetName()).Delete(context.Background(), mainSourceName, metav1.DeleteOptions{}) Expect(err).ShouldNot(HaveOccurred()) - err = crc.OperatorsV1alpha1().CatalogSources(ns.GetName()).Delete(context.Background(), replacementSourceName, metav1.DeleteOptions{}) + err = crc.OperatorsV1alpha1().CatalogSources(generatedNamespace.GetName()).Delete(context.Background(), replacementSourceName, metav1.DeleteOptions{}) Expect(err).ShouldNot(HaveOccurred()) // Create Subscription subscriptionName := genName("sub-") - cleanupSubscription := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, addressSourceName, mainPackageName, stableChannel, "", v1alpha1.ApprovalAutomatic) + cleanupSubscription := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, addressSourceName, mainPackageName, stableChannel, "", v1alpha1.ApprovalAutomatic) defer cleanupSubscription() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionStateAtLatestChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionStateAtLatestChecker()) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ShouldNot(BeNil()) - _, err = fetchCSV(crc, subscription.Status.CurrentCSV, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, subscription.Status.CurrentCSV, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Update the catalog's address to point at the other registry pod's cluster ip Eventually(func() error { - addressSource, err = crc.OperatorsV1alpha1().CatalogSources(ns.GetName()).Get(context.Background(), addressSourceName, metav1.GetOptions{}) + addressSource, err = crc.OperatorsV1alpha1().CatalogSources(generatedNamespace.GetName()).Get(context.Background(), addressSourceName, metav1.GetOptions{}) if err != nil { return err } addressSource.Spec.Address = net.JoinHostPort(replacementCopy.Status.PodIP, "50051") - _, err = crc.OperatorsV1alpha1().CatalogSources(ns.GetName()).Update(context.Background(), addressSource, metav1.UpdateOptions{}) + _, err = crc.OperatorsV1alpha1().CatalogSources(generatedNamespace.GetName()).Update(context.Background(), addressSource, metav1.UpdateOptions{}) return err }).Should(Succeed()) // Wait for the replacement CSV to be installed - _, err = awaitCSV(crc, ns.GetName(), replacementCSV.GetName(), csvSucceededChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), replacementCSV.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) }) @@ -630,7 +630,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { stableChannel := "stable" sourceName := genName("catalog-") crd := newCRD(genName("ins-")) - csv := newCSV(packageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, nil) + csv := newCSV(packageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, nil) manifests := []registry.PackageManifest{ { PackageName: packageName, @@ -650,13 +650,13 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }).Should(Succeed()) }() - _, cleanupSource := createInternalCatalogSource(c, crc, sourceName, ns.GetName(), manifests, []apiextensions.CustomResourceDefinition{crd}, []v1alpha1.ClusterServiceVersion{csv}) + _, cleanupSource := createInternalCatalogSource(c, crc, sourceName, generatedNamespace.GetName(), manifests, []apiextensions.CustomResourceDefinition{crd}, []v1alpha1.ClusterServiceVersion{csv}) defer cleanupSource() // Wait for a new registry pod to be created selector := labels.SelectorFromSet(map[string]string{"olm.catalogSource": sourceName}) singlePod := podCount(1) - registryPods, err := awaitPods(GinkgoT(), c, ns.GetName(), selector.String(), singlePod) + registryPods, err := awaitPods(GinkgoT(), c, generatedNamespace.GetName(), selector.String(), singlePod) Expect(err).ShouldNot(HaveOccurred(), "error awaiting registry pod") Expect(registryPods).ToNot(BeNil(), "nil registry pods") Expect(registryPods.Items).To(HaveLen(1), "unexpected number of registry pods found") @@ -667,7 +667,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { // Delete the registry pod Eventually(func() error { backgroundDeletion := metav1.DeletePropagationBackground - return c.KubernetesInterface().CoreV1().Pods(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{PropagationPolicy: &backgroundDeletion}, metav1.ListOptions{LabelSelector: selector.String()}) + return c.KubernetesInterface().CoreV1().Pods(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{PropagationPolicy: &backgroundDeletion}, metav1.ListOptions{LabelSelector: selector.String()}) }).Should(Succeed()) // Wait for a new registry pod to be created @@ -683,7 +683,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { ctx.Ctx().Logf("waiting for %v to not be empty and not contain %s", uids, uid) return len(pods.Items) > 0 } - registryPods, err = awaitPods(GinkgoT(), c, ns.GetName(), selector.String(), unionPodsCheck(singlePod, notUID)) + registryPods, err = awaitPods(GinkgoT(), c, generatedNamespace.GetName(), selector.String(), unionPodsCheck(singlePod, notUID)) Expect(err).ShouldNot(HaveOccurred(), "error waiting for replacement registry pod") Expect(registryPods).ToNot(BeNil(), "nil replacement registry pods") Expect(registryPods.Items).To(HaveLen(1), "unexpected number of replacement registry pods found") @@ -704,7 +704,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: genName("catalog-"), - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: v1alpha1.CatalogSourceSpec{ SourceType: v1alpha1.SourceTypeGrpc, @@ -732,7 +732,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { // Delete the registry pod Eventually(func() error { backgroundDeletion := metav1.DeletePropagationBackground - return c.KubernetesInterface().CoreV1().Pods(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{PropagationPolicy: &backgroundDeletion}, metav1.ListOptions{LabelSelector: selector.String()}) + return c.KubernetesInterface().CoreV1().Pods(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{PropagationPolicy: &backgroundDeletion}, metav1.ListOptions{LabelSelector: selector.String()}) }).Should(Succeed()) // Wait for a new registry pod to be created @@ -748,7 +748,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { ctx.Ctx().Logf("waiting for %v to not be empty and not contain %s", uids, uid) return len(pods.Items) > 0 } - registryPods, err = awaitPods(GinkgoT(), c, ns.GetName(), selector.String(), unionPodsCheck(singlePod, notUID)) + registryPods, err = awaitPods(GinkgoT(), c, generatedNamespace.GetName(), selector.String(), unionPodsCheck(singlePod, notUID)) Expect(err).ShouldNot(HaveOccurred(), "error waiting for replacement registry pod") Expect(registryPods).ShouldNot(BeNil(), "nil replacement registry pods") Expect(registryPods.Items).To(HaveLen(1), "unexpected number of replacement registry pods found") @@ -764,7 +764,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: genName("catalog-"), - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: v1alpha1.CatalogSourceSpec{ SourceType: v1alpha1.SourceTypeGrpc, @@ -825,18 +825,18 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { var registryURL string var registryAuth string if local { - registryURL, err = createDockerRegistry(c, ns.GetName()) + registryURL, err = createDockerRegistry(c, generatedNamespace.GetName()) Expect(err).NotTo(HaveOccurred(), "error creating container registry: %s", err) - defer deleteDockerRegistry(c, ns.GetName()) + defer deleteDockerRegistry(c, generatedNamespace.GetName()) // ensure registry pod is ready before attempting port-forwarding - _ = awaitPod(GinkgoT(), c, ns.GetName(), registryName, podReady) + _ = awaitPod(GinkgoT(), c, generatedNamespace.GetName(), registryName, podReady) - err = registryPortForward(ns.GetName()) + err = registryPortForward(generatedNamespace.GetName()) Expect(err).NotTo(HaveOccurred(), "port-forwarding local registry: %s", err) } else { - registryURL = fmt.Sprintf("%s/%s", openshiftregistryFQDN, ns.GetName()) - registryAuth, err = openshiftRegistryAuth(c, ns.GetName()) + registryURL = fmt.Sprintf("%s/%s", openshiftregistryFQDN, generatedNamespace.GetName()) + registryAuth, err = openshiftRegistryAuth(c, generatedNamespace.GetName()) Expect(err).NotTo(HaveOccurred(), "error getting openshift registry authentication: %s", err) } @@ -852,15 +852,15 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { Expect(err).NotTo(HaveOccurred(), "error copying old registry file: %s", err) } else { skopeoArgs := skopeoCopyCmd(testImage, tag, catsrcImage, "old", registryAuth) - err = createSkopeoPod(c, skopeoArgs, ns.GetName()) + err = createSkopeoPod(c, skopeoArgs, generatedNamespace.GetName()) Expect(err).NotTo(HaveOccurred(), "error creating skopeo pod: %s", err) // wait for skopeo pod to exit successfully - awaitPod(GinkgoT(), c, ns.GetName(), skopeo, func(pod *corev1.Pod) bool { + awaitPod(GinkgoT(), c, generatedNamespace.GetName(), skopeo, func(pod *corev1.Pod) bool { return pod.Status.Phase == corev1.PodSucceeded }) - err = deleteSkopeoPod(c, ns.GetName()) + err = deleteSkopeoPod(c, generatedNamespace.GetName()) Expect(err).NotTo(HaveOccurred(), "error deleting skopeo pod: %s", err) } @@ -882,7 +882,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": sourceName}, }, Spec: v1alpha1.CatalogSourceSpec{ @@ -923,7 +923,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { defer cleanupSubscription() // Wait for the Subscription to succeed - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionStateAtLatestChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionStateAtLatestChecker()) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ShouldNot(BeNil()) @@ -947,15 +947,15 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { Expect(err).NotTo(HaveOccurred(), "error copying new registry file: %s", err) } else { skopeoArgs := skopeoCopyCmd(testImage, tag, catsrcImage, "new", registryAuth) - err = createSkopeoPod(c, skopeoArgs, ns.GetName()) + err = createSkopeoPod(c, skopeoArgs, generatedNamespace.GetName()) Expect(err).NotTo(HaveOccurred(), "error creating skopeo pod: %s", err) // wait for skopeo pod to exit successfully - awaitPod(GinkgoT(), c, ns.GetName(), skopeo, func(pod *corev1.Pod) bool { + awaitPod(GinkgoT(), c, generatedNamespace.GetName(), skopeo, func(pod *corev1.Pod) bool { return pod.Status.Phase == corev1.PodSucceeded }) - err = deleteSkopeoPod(c, ns.GetName()) + err = deleteSkopeoPod(c, generatedNamespace.GetName()) Expect(err).NotTo(HaveOccurred(), "error deleting skopeo pod: %s", err) } @@ -1028,7 +1028,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { return sub.Status.InstalledCSV == "busybox.v2.0.0" } // Wait for the Subscription to succeed - subscription, err = fetchSubscription(crc, ns.GetName(), subscriptionName, subChecker) + subscription, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subChecker) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ShouldNot(BeNil()) @@ -1070,7 +1070,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: v1alpha1.CatalogSourceSpec{ SourceType: v1alpha1.SourceTypeGrpc, @@ -1097,7 +1097,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { defer cleanupSubscription() By("waiting for the Subscription to succeed") - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionStateAtLatestChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionStateAtLatestChecker()) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ShouldNot(BeNil()) Expect(subscription.Status.InstalledCSV).To(Equal("busybox.v1.0.0")) @@ -1114,7 +1114,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { Expect(dependencySubscriptionName).ToNot(BeEmpty()) By("waiting for the Subscription to succeed") - subscription, err = fetchSubscription(crc, ns.GetName(), dependencySubscriptionName, subscriptionStateAtLatestChecker()) + subscription, err = fetchSubscription(crc, generatedNamespace.GetName(), dependencySubscriptionName, subscriptionStateAtLatestChecker()) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ShouldNot(BeNil()) Expect(subscription.Status.InstalledCSV).To(Equal("busybox-dependency.v1.0.0")) @@ -1139,7 +1139,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { subChecker := func(sub *v1alpha1.Subscription) bool { return sub.Status.InstalledCSV == "busybox.v2.0.0" } - subscription, err = fetchSubscription(crc, ns.GetName(), subscriptionName, subChecker) + subscription, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subChecker) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ShouldNot(BeNil()) @@ -1152,7 +1152,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { subChecker = func(sub *v1alpha1.Subscription) bool { return sub.Status.InstalledCSV == "busybox-dependency.v2.0.0" } - subscription, err = fetchSubscription(crc, ns.GetName(), dependencySubscriptionName, subChecker) + subscription, err = fetchSubscription(crc, generatedNamespace.GetName(), dependencySubscriptionName, subChecker) Expect(err).ShouldNot(HaveOccurred()) Expect(subscription).ShouldNot(BeNil()) @@ -1174,7 +1174,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: testNamespace, + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": sourceName}, }, Spec: v1alpha1.CatalogSourceSpec{ @@ -1255,7 +1255,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: testNamespace, + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": sourceName}, }, Spec: v1alpha1.CatalogSourceSpec{ @@ -1337,7 +1337,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": sourceName}, }, Spec: v1alpha1.CatalogSourceSpec{ @@ -1427,13 +1427,13 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { Expect(err).To(BeNil()) catalogSourceName = genName("cat-bad-csv") - magicCatalog = NewMagicCatalog(c, ns.GetName(), catalogSourceName, provider) + magicCatalog = NewMagicCatalog(c, generatedNamespace.GetName(), catalogSourceName, provider) Expect(magicCatalog.DeployCatalog(context.Background())).To(BeNil()) }) AfterEach(func() { - TeardownNamespace(ns.GetName()) + TeardownNamespace(generatedNamespace.GetName()) }) When("A Subscription is created catalogSource built with the malformed CSV", func() { @@ -1442,11 +1442,11 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { subscription = &operatorsv1alpha1.Subscription{ ObjectMeta: metav1.ObjectMeta{ Name: fmt.Sprintf("%s-sub", catalogSourceName), - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: &operatorsv1alpha1.SubscriptionSpec{ CatalogSource: catalogSourceName, - CatalogSourceNamespace: ns.GetName(), + CatalogSourceNamespace: generatedNamespace.GetName(), Channel: "stable", Package: "packageA", }, @@ -1456,7 +1456,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { It("fails with a BundleUnpackFailed error condition, and a message that highlights the missing field in the CSV", func() { Eventually(func(g Gomega) string { - fetchedSubscription, err := crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).Get(context.Background(), subscription.GetName(), metav1.GetOptions{}) + fetchedSubscription, err := crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Get(context.Background(), subscription.GetName(), metav1.GetOptions{}) g.Expect(err).NotTo(HaveOccurred()) // expect the message that API missing @@ -1471,7 +1471,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { var err error testNS := &corev1.Namespace{} Eventually(func() error { - testNS, err = c.KubernetesInterface().CoreV1().Namespaces().Get(context.TODO(), ns.GetName(), metav1.GetOptions{}) + testNS, err = c.KubernetesInterface().CoreV1().Namespaces().Get(context.TODO(), generatedNamespace.GetName(), metav1.GetOptions{}) if err != nil { return err } @@ -1502,7 +1502,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": sourceName}, }, Spec: v1alpha1.CatalogSourceSpec{ @@ -1521,7 +1521,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }) It("The registry pod fails to become come up because of lack of permission", func() { Eventually(func() (bool, error) { - podList, err := c.KubernetesInterface().CoreV1().Pods(ns.GetName()).List(context.TODO(), metav1.ListOptions{}) + podList, err := c.KubernetesInterface().CoreV1().Pods(generatedNamespace.GetName()).List(context.TODO(), metav1.ListOptions{}) if err != nil { return false, err } @@ -1542,7 +1542,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { var err error testNS := &corev1.Namespace{} Eventually(func() error { - testNS, err = c.KubernetesInterface().CoreV1().Namespaces().Get(context.TODO(), ns.GetName(), metav1.GetOptions{}) + testNS, err = c.KubernetesInterface().CoreV1().Namespaces().Get(context.TODO(), generatedNamespace.GetName(), metav1.GetOptions{}) if err != nil { return err } @@ -1573,7 +1573,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": sourceName}, }, Spec: v1alpha1.CatalogSourceSpec{ @@ -1592,7 +1592,7 @@ var _ = Describe("Starting CatalogSource e2e tests", func() { }) It("The registry pod comes up successfully", func() { Eventually(func() (bool, error) { - podList, err := c.KubernetesInterface().CoreV1().Pods(ns.GetName()).List(context.TODO(), metav1.ListOptions{}) + podList, err := c.KubernetesInterface().CoreV1().Pods(generatedNamespace.GetName()).List(context.TODO(), metav1.ListOptions{}) if err != nil { return false, err } diff --git a/test/e2e/catalog_exclusion_test.go b/test/e2e/catalog_exclusion_test.go index a63b530285..1d06e4641d 100644 --- a/test/e2e/catalog_exclusion_test.go +++ b/test/e2e/catalog_exclusion_test.go @@ -21,7 +21,7 @@ const magicCatalogDir = "magiccatalog" var _ = Describe("Global Catalog Exclusion", func() { var ( - testNamespace corev1.Namespace + generatedNamespace corev1.Namespace determinedE2eClient *util.DeterminedE2EClient operatorGroup operatorsv1.OperatorGroup localCatalog *MagicCatalog @@ -42,7 +42,7 @@ var _ = Describe("Global Catalog Exclusion", func() { TargetNamespaces: []string{e2eTestNamespace}, }, } - testNamespace = SetupGeneratedTestNamespaceWithOperatorGroup(e2eTestNamespace, operatorGroup) + generatedNamespace = SetupGeneratedTestNamespaceWithOperatorGroup(e2eTestNamespace, operatorGroup) By("creating a broken catalog in the global namespace") globalCatalog := &v1alpha1.CatalogSource{ @@ -66,7 +66,7 @@ var _ = Describe("Global Catalog Exclusion", func() { var err error = nil fbcPath := filepath.Join(testdataDir, magicCatalogDir, "fbc_initial.yaml") - localCatalog, err = NewMagicCatalogFromFile(determinedE2eClient, testNamespace.GetName(), localCatalogName, fbcPath) + localCatalog, err = NewMagicCatalogFromFile(determinedE2eClient, generatedNamespace.GetName(), localCatalogName, fbcPath) Expect(err).To(Succeed()) // deploy catalog blocks until the catalog has reached a ready state or fails @@ -79,7 +79,7 @@ var _ = Describe("Global Catalog Exclusion", func() { }) AfterEach(func() { - TeardownNamespace(testNamespace.GetName()) + TeardownNamespace(generatedNamespace.GetName()) }) When("a subscription referring to the local catalog is created", func() { @@ -88,7 +88,7 @@ var _ = Describe("Global Catalog Exclusion", func() { BeforeEach(func() { subscription = &v1alpha1.Subscription{ ObjectMeta: metav1.ObjectMeta{ - Namespace: testNamespace.GetName(), + Namespace: generatedNamespace.GetName(), Name: genName("local-subscription-"), }, Spec: &v1alpha1.SubscriptionSpec{ diff --git a/test/e2e/crd_e2e_test.go b/test/e2e/crd_e2e_test.go index 616db36407..304584ef5c 100644 --- a/test/e2e/crd_e2e_test.go +++ b/test/e2e/crd_e2e_test.go @@ -23,19 +23,19 @@ import ( var _ = Describe("CRD Versions", func() { var ( - ns corev1.Namespace - c operatorclient.ClientInterface - crc versioned.Interface + generatedNamespace corev1.Namespace + c operatorclient.ClientInterface + crc versioned.Interface ) BeforeEach(func() { c = ctx.Ctx().KubeClient() crc = ctx.Ctx().OperatorClient() - ns = SetupGeneratedTestNamespace(genName("crd-e2e-")) + generatedNamespace = SetupGeneratedTestNamespace(genName("crd-e2e-")) }) AfterEach(func() { - TeardownNamespace(ns.GetName()) + TeardownNamespace(generatedNamespace.GetName()) }) // issue: https://github.com/operator-framework/operator-lifecycle-manager/issues/2640 @@ -71,7 +71,7 @@ var _ = Describe("CRD Versions", func() { }, } - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), nil, nil, nil) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, nil, nil) mainCatalogName := genName("mock-ocs-main-update2-") mainManifests := []registry.PackageManifest{ { @@ -84,22 +84,23 @@ var _ = Describe("CRD Versions", func() { } // Create the catalog sources - _, cleanupMainCatalogSource := createV1CRDInternalCatalogSource(GinkgoT(), c, crc, mainCatalogName, ns.GetName(), mainManifests, []apiextensionsv1.CustomResourceDefinition{v1crd}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) + _, cleanupMainCatalogSource := createV1CRDInternalCatalogSource(GinkgoT(), c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, []apiextensionsv1.CustomResourceDefinition{v1crd}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) defer cleanupMainCatalogSource() defer func() { - _ = crc.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Delete(context.TODO(), mainCSV.GetName(), metav1.DeleteOptions{}) + _ = crc.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Delete(context.TODO(), mainCSV.GetName(), metav1.DeleteOptions{}) _ = c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Delete(context.TODO(), v1crd.GetName(), metav1.DeleteOptions{}) }() // Attempt to get the catalog source before creating install plan - _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + + _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) Expect(err).ToNot(HaveOccurred()) subscriptionName := genName("sub-nginx-update2-") - subscriptionCleanup := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + subscriptionCleanup := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer subscriptionCleanup() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) Expect(err).ToNot(HaveOccurred()) Expect(subscription).ToNot(Equal(nil)) Expect(subscription.Status.InstallPlanRef).ToNot(Equal(nil)) @@ -108,7 +109,7 @@ var _ = Describe("CRD Versions", func() { installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) Expect(err).ToNot(HaveOccurred()) GinkgoT().Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase) Expect(fetchedInstallPlan.Status.Phase).To(Equal(operatorsv1alpha1.InstallPlanPhaseComplete)) @@ -206,8 +207,8 @@ var _ = Describe("CRD Versions", func() { }, } - oldCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{oldCRD}, nil, nil) - newCSV := newCSV(mainPackageAlpha, ns.GetName(), mainPackageStable, semver.MustParse("0.1.1"), []apiextensions.CustomResourceDefinition{newCRD}, nil, nil) + oldCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{oldCRD}, nil, nil) + newCSV := newCSV(mainPackageAlpha, generatedNamespace.GetName(), mainPackageStable, semver.MustParse("0.1.1"), []apiextensions.CustomResourceDefinition{newCRD}, nil, nil) mainCatalogName := genName("mock-ocs-main-update2-") mainManifests := []registry.PackageManifest{ { @@ -221,24 +222,24 @@ var _ = Describe("CRD Versions", func() { } // Create the catalog sources - _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{oldCRD, newCRD}, []operatorsv1alpha1.ClusterServiceVersion{oldCSV, newCSV}) + _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{oldCRD, newCRD}, []operatorsv1alpha1.ClusterServiceVersion{oldCSV, newCSV}) defer cleanupMainCatalogSource() defer func() { - _ = crc.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Delete(context.TODO(), oldCSV.GetName(), metav1.DeleteOptions{}) - _ = crc.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Delete(context.TODO(), newCSV.GetName(), metav1.DeleteOptions{}) + _ = crc.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Delete(context.TODO(), oldCSV.GetName(), metav1.DeleteOptions{}) + _ = crc.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Delete(context.TODO(), newCSV.GetName(), metav1.DeleteOptions{}) _ = c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Delete(context.TODO(), oldCRD.GetName(), metav1.DeleteOptions{}) _ = c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Delete(context.TODO(), newCRD.GetName(), metav1.DeleteOptions{}) }() // Attempt to get the catalog source before creating install plan - _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) Expect(err).ToNot(HaveOccurred()) subscriptionName := genName("sub-nginx-update2-") - subscriptionCleanup := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + subscriptionCleanup := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer subscriptionCleanup() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) Expect(err).ToNot(HaveOccurred()) Expect(subscription).ToNot(BeNil()) Expect(subscription.Status.InstallPlanRef).ToNot(Equal(nil)) @@ -247,7 +248,7 @@ var _ = Describe("CRD Versions", func() { installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) Expect(err).ToNot(HaveOccurred()) GinkgoT().Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase) Expect(fetchedInstallPlan.Status.Phase).To(Equal(operatorsv1alpha1.InstallPlanPhaseComplete)) @@ -267,14 +268,14 @@ var _ = Describe("CRD Versions", func() { } // fetch new subscription - s, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionAtLatestWithDifferentInstallPlan) + s, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionAtLatestWithDifferentInstallPlan) Expect(err).ToNot(HaveOccurred()) Expect(s).ToNot(BeNil()) Expect(s.Status.InstallPlanRef).ToNot(Equal(nil)) // Check the error on the installplan - should be related to data loss and the CRD upgrade missing a stored version Eventually(func() (*operatorsv1alpha1.InstallPlan, error) { - return crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).Get(context.TODO(), s.Status.InstallPlanRef.Name, metav1.GetOptions{}) + return crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).Get(context.TODO(), s.Status.InstallPlanRef.Name, metav1.GetOptions{}) }).Should(And( WithTransform( func(v *operatorsv1alpha1.InstallPlan) operatorsv1alpha1.InstallPlanPhase { @@ -400,9 +401,9 @@ var _ = Describe("CRD Versions", func() { mainPackageName := genName("nginx-update2-") mainPackageStable := fmt.Sprintf("%s-stable", mainPackageName) stableChannel := "stable" - catalogCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{catalogCRD}, nil, nil) + catalogCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{catalogCRD}, nil, nil) defer func() { - _ = crc.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Delete(context.TODO(), catalogCSV.GetName(), metav1.DeleteOptions{}) + _ = crc.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Delete(context.TODO(), catalogCSV.GetName(), metav1.DeleteOptions{}) _ = c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Delete(context.TODO(), catalogCRD.GetName(), metav1.DeleteOptions{}) }() @@ -418,17 +419,17 @@ var _ = Describe("CRD Versions", func() { } // Create the catalog sources - _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{catalogCRD}, []operatorsv1alpha1.ClusterServiceVersion{catalogCSV}) + _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{catalogCRD}, []operatorsv1alpha1.ClusterServiceVersion{catalogCSV}) defer cleanupMainCatalogSource() // Attempt to get the catalog source before creating install plan - _, err = fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err = fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) Expect(err).ToNot(HaveOccurred()) subscriptionName := genName("sub-nginx-update2-") - _ = createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + _ = createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) Expect(err).ToNot(HaveOccurred()) Expect(subscription).ToNot(BeNil()) Expect(subscription.Status.InstallPlanRef).ToNot(Equal(nil)) @@ -437,7 +438,7 @@ var _ = Describe("CRD Versions", func() { // Check the error on the installplan - should be related to data loss and the CRD upgrade missing a stored version (v1alpha1) Eventually( func() (*operatorsv1alpha1.InstallPlan, error) { - return crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).Get(context.TODO(), subscription.Status.InstallPlanRef.Name, metav1.GetOptions{}) + return crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).Get(context.TODO(), subscription.Status.InstallPlanRef.Name, metav1.GetOptions{}) }, 90*time.Second, // exhaust retries ).Should(WithTransform( @@ -455,20 +456,20 @@ var _ = Describe("CRD Versions", func() { // install should now succeed oldInstallPlanRef := subscription.Status.InstallPlanRef.Name - err = crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).Delete(context.TODO(), subscription.Status.InstallPlanRef.Name, metav1.DeleteOptions{}) + err = crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).Delete(context.TODO(), subscription.Status.InstallPlanRef.Name, metav1.DeleteOptions{}) Expect(err).ToNot(HaveOccurred(), "error deleting failed install plan") // remove old subscription - err = crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).Delete(context.TODO(), subscription.GetName(), metav1.DeleteOptions{}) + err = crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Delete(context.TODO(), subscription.GetName(), metav1.DeleteOptions{}) Expect(err).ToNot(HaveOccurred(), "error deleting old subscription") // remove old csv - crc.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Delete(context.TODO(), mainPackageStable, metav1.DeleteOptions{}) + crc.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Delete(context.TODO(), mainPackageStable, metav1.DeleteOptions{}) Expect(err).ToNot(HaveOccurred(), "error deleting old subscription") // recreate subscription subscriptionNameNew := genName("sub-nginx-update2-new-") - _ = createSubscriptionForCatalog(crc, ns.GetName(), subscriptionNameNew, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + _ = createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionNameNew, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) - subscription, err = fetchSubscription(crc, ns.GetName(), subscriptionNameNew, subscriptionHasInstallPlanChecker()) + subscription, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionNameNew, subscriptionHasInstallPlanChecker()) Expect(err).ToNot(HaveOccurred()) Expect(subscription).ToNot(BeNil()) Expect(subscription.Status.InstallPlanRef).ToNot(Equal(nil)) @@ -476,15 +477,15 @@ var _ = Describe("CRD Versions", func() { // eventually the subscription should create a new install plan Eventually(func() bool { - sub, _ := crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).Get(context.TODO(), subscription.GetName(), metav1.GetOptions{}) + sub, _ := crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Get(context.TODO(), subscription.GetName(), metav1.GetOptions{}) GinkgoT().Logf("waiting for subscription %s to generate a new install plan...", subscription.GetName()) return sub.Status.InstallPlanRef.Name != oldInstallPlanRef }, 5*time.Minute, 10*time.Second).Should(BeTrue()) // eventually the new installplan should succeed Eventually(func() bool { - sub, _ := crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).Get(context.TODO(), subscription.GetName(), metav1.GetOptions{}) - ip, err := crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).Get(context.TODO(), sub.Status.InstallPlanRef.Name, metav1.GetOptions{}) + sub, _ := crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Get(context.TODO(), subscription.GetName(), metav1.GetOptions{}) + ip, err := crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).Get(context.TODO(), sub.Status.InstallPlanRef.Name, metav1.GetOptions{}) if apierrors.IsNotFound(err) { return false } diff --git a/test/e2e/csv_e2e_test.go b/test/e2e/csv_e2e_test.go index 3f9172d03c..aeff2a34f6 100644 --- a/test/e2e/csv_e2e_test.go +++ b/test/e2e/csv_e2e_test.go @@ -38,9 +38,9 @@ import ( var _ = Describe("ClusterServiceVersion", func() { var ( - ns corev1.Namespace - c operatorclient.ClientInterface - crc versioned.Interface + generatedNamespace corev1.Namespace + c operatorclient.ClientInterface + crc versioned.Interface ) BeforeEach(func() { @@ -49,14 +49,14 @@ var _ = Describe("ClusterServiceVersion", func() { }) AfterEach(func() { - TeardownNamespace(ns.GetName()) + TeardownNamespace(generatedNamespace.GetName()) }) Context("OwnNamespace OperatorGroup", func() { BeforeEach(func() { nsName := genName("csv-e2e-") - ns = SetupGeneratedTestNamespace(nsName, nsName) + generatedNamespace = SetupGeneratedTestNamespace(nsName, nsName) }) When("a CustomResourceDefinition was installed alongside a ClusterServiceVersion", func() { @@ -73,7 +73,7 @@ var _ = Describe("ClusterServiceVersion", func() { ObjectMeta: metav1.ObjectMeta{ Name: apifullname, Annotations: map[string]string{ - "operatorframework.io/installed-alongside-0": fmt.Sprintf("%s/associated-csv", ns.GetName()), + "operatorframework.io/installed-alongside-0": fmt.Sprintf("%s/associated-csv", generatedNamespace.GetName()), }, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ @@ -112,7 +112,7 @@ var _ = Describe("ClusterServiceVersion", func() { associated := operatorsv1alpha1.ClusterServiceVersion{ ObjectMeta: metav1.ObjectMeta{ Name: "associated-csv", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1alpha1.ClusterServiceVersionSpec{ CustomResourceDefinitions: operatorsv1alpha1.CustomResourceDefinitions{ @@ -170,7 +170,7 @@ var _ = Describe("ClusterServiceVersion", func() { unassociated := operatorsv1alpha1.ClusterServiceVersion{ ObjectMeta: metav1.ObjectMeta{ Name: "unassociated-csv", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1alpha1.ClusterServiceVersionSpec{ CustomResourceDefinitions: operatorsv1alpha1.CustomResourceDefinitions{ @@ -194,7 +194,7 @@ var _ = Describe("ClusterServiceVersion", func() { associated := operatorsv1alpha1.ClusterServiceVersion{ ObjectMeta: metav1.ObjectMeta{ Name: "associated-csv", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1alpha1.ClusterServiceVersionSpec{ CustomResourceDefinitions: operatorsv1alpha1.CustomResourceDefinitions{ @@ -229,7 +229,7 @@ var _ = Describe("ClusterServiceVersion", func() { unassociated := operatorsv1alpha1.ClusterServiceVersion{ ObjectMeta: metav1.ObjectMeta{ Name: "unassociated-csv", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1alpha1.ClusterServiceVersionSpec{ CustomResourceDefinitions: operatorsv1alpha1.CustomResourceDefinitions{ @@ -294,7 +294,7 @@ var _ = Describe("ClusterServiceVersion", func() { ObjectMeta: metav1.ObjectMeta{ Name: apifullname, Annotations: map[string]string{ - "operatorframework.io/installed-alongside-0": fmt.Sprintf("%s/associated-csv", ns.GetName()), + "operatorframework.io/installed-alongside-0": fmt.Sprintf("%s/associated-csv", generatedNamespace.GetName()), }, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ @@ -327,7 +327,7 @@ var _ = Describe("ClusterServiceVersion", func() { associated := operatorsv1alpha1.ClusterServiceVersion{ ObjectMeta: metav1.ObjectMeta{ Name: "associated-csv", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1alpha1.ClusterServiceVersionSpec{ CustomResourceDefinitions: operatorsv1alpha1.CustomResourceDefinitions{ @@ -351,7 +351,7 @@ var _ = Describe("ClusterServiceVersion", func() { unassociated := operatorsv1alpha1.ClusterServiceVersion{ ObjectMeta: metav1.ObjectMeta{ Name: "unassociated-csv", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1alpha1.ClusterServiceVersionSpec{ CustomResourceDefinitions: operatorsv1alpha1.CustomResourceDefinitions{ @@ -401,9 +401,8 @@ var _ = Describe("ClusterServiceVersion", func() { }) Context("AllNamespaces OperatorGroup", func() { - BeforeEach(func() { - ns = SetupGeneratedTestNamespace(genName("csv-e2e-")) + generatedNamespace = SetupGeneratedTestNamespace(genName("csv-e2e-")) }) When("a csv exists specifying two replicas with one max unavailable", func() { @@ -419,7 +418,7 @@ var _ = Describe("ClusterServiceVersion", func() { csv = operatorsv1alpha1.ClusterServiceVersion{ ObjectMeta: metav1.ObjectMeta{ GenerateName: "test-csv", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1alpha1.ClusterServiceVersionSpec{ InstallStrategy: operatorsv1alpha1.NamedInstallStrategy{ @@ -508,7 +507,7 @@ var _ = Describe("ClusterServiceVersion", func() { It("remains in phase Succeeded when only one pod is available", func() { Eventually(func() int32 { - dep, err := c.GetDeployment(ns.GetName(), "deployment") + dep, err := c.GetDeployment(generatedNamespace.GetName(), "deployment") if err != nil || dep == nil { return 0 } @@ -548,7 +547,7 @@ var _ = Describe("ClusterServiceVersion", func() { }, ObjectMeta: metav1.ObjectMeta{ GenerateName: "csv-", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1alpha1.ClusterServiceVersionSpec{ InstallStrategy: newNginxInstallStrategy(genName("csv-"), nil, nil), @@ -613,7 +612,7 @@ var _ = Describe("ClusterServiceVersion", func() { cm = corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ GenerateName: "cm-", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, } Expect(ctx.Ctx().Client().Create(context.Background(), &cm)).To(Succeed()) @@ -621,7 +620,7 @@ var _ = Describe("ClusterServiceVersion", func() { sa = corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ GenerateName: "sa-", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), OwnerReferences: []metav1.OwnerReference{ { Name: cm.GetName(), @@ -641,7 +640,7 @@ var _ = Describe("ClusterServiceVersion", func() { }, ObjectMeta: metav1.ObjectMeta{ GenerateName: "csv-", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1alpha1.ClusterServiceVersionSpec{ InstallStrategy: operatorsv1alpha1.NamedInstallStrategy{ @@ -744,16 +743,16 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvPendingChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvPendingChecker) Expect(err).ShouldNot(HaveOccurred()) // Shouldn't create deployment Consistently(func() bool { - _, err := c.GetDeployment(ns.GetName(), depName) + _, err := c.GetDeployment(generatedNamespace.GetName(), depName) return apierrors.IsNotFound(err) }).Should(BeTrue()) }) @@ -805,16 +804,16 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvPendingChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvPendingChecker) Expect(err).ShouldNot(HaveOccurred()) // Shouldn't create deployment Consistently(func() bool { - _, err := c.GetDeployment(ns.GetName(), depName) + _, err := c.GetDeployment(generatedNamespace.GetName(), depName) return apierrors.IsNotFound(err) }).Should(BeTrue()) }) @@ -924,16 +923,16 @@ var _ = Describe("ClusterServiceVersion", func() { Expect(err).ShouldNot(HaveOccurred()) defer cleanupCRD() - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), true, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), true, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvPendingChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvPendingChecker) Expect(err).ShouldNot(HaveOccurred()) // Shouldn't create deployment Consistently(func() bool { - _, err := c.GetDeployment(ns.GetName(), depName) + _, err := c.GetDeployment(generatedNamespace.GetName(), depName) return apierrors.IsNotFound(err) }).Should(BeTrue()) }) @@ -983,16 +982,16 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvPendingChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvPendingChecker) Expect(err).ShouldNot(HaveOccurred()) // Shouldn't create deployment Consistently(func() bool { - _, err := c.GetDeployment(ns.GetName(), depName) + _, err := c.GetDeployment(generatedNamespace.GetName(), depName) return apierrors.IsNotFound(err) }).Should(BeTrue()) }) @@ -1070,16 +1069,16 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvPendingChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvPendingChecker) Expect(err).ShouldNot(HaveOccurred()) // Shouldn't create deployment Consistently(func() bool { - _, err := c.GetDeployment(ns.GetName(), depName) + _, err := c.GetDeployment(generatedNamespace.GetName(), depName) return apierrors.IsNotFound(err) }).Should(BeTrue()) }) @@ -1119,16 +1118,16 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvPendingChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvPendingChecker) Expect(err).ShouldNot(HaveOccurred()) // Shouldn't create deployment Consistently(func() bool { - _, err := c.GetDeployment(ns.GetName(), depName) + _, err := c.GetDeployment(generatedNamespace.GetName(), depName) return apierrors.IsNotFound(err) }).Should(BeTrue()) }) @@ -1213,16 +1212,16 @@ var _ = Describe("ClusterServiceVersion", func() { } // Create CSV first, knowing it will fail - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), true, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), true, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - fetchedCSV, err := fetchCSV(crc, csv.Name, ns.GetName(), csvPendingChecker) + fetchedCSV, err := fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvPendingChecker) Expect(err).ShouldNot(HaveOccurred()) sa := corev1.ServiceAccount{} sa.SetName(saName) - sa.SetNamespace(ns.GetName()) + sa.SetNamespace(generatedNamespace.GetName()) sa.SetOwnerReferences([]metav1.OwnerReference{{ Name: fetchedCSV.GetName(), APIVersion: operatorsv1alpha1.ClusterServiceVersionAPIVersion, @@ -1281,7 +1280,7 @@ var _ = Describe("ClusterServiceVersion", func() { }, } role.SetName(genName("dep-")) - role.SetNamespace(ns.GetName()) + role.SetNamespace(generatedNamespace.GetName()) _, err = c.CreateRole(&role) Expect(err).ShouldNot(HaveOccurred(), "could not create Role") @@ -1301,7 +1300,7 @@ var _ = Describe("ClusterServiceVersion", func() { }, } roleBinding.SetName(genName("dep-")) - roleBinding.SetNamespace(ns.GetName()) + roleBinding.SetNamespace(generatedNamespace.GetName()) _, err = c.CreateRoleBinding(&roleBinding) Expect(err).ShouldNot(HaveOccurred(), "could not create RoleBinding") @@ -1371,7 +1370,7 @@ var _ = Describe("ClusterServiceVersion", func() { ctx.Ctx().Logf("checking for deployment") // Poll for deployment to be ready Eventually(func() (bool, error) { - dep, err := c.GetDeployment(ns.GetName(), depName) + dep, err := c.GetDeployment(generatedNamespace.GetName(), depName) if apierrors.IsNotFound(err) { ctx.Ctx().Logf("deployment %s not found\n", depName) return false, nil @@ -1389,14 +1388,14 @@ var _ = Describe("ClusterServiceVersion", func() { return false, nil }).Should(BeTrue()) - fetchedCSV, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Delete CRD cleanupCRD() // Wait for CSV failure - fetchedCSV, err = fetchCSV(crc, csv.Name, ns.GetName(), csvPendingChecker) + fetchedCSV, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvPendingChecker) Expect(err).ShouldNot(HaveOccurred()) // Recreate the CRD @@ -1405,14 +1404,14 @@ var _ = Describe("ClusterServiceVersion", func() { defer cleanupCRD() // Wait for CSV success again - fetchedCSV, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) }) It("create requirements met API service", func() { sa := corev1.ServiceAccount{} sa.SetName(genName("sa-")) - sa.SetNamespace(ns.GetName()) + sa.SetNamespace(generatedNamespace.GetName()) _, err := c.CreateServiceAccount(&sa) Expect(err).ShouldNot(HaveOccurred(), "could not create ServiceAccount") @@ -1498,7 +1497,7 @@ var _ = Describe("ClusterServiceVersion", func() { }, } role.SetName(genName("dep-")) - role.SetNamespace(ns.GetName()) + role.SetNamespace(generatedNamespace.GetName()) _, err = c.CreateRole(&role) Expect(err).ShouldNot(HaveOccurred(), "could not create Role") @@ -1518,7 +1517,7 @@ var _ = Describe("ClusterServiceVersion", func() { }, } roleBinding.SetName(genName("dep-")) - roleBinding.SetNamespace(ns.GetName()) + roleBinding.SetNamespace(generatedNamespace.GetName()) _, err = c.CreateRoleBinding(&roleBinding) Expect(err).ShouldNot(HaveOccurred(), "could not create RoleBinding") @@ -1554,15 +1553,15 @@ var _ = Describe("ClusterServiceVersion", func() { _, err = c.CreateClusterRoleBinding(&clusterRoleBinding) Expect(err).ShouldNot(HaveOccurred(), "could not create ClusterRoleBinding") - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - fetchedCSV, err := fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err := fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Fetch cluster service version again to check for unnecessary control loops - sameCSV, err := fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + sameCSV, err := fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) Expect(equality.Semantic.DeepEqual(fetchedCSV, sameCSV)).Should(BeTrue(), diff.ObjectDiff(fetchedCSV, sameCSV)) }) @@ -1633,7 +1632,7 @@ var _ = Describe("ClusterServiceVersion", func() { csv.SetName(depName) // Create the APIService CSV - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer func() { watcher, err := c.ApiregistrationV1Interface().ApiregistrationV1().APIServices().Watch(context.TODO(), metav1.ListOptions{FieldSelector: "metadata.name=" + apiServiceName}) @@ -1660,11 +1659,11 @@ var _ = Describe("ClusterServiceVersion", func() { <-deleted }() - fetchedCSV, err := fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err := fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should create Deployment - dep, err := c.GetDeployment(ns.GetName(), depName) + dep, err := c.GetDeployment(generatedNamespace.GetName(), depName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Deployment") // Should create APIService @@ -1673,20 +1672,20 @@ var _ = Describe("ClusterServiceVersion", func() { // Should create Service serviceName := fmt.Sprintf("%s-service", depName) - _, err = c.GetService(ns.GetName(), serviceName) + _, err = c.GetService(generatedNamespace.GetName(), serviceName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Service") // Should create certificate Secret secretName := fmt.Sprintf("%s-cert", serviceName) - _, err = c.GetSecret(ns.GetName(), secretName) + _, err = c.GetSecret(generatedNamespace.GetName(), secretName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Secret") // Should create a Role for the Secret - _, err = c.GetRole(ns.GetName(), secretName) + _, err = c.GetRole(generatedNamespace.GetName(), secretName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Secret Role") // Should create a RoleBinding for the Secret - _, err = c.GetRoleBinding(ns.GetName(), secretName) + _, err = c.GetRoleBinding(generatedNamespace.GetName(), secretName) Expect(err).ShouldNot(HaveOccurred(), "error getting exptected Secret RoleBinding") // Should create a system:auth-delegator Cluster RoleBinding @@ -1709,9 +1708,9 @@ var _ = Describe("ClusterServiceVersion", func() { return nil })).Should(Succeed()) - _, err = fetchCSV(crc, csv.Name, ns.GetName(), func(csv *operatorsv1alpha1.ClusterServiceVersion) bool { + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), func(csv *operatorsv1alpha1.ClusterServiceVersion) bool { // Should create deployment - dep, err = c.GetDeployment(ns.GetName(), depName) + dep, err = c.GetDeployment(generatedNamespace.GetName(), depName) if err != nil { return false } @@ -1740,7 +1739,7 @@ var _ = Describe("ClusterServiceVersion", func() { Expect(err).ShouldNot(HaveOccurred()) // Wait for CSV success - fetchedCSV, err = fetchCSV(crc, csv.GetName(), ns.GetName(), func(csv *operatorsv1alpha1.ClusterServiceVersion) bool { + fetchedCSV, err = fetchCSV(crc, csv.GetName(), generatedNamespace.GetName(), func(csv *operatorsv1alpha1.ClusterServiceVersion) bool { // Should create an APIService apiService, err := c.GetAPIService(apiServiceName) if err != nil { @@ -1821,14 +1820,14 @@ var _ = Describe("ClusterServiceVersion", func() { csv.SetName("csv-hat-1") // Create the APIService CSV - _, err := createCSV(c, crc, csv, ns.GetName(), false, false) + _, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should create Deployment - _, err = c.GetDeployment(ns.GetName(), depName) + _, err = c.GetDeployment(generatedNamespace.GetName(), depName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Deployment") // Should create APIService @@ -1837,20 +1836,20 @@ var _ = Describe("ClusterServiceVersion", func() { // Should create Service serviceName := fmt.Sprintf("%s-service", depName) - _, err = c.GetService(ns.GetName(), serviceName) + _, err = c.GetService(generatedNamespace.GetName(), serviceName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Service") // Should create certificate Secret secretName := fmt.Sprintf("%s-cert", serviceName) - _, err = c.GetSecret(ns.GetName(), secretName) + _, err = c.GetSecret(generatedNamespace.GetName(), secretName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Secret") // Should create a Role for the Secret - _, err = c.GetRole(ns.GetName(), secretName) + _, err = c.GetRole(generatedNamespace.GetName(), secretName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Secret Role") // Should create a RoleBinding for the Secret - _, err = c.GetRoleBinding(ns.GetName(), secretName) + _, err = c.GetRoleBinding(generatedNamespace.GetName(), secretName) Expect(err).ShouldNot(HaveOccurred(), "error getting exptected Secret RoleBinding") // Should create a system:auth-delegator Cluster RoleBinding @@ -1896,15 +1895,15 @@ var _ = Describe("ClusterServiceVersion", func() { csv2.SetName("csv-hat-2") // Create CSV2 to replace CSV - cleanupCSV2, err := createCSV(c, crc, csv2, ns.GetName(), false, true) + cleanupCSV2, err := createCSV(c, crc, csv2, generatedNamespace.GetName(), false, true) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV2() - _, err = fetchCSV(crc, csv2.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv2.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should create Deployment - _, err = c.GetDeployment(ns.GetName(), depName) + _, err = c.GetDeployment(generatedNamespace.GetName(), depName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Deployment") // Should create APIService @@ -1913,27 +1912,27 @@ var _ = Describe("ClusterServiceVersion", func() { // Should create Service Eventually(func() error { - _, err := c.GetService(ns.GetName(), serviceName) + _, err := c.GetService(generatedNamespace.GetName(), serviceName) return err }, timeout, interval).ShouldNot(HaveOccurred()) // Should create certificate Secret secretName = fmt.Sprintf("%s-cert", serviceName) Eventually(func() error { - _, err = c.GetSecret(ns.GetName(), secretName) + _, err = c.GetSecret(generatedNamespace.GetName(), secretName) return err }, timeout, interval).ShouldNot(HaveOccurred()) // Should create a Role for the Secret - _, err = c.GetRole(ns.GetName(), secretName) + _, err = c.GetRole(generatedNamespace.GetName(), secretName) Eventually(func() error { - _, err = c.GetRole(ns.GetName(), secretName) + _, err = c.GetRole(generatedNamespace.GetName(), secretName) return err }, timeout, interval).ShouldNot(HaveOccurred()) // Should create a RoleBinding for the Secret Eventually(func() error { - _, err = c.GetRoleBinding(ns.GetName(), secretName) + _, err = c.GetRoleBinding(generatedNamespace.GetName(), secretName) return err }, timeout, interval).ShouldNot(HaveOccurred()) @@ -1952,25 +1951,25 @@ var _ = Describe("ClusterServiceVersion", func() { // Should eventually GC the CSV Eventually(func() bool { - return csvExists(ns.GetName(), crc, csv.Name) + return csvExists(generatedNamespace.GetName(), crc, csv.Name) }).Should(BeFalse()) // Rename the initial CSV csv.SetName("csv-hat-3") // Recreate the old CSV - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, true) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, true) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - fetched, err := fetchCSV(crc, csv.Name, ns.GetName(), buildCSVReasonChecker(operatorsv1alpha1.CSVReasonOwnerConflict)) + fetched, err := fetchCSV(crc, csv.Name, generatedNamespace.GetName(), buildCSVReasonChecker(operatorsv1alpha1.CSVReasonOwnerConflict)) Expect(err).ShouldNot(HaveOccurred()) Expect(fetched.Status.Phase).Should(Equal(operatorsv1alpha1.CSVPhaseFailed)) }) It("create same CSV with owned API service multi namespace", func() { // Create new namespace in a new operator group - secondNamespaceName := genName(ns.GetName() + "-") + secondNamespaceName := genName(generatedNamespace.GetName() + "-") matchingLabel := map[string]string{"inGroup": secondNamespaceName} _, err := c.KubernetesInterface().CoreV1().Namespaces().Create(context.TODO(), &corev1.Namespace{ @@ -2078,15 +2077,15 @@ var _ = Describe("ClusterServiceVersion", func() { csv.SetName("csv-hat-1") // Create the initial CSV - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should create Deployment - _, err = c.GetDeployment(ns.GetName(), depName) + _, err = c.GetDeployment(generatedNamespace.GetName(), depName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Deployment") // Should create APIService @@ -2095,20 +2094,20 @@ var _ = Describe("ClusterServiceVersion", func() { // Should create Service serviceName := fmt.Sprintf("%s-service", depName) - _, err = c.GetService(ns.GetName(), serviceName) + _, err = c.GetService(generatedNamespace.GetName(), serviceName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Service") // Should create certificate Secret secretName := fmt.Sprintf("%s-cert", serviceName) - _, err = c.GetSecret(ns.GetName(), secretName) + _, err = c.GetSecret(generatedNamespace.GetName(), secretName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Secret") // Should create a Role for the Secret - _, err = c.GetRole(ns.GetName(), secretName) + _, err = c.GetRole(generatedNamespace.GetName(), secretName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected Secret Role") // Should create a RoleBinding for the Secret - _, err = c.GetRoleBinding(ns.GetName(), secretName) + _, err = c.GetRoleBinding(generatedNamespace.GetName(), secretName) Expect(err).ShouldNot(HaveOccurred(), "error getting exptected Secret RoleBinding") // Should create a system:auth-delegator Cluster RoleBinding @@ -2216,7 +2215,7 @@ var _ = Describe("ClusterServiceVersion", func() { orphanedAPISvc, err = c.GetAPIService(apiServiceName) Expect(err).ShouldNot(HaveOccurred(), "error getting expected APIService") - newLabels = map[string]string{"olm.owner": "hat-serverfd4r5", "olm.owner.kind": "ClusterServiceVersion", "olm.owner.namespace": ns.GetName()} + newLabels = map[string]string{"olm.owner": "hat-serverfd4r5", "olm.owner.kind": "ClusterServiceVersion", "olm.owner.namespace": generatedNamespace.GetName()} orphanedAPISvc.SetLabels(newLabels) _, err = c.UpdateAPIService(orphanedAPISvc) Expect(err).ShouldNot(HaveOccurred(), "error updating APIService") @@ -2279,16 +2278,16 @@ var _ = Describe("ClusterServiceVersion", func() { } // Create the CSV and make sure to clean it up - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() // Wait for current CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have created deployment - dep, err := c.GetDeployment(ns.GetName(), strategy.DeploymentSpecs[0].Name) + dep, err := c.GetDeployment(generatedNamespace.GetName(), strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(dep).ShouldNot(BeNil()) @@ -2350,23 +2349,23 @@ var _ = Describe("ClusterServiceVersion", func() { } // Create the CSV and make sure to clean it up - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() // Wait for current CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have created deployment - dep, err := c.GetDeployment(ns.GetName(), strategy.DeploymentSpecs[0].Name) + dep, err := c.GetDeployment(generatedNamespace.GetName(), strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(dep).ShouldNot(BeNil()) // Make sure that the deployment labels are correct labels := dep.GetLabels() Expect(labels["olm.owner"]).Should(Equal(csv.GetName())) - Expect(labels["olm.owner.namespace"]).Should(Equal(ns.GetName())) + Expect(labels["olm.owner.namespace"]).Should(Equal(generatedNamespace.GetName())) Expect(labels["application"]).Should(Equal("nginx")) Expect(labels["application.type"]).Should(Equal("proxy")) }) @@ -2466,15 +2465,15 @@ var _ = Describe("ClusterServiceVersion", func() { } // Don't need to cleanup this CSV, it will be deleted by the upgrade process - _, err = createCSV(c, crc, csv, ns.GetName(), false, false) + _, err = createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) // Wait for current CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have created deployment - dep, err := c.GetDeployment(ns.GetName(), strategy.DeploymentSpecs[0].Name) + dep, err := c.GetDeployment(generatedNamespace.GetName(), strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(dep).ShouldNot(BeNil()) @@ -2538,27 +2537,27 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupNewCSV, err := createCSV(c, crc, csvNew, ns.GetName(), true, false) + cleanupNewCSV, err := createCSV(c, crc, csvNew, generatedNamespace.GetName(), true, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupNewCSV() // Wait for updated CSV to succeed - fetchedCSV, err := fetchCSV(crc, csvNew.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err := fetchCSV(crc, csvNew.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have updated existing deployment - depUpdated, err := c.GetDeployment(ns.GetName(), strategyNew.DeploymentSpecs[0].Name) + depUpdated, err := c.GetDeployment(generatedNamespace.GetName(), strategyNew.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(depUpdated).ShouldNot(BeNil()) Expect(strategyNew.DeploymentSpecs[0].Spec.Template.Spec.Containers[0].Name).Should(Equal(depUpdated.Spec.Template.Spec.Containers[0].Name)) // Should eventually GC the CSV Eventually(func() bool { - return csvExists(ns.GetName(), crc, csv.Name) + return csvExists(generatedNamespace.GetName(), crc, csv.Name) }).Should(BeFalse()) // Fetch cluster service version again to check for unnecessary control loops - sameCSV, err := fetchCSV(crc, csvNew.Name, ns.GetName(), csvSucceededChecker) + sameCSV, err := fetchCSV(crc, csvNew.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) Expect(equality.Semantic.DeepEqual(fetchedCSV, sameCSV)).Should(BeTrue(), diff.ObjectDiff(fetchedCSV, sameCSV)) }) @@ -2657,15 +2656,15 @@ var _ = Describe("ClusterServiceVersion", func() { } // don't need to clean up this CSV, it will be deleted by the upgrade process - _, err = createCSV(c, crc, csv, ns.GetName(), false, false) + _, err = createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) // Wait for current CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have created deployment - dep, err := c.GetDeployment(ns.GetName(), strategy.DeploymentSpecs[0].Name) + dep, err := c.GetDeployment(generatedNamespace.GetName(), strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(dep).ShouldNot(BeNil()) @@ -2727,29 +2726,29 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupNewCSV, err := createCSV(c, crc, csvNew, ns.GetName(), true, false) + cleanupNewCSV, err := createCSV(c, crc, csvNew, generatedNamespace.GetName(), true, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupNewCSV() // Wait for updated CSV to succeed - fetchedCSV, err := fetchCSV(crc, csvNew.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err := fetchCSV(crc, csvNew.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Fetch cluster service version again to check for unnecessary control loops - sameCSV, err := fetchCSV(crc, csvNew.Name, ns.GetName(), csvSucceededChecker) + sameCSV, err := fetchCSV(crc, csvNew.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) Expect(equality.Semantic.DeepEqual(fetchedCSV, sameCSV)).Should(BeTrue(), diff.ObjectDiff(fetchedCSV, sameCSV)) // Should have created new deployment and deleted old - depNew, err := c.GetDeployment(ns.GetName(), strategyNew.DeploymentSpecs[0].Name) + depNew, err := c.GetDeployment(generatedNamespace.GetName(), strategyNew.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(depNew).ShouldNot(BeNil()) - err = waitForDeploymentToDelete(ns.GetName(), c, strategy.DeploymentSpecs[0].Name) + err = waitForDeploymentToDelete(generatedNamespace.GetName(), c, strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) // Should eventually GC the CSV Eventually(func() bool { - return csvExists(ns.GetName(), crc, csv.Name) + return csvExists(generatedNamespace.GetName(), crc, csv.Name) }).Should(BeFalse()) }) It("update multiple intermediates", func() { @@ -2847,15 +2846,15 @@ var _ = Describe("ClusterServiceVersion", func() { } // don't need to clean up this CSV, it will be deleted by the upgrade process - _, err = createCSV(c, crc, csv, ns.GetName(), false, false) + _, err = createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) // Wait for current CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have created deployment - dep, err := c.GetDeployment(ns.GetName(), strategy.DeploymentSpecs[0].Name) + dep, err := c.GetDeployment(generatedNamespace.GetName(), strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(dep).ShouldNot(BeNil()) @@ -2917,29 +2916,29 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupNewCSV, err := createCSV(c, crc, csvNew, ns.GetName(), true, false) + cleanupNewCSV, err := createCSV(c, crc, csvNew, generatedNamespace.GetName(), true, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupNewCSV() // Wait for updated CSV to succeed - fetchedCSV, err := fetchCSV(crc, csvNew.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err := fetchCSV(crc, csvNew.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Fetch cluster service version again to check for unnecessary control loops - sameCSV, err := fetchCSV(crc, csvNew.Name, ns.GetName(), csvSucceededChecker) + sameCSV, err := fetchCSV(crc, csvNew.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) Expect(equality.Semantic.DeepEqual(fetchedCSV, sameCSV)).Should(BeTrue(), diff.ObjectDiff(fetchedCSV, sameCSV)) // Should have created new deployment and deleted old - depNew, err := c.GetDeployment(ns.GetName(), strategyNew.DeploymentSpecs[0].Name) + depNew, err := c.GetDeployment(generatedNamespace.GetName(), strategyNew.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(depNew).ShouldNot(BeNil()) - err = waitForDeploymentToDelete(ns.GetName(), c, strategy.DeploymentSpecs[0].Name) + err = waitForDeploymentToDelete(generatedNamespace.GetName(), c, strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) // Should eventually GC the CSV Eventually(func() bool { - return csvExists(ns.GetName(), crc, csv.Name) + return csvExists(generatedNamespace.GetName(), crc, csv.Name) }).Should(BeFalse()) }) It("update in place", func() { @@ -3037,16 +3036,16 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, true) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, true) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() // Wait for current CSV to succeed - fetchedCSV, err := fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err := fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have created deployment - dep, err := c.GetDeployment(ns.GetName(), strategy.DeploymentSpecs[0].Name) + dep, err := c.GetDeployment(generatedNamespace.GetName(), strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(dep).ShouldNot(BeNil()) @@ -3074,12 +3073,12 @@ var _ = Describe("ClusterServiceVersion", func() { fetchedCSV.Spec.InstallStrategy.StrategySpec = strategyNew // Update CSV directly - _, err = crc.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Update(context.TODO(), fetchedCSV, metav1.UpdateOptions{}) + _, err = crc.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Update(context.TODO(), fetchedCSV, metav1.UpdateOptions{}) Expect(err).ShouldNot(HaveOccurred()) // wait for deployment spec to be updated Eventually(func() (string, error) { - fetched, err := c.GetDeployment(ns.GetName(), strategyNew.DeploymentSpecs[0].Name) + fetched, err := c.GetDeployment(generatedNamespace.GetName(), strategyNew.DeploymentSpecs[0].Name) if err != nil { return "", err } @@ -3088,10 +3087,10 @@ var _ = Describe("ClusterServiceVersion", func() { }).Should(Equal(strategyNew.DeploymentSpecs[0].Spec.Template.Spec.Containers[0].Name)) // Wait for updated CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) - depUpdated, err := c.GetDeployment(ns.GetName(), strategyNew.DeploymentSpecs[0].Name) + depUpdated, err := c.GetDeployment(generatedNamespace.GetName(), strategyNew.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(depUpdated).ShouldNot(BeNil()) @@ -3209,15 +3208,15 @@ var _ = Describe("ClusterServiceVersion", func() { } // CSV will be deleted by the upgrade process later - _, err = createCSV(c, crc, csv, ns.GetName(), false, false) + _, err = createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) // Wait for current CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have created deployment - dep, err := c.GetDeployment(ns.GetName(), strategy.DeploymentSpecs[0].Name) + dep, err := c.GetDeployment(generatedNamespace.GetName(), strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(dep).ShouldNot(BeNil()) @@ -3288,23 +3287,23 @@ var _ = Describe("ClusterServiceVersion", func() { } // Create newly updated CSV - _, err = createCSV(c, crc, csvNew, ns.GetName(), false, false) + _, err = createCSV(c, crc, csvNew, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) // Wait for updated CSV to succeed - fetchedCSV, err := fetchCSV(crc, csvNew.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err := fetchCSV(crc, csvNew.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Fetch cluster service version again to check for unnecessary control loops - sameCSV, err := fetchCSV(crc, csvNew.Name, ns.GetName(), csvSucceededChecker) + sameCSV, err := fetchCSV(crc, csvNew.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) Expect(equality.Semantic.DeepEqual(fetchedCSV, sameCSV)).Should(BeTrue(), diff.ObjectDiff(fetchedCSV, sameCSV)) // Should have created new deployment and deleted old one - depNew, err := c.GetDeployment(ns.GetName(), strategyNew.DeploymentSpecs[0].Name) + depNew, err := c.GetDeployment(generatedNamespace.GetName(), strategyNew.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(depNew).ShouldNot(BeNil()) - err = waitForDeploymentToDelete(ns.GetName(), c, strategy.DeploymentSpecs[0].Name) + err = waitForDeploymentToDelete(generatedNamespace.GetName(), c, strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) // Create updated deployment strategy @@ -3366,29 +3365,29 @@ var _ = Describe("ClusterServiceVersion", func() { } // Create newly updated CSV - cleanupNewCSV, err := createCSV(c, crc, csvNew2, ns.GetName(), true, false) + cleanupNewCSV, err := createCSV(c, crc, csvNew2, generatedNamespace.GetName(), true, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupNewCSV() // Wait for updated CSV to succeed - fetchedCSV, err = fetchCSV(crc, csvNew2.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err = fetchCSV(crc, csvNew2.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Fetch cluster service version again to check for unnecessary control loops - sameCSV, err = fetchCSV(crc, csvNew2.Name, ns.GetName(), csvSucceededChecker) + sameCSV, err = fetchCSV(crc, csvNew2.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) Expect(equality.Semantic.DeepEqual(fetchedCSV, sameCSV)).Should(BeTrue(), diff.ObjectDiff(fetchedCSV, sameCSV)) // Should have created new deployment and deleted old one - depNew, err = c.GetDeployment(ns.GetName(), strategyNew2.DeploymentSpecs[0].Name) + depNew, err = c.GetDeployment(generatedNamespace.GetName(), strategyNew2.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(depNew).ShouldNot(BeNil()) - err = waitForDeploymentToDelete(ns.GetName(), c, strategyNew.DeploymentSpecs[0].Name) + err = waitForDeploymentToDelete(generatedNamespace.GetName(), c, strategyNew.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) // Should clean up the CSV Eventually(func() bool { - return csvExists(ns.GetName(), crc, csvNew.Name) + return csvExists(generatedNamespace.GetName(), crc, csvNew.Name) }).Should(BeFalse()) }) @@ -3489,19 +3488,19 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), true, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), true, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() // Wait for current CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have created deployments - dep, err := c.GetDeployment(ns.GetName(), strategy.DeploymentSpecs[0].Name) + dep, err := c.GetDeployment(generatedNamespace.GetName(), strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(dep).ShouldNot(BeNil()) - dep2, err := c.GetDeployment(ns.GetName(), strategy.DeploymentSpecs[1].Name) + dep2, err := c.GetDeployment(generatedNamespace.GetName(), strategy.DeploymentSpecs[1].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(dep2).ShouldNot(BeNil()) @@ -3522,35 +3521,35 @@ var _ = Describe("ClusterServiceVersion", func() { Expect(err).ShouldNot(HaveOccurred()) // Fetch the current csv - fetchedCSV, err := fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err := fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Update csv with same strategy with different deployment's name fetchedCSV.Spec.InstallStrategy.StrategySpec = strategyNew // Update the current csv with the new csv - _, err = crc.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Update(context.TODO(), fetchedCSV, metav1.UpdateOptions{}) + _, err = crc.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Update(context.TODO(), fetchedCSV, metav1.UpdateOptions{}) Expect(err).ShouldNot(HaveOccurred()) // Wait for new deployment to exist - err = waitForDeployment(ns.GetName(), c, strategyNew.DeploymentSpecs[0].Name) + err = waitForDeployment(generatedNamespace.GetName(), c, strategyNew.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) // Wait for updated CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have created new deployment and deleted old - depNew, err := c.GetDeployment(ns.GetName(), strategyNew.DeploymentSpecs[0].Name) + depNew, err := c.GetDeployment(generatedNamespace.GetName(), strategyNew.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(depNew).ShouldNot(BeNil()) // Make sure the unchanged deployment still exists - depNew2, err := c.GetDeployment(ns.GetName(), strategyNew.DeploymentSpecs[1].Name) + depNew2, err := c.GetDeployment(generatedNamespace.GetName(), strategyNew.DeploymentSpecs[1].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(depNew2).ShouldNot(BeNil()) - err = waitForDeploymentToDelete(ns.GetName(), c, strategy.DeploymentSpecs[0].Name) + err = waitForDeploymentToDelete(generatedNamespace.GetName(), c, strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) }) It("update deployment spec in an existing CSV for a hotfix", func() { @@ -3649,16 +3648,16 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), true, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), true, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() // Wait for current CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Should have created deployment - dep, err := c.GetDeployment(ns.GetName(), strategy.DeploymentSpecs[0].Name) + dep, err := c.GetDeployment(generatedNamespace.GetName(), strategy.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(dep).ShouldNot(BeNil()) @@ -3675,7 +3674,7 @@ var _ = Describe("ClusterServiceVersion", func() { } // Fetch the current csv - fetchedCSV, err := fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + fetchedCSV, err := fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Update csv with modified deployment spec @@ -3683,15 +3682,15 @@ var _ = Describe("ClusterServiceVersion", func() { Eventually(func() error { // Update the current csv - _, err = crc.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Update(context.TODO(), fetchedCSV, metav1.UpdateOptions{}) + _, err = crc.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Update(context.TODO(), fetchedCSV, metav1.UpdateOptions{}) return err }).Should(Succeed()) // Wait for updated CSV to succeed - _, err = fetchCSV(crc, csv.Name, ns.GetName(), func(csv *operatorsv1alpha1.ClusterServiceVersion) bool { + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), func(csv *operatorsv1alpha1.ClusterServiceVersion) bool { // Should have updated existing deployment - depUpdated, err := c.GetDeployment(ns.GetName(), strategyNew.DeploymentSpecs[0].Name) + depUpdated, err := c.GetDeployment(generatedNamespace.GetName(), strategyNew.DeploymentSpecs[0].Name) Expect(err).ShouldNot(HaveOccurred()) Expect(depUpdated).ShouldNot(BeNil()) // container name has been updated and differs from initial CSV spec and updated CSV spec @@ -3739,7 +3738,7 @@ var _ = Describe("ClusterServiceVersion", func() { }, }, } - csv.SetNamespace(ns.GetName()) + csv.SetNamespace(generatedNamespace.GetName()) csv.SetName(genName("csv-")) clientCtx := context.Background() @@ -3751,7 +3750,7 @@ var _ = Describe("ClusterServiceVersion", func() { // Watch latest events from test namespace for CSV listOpts.ResourceVersion = events.ResourceVersion - w, err := c.KubernetesInterface().CoreV1().Events(ns.GetName()).Watch(context.Background(), listOpts) + w, err := c.KubernetesInterface().CoreV1().Events(generatedNamespace.GetName()).Watch(context.Background(), listOpts) Expect(err).ToNot(HaveOccurred()) defer w.Stop() @@ -3871,7 +3870,7 @@ var _ = Describe("ClusterServiceVersion", func() { }, } - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), true, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), true, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() @@ -3894,7 +3893,7 @@ var _ = Describe("ClusterServiceVersion", func() { return false } - fetchedCSV, err := fetchCSV(crc, csv.Name, ns.GetName(), csvCheckPhaseAndRequirementStatus) + fetchedCSV, err := fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvCheckPhaseAndRequirementStatus) Expect(err).ShouldNot(HaveOccurred()) Expect(fetchedCSV.Status.RequirementStatus).Should(ContainElement(notServedStatus)) @@ -3965,19 +3964,19 @@ var _ = Describe("ClusterServiceVersion", func() { }, } csv.SetName("csv-hat-1") - csv.SetNamespace(ns.GetName()) + csv.SetNamespace(generatedNamespace.GetName()) - createLegacyAPIResources(ns.GetName(), &csv, owned[0], c) + createLegacyAPIResources(generatedNamespace.GetName(), &csv, owned[0], c) // Create the APIService CSV - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) - checkLegacyAPIResources(ns.GetName(), owned[0], true, c) + checkLegacyAPIResources(generatedNamespace.GetName(), owned[0], true, c) }) It("API service resource not migrated if not adoptable", func() { @@ -4045,22 +4044,22 @@ var _ = Describe("ClusterServiceVersion", func() { }, } csv.SetName("csv-hat-1") - csv.SetNamespace(ns.GetName()) + csv.SetNamespace(generatedNamespace.GetName()) - createLegacyAPIResources(ns.GetName(), nil, owned[0], c) + createLegacyAPIResources(generatedNamespace.GetName(), nil, owned[0], c) // Create the APIService CSV - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) - checkLegacyAPIResources(ns.GetName(), owned[0], false, c) + checkLegacyAPIResources(generatedNamespace.GetName(), owned[0], false, c) // Cleanup the resources created for this test that were not cleaned up. - deleteLegacyAPIResources(ns.GetName(), owned[0], c) + deleteLegacyAPIResources(generatedNamespace.GetName(), owned[0], c) }) It("multiple API services on a single pod", func() { @@ -4162,14 +4161,14 @@ var _ = Describe("ClusterServiceVersion", func() { }, } csv.SetName("csv-hat-1") - csv.SetNamespace(ns.GetName()) + csv.SetNamespace(generatedNamespace.GetName()) // Create the APIService CSV - cleanupCSV, err := createCSV(c, crc, csv, ns.GetName(), false, false) + cleanupCSV, err := createCSV(c, crc, csv, generatedNamespace.GetName(), false, false) Expect(err).ShouldNot(HaveOccurred()) defer cleanupCSV() - _, err = fetchCSV(crc, csv.Name, ns.GetName(), csvSucceededChecker) + _, err = fetchCSV(crc, csv.Name, generatedNamespace.GetName(), csvSucceededChecker) Expect(err).ShouldNot(HaveOccurred()) // Check that the APIService caBundles are equal diff --git a/test/e2e/deprecated_e2e_test.go b/test/e2e/deprecated_e2e_test.go index 16fec7cc42..1ae0658e09 100644 --- a/test/e2e/deprecated_e2e_test.go +++ b/test/e2e/deprecated_e2e_test.go @@ -19,7 +19,7 @@ import ( var missingAPI = `{"apiVersion":"verticalpodautoscalers.autoscaling.k8s.io/v1","kind":"VerticalPodAutoscaler","metadata":{"name":"my.thing","namespace":"foo"}}` var _ = Describe("Not found APIs", func() { - var ns corev1.Namespace + var generatedNamespace corev1.Namespace BeforeEach(func() { namespaceName := genName("deprecated-e2e-") @@ -29,14 +29,14 @@ var _ = Describe("Not found APIs", func() { Namespace: namespaceName, }, } - ns = SetupGeneratedTestNamespaceWithOperatorGroup(namespaceName, og) + generatedNamespace = SetupGeneratedTestNamespaceWithOperatorGroup(namespaceName, og) - csv := newCSV("test-csv", ns.GetName(), "", semver.Version{}, nil, nil, nil) + csv := newCSV("test-csv", generatedNamespace.GetName(), "", semver.Version{}, nil, nil, nil) Expect(ctx.Ctx().Client().Create(context.TODO(), &csv)).To(Succeed()) }) AfterEach(func() { - TeardownNamespace(ns.GetName()) + TeardownNamespace(generatedNamespace.GetName()) }) Context("objects with APIs that are not on-cluster are created in the installplan", func() { @@ -45,7 +45,7 @@ var _ = Describe("Not found APIs", func() { ip := &operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ Name: "test-plan-api", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1alpha1.InstallPlanSpec{ Approval: operatorsv1alpha1.ApprovalAutomatic, diff --git a/test/e2e/disabling_copied_csv_e2e_test.go b/test/e2e/disabling_copied_csv_e2e_test.go index ba799f8c4a..f47678dd8c 100644 --- a/test/e2e/disabling_copied_csv_e2e_test.go +++ b/test/e2e/disabling_copied_csv_e2e_test.go @@ -28,21 +28,21 @@ const ( var _ = Describe("Disabling copied CSVs", func() { var ( - ns corev1.Namespace + generatedNamespace corev1.Namespace csv operatorsv1alpha1.ClusterServiceVersion nonTerminatingNamespaceSelector = fields.ParseSelectorOrDie("status.phase!=Terminating") protectedCopiedCSVNamespaces = map[string]struct{}{} ) BeforeEach(func() { - nsname := genName("csv-toggle-test-") + nsname := genName("disabling-copied-csv-e2e-") og := operatorsv1.OperatorGroup{ ObjectMeta: metav1.ObjectMeta{ Name: fmt.Sprintf("%s-operatorgroup", nsname), Namespace: nsname, }, } - ns = SetupGeneratedTestNamespaceWithOperatorGroup(nsname, og) + generatedNamespace = SetupGeneratedTestNamespaceWithOperatorGroup(nsname, og) csv = operatorsv1alpha1.ClusterServiceVersion{ ObjectMeta: metav1.ObjectMeta{ @@ -67,7 +67,7 @@ var _ = Describe("Disabling copied CSVs", func() { Eventually(func() error { return client.IgnoreNotFound(ctx.Ctx().Client().Delete(context.Background(), &csv)) }).Should(Succeed()) - TeardownNamespace(ns.GetName()) + TeardownNamespace(generatedNamespace.GetName()) }) When("an operator is installed in AllNamespace mode", func() { diff --git a/test/e2e/dynamic_resource_e2e_test.go b/test/e2e/dynamic_resource_e2e_test.go index 387a77c743..72a258dadd 100644 --- a/test/e2e/dynamic_resource_e2e_test.go +++ b/test/e2e/dynamic_resource_e2e_test.go @@ -14,35 +14,33 @@ import ( "github.com/operator-framework/api/pkg/operators/v1alpha1" "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/clientset/versioned" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" - "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient" "github.com/operator-framework/operator-lifecycle-manager/test/e2e/ctx" ) var _ = Describe("Subscriptions create required objects from Catalogs", func() { var ( - c operatorclient.ClientInterface - crc versioned.Interface - dynamicClient dynamic.Interface - deleteOpts *metav1.DeleteOptions + crc versioned.Interface + generatedNamespace corev1.Namespace + dynamicClient dynamic.Interface + deleteOpts *metav1.DeleteOptions ) BeforeEach(func() { - c = ctx.Ctx().KubeClient() crc = ctx.Ctx().OperatorClient() dynamicClient = ctx.Ctx().DynamicClient() deleteOpts = &metav1.DeleteOptions{} + generatedNamespace = SetupGeneratedTestNamespace(genName("dynamic-resource-e2e-")) }) AfterEach(func() { - TearDown(testNamespace) + TearDown(generatedNamespace.GetName()) }) Context("Given a Namespace", func() { When("a CatalogSource is created with a bundle that contains prometheus objects", func() { Context("creating a subscription using the CatalogSource", func() { var ( - ns *corev1.Namespace catsrc *v1alpha1.CatalogSource subName string cleanupSub cleanupFunc @@ -50,20 +48,11 @@ var _ = Describe("Subscriptions create required objects from Catalogs", func() { BeforeEach(func() { - // Create Namespace - var err error - ns, err = c.KubernetesInterface().CoreV1().Namespaces().Create(context.TODO(), &corev1.Namespace{ - ObjectMeta: metav1.ObjectMeta{ - Name: genName("ns-"), - }, - }, metav1.CreateOptions{}) - Expect(err).NotTo(HaveOccurred()) - // Create CatalogSource catsrc = &v1alpha1.CatalogSource{ ObjectMeta: metav1.ObjectMeta{ Name: genName("dynamic-catalog-"), - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: v1alpha1.CatalogSourceSpec{ Image: "quay.io/olmtest/catsrc_dynamic_resources:e2e-test", @@ -74,7 +63,7 @@ var _ = Describe("Subscriptions create required objects from Catalogs", func() { }, } - catsrc, err = crc.OperatorsV1alpha1().CatalogSources(catsrc.GetNamespace()).Create(context.TODO(), catsrc, metav1.CreateOptions{}) + catsrc, err := crc.OperatorsV1alpha1().CatalogSources(catsrc.GetNamespace()).Create(context.TODO(), catsrc, metav1.CreateOptions{}) Expect(err).NotTo(HaveOccurred()) // Wait for the CatalogSource to be ready @@ -100,12 +89,6 @@ var _ = Describe("Subscriptions create required objects from Catalogs", func() { Expect(err).NotTo(HaveOccurred()) } - // Delete Namespace - if ns != nil { - err := c.KubernetesInterface().CoreV1().Namespaces().Delete(context.TODO(), ns.GetName(), *deleteOpts) - Expect(err).NotTo(HaveOccurred()) - } - }) It("should install the operator successfully", func() { @@ -150,11 +133,11 @@ var _ = Describe("Subscriptions create required objects from Catalogs", func() { Resource: "prometheusrules", } - err = waitForGVR(dynamicClient, gvr, "my-prometheusrule", ns.GetName()) + err = waitForGVR(dynamicClient, gvr, "my-prometheusrule", generatedNamespace.GetName()) Expect(err).NotTo(HaveOccurred()) gvr.Resource = "servicemonitors" - err = waitForGVR(dynamicClient, gvr, "my-servicemonitor", ns.GetName()) + err = waitForGVR(dynamicClient, gvr, "my-servicemonitor", generatedNamespace.GetName()) Expect(err).NotTo(HaveOccurred()) }) }) diff --git a/test/e2e/fail_forward_e2e_test.go b/test/e2e/fail_forward_e2e_test.go index 8f06170322..fd95912bba 100644 --- a/test/e2e/fail_forward_e2e_test.go +++ b/test/e2e/fail_forward_e2e_test.go @@ -25,10 +25,10 @@ const ( var _ = Describe("Fail Forward Upgrades", func() { var ( - ns corev1.Namespace - crclient versioned.Interface - c client.Client - ogName string + generatedNamespace corev1.Namespace + crclient versioned.Interface + c client.Client + ogName string ) BeforeEach(func() { @@ -36,7 +36,7 @@ var _ = Describe("Fail Forward Upgrades", func() { c = ctx.Ctx().Client() By("creating the testing namespace with an OG that enabled fail forward behavior") - namespaceName := genName("ff-e2e-") + namespaceName := genName("fail-forward-e2e-") og := operatorsv1.OperatorGroup{ ObjectMeta: metav1.ObjectMeta{ Name: fmt.Sprintf("%s-operatorgroup", namespaceName), @@ -46,13 +46,13 @@ var _ = Describe("Fail Forward Upgrades", func() { UpgradeStrategy: operatorsv1.UpgradeStrategyUnsafeFailForward, }, } - ns = SetupGeneratedTestNamespaceWithOperatorGroup(namespaceName, og) + generatedNamespace = SetupGeneratedTestNamespaceWithOperatorGroup(namespaceName, og) ogName = og.GetName() }) AfterEach(func() { By("deleting the testing namespace") - TeardownNamespace(ns.GetName()) + TeardownNamespace(generatedNamespace.GetName()) }) When("an InstallPlan is reporting a failed state", func() { @@ -68,24 +68,24 @@ var _ = Describe("Fail Forward Upgrades", func() { BeforeEach(func() { By("creating a service account with no permission") saNameWithNoPerms := genName("scoped-sa-") - newServiceAccount(ctx.Ctx().KubeClient(), ns.GetName(), saNameWithNoPerms) + newServiceAccount(ctx.Ctx().KubeClient(), generatedNamespace.GetName(), saNameWithNoPerms) By("deploying the testing catalog") provider, err := NewFileBasedFiledBasedCatalogProvider(filepath.Join(testdataDir, failForwardTestDataBaseDir, "example-operator.v0.1.0.yaml")) Expect(err).To(BeNil()) catalogSourceName = genName("mc-ip-failed-") - magicCatalog = NewMagicCatalog(c, ns.GetName(), catalogSourceName, provider) + magicCatalog = NewMagicCatalog(c, generatedNamespace.GetName(), catalogSourceName, provider) Expect(magicCatalog.DeployCatalog(context.Background())).To(BeNil()) By("creating the testing subscription") subscription = &operatorsv1alpha1.Subscription{ ObjectMeta: metav1.ObjectMeta{ Name: fmt.Sprintf("%s-sub", catalogSourceName), - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: &operatorsv1alpha1.SubscriptionSpec{ CatalogSource: catalogSourceName, - CatalogSourceNamespace: ns.GetName(), + CatalogSourceNamespace: generatedNamespace.GetName(), Channel: "stable", Package: "packageA", }, @@ -99,11 +99,11 @@ var _ = Describe("Fail Forward Upgrades", func() { originalInstallPlanRef = subscription.Status.InstallPlanRef By("waiting for the v0.1.0 CSV to report a succeeded phase") - _, err = fetchCSV(crclient, subscription.Status.CurrentCSV, ns.GetName(), buildCSVConditionChecker(operatorsv1alpha1.CSVPhaseSucceeded)) + _, err = fetchCSV(crclient, subscription.Status.CurrentCSV, generatedNamespace.GetName(), buildCSVConditionChecker(operatorsv1alpha1.CSVPhaseSucceeded)) Expect(err).ShouldNot(HaveOccurred()) By("updating the operator group to use the service account without required permissions to simulate InstallPlan failure") - Eventually(operatorGroupServiceAccountNameSetter(crclient, ns.GetName(), ogName, saNameWithNoPerms)).Should(Succeed()) + Eventually(operatorGroupServiceAccountNameSetter(crclient, generatedNamespace.GetName(), ogName, saNameWithNoPerms)).Should(Succeed()) By("updating the catalog with v0.2.0 bundle image") brokenProvider, err := NewFileBasedFiledBasedCatalogProvider(filepath.Join(testdataDir, failForwardTestDataBaseDir, "example-operator.v0.2.0.yaml")) @@ -121,7 +121,7 @@ var _ = Describe("Fail Forward Upgrades", func() { Expect(err).To(BeNil()) By("updating the operator group remove service account without permissions") - Eventually(operatorGroupServiceAccountNameSetter(crclient, ns.GetName(), ogName, "")).Should(Succeed()) + Eventually(operatorGroupServiceAccountNameSetter(crclient, generatedNamespace.GetName(), ogName, "")).Should(Succeed()) }) AfterEach(func() { By("removing the testing catalog resources") @@ -129,7 +129,7 @@ var _ = Describe("Fail Forward Upgrades", func() { }) It("eventually reports a successful state when multiple bad versions are rolled forward", func() { By("patching the OperatorGroup to reduce the bundle unpacking timeout") - addBundleUnpackTimeoutOGAnnotation(context.Background(), c, types.NamespacedName{Name: ogName, Namespace: ns.GetName()}, "1s") + addBundleUnpackTimeoutOGAnnotation(context.Background(), c, types.NamespacedName{Name: ogName, Namespace: generatedNamespace.GetName()}, "1s") By("patching the catalog with a bad bundle version") badProvider, err := NewFileBasedFiledBasedCatalogProvider(filepath.Join(testdataDir, "fail-forward/multiple-bad-versions", "example-operator.v0.2.1-non-existent-tag.yaml")) @@ -141,7 +141,7 @@ var _ = Describe("Fail Forward Upgrades", func() { Consistently(subscriptionCurrentCSVGetter(crclient, subscription.GetNamespace(), subscription.GetName())).Should(Equal("example-operator.v0.2.0")) By("patching the OperatorGroup to increase the bundle unpacking timeout") - addBundleUnpackTimeoutOGAnnotation(context.Background(), c, types.NamespacedName{Name: ogName, Namespace: ns.GetName()}, "5m") + addBundleUnpackTimeoutOGAnnotation(context.Background(), c, types.NamespacedName{Name: ogName, Namespace: generatedNamespace.GetName()}, "5m") By("patching the catalog with a fixed version") fixedProvider, err := NewFileBasedFiledBasedCatalogProvider(filepath.Join(testdataDir, "fail-forward/multiple-bad-versions", "example-operator.v0.3.0.yaml")) @@ -232,18 +232,18 @@ var _ = Describe("Fail Forward Upgrades", func() { provider, err := NewFileBasedFiledBasedCatalogProvider(filepath.Join(testdataDir, failForwardTestDataBaseDir, "example-operator.v0.1.0.yaml")) Expect(err).To(BeNil()) catalogSourceName = genName("mc-csv-failed-") - magicCatalog = NewMagicCatalog(c, ns.GetName(), catalogSourceName, provider) + magicCatalog = NewMagicCatalog(c, generatedNamespace.GetName(), catalogSourceName, provider) Expect(magicCatalog.DeployCatalog(context.Background())).To(BeNil()) By("creating the testing subscription") subscription = &operatorsv1alpha1.Subscription{ ObjectMeta: metav1.ObjectMeta{ Name: fmt.Sprintf("%s-sub", catalogSourceName), - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: &operatorsv1alpha1.SubscriptionSpec{ CatalogSource: catalogSourceName, - CatalogSourceNamespace: ns.GetName(), + CatalogSourceNamespace: generatedNamespace.GetName(), Channel: "stable", Package: "packageA", }, @@ -255,7 +255,7 @@ var _ = Describe("Fail Forward Upgrades", func() { Expect(err).Should(BeNil()) By("waiting for the v0.1.0 CSV to report a succeeded phase") - _, err = fetchCSV(crclient, subscription.Status.CurrentCSV, ns.GetName(), buildCSVConditionChecker(operatorsv1alpha1.CSVPhaseSucceeded)) + _, err = fetchCSV(crclient, subscription.Status.CurrentCSV, generatedNamespace.GetName(), buildCSVConditionChecker(operatorsv1alpha1.CSVPhaseSucceeded)) Expect(err).ShouldNot(HaveOccurred()) By("updating the catalog with a broken v0.2.0 csv") @@ -271,7 +271,7 @@ var _ = Describe("Fail Forward Upgrades", func() { Expect(err).Should(BeNil()) By("waiting for the bad CSV to report a failed state") - _, err = fetchCSV(crclient, subscription.Status.CurrentCSV, ns.GetName(), csvFailedChecker) + _, err = fetchCSV(crclient, subscription.Status.CurrentCSV, generatedNamespace.GetName(), csvFailedChecker) Expect(err).To(BeNil()) }) diff --git a/test/e2e/gc_e2e_test.go b/test/e2e/gc_e2e_test.go index f9bdd992f8..1421b0d9e7 100644 --- a/test/e2e/gc_e2e_test.go +++ b/test/e2e/gc_e2e_test.go @@ -25,9 +25,9 @@ import ( var _ = Describe("Garbage collection for dependent resources", func() { var ( - kubeClient operatorclient.ClientInterface - operatorClient versioned.Interface - ns corev1.Namespace + kubeClient operatorclient.ClientInterface + operatorClient versioned.Interface + generatedNamespace corev1.Namespace ) BeforeEach(func() { @@ -35,11 +35,11 @@ var _ = Describe("Garbage collection for dependent resources", func() { operatorClient = ctx.Ctx().OperatorClient() namespaceName := genName("gc-e2e-") - ns = SetupGeneratedTestNamespace(namespaceName, namespaceName) + generatedNamespace = SetupGeneratedTestNamespace(namespaceName, namespaceName) }) AfterEach(func() { - TeardownNamespace(ns.GetName()) + TeardownNamespace(generatedNamespace.GetName()) }) Context("Given a ClusterRole owned by a CustomResourceDefinition", func() { @@ -218,18 +218,18 @@ var _ = Describe("Garbage collection for dependent resources", func() { BeforeEach(func() { - ownerA = newCSV("ownera", ns.GetName(), "", semver.MustParse("0.0.0"), nil, nil, nil) - ownerB = newCSV("ownerb", ns.GetName(), "", semver.MustParse("0.0.0"), nil, nil, nil) + ownerA = newCSV("ownera", generatedNamespace.GetName(), "", semver.MustParse("0.0.0"), nil, nil, nil) + ownerB = newCSV("ownerb", generatedNamespace.GetName(), "", semver.MustParse("0.0.0"), nil, nil, nil) // create all owners var err error Eventually(func() error { - fetchedA, err = operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Create(context.Background(), &ownerA, metav1.CreateOptions{}) + fetchedA, err = operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Create(context.Background(), &ownerA, metav1.CreateOptions{}) return err }).Should(Succeed()) Eventually(func() error { - fetchedB, err = operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Create(context.Background(), &ownerB, metav1.CreateOptions{}) + fetchedB, err = operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Create(context.Background(), &ownerB, metav1.CreateOptions{}) return err }).Should(Succeed()) @@ -246,7 +246,7 @@ var _ = Describe("Garbage collection for dependent resources", func() { // create ConfigMap dependent Eventually(func() error { - _, err = kubeClient.KubernetesInterface().CoreV1().ConfigMaps(ns.GetName()).Create(context.Background(), dependent, metav1.CreateOptions{}) + _, err = kubeClient.KubernetesInterface().CoreV1().ConfigMaps(generatedNamespace.GetName()).Create(context.Background(), dependent, metav1.CreateOptions{}) return err }).Should(Succeed(), "dependent could not be created") @@ -259,20 +259,20 @@ var _ = Describe("Garbage collection for dependent resources", func() { BeforeEach(func() { // delete ownerA in the foreground (to ensure any "blocking" dependents are deleted before ownerA) Eventually(func() bool { - err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Delete(context.Background(), fetchedA.GetName(), options) + err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Delete(context.Background(), fetchedA.GetName(), options) return apierrors.IsNotFound(err) }).Should(BeTrue()) // wait for deletion of ownerA Eventually(func() bool { - _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Get(context.Background(), ownerA.GetName(), metav1.GetOptions{}) + _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Get(context.Background(), ownerA.GetName(), metav1.GetOptions{}) return apierrors.IsNotFound(err) }).Should(BeTrue()) }) It("should not have deleted the dependent since ownerB CSV is still present", func() { Eventually(func() error { - _, err := kubeClient.KubernetesInterface().CoreV1().ConfigMaps(ns.GetName()).Get(context.Background(), dependent.GetName(), metav1.GetOptions{}) + _, err := kubeClient.KubernetesInterface().CoreV1().ConfigMaps(generatedNamespace.GetName()).Get(context.Background(), dependent.GetName(), metav1.GetOptions{}) return err }).Should(Succeed(), "dependent deleted after one of the owner was deleted") ctx.Ctx().Logf("dependent still exists after one owner was deleted") @@ -284,32 +284,32 @@ var _ = Describe("Garbage collection for dependent resources", func() { BeforeEach(func() { // delete ownerA in the foreground (to ensure any "blocking" dependents are deleted before ownerA) Eventually(func() bool { - err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Delete(context.Background(), fetchedA.GetName(), options) + err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Delete(context.Background(), fetchedA.GetName(), options) return apierrors.IsNotFound(err) }).Should(BeTrue()) // wait for deletion of ownerA Eventually(func() bool { - _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Get(context.Background(), ownerA.GetName(), metav1.GetOptions{}) + _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Get(context.Background(), ownerA.GetName(), metav1.GetOptions{}) return apierrors.IsNotFound(err) }).Should(BeTrue()) // delete ownerB in the foreground (to ensure any "blocking" dependents are deleted before ownerB) Eventually(func() bool { - err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Delete(context.Background(), fetchedB.GetName(), options) + err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Delete(context.Background(), fetchedB.GetName(), options) return apierrors.IsNotFound(err) }).Should(BeTrue()) // wait for deletion of ownerB Eventually(func() bool { - _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Get(context.Background(), ownerB.GetName(), metav1.GetOptions{}) + _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Get(context.Background(), ownerB.GetName(), metav1.GetOptions{}) return apierrors.IsNotFound(err) }).Should(BeTrue()) }) It("should have deleted the dependent since both the owners were deleted", func() { Eventually(func() bool { - _, err := kubeClient.KubernetesInterface().CoreV1().ConfigMaps(ns.GetName()).Get(context.Background(), dependent.GetName(), metav1.GetOptions{}) + _, err := kubeClient.KubernetesInterface().CoreV1().ConfigMaps(generatedNamespace.GetName()).Get(context.Background(), dependent.GetName(), metav1.GetOptions{}) return apierrors.IsNotFound(err) }).Should(BeTrue(), "expected dependency configmap would be properly garabage collected") ctx.Ctx().Logf("dependent successfully garbage collected after both owners were deleted") @@ -344,7 +344,7 @@ var _ = Describe("Garbage collection for dependent resources", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": sourceName}, }, Spec: v1alpha1.CatalogSourceSpec{ @@ -374,25 +374,25 @@ var _ = Describe("Garbage collection for dependent resources", func() { _ = createSubscriptionForCatalog(operatorClient, source.GetNamespace(), subName, source.GetName(), packageName, channelName, "", v1alpha1.ApprovalAutomatic) // Wait for the Subscription to succeed - sub, err := fetchSubscription(operatorClient, ns.GetName(), subName, subscriptionStateAtLatestChecker()) + sub, err := fetchSubscription(operatorClient, generatedNamespace.GetName(), subName, subscriptionStateAtLatestChecker()) Expect(err).ToNot(HaveOccurred(), "could not get subscription at latest status") installPlanRef = sub.Status.InstallPlanRef.Name // Wait for the installplan to complete (5 minute timeout) - _, err = fetchInstallPlan(GinkgoT(), operatorClient, installPlanRef, ns.GetName(), buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseComplete)) + _, err = fetchInstallPlan(GinkgoT(), operatorClient, installPlanRef, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseComplete)) Expect(err).ToNot(HaveOccurred(), "could not get installplan at complete phase") ctx.Ctx().Logf("install plan %s completed", installPlanRef) // confirm extra bundle objects (secret and configmap) are installed Eventually(func() error { - _, err := kubeClient.GetSecret(ns.GetName(), secretName) + _, err := kubeClient.GetSecret(generatedNamespace.GetName(), secretName) return err }).Should(Succeed(), "expected no error getting secret object associated with CSV") Eventually(func() error { - _, err := kubeClient.GetConfigMap(ns.GetName(), configmapName) + _, err := kubeClient.GetConfigMap(generatedNamespace.GetName(), configmapName) return err }).Should(Succeed(), "expected no error getting configmap object associated with CSV") }) @@ -404,25 +404,25 @@ var _ = Describe("Garbage collection for dependent resources", func() { BeforeEach(func() { // Delete subscription first Eventually(func() bool { - err := operatorClient.OperatorsV1alpha1().Subscriptions(ns.GetName()).Delete(context.Background(), subName, metav1.DeleteOptions{}) + err := operatorClient.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Delete(context.Background(), subName, metav1.DeleteOptions{}) return apierrors.IsNotFound(err) }).Should(BeTrue()) // wait for deletion Eventually(func() bool { - _, err := operatorClient.OperatorsV1alpha1().Subscriptions(ns.GetName()).Get(context.Background(), subName, metav1.GetOptions{}) + _, err := operatorClient.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Get(context.Background(), subName, metav1.GetOptions{}) return apierrors.IsNotFound(err) }).Should(BeTrue()) // Delete CSV Eventually(func() bool { - err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Delete(context.Background(), csvName, metav1.DeleteOptions{}) + err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Delete(context.Background(), csvName, metav1.DeleteOptions{}) return apierrors.IsNotFound(err) }).Should(BeTrue()) // wait for deletion Eventually(func() bool { - _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Get(context.Background(), csvName, metav1.GetOptions{}) + _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Get(context.Background(), csvName, metav1.GetOptions{}) return apierrors.IsNotFound(err) }).Should(BeTrue()) }) @@ -430,12 +430,12 @@ var _ = Describe("Garbage collection for dependent resources", func() { It("OLM should delete the associated configmap and secret", func() { // confirm extra bundle objects (secret and configmap) are no longer installed on the cluster Eventually(func() bool { - _, err := kubeClient.GetSecret(ns.GetName(), secretName) + _, err := kubeClient.GetSecret(generatedNamespace.GetName(), secretName) return apierrors.IsNotFound(err) }).Should(BeTrue()) Eventually(func() bool { - _, err := kubeClient.GetConfigMap(ns.GetName(), configmapName) + _, err := kubeClient.GetConfigMap(generatedNamespace.GetName(), configmapName) return apierrors.IsNotFound(err) }).Should(BeTrue()) ctx.Ctx().Logf("dependent successfully garbage collected after csv owner was deleted") @@ -467,7 +467,7 @@ var _ = Describe("Garbage collection for dependent resources", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": sourceName}, }, Spec: v1alpha1.CatalogSourceSpec{ @@ -493,17 +493,17 @@ var _ = Describe("Garbage collection for dependent resources", func() { _ = createSubscriptionForCatalog(operatorClient, source.GetNamespace(), subName, source.GetName(), packageName, channelName, "", v1alpha1.ApprovalAutomatic) // Wait for the Subscription to succeed - sub, err := fetchSubscription(operatorClient, ns.GetName(), subName, subscriptionStateAtLatestChecker()) + sub, err := fetchSubscription(operatorClient, generatedNamespace.GetName(), subName, subscriptionStateAtLatestChecker()) Expect(err).ToNot(HaveOccurred(), "could not get subscription at latest status") installPlanRef = sub.Status.InstallPlanRef.Name // Wait for the installplan to complete (5 minute timeout) - _, err = fetchInstallPlan(GinkgoT(), operatorClient, installPlanRef, ns.GetName(), buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseComplete)) + _, err = fetchInstallPlan(GinkgoT(), operatorClient, installPlanRef, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseComplete)) Expect(err).ToNot(HaveOccurred(), "could not get installplan at complete phase") Eventually(func() error { - _, err := kubeClient.GetConfigMap(ns.GetName(), configmapName) + _, err := kubeClient.GetConfigMap(generatedNamespace.GetName(), configmapName) return err }).Should(Succeed(), "expected no error getting configmap object associated with CSV") }) @@ -519,36 +519,36 @@ var _ = Describe("Garbage collection for dependent resources", func() { BeforeEach(func() { Eventually(func() error { // update subscription first - sub, err := operatorClient.OperatorsV1alpha1().Subscriptions(ns.GetName()).Get(context.Background(), subName, metav1.GetOptions{}) + sub, err := operatorClient.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Get(context.Background(), subName, metav1.GetOptions{}) if err != nil { return fmt.Errorf("could not get subscription") } // update channel on sub sub.Spec.Channel = upgradeChannelName - _, err = operatorClient.OperatorsV1alpha1().Subscriptions(ns.GetName()).Update(context.Background(), sub, metav1.UpdateOptions{}) + _, err = operatorClient.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Update(context.Background(), sub, metav1.UpdateOptions{}) return err }).Should(Succeed(), "could not update subscription") // Wait for the Subscription to succeed - sub, err := fetchSubscription(operatorClient, ns.GetName(), subName, subscriptionStateAtLatestChecker()) + sub, err := fetchSubscription(operatorClient, generatedNamespace.GetName(), subName, subscriptionStateAtLatestChecker()) Expect(err).ToNot(HaveOccurred(), "could not get subscription at latest status") installPlanRef = sub.Status.InstallPlanRef.Name // Wait for the installplan to complete (5 minute timeout) - _, err = fetchInstallPlan(GinkgoT(), operatorClient, installPlanRef, ns.GetName(), buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseComplete)) + _, err = fetchInstallPlan(GinkgoT(), operatorClient, installPlanRef, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseComplete)) Expect(err).ToNot(HaveOccurred(), "could not get installplan at complete phase") // Ensure the new csv is installed Eventually(func() error { - _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Get(context.Background(), newCSVname, metav1.GetOptions{}) + _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Get(context.Background(), newCSVname, metav1.GetOptions{}) return err }).Should(BeNil()) }) It("OLM should have upgraded associated configmap in place", func() { Eventually(func() (string, error) { - cfg, err := kubeClient.GetConfigMap(ns.GetName(), configmapName) + cfg, err := kubeClient.GetConfigMap(generatedNamespace.GetName(), configmapName) if err != nil { return "", err } @@ -585,7 +585,7 @@ var _ = Describe("Garbage collection for dependent resources", func() { }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": sourceName}, }, Spec: v1alpha1.CatalogSourceSpec{ @@ -611,17 +611,17 @@ var _ = Describe("Garbage collection for dependent resources", func() { _ = createSubscriptionForCatalog(operatorClient, source.GetNamespace(), subName, source.GetName(), packageName, channelName, "", v1alpha1.ApprovalAutomatic) // Wait for the Subscription to succeed - sub, err := fetchSubscription(operatorClient, ns.GetName(), subName, subscriptionStateAtLatestChecker()) + sub, err := fetchSubscription(operatorClient, generatedNamespace.GetName(), subName, subscriptionStateAtLatestChecker()) Expect(err).ToNot(HaveOccurred(), "could not get subscription at latest status") installPlanRef = sub.Status.InstallPlanRef.Name // Wait for the installplan to complete (5 minute timeout) - _, err = fetchInstallPlan(GinkgoT(), operatorClient, installPlanRef, ns.GetName(), buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseComplete)) + _, err = fetchInstallPlan(GinkgoT(), operatorClient, installPlanRef, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseComplete)) Expect(err).ToNot(HaveOccurred(), "could not get installplan at complete phase") Eventually(func() error { - _, err := kubeClient.GetConfigMap(ns.GetName(), configmapName) + _, err := kubeClient.GetConfigMap(generatedNamespace.GetName(), configmapName) return err }).Should(Succeed(), "expected no error getting configmap object associated with CSV") }) @@ -638,29 +638,29 @@ var _ = Describe("Garbage collection for dependent resources", func() { BeforeEach(func() { Eventually(func() error { // update subscription first - sub, err := operatorClient.OperatorsV1alpha1().Subscriptions(ns.GetName()).Get(context.Background(), subName, metav1.GetOptions{}) + sub, err := operatorClient.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Get(context.Background(), subName, metav1.GetOptions{}) if err != nil { return fmt.Errorf("could not get subscription") } // update channel on sub sub.Spec.Channel = upgradeChannelName - _, err = operatorClient.OperatorsV1alpha1().Subscriptions(ns.GetName()).Update(context.Background(), sub, metav1.UpdateOptions{}) + _, err = operatorClient.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Update(context.Background(), sub, metav1.UpdateOptions{}) return err }).Should(Succeed(), "could not update subscription") // Wait for the Subscription to succeed - sub, err := fetchSubscription(operatorClient, ns.GetName(), subName, subscriptionStateAtLatestChecker()) + sub, err := fetchSubscription(operatorClient, generatedNamespace.GetName(), subName, subscriptionStateAtLatestChecker()) Expect(err).ToNot(HaveOccurred(), "could not get subscription at latest status") installPlanRef = sub.Status.InstallPlanRef.Name // Wait for the installplan to complete (5 minute timeout) - _, err = fetchInstallPlan(GinkgoT(), operatorClient, installPlanRef, ns.GetName(), buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseComplete)) + _, err = fetchInstallPlan(GinkgoT(), operatorClient, installPlanRef, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(v1alpha1.InstallPlanPhaseComplete)) Expect(err).ToNot(HaveOccurred(), "could not get installplan at complete phase") // Ensure the new csv is installed Eventually(func() error { - _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Get(context.Background(), newCSVname, metav1.GetOptions{}) + _, err := operatorClient.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Get(context.Background(), newCSVname, metav1.GetOptions{}) return err }).Should(BeNil()) }) @@ -668,12 +668,12 @@ var _ = Describe("Garbage collection for dependent resources", func() { // flake issue: https://github.com/operator-framework/operator-lifecycle-manager/issues/2626 It("[FLAKE] should have removed the old configmap and put the new configmap in place", func() { Eventually(func() bool { - _, err := kubeClient.GetConfigMap(ns.GetName(), configmapName) + _, err := kubeClient.GetConfigMap(generatedNamespace.GetName(), configmapName) return apierrors.IsNotFound(err) }).Should(BeTrue()) Eventually(func() error { - _, err := kubeClient.GetConfigMap(ns.GetName(), upgradedConfigMapName) + _, err := kubeClient.GetConfigMap(generatedNamespace.GetName(), upgradedConfigMapName) return err }).Should(BeNil()) ctx.Ctx().Logf("dependent successfully updated after csv owner was updated") diff --git a/test/e2e/installplan_e2e_test.go b/test/e2e/installplan_e2e_test.go index 2de113cb25..44bc474fcd 100644 --- a/test/e2e/installplan_e2e_test.go +++ b/test/e2e/installplan_e2e_test.go @@ -56,9 +56,9 @@ const ( var _ = Describe("Install Plan", func() { var ( - c operatorclient.ClientInterface - crc versioned.Interface - ns corev1.Namespace + c operatorclient.ClientInterface + crc versioned.Interface + generatedNamespace corev1.Namespace ) BeforeEach(func() { @@ -69,13 +69,13 @@ var _ = Describe("Install Plan", func() { Namespace: namespaceName, }, } - ns = SetupGeneratedTestNamespaceWithOperatorGroup(namespaceName, og) + generatedNamespace = SetupGeneratedTestNamespaceWithOperatorGroup(namespaceName, og) c = ctx.Ctx().KubeClient() crc = ctx.Ctx().OperatorClient() }) AfterEach(func() { - TeardownNamespace(ns.GetName()) + TeardownNamespace(generatedNamespace.GetName()) }) When("an InstallPlan step contains a deprecated resource version", func() { @@ -111,10 +111,10 @@ var _ = Describe("Install Plan", func() { Expect(ctx.Ctx().Client().Create(context.Background(), deprecatedCRD)).To(Succeed()) - csv = newCSV(genName("test-csv-"), ns.GetName(), "", semver.Version{}, nil, nil, nil) + csv = newCSV(genName("test-csv-"), generatedNamespace.GetName(), "", semver.Version{}, nil, nil, nil) Expect(ctx.Ctx().Client().Create(context.Background(), &csv)).To(Succeed()) - deprecated, err = util.DecodeFile(filepath.Join(testdataDir, deprecatedCRDDir, "deprecated.cr.yaml"), &unstructured.Unstructured{}, util.WithNamespace(ns.GetName())) + deprecated, err = util.DecodeFile(filepath.Join(testdataDir, deprecatedCRDDir, "deprecated.cr.yaml"), &unstructured.Unstructured{}, util.WithNamespace(generatedNamespace.GetName())) Expect(err).NotTo(HaveOccurred()) scheme := runtime.NewScheme() @@ -126,7 +126,7 @@ var _ = Describe("Install Plan", func() { plan = operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: genName("test-plan-"), }, Spec: operatorsv1alpha1.InstallPlanSpec{ @@ -175,7 +175,7 @@ var _ = Describe("Install Plan", func() { It("creates an Event surfacing the deprecation warning", func() { Eventually(func() ([]corev1.Event, error) { var events corev1.EventList - if err := ctx.Ctx().Client().List(context.Background(), &events, client.InNamespace(ns.GetName())); err != nil { + if err := ctx.Ctx().Client().List(context.Background(), &events, client.InNamespace(generatedNamespace.GetName())); err != nil { return nil, err } var result []corev1.Event @@ -197,7 +197,7 @@ var _ = Describe("Install Plan", func() { InvolvedObject: corev1.ObjectReference{ APIVersion: operatorsv1alpha1.InstallPlanAPIVersion, Kind: operatorsv1alpha1.InstallPlanKind, - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: plan.GetName(), FieldPath: "status.plan[0]", }, @@ -223,7 +223,7 @@ var _ = Describe("Install Plan", func() { ) BeforeEach(func() { - csv := newCSV("test-csv", ns.GetName(), "", semver.Version{}, nil, nil, nil) + csv := newCSV("test-csv", generatedNamespace.GetName(), "", semver.Version{}, nil, nil, nil) Expect(ctx.Ctx().Client().Create(context.Background(), &csv)).To(Succeed()) crd = apiextensionsv1.CustomResourceDefinition{ @@ -266,7 +266,7 @@ var _ = Describe("Install Plan", func() { plan := operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: "test-plan", }, Spec: operatorsv1alpha1.InstallPlanSpec{ @@ -312,7 +312,7 @@ var _ = Describe("Install Plan", func() { return crd.GetAnnotations(), nil }).Should(HaveKeyWithValue( HavePrefix("operatorframework.io/installed-alongside-"), - fmt.Sprintf("%s/test-csv", ns.GetName()), + fmt.Sprintf("%s/test-csv", generatedNamespace.GetName()), )) }) @@ -323,12 +323,12 @@ var _ = Describe("Install Plan", func() { ) BeforeEach(func() { - csv = newCSV("test-csv-two", ns.GetName(), "", semver.Version{}, nil, nil, nil) + csv = newCSV("test-csv-two", generatedNamespace.GetName(), "", semver.Version{}, nil, nil, nil) Expect(ctx.Ctx().Client().Create(context.Background(), &csv)).To(Succeed()) plan = operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: "test-plan-two", }, Spec: operatorsv1alpha1.InstallPlanSpec{ @@ -382,11 +382,11 @@ var _ = Describe("Install Plan", func() { }).Should(ConsistOf( MatchFields(IgnoreExtras, Fields{ "Key": HavePrefix("operatorframework.io/installed-alongside-"), - "Value": Equal(fmt.Sprintf("%s/test-csv", ns.GetName())), + "Value": Equal(fmt.Sprintf("%s/test-csv", generatedNamespace.GetName())), }), MatchFields(IgnoreExtras, Fields{ "Key": HavePrefix("operatorframework.io/installed-alongside-"), - "Value": Equal(fmt.Sprintf("%s/test-csv-two", ns.GetName())), + "Value": Equal(fmt.Sprintf("%s/test-csv-two", generatedNamespace.GetName())), }), )) }) @@ -407,7 +407,7 @@ var _ = Describe("Install Plan", func() { // during a test. owned = &corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: "test-owned", OwnerReferences: []metav1.OwnerReference{{ APIVersion: "operators.coreos.com/v1alpha1", @@ -425,7 +425,7 @@ var _ = Describe("Install Plan", func() { plan = &operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: "test-plan", }, Spec: operatorsv1alpha1.InstallPlanSpec{ @@ -474,7 +474,7 @@ var _ = Describe("Install Plan", func() { }) It("succeeds if there is no error on a later attempt", func() { - owner := newCSV("test-owner", ns.GetName(), "", semver.Version{}, nil, nil, nil) + owner := newCSV("test-owner", generatedNamespace.GetName(), "", semver.Version{}, nil, nil, nil) Expect(ctx.Ctx().Client().Create(context.Background(), &owner)).To(Succeed()) Eventually(func() (*operatorsv1alpha1.InstallPlan, error) { return plan, ctx.Ctx().Client().Get(context.Background(), client.ObjectKeyFromObject(plan), plan) @@ -490,14 +490,14 @@ var _ = Describe("Install Plan", func() { ) BeforeEach(func() { - csv1 = newCSV("test-csv-old", ns.GetName(), "", semver.Version{}, nil, nil, nil) + csv1 = newCSV("test-csv-old", generatedNamespace.GetName(), "", semver.Version{}, nil, nil, nil) Expect(ctx.Ctx().Client().Create(context.Background(), &csv1)).To(Succeed()) - csv2 = newCSV("test-csv-new", ns.GetName(), "", semver.Version{}, nil, nil, nil) + csv2 = newCSV("test-csv-new", generatedNamespace.GetName(), "", semver.Version{}, nil, nil, nil) Expect(ctx.Ctx().Client().Create(context.Background(), &csv2)).To(Succeed()) sa = corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: "test-serviceaccount", OwnerReferences: []metav1.OwnerReference{ { @@ -516,7 +516,7 @@ var _ = Describe("Install Plan", func() { var manifest bytes.Buffer Expect(k8sjson.NewSerializer(k8sjson.DefaultMetaFactory, scheme, scheme, false).Encode(&corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: "test-serviceaccount", OwnerReferences: []metav1.OwnerReference{ { @@ -530,7 +530,7 @@ var _ = Describe("Install Plan", func() { plan = operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: "test-plan", }, Spec: operatorsv1alpha1.InstallPlanSpec{ @@ -612,7 +612,7 @@ var _ = Describe("Install Plan", func() { APIVersion: "v1", }, ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: "test-service", }, Spec: corev1.ServiceSpec{ @@ -640,7 +640,7 @@ var _ = Describe("Install Plan", func() { plan := &operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: "test-plan", }, Spec: operatorsv1alpha1.InstallPlanSpec{ @@ -692,11 +692,11 @@ var _ = Describe("Install Plan", func() { stableChannel := "stable" dependentCRD := newCRD(genName("ins-")) - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) - dependentCSV := newCSV(dependentPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) + dependentCSV := newCSV(dependentPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) defer func() { - require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) + require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) }() dependentCatalogName := genName("mock-ocs-dependent-") @@ -731,48 +731,48 @@ var _ = Describe("Install Plan", func() { }() // Create the catalog sources - require.NotEqual(GinkgoT(), "", ns.GetName()) - _, cleanupDependentCatalogSource := createInternalCatalogSource(c, crc, dependentCatalogName, ns.GetName(), dependentManifests, []apiextensions.CustomResourceDefinition{dependentCRD}, []operatorsv1alpha1.ClusterServiceVersion{dependentCSV}) + require.NotEqual(GinkgoT(), "", generatedNamespace.GetName()) + _, cleanupDependentCatalogSource := createInternalCatalogSource(c, crc, dependentCatalogName, generatedNamespace.GetName(), dependentManifests, []apiextensions.CustomResourceDefinition{dependentCRD}, []operatorsv1alpha1.ClusterServiceVersion{dependentCSV}) defer cleanupDependentCatalogSource() // Attempt to get the catalog source before creating install plan - _, err := fetchCatalogSourceOnStatus(crc, dependentCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, dependentCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) - _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, nil, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) + _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, nil, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) defer cleanupMainCatalogSource() // Attempt to get the catalog source before creating install plan - _, err = fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err = fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) // Create expected install plan step sources expectedStepSources := map[registry.ResourceKey]registry.ResourceKey{ - {Name: dependentCRD.Name, Kind: "CustomResourceDefinition"}: {Name: dependentCatalogName, Namespace: ns.GetName()}, - {Name: dependentPackageStable, Kind: operatorsv1alpha1.ClusterServiceVersionKind}: {Name: dependentCatalogName, Namespace: ns.GetName()}, - {Name: mainPackageStable, Kind: operatorsv1alpha1.ClusterServiceVersionKind}: {Name: mainCatalogName, Namespace: ns.GetName()}, - {Name: strings.Join([]string{dependentPackageStable, dependentCatalogName, ns.GetName()}, "-"), Kind: operatorsv1alpha1.SubscriptionKind}: {Name: dependentCatalogName, Namespace: ns.GetName()}, + {Name: dependentCRD.Name, Kind: "CustomResourceDefinition"}: {Name: dependentCatalogName, Namespace: generatedNamespace.GetName()}, + {Name: dependentPackageStable, Kind: operatorsv1alpha1.ClusterServiceVersionKind}: {Name: dependentCatalogName, Namespace: generatedNamespace.GetName()}, + {Name: mainPackageStable, Kind: operatorsv1alpha1.ClusterServiceVersionKind}: {Name: mainCatalogName, Namespace: generatedNamespace.GetName()}, + {Name: strings.Join([]string{dependentPackageStable, dependentCatalogName, generatedNamespace.GetName()}, "-"), Kind: operatorsv1alpha1.SubscriptionKind}: {Name: dependentCatalogName, Namespace: generatedNamespace.GetName()}, } subscriptionName := genName("sub-nginx-") - subscriptionCleanup := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + subscriptionCleanup := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer subscriptionCleanup() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) log(fmt.Sprintf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase)) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase) // Fetch installplan again to check for unnecessary control loops - fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, fetchedInstallPlan.GetName(), ns.GetName(), func(fip *operatorsv1alpha1.InstallPlan) bool { + fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, fetchedInstallPlan.GetName(), generatedNamespace.GetName(), func(fip *operatorsv1alpha1.InstallPlan) bool { // Don't compare object meta as labels can be applied by the operator controller. Expect(equality.Semantic.DeepEqual(fetchedInstallPlan.Spec, fip.Spec)).Should(BeTrue(), diff.ObjectDiff(fetchedInstallPlan, fip)) Expect(equality.Semantic.DeepEqual(fetchedInstallPlan.Status, fip.Status)).Should(BeTrue(), diff.ObjectDiff(fetchedInstallPlan, fip)) @@ -806,18 +806,18 @@ var _ = Describe("Install Plan", func() { log("All expected resources resolved") // Verify that the dependent subscription is in a good state - dependentSubscription, err := fetchSubscription(crc, ns.GetName(), strings.Join([]string{dependentPackageStable, dependentCatalogName, ns.GetName()}, "-"), subscriptionStateAtLatestChecker()) + dependentSubscription, err := fetchSubscription(crc, generatedNamespace.GetName(), strings.Join([]string{dependentPackageStable, dependentCatalogName, generatedNamespace.GetName()}, "-"), subscriptionStateAtLatestChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), dependentSubscription) require.NotNil(GinkgoT(), dependentSubscription.Status.InstallPlanRef) require.Equal(GinkgoT(), dependentCSV.GetName(), dependentSubscription.Status.CurrentCSV) // Verify CSV is created - _, err = awaitCSV(crc, ns.GetName(), dependentCSV.GetName(), csvAnyChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), dependentCSV.GetName(), csvAnyChecker) require.NoError(GinkgoT(), err) // Update dependent subscription in catalog and wait for csv to update - updatedDependentCSV := newCSV(dependentPackageStable+"-v2", ns.GetName(), dependentPackageStable, semver.MustParse("0.1.1"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) + updatedDependentCSV := newCSV(dependentPackageStable+"-v2", generatedNamespace.GetName(), dependentPackageStable, semver.MustParse("0.1.1"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) dependentManifests = []registry.PackageManifest{ { PackageName: dependentPackageName, @@ -828,20 +828,20 @@ var _ = Describe("Install Plan", func() { }, } - updateInternalCatalog(GinkgoT(), c, crc, dependentCatalogName, ns.GetName(), []apiextensions.CustomResourceDefinition{dependentCRD}, []operatorsv1alpha1.ClusterServiceVersion{dependentCSV, updatedDependentCSV}, dependentManifests) + updateInternalCatalog(GinkgoT(), c, crc, dependentCatalogName, generatedNamespace.GetName(), []apiextensions.CustomResourceDefinition{dependentCRD}, []operatorsv1alpha1.ClusterServiceVersion{dependentCSV, updatedDependentCSV}, dependentManifests) // Wait for subscription to update - updatedDepSubscription, err := fetchSubscription(crc, ns.GetName(), strings.Join([]string{dependentPackageStable, dependentCatalogName, ns.GetName()}, "-"), subscriptionHasCurrentCSV(updatedDependentCSV.GetName())) + updatedDepSubscription, err := fetchSubscription(crc, generatedNamespace.GetName(), strings.Join([]string{dependentPackageStable, dependentCatalogName, generatedNamespace.GetName()}, "-"), subscriptionHasCurrentCSV(updatedDependentCSV.GetName())) require.NoError(GinkgoT(), err) // Verify installplan created and installed - fetchedUpdatedDepInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, updatedDepSubscription.Status.InstallPlanRef.Name, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedUpdatedDepInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, updatedDepSubscription.Status.InstallPlanRef.Name, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) log(fmt.Sprintf("Install plan %s fetched with status %s", fetchedUpdatedDepInstallPlan.GetName(), fetchedUpdatedDepInstallPlan.Status.Phase)) require.NotEqual(GinkgoT(), fetchedInstallPlan.GetName(), fetchedUpdatedDepInstallPlan.GetName()) // Wait for csv to update - _, err = awaitCSV(crc, ns.GetName(), updatedDependentCSV.GetName(), csvAnyChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), updatedDependentCSV.GetName(), csvAnyChecker) require.NoError(GinkgoT(), err) }) @@ -884,10 +884,10 @@ var _ = Describe("Install Plan", func() { dependentCRD := newCRD(genName("ins-")) // Create new CSVs - mainStableCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{mainCRD}, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) - mainBetaCSV := newCSV(mainPackageBeta, ns.GetName(), mainPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{mainCRD}, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) - dependentStableCSV := newCSV(dependentPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) - dependentBetaCSV := newCSV(dependentPackageBeta, ns.GetName(), dependentPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) + mainStableCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{mainCRD}, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) + mainBetaCSV := newCSV(mainPackageBeta, generatedNamespace.GetName(), mainPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{mainCRD}, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) + dependentStableCSV := newCSV(dependentPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) + dependentBetaCSV := newCSV(dependentPackageBeta, generatedNamespace.GetName(), dependentPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) // Defer CRD clean up defer func() { @@ -900,16 +900,16 @@ var _ = Describe("Install Plan", func() { }() defer func() { - require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) + require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) }() // Create the catalog source mainCatalogSourceName := genName("mock-ocs-main-" + strings.ToLower(K8sSafeCurrentTestDescription()) + "-") - _, cleanupCatalogSource := createInternalCatalogSource(c, crc, mainCatalogSourceName, ns.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{dependentCRD, mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{dependentBetaCSV, dependentStableCSV, mainStableCSV, mainBetaCSV}) + _, cleanupCatalogSource := createInternalCatalogSource(c, crc, mainCatalogSourceName, generatedNamespace.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{dependentCRD, mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{dependentBetaCSV, dependentStableCSV, mainStableCSV, mainBetaCSV}) defer cleanupCatalogSource() // Attempt to get the catalog source before creating install plan(s) - _, err := fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) expectedSteps := map[registry.ResourceKey]struct{}{ @@ -921,30 +921,30 @@ var _ = Describe("Install Plan", func() { cleanupCRD, err := createCRD(c, dependentCRD) require.NoError(GinkgoT(), err) defer cleanupCRD() - cleanupCSV, err := createCSV(c, crc, dependentBetaCSV, ns.GetName(), true, false) + cleanupCSV, err := createCSV(c, crc, dependentBetaCSV, generatedNamespace.GetName(), true, false) require.NoError(GinkgoT(), err) defer cleanupCSV() GinkgoT().Log("Dependent CRD and preexisting CSV created") subscriptionName := genName("sub-nginx-") - subscriptionCleanup := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogSourceName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + subscriptionCleanup := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogSourceName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer subscriptionCleanup() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete or Failed before checking resource presence - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete, operatorsv1alpha1.InstallPlanPhaseFailed)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete, operatorsv1alpha1.InstallPlanPhaseFailed)) require.NoError(GinkgoT(), err) GinkgoT().Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase) // Fetch installplan again to check for unnecessary control loops - fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, fetchedInstallPlan.GetName(), ns.GetName(), func(fip *operatorsv1alpha1.InstallPlan) bool { + fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, fetchedInstallPlan.GetName(), generatedNamespace.GetName(), func(fip *operatorsv1alpha1.InstallPlan) bool { Expect(equality.Semantic.DeepEqual(fetchedInstallPlan, fip)).Should(BeTrue(), diff.ObjectDiff(fetchedInstallPlan, fip)) return true }) @@ -1295,8 +1295,8 @@ var _ = Describe("Install Plan", func() { } // Create new CSVs - mainStableCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{*tt.oldCRD}, nil, nil) - mainBetaCSV := newCSV(mainPackageBeta, ns.GetName(), mainPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{*tt.oldCRD}, nil, nil) + mainStableCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{*tt.oldCRD}, nil, nil) + mainBetaCSV := newCSV(mainPackageBeta, generatedNamespace.GetName(), mainPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{*tt.oldCRD}, nil, nil) // Defer CRD clean up defer func() { @@ -1319,7 +1319,7 @@ var _ = Describe("Install Plan", func() { "apiVersion": "cluster.com/v1alpha1", "kind": tt.oldCRD.Spec.Names.Kind, "metadata": map[string]interface{}{ - "namespace": ns.GetName(), + "namespace": generatedNamespace.GetName(), "name": "my-cr-1", }, "spec": map[string]interface{}{ @@ -1330,18 +1330,18 @@ var _ = Describe("Install Plan", func() { // Create the catalog source mainCatalogSourceName := genName("mock-ocs-main-") - _, cleanupCatalogSource := createInternalCatalogSource(c, crc, mainCatalogSourceName, ns.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{*tt.oldCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainStableCSV, mainBetaCSV}) + _, cleanupCatalogSource := createInternalCatalogSource(c, crc, mainCatalogSourceName, generatedNamespace.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{*tt.oldCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainStableCSV, mainBetaCSV}) defer cleanupCatalogSource() // Attempt to get the catalog source before creating install plan(s) - _, err := fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) subscriptionName := genName("sub-nginx-alpha-") - cleanupSubscription := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogSourceName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + cleanupSubscription := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogSourceName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer cleanupSubscription() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) @@ -1349,7 +1349,7 @@ var _ = Describe("Install Plan", func() { // Wait for InstallPlan to be status: Complete or failed before checking resource presence completeOrFailedFunc := buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete, operatorsv1alpha1.InstallPlanPhaseFailed) - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), completeOrFailedFunc) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), completeOrFailedFunc) require.NoError(GinkgoT(), err) GinkgoT().Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase) @@ -1378,44 +1378,44 @@ var _ = Describe("Install Plan", func() { require.Equal(GinkgoT(), 0, len(expectedSteps), "Actual resource steps do not match expected") // Create initial CR - cleanupCR, err := createCR(c, existingCR, "cluster.com", "v1alpha1", ns.GetName(), tt.oldCRD.Spec.Names.Plural, "my-cr-1") + cleanupCR, err := createCR(c, existingCR, "cluster.com", "v1alpha1", generatedNamespace.GetName(), tt.oldCRD.Spec.Names.Plural, "my-cr-1") require.NoError(GinkgoT(), err) defer cleanupCR() - updateInternalCatalog(GinkgoT(), c, crc, mainCatalogSourceName, ns.GetName(), []apiextensions.CustomResourceDefinition{*tt.newCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainStableCSV, mainBetaCSV}, mainManifests) + updateInternalCatalog(GinkgoT(), c, crc, mainCatalogSourceName, generatedNamespace.GetName(), []apiextensions.CustomResourceDefinition{*tt.newCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainStableCSV, mainBetaCSV}, mainManifests) // Attempt to get the catalog source before creating install plan(s) - _, err = fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err = fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) // Update the subscription resource to point to the beta CSV err = retry.RetryOnConflict(retry.DefaultBackoff, func() error { - subscription, err = fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) subscription.Spec.Channel = betaChannel - subscription, err = crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).Update(context.Background(), subscription, metav1.UpdateOptions{}) + subscription, err = crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).Update(context.Background(), subscription, metav1.UpdateOptions{}) return err }) // Wait for subscription to have a new installplan - subscription, err = fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(fetchedInstallPlan.GetName())) + subscription, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(fetchedInstallPlan.GetName())) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) installPlanName = subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete or Failed before checking resource presence - fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(tt.expectedPhase)) + fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(tt.expectedPhase)) require.NoError(GinkgoT(), err) GinkgoT().Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase) require.Equal(GinkgoT(), tt.expectedPhase, fetchedInstallPlan.Status.Phase) // Ensure correct in-cluster resource(s) - fetchedCSV, err := fetchCSV(crc, mainBetaCSV.GetName(), ns.GetName(), csvAnyChecker) + fetchedCSV, err := fetchCSV(crc, mainBetaCSV.GetName(), generatedNamespace.GetName(), csvAnyChecker) require.NoError(GinkgoT(), err) GinkgoT().Logf("All expected resources resolved %s", fetchedCSV.Status.Phase) @@ -1550,9 +1550,9 @@ var _ = Describe("Install Plan", func() { } // Create new CSVs - mainStableCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{*tt.oldCRD}, nil, nil) - mainBetaCSV := newCSV(mainPackageBeta, ns.GetName(), mainPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{*tt.intermediateCRD}, nil, nil) - mainDeltaCSV := newCSV(mainPackageDelta, ns.GetName(), mainPackageBeta, semver.MustParse("0.3.0"), []apiextensions.CustomResourceDefinition{*tt.newCRD}, nil, nil) + mainStableCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{*tt.oldCRD}, nil, nil) + mainBetaCSV := newCSV(mainPackageBeta, generatedNamespace.GetName(), mainPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{*tt.intermediateCRD}, nil, nil) + mainDeltaCSV := newCSV(mainPackageDelta, generatedNamespace.GetName(), mainPackageBeta, semver.MustParse("0.3.0"), []apiextensions.CustomResourceDefinition{*tt.newCRD}, nil, nil) // Defer CRD clean up defer func() { @@ -1578,19 +1578,19 @@ var _ = Describe("Install Plan", func() { // Create the catalog source mainCatalogSourceName := genName("mock-ocs-main-") - _, cleanupCatalogSource := createInternalCatalogSource(c, crc, mainCatalogSourceName, ns.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{*tt.oldCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainStableCSV}) + _, cleanupCatalogSource := createInternalCatalogSource(c, crc, mainCatalogSourceName, generatedNamespace.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{*tt.oldCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainStableCSV}) defer cleanupCatalogSource() // Attempt to get the catalog source before creating install plan(s) - _, err := fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) subscriptionName := genName("sub-nginx-") // this subscription will be cleaned up below without the clean up function - createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogSourceName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogSourceName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) @@ -1598,7 +1598,7 @@ var _ = Describe("Install Plan", func() { // Wait for InstallPlan to be status: Complete or failed before checking resource presence completeOrFailedFunc := buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete, operatorsv1alpha1.InstallPlanPhaseFailed) - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), completeOrFailedFunc) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), completeOrFailedFunc) require.NoError(GinkgoT(), err) GinkgoT().Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase) @@ -1621,25 +1621,25 @@ var _ = Describe("Install Plan", func() { }, } - updateInternalCatalog(GinkgoT(), c, crc, mainCatalogSourceName, ns.GetName(), []apiextensions.CustomResourceDefinition{*tt.intermediateCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainStableCSV, mainBetaCSV}, mainManifests) + updateInternalCatalog(GinkgoT(), c, crc, mainCatalogSourceName, generatedNamespace.GetName(), []apiextensions.CustomResourceDefinition{*tt.intermediateCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainStableCSV, mainBetaCSV}, mainManifests) // Attempt to get the catalog source before creating install plan(s) - _, err = fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err = fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) - subscription, err = fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(installPlanName)) + subscription, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(installPlanName)) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) installPlanName = subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete or Failed before checking resource presence - fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete, operatorsv1alpha1.InstallPlanPhaseFailed)) + fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete, operatorsv1alpha1.InstallPlanPhaseFailed)) require.NoError(GinkgoT(), err) GinkgoT().Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase) require.Equal(GinkgoT(), tt.expectedPhase, fetchedInstallPlan.Status.Phase) // Ensure correct in-cluster resource(s) - fetchedCSV, err := fetchCSV(crc, mainBetaCSV.GetName(), ns.GetName(), csvSucceededChecker) + fetchedCSV, err := fetchCSV(crc, mainBetaCSV.GetName(), generatedNamespace.GetName(), csvSucceededChecker) require.NoError(GinkgoT(), err) // Ensure CRD versions are accurate @@ -1661,25 +1661,25 @@ var _ = Describe("Install Plan", func() { }, } - updateInternalCatalog(GinkgoT(), c, crc, mainCatalogSourceName, ns.GetName(), []apiextensions.CustomResourceDefinition{*tt.newCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainStableCSV, mainBetaCSV, mainDeltaCSV}, mainManifests) + updateInternalCatalog(GinkgoT(), c, crc, mainCatalogSourceName, generatedNamespace.GetName(), []apiextensions.CustomResourceDefinition{*tt.newCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainStableCSV, mainBetaCSV, mainDeltaCSV}, mainManifests) // Attempt to get the catalog source before creating install plan(s) - _, err = fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err = fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) - subscription, err = fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(installPlanName)) + subscription, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(installPlanName)) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) installPlanName = subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete or Failed before checking resource presence - fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete, operatorsv1alpha1.InstallPlanPhaseFailed)) + fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete, operatorsv1alpha1.InstallPlanPhaseFailed)) require.NoError(GinkgoT(), err) GinkgoT().Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase) require.Equal(GinkgoT(), tt.expectedPhase, fetchedInstallPlan.Status.Phase) // Ensure correct in-cluster resource(s) - fetchedCSV, err = fetchCSV(crc, mainDeltaCSV.GetName(), ns.GetName(), csvSucceededChecker) + fetchedCSV, err = fetchCSV(crc, mainDeltaCSV.GetName(), generatedNamespace.GetName(), csvSucceededChecker) require.NoError(GinkgoT(), err) // Ensure CRD versions are accurate @@ -1706,7 +1706,7 @@ var _ = Describe("Install Plan", func() { It("AmplifyPermissions", func() { defer func() { - require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) + require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) }() // Build initial catalog @@ -1774,7 +1774,7 @@ var _ = Describe("Install Plan", func() { // Create the catalog sources mainNamedStrategy := newNginxInstallStrategy(genName("dep-"), permissions, clusterPermissions) - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), nil, nil, &mainNamedStrategy) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, nil, &mainNamedStrategy) mainCatalogName := genName("mock-ocs-amplify-") mainManifests := []registry.PackageManifest{ { @@ -1793,18 +1793,18 @@ var _ = Describe("Install Plan", func() { }).Should(Succeed()) }() - _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) + _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) defer cleanupMainCatalogSource() // Attempt to get the catalog source before creating install plan - _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) subscriptionName := genName("sub-nginx-update-perms1") - subscriptionCleanup := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + subscriptionCleanup := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer subscriptionCleanup() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) require.NotNil(GinkgoT(), subscription.Status.InstallPlanRef) @@ -1813,13 +1813,13 @@ var _ = Describe("Install Plan", func() { installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase) // Verify CSV is created - _, err = awaitCSV(crc, ns.GetName(), mainCSV.GetName(), csvSucceededChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), mainCSV.GetName(), csvSucceededChecker) require.NoError(GinkgoT(), err) // Update CatalogSource with a new CSV with more permissions @@ -1860,7 +1860,7 @@ var _ = Describe("Install Plan", func() { // Create the catalog sources updatedNamedStrategy := newNginxInstallStrategy(genName("dep-"), updatedPermissions, updatedClusterPermissions) - updatedCSV := newCSV(mainPackageStable+"-next", ns.GetName(), mainCSV.GetName(), semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, &updatedNamedStrategy) + updatedCSV := newCSV(mainPackageStable+"-next", generatedNamespace.GetName(), mainCSV.GetName(), semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, &updatedNamedStrategy) updatedManifests := []registry.PackageManifest{ { PackageName: mainPackageName, @@ -1872,20 +1872,20 @@ var _ = Describe("Install Plan", func() { } // Update catalog with updated CSV with more permissions - updateInternalCatalog(GinkgoT(), c, crc, mainCatalogName, ns.GetName(), []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV, updatedCSV}, updatedManifests) + updateInternalCatalog(GinkgoT(), c, crc, mainCatalogName, generatedNamespace.GetName(), []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV, updatedCSV}, updatedManifests) - _, err = fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(fetchedInstallPlan.GetName())) + _, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(fetchedInstallPlan.GetName())) require.NoError(GinkgoT(), err) updatedInstallPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedUpdatedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, updatedInstallPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedUpdatedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, updatedInstallPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedUpdatedInstallPlan.Status.Phase) // Wait for csv to update - _, err = awaitCSV(crc, ns.GetName(), updatedCSV.GetName(), csvSucceededChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), updatedCSV.GetName(), csvSucceededChecker) require.NoError(GinkgoT(), err) // If the CSV is succeeded, we successfully rolled out the RBAC changes @@ -1893,7 +1893,7 @@ var _ = Describe("Install Plan", func() { It("AttenuatePermissions", func() { defer func() { - require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) + require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) }() // Build initial catalog @@ -1972,7 +1972,7 @@ var _ = Describe("Install Plan", func() { // Create the catalog sources mainNamedStrategy := newNginxInstallStrategy(genName("dep-"), permissions, clusterPermissions) - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), nil, nil, &mainNamedStrategy) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, nil, &mainNamedStrategy) mainCatalogName := genName("mock-ocs-main-update-perms1-") mainManifests := []registry.PackageManifest{ { @@ -1991,18 +1991,18 @@ var _ = Describe("Install Plan", func() { }).Should(Succeed()) }() - _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) + _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) defer cleanupMainCatalogSource() // Attempt to get the catalog source before creating install plan - _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) subscriptionName := genName("sub-nginx-update-perms1") - subscriptionCleanup := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + subscriptionCleanup := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer subscriptionCleanup() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) require.NotNil(GinkgoT(), subscription.Status.InstallPlanRef) @@ -2011,13 +2011,13 @@ var _ = Describe("Install Plan", func() { installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase) // Verify CSV is created - _, err = awaitCSV(crc, ns.GetName(), mainCSV.GetName(), csvSucceededChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), mainCSV.GetName(), csvSucceededChecker) require.NoError(GinkgoT(), err) // Update CatalogSource with a new CSV with more permissions @@ -2046,12 +2046,12 @@ var _ = Describe("Install Plan", func() { }, } - oldSecrets, err := c.KubernetesInterface().CoreV1().Secrets(ns.GetName()).List(context.Background(), metav1.ListOptions{}) + oldSecrets, err := c.KubernetesInterface().CoreV1().Secrets(generatedNamespace.GetName()).List(context.Background(), metav1.ListOptions{}) require.NoError(GinkgoT(), err, "error listing secrets") // Create the catalog sources updatedNamedStrategy := newNginxInstallStrategy(genName("dep-"), updatedPermissions, updatedClusterPermissions) - updatedCSV := newCSV(mainPackageStable+"-next", ns.GetName(), mainCSV.GetName(), semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, &updatedNamedStrategy) + updatedCSV := newCSV(mainPackageStable+"-next", generatedNamespace.GetName(), mainCSV.GetName(), semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, &updatedNamedStrategy) updatedManifests := []registry.PackageManifest{ { PackageName: mainPackageName, @@ -2063,24 +2063,24 @@ var _ = Describe("Install Plan", func() { } // Update catalog with updated CSV with more permissions - updateInternalCatalog(GinkgoT(), c, crc, mainCatalogName, ns.GetName(), []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV, updatedCSV}, updatedManifests) + updateInternalCatalog(GinkgoT(), c, crc, mainCatalogName, generatedNamespace.GetName(), []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV, updatedCSV}, updatedManifests) // Wait for subscription to update its status - _, err = fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(fetchedInstallPlan.GetName())) + _, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(fetchedInstallPlan.GetName())) require.NoError(GinkgoT(), err) updatedInstallPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedUpdatedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, updatedInstallPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedUpdatedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, updatedInstallPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedUpdatedInstallPlan.Status.Phase) // Wait for csv to update - _, err = awaitCSV(crc, ns.GetName(), updatedCSV.GetName(), csvSucceededChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), updatedCSV.GetName(), csvSucceededChecker) require.NoError(GinkgoT(), err) - newSecrets, err := c.KubernetesInterface().CoreV1().Secrets(ns.GetName()).List(context.Background(), metav1.ListOptions{}) + newSecrets, err := c.KubernetesInterface().CoreV1().Secrets(generatedNamespace.GetName()).List(context.Background(), metav1.ListOptions{}) require.NoError(GinkgoT(), err, "error listing secrets") // Assert that the number of secrets is not increased from updating service account as part of the install plan, @@ -2093,7 +2093,7 @@ var _ = Describe("Install Plan", func() { err = wait.Poll(pollInterval, pollDuration, func() (bool, error) { res, err := c.KubernetesInterface().AuthorizationV1().SubjectAccessReviews().Create(context.Background(), &authorizationv1.SubjectAccessReview{ Spec: authorizationv1.SubjectAccessReviewSpec{ - User: "system:serviceaccount:" + ns.GetName() + ":" + serviceAccountName, + User: "system:serviceaccount:" + generatedNamespace.GetName() + ":" + serviceAccountName, ResourceAttributes: &authorizationv1.ResourceAttributes{ Group: "cluster.com", Version: "v1alpha1", @@ -2118,7 +2118,7 @@ var _ = Describe("Install Plan", func() { It("StopOnCSVModifications", func() { defer func() { - require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) + require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) }() // Build initial catalog @@ -2188,7 +2188,7 @@ var _ = Describe("Install Plan", func() { // Create the catalog sources deploymentName := genName("dep-") mainNamedStrategy := newNginxInstallStrategy(deploymentName, permissions, clusterPermissions) - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), nil, nil, &mainNamedStrategy) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, nil, &mainNamedStrategy) mainCatalogName := genName("mock-ocs-stomper-") mainManifests := []registry.PackageManifest{ { @@ -2207,18 +2207,18 @@ var _ = Describe("Install Plan", func() { }).Should(Succeed()) }() - _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) + _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) defer cleanupMainCatalogSource() // Attempt to get the catalog source before creating install plan - _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) subscriptionName := genName("sub-nginx-stompy-") - subscriptionCleanup := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + subscriptionCleanup := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer subscriptionCleanup() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) require.NotNil(GinkgoT(), subscription.Status.InstallPlanRef) @@ -2227,13 +2227,13 @@ var _ = Describe("Install Plan", func() { installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase) // Verify CSV is created - csv, err := awaitCSV(crc, ns.GetName(), mainCSV.GetName(), csvSucceededChecker) + csv, err := awaitCSV(crc, generatedNamespace.GetName(), mainCSV.GetName(), csvSucceededChecker) require.NoError(GinkgoT(), err) addedEnvVar := corev1.EnvVar{Name: "EXAMPLE", Value: "value"} @@ -2270,16 +2270,16 @@ var _ = Describe("Install Plan", func() { StrategyName: operatorsv1alpha1.InstallStrategyNameDeployment, StrategySpec: modifiedDetails, } - _, err = crc.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).Update(context.Background(), csv, metav1.UpdateOptions{}) + _, err = crc.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).Update(context.Background(), csv, metav1.UpdateOptions{}) require.NoError(GinkgoT(), err) // Wait for csv to update - _, err = awaitCSV(crc, ns.GetName(), csv.GetName(), csvSucceededChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), csv.GetName(), csvSucceededChecker) require.NoError(GinkgoT(), err) // Should have the updated env var err = wait.Poll(pollInterval, pollDuration, func() (bool, error) { - dep, err := c.GetDeployment(ns.GetName(), deploymentName) + dep, err := c.GetDeployment(generatedNamespace.GetName(), deploymentName) if err != nil { return false, nil } @@ -2297,7 +2297,7 @@ var _ = Describe("Install Plan", func() { // Create the catalog sources // Updated csv has the same deployment strategy as main - updatedCSV := newCSV(mainPackageStable+"-next", ns.GetName(), mainCSV.GetName(), semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, &mainNamedStrategy) + updatedCSV := newCSV(mainPackageStable+"-next", generatedNamespace.GetName(), mainCSV.GetName(), semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, &mainNamedStrategy) updatedManifests := []registry.PackageManifest{ { PackageName: mainPackageName, @@ -2309,24 +2309,24 @@ var _ = Describe("Install Plan", func() { } // Update catalog with updated CSV with more permissions - updateInternalCatalog(GinkgoT(), c, crc, mainCatalogName, ns.GetName(), []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV, updatedCSV}, updatedManifests) + updateInternalCatalog(GinkgoT(), c, crc, mainCatalogName, generatedNamespace.GetName(), []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV, updatedCSV}, updatedManifests) - _, err = fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(fetchedInstallPlan.GetName())) + _, err = fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(fetchedInstallPlan.GetName())) require.NoError(GinkgoT(), err) updatedInstallPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedUpdatedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, updatedInstallPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedUpdatedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, updatedInstallPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedUpdatedInstallPlan.Status.Phase) // Wait for csv to update - _, err = awaitCSV(crc, ns.GetName(), updatedCSV.GetName(), csvSucceededChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), updatedCSV.GetName(), csvSucceededChecker) require.NoError(GinkgoT(), err) // Should have created deployment and stomped on the env changes - updatedDep, err := c.GetDeployment(ns.GetName(), deploymentName) + updatedDep, err := c.GetDeployment(generatedNamespace.GetName(), deploymentName) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), updatedDep) @@ -2416,8 +2416,8 @@ var _ = Describe("Install Plan", func() { }, } - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, nil) - betaCSV := newCSV(mainPackageBeta, ns.GetName(), mainPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{updatedCRD}, nil, nil) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, nil) + betaCSV := newCSV(mainPackageBeta, generatedNamespace.GetName(), mainPackageStable, semver.MustParse("0.2.0"), []apiextensions.CustomResourceDefinition{updatedCRD}, nil, nil) // Defer CRD clean up defer func() { @@ -2430,7 +2430,7 @@ var _ = Describe("Install Plan", func() { }() defer func() { - require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) + require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) }() mainCatalogName := genName("mock-ocs-main-update-") @@ -2447,17 +2447,17 @@ var _ = Describe("Install Plan", func() { } // Create the catalog sources - _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) + _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) defer cleanupMainCatalogSource() // Attempt to get the catalog source before creating install plan - _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) subscriptionName := genName("sub-nginx-update-") - createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) require.NotNil(GinkgoT(), subscription.Status.InstallPlanRef) @@ -2466,20 +2466,20 @@ var _ = Describe("Install Plan", func() { installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase) // Fetch installplan again to check for unnecessary control loops - fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, fetchedInstallPlan.GetName(), ns.GetName(), func(fip *operatorsv1alpha1.InstallPlan) bool { + fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, fetchedInstallPlan.GetName(), generatedNamespace.GetName(), func(fip *operatorsv1alpha1.InstallPlan) bool { Expect(equality.Semantic.DeepEqual(fetchedInstallPlan, fip)).Should(BeTrue(), diff.ObjectDiff(fetchedInstallPlan, fip)) return true }) require.NoError(GinkgoT(), err) // Verify CSV is created - _, err = awaitCSV(crc, ns.GetName(), mainCSV.GetName(), csvAnyChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), mainCSV.GetName(), csvAnyChecker) require.NoError(GinkgoT(), err) mainManifests = []registry.PackageManifest{ @@ -2492,18 +2492,18 @@ var _ = Describe("Install Plan", func() { }, } - updateInternalCatalog(GinkgoT(), c, crc, mainCatalogName, ns.GetName(), []apiextensions.CustomResourceDefinition{updatedCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV, betaCSV}, mainManifests) + updateInternalCatalog(GinkgoT(), c, crc, mainCatalogName, generatedNamespace.GetName(), []apiextensions.CustomResourceDefinition{updatedCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV, betaCSV}, mainManifests) // Wait for subscription to update - updatedSubscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(fetchedInstallPlan.GetName())) + updatedSubscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanDifferentChecker(fetchedInstallPlan.GetName())) require.NoError(GinkgoT(), err) // Verify installplan created and installed - fetchedUpdatedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, updatedSubscription.Status.InstallPlanRef.Name, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedUpdatedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, updatedSubscription.Status.InstallPlanRef.Name, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) require.NotEqual(GinkgoT(), fetchedInstallPlan.GetName(), fetchedUpdatedInstallPlan.GetName()) // Wait for csv to update - _, err = awaitCSV(crc, ns.GetName(), betaCSV.GetName(), csvAnyChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), betaCSV.GetName(), csvAnyChecker) require.NoError(GinkgoT(), err) // Get the CRD to see if it is updated @@ -2535,7 +2535,7 @@ var _ = Describe("Install Plan", func() { It("UpdatePreexistingCRDFailed", func() { defer func() { - require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) + require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) }() mainPackageName := genName("nginx-update2-") @@ -2630,7 +2630,7 @@ var _ = Describe("Install Plan", func() { require.NoError(GinkgoT(), err) defer cleanupCRD() - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), nil, nil, nil) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, nil, nil) mainCatalogName := genName("mock-ocs-main-update2-") @@ -2646,18 +2646,18 @@ var _ = Describe("Install Plan", func() { } // Create the catalog sources - _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{updatedCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) + _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, []apiextensions.CustomResourceDefinition{updatedCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) defer cleanupMainCatalogSource() // Attempt to get the catalog source before creating install plan - _, err = fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err = fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) subscriptionName := genName("sub-nginx-update2-") - subscriptionCleanup := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + subscriptionCleanup := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer subscriptionCleanup() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) require.NotNil(GinkgoT(), subscription.Status.InstallPlanRef) @@ -2666,20 +2666,20 @@ var _ = Describe("Install Plan", func() { installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase) // Fetch installplan again to check for unnecessary control loops - fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, fetchedInstallPlan.GetName(), ns.GetName(), func(fip *operatorsv1alpha1.InstallPlan) bool { + fetchedInstallPlan, err = fetchInstallPlan(GinkgoT(), crc, fetchedInstallPlan.GetName(), generatedNamespace.GetName(), func(fip *operatorsv1alpha1.InstallPlan) bool { Expect(equality.Semantic.DeepEqual(fetchedInstallPlan, fip)).Should(BeTrue(), diff.ObjectDiff(fetchedInstallPlan, fip)) return true }) require.NoError(GinkgoT(), err) // Verify CSV is created - _, err = awaitCSV(crc, ns.GetName(), mainCSV.GetName(), csvAnyChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), mainCSV.GetName(), csvAnyChecker) require.NoError(GinkgoT(), err) // Get the CRD to see if it is updated @@ -2780,33 +2780,33 @@ var _ = Describe("Install Plan", func() { namedStrategy := newNginxInstallStrategy(genName("dep-"), permissions, clusterPermissions) // Create new CSVs - stableCSV := newCSV(stableCSVName, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, &namedStrategy) + stableCSV := newCSV(stableCSVName, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, &namedStrategy) defer func() { - require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) + require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) }() // Create CatalogSource mainCatalogSourceName := genName("nginx-catalog") - _, cleanupCatalogSource := createInternalCatalogSource(c, crc, mainCatalogSourceName, ns.GetName(), manifests, []apiextensions.CustomResourceDefinition{crd}, []operatorsv1alpha1.ClusterServiceVersion{stableCSV}) + _, cleanupCatalogSource := createInternalCatalogSource(c, crc, mainCatalogSourceName, generatedNamespace.GetName(), manifests, []apiextensions.CustomResourceDefinition{crd}, []operatorsv1alpha1.ClusterServiceVersion{stableCSV}) defer cleanupCatalogSource() // Attempt to get CatalogSource - _, err := fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, mainCatalogSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) subscriptionName := genName("sub-nginx-") - subscriptionCleanup := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogSourceName, packageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + subscriptionCleanup := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogSourceName, packageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer subscriptionCleanup() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) installPlanName := subscription.Status.InstallPlanRef.Name // Attempt to get InstallPlan - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseFailed, operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseFailed, operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) require.NotEqual(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseFailed, fetchedInstallPlan.Status.Phase, "InstallPlan failed") @@ -2934,8 +2934,8 @@ var _ = Describe("Install Plan", func() { } } }() - GinkgoT().Logf("Deleting CSV '%v' in namespace %v", stableCSVName, ns.GetName()) - require.NoError(GinkgoT(), crc.OperatorsV1alpha1().ClusterServiceVersions(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) + GinkgoT().Logf("Deleting CSV '%v' in namespace %v", stableCSVName, generatedNamespace.GetName()) + require.NoError(GinkgoT(), crc.OperatorsV1alpha1().ClusterServiceVersions(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) select { case <-done: break @@ -2947,9 +2947,9 @@ var _ = Describe("Install Plan", func() { require.Emptyf(GinkgoT(), createdClusterRoleBindingNames, "unexpected cluster role binding remain: %v", createdClusterRoleBindingNames) Eventually(func() error { - _, err := c.GetServiceAccount(ns.GetName(), serviceAccountName) + _, err := c.GetServiceAccount(generatedNamespace.GetName(), serviceAccountName) if err == nil { - return fmt.Errorf("The %v/%v ServiceAccount should have been deleted", ns.GetName(), serviceAccountName) + return fmt.Errorf("The %v/%v ServiceAccount should have been deleted", generatedNamespace.GetName(), serviceAccountName) } if !apierrors.IsNotFound(err) { return err @@ -3021,7 +3021,7 @@ var _ = Describe("Install Plan", func() { packageName := genName("nginx-") stableChannel := "stable" packageNameStable := packageName + "-" + stableChannel - csv := newCSV(packageNameStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, nil) + csv := newCSV(packageNameStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, nil) // Create PackageManifests manifests := []registry.PackageManifest{ @@ -3036,25 +3036,25 @@ var _ = Describe("Install Plan", func() { // Create the CatalogSource catalogSourceName := genName("mock-nginx-") - _, cleanupCatalogSource := createInternalCatalogSource(c, crc, catalogSourceName, ns.GetName(), manifests, []apiextensions.CustomResourceDefinition{crd}, []operatorsv1alpha1.ClusterServiceVersion{csv}) + _, cleanupCatalogSource := createInternalCatalogSource(c, crc, catalogSourceName, generatedNamespace.GetName(), manifests, []apiextensions.CustomResourceDefinition{crd}, []operatorsv1alpha1.ClusterServiceVersion{csv}) defer cleanupCatalogSource() // Attempt to get the catalog source before creating install plan - _, err := fetchCatalogSourceOnStatus(crc, catalogSourceName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, catalogSourceName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) subscriptionName := genName("sub-nginx-") - cleanupSubscription := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, catalogSourceName, packageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + cleanupSubscription := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, catalogSourceName, packageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer cleanupSubscription() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete, operatorsv1alpha1.InstallPlanPhaseFailed)) + fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete, operatorsv1alpha1.InstallPlanPhaseFailed)) require.NoError(GinkgoT(), err) GinkgoT().Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase) @@ -3085,12 +3085,12 @@ var _ = Describe("Install Plan", func() { require.NoError(GinkgoT(), err) deleteOpts := &metav1.DeleteOptions{} defer func() { - require.NoError(GinkgoT(), c.KubernetesInterface().CoreV1().Namespaces().Delete(context.Background(), ns.GetName(), *deleteOpts)) + require.NoError(GinkgoT(), c.KubernetesInterface().CoreV1().Namespaces().Delete(context.Background(), generatedNamespace.GetName(), *deleteOpts)) }() og := &operatorsv1.OperatorGroup{} og.SetName("og") - _, err = crc.OperatorsV1().OperatorGroups(ns.GetName()).Create(context.Background(), og, metav1.CreateOptions{}) + _, err = crc.OperatorsV1().OperatorGroups(generatedNamespace.GetName()).Create(context.Background(), og, metav1.CreateOptions{}) require.NoError(GinkgoT(), err) mainPackageName := genName("nginx-") @@ -3102,11 +3102,11 @@ var _ = Describe("Install Plan", func() { stableChannel := "stable" dependentCRD := newCRD(genName("ins-")) - mainCSV := newCSV(mainPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) - dependentCSV := newCSV(dependentPackageStable, ns.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) + mainCSV := newCSV(mainPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, []apiextensions.CustomResourceDefinition{dependentCRD}, nil) + dependentCSV := newCSV(dependentPackageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{dependentCRD}, nil, nil) defer func() { - require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(ns.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) + require.NoError(GinkgoT(), crc.OperatorsV1alpha1().Subscriptions(generatedNamespace.GetName()).DeleteCollection(context.Background(), metav1.DeleteOptions{}, metav1.ListOptions{})) }() dependentCatalogName := genName("mock-ocs-dependent-") @@ -3141,11 +3141,11 @@ var _ = Describe("Install Plan", func() { }() // Create the dependent catalog source - _, cleanupDependentCatalogSource := createInternalCatalogSource(c, crc, dependentCatalogName, ns.GetName(), dependentManifests, []apiextensions.CustomResourceDefinition{dependentCRD}, []operatorsv1alpha1.ClusterServiceVersion{dependentCSV}) + _, cleanupDependentCatalogSource := createInternalCatalogSource(c, crc, dependentCatalogName, generatedNamespace.GetName(), dependentManifests, []apiextensions.CustomResourceDefinition{dependentCRD}, []operatorsv1alpha1.ClusterServiceVersion{dependentCSV}) defer cleanupDependentCatalogSource() // Attempt to get the catalog source before creating install plan - dependentCatalogSource, err := fetchCatalogSourceOnStatus(crc, dependentCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + dependentCatalogSource, err := fetchCatalogSourceOnStatus(crc, dependentCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) // Create the alt dependent catalog sources @@ -3170,11 +3170,11 @@ var _ = Describe("Install Plan", func() { } addressSource.SetName(genName("alt-dep-")) - _, err := crc.OperatorsV1alpha1().CatalogSources(ns.GetName()).Create(context.Background(), addressSource, metav1.CreateOptions{}) + _, err := crc.OperatorsV1alpha1().CatalogSources(generatedNamespace.GetName()).Create(context.Background(), addressSource, metav1.CreateOptions{}) require.NoError(GinkgoT(), err) // Attempt to get the catalog source before creating install plan - _, err = fetchCatalogSourceOnStatus(crc, addressSource.GetName(), ns.GetName(), catalogSourceRegistryPodSynced()) + _, err = fetchCatalogSourceOnStatus(crc, addressSource.GetName(), generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) wg.Done() }(i) @@ -3182,32 +3182,32 @@ var _ = Describe("Install Plan", func() { wg.Wait() // Create the main catalog source - _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, ns.GetName(), mainManifests, nil, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) + _, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, generatedNamespace.GetName(), mainManifests, nil, []operatorsv1alpha1.ClusterServiceVersion{mainCSV}) defer cleanupMainCatalogSource() // Attempt to get the catalog source before creating install plan - _, err = fetchCatalogSourceOnStatus(crc, mainCatalogName, ns.GetName(), catalogSourceRegistryPodSynced()) + _, err = fetchCatalogSourceOnStatus(crc, mainCatalogName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) require.NoError(GinkgoT(), err) subscriptionName := genName("sub-nginx-") - subscriptionCleanup := createSubscriptionForCatalog(crc, ns.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) + subscriptionCleanup := createSubscriptionForCatalog(crc, generatedNamespace.GetName(), subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic) defer subscriptionCleanup() - subscription, err := fetchSubscription(crc, ns.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) + subscription, err := fetchSubscription(crc, generatedNamespace.GetName(), subscriptionName, subscriptionHasInstallPlanChecker()) require.NoError(GinkgoT(), err) require.NotNil(GinkgoT(), subscription) installPlanName := subscription.Status.InstallPlanRef.Name // Wait for InstallPlan to be status: Complete before checking resource presence - fetchedInstallPlan, err := fetchInstallPlanWithNamespace(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) + fetchedInstallPlan, err := fetchInstallPlanWithNamespace(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete)) require.NoError(GinkgoT(), err) log(fmt.Sprintf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase)) require.Equal(GinkgoT(), operatorsv1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase) // Verify CSV is created - _, err = awaitCSV(crc, ns.GetName(), mainCSV.GetName(), csvSucceededChecker) + _, err = awaitCSV(crc, generatedNamespace.GetName(), mainCSV.GetName(), csvSucceededChecker) require.NoError(GinkgoT(), err) // Make sure to clean up the installed CRD @@ -3216,7 +3216,7 @@ var _ = Describe("Install Plan", func() { }() // ensure there is only one installplan - ips, err := crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).List(context.Background(), metav1.ListOptions{}) + ips, err := crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).List(context.Background(), metav1.ListOptions{}) require.NoError(GinkgoT(), err) require.Equal(GinkgoT(), 1, len(ips.Items), "If this test fails it should be taken seriously and not treated as a flake. \n%v", ips.Items) }) @@ -3238,22 +3238,22 @@ var _ = Describe("Install Plan", func() { // Create InstallPlan installPlanName = "ip" - ip := newInstallPlanWithDummySteps(installPlanName, ns.GetName(), operatorsv1alpha1.InstallPlanPhaseInstalling) - outIP, err := crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).Create(context.Background(), ip, metav1.CreateOptions{}) + ip := newInstallPlanWithDummySteps(installPlanName, generatedNamespace.GetName(), operatorsv1alpha1.InstallPlanPhaseInstalling) + outIP, err := crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).Create(context.Background(), ip, metav1.CreateOptions{}) Expect(err).NotTo(HaveOccurred()) Expect(outIP).NotTo(BeNil()) // The status gets ignored on create so we need to update it else the InstallPlan sync ignores // InstallPlans without any steps or bundle lookups outIP.Status = ip.Status - _, err = crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).UpdateStatus(context.Background(), outIP, metav1.UpdateOptions{}) + _, err = crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).UpdateStatus(context.Background(), outIP, metav1.UpdateOptions{}) Expect(err).NotTo(HaveOccurred()) }) AfterEach(func() { - err := crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).Delete(context.Background(), installPlanName, metav1.DeleteOptions{}) + err := crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).Delete(context.Background(), installPlanName, metav1.DeleteOptions{}) Expect(err).NotTo(HaveOccurred()) - err = c.KubernetesInterface().CoreV1().Namespaces().Delete(context.Background(), ns.GetName(), metav1.DeleteOptions{}) + err = c.KubernetesInterface().CoreV1().Namespaces().Delete(context.Background(), generatedNamespace.GetName(), metav1.DeleteOptions{}) Expect(err).ToNot(HaveOccurred()) }) @@ -3265,7 +3265,7 @@ var _ = Describe("Install Plan", func() { Message: "no operator group found that is managing this namespace"} Eventually(func() bool { - fetchedInstallPlan, err := fetchInstallPlanWithNamespace(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseInstalling)) + fetchedInstallPlan, err := fetchInstallPlanWithNamespace(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseInstalling)) if err != nil || fetchedInstallPlan == nil { return false } @@ -3279,10 +3279,10 @@ var _ = Describe("Install Plan", func() { og := &operatorsv1.OperatorGroup{ ObjectMeta: metav1.ObjectMeta{ Name: "og", - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, Spec: operatorsv1.OperatorGroupSpec{ - TargetNamespaces: []string{ns.GetName()}, + TargetNamespaces: []string{generatedNamespace.GetName()}, }, } Eventually(func() error { @@ -3298,11 +3298,11 @@ var _ = Describe("Install Plan", func() { }, 1*time.Minute, interval, - ).Should(ContainElement(ns.GetName())) + ).Should(ContainElement(generatedNamespace.GetName())) // check that the condition has been cleared up Eventually(func() (bool, error) { - fetchedInstallPlan, err := fetchInstallPlanWithNamespace(GinkgoT(), crc, installPlanName, ns.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseInstalling)) + fetchedInstallPlan, err := fetchInstallPlanWithNamespace(GinkgoT(), crc, installPlanName, generatedNamespace.GetName(), buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseInstalling)) if err != nil { return false, err } @@ -3320,26 +3320,10 @@ var _ = Describe("Install Plan", func() { It("compresses installplan step resource manifests to configmap references", func() { // Test ensures that all steps for index-based catalogs are references to configmaps. This avoids the problem // of installplans growing beyond the etcd size limit when manifests are written to the ip status. - - ns, err := c.KubernetesInterface().CoreV1().Namespaces().Create(context.Background(), &corev1.Namespace{ - ObjectMeta: metav1.ObjectMeta{ - Name: genName("ns-"), - }, - }, metav1.CreateOptions{}) - Expect(err).ToNot(HaveOccurred()) - - og := &operatorsv1.OperatorGroup{} - og.SetName("og") - _, err = crc.OperatorsV1().OperatorGroups(ns.GetName()).Create(context.Background(), og, metav1.CreateOptions{}) - Expect(err).ToNot(HaveOccurred()) - - deleteOpts := &metav1.DeleteOptions{} - defer c.KubernetesInterface().CoreV1().Namespaces().Delete(context.Background(), ns.GetName(), *deleteOpts) - catsrc := &operatorsv1alpha1.CatalogSource{ ObjectMeta: metav1.ObjectMeta{ Name: genName("kiali-"), - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": "kaili-catalog"}, }, Spec: operatorsv1alpha1.CatalogSourceSpec{ @@ -3350,7 +3334,7 @@ var _ = Describe("Install Plan", func() { }, }, } - catsrc, err = crc.OperatorsV1alpha1().CatalogSources(catsrc.GetNamespace()).Create(context.Background(), catsrc, metav1.CreateOptions{}) + catsrc, err := crc.OperatorsV1alpha1().CatalogSources(catsrc.GetNamespace()).Create(context.Background(), catsrc, metav1.CreateOptions{}) Expect(err).ToNot(HaveOccurred()) // Wait for the CatalogSource to be ready @@ -3407,27 +3391,17 @@ var _ = Describe("Install Plan", func() { }) It("limits installed resources if the scoped serviceaccount has no permissions", func() { - - By("creating a scoped serviceaccount specified in the operatorgroup") - ns, err := c.KubernetesInterface().CoreV1().Namespaces().Create(context.Background(), &corev1.Namespace{ - ObjectMeta: metav1.ObjectMeta{ - Name: genName("ns-"), - }, - }, metav1.CreateOptions{}) - Expect(err).ToNot(HaveOccurred()) - defer c.KubernetesInterface().CoreV1().Namespaces().Delete(context.Background(), ns.GetName(), metav1.DeleteOptions{}) - // create SA sa := &corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ Name: genName("sa-"), - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, } - _, err = c.KubernetesInterface().CoreV1().ServiceAccounts(ns.GetName()).Create(context.Background(), sa, metav1.CreateOptions{}) + _, err := c.KubernetesInterface().CoreV1().ServiceAccounts(generatedNamespace.GetName()).Create(context.Background(), sa, metav1.CreateOptions{}) Expect(err).ToNot(HaveOccurred()) // Create token secret for the serviceaccount - _, cleanupSE := newTokenSecret(c, ns.GetName(), sa.GetName()) + _, cleanupSE := newTokenSecret(c, generatedNamespace.GetName(), sa.GetName()) defer cleanupSE() // role has no explicit permissions @@ -3462,24 +3436,22 @@ var _ = Describe("Install Plan", func() { Expect(err).ToNot(HaveOccurred()) defer c.KubernetesInterface().RbacV1().ClusterRoles().Delete(context.Background(), role.GetName(), metav1.DeleteOptions{}) - // create operator group referencing the SA - og := &operatorsv1.OperatorGroup{ - ObjectMeta: metav1.ObjectMeta{ - Name: genName("og-"), - Namespace: ns.GetName(), - }, - Spec: operatorsv1.OperatorGroupSpec{ - ServiceAccountName: sa.GetName(), - }, - } - _, err = crc.OperatorsV1().OperatorGroups(ns.GetName()).Create(context.Background(), og, metav1.CreateOptions{}) - Expect(err).ToNot(HaveOccurred()) + // Update the existing OG to use the ServiceAccount + Eventually(func() error { + existingOG, err := crc.OperatorsV1().OperatorGroups(generatedNamespace.GetName()).Get(context.Background(), fmt.Sprintf("%s-operatorgroup", generatedNamespace.GetName()), metav1.GetOptions{}) + if err != nil { + return err + } + existingOG.Spec.ServiceAccountName = sa.GetName() + _, err = crc.OperatorsV1().OperatorGroups(generatedNamespace.GetName()).Update(context.Background(), existingOG, metav1.UpdateOptions{}) + return err + }).Should(Succeed()) // Wait for the OperatorGroup to be synced and have a status.ServiceAccountRef // before moving on. Otherwise the catalog operator treats it as an invalid OperatorGroup // and the InstallPlan is resynced Eventually(func() (*corev1.ObjectReference, error) { - outOG, err := crc.OperatorsV1().OperatorGroups(ns.GetName()).Get(context.Background(), og.Name, metav1.GetOptions{}) + outOG, err := crc.OperatorsV1().OperatorGroups(generatedNamespace.GetName()).Get(context.Background(), fmt.Sprintf("%s-operatorgroup", generatedNamespace.GetName()), metav1.GetOptions{}) if err != nil { return nil, err } @@ -3534,7 +3506,7 @@ var _ = Describe("Install Plan", func() { By("using the OLM client to create the CRD") plan := &operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: genName("ip-"), }, Spec: operatorsv1alpha1.InstallPlanSpec{ @@ -3576,7 +3548,7 @@ var _ = Describe("Install Plan", func() { // delete installplan, then create one with an additional resource that the SA does not have permissions to create // expect installplan to fail By("failing to install resources that are not explicitly allowed in the SA") - err = crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).Delete(context.Background(), plan.GetName(), metav1.DeleteOptions{}) + err = crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).Delete(context.Background(), plan.GetName(), metav1.DeleteOptions{}) Expect(err).ToNot(HaveOccurred()) service := &corev1.Service{ @@ -3585,7 +3557,7 @@ var _ = Describe("Install Plan", func() { APIVersion: "v1", }, ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: "test-service", }, Spec: corev1.ServiceSpec{ @@ -3604,7 +3576,7 @@ var _ = Describe("Install Plan", func() { newPlan := &operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: genName("ip-"), }, Spec: operatorsv1alpha1.InstallPlanSpec{ @@ -3645,33 +3617,21 @@ var _ = Describe("Install Plan", func() { }).Should(HavePhase(operatorsv1alpha1.InstallPlanPhaseFailed)) Expect(client.IgnoreNotFound(ctx.Ctx().Client().Delete(context.Background(), &crd))).To(Succeed()) - Eventually(func() error { - return client.IgnoreNotFound(ctx.Ctx().Client().Delete(context.Background(), ns)) - }, timeout, interval).Should(Succeed(), "could not delete Namespace") }) It("uses the correct client when installing resources from an installplan", func() { - By("creating a scoped serviceaccount specifified in the operatorgroup") - ns, err := c.KubernetesInterface().CoreV1().Namespaces().Create(context.Background(), &corev1.Namespace{ - ObjectMeta: metav1.ObjectMeta{ - Name: genName("ns-"), - }, - }, metav1.CreateOptions{}) - Expect(err).ToNot(HaveOccurred()) - defer c.KubernetesInterface().CoreV1().Namespaces().Delete(context.Background(), ns.GetName(), metav1.DeleteOptions{}) - // create SA sa := &corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ Name: genName("sa-"), - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), }, } - _, err = c.KubernetesInterface().CoreV1().ServiceAccounts(ns.GetName()).Create(context.Background(), sa, metav1.CreateOptions{}) + _, err := c.KubernetesInterface().CoreV1().ServiceAccounts(generatedNamespace.GetName()).Create(context.Background(), sa, metav1.CreateOptions{}) Expect(err).ToNot(HaveOccurred()) // Create token secret for the serviceaccount - _, cleanupSE := newTokenSecret(c, ns.GetName(), sa.GetName()) + _, cleanupSE := newTokenSecret(c, generatedNamespace.GetName(), sa.GetName()) defer cleanupSE() // see https://github.com/operator-framework/operator-lifecycle-manager/blob/master/doc/design/scoped-operator-install.md @@ -3731,24 +3691,22 @@ var _ = Describe("Install Plan", func() { Expect(err).ToNot(HaveOccurred()) defer c.KubernetesInterface().RbacV1().ClusterRoles().Delete(context.Background(), role.GetName(), metav1.DeleteOptions{}) - // create operator group referencing the SA - og := &operatorsv1.OperatorGroup{ - ObjectMeta: metav1.ObjectMeta{ - Name: genName("og-"), - Namespace: ns.GetName(), - }, - Spec: operatorsv1.OperatorGroupSpec{ - ServiceAccountName: sa.GetName(), - }, - } - _, err = crc.OperatorsV1().OperatorGroups(ns.GetName()).Create(context.Background(), og, metav1.CreateOptions{}) - Expect(err).ToNot(HaveOccurred()) + // Update the existing OG to use the ServiceAccount + Eventually(func() error { + existingOG, err := crc.OperatorsV1().OperatorGroups(generatedNamespace.GetName()).Get(context.Background(), fmt.Sprintf("%s-operatorgroup", generatedNamespace.GetName()), metav1.GetOptions{}) + if err != nil { + return err + } + existingOG.Spec.ServiceAccountName = sa.GetName() + _, err = crc.OperatorsV1().OperatorGroups(generatedNamespace.GetName()).Update(context.Background(), existingOG, metav1.UpdateOptions{}) + return err + }).Should(Succeed()) // Wait for the OperatorGroup to be synced and have a status.ServiceAccountRef // before moving on. Otherwise the catalog operator treats it as an invalid OperatorGroup // and the InstallPlan is resynced Eventually(func() (*corev1.ObjectReference, error) { - outOG, err := crc.OperatorsV1().OperatorGroups(ns.GetName()).Get(context.Background(), og.Name, metav1.GetOptions{}) + outOG, err := crc.OperatorsV1().OperatorGroups(generatedNamespace.GetName()).Get(context.Background(), fmt.Sprintf("%s-operatorgroup", generatedNamespace.GetName()), metav1.GetOptions{}) if err != nil { return nil, err } @@ -3790,7 +3748,7 @@ var _ = Describe("Install Plan", func() { }, }, } - csv := newCSV("stable", ns.GetName(), "", semver.MustParse("0.1.0"), nil, nil, nil) + csv := newCSV("stable", generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), nil, nil, nil) // Defer CRD clean up defer func() { @@ -3811,7 +3769,7 @@ var _ = Describe("Install Plan", func() { plan := &operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: genName("ip-"), }, Spec: operatorsv1alpha1.InstallPlanSpec{ @@ -3861,12 +3819,12 @@ var _ = Describe("Install Plan", func() { // delete installplan, and create one with just a CSV resource which should succeed By("installing additional resources that are allowed in the SA") - err = crc.OperatorsV1alpha1().InstallPlans(ns.GetName()).Delete(context.Background(), plan.GetName(), metav1.DeleteOptions{}) + err = crc.OperatorsV1alpha1().InstallPlans(generatedNamespace.GetName()).Delete(context.Background(), plan.GetName(), metav1.DeleteOptions{}) Expect(err).ToNot(HaveOccurred()) newPlan := &operatorsv1alpha1.InstallPlan{ ObjectMeta: metav1.ObjectMeta{ - Namespace: ns.GetName(), + Namespace: generatedNamespace.GetName(), Name: genName("ip-"), }, Spec: operatorsv1alpha1.InstallPlanSpec{ diff --git a/test/e2e/operator_groups_e2e_test.go b/test/e2e/operator_groups_e2e_test.go index 940b06e5e1..6d37e331bb 100644 --- a/test/e2e/operator_groups_e2e_test.go +++ b/test/e2e/operator_groups_e2e_test.go @@ -36,17 +36,21 @@ import ( var _ = Describe("Operator Group", func() { var ( - c operatorclient.ClientInterface - crc versioned.Interface + c operatorclient.ClientInterface + crc versioned.Interface + generatedNamespace corev1.Namespace ) BeforeEach(func() { c = ctx.Ctx().KubeClient() crc = ctx.Ctx().OperatorClient() + + generatedNamespace = SetupGeneratedTestNamespace(genName("operator-group-e2e-")) + }) AfterEach(func() { - TearDown(testNamespace) + TearDown(generatedNamespace.GetName()) }) It("e2e functionality", func() { @@ -71,7 +75,7 @@ var _ = Describe("Operator Group", func() { csvName := genName("another-csv-") // must be lowercase for DNS-1123 validation - opGroupNamespace := genName(testNamespace + "-") + opGroupNamespace := genName(generatedNamespace.GetName() + "-") matchingLabel := map[string]string{"inGroup": opGroupNamespace} otherNamespaceName := genName(opGroupNamespace + "-") bothNamespaceNames := opGroupNamespace + "," + otherNamespaceName @@ -232,7 +236,7 @@ var _ = Describe("Operator Group", func() { if apierrors.IsNotFound(fetchErr) { return false, nil } - log(fmt.Sprintf("Error (in %v): %v", testNamespace, fetchErr.Error())) + log(fmt.Sprintf("Error (in %v): %v", generatedNamespace.GetName(), fetchErr.Error())) return false, fetchErr } if checkOperatorGroupAnnotations(fetchedCSV, &operatorGroup, true, bothNamespaceNames) == nil { @@ -891,9 +895,9 @@ var _ = Describe("Operator Group", func() { kvgA := fmt.Sprintf("%s.%s.%s", crdA.Spec.Names.Kind, crdA.Spec.Versions[0].Name, crdA.Spec.Group) kvgB := fmt.Sprintf("%s.%s.%s", crdB.Spec.Names.Kind, crdB.Spec.Versions[0].Name, crdB.Spec.Group) kvgD := fmt.Sprintf("%s.%s.%s", crdD.Spec.Names.Kind, crdD.Spec.Versions[0].Name, crdD.Spec.Group) - csvA := newCSV(pkgAStable, testNamespace, "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crdA}, nil, &strategyA) - csvB := newCSV(pkgBStable, testNamespace, "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crdA, crdB}, nil, &strategyB) - csvD := newCSV(pkgDStable, testNamespace, "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crdD}, nil, &strategyD) + csvA := newCSV(pkgAStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crdA}, nil, &strategyA) + csvB := newCSV(pkgBStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crdA, crdB}, nil, &strategyB) + csvD := newCSV(pkgDStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crdD}, nil, &strategyD) // Create namespaces nsA, nsB, nsC, nsD, nsE := genName("a-"), genName("b-"), genName("c-"), genName("d-"), genName("e-") @@ -1110,7 +1114,7 @@ var _ = Describe("Operator Group", func() { require.NoError(GinkgoT(), awaitAnnotations(GinkgoT(), q, map[string]string{v1.OperatorGroupProvidedAPIsAnnotationKey: ""})) // Ensure csvA's deployment is deleted - require.NoError(GinkgoT(), waitForDeploymentToDelete(testNamespace, c, pkgAStable)) + require.NoError(GinkgoT(), waitForDeploymentToDelete(generatedNamespace.GetName(), c, pkgAStable)) // Await csvB's success _, err = awaitCSV(crc, nsB, csvB.GetName(), csvSucceededChecker) @@ -1164,8 +1168,8 @@ var _ = Describe("Operator Group", func() { crdB := newCRD(genName(pkgB)) kvgA := fmt.Sprintf("%s.%s.%s", crdA.Spec.Names.Kind, crdA.Spec.Versions[0].Name, crdA.Spec.Group) kvgB := fmt.Sprintf("%s.%s.%s", crdB.Spec.Names.Kind, crdB.Spec.Versions[0].Name, crdB.Spec.Group) - csvA := newCSV(pkgAStable, testNamespace, "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crdA}, nil, &strategyA) - csvB := newCSV(pkgBStable, testNamespace, "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crdB}, nil, &strategyB) + csvA := newCSV(pkgAStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crdA}, nil, &strategyA) + csvB := newCSV(pkgBStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crdB}, nil, &strategyB) // Create namespaces nsA, nsB, nsC, nsD := genName("a-"), genName("b-"), genName("c-"), genName("d-") @@ -1344,7 +1348,7 @@ var _ = Describe("Operator Group", func() { csvName := genName("another-csv-") // must be lowercase for DNS-1123 validation - opGroupNamespace := testNamespace + opGroupNamespace := generatedNamespace.GetName() matchingLabel := map[string]string{"inGroup": opGroupNamespace} otherNamespaceName := genName(opGroupNamespace + "-") GinkgoT().Log("Creating CRD") @@ -1353,8 +1357,7 @@ var _ = Describe("Operator Group", func() { cleanupCRD, err := createCRD(c, mainCRD) require.NoError(GinkgoT(), err) defer cleanupCRD() - GinkgoT().Logf("Getting default operator group 'global-operators' installed via operatorgroup-default.yaml %v", opGroupNamespace) - operatorGroup, err := crc.OperatorsV1().OperatorGroups(opGroupNamespace).Get(context.TODO(), "global-operators", metav1.GetOptions{}) + operatorGroup, err := crc.OperatorsV1().OperatorGroups(opGroupNamespace).Get(context.TODO(), fmt.Sprintf("%v-operatorgroup", opGroupNamespace), metav1.GetOptions{}) require.NoError(GinkgoT(), err) expectedOperatorGroupStatus := v1.OperatorGroupStatus{ @@ -1511,7 +1514,7 @@ var _ = Describe("Operator Group", func() { if apierrors.IsNotFound(fetchErr) { return false, nil } - GinkgoT().Logf("Error (in %v): %v", testNamespace, fetchErr.Error()) + GinkgoT().Logf("Error (in %v): %v", generatedNamespace.GetName(), fetchErr.Error()) return false, fetchErr } if checkOperatorGroupAnnotations(fetchedCSV, operatorGroup, true, corev1.NamespaceAll) == nil { @@ -1590,7 +1593,7 @@ var _ = Describe("Operator Group", func() { csvName := genName("another-csv-") - newNamespaceName := genName(testNamespace + "-") + newNamespaceName := genName(generatedNamespace.GetName() + "-") _, err := c.KubernetesInterface().CoreV1().Namespaces().Create(context.TODO(), &corev1.Namespace{ ObjectMeta: metav1.ObjectMeta{ @@ -1726,7 +1729,7 @@ var _ = Describe("Operator Group", func() { csvName := genName("another-csv-") - newNamespaceName := genName(testNamespace + "-") + newNamespaceName := genName(generatedNamespace.GetName() + "-") _, err := c.KubernetesInterface().CoreV1().Namespaces().Create(context.TODO(), &corev1.Namespace{ ObjectMeta: metav1.ObjectMeta{ @@ -1824,7 +1827,7 @@ var _ = Describe("Operator Group", func() { csvName := genName("another-csv-") // must be lowercase for DNS-1123 validation - opGroupNamespace := testNamespace + opGroupNamespace := generatedNamespace.GetName() matchingLabel := map[string]string{"inGroup": opGroupNamespace} otherNamespaceName := genName(opGroupNamespace + "-") GinkgoT().Log("Creating CRD") @@ -1833,8 +1836,7 @@ var _ = Describe("Operator Group", func() { cleanupCRD, err := createCRD(c, mainCRD) require.NoError(GinkgoT(), err) defer cleanupCRD() - GinkgoT().Logf("Getting default operator group 'global-operators' installed via operatorgroup-default.yaml %v", opGroupNamespace) - operatorGroup, err := crc.OperatorsV1().OperatorGroups(opGroupNamespace).Get(context.TODO(), "global-operators", metav1.GetOptions{}) + operatorGroup, err := crc.OperatorsV1().OperatorGroups(opGroupNamespace).Get(context.TODO(), fmt.Sprintf("%v-operatorgroup", opGroupNamespace), metav1.GetOptions{}) require.NoError(GinkgoT(), err) expectedOperatorGroupStatus := v1.OperatorGroupStatus{ @@ -1991,7 +1993,7 @@ var _ = Describe("Operator Group", func() { if apierrors.IsNotFound(fetchErr) { return false, nil } - GinkgoT().Logf("Error (in %v): %v", testNamespace, fetchErr.Error()) + GinkgoT().Logf("Error (in %v): %v", generatedNamespace.GetName(), fetchErr.Error()) return false, fetchErr } if checkOperatorGroupAnnotations(fetchedCSV, operatorGroup, true, corev1.NamespaceAll) == nil { diff --git a/test/e2e/packagemanifest_e2e_test.go b/test/e2e/packagemanifest_e2e_test.go index 5e13fe17d8..7bf2008e79 100644 --- a/test/e2e/packagemanifest_e2e_test.go +++ b/test/e2e/packagemanifest_e2e_test.go @@ -10,6 +10,7 @@ import ( . "github.com/onsi/gomega" opver "github.com/operator-framework/api/pkg/lib/version" "github.com/operator-framework/api/pkg/operators/v1alpha1" + corev1 "k8s.io/api/core/v1" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/rest" @@ -24,19 +25,22 @@ import ( var _ = Describe("Package Manifest API lists available Operators from Catalog Sources", func() { var ( - crc versioned.Interface - pmc pmversioned.Interface - c operatorclient.ClientInterface + crc versioned.Interface + pmc pmversioned.Interface + c operatorclient.ClientInterface + generatedNamespace corev1.Namespace ) BeforeEach(func() { crc = ctx.Ctx().OperatorClient() pmc = newPMClient() c = ctx.Ctx().KubeClient() + + generatedNamespace = SetupGeneratedTestNamespace(genName("package-manifest-e2e")) }) AfterEach(func() { - TearDown(testNamespace) + TearDown(generatedNamespace.GetName()) }) Context("Given a CatalogSource created using the ConfigMap as catalog source type", func() { @@ -73,7 +77,7 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So crdPlural := genName("ins") crd := newCRD(crdPlural) catsrcName = genName("mock-ocs") - csv = newCSV(packageStable, testNamespace, "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, nil) + csv = newCSV(packageStable, generatedNamespace.GetName(), "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, nil) csv.SetLabels(map[string]string{"projected": "label"}) csv.Spec.Keywords = []string{"foo", "bar"} csv.Spec.Links = []v1alpha1.AppLink{ @@ -108,10 +112,10 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So }, } - _, cleanupCatalogSource = createInternalCatalogSource(c, crc, catsrcName, testNamespace, manifests, []apiextensions.CustomResourceDefinition{crd}, []v1alpha1.ClusterServiceVersion{csv, csvAlpha}) + _, cleanupCatalogSource = createInternalCatalogSource(c, crc, catsrcName, generatedNamespace.GetName(), manifests, []apiextensions.CustomResourceDefinition{crd}, []v1alpha1.ClusterServiceVersion{csv, csvAlpha}) // Verify catalog source was created - _, err := fetchCatalogSourceOnStatus(crc, catsrcName, testNamespace, catalogSourceRegistryPodSynced()) + _, err := fetchCatalogSourceOnStatus(crc, catsrcName, generatedNamespace.GetName(), catalogSourceRegistryPodSynced()) Expect(err).ToNot(HaveOccurred()) }) @@ -133,7 +137,7 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So expectedStatus := packagev1.PackageManifestStatus{ CatalogSource: catsrcName, - CatalogSourceNamespace: testNamespace, + CatalogSourceNamespace: generatedNamespace.GetName(), PackageName: packageName, Channels: []packagev1.PackageChannel{ { @@ -166,7 +170,7 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So DefaultChannel: stableChannel, } - pm, err := fetchPackageManifest(pmc, testNamespace, packageName, packageManifestHasStatus) + pm, err := fetchPackageManifest(pmc, generatedNamespace.GetName(), packageName, packageManifestHasStatus) Expect(err).ToNot(HaveOccurred(), "error getting package manifest") Expect(pm).ShouldNot(BeNil()) Expect(pm.GetName()).Should(Equal(packageName)) @@ -179,7 +183,7 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So It("lists PackageManifest and ensures it has valid PackageManifest item", func() { // Get a PackageManifestList and ensure it has the correct items Eventually(func() (bool, error) { - pmList, err := pmc.OperatorsV1().PackageManifests(testNamespace).List(context.TODO(), metav1.ListOptions{}) + pmList, err := pmc.OperatorsV1().PackageManifests(generatedNamespace.GetName()).List(context.TODO(), metav1.ListOptions{}) return containsPackageManifest(pmList.Items, packageName), err }).Should(BeTrue(), "required package name not found in the list") }) @@ -187,7 +191,7 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So It("gets the icon from the default channel", func() { var res rest.Result Eventually(func() error { - res = pmc.OperatorsV1().RESTClient().Get().Resource("packagemanifests").SubResource("icon").Namespace(testNamespace).Name(packageName).Do(context.Background()) + res = pmc.OperatorsV1().RESTClient().Get().Resource("packagemanifests").SubResource("icon").Namespace(generatedNamespace.GetName()).Name(packageName).Do(context.Background()) return res.Error() }).Should(Succeed(), "error getting icon") @@ -220,7 +224,7 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So }, ObjectMeta: metav1.ObjectMeta{ Name: sourceName, - Namespace: testNamespace, + Namespace: generatedNamespace.GetName(), Labels: map[string]string{"olm.catalogSource": sourceName}, }, Spec: v1alpha1.CatalogSourceSpec{ @@ -249,7 +253,7 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So It("lists the CatalogSource contents using the PackageManifest API", func() { - pm, err := fetchPackageManifest(pmc, testNamespace, packageName, packageManifestHasStatus) + pm, err := fetchPackageManifest(pmc, generatedNamespace.GetName(), packageName, packageManifestHasStatus) Expect(err).NotTo(HaveOccurred(), "error getting package manifest") Expect(pm).ShouldNot(BeNil()) Expect(pm.GetName()).Should(Equal(packageName)) @@ -267,18 +271,18 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So When("the display name for catalog source is updated", func() { BeforeEach(func() { - pm, err := fetchPackageManifest(pmc, testNamespace, packageName, packageManifestHasStatus) + pm, err := fetchPackageManifest(pmc, generatedNamespace.GetName(), packageName, packageManifestHasStatus) Expect(err).NotTo(HaveOccurred(), "error getting package manifest") Expect(pm).ShouldNot(BeNil()) Expect(pm.GetName()).Should(Equal(packageName)) Expect(pm.Status.CatalogSourceDisplayName).Should(Equal(displayName)) - catalogSource, err = crc.OperatorsV1alpha1().CatalogSources(testNamespace).Get(context.TODO(), catalogSource.GetName(), metav1.GetOptions{}) + catalogSource, err = crc.OperatorsV1alpha1().CatalogSources(generatedNamespace.GetName()).Get(context.TODO(), catalogSource.GetName(), metav1.GetOptions{}) Expect(err).NotTo(HaveOccurred(), "error getting catalogSource") displayName = "updated Name" catalogSource.Spec.DisplayName = displayName - catalogSource, err = crc.OperatorsV1alpha1().CatalogSources(testNamespace).Update(context.TODO(), catalogSource, metav1.UpdateOptions{}) + catalogSource, err = crc.OperatorsV1alpha1().CatalogSources(generatedNamespace.GetName()).Update(context.TODO(), catalogSource, metav1.UpdateOptions{}) Expect(err).NotTo(HaveOccurred(), "error updating catalogSource") Expect(catalogSource.Spec.DisplayName).Should(Equal(displayName)) }) @@ -286,7 +290,7 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So It("should successfully update the CatalogSource field", func() { Eventually(func() (string, error) { - pm, err := fetchPackageManifest(pmc, testNamespace, packageName, + pm, err := fetchPackageManifest(pmc, generatedNamespace.GetName(), packageName, packageManifestHasStatus) if err != nil { return "", err