diff --git a/openshift/tests-extension/.openshift-tests-extension/openshift_payload_olmv1.json b/openshift/tests-extension/.openshift-tests-extension/openshift_payload_olmv1.json index 6229899069..1edaca4afe 100644 --- a/openshift/tests-extension/.openshift-tests-extension/openshift_payload_olmv1.json +++ b/openshift/tests-extension/.openshift-tests-extension/openshift_payload_olmv1.json @@ -1,599 +1,531 @@ [ { - "name": "[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:80078-[OTP]Downstream feature gate promotion mechanics", - "originalName": "[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:80078-Downstream feature gate promotion mechanics", - "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:80078-Downstream feature gate promotion mechanics": {} - }, + "name": "[sig-olmv1][OCPFeatureGate:NewOLMBoxCutterRuntime] OLMv1 Boxcutter runtime should install a cluster extension via the Boxcutter runtime", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:78393-[OTP][Skipped:Disconnected]support metrics", - "labels": { - "Extended": {}, - "NonHyperShiftHOST": {} - }, + "name": "[sig-olmv1][OCPFeatureGate:NewOLMBoxCutterRuntime] OLMv1 Boxcutter runtime should report active revisions in the ClusterExtension status after installation", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:79770-[OTP][Level0]metrics are collected by default", - "labels": { - "Extended": {}, - "NonHyperShiftHOST": {} - }, + "name": "[sig-olmv1][OCPFeatureGate:NewOLMBoxCutterRuntime] OLMv1 Boxcutter runtime should label managed resources with OLM ownership metadata", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:75877-[OTP]Make sure that rukpak is removed from payload", - "labels": { - "Extended": {}, - "NonHyperShiftHOST": {} + "name": "[sig-olmv1][OCPFeatureGate:NewOLMBoxCutterRuntime] OLMv1 Boxcutter runtime should clean up managed resources when a cluster extension is deleted", + "labels": {}, + "resources": { + "isolation": {} }, + "source": "openshift:payload:olmv1", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-olmv1][OCPFeatureGate:NewOLMBoxCutterRuntime] OLMv1 Boxcutter runtime should successfully reinstall a cluster extension after deletion", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69242-[OTP][Skipped:Disconnected]Catalogd deprecated package bundlemetadata catalogmetadata from clustercatalog CR", - "originalName": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69242-[Skipped:Disconnected]Catalogd deprecated package bundlemetadata catalogmetadata from clustercatalog CR", - "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69242-[Skipped:Disconnected]Catalogd deprecated package bundlemetadata catalogmetadata from clustercatalog CR": {} + "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 Catalogs should be installed", + "labels": {}, + "resources": { + "isolation": {} }, + "source": "openshift:payload:olmv1", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 openshift-community-operators Catalog should serve FBC via the /v1/api/all endpoint", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:80458-[OTP][Level0][Skipped:Disconnected]clustercatalog get x509 error since it cannot get the custom CA automatically [Serial]", - "originalName": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:80458-[Skipped:Disconnected]clustercatalog get x509 error since it cannot get the custom CA automatically [Serial]", - "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clustercatalog PolarionID:80458-[Skipped:Disconnected]clustercatalog get x509 error since it cannot get the custom CA automatically [Serial]": {} + "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 openshift-certified-operators Catalog should serve FBC via the /v1/api/all endpoint", + "labels": {}, + "resources": { + "isolation": {} }, + "source": "openshift:payload:olmv1", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 openshift-redhat-operators Catalog should serve FBC via the /v1/api/all endpoint", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:77413-[OTP][Level0][Skipped:Disconnected]Check if ClusterCatalog is in Serving properly", - "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "name": "[sig-olmv1][OCPFeatureGate:NewOLMCatalogdAPIV1Metas][Skipped:Disconnected] OLMv1 openshift-community-operators Catalog should serve FBC via the /v1/api/metas endpoint", + "labels": {}, + "resources": { + "isolation": {} }, + "source": "openshift:payload:olmv1", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-olmv1][OCPFeatureGate:NewOLMCatalogdAPIV1Metas][Skipped:Disconnected] OLMv1 openshift-certified-operators Catalog should serve FBC via the /v1/api/metas endpoint", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69123-[OTP][Skipped:Disconnected]Catalogd clustercatalog offer the operator content through http server", - "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "name": "[sig-olmv1][OCPFeatureGate:NewOLMCatalogdAPIV1Metas][Skipped:Disconnected] OLMv1 openshift-redhat-operators Catalog should serve FBC via the /v1/api/metas endpoint", + "labels": {}, + "resources": { + "isolation": {} }, + "source": "openshift:payload:olmv1", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 New Catalog Install should fail to install if it has an invalid reference", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69069-[OTP][Skipped:Disconnected]Replace pod-based image unpacker with an image registry client", - "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected][Serial] OLMv1 ClusterExtension behavior after selected catalog removal should keep Installed=True and report Progressing=True/Succeeded when the selected catalog is removed", + "labels": {}, + "resources": { + "isolation": {} }, + "source": "openshift:payload:olmv1", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected][Serial] OLMv1 ClusterExtension behavior after selected catalog removal should keep Installed=True when package source is removed by deleting the selected catalog", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69869-[OTP][Skipped:Disconnected]Catalogd Add metrics to the Storage implementation", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply environment variables from deploymentConfig to operator deployment containers", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply environment variables from deploymentConfig to operator deployment containers", "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply environment variables from deploymentConfig to operator deployment containers": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69202-[OTP][Skipped:Disconnected][Skipped:Proxy]Catalogd clustercatalog offer the operator content through http server off cluster", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply resource requirements from deploymentConfig to operator deployment containers", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply resource requirements from deploymentConfig to operator deployment containers", "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply resource requirements from deploymentConfig to operator deployment containers": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:85889-[OTP][Skipped:Disconnected]Validate catalogd content via port-forward [Serial]", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply tolerations from deploymentConfig to operator deployment pods", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply tolerations from deploymentConfig to operator deployment pods", "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply tolerations from deploymentConfig to operator deployment pods": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:73219-[OTP][Skipped:Disconnected]Fetch deprecation data from the catalogd http server", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply node selector from deploymentConfig to operator deployment pods", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply node selector from deploymentConfig to operator deployment pods", "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply node selector from deploymentConfig to operator deployment pods": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75441-[OTP][Skipped:Disconnected]Catalogd supports compression and jsonlines format", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig.env has an invalid type", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig.env has an invalid type", "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig.env has an invalid type": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:73289-[OTP][Skipped:Disconnected]Check the deprecation conditions and messages", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig contains an unknown field", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig contains an unknown field", "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig contains an unknown field": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:74948-[OTP][Skipped:Disconnected]catalog offer the operator content through https server", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply annotations from deploymentConfig to operator deployment and its pod template", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply annotations from deploymentConfig to operator deployment and its pod template", "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply annotations from deploymentConfig to operator deployment and its pod template": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:74978-[OTP][Level0][Skipped:Disconnected]CRD upgrade will be prevented if the Scope is switched between Namespaced and Cluster", + "name": "[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 operator installation should block cluster upgrades if an incompatible operator is installed", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should block cluster upgrades if an incompatible operator is installed", "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should block cluster upgrades if an incompatible operator is installed": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75218-[OTP][Skipped:Disconnected]Disabling the CRD Upgrade Safety preflight checks", - "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} - }, + "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {services} are not specified", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75122-[OTP][Skipped:Disconnected]CRD upgrade check Removing an existing stored version and add a new CRD with no modifications to existing versions", - "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {create} verb is not specified", + "labels": {}, + "resources": { + "isolation": {} }, + "source": "openshift:payload:olmv1", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {ClusterRoleBindings} are not specified", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75123-[OTP][Skipped:Disconnected]CRD upgrade checks for changes in required field and field type", - "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {ConfigMap:resourceNames} are not all specified", + "labels": {}, + "resources": { + "isolation": {} }, + "source": "openshift:payload:olmv1", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {clusterextension/finalizer} is not specified", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75124-[OTP][Skipped:Disconnected]CRD upgrade checks for changes in default values", - "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {clusterobjectsets/finalizer} is not specified", + "labels": {}, + "resources": { + "isolation": {} }, + "source": "openshift:payload:olmv1", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {escalate, bind} is not specified", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75515-[OTP][Skipped:Disconnected]CRD upgrade checks for changes in enumeration values", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace] OLMv1 operator installation support for singleNamespace watch mode with operator should install a cluster extension successfully", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for singleNamespace watch mode with quay-operator should install a cluster extension successfully", "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for singleNamespace watch mode with quay-operator should install a cluster extension successfully": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75516-[OTP][Skipped:Disconnected]CRD upgrade checks for the field maximum minimum changes", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace] OLMv1 operator installation support for ownNamespace watch mode with operator should install a cluster extension successfully", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for ownNamespace watch mode with quay-operator should install a cluster extension successfully", "labels": { - "ClusterCatalog": {}, - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for ownNamespace watch mode with quay-operator should install a cluster extension successfully": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:83069-[OTP]olmv1 static networkpolicy.", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:83069-olmv1 static networkpolicy.", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace] OLMv1 operator installation support for ownNamespace and single namespace watch mode with operator should install cluster extensions successfully in both watch modes", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected][Serial] OLMv1 operator installation support for ownNamespace and single namespace watch mode with quay-operator should install cluster extensions successfully in both watch modes", "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "ReleaseGate": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:83069-olmv1 static networkpolicy.": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected][Serial] OLMv1 operator installation support for ownNamespace and single namespace watch mode with quay-operator should install cluster extensions successfully in both watch modes": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:68936-[OTP]cluster extension can not be installed with insufficient permission sa for operand", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:68936-[Skipped:Disconnected]cluster extension can not be installed with insufficient permission sa for operand", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Serial] OLMv1 operator installation support for ownNamespace watch mode with an operator that does not support ownNamespace installation mode should fail to install a cluster extension successfully", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for ownNamespace watch mode with an operator that does not support ownNamespace installation mode should fail to install a cluster extension successfully", "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:68936-[Skipped:Disconnected]cluster extension can not be installed with insufficient permission sa for operand": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for ownNamespace watch mode with an operator that does not support ownNamespace installation mode should fail to install a cluster extension successfully": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:68937-[OTP]cluster extension can not be installed with insufficient permission sa for operand rbac object", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:68937-[Skipped:Disconnected]cluster extension can not be installed with insufficient permission sa for operand rbac object", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace] OLMv1 operator installation should reject invalid watch namespace configuration and update the status conditions accordingly should fail to install the ClusterExtension when watch namespace is invalid", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected][Serial] OLMv1 operator installation should reject invalid watch namespace configuration and update the status conditions accordingly should fail to install the ClusterExtension when watch namespace is invalid", "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:68937-[Skipped:Disconnected]cluster extension can not be installed with insufficient permission sa for operand rbac object": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected][Serial] OLMv1 operator installation should reject invalid watch namespace configuration and update the status conditions accordingly should fail to install the ClusterExtension when watch namespace is invalid": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:70723-[OTP][Skipped:Disconnected]olmv1 downgrade version", - "labels": { - "Extended": {}, - "NonHyperShiftHOST": {} + "name": "[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 topology-based deployment scaling should configure replicas and PodDisruptionBudgets to match the cluster control plane topology", + "labels": {}, + "resources": { + "isolation": {} }, + "source": "openshift:payload:olmv1", + "lifecycle": "blocking", + "environmentSelector": {} + }, + { + "name": "[sig-olmv1] OLMv1 should pass a trivial sanity check", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:75492-[OTP][Level0]cluster extension can not be installed with wrong sa or insufficient permission sa", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:75492-[Skipped:Disconnected]cluster extension can not be installed with wrong sa or insufficient permission sa", - "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:75492-[Skipped:Disconnected]cluster extension can not be installed with wrong sa or insufficient permission sa": {} - }, + "name": "[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 CRDs should be installed", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:75493-[OTP][Level0]cluster extension can be installed with enough permission sa", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:75493-[Skipped:Disconnected]cluster extension can be installed with enough permission sa", + "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should install an openshift catalog cluster extension", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should install an openshift catalog cluster extension", "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:75493-[Skipped:Disconnected]cluster extension can be installed with enough permission sa": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should install an openshift catalog cluster extension": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81538-[OTP]preflight check on permission on allns mode", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81538-[Skipped:Disconnected]preflight check on permission on allns mode", + "name": "[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 operator installation should install a cluster extension", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should install a cluster extension", "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:81538-[Skipped:Disconnected]preflight check on permission on allns mode": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should install a cluster extension": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81664-[OTP]preflight check on permission on own ns mode", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81664-[Skipped:Disconnected]preflight check on permission on own ns mode", + "name": "[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 operator installation should fail to install a non-existing cluster extension", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should fail to install a non-existing cluster extension", "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:81664-[Skipped:Disconnected]preflight check on permission on own ns mode": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should fail to install a non-existing cluster extension": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81696-[OTP]preflight check on permission on single ns mode", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81696-[Skipped:Disconnected]preflight check on permission on single ns mode", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA] OLMv1 operator with webhooks should have a working validating webhook", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working validating webhook", "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:81696-[Skipped:Disconnected]preflight check on permission on single ns mode": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working validating webhook": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:87224-[Skipped:Disconnected]Upgrade version support [Serial]", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA] OLMv1 operator with webhooks should have a working mutating webhook [Serial]", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working mutating webhook", "labels": { - "Extended": {}, - "NonHyperShiftHOST": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working mutating webhook": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:74618-[OTP]ClusterExtension supports simple registry vzero bundles only", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:74618-[Skipped:Disconnected]ClusterExtension supports simple registry vzero bundles only", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA] OLMv1 operator with webhooks should have a working conversion webhook [Serial]", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working conversion webhook", "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:74618-[Skipped:Disconnected]ClusterExtension supports simple registry vzero bundles only": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working conversion webhook": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76843-[OTP][Skipped:Disconnected]support disc with icsp[Timeout:40m] [Serial][Disruptive][Slow]", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76843-[Skipped:Disconnected]support disc with icsp[Timeout:30m] [Serial][Disruptive][Slow]", + "name": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA] OLMv1 operator with webhooks should be tolerant to tls secret deletion [Serial]", + "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should be tolerant to tls secret deletion", "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:76843-[Skipped:Disconnected]support disc with icsp[Timeout:30m] [Serial][Disruptive][Slow]": {} + "original-name:[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should be tolerant to tls secret deletion": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76844-[OTP][Skipped:Disconnected]support disc with itms and idms[Timeout:40m] [Serial][Disruptive][Slow]", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76844-[Skipped:Disconnected]support disc with itms and idms[Timeout:30m] [Serial][Disruptive][Slow]", - "labels": { - "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:76844-[Skipped:Disconnected]support disc with itms and idms[Timeout:30m] [Serial][Disruptive][Slow]": {} - }, + "name": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA] OLMv1 operator with webhooks should clean up webhooks when the extension is uninstalled [Serial]", + "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": { - "exclude": "topology==\"External\"" - } + "environmentSelector": {} }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:78193-[OTP][Skipped:Disconnected]Runtime validation of container images using sigstore signatures [Serial][Disruptive][Slow]", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:78193-[Skipped:Disconnected]Runtime validation of container images using sigstore signatures [Serial][Disruptive][Slow]", + "name": "[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:80078-[OTP]Downstream feature gate promotion mechanics", + "originalName": "[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:80078-Downstream feature gate promotion mechanics", "labels": { "Extended": {}, "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:78193-[Skipped:Disconnected]Runtime validation of container images using sigstore signatures [Serial][Disruptive][Slow]": {} + "original-name:[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:80078-Downstream feature gate promotion mechanics": {} }, "resources": { "isolation": {} @@ -605,12 +537,10 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:78300-[OTP][Skipped:Disconnected]validation of container images using sigstore signatures with different policy [Serial][Disruptive][Slow]", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:78300-[Skipped:Disconnected]validation of container images using sigstore signatures with different policy [Serial][Disruptive][Slow]", + "name": "[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:78393-[OTP][Skipped:Disconnected]support metrics", "labels": { "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:78300-[Skipped:Disconnected]validation of container images using sigstore signatures with different policy [Serial][Disruptive][Slow]": {} + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} @@ -622,12 +552,10 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76983-[OTP][Skipped:Disconnected]install index and bundle from private image[Slow]", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76983-[Skipped:Disconnected]install index and bundle from private image[Slow]", + "name": "[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:79770-[OTP][Level0]metrics are collected by default", "labels": { "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:76983-[Skipped:Disconnected]install index and bundle from private image[Slow]": {} + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} @@ -639,12 +567,10 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76985-[OTP][Skipped:Disconnected]authfile is updated automatically[Timeout:40m] [Serial][Disruptive][Slow]", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76985-[Skipped:Disconnected]authfile is updated automatically[Timeout:30m] [Serial][Disruptive][Slow]", + "name": "[sig-olmv1][Jira:OLM] cluster-olm-operator PolarionID:75877-[OTP]Make sure that rukpak is removed from payload", "labels": { "Extended": {}, - "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:76985-[Skipped:Disconnected]authfile is updated automatically[Timeout:30m] [Serial][Disruptive][Slow]": {} + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} @@ -656,12 +582,13 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:83026-[OTP][Skipped:Disconnected]clusterextension updates sometimes failed with the following error from the CRDUpgradeCheck resource unknown change and refusing to determine that change is safe", - "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:83026-[Skipped:Disconnected]clusterextension updates sometimes failed with the following error from the CRDUpgradeCheck resource unknown change and refusing to determine that change is safe", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69242-[OTP][Skipped:Disconnected]Catalogd deprecated package bundlemetadata catalogmetadata from clustercatalog CR", + "originalName": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69242-[Skipped:Disconnected]Catalogd deprecated package bundlemetadata catalogmetadata from clustercatalog CR", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {}, - "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:83026-[Skipped:Disconnected]clusterextension updates sometimes failed with the following error from the CRDUpgradeCheck resource unknown change and refusing to determine that change is safe": {} + "original-name:[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69242-[Skipped:Disconnected]Catalogd deprecated package bundlemetadata catalogmetadata from clustercatalog CR": {} }, "resources": { "isolation": {} @@ -673,10 +600,13 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:69196-[OTP][Level0][Skipped:Disconnected]Supports Version Ranges during clusterextension upgrade", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:80458-[OTP][Level0][Skipped:Disconnected]clustercatalog get x509 error since it cannot get the custom CA automatically [Serial]", + "originalName": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:80458-[Skipped:Disconnected]clustercatalog get x509 error since it cannot get the custom CA automatically [Serial]", "labels": { + "ClusterCatalog": {}, "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clustercatalog PolarionID:80458-[Skipped:Disconnected]clustercatalog get x509 error since it cannot get the custom CA automatically [Serial]": {} }, "resources": { "isolation": {} @@ -688,8 +618,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:68821-[OTP][Skipped:Disconnected]Supports Version Ranges during Installation", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:77413-[OTP][Level0][Skipped:Disconnected]Check if ClusterCatalog is in Serving properly", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -703,8 +634,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:74108-[OTP][Skipped:Disconnected][Slow]olm v1 supports legacy upgrade edges", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69123-[OTP][Skipped:Disconnected]Catalogd clustercatalog offer the operator content through http server", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -718,8 +650,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:74923-[OTP][Skipped:Disconnected]no two ClusterExtensions can manage the same underlying object", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69069-[OTP][Skipped:Disconnected]Replace pod-based image unpacker with an image registry client", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -733,8 +666,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:75501-[OTP][Skipped:Disconnected]the updates of various status fields is orthogonal", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69869-[OTP][Skipped:Disconnected]Catalogd Add metrics to the Storage implementation", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -748,8 +682,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76685-[OTP][Skipped:Disconnected]olm v1 supports selecting catalogs [Serial]", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:69202-[OTP][Skipped:Disconnected][Skipped:Proxy]Catalogd clustercatalog offer the operator content through http server off cluster", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -763,8 +698,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:77972-[OTP][Skipped:Disconnected]olm v1 Supports MaxOCPVersion in properties file", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:85889-[OTP][Skipped:Disconnected]Validate catalogd content via port-forward [Serial]", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -778,8 +714,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:82249-[OTP][Skipped:Disconnected]Verify olmv1 support for float type maxOCPVersion in properties file", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:73219-[OTP][Skipped:Disconnected]Fetch deprecation data from the catalogd http server", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -793,8 +730,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:80117-[OTP][Skipped:Disconnected] Single Namespace Install Mode should be supported", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75441-[OTP][Skipped:Disconnected]Catalogd supports compression and jsonlines format", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -808,8 +746,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:80120-[OTP][Skipped:Disconnected] Own Namespace Install Mode should be supported", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:73289-[OTP][Skipped:Disconnected]Check the deprecation conditions and messages", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -823,8 +762,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:82136-[OTP][Skipped:Disconnected]olm v1 supports NetworkPolicy resources", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:74948-[OTP][Skipped:Disconnected]catalog offer the operator content through https server", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -838,8 +778,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:83979-[OTP][Skipped:Disconnected]ClusterExtension installs webhook-operator and webhooks work", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:74978-[OTP][Level0][Skipped:Disconnected]CRD upgrade will be prevented if the Scope is switched between Namespaced and Cluster", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -853,8 +794,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87536-deploymentConfig env vars are applied to operator deployment and available in pod", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75218-[OTP][Skipped:Disconnected]Disabling the CRD Upgrade Safety preflight checks", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -868,8 +810,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87537-deploymentConfig env vars override existing bundle env vars with same name", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75122-[OTP][Skipped:Disconnected]CRD upgrade check Removing an existing stored version and add a new CRD with no modifications to existing versions", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -883,8 +826,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87539-[Skipped:Disconnected]deploymentConfig envFrom sources are appended to operator deployment without duplicates", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75123-[OTP][Skipped:Disconnected]CRD upgrade checks for changes in required field and field type", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -898,8 +842,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87541-[Skipped:Disconnected]deploymentConfig volumes are appended to operator deployment", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75124-[OTP][Skipped:Disconnected]CRD upgrade checks for changes in default values", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -913,8 +858,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87542-[Skipped:Disconnected]deploymentConfig volumeMounts are appended to all operator containers", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75515-[OTP][Skipped:Disconnected]CRD upgrade checks for changes in enumeration values", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -928,8 +874,9 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87543-[Skipped:Disconnected]deploymentConfig tolerations are appended to operator deployment without duplicates", + "name": "[sig-olmv1][Jira:OLM] clustercatalog PolarionID:75516-[OTP][Skipped:Disconnected]CRD upgrade checks for the field maximum minimum changes", "labels": { + "ClusterCatalog": {}, "Extended": {}, "NonHyperShiftHOST": {} }, @@ -943,10 +890,13 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87544-[Skipped:Disconnected]deploymentConfig resources completely replace existing resource requirements", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:83069-[OTP]olmv1 static networkpolicy.", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:83069-olmv1 static networkpolicy.", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "ReleaseGate": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:83069-olmv1 static networkpolicy.": {} }, "resources": { "isolation": {} @@ -958,10 +908,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87545-[Skipped:Disconnected]deploymentConfig nodeSelector completely replaces existing node selector", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:68936-[OTP]cluster extension can not be installed with insufficient permission sa for operand", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:68936-[Skipped:Disconnected]cluster extension can not be installed with insufficient permission sa for operand", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:68936-[Skipped:Disconnected]cluster extension can not be installed with insufficient permission sa for operand": {} }, "resources": { "isolation": {} @@ -973,10 +925,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87546-[Skipped:Disconnected]deploymentConfig nodeAffinity overrides existing nodeAffinity", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:68937-[OTP]cluster extension can not be installed with insufficient permission sa for operand rbac object", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:68937-[Skipped:Disconnected]cluster extension can not be installed with insufficient permission sa for operand rbac object", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:68937-[Skipped:Disconnected]cluster extension can not be installed with insufficient permission sa for operand rbac object": {} }, "resources": { "isolation": {} @@ -988,7 +942,7 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87547-[Skipped:Disconnected]deploymentConfig podAffinity overrides existing podAffinity", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:70723-[OTP][Skipped:Disconnected]olmv1 downgrade version", "labels": { "Extended": {}, "NonHyperShiftHOST": {} @@ -1003,10 +957,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87548-[Skipped:Disconnected]deploymentConfig podAntiAffinity overrides existing podAntiAffinity", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:75492-[OTP][Level0]cluster extension can not be installed with wrong sa or insufficient permission sa", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:75492-[Skipped:Disconnected]cluster extension can not be installed with wrong sa or insufficient permission sa", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:75492-[Skipped:Disconnected]cluster extension can not be installed with wrong sa or insufficient permission sa": {} }, "resources": { "isolation": {} @@ -1018,10 +974,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87549-[Skipped:Disconnected]deploymentConfig annotations are merged with existing taking precedence", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:75493-[OTP][Level0]cluster extension can be installed with enough permission sa", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:75493-[Skipped:Disconnected]cluster extension can be installed with enough permission sa", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:75493-[Skipped:Disconnected]cluster extension can be installed with enough permission sa": {} }, "resources": { "isolation": {} @@ -1033,10 +991,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87550-[Skipped:Disconnected]deploymentConfig with resources and nodeSelector both work correctly", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81538-[OTP]preflight check on permission on allns mode", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81538-[Skipped:Disconnected]preflight check on permission on allns mode", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:81538-[Skipped:Disconnected]preflight check on permission on allns mode": {} }, "resources": { "isolation": {} @@ -1048,10 +1008,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87551-[Skipped:Disconnected]deploymentConfig with env tolerations and resources all work correctly", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81664-[OTP]preflight check on permission on own ns mode", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81664-[Skipped:Disconnected]preflight check on permission on own ns mode", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:81664-[Skipped:Disconnected]preflight check on permission on own ns mode": {} }, "resources": { "isolation": {} @@ -1063,10 +1025,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87552-[Skipped:Disconnected]deploymentConfig works correctly when combined with watchNamespace configuration", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81696-[OTP]preflight check on permission on single ns mode", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:81696-[Skipped:Disconnected]preflight check on permission on single ns mode", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:81696-[Skipped:Disconnected]preflight check on permission on single ns mode": {} }, "resources": { "isolation": {} @@ -1078,7 +1042,7 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87553-[Skipped:Disconnected]adding deploymentConfig multiple fields to existing ClusterExtension works correctly", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:87224-[Skipped:Disconnected]Upgrade version support [Serial]", "labels": { "Extended": {}, "NonHyperShiftHOST": {} @@ -1093,10 +1057,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87554-[Skipped:Disconnected]modifying deploymentConfig multiple fields in existing ClusterExtension works correctly", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:74618-[OTP]ClusterExtension supports simple registry vzero bundles only", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:74618-[Skipped:Disconnected]ClusterExtension supports simple registry vzero bundles only", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:74618-[Skipped:Disconnected]ClusterExtension supports simple registry vzero bundles only": {} }, "resources": { "isolation": {} @@ -1108,10 +1074,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87555-[Skipped:Disconnected]removing entire deploymentConfig from ClusterExtension reverts all settings to bundle defaults", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76843-[OTP][Skipped:Disconnected]support disc with icsp[Timeout:40m] [Serial][Disruptive][Slow]", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76843-[Skipped:Disconnected]support disc with icsp[Timeout:30m] [Serial][Disruptive][Slow]", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:76843-[Skipped:Disconnected]support disc with icsp[Timeout:30m] [Serial][Disruptive][Slow]": {} }, "resources": { "isolation": {} @@ -1123,10 +1091,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87556-[Skipped:Disconnected]removing partial fields from deploymentConfig reverts those fields to bundle defaults while keeping others", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76844-[OTP][Skipped:Disconnected]support disc with itms and idms[Timeout:40m] [Serial][Disruptive][Slow]", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76844-[Skipped:Disconnected]support disc with itms and idms[Timeout:30m] [Serial][Disruptive][Slow]", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:76844-[Skipped:Disconnected]support disc with itms and idms[Timeout:30m] [Serial][Disruptive][Slow]": {} }, "resources": { "isolation": {} @@ -1138,10 +1108,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85510-watchNamespace configuration with AllNamespaces InstallMode", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:78193-[OTP][Skipped:Disconnected]Runtime validation of container images using sigstore signatures [Serial][Disruptive][Slow]", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:78193-[Skipped:Disconnected]Runtime validation of container images using sigstore signatures [Serial][Disruptive][Slow]", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:78193-[Skipped:Disconnected]Runtime validation of container images using sigstore signatures [Serial][Disruptive][Slow]": {} }, "resources": { "isolation": {} @@ -1153,10 +1125,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85543-watchNamespace configuration with AllNamespaces+OwnNamespace+SingleNamespace InstallModes", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:78300-[OTP][Skipped:Disconnected]validation of container images using sigstore signatures with different policy [Serial][Disruptive][Slow]", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:78300-[Skipped:Disconnected]validation of container images using sigstore signatures with different policy [Serial][Disruptive][Slow]", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:78300-[Skipped:Disconnected]validation of container images using sigstore signatures with different policy [Serial][Disruptive][Slow]": {} }, "resources": { "isolation": {} @@ -1168,10 +1142,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85546-watchNamespace configuration with OwnNamespace+SingleNamespace InstallModes", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76983-[OTP][Skipped:Disconnected]install index and bundle from private image[Slow]", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76983-[Skipped:Disconnected]install index and bundle from private image[Slow]", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:76983-[Skipped:Disconnected]install index and bundle from private image[Slow]": {} }, "resources": { "isolation": {} @@ -1183,10 +1159,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85547-watchNamespace configuration with SingleNamespace InstallMode", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76985-[OTP][Skipped:Disconnected]authfile is updated automatically[Timeout:40m] [Serial][Disruptive][Slow]", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76985-[Skipped:Disconnected]authfile is updated automatically[Timeout:30m] [Serial][Disruptive][Slow]", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:76985-[Skipped:Disconnected]authfile is updated automatically[Timeout:30m] [Serial][Disruptive][Slow]": {} }, "resources": { "isolation": {} @@ -1198,10 +1176,12 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85549-watchNamespace configuration with OwnNamespace InstallMode", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:83026-[OTP][Skipped:Disconnected]clusterextension updates sometimes failed with the following error from the CRDUpgradeCheck resource unknown change and refusing to determine that change is safe", + "originalName": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:83026-[Skipped:Disconnected]clusterextension updates sometimes failed with the following error from the CRDUpgradeCheck resource unknown change and refusing to determine that change is safe", "labels": { "Extended": {}, - "NonHyperShiftHOST": {} + "NonHyperShiftHOST": {}, + "original-name:[sig-olmv1][Jira:OLM] clusterextension PolarionID:83026-[Skipped:Disconnected]clusterextension updates sometimes failed with the following error from the CRDUpgradeCheck resource unknown change and refusing to determine that change is safe": {} }, "resources": { "isolation": {} @@ -1213,7 +1193,7 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85650-[Skipped:Disconnected]API-level error validation for watchNamespace configuration", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:69196-[OTP][Level0][Skipped:Disconnected]Supports Version Ranges during clusterextension upgrade", "labels": { "Extended": {}, "NonHyperShiftHOST": {} @@ -1228,11 +1208,10 @@ } }, { - "name": "[sig-olmv1][Jira:OLM] OLM v1 for stress PolarionID:81509-[OTP][Skipped:Disconnected][OlmStress]olmv1 create mass operator to see if they all are installed successfully [Slow][Timeout:330m]", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:68821-[OTP][Skipped:Disconnected]Supports Version Ranges during Installation", "labels": { "Extended": {}, - "NonHyperShiftHOST": {}, - "StressTest": {} + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} @@ -1244,523 +1223,574 @@ } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMBoxCutterRuntime] OLMv1 Boxcutter runtime should install a cluster extension via the Boxcutter runtime", - "labels": {}, - "resources": { - "isolation": {} - }, - "source": "openshift:payload:olmv1", - "lifecycle": "blocking", - "environmentSelector": {} - }, - { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMBoxCutterRuntime] OLMv1 Boxcutter runtime should report active revisions in the ClusterExtension status after installation", - "labels": {}, - "resources": { - "isolation": {} + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:74108-[OTP][Skipped:Disconnected][Slow]olm v1 supports legacy upgrade edges", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} }, - "source": "openshift:payload:olmv1", - "lifecycle": "blocking", - "environmentSelector": {} - }, - { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMBoxCutterRuntime] OLMv1 Boxcutter runtime should label managed resources with OLM ownership metadata", - "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMBoxCutterRuntime] OLMv1 Boxcutter runtime should clean up managed resources when a cluster extension is deleted", - "labels": {}, - "resources": { - "isolation": {} + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:74923-[OTP][Skipped:Disconnected]no two ClusterExtensions can manage the same underlying object", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} }, - "source": "openshift:payload:olmv1", - "lifecycle": "blocking", - "environmentSelector": {} - }, - { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMBoxCutterRuntime] OLMv1 Boxcutter runtime should successfully reinstall a cluster extension after deletion", - "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 Catalogs should be installed", - "labels": {}, - "resources": { - "isolation": {} + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:75501-[OTP][Skipped:Disconnected]the updates of various status fields is orthogonal", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} }, - "source": "openshift:payload:olmv1", - "lifecycle": "blocking", - "environmentSelector": {} - }, - { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 openshift-community-operators Catalog should serve FBC via the /v1/api/all endpoint", - "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 openshift-certified-operators Catalog should serve FBC via the /v1/api/all endpoint", - "labels": {}, - "resources": { - "isolation": {} + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:76685-[OTP][Skipped:Disconnected]olm v1 supports selecting catalogs [Serial]", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} }, - "source": "openshift:payload:olmv1", - "lifecycle": "blocking", - "environmentSelector": {} - }, - { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 openshift-redhat-operators Catalog should serve FBC via the /v1/api/all endpoint", - "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMCatalogdAPIV1Metas][Skipped:Disconnected] OLMv1 openshift-community-operators Catalog should serve FBC via the /v1/api/metas endpoint", - "labels": {}, - "resources": { - "isolation": {} + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:77972-[OTP][Skipped:Disconnected]olm v1 Supports MaxOCPVersion in properties file", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} }, - "source": "openshift:payload:olmv1", - "lifecycle": "blocking", - "environmentSelector": {} - }, - { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMCatalogdAPIV1Metas][Skipped:Disconnected] OLMv1 openshift-certified-operators Catalog should serve FBC via the /v1/api/metas endpoint", - "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMCatalogdAPIV1Metas][Skipped:Disconnected] OLMv1 openshift-redhat-operators Catalog should serve FBC via the /v1/api/metas endpoint", - "labels": {}, - "resources": { - "isolation": {} + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:82249-[OTP][Skipped:Disconnected]Verify olmv1 support for float type maxOCPVersion in properties file", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} }, - "source": "openshift:payload:olmv1", - "lifecycle": "blocking", - "environmentSelector": {} - }, - { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 New Catalog Install should fail to install if it has an invalid reference", - "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected][Serial] OLMv1 ClusterExtension behavior after selected catalog removal should keep Installed=True and report Progressing=True/Succeeded when the selected catalog is removed", - "labels": {}, - "resources": { - "isolation": {} + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:80117-[OTP][Skipped:Disconnected] Single Namespace Install Mode should be supported", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} }, - "source": "openshift:payload:olmv1", - "lifecycle": "blocking", - "environmentSelector": {} - }, - { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected][Serial] OLMv1 ClusterExtension behavior after selected catalog removal should keep Installed=True when package source is removed by deleting the selected catalog", - "labels": {}, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply environment variables from deploymentConfig to operator deployment containers", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply environment variables from deploymentConfig to operator deployment containers", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:80120-[OTP][Skipped:Disconnected] Own Namespace Install Mode should be supported", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply environment variables from deploymentConfig to operator deployment containers": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply resource requirements from deploymentConfig to operator deployment containers", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply resource requirements from deploymentConfig to operator deployment containers", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:82136-[OTP][Skipped:Disconnected]olm v1 supports NetworkPolicy resources", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply resource requirements from deploymentConfig to operator deployment containers": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply tolerations from deploymentConfig to operator deployment pods", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply tolerations from deploymentConfig to operator deployment pods", + "name": "[sig-olmv1][Jira:OLM] clusterextension PolarionID:83979-[OTP][Skipped:Disconnected]ClusterExtension installs webhook-operator and webhooks work", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply tolerations from deploymentConfig to operator deployment pods": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply node selector from deploymentConfig to operator deployment pods", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply node selector from deploymentConfig to operator deployment pods", + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87536-deploymentConfig env vars are applied to operator deployment and available in pod", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply node selector from deploymentConfig to operator deployment pods": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig.env has an invalid type", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig.env has an invalid type", + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87537-deploymentConfig env vars override existing bundle env vars with same name", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig.env has an invalid type": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig contains an unknown field", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig contains an unknown field", + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87539-[Skipped:Disconnected]deploymentConfig envFrom sources are appended to operator deployment without duplicates", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should reach a terminal blocked state when deploymentConfig contains an unknown field": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply annotations from deploymentConfig to operator deployment and its pod template", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply annotations from deploymentConfig to operator deployment and its pod template", + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87541-[Skipped:Disconnected]deploymentConfig volumes are appended to operator deployment", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMConfigAPI][Skipped:Disconnected] OLMv1 DeploymentConfig support should apply annotations from deploymentConfig to operator deployment and its pod template": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 operator installation should block cluster upgrades if an incompatible operator is installed", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should block cluster upgrades if an incompatible operator is installed", + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87542-[Skipped:Disconnected]deploymentConfig volumeMounts are appended to all operator containers", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should block cluster upgrades if an incompatible operator is installed": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {services} are not specified", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87543-[Skipped:Disconnected]deploymentConfig tolerations are appended to operator deployment without duplicates", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {create} verb is not specified", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87544-[Skipped:Disconnected]deploymentConfig resources completely replace existing resource requirements", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {ClusterRoleBindings} are not specified", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87545-[Skipped:Disconnected]deploymentConfig nodeSelector completely replaces existing node selector", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {ConfigMap:resourceNames} are not all specified", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87546-[Skipped:Disconnected]deploymentConfig nodeAffinity overrides existing nodeAffinity", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {clusterextension/finalizer} is not specified", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87547-[Skipped:Disconnected]deploymentConfig podAffinity overrides existing podAffinity", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {clusterobjectsets/finalizer} is not specified", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87548-[Skipped:Disconnected]deploymentConfig podAntiAffinity overrides existing podAntiAffinity", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMPreflightPermissionChecks][Skipped:Disconnected] OLMv1 operator preflight checks should report error when {escalate, bind} is not specified", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87549-[Skipped:Disconnected]deploymentConfig annotations are merged with existing taking precedence", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace] OLMv1 operator installation support for singleNamespace watch mode with operator should install a cluster extension successfully", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for singleNamespace watch mode with quay-operator should install a cluster extension successfully", + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87550-[Skipped:Disconnected]deploymentConfig with resources and nodeSelector both work correctly", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for singleNamespace watch mode with quay-operator should install a cluster extension successfully": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace] OLMv1 operator installation support for ownNamespace watch mode with operator should install a cluster extension successfully", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for ownNamespace watch mode with quay-operator should install a cluster extension successfully", + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87551-[Skipped:Disconnected]deploymentConfig with env tolerations and resources all work correctly", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for ownNamespace watch mode with quay-operator should install a cluster extension successfully": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace] OLMv1 operator installation support for ownNamespace and single namespace watch mode with operator should install cluster extensions successfully in both watch modes", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected][Serial] OLMv1 operator installation support for ownNamespace and single namespace watch mode with quay-operator should install cluster extensions successfully in both watch modes", + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87552-[Skipped:Disconnected]deploymentConfig works correctly when combined with watchNamespace configuration", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected][Serial] OLMv1 operator installation support for ownNamespace and single namespace watch mode with quay-operator should install cluster extensions successfully in both watch modes": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Serial] OLMv1 operator installation support for ownNamespace watch mode with an operator that does not support ownNamespace installation mode should fail to install a cluster extension successfully", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for ownNamespace watch mode with an operator that does not support ownNamespace installation mode should fail to install a cluster extension successfully", + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87553-[Skipped:Disconnected]adding deploymentConfig multiple fields to existing ClusterExtension works correctly", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected] OLMv1 operator installation support for ownNamespace watch mode with an operator that does not support ownNamespace installation mode should fail to install a cluster extension successfully": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace] OLMv1 operator installation should reject invalid watch namespace configuration and update the status conditions accordingly should fail to install the ClusterExtension when watch namespace is invalid", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected][Serial] OLMv1 operator installation should reject invalid watch namespace configuration and update the status conditions accordingly should fail to install the ClusterExtension when watch namespace is invalid", + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87554-[Skipped:Disconnected]modifying deploymentConfig multiple fields in existing ClusterExtension works correctly", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMOwnSingleNamespace][Skipped:Disconnected][Serial] OLMv1 operator installation should reject invalid watch namespace configuration and update the status conditions accordingly should fail to install the ClusterExtension when watch namespace is invalid": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 topology-based deployment scaling should configure replicas and PodDisruptionBudgets to match the cluster control plane topology", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87555-[Skipped:Disconnected]removing entire deploymentConfig from ClusterExtension reverts all settings to bundle defaults", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1] OLMv1 should pass a trivial sanity check", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM] OLMv1 ClusterExtension DeploymentConfig PolarionID:87556-[Skipped:Disconnected]removing partial fields from deploymentConfig reverts those fields to bundle defaults while keeping others", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 CRDs should be installed", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM][OCPFeatureGate:NewOLMBoxCutterRuntime] clusterextension progress deadline PolarionID:88331-[OTP]A ClusterExtension is created and a persistent error prevents it from being fully rolled out", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should install an openshift catalog cluster extension", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should install an openshift catalog cluster extension", + "name": "[sig-olmv1][Jira:OLM][OCPFeatureGate:NewOLMBoxCutterRuntime] clusterextension progress deadline PolarionID:88332-[OTP]A ClusterExtension is being upgraded and a persistent error prevents it from being fully rolled out", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should install an openshift catalog cluster extension": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 operator installation should install a cluster extension", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should install a cluster extension", + "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85510-watchNamespace configuration with AllNamespaces InstallMode", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should install a cluster extension": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLM] OLMv1 operator installation should fail to install a non-existing cluster extension", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should fail to install a non-existing cluster extension", + "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85543-watchNamespace configuration with AllNamespaces+OwnNamespace+SingleNamespace InstallModes", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLM][Skipped:Disconnected] OLMv1 operator installation should fail to install a non-existing cluster extension": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA] OLMv1 operator with webhooks should have a working validating webhook", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working validating webhook", + "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85546-watchNamespace configuration with OwnNamespace+SingleNamespace InstallModes", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working validating webhook": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA] OLMv1 operator with webhooks should have a working mutating webhook [Serial]", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working mutating webhook", + "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85547-watchNamespace configuration with SingleNamespace InstallMode", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working mutating webhook": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA] OLMv1 operator with webhooks should have a working conversion webhook [Serial]", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working conversion webhook", + "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85549-watchNamespace configuration with OwnNamespace InstallMode", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should have a working conversion webhook": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA] OLMv1 operator with webhooks should be tolerant to tls secret deletion [Serial]", - "originalName": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should be tolerant to tls secret deletion", + "name": "[sig-olmv1][Jira:OLM] clusterextension watchNamespace configuration PolarionID:85650-[Skipped:Disconnected]API-level error validation for watchNamespace configuration", "labels": { - "original-name:[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA][Skipped:Disconnected][Serial] OLMv1 operator with webhooks should be tolerant to tls secret deletion": {} + "Extended": {}, + "NonHyperShiftHOST": {} }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } }, { - "name": "[sig-olmv1][OCPFeatureGate:NewOLMWebhookProviderOpenshiftServiceCA] OLMv1 operator with webhooks should clean up webhooks when the extension is uninstalled [Serial]", - "labels": {}, + "name": "[sig-olmv1][Jira:OLM] OLM v1 for stress PolarionID:81509-[OTP][Skipped:Disconnected][OlmStress]olmv1 create mass operator to see if they all are installed successfully [Slow][Timeout:330m]", + "labels": { + "Extended": {}, + "NonHyperShiftHOST": {}, + "StressTest": {} + }, "resources": { "isolation": {} }, "source": "openshift:payload:olmv1", "lifecycle": "blocking", - "environmentSelector": {} + "environmentSelector": { + "exclude": "topology==\"External\"" + } } ] diff --git a/openshift/tests-extension/test/qe/specs/olmv1_ce_progress_deadline.go b/openshift/tests-extension/test/qe/specs/olmv1_ce_progress_deadline.go new file mode 100644 index 0000000000..969c6c0f22 --- /dev/null +++ b/openshift/tests-extension/test/qe/specs/olmv1_ce_progress_deadline.go @@ -0,0 +1,576 @@ +package specs + +import ( + "archive/tar" + "context" + "encoding/json" + "fmt" + "os" + "strings" + "time" + + g "github.com/onsi/ginkgo/v2" + o "github.com/onsi/gomega" + buildv1 "github.com/openshift/api/build/v1" + "github.com/openshift/api/features" + imagev1 "github.com/openshift/api/image/v1" + "github.com/openshift/origin/test/extended/util/image" + corev1 "k8s.io/api/core/v1" + rbacv1 "k8s.io/api/rbac/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/utils/ptr" + "sigs.k8s.io/controller-runtime/pkg/client" + + olmv1 "github.com/operator-framework/operator-controller/api/v1" + + "github.com/openshift/operator-framework-operator-controller/openshift/tests-extension/pkg/env" + "github.com/openshift/operator-framework-operator-controller/openshift/tests-extension/pkg/helpers" + exutil "github.com/openshift/operator-framework-operator-controller/openshift/tests-extension/test/qe/util" +) + +var _ = g.Describe("[sig-olmv1][Jira:OLM][OCPFeatureGate:NewOLMBoxCutterRuntime] clusterextension progress deadline", g.Label("NonHyperShiftHOST"), func() { + defer g.GinkgoRecover() + + var oc = exutil.NewCLIWithoutNamespace("default") + + g.BeforeEach(func(ctx g.SpecContext) { + exutil.SkipMicroshift(oc) + exutil.SkipNoOLMv1Core(oc) + helpers.RequireFeatureGateEnabled(features.FeatureGateNewOLMBoxCutterRuntime) + helpers.RequireImageRegistry(ctx) + }) + + g.AfterEach(func() { + if g.CurrentSpecReport().Failed() { + helpers.DescribeAllClusterCatalogs(context.Background()) + helpers.DescribeAllClusterExtensions(context.Background(), "") + } + }) + + g.It("PolarionID:88331-[OTP]A ClusterExtension is created and a persistent error prevents it from being fully rolled out", func(ctx g.SpecContext) { + const caseID = "88331" + fixture := newRolloutFailureFixture(ctx, oc, caseID, []rolloutFailureBundle{ + {Version: "1.0.2", ControllerImage: "wrong/image"}, + }) + + g.By("creating a ClusterExtension with a 1-minute progress deadline for the failing bundle") + ce := fixture.newClusterExtension("test-ce-install-timeout-"+caseID, "1.0.2", "olm-sa", ptr.To(int32(1))) + o.Expect(env.Get().K8sClient.Create(ctx, ce)).To(o.Succeed(), "failed to create ClusterExtension") + g.DeferCleanup(deleteObject, ce) + + g.By("waiting for the first ClusterObjectSet to report ProgressDeadlineExceeded") + expectClusterObjectSetCondition(ctx, ce.Name+"-1", olmv1.TypeProgressing, metav1.ConditionFalse, olmv1.ReasonProgressDeadlineExceeded) + + g.By("verifying the ClusterExtension reports ProgressDeadlineExceeded") + expectClusterExtensionCondition(ctx, ce.Name, olmv1.TypeProgressing, metav1.ConditionFalse, olmv1.ReasonProgressDeadlineExceeded, "Revision has not rolled out for 1 minute(s).") + }) + + g.It("PolarionID:88332-[OTP]A ClusterExtension is being upgraded and a persistent error prevents it from being fully rolled out", func(ctx g.SpecContext) { + const caseID = "88332" + fixture := newRolloutFailureFixture(ctx, oc, caseID, []rolloutFailureBundle{ + {Version: "1.0.0", ControllerImage: image.ShellImage()}, + {Version: "1.0.2", ControllerImage: "wrong/image", Replaces: "1.0.0"}, + }) + + g.By("creating a ClusterExtension on a healthy initial version") + ce := fixture.newClusterExtension("test-ce-upgrade-failure-"+caseID, "1.0.0", "olm-sa", nil) + ce.Spec.Source.Catalog.UpgradeConstraintPolicy = olmv1.UpgradeConstraintPolicySelfCertified + o.Expect(env.Get().K8sClient.Create(ctx, ce)).To(o.Succeed(), "failed to create ClusterExtension") + g.DeferCleanup(deleteObject, ce) + + g.By("waiting for the initial installation to complete") + expectClusterExtensionCondition(ctx, ce.Name, olmv1.TypeInstalled, metav1.ConditionTrue, "", "") + expectClusterExtensionCondition(ctx, ce.Name, olmv1.TypeProgressing, metav1.ConditionTrue, olmv1.ReasonSucceeded, "") + + g.By("updating the ClusterExtension to a version with a persistent rollout error") + patch := []byte(`{"spec":{"source":{"catalog":{"version":"1.0.2"}}}}`) + o.Expect(env.Get().K8sClient.Patch(ctx, ce, client.RawPatch(types.MergePatchType, patch))).To(o.Succeed(), "failed to patch ClusterExtension") + + g.By("verifying both revisions remain active during the failed upgrade") + expectActiveRevisions(ctx, ce.Name, ce.Name+"-1", ce.Name+"-2") + + g.By("verifying the new revision is still rolling out") + expectClusterObjectSetCondition(ctx, ce.Name+"-2", olmv1.TypeProgressing, metav1.ConditionTrue, olmv1.ReasonRollingOut) + + g.By("verifying the new revision reports probe failure") + expectClusterObjectSetCondition(ctx, ce.Name+"-2", olmv1.ClusterObjectSetTypeAvailable, metav1.ConditionFalse, olmv1.ClusterObjectSetReasonProbeFailure) + }) +}) + +type rolloutFailureBundle struct { + Version string + ControllerImage string + Replaces string +} + +type rolloutFailureFixture struct { + Namespace string + CatalogName string +} + +func newRolloutFailureFixture(ctx g.SpecContext, oc *exutil.CLI, caseID string, bundles []rolloutFailureBundle) rolloutFailureFixture { + k8sClient := env.Get().K8sClient + namespace := "ns-" + caseID + catalogName := "test-catalog-" + caseID + + g.By("creating a test namespace") + ns := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}} + o.Expect(k8sClient.Create(ctx, ns)).To(o.Succeed(), "failed to create Namespace") + g.DeferCleanup(deleteObject, ns) + helpers.ExpectServiceAccountExists(ctx, "builder", namespace) + helpers.ExpectServiceAccountExists(ctx, "deployer", namespace) + + g.By("creating the ServiceAccount and permissions for the ClusterExtension") + sa := &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: "olm-sa", Namespace: namespace}} + o.Expect(k8sClient.Create(ctx, sa)).To(o.Succeed(), "failed to create ServiceAccount") + g.DeferCleanup(deleteObject, sa) + + crb := &rbacv1.ClusterRoleBinding{ + ObjectMeta: metav1.ObjectMeta{Name: "olm-sa-" + caseID + "-cluster-admin"}, + RoleRef: rbacv1.RoleRef{ + APIGroup: "rbac.authorization.k8s.io", + Kind: "ClusterRole", + Name: "cluster-admin", + }, + Subjects: []rbacv1.Subject{{ + Kind: "ServiceAccount", + Name: sa.Name, + Namespace: namespace, + }}, + } + o.Expect(k8sClient.Create(ctx, crb)).To(o.Succeed(), "failed to create ClusterRoleBinding") + g.DeferCleanup(deleteObject, crb) + + g.By("allowing catalogd and operator-controller to pull test images") + rb := &rbacv1.RoleBinding{ + ObjectMeta: metav1.ObjectMeta{Name: "image-puller-" + caseID, Namespace: namespace}, + RoleRef: rbacv1.RoleRef{ + APIGroup: "rbac.authorization.k8s.io", + Kind: "ClusterRole", + Name: "system:image-puller", + }, + Subjects: []rbacv1.Subject{ + {APIGroup: "rbac.authorization.k8s.io", Kind: "Group", Name: "system:serviceaccounts:openshift-catalogd"}, + {APIGroup: "rbac.authorization.k8s.io", Kind: "Group", Name: "system:serviceaccounts:openshift-operator-controller"}, + }, + } + o.Expect(k8sClient.Create(ctx, rb)).To(o.Succeed(), "failed to create image-puller RoleBinding") + g.DeferCleanup(deleteObject, rb) + + bundleRefs := make(map[string]string, len(bundles)) + for _, bundle := range bundles { + imageName := fmt.Sprintf("test-bundle-%s-%s", caseID, strings.ReplaceAll(bundle.Version, ".", "-")) + bundleRefs[bundle.Version] = fmt.Sprintf("image-registry.openshift-image-registry.svc:5000/%s/%s:latest", namespace, imageName) + buildImage(ctx, oc, namespace, imageName, bundleImageFiles(caseID, bundle)) + } + + g.By("building the catalog image") + buildImage(ctx, oc, namespace, catalogName, catalogImageFiles(caseID, bundles, bundleRefs)) + + g.By("creating the ClusterCatalog") + catalog := &olmv1.ClusterCatalog{ + ObjectMeta: metav1.ObjectMeta{Name: catalogName}, + Spec: olmv1.ClusterCatalogSpec{ + Source: olmv1.CatalogSource{ + Type: olmv1.SourceTypeImage, + Image: &olmv1.ImageSource{ + PollIntervalMinutes: ptr.To(600), + Ref: fmt.Sprintf("image-registry.openshift-image-registry.svc:5000/%s/%s:latest", namespace, catalogName), + }, + }, + }, + } + o.Expect(k8sClient.Create(ctx, catalog)).To(o.Succeed(), "failed to create ClusterCatalog") + g.DeferCleanup(deleteObject, catalog) + expectClusterCatalogServing(ctx, catalogName) + + return rolloutFailureFixture{ + Namespace: namespace, + CatalogName: catalogName, + } +} + +func (f rolloutFailureFixture) newClusterExtension(name, version, serviceAccount string, progressDeadlineMinutes *int32) *olmv1.ClusterExtension { + ce := &olmv1.ClusterExtension{ + ObjectMeta: metav1.ObjectMeta{Name: name}, + Spec: olmv1.ClusterExtensionSpec{ + Namespace: f.Namespace, + ServiceAccount: olmv1.ServiceAccountReference{ + Name: serviceAccount, + }, + Source: olmv1.SourceConfig{ + SourceType: olmv1.SourceTypeCatalog, + Catalog: &olmv1.CatalogFilter{ + PackageName: "test", + Version: version, + Selector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + "olm.operatorframework.io/metadata.name": f.CatalogName, + }, + }, + }, + }, + }, + } + if progressDeadlineMinutes != nil { + ce.Spec.ProgressDeadlineMinutes = *progressDeadlineMinutes + } + return ce +} + +func buildImage(ctx g.SpecContext, oc *exutil.CLI, namespace, name string, files map[string][]byte) { + k8sClient := env.Get().K8sClient + + imageStream := &imagev1.ImageStream{ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace}} + o.Expect(k8sClient.Create(ctx, imageStream)).To(o.Succeed(), "failed to create ImageStream %s", name) + g.DeferCleanup(deleteObject, imageStream) + + buildConfig := &buildv1.BuildConfig{ + ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace}, + Spec: buildv1.BuildConfigSpec{ + CommonSpec: buildv1.CommonSpec{ + Source: buildv1.BuildSource{Type: buildv1.BuildSourceBinary}, + Strategy: buildv1.BuildStrategy{ + Type: buildv1.DockerBuildStrategyType, + DockerStrategy: &buildv1.DockerBuildStrategy{ + ForcePull: true, + From: &corev1.ObjectReference{ + Kind: "DockerImage", + Name: "scratch", + }, + }, + }, + Output: buildv1.BuildOutput{ + To: &corev1.ObjectReference{ + Kind: "ImageStreamTag", + Name: name + ":latest", + }, + }, + }, + }, + } + o.Expect(k8sClient.Create(ctx, buildConfig)).To(o.Succeed(), "failed to create BuildConfig %s", name) + g.DeferCleanup(deleteObject, buildConfig) + + archive := createBuildArchive(files) + g.DeferCleanup(func() { + o.Expect(os.Remove(archive)).To(o.Succeed(), "failed to delete build archive %s", archive) + }) + + output, err := oc.AsAdmin().WithoutNamespace().Run("start-build").Args(name, "-n", namespace, "--from-archive="+archive, "--wait").Output() + o.Expect(err).NotTo(o.HaveOccurred(), "failed to build image %s: %s", name, output) +} + +func createBuildArchive(files map[string][]byte) string { + file, err := os.CreateTemp("", "rollout-failure-build-*.tar") + o.Expect(err).NotTo(o.HaveOccurred(), "failed to create build archive") + defer func() { + o.Expect(file.Close()).To(o.Succeed(), "failed to close build archive") + }() + + tw := tar.NewWriter(file) + defer func() { + o.Expect(tw.Close()).To(o.Succeed(), "failed to close tar writer") + }() + + for name, data := range files { + hdr := &tar.Header{ + Name: name, + Size: int64(len(data)), + Mode: 0o644, + } + o.Expect(tw.WriteHeader(hdr)).To(o.Succeed(), "failed to write tar header for %s", name) + _, err := tw.Write(data) + o.Expect(err).NotTo(o.HaveOccurred(), "failed to write tar content for %s", name) + } + return file.Name() +} + +func bundleImageFiles(caseID string, bundle rolloutFailureBundle) map[string][]byte { + replacements := map[string]string{ + "{{ CASE_ID }}": caseID, + "{{ VERSION }}": bundle.Version, + "{{ CONTROLLER_IMAGE }}": bundle.ControllerImage, + } + files := map[string]string{ + "Dockerfile": bundleDockerfile, + "metadata/annotations.yaml": bundleAnnotations, + "metadata/properties.yaml": bundleProperties, + "manifests/test.clusterserviceversion.yaml": bundleCSV, + "manifests/test-script.configmap.yaml": bundleScriptConfigMap, + } + out := make(map[string][]byte, len(files)) + for name, content := range files { + out[name] = []byte(replaceAll(content, replacements)) + } + return out +} + +func catalogImageFiles(caseID string, bundles []rolloutFailureBundle, bundleRefs map[string]string) map[string][]byte { + var fbc strings.Builder + writeCatalogEntry := func(entry any) { + data, err := json.Marshal(entry) + o.Expect(err).NotTo(o.HaveOccurred(), "failed to marshal catalog metadata") + _, err = fbc.Write(data) + o.Expect(err).NotTo(o.HaveOccurred(), "failed to write catalog metadata") + o.Expect(fbc.WriteByte('\n')).To(o.Succeed(), "failed to terminate catalog metadata entry") + } + + writeCatalogEntry(map[string]any{ + "schema": "olm.package", + "name": "test", + "defaultChannel": "alpha", + }) + + for _, bundle := range bundles { + writeCatalogEntry(map[string]any{ + "schema": "olm.bundle", + "name": "test.v" + bundle.Version, + "package": "test", + "image": bundleRefs[bundle.Version], + "properties": []map[string]any{{ + "type": "olm.package", + "value": map[string]string{ + "packageName": "test", + "version": bundle.Version, + }, + }}, + }) + } + + entries := make([]map[string]string, 0, len(bundles)) + for _, bundle := range bundles { + entry := map[string]string{"name": "test.v" + bundle.Version} + if bundle.Replaces == "" { + entries = append(entries, entry) + continue + } + entry["replaces"] = "test.v" + bundle.Replaces + entries = append(entries, entry) + } + writeCatalogEntry(map[string]any{ + "schema": "olm.channel", + "name": "alpha", + "package": "test", + "entries": entries, + }) + + return map[string][]byte{ + "Dockerfile": []byte(catalogDockerfile), + "configs/.indexignore": []byte("..*\n"), + "configs/catalog-" + caseID + ".yaml": []byte(fbc.String()), + } +} + +func replaceAll(input string, replacements map[string]string) string { + for old, newValue := range replacements { + input = strings.ReplaceAll(input, old, newValue) + } + return input +} + +func expectClusterCatalogServing(ctx context.Context, name string) { + eventually(func(g o.Gomega) { + catalog := &olmv1.ClusterCatalog{} + err := env.Get().K8sClient.Get(ctx, client.ObjectKey{Name: name}, catalog) + g.Expect(err).NotTo(o.HaveOccurred(), "failed to get ClusterCatalog") + + serving := meta.FindStatusCondition(catalog.Status.Conditions, olmv1.TypeServing) + g.Expect(serving).NotTo(o.BeNil(), "Serving condition not found") + g.Expect(serving.Status).To(o.Equal(metav1.ConditionTrue), "Serving condition should be True") + }, 5*time.Minute) +} + +func expectClusterExtensionCondition(ctx context.Context, name, conditionType string, status metav1.ConditionStatus, reason, messageSubstring string) { + eventually(func(g o.Gomega) { + ce := &olmv1.ClusterExtension{} + err := env.Get().K8sClient.Get(ctx, client.ObjectKey{Name: name}, ce) + g.Expect(err).NotTo(o.HaveOccurred(), "failed to get ClusterExtension") + + condition := meta.FindStatusCondition(ce.Status.Conditions, conditionType) + g.Expect(condition).NotTo(o.BeNil(), "%s condition not found", conditionType) + g.Expect(condition.Status).To(o.Equal(status), "%s status mismatch", conditionType) + if reason != "" { + g.Expect(condition.Reason).To(o.Equal(reason), "%s reason mismatch", conditionType) + } + if messageSubstring != "" { + g.Expect(condition.Message).To(o.ContainSubstring(messageSubstring), "%s message mismatch", conditionType) + } + }, 3*time.Minute) +} + +func expectClusterObjectSetCondition(ctx context.Context, name, conditionType string, status metav1.ConditionStatus, reason string) { + eventually(func(g o.Gomega) { + cos := &olmv1.ClusterObjectSet{} + err := env.Get().K8sClient.Get(ctx, client.ObjectKey{Name: name}, cos) + g.Expect(err).NotTo(o.HaveOccurred(), "failed to get ClusterObjectSet") + + condition := meta.FindStatusCondition(cos.Status.Conditions, conditionType) + g.Expect(condition).NotTo(o.BeNil(), "%s condition not found", conditionType) + g.Expect(condition.Status).To(o.Equal(status), "%s status mismatch", conditionType) + g.Expect(condition.Reason).To(o.Equal(reason), "%s reason mismatch", conditionType) + }, 3*time.Minute) +} + +func expectActiveRevisions(ctx context.Context, name string, expected ...string) { + eventually(func(g o.Gomega) { + ce := &olmv1.ClusterExtension{} + err := env.Get().K8sClient.Get(ctx, client.ObjectKey{Name: name}, ce) + g.Expect(err).NotTo(o.HaveOccurred(), "failed to get ClusterExtension") + + actual := make([]string, 0, len(ce.Status.ActiveRevisions)) + for _, revision := range ce.Status.ActiveRevisions { + actual = append(actual, revision.Name) + } + g.Expect(actual).To(o.ConsistOf(expected), "active revisions mismatch") + }, 3*time.Minute) +} + +func eventually(callback func(o.Gomega), timeout time.Duration) { + o.Eventually(callback).WithTimeout(timeout).WithPolling(helpers.DefaultPolling).Should(o.Succeed()) +} + +func deleteObject(obj client.Object) { + err := env.Get().K8sClient.Delete(context.Background(), obj) + if err != nil && !errors.IsNotFound(err) { + o.Expect(err).NotTo(o.HaveOccurred(), "failed to delete %s %s", obj.GetObjectKind().GroupVersionKind().Kind, obj.GetName()) + } +} + +const bundleDockerfile = `FROM scratch + +LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 +LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ +LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ +LABEL operators.operatorframework.io.bundle.package.v1=test +LABEL operators.operatorframework.io.bundle.channels.v1=alpha + +COPY manifests /manifests/ +COPY metadata /metadata/ +` + +const bundleAnnotations = `annotations: + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: test + operators.operatorframework.io.bundle.channels.v1: alpha +` + +const bundleProperties = `properties: []` + +const bundleScriptConfigMap = `apiVersion: v1 +kind: ConfigMap +metadata: + name: test-script-{{ CASE_ID }} +data: + httpd.sh: |- + #!/bin/sh + mkdir -p /tmp/www + echo true > /tmp/www/started + echo true > /tmp/www/ready + echo true > /tmp/www/live + exec httpd -f -h /tmp/www -p 8080 +` + +const bundleCSV = `apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + name: test.v{{ VERSION }} + annotations: + capabilities: Basic Install +spec: + displayName: test + description: test + installModes: + - supported: true + type: AllNamespaces + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + install: + strategy: deployment + spec: + deployments: + - name: test-controller-manager-{{ CASE_ID }} + spec: + replicas: 1 + selector: + matchLabels: + app: test-controller-manager-{{ CASE_ID }} + template: + metadata: + labels: + app: test-controller-manager-{{ CASE_ID }} + spec: + serviceAccountName: test-controller-manager-{{ CASE_ID }} + securityContext: + runAsNonRoot: true + volumes: + - name: scripts + configMap: + name: test-script-{{ CASE_ID }} + defaultMode: 0755 + containers: + - name: manager + image: "{{ CONTROLLER_IMAGE }}" + command: + - /scripts/httpd.sh + ports: + - containerPort: 8080 + name: http + volumeMounts: + - name: scripts + mountPath: /scripts + readOnly: true + startupProbe: + httpGet: + path: /started + port: http + failureThreshold: 30 + periodSeconds: 10 + readinessProbe: + httpGet: + path: /ready + port: http + initialDelaySeconds: 5 + periodSeconds: 10 + livenessProbe: + httpGet: + path: /live + port: http + initialDelaySeconds: 15 + periodSeconds: 20 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + permissions: + - serviceAccountName: test-controller-manager-{{ CASE_ID }} + rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + version: {{ VERSION }} +` + +const catalogDockerfile = `FROM scratch +ADD configs /configs +LABEL operators.operatorframework.io.index.configs.v1=/configs +`