From 3f963895014ebdbeb3ad2aa4558abb0924293f3b Mon Sep 17 00:00:00 2001 From: Bruno Andrade Date: Thu, 4 Dec 2025 04:56:11 -0300 Subject: [PATCH 1/3] UPSTREAM: : migrate bandrade test cases to OTE --- .../openshift_payload_olmv0.json | 224 ++++++++ tests-extension/test/qe/specs/olmv0_common.go | 88 +++ .../test/qe/specs/olmv0_defaultoption.go | 541 ++++++++++++++++++ 3 files changed, 853 insertions(+) diff --git a/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json b/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json index d2dfad0f69..e287937b86 100644 --- a/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json +++ b/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json @@ -282,6 +282,62 @@ "exclude": "topology==\"External\"" } }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24916-Author:bandrade-ConnectedOnly-Medium-Operators in AllNamespaces should be granted namespace list", + "originalName": "[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-ConnectedOnly-Medium-24916-Operators in AllNamespaces should be granted namespace list", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-ConnectedOnly-Medium-24916-Operators in AllNamespaces should be granted namespace list": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24771-Author:bandrade-Medium-OLM should support for user defined ServiceAccount for OperatorGroup", + "originalName": "[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24771-OLM should support for user defined ServiceAccount for OperatorGroup", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24771-OLM should support for user defined ServiceAccount for OperatorGroup": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24772-Author:bandrade-Medium-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission", + "originalName": "[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24772-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24772-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24886-Author:bandrade-Medium-OLM should support for user defined ServiceAccount permission changes", + "originalName": "[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24886-OLM should support for user defined ServiceAccount permission changes", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24886-OLM should support for user defined ServiceAccount permission changes": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:68679-[OTP][Skipped:Disconnected]catalogsource with invalid name is created", "originalName": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:68679-[Skipped:Disconnected]catalogsource with invalid name is created", @@ -350,6 +406,174 @@ "exclude": "topology==\"External\"" } }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:31693-ConnectedOnly-Author:bandrade-Medium-Check CSV information on the PackageManifest", + "originalName": "[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-31693-Check CSV information on the PackageManifest", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-31693-Check CSV information on the PackageManifest": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:54038-ConnectedOnly-Author:bandrade-Medium-Comply with Operator Anti-Affinity definition", + "originalName": "[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54038-Comply with Operator Anti-Affinity definition", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54038-Comply with Operator Anti-Affinity definition": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:54036-ConnectedOnly-Author:bandrade-Medium-Comply with Operator NodeAffinity definition", + "originalName": "[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54036-Comply with Operator NodeAffinity definition", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54036-Comply with Operator NodeAffinity definition": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24850-Author:bandrade-Medium-Allow users to edit the deployment of an active CSV", + "originalName": "[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-24850-Allow users to edit the deployment of an active CSV", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-24850-Allow users to edit the deployment of an active CSV": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24387-Author:bandrade-ConnectedOnly-High-Any CRD upgrade is allowed if there is only one owner in a cluster [Serial][Disruptive]", + "originalName": "[sig-operator][Jira:OLM] OLM should Author:bandrade-ConnectedOnly-High-24387-Any CRD upgrade is allowed if there is only one owner in a cluster [Disruptive]", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-ConnectedOnly-High-24387-Any CRD upgrade is allowed if there is only one owner in a cluster [Disruptive]": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:42970-Author:bandrade-Medium-OperatorGroup status indicates cardinality conflicts - SingleNamespace", + "originalName": "[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42970-OperatorGroup status indicates cardinality conflicts - SingleNamespace", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42970-OperatorGroup status indicates cardinality conflicts - SingleNamespace": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:42972-Author:bandrade-Medium-OperatorGroup status should indicate if the SA named in spec not found", + "originalName": "[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42972-OperatorGroup status should indicate if the SA named in spec not found", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42972-OperatorGroup status should indicate if the SA named in spec not found": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:21130-Author:bandrade-Medium-Fetching non-existent `PackageManifest` should return 404", + "originalName": "[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-21130-Fetching non-existent `PackageManifest` should return 404", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-21130-Fetching non-existent `PackageManifest` should return 404": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24057-NonHyperShiftHOST-Author:bandrade-Low-Have terminationMessagePolicy defined as FallbackToLogsOnError", + "originalName": "[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-Author:bandrade-Low-24057-Have terminationMessagePolicy defined as FallbackToLogsOnError", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-Author:bandrade-Low-24057-Have terminationMessagePolicy defined as FallbackToLogsOnError": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:49130-NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes", + "originalName": "[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-49130-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-49130-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:32613-ConnectedOnly-Author:bandrade-High-Operators won't install if the CSV dependency is already installed", + "originalName": "[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-High-32613-Operators won't install if the CSV dependency is already installed", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-High-32613-Operators won't install if the CSV dependency is already installed": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24055-ConnectedOnly-Author:bandrade-Low-Check for defaultChannel mandatory field when having multiple channels", + "originalName": "[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Low-24055-Check for defaultChannel mandatory field when having multiple channels", + "labels": { + "Extended": {}, + "original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Low-24055-Check for defaultChannel mandatory field when having multiple channels": {} + }, + "resources": { + "isolation": {} + }, + "source": "openshift:payload:olmv0", + "lifecycle": "blocking", + "environmentSelector": {} + }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:72017-[OTP]-pod panics when EnsureSecretOwnershipAnnotations runs", "labels": { diff --git a/tests-extension/test/qe/specs/olmv0_common.go b/tests-extension/test/qe/specs/olmv0_common.go index 860d89beb9..3c7015c67b 100644 --- a/tests-extension/test/qe/specs/olmv0_common.go +++ b/tests-extension/test/qe/specs/olmv0_common.go @@ -876,4 +876,92 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 should", func() { } }) + g.It("PolarionID:24916-Author:bandrade-ConnectedOnly-Medium-Operators in AllNamespaces should be granted namespace list", g.Label("original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-ConnectedOnly-Medium-24916-Operators in AllNamespaces should be granted namespace list"), func() { + buildDir := exutil.FixturePath("testdata", "olm") + ogTemplate := filepath.Join(buildDir, "operatorgroup.yaml") + + og := olmv0util.OperatorGroupDescription{ + Name: "og-24916", + Namespace: oc.Namespace(), + Template: ogTemplate, + } + og.Create(oc, g.CurrentSpecReport().FullText(), dr) + + g.By("og should contain name of all namespaces") + output, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("og", og.Name, "-n", oc.Namespace(), "-o=jsonpath={.status.namespaces}").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + if !strings.Contains(output, "openshift-") || !strings.Contains(output, oc.Namespace()) { + e2e.Failf("The namespaces of the OperatorGroup status is incorrect. It should contain all namespaces, but got: %s", output) + } + }) + + g.It("PolarionID:24771-Author:bandrade-Medium-OLM should support for user defined ServiceAccount for OperatorGroup", g.Label("original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24771-OLM should support for user defined ServiceAccount for OperatorGroup"), func() { + buildDir := exutil.FixturePath("testdata", "olm") + ogTemplate := filepath.Join(buildDir, "operatorgroup-serviceaccount.yaml") + + og := olmv0util.OperatorGroupDescription{ + Name: "og-24771", + Namespace: oc.Namespace(), + Template: ogTemplate, + ServiceAccountName: "scoped-24771", + } + + g.By("Create OperatorGroup") + og.Create(oc, g.CurrentSpecReport().FullText(), dr) + + g.By("Check OperatorGroup Status") + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "ServiceAccountNotFound", exutil.Ok, []string{"og", og.Name, "-n", og.Namespace, "-o=jsonpath={.status.conditions..reason}"}).Check(oc) + }) + + g.It("PolarionID:24772-Author:bandrade-Medium-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission", g.Label("original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24772-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission"), func() { + buildDir := exutil.FixturePath("testdata", "olm") + ogTemplate := filepath.Join(buildDir, "operatorgroup-serviceaccount.yaml") + og := olmv0util.OperatorGroupDescription{ + Name: "og-24772", + Namespace: oc.Namespace(), + Template: ogTemplate, + ServiceAccountName: "scoped-24772", + } + + g.By("Create OperatorGroup") + og.Create(oc, g.CurrentSpecReport().FullText(), dr) + + g.By("Check OperatorGroup Status") + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "ServiceAccountNotFound", exutil.Ok, []string{"og", og.Name, "-n", og.Namespace, "-o=jsonpath={.status.conditions..reason}"}).Check(oc) + }) + + g.It("PolarionID:24886-Author:bandrade-Medium-OLM should support for user defined ServiceAccount permission changes", g.Label("original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24886-OLM should support for user defined ServiceAccount permission changes"), func() { + buildDir := exutil.FixturePath("testdata", "olm") + ogTemplate := filepath.Join(buildDir, "operatorgroup-serviceaccount.yaml") + sa := "scoped-24886" + + og := olmv0util.OperatorGroupDescription{ + Name: "og-24886", + Namespace: oc.Namespace(), + Template: ogTemplate, + ServiceAccountName: sa, + } + + g.By("Create OperatorGroup") + og.Create(oc, g.CurrentSpecReport().FullText(), dr) + + g.By("Verify ServiceAccountNotFound") + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "ServiceAccountNotFound", exutil.Ok, []string{"og", og.Name, "-n", og.Namespace, "-o=jsonpath={.status.conditions..reason}"}).Check(oc) + + g.By("Create ServiceAccount") + _, err := oc.WithoutNamespace().AsAdmin().Run("create").Args("sa", sa, "-n", og.Namespace).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + + g.By("Verify status clears") + err = wait.PollUntilContextTimeout(context.TODO(), 10*time.Second, 360*time.Second, false, func(ctx context.Context) (bool, error) { + output, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("og", og.Name, "-n", og.Namespace, "-o=jsonpath={.status.conditions..reason}").Output() + if err != nil { + e2e.Logf("Fail to get og: %s, error: %s and try again", og.Name, err) + return false, nil + } + return strings.TrimSpace(output) == "", nil + }) + exutil.AssertWaitPollNoErr(err, "The error ServiceAccountNotFound still be reported in status") + }) + }) diff --git a/tests-extension/test/qe/specs/olmv0_defaultoption.go b/tests-extension/test/qe/specs/olmv0_defaultoption.go index 28394e4fa0..c6dc893c5a 100644 --- a/tests-extension/test/qe/specs/olmv0_defaultoption.go +++ b/tests-extension/test/qe/specs/olmv0_defaultoption.go @@ -20,6 +20,7 @@ import ( // TODO: Add github package to vendor to enable GitHub API tests // "github.com/google/go-github/v60/github" + apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/util/wait" e2e "k8s.io/kubernetes/test/e2e/framework" @@ -330,6 +331,546 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { } }) + g.It("PolarionID:31693-ConnectedOnly-Author:bandrade-Medium-Check CSV information on the PackageManifest", g.Label("original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-31693-Check CSV information on the PackageManifest"), func() { + exutil.SkipBaselineCaps(oc, "None") + exutil.SkipIfDisableDefaultCatalogsource(oc) + + g.By("The relatedImages should exist") + msg, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("packagemanifest", "-n", "openshift-marketplace", "prometheus", "-o=jsonpath={.status.channels[?(.name=='beta')].currentCSVDesc.relatedImages}").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + o.Expect(msg).NotTo(o.BeEmpty()) + + g.By("The minKubeVersion should exist") + msg, err = oc.AsAdmin().WithoutNamespace().Run("get").Args("packagemanifest", "-n", "openshift-marketplace", "prometheus", "-o=jsonpath={.status.channels[?(.name=='beta')].currentCSVDesc.minKubeVersion}").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + o.Expect(msg).NotTo(o.BeEmpty()) + + g.By("nativeAPI is optional for prometheus") + _, err = oc.AsAdmin().WithoutNamespace().Run("get").Args("packagemanifest", "-n", "openshift-marketplace", "prometheus", "-o=jsonpath={.status.channels[?(.name=='beta')].currentCSVDesc.nativeAPIs}").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + }) + + g.It("PolarionID:54038-ConnectedOnly-Author:bandrade-Medium-Comply with Operator Anti-Affinity definition", g.Label("original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54038-Comply with Operator Anti-Affinity definition"), func() { + architecture.SkipNonAmd64SingleArch(oc) + exutil.SkipIfDisableDefaultCatalogsource(oc) + exutil.SkipBaselineCaps(oc, "None") + + buildDir := exutil.FixturePath("testdata", "olm") + subFile := filepath.Join(buildDir, "olm-subscription.yaml") + ogTemplate := filepath.Join(buildDir, "operatorgroup.yaml") + prometheusCR := filepath.Join(buildDir, "prometheus-antiaffinity.yaml") + + dr := make(olmv0util.DescriberResrouce) + itName := g.CurrentSpecReport().FullText() + dr.AddIr(itName) + + og := olmv0util.OperatorGroupDescription{ + Name: "test-og-54038", + Namespace: oc.Namespace(), + Template: ogTemplate, + } + sub := olmv0util.SubscriptionDescription{ + SubName: "sub-54038", + Namespace: oc.Namespace(), + CatalogSourceName: "community-operators", + CatalogSourceNamespace: "openshift-marketplace", + Channel: "beta", + IpApproval: "Automatic", + OperatorPackage: "prometheus", + SingleNamespace: true, + Template: subFile, + } + + workerNodes, _ := exutil.GetSchedulableLinuxWorkerNodes(oc) + firstNode := workerNodes[0] + + exists, _ := olmv0util.ClusterPackageExists(oc, sub) + if !exists { + g.Skip("SKIP:PackageMissing prometheus does not exist in catalog community-operators") + } + if exutil.IsSNOCluster(oc) { + g.Skip("SNO cluster - skipping test ...") + } + if strings.TrimSpace(firstNode.Name) == "" { + g.Skip("Skipping because there's no cluster with READY state") + } + + g.By("Install the OperatorGroup in a random project") + og.CreateWithCheck(oc, itName, dr) + g.By("Install the Prometheus with Automatic approval") + sub.Create(oc, itName, dr) + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "Succeeded", exutil.Ok, []string{"csv", sub.InstalledCSV, "-n", oc.Namespace(), "-o=jsonpath={.status.phase}"}).Check(oc) + + g.By("Add app label") + _, err := oc.AsAdmin().WithoutNamespace().Run("label").Args("node", firstNode.Name, "app_54038=dev", "--overwrite").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + defer func() { + _, _ = oc.AsAdmin().WithoutNamespace().Run("label").Args("node", firstNode.Name, "app_54038-").Output() + }() + + msg, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("nodes", "--show-labels", "--no-headers").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + e2e.Logf("Node labels %s", msg) + + g.By("Install the Prometheus CR") + _, err = oc.WithoutNamespace().AsAdmin().Run("create").Args("-f", prometheusCR, "-n", oc.Namespace()).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "Available", exutil.Ok, []string{"Prometheus", "example", "-n", oc.Namespace(), "-o=jsonpath={.status.conditions[0].type}"}).Check(oc) + + g.By("Ensure that pod is not scheduled in the node with the defined label") + deployedNode := olmv0util.GetResource(oc, exutil.AsAdmin, exutil.WithoutNamespace, "pods", "prometheus-example-0", "-n", oc.Namespace(), "-o=jsonpath={.spec.nodeName}") + if firstNode.Name == deployedNode { + e2e.Failf("Prometheus is deployed in the same node of app_54038 label. Node: %s . Node Labels: %s", deployedNode, msg) + } + }) + + g.It("PolarionID:54036-ConnectedOnly-Author:bandrade-Medium-Comply with Operator NodeAffinity definition", g.Label("original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54036-Comply with Operator NodeAffinity definition"), func() { + architecture.SkipNonAmd64SingleArch(oc) + exutil.SkipIfDisableDefaultCatalogsource(oc) + exutil.SkipBaselineCaps(oc, "None") + + buildDir := exutil.FixturePath("testdata", "olm") + subFile := filepath.Join(buildDir, "olm-subscription.yaml") + ogTemplate := filepath.Join(buildDir, "operatorgroup.yaml") + prometheusCRTemplate := filepath.Join(buildDir, "prometheus-nodeaffinity.yaml") + + dr := make(olmv0util.DescriberResrouce) + itName := g.CurrentSpecReport().FullText() + dr.AddIr(itName) + + og := olmv0util.OperatorGroupDescription{ + Name: "test-og-54036", + Namespace: oc.Namespace(), + Template: ogTemplate, + } + sub := olmv0util.SubscriptionDescription{ + SubName: "sub-54036", + Namespace: oc.Namespace(), + CatalogSourceName: "community-operators", + CatalogSourceNamespace: "openshift-marketplace", + Channel: "beta", + IpApproval: "Automatic", + OperatorPackage: "prometheus", + SingleNamespace: true, + Template: subFile, + } + + workerNodes, _ := exutil.GetSchedulableLinuxWorkerNodes(oc) + firstNode := "" + for _, worker := range workerNodes { + for _, con := range worker.Status.Conditions { + _, ok := worker.Labels["node-role.kubernetes.io/edge"] + if con.Type == "Ready" && con.Status == "True" && !ok { + firstNode = worker.Name + } + } + } + if exutil.IsSNOCluster(oc) || firstNode == "" { + g.Skip("SNO cluster - skipping test ...") + } + if strings.TrimSpace(firstNode) == "" { + g.Skip("Skipping because there's no cluster with READY state") + } + + g.By("Install the OperatorGroup in a random project") + og.CreateWithCheck(oc, itName, dr) + + exists, _ := olmv0util.ClusterPackageExists(oc, sub) + if !exists { + g.Skip("SKIP:PackageMissing learn does not exist in catalog qe-app-registry") + } + + g.By("Install the Prometheus with Automatic approval") + sub.Create(oc, itName, dr) + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "Succeeded", exutil.Ok, []string{"csv", sub.InstalledCSV, "-n", oc.Namespace(), "-o=jsonpath={.status.phase}"}).Check(oc) + + g.By("Install the Prometheus CR") + err := olmv0util.ApplyResourceFromTemplate(oc, "--ignore-unknown-parameters=true", "-f", prometheusCRTemplate, "-p", "NODE_NAME="+firstNode, "NAMESPACE="+oc.Namespace()) + o.Expect(err).NotTo(o.HaveOccurred()) + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "Available", exutil.Ok, []string{"Prometheus", "example", "-n", oc.Namespace(), "-o=jsonpath={.status.conditions[0].type}"}).Check(oc) + + g.By("Ensure that pod is scaled in the specified node") + deployedNode := olmv0util.GetResource(oc, exutil.AsAdmin, exutil.WithoutNamespace, "pods", "prometheus-example-0", "-n", oc.Namespace(), "-o=jsonpath={.spec.nodeName}") + o.Expect(firstNode).To(o.Equal(deployedNode)) + }) + + g.It("PolarionID:24850-Author:bandrade-Medium-Allow users to edit the deployment of an active CSV", g.Label("original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-24850-Allow users to edit the deployment of an active CSV"), func() { + exutil.SkipMissingQECatalogsource(oc) + dr := make(olmv0util.DescriberResrouce) + itName := g.CurrentSpecReport().FullText() + dr.AddIr(itName) + + buildDir := exutil.FixturePath("testdata", "olm") + ogTemplate := filepath.Join(buildDir, "operatorgroup.yaml") + subTemplate := filepath.Join(buildDir, "olm-subscription.yaml") + + og := olmv0util.OperatorGroupDescription{ + Name: "og-24850", + Namespace: oc.Namespace(), + Template: ogTemplate, + } + og.CreateWithCheck(oc, itName, dr) + + sub := olmv0util.SubscriptionDescription{ + SubName: "sub-24850", + Namespace: oc.Namespace(), + CatalogSourceName: "qe-app-registry", + CatalogSourceNamespace: "openshift-marketplace", + IpApproval: "Automatic", + Channel: "beta", + OperatorPackage: "learn", + SingleNamespace: true, + Template: subTemplate, + } + sub.Create(oc, itName, dr) + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "Succeeded", exutil.Ok, []string{"csv", sub.InstalledCSV, "-n", oc.Namespace(), "-o=jsonpath={.status.phase}"}).Check(oc) + + g.By("Get pod name") + podName, err := oc.AsAdmin().Run("get").Args("pods", "-l", "name=learn-operator", "-n", oc.Namespace(), "-o=jsonpath={.items..metadata.name}").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + + g.By("Patch the deploy object by adding an environment variable") + _, err = oc.AsAdmin().WithoutNamespace().Run("set").Args("env", "deploy/learn-operator", "A=B", "-n", oc.Namespace()).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + + g.By("Get restarted pod name") + podNameAfterPatch, err := oc.AsAdmin().Run("get").Args("pods", "-l", "name=learn-operator", "-n", oc.Namespace(), "-o=jsonpath={.items..metadata.name}").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + o.Expect(podName).NotTo(o.Equal(podNameAfterPatch)) + }) + + g.It("PolarionID:24387-Author:bandrade-ConnectedOnly-High-Any CRD upgrade is allowed if there is only one owner in a cluster [Disruptive]", g.Label("original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-ConnectedOnly-High-24387-Any CRD upgrade is allowed if there is only one owner in a cluster [Disruptive]"), func() { + architecture.SkipNonAmd64SingleArch(oc) + exutil.SkipBaselineCaps(oc, "None") + exutil.SkipIfDisableDefaultCatalogsource(oc) + + buildDir := exutil.FixturePath("testdata", "olm") + csTemplate := filepath.Join(buildDir, "catalogsource-image.yaml") + subFile := filepath.Join(buildDir, "olm-subscription.yaml") + ogTemplate := filepath.Join(buildDir, "operatorgroup.yaml") + + dr := make(olmv0util.DescriberResrouce) + itName := g.CurrentSpecReport().FullText() + dr.AddIr(itName) + + cs := olmv0util.CatalogSourceDescription{ + Name: "cs-24387", + Namespace: "openshift-marketplace", + DisplayName: "OLM QE Operators", + Publisher: "bandrade", + SourceType: "grpc", + Address: "quay.io/olmqe/etcd-index-24387:5.0", + Template: csTemplate, + } + og := olmv0util.OperatorGroupDescription{ + Name: "test-og-24387", + Namespace: oc.Namespace(), + Template: ogTemplate, + } + sub := olmv0util.SubscriptionDescription{ + SubName: "etcd", + Namespace: oc.Namespace(), + CatalogSourceName: "community-operators", + CatalogSourceNamespace: "openshift-marketplace", + Channel: "singlenamespace-alpha", + IpApproval: "Automatic", + OperatorPackage: "etcd", + SingleNamespace: true, + Template: subFile, + StartingCSV: "etcdoperator.v0.9.4", + } + subModified := olmv0util.SubscriptionDescription{ + SubName: "etcd", + Namespace: oc.Namespace(), + CatalogSourceName: cs.Name, + CatalogSourceNamespace: "openshift-marketplace", + IpApproval: "Automatic", + Template: subFile, + Channel: "singlenamespace-alpha", + OperatorPackage: "etcd", + StartingCSV: "etcdoperator.v0.9.4", + SingleNamespace: true, + } + + e2e.Logf("Check if %v exists in the %v catalog", sub.OperatorPackage, sub.CatalogSourceName) + exists, err := olmv0util.ClusterPackageExists(oc, sub) + if !exists { + g.Skip("SKIP:PackageMissing etcd does not exist in catalog community-operators") + } + o.Expect(err).NotTo(o.HaveOccurred()) + + defer cs.Delete(itName, dr) + cs.Create(oc, itName, dr) + og.CreateWithCheck(oc, itName, dr) + sub.Create(oc, itName, dr) + sub.Delete(itName, dr) + sub.DeleteCSV(itName, dr) + + subModified.Create(oc, itName, dr) + crdYamlOutput, err := oc.AsAdmin().Run("get").Args("crd", "etcdclusters.etcd.database.coreos.com", "-o=yaml").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + o.Expect(crdYamlOutput).To(o.ContainSubstring("propertyIncludedTest")) + }) + + g.It("PolarionID:42970-Author:bandrade-Medium-OperatorGroup status indicates cardinality conflicts - SingleNamespace", g.Label("original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42970-OperatorGroup status indicates cardinality conflicts - SingleNamespace"), func() { + buildDir := exutil.FixturePath("testdata", "olm") + ogTemplate := filepath.Join(buildDir, "operatorgroup.yaml") + + dr := make(olmv0util.DescriberResrouce) + itName := g.CurrentSpecReport().FullText() + dr.AddIr(itName) + ns := oc.Namespace() + + og := olmv0util.OperatorGroupDescription{ + Name: "og-42970", + Namespace: ns, + Template: ogTemplate, + } + og1 := olmv0util.OperatorGroupDescription{ + Name: "og-42970-1", + Namespace: ns, + Template: ogTemplate, + } + + og.Create(oc, itName, dr) + og1.Create(oc, itName, dr) + + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "MultipleOperatorGroupsFound", exutil.Ok, []string{"og", og.Name, "-n", ns, "-o=jsonpath={.status.conditions..reason}"}).Check(oc) + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "MultipleOperatorGroupsFound", exutil.Ok, []string{"og", og1.Name, "-n", ns, "-o=jsonpath={.status.conditions..reason}"}).Check(oc) + + og1.Delete(itName, dr) + err := wait.PollUntilContextTimeout(context.TODO(), 10*time.Second, 360*time.Second, false, func(ctx context.Context) (bool, error) { + output, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("og", og.Name, "-n", ns, "-o=jsonpath={.status.conditions..reason}").Output() + if err != nil { + e2e.Logf("Fail to get og: %s, error: %s and try again", og.Name, err) + return false, nil + } + return strings.TrimSpace(output) == "", nil + }) + exutil.AssertWaitPollNoErr(err, "The error MultipleOperatorGroupsFound still be reported in status") + }) + + g.It("PolarionID:42972-Author:bandrade-Medium-OperatorGroup status should indicate if the SA named in spec not found", g.Label("original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42972-OperatorGroup status should indicate if the SA named in spec not found"), func() { + buildDir := exutil.FixturePath("testdata", "olm") + ogTemplate := filepath.Join(buildDir, "operatorgroup-serviceaccount.yaml") + sa := "scoped-42972" + + dr := make(olmv0util.DescriberResrouce) + itName := g.CurrentSpecReport().FullText() + dr.AddIr(itName) + + ns := oc.Namespace() + og := olmv0util.OperatorGroupDescription{ + Name: "og-42972", + Namespace: ns, + Template: ogTemplate, + ServiceAccountName: sa, + } + + og.Create(oc, itName, dr) + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "ServiceAccountNotFound", exutil.Ok, []string{"og", og.Name, "-n", ns, "-o=jsonpath={.status.conditions..reason}"}).Check(oc) + + _, err := oc.WithoutNamespace().AsAdmin().Run("create").Args("sa", sa, "-n", ns).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + + err = wait.PollUntilContextTimeout(context.TODO(), 10*time.Second, 360*time.Second, false, func(ctx context.Context) (bool, error) { + output, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("og", og.Name, "-n", ns, "-o=jsonpath={.status.conditions..reason}").Output() + if err != nil { + e2e.Logf("Fail to get og: %s, error: %s and try again", og.Name, err) + return false, nil + } + return strings.TrimSpace(output) == "", nil + }) + exutil.AssertWaitPollNoErr(err, "The error ServiceAccountNotFound still be reported in status") + }) + + g.It("PolarionID:21130-Author:bandrade-Medium-Fetching non-existent `PackageManifest` should return 404", g.Label("original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-21130-Fetching non-existent `PackageManifest` should return 404"), func() { + msg, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("packagemanifest", "--all-namespaces", "--no-headers").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + packageserverLines := strings.Split(msg, "\n") + if len(packageserverLines) > 0 { + raw, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("packagemanifest", "a_package_that_not_exists", "-o", "yaml", "--loglevel=8").Output() + o.Expect(err).To(o.HaveOccurred()) + o.Expect(raw).To(o.ContainSubstring("\"code\": 404")) + } else { + e2e.Failf("No packages to evaluate if 404 works when a PackageManifest does not exist") + } + }) + + g.It("PolarionID:24057-NonHyperShiftHOST-Author:bandrade-Low-Have terminationMessagePolicy defined as FallbackToLogsOnError", g.Label("original-name:[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-Author:bandrade-Low-24057-Have terminationMessagePolicy defined as FallbackToLogsOnError"), func() { + labels := [...]string{"app=packageserver", "app=catalog-operator", "app=olm-operator"} + for _, l := range labels { + msg, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("pods", "-o=jsonpath={range .items[*].spec}{.containers[*].name}{\"\\t\"}", "-n", "openshift-operator-lifecycle-manager", "-l", l).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + amountOfContainers := len(strings.Split(msg, "\t")) + msg, err = oc.AsAdmin().WithoutNamespace().Run("get").Args("pods", "-o=jsonpath={range .items[*].spec}{.containers[*].terminationMessagePolicy}{\"\\t\"}", "-n", "openshift-operator-lifecycle-manager", "-l", l).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + reg := regexp.MustCompile("FallbackToLogsOnError") + withPolicy := len(reg.FindAllStringIndex(msg, -1)) + o.Expect(amountOfContainers).To(o.Equal(withPolicy)) + if amountOfContainers != withPolicy { + e2e.Failf("OLM does not have all containers definied with FallbackToLogsOnError terminationMessagePolicy") + } + } + }) + + g.It("PolarionID:49130-NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes", g.Label("original-name:[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-49130-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes"), func() { + exutil.SkipBaselineCaps(oc, "None") + exutil.SkipIfDisableDefaultCatalogsource(oc) + + catalogSources := map[string]string{ + "certified-operators": "Certified Operators", + "community-operators": "Community Operators", + "redhat-operators": "Red Hat Operators", + } + + for catalog, label := range catalogSources { + rawPods, err := oc.AsAdmin().WithoutNamespace().Run("get").Args( + "pods", "-n", "openshift-marketplace", + "-l", fmt.Sprintf("olm.catalogSource=%s", catalog), + "-o", "name").Output() + o.Expect(err).NotTo(o.HaveOccurred()) + + pods := strings.Split(strings.TrimSpace(rawPods), "\n") + if len(pods) == 0 || pods[0] == "" { + e2e.Logf("No pods found for %s, skipping...", label) + continue + } + + found := false + for _, name := range pods { + output, err := oc.AsAdmin().WithoutNamespace().Run("get").Args(name, "-n", "openshift-marketplace", "-o=jsonpath={.spec.tolerations}").Output() + if err != nil && apierrors.IsNotFound(err) { + e2e.Logf("pod %v does not exist", name) + continue + } + o.Expect(err).NotTo(o.HaveOccurred()) + if !strings.Contains(output, "node-role.kubernetes.io/master") || !strings.Contains(output, "tolerationSeconds\":120") { + e2e.Logf("pod %v with incorrect tolerations found: %v", name, output) + found = true + break + } + } + + if found { + e2e.Failf("Pod with incorrect tolerations found for %s", label) + } + } + }) + + g.It("PolarionID:32613-ConnectedOnly-Author:bandrade-High-Operators won't install if the CSV dependency is already installed", g.Label("original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-High-32613-Operators won't install if the CSV dependency is already installed"), func() { + architecture.SkipNonAmd64SingleArch(oc) + exutil.SkipIfDisableDefaultCatalogsource(oc) + exutil.SkipBaselineCaps(oc, "None") + + buildDir := exutil.FixturePath("testdata", "olm") + csTemplate := filepath.Join(buildDir, "catalogsource-image.yaml") + ogTemplate := filepath.Join(buildDir, "operatorgroup.yaml") + subTemplate := filepath.Join(buildDir, "olm-subscription.yaml") + + cs := olmv0util.CatalogSourceDescription{ + Name: "prometheus-dependency-cs", + Namespace: "openshift-marketplace", + DisplayName: "OLM QE", + Publisher: "OLM QE", + SourceType: "grpc", + Address: "quay.io/olmqe/etcd-prometheus-dependency-index:11.0", + Template: csTemplate, + } + dr := make(olmv0util.DescriberResrouce) + itName := g.CurrentSpecReport().FullText() + dr.AddIr(itName) + defer cs.Delete(itName, dr) + cs.Create(oc, itName, dr) + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "READY", exutil.Ok, []string{"catsrc", cs.Name, "-n", cs.Namespace, "-o=jsonpath={.status..lastObservedState}"}).Check(oc) + + og := olmv0util.OperatorGroupDescription{ + Name: "og-32613", + Namespace: oc.Namespace(), + Template: ogTemplate, + } + og.CreateWithCheck(oc, itName, dr) + + sub := olmv0util.SubscriptionDescription{ + SubName: "sub-32613", + Namespace: oc.Namespace(), + CatalogSourceName: "prometheus-dependency-cs", + CatalogSourceNamespace: "openshift-marketplace", + Channel: "singlenamespace-alpha", + IpApproval: "Automatic", + OperatorPackage: "etcd-service-monitor", + StartingCSV: "etcdoperator.v0.9.4", + SingleNamespace: true, + Template: subTemplate, + } + sub.Create(oc, itName, dr) + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "Succeeded", exutil.Ok, []string{"csv", "etcdoperator.v0.9.4", "-n", oc.Namespace(), "-o=jsonpath={.status.phase}"}).Check(oc) + + g.By("Assert that prometheus dependency is resolved") + msg, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("csv", "-n", oc.Namespace()).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + o.Expect(msg).To(o.ContainSubstring("prometheus")) + + sub = olmv0util.SubscriptionDescription{ + SubName: "prometheus-32613", + Namespace: oc.Namespace(), + CatalogSourceName: "community-operators", + CatalogSourceNamespace: "openshift-marketplace", + IpApproval: "Automatic", + Channel: "beta", + OperatorPackage: "prometheus", + SingleNamespace: true, + Template: subTemplate, + } + sub.CreateWithoutCheck(oc, itName, dr) + olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Contain, "prometheus-beta-community-operators-openshift-marketplace exists", exutil.Ok, []string{"subs", "prometheus-32613", "-n", oc.Namespace(), "-o=jsonpath={.status.conditions..message}"}).Check(oc) + }) + + g.It("PolarionID:24055-ConnectedOnly-Author:bandrade-Low-Check for defaultChannel mandatory field when having multiple channels", g.Label("original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Low-24055-Check for defaultChannel mandatory field when having multiple channels"), func() { + olmBaseDir := exutil.FixturePath("testdata", "olm") + cmWithoutDefault := filepath.Join(olmBaseDir, "configmap-without-defaultchannel.yaml") + cmWithDefault := filepath.Join(olmBaseDir, "configmap-with-defaultchannel.yaml") + csNamespaced := filepath.Join(olmBaseDir, "catalogsource-namespace.yaml") + + namespace := "scenario3" + defer olmv0util.RemoveNamespace(namespace, oc) + + _, err := oc.WithoutNamespace().AsAdmin().Run("create").Args("ns", namespace).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + + _, err = oc.WithoutNamespace().AsAdmin().Run("create").Args("-f", cmWithoutDefault).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + + cs := olmv0util.CatalogSourceDescription{ + Name: "scenario3", + Namespace: "scenario3", + } + _, err = oc.WithoutNamespace().AsAdmin().Run("create").Args("-f", csNamespaced).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + cs.SetSCCRestricted(oc) + + err = wait.PollUntilContextTimeout(context.TODO(), 30*time.Second, 180*time.Second, false, func(ctx context.Context) (bool, error) { + output, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("pods", "-l", "olm.catalogSource=scenario3", "-n", "scenario3").Output() + if err != nil { + return false, nil + } + return strings.Contains(output, "CrashLoopBackOff"), nil + }) + exutil.AssertWaitPollNoErr(err, "pod of olm.catalogSource=scenario3 is not CrashLoopBackOff") + + _, err = oc.WithoutNamespace().AsAdmin().Run("apply").Args("-f", cmWithDefault).Output() + o.Expect(err).NotTo(o.HaveOccurred()) + + err = wait.PollUntilContextTimeout(context.TODO(), 30*time.Second, 180*time.Second, false, func(ctx context.Context) (bool, error) { + output, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("pods", "-l", "olm.catalogSource=scenario3", "-n", "scenario3").Output() + if err != nil { + return false, nil + } + return strings.Contains(output, "Running"), nil + }) + exutil.AssertWaitPollNoErr(err, "pod of olm.catalogSource=scenario3 is not running") + }) + // Polarion ID: 72017 g.It("PolarionID:72017-[OTP]-pod panics when EnsureSecretOwnershipAnnotations runs", g.Label("NonHyperShiftHOST"), func() { g.By("1) create a secret in the openshift-operator-lifecycle-manager project") From 46c3380900cea6fc02b3e34b6ebdb5895e5f2e7f Mon Sep 17 00:00:00 2001 From: Bruno Andrade Date: Wed, 10 Dec 2025 12:41:20 -0300 Subject: [PATCH 2/3] Align bandrade OLMv0 titles with OTE label rules and refresh metadata --- .../openshift_payload_olmv0.json | 64 +++++-------------- tests-extension/test/qe/specs/olmv0_common.go | 8 +-- .../test/qe/specs/olmv0_defaultoption.go | 24 +++---- 3 files changed, 32 insertions(+), 64 deletions(-) diff --git a/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json b/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json index e287937b86..3a807cfa82 100644 --- a/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json +++ b/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json @@ -284,10 +284,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24916-Author:bandrade-ConnectedOnly-Medium-Operators in AllNamespaces should be granted namespace list", - "originalName": "[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-ConnectedOnly-Medium-24916-Operators in AllNamespaces should be granted namespace list", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-ConnectedOnly-Medium-24916-Operators in AllNamespaces should be granted namespace list": {} + "Extended": {} }, "resources": { "isolation": {} @@ -298,10 +296,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24771-Author:bandrade-Medium-OLM should support for user defined ServiceAccount for OperatorGroup", - "originalName": "[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24771-OLM should support for user defined ServiceAccount for OperatorGroup", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24771-OLM should support for user defined ServiceAccount for OperatorGroup": {} + "Extended": {} }, "resources": { "isolation": {} @@ -312,10 +308,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24772-Author:bandrade-Medium-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission", - "originalName": "[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24772-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24772-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission": {} + "Extended": {} }, "resources": { "isolation": {} @@ -326,10 +320,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24886-Author:bandrade-Medium-OLM should support for user defined ServiceAccount permission changes", - "originalName": "[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24886-OLM should support for user defined ServiceAccount permission changes", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24886-OLM should support for user defined ServiceAccount permission changes": {} + "Extended": {} }, "resources": { "isolation": {} @@ -408,10 +400,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:31693-ConnectedOnly-Author:bandrade-Medium-Check CSV information on the PackageManifest", - "originalName": "[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-31693-Check CSV information on the PackageManifest", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-31693-Check CSV information on the PackageManifest": {} + "Extended": {} }, "resources": { "isolation": {} @@ -422,10 +412,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:54038-ConnectedOnly-Author:bandrade-Medium-Comply with Operator Anti-Affinity definition", - "originalName": "[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54038-Comply with Operator Anti-Affinity definition", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54038-Comply with Operator Anti-Affinity definition": {} + "Extended": {} }, "resources": { "isolation": {} @@ -436,10 +424,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:54036-ConnectedOnly-Author:bandrade-Medium-Comply with Operator NodeAffinity definition", - "originalName": "[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54036-Comply with Operator NodeAffinity definition", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54036-Comply with Operator NodeAffinity definition": {} + "Extended": {} }, "resources": { "isolation": {} @@ -450,10 +436,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24850-Author:bandrade-Medium-Allow users to edit the deployment of an active CSV", - "originalName": "[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-24850-Allow users to edit the deployment of an active CSV", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-24850-Allow users to edit the deployment of an active CSV": {} + "Extended": {} }, "resources": { "isolation": {} @@ -464,10 +448,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24387-Author:bandrade-ConnectedOnly-High-Any CRD upgrade is allowed if there is only one owner in a cluster [Serial][Disruptive]", - "originalName": "[sig-operator][Jira:OLM] OLM should Author:bandrade-ConnectedOnly-High-24387-Any CRD upgrade is allowed if there is only one owner in a cluster [Disruptive]", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-ConnectedOnly-High-24387-Any CRD upgrade is allowed if there is only one owner in a cluster [Disruptive]": {} + "Extended": {} }, "resources": { "isolation": {} @@ -478,10 +460,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:42970-Author:bandrade-Medium-OperatorGroup status indicates cardinality conflicts - SingleNamespace", - "originalName": "[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42970-OperatorGroup status indicates cardinality conflicts - SingleNamespace", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42970-OperatorGroup status indicates cardinality conflicts - SingleNamespace": {} + "Extended": {} }, "resources": { "isolation": {} @@ -492,10 +472,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:42972-Author:bandrade-Medium-OperatorGroup status should indicate if the SA named in spec not found", - "originalName": "[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42972-OperatorGroup status should indicate if the SA named in spec not found", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42972-OperatorGroup status should indicate if the SA named in spec not found": {} + "Extended": {} }, "resources": { "isolation": {} @@ -506,10 +484,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:21130-Author:bandrade-Medium-Fetching non-existent `PackageManifest` should return 404", - "originalName": "[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-21130-Fetching non-existent `PackageManifest` should return 404", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-21130-Fetching non-existent `PackageManifest` should return 404": {} + "Extended": {} }, "resources": { "isolation": {} @@ -520,10 +496,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24057-NonHyperShiftHOST-Author:bandrade-Low-Have terminationMessagePolicy defined as FallbackToLogsOnError", - "originalName": "[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-Author:bandrade-Low-24057-Have terminationMessagePolicy defined as FallbackToLogsOnError", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-Author:bandrade-Low-24057-Have terminationMessagePolicy defined as FallbackToLogsOnError": {} + "Extended": {} }, "resources": { "isolation": {} @@ -534,10 +508,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:49130-NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes", - "originalName": "[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-49130-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-49130-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes": {} + "Extended": {} }, "resources": { "isolation": {} @@ -548,10 +520,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:32613-ConnectedOnly-Author:bandrade-High-Operators won't install if the CSV dependency is already installed", - "originalName": "[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-High-32613-Operators won't install if the CSV dependency is already installed", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-High-32613-Operators won't install if the CSV dependency is already installed": {} + "Extended": {} }, "resources": { "isolation": {} @@ -562,10 +532,8 @@ }, { "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24055-ConnectedOnly-Author:bandrade-Low-Check for defaultChannel mandatory field when having multiple channels", - "originalName": "[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Low-24055-Check for defaultChannel mandatory field when having multiple channels", "labels": { - "Extended": {}, - "original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Low-24055-Check for defaultChannel mandatory field when having multiple channels": {} + "Extended": {} }, "resources": { "isolation": {} diff --git a/tests-extension/test/qe/specs/olmv0_common.go b/tests-extension/test/qe/specs/olmv0_common.go index 3c7015c67b..48164272e0 100644 --- a/tests-extension/test/qe/specs/olmv0_common.go +++ b/tests-extension/test/qe/specs/olmv0_common.go @@ -876,7 +876,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 should", func() { } }) - g.It("PolarionID:24916-Author:bandrade-ConnectedOnly-Medium-Operators in AllNamespaces should be granted namespace list", g.Label("original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-ConnectedOnly-Medium-24916-Operators in AllNamespaces should be granted namespace list"), func() { + g.It("PolarionID:24916-[OTP][Skipped:Disconnected]Operators in AllNamespaces should be granted namespace list", func() { buildDir := exutil.FixturePath("testdata", "olm") ogTemplate := filepath.Join(buildDir, "operatorgroup.yaml") @@ -895,7 +895,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 should", func() { } }) - g.It("PolarionID:24771-Author:bandrade-Medium-OLM should support for user defined ServiceAccount for OperatorGroup", g.Label("original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24771-OLM should support for user defined ServiceAccount for OperatorGroup"), func() { + g.It("PolarionID:24771-[OTP]OLM should support for user defined ServiceAccount for OperatorGroup", func() { buildDir := exutil.FixturePath("testdata", "olm") ogTemplate := filepath.Join(buildDir, "operatorgroup-serviceaccount.yaml") @@ -913,7 +913,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 should", func() { olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "ServiceAccountNotFound", exutil.Ok, []string{"og", og.Name, "-n", og.Namespace, "-o=jsonpath={.status.conditions..reason}"}).Check(oc) }) - g.It("PolarionID:24772-Author:bandrade-Medium-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission", g.Label("original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24772-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission"), func() { + g.It("PolarionID:24772-[OTP]OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission", func() { buildDir := exutil.FixturePath("testdata", "olm") ogTemplate := filepath.Join(buildDir, "operatorgroup-serviceaccount.yaml") og := olmv0util.OperatorGroupDescription{ @@ -930,7 +930,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 should", func() { olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Compare, "ServiceAccountNotFound", exutil.Ok, []string{"og", og.Name, "-n", og.Namespace, "-o=jsonpath={.status.conditions..reason}"}).Check(oc) }) - g.It("PolarionID:24886-Author:bandrade-Medium-OLM should support for user defined ServiceAccount permission changes", g.Label("original-name:[sig-operator][Jira:OLM] OLM for an end user handle common object Author:bandrade-Medium-24886-OLM should support for user defined ServiceAccount permission changes"), func() { + g.It("PolarionID:24886-[OTP]OLM should support for user defined ServiceAccount permission changes", func() { buildDir := exutil.FixturePath("testdata", "olm") ogTemplate := filepath.Join(buildDir, "operatorgroup-serviceaccount.yaml") sa := "scoped-24886" diff --git a/tests-extension/test/qe/specs/olmv0_defaultoption.go b/tests-extension/test/qe/specs/olmv0_defaultoption.go index c6dc893c5a..a46760bb23 100644 --- a/tests-extension/test/qe/specs/olmv0_defaultoption.go +++ b/tests-extension/test/qe/specs/olmv0_defaultoption.go @@ -331,7 +331,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { } }) - g.It("PolarionID:31693-ConnectedOnly-Author:bandrade-Medium-Check CSV information on the PackageManifest", g.Label("original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-31693-Check CSV information on the PackageManifest"), func() { + g.It("PolarionID:31693-[OTP][Skipped:Disconnected]Check CSV information on the PackageManifest", func() { exutil.SkipBaselineCaps(oc, "None") exutil.SkipIfDisableDefaultCatalogsource(oc) @@ -350,7 +350,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { o.Expect(err).NotTo(o.HaveOccurred()) }) - g.It("PolarionID:54038-ConnectedOnly-Author:bandrade-Medium-Comply with Operator Anti-Affinity definition", g.Label("original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54038-Comply with Operator Anti-Affinity definition"), func() { + g.It("PolarionID:54038-[OTP][Skipped:Disconnected]Comply with Operator Anti-Affinity definition", func() { architecture.SkipNonAmd64SingleArch(oc) exutil.SkipIfDisableDefaultCatalogsource(oc) exutil.SkipBaselineCaps(oc, "None") @@ -424,7 +424,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { } }) - g.It("PolarionID:54036-ConnectedOnly-Author:bandrade-Medium-Comply with Operator NodeAffinity definition", g.Label("original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Medium-54036-Comply with Operator NodeAffinity definition"), func() { + g.It("PolarionID:54036-[OTP][Skipped:Disconnected]Comply with Operator NodeAffinity definition", func() { architecture.SkipNonAmd64SingleArch(oc) exutil.SkipIfDisableDefaultCatalogsource(oc) exutil.SkipBaselineCaps(oc, "None") @@ -494,7 +494,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { o.Expect(firstNode).To(o.Equal(deployedNode)) }) - g.It("PolarionID:24850-Author:bandrade-Medium-Allow users to edit the deployment of an active CSV", g.Label("original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-24850-Allow users to edit the deployment of an active CSV"), func() { + g.It("PolarionID:24850-[OTP]Allow users to edit the deployment of an active CSV", func() { exutil.SkipMissingQECatalogsource(oc) dr := make(olmv0util.DescriberResrouce) itName := g.CurrentSpecReport().FullText() @@ -539,7 +539,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { o.Expect(podName).NotTo(o.Equal(podNameAfterPatch)) }) - g.It("PolarionID:24387-Author:bandrade-ConnectedOnly-High-Any CRD upgrade is allowed if there is only one owner in a cluster [Disruptive]", g.Label("original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-ConnectedOnly-High-24387-Any CRD upgrade is allowed if there is only one owner in a cluster [Disruptive]"), func() { + g.It("PolarionID:24387-[OTP][Skipped:Disconnected]Any CRD upgrade is allowed if there is only one owner in a cluster [Disruptive]", func() { architecture.SkipNonAmd64SingleArch(oc) exutil.SkipBaselineCaps(oc, "None") exutil.SkipIfDisableDefaultCatalogsource(oc) @@ -612,7 +612,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { o.Expect(crdYamlOutput).To(o.ContainSubstring("propertyIncludedTest")) }) - g.It("PolarionID:42970-Author:bandrade-Medium-OperatorGroup status indicates cardinality conflicts - SingleNamespace", g.Label("original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42970-OperatorGroup status indicates cardinality conflicts - SingleNamespace"), func() { + g.It("PolarionID:42970-[OTP]OperatorGroup status indicates cardinality conflicts - SingleNamespace", func() { buildDir := exutil.FixturePath("testdata", "olm") ogTemplate := filepath.Join(buildDir, "operatorgroup.yaml") @@ -650,7 +650,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { exutil.AssertWaitPollNoErr(err, "The error MultipleOperatorGroupsFound still be reported in status") }) - g.It("PolarionID:42972-Author:bandrade-Medium-OperatorGroup status should indicate if the SA named in spec not found", g.Label("original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-42972-OperatorGroup status should indicate if the SA named in spec not found"), func() { + g.It("PolarionID:42972-[OTP]OperatorGroup status should indicate if the SA named in spec not found", func() { buildDir := exutil.FixturePath("testdata", "olm") ogTemplate := filepath.Join(buildDir, "operatorgroup-serviceaccount.yaml") sa := "scoped-42972" @@ -684,7 +684,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { exutil.AssertWaitPollNoErr(err, "The error ServiceAccountNotFound still be reported in status") }) - g.It("PolarionID:21130-Author:bandrade-Medium-Fetching non-existent `PackageManifest` should return 404", g.Label("original-name:[sig-operator][Jira:OLM] OLM should Author:bandrade-Medium-21130-Fetching non-existent `PackageManifest` should return 404"), func() { + g.It("PolarionID:21130-[OTP]Fetching non-existent `PackageManifest` should return 404", func() { msg, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("packagemanifest", "--all-namespaces", "--no-headers").Output() o.Expect(err).NotTo(o.HaveOccurred()) packageserverLines := strings.Split(msg, "\n") @@ -697,7 +697,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { } }) - g.It("PolarionID:24057-NonHyperShiftHOST-Author:bandrade-Low-Have terminationMessagePolicy defined as FallbackToLogsOnError", g.Label("original-name:[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-Author:bandrade-Low-24057-Have terminationMessagePolicy defined as FallbackToLogsOnError"), func() { + g.It("PolarionID:24057-[OTP]Have terminationMessagePolicy defined as FallbackToLogsOnError", func() { labels := [...]string{"app=packageserver", "app=catalog-operator", "app=olm-operator"} for _, l := range labels { msg, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("pods", "-o=jsonpath={range .items[*].spec}{.containers[*].name}{\"\\t\"}", "-n", "openshift-operator-lifecycle-manager", "-l", l).Output() @@ -714,7 +714,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { } }) - g.It("PolarionID:49130-NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes", g.Label("original-name:[sig-operator][Jira:OLM] OLM should NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-49130-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes"), func() { + g.It("PolarionID:49130-[OTP][Skipped:Disconnected]Default CatalogSources deployed by marketplace do not have toleration for tainted nodes", func() { exutil.SkipBaselineCaps(oc, "None") exutil.SkipIfDisableDefaultCatalogsource(oc) @@ -758,7 +758,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { } }) - g.It("PolarionID:32613-ConnectedOnly-Author:bandrade-High-Operators won't install if the CSV dependency is already installed", g.Label("original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-High-32613-Operators won't install if the CSV dependency is already installed"), func() { + g.It("PolarionID:32613-[OTP][Skipped:Disconnected]Operators won't install if the CSV dependency is already installed", func() { architecture.SkipNonAmd64SingleArch(oc) exutil.SkipIfDisableDefaultCatalogsource(oc) exutil.SkipBaselineCaps(oc, "None") @@ -826,7 +826,7 @@ var _ = g.Describe("[sig-operator][Jira:OLM] OLMv0 optional should", func() { olmv0util.NewCheck("expect", exutil.AsAdmin, exutil.WithoutNamespace, exutil.Contain, "prometheus-beta-community-operators-openshift-marketplace exists", exutil.Ok, []string{"subs", "prometheus-32613", "-n", oc.Namespace(), "-o=jsonpath={.status.conditions..message}"}).Check(oc) }) - g.It("PolarionID:24055-ConnectedOnly-Author:bandrade-Low-Check for defaultChannel mandatory field when having multiple channels", g.Label("original-name:[sig-operator][Jira:OLM] OLM should ConnectedOnly-Author:bandrade-Low-24055-Check for defaultChannel mandatory field when having multiple channels"), func() { + g.It("PolarionID:24055-[OTP][Skipped:Disconnected]Check for defaultChannel mandatory field when having multiple channels", func() { olmBaseDir := exutil.FixturePath("testdata", "olm") cmWithoutDefault := filepath.Join(olmBaseDir, "configmap-without-defaultchannel.yaml") cmWithDefault := filepath.Join(olmBaseDir, "configmap-with-defaultchannel.yaml") From ebb557d71d8b96929b3e7818116f902a50a6c85d Mon Sep 17 00:00:00 2001 From: Bruno Andrade Date: Wed, 10 Dec 2025 13:23:51 -0300 Subject: [PATCH 3/3] chore: update metadata --- .../openshift_payload_olmv0.json | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json b/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json index 3a807cfa82..d0bc47c1b3 100644 --- a/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json +++ b/tests-extension/.openshift-tests-extension/openshift_payload_olmv0.json @@ -283,7 +283,7 @@ } }, { - "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24916-Author:bandrade-ConnectedOnly-Medium-Operators in AllNamespaces should be granted namespace list", + "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24916-[OTP][Skipped:Disconnected]Operators in AllNamespaces should be granted namespace list", "labels": { "Extended": {} }, @@ -295,7 +295,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24771-Author:bandrade-Medium-OLM should support for user defined ServiceAccount for OperatorGroup", + "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24771-[OTP]OLM should support for user defined ServiceAccount for OperatorGroup", "labels": { "Extended": {} }, @@ -307,7 +307,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24772-Author:bandrade-Medium-OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission", + "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24772-[OTP]OLM should support for user defined ServiceAccount for OperatorGroup with fine grained permission", "labels": { "Extended": {} }, @@ -319,7 +319,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24886-Author:bandrade-Medium-OLM should support for user defined ServiceAccount permission changes", + "name": "[sig-operator][Jira:OLM] OLMv0 should PolarionID:24886-[OTP]OLM should support for user defined ServiceAccount permission changes", "labels": { "Extended": {} }, @@ -399,7 +399,7 @@ } }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:31693-ConnectedOnly-Author:bandrade-Medium-Check CSV information on the PackageManifest", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:31693-[OTP][Skipped:Disconnected]Check CSV information on the PackageManifest", "labels": { "Extended": {} }, @@ -411,7 +411,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:54038-ConnectedOnly-Author:bandrade-Medium-Comply with Operator Anti-Affinity definition", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:54038-[OTP][Skipped:Disconnected]Comply with Operator Anti-Affinity definition", "labels": { "Extended": {} }, @@ -423,7 +423,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:54036-ConnectedOnly-Author:bandrade-Medium-Comply with Operator NodeAffinity definition", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:54036-[OTP][Skipped:Disconnected]Comply with Operator NodeAffinity definition", "labels": { "Extended": {} }, @@ -435,7 +435,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24850-Author:bandrade-Medium-Allow users to edit the deployment of an active CSV", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24850-[OTP]Allow users to edit the deployment of an active CSV", "labels": { "Extended": {} }, @@ -447,7 +447,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24387-Author:bandrade-ConnectedOnly-High-Any CRD upgrade is allowed if there is only one owner in a cluster [Serial][Disruptive]", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24387-[OTP][Skipped:Disconnected]Any CRD upgrade is allowed if there is only one owner in a cluster [Serial][Disruptive]", "labels": { "Extended": {} }, @@ -459,7 +459,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:42970-Author:bandrade-Medium-OperatorGroup status indicates cardinality conflicts - SingleNamespace", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:42970-[OTP]OperatorGroup status indicates cardinality conflicts - SingleNamespace", "labels": { "Extended": {} }, @@ -471,7 +471,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:42972-Author:bandrade-Medium-OperatorGroup status should indicate if the SA named in spec not found", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:42972-[OTP]OperatorGroup status should indicate if the SA named in spec not found", "labels": { "Extended": {} }, @@ -483,7 +483,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:21130-Author:bandrade-Medium-Fetching non-existent `PackageManifest` should return 404", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:21130-[OTP]Fetching non-existent `PackageManifest` should return 404", "labels": { "Extended": {} }, @@ -495,7 +495,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24057-NonHyperShiftHOST-Author:bandrade-Low-Have terminationMessagePolicy defined as FallbackToLogsOnError", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24057-[OTP]Have terminationMessagePolicy defined as FallbackToLogsOnError", "labels": { "Extended": {} }, @@ -507,7 +507,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:49130-NonHyperShiftHOST-ConnectedOnly-Author:bandrade-Medium-Default CatalogSources deployed by marketplace do not have toleration for tainted nodes", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:49130-[OTP][Skipped:Disconnected]Default CatalogSources deployed by marketplace do not have toleration for tainted nodes", "labels": { "Extended": {} }, @@ -519,7 +519,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:32613-ConnectedOnly-Author:bandrade-High-Operators won't install if the CSV dependency is already installed", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:32613-[OTP][Skipped:Disconnected]Operators won't install if the CSV dependency is already installed", "labels": { "Extended": {} }, @@ -531,7 +531,7 @@ "environmentSelector": {} }, { - "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24055-ConnectedOnly-Author:bandrade-Low-Check for defaultChannel mandatory field when having multiple channels", + "name": "[sig-operator][Jira:OLM] OLMv0 optional should PolarionID:24055-[OTP][Skipped:Disconnected]Check for defaultChannel mandatory field when having multiple channels", "labels": { "Extended": {} },