diff --git a/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/AROSwift/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml b/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/AROSwift/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml index 2d9b1f3026d..fb3ee8bbb26 100644 --- a/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/AROSwift/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml +++ b/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/AROSwift/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml @@ -137,12 +137,6 @@ spec: rm -f /var/payload/manifests/*_deployment.yaml rm -f /var/payload/manifests/*_servicemonitor.yaml cp -R /release-manifests /var/payload/ - for file in $(find /var/payload/manifests/ -name "*.yaml"); do - IFS=',' read -ra feature_sets <<< "$(cat $file | grep "release.openshift.io/feature-set:" | awk '{print $2}')" - if [[ "${#feature_sets[@]}" -gt 0 ]] && ! [[ " ${feature_sets[*]} " =~ "Default" ]]; then - rm -vf $file - fi - done rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-config.yaml rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-rbac.yaml rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-secret.yaml @@ -306,13 +300,11 @@ spec: cat > /tmp/clusterversion.json < /dev/null || oc create ns openshift-config - oc get ns openshift-config-managed &> /dev/null || oc create ns openshift-config-managed - oc apply -f /var/payload/manifests/0000_00_cluster-version-operator_01_clusterversions* - oc apply -f /tmp/clusterversion.json - while true; do + echo 'Deciding whether bootstrap resources need to be applied...' + ls -l $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests) /tmp/clusterversion.json + while test -z "$(oc get -o jsonpath='{.status.history[0].version}' clusterversions.config.openshift.io version)"; do echo "Applying CVO bootstrap manifests..." - if oc apply -f /var/payload/manifests; then + if oc apply $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests | sed 's/^/-f /') -f /tmp/clusterversion.json; then echo "Bootstrap manifests applied successfully." break fi diff --git a/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/GCP/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml b/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/GCP/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml index 1b3c7f44f78..0a5070f2c81 100644 --- a/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/GCP/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml +++ b/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/GCP/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml @@ -148,12 +148,6 @@ spec: rm -f /var/payload/manifests/*_deployment.yaml rm -f /var/payload/manifests/*_servicemonitor.yaml cp -R /release-manifests /var/payload/ - for file in $(find /var/payload/manifests/ -name "*.yaml"); do - IFS=',' read -ra feature_sets <<< "$(cat $file | grep "release.openshift.io/feature-set:" | awk '{print $2}')" - if [[ "${#feature_sets[@]}" -gt 0 ]] && ! [[ " ${feature_sets[*]} " =~ "TechPreviewNoUpgrade" ]]; then - rm -vf $file - fi - done rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-config.yaml rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-rbac.yaml rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-secret.yaml @@ -323,13 +317,11 @@ spec: cat > /tmp/clusterversion.json < /dev/null || oc create ns openshift-config - oc get ns openshift-config-managed &> /dev/null || oc create ns openshift-config-managed - oc apply -f /var/payload/manifests/0000_00_cluster-version-operator_01_clusterversions* - oc apply -f /tmp/clusterversion.json - while true; do + echo 'Deciding whether bootstrap resources need to be applied...' + ls -l $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests) /tmp/clusterversion.json + while test -z "$(oc get -o jsonpath='{.status.history[0].version}' clusterversions.config.openshift.io version)"; do echo "Applying CVO bootstrap manifests..." - if oc apply -f /var/payload/manifests; then + if oc apply $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests | sed 's/^/-f /') -f /tmp/clusterversion.json; then echo "Bootstrap manifests applied successfully." break fi diff --git a/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/IBMCloud/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml b/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/IBMCloud/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml index 553aad2bbe4..5d4a8451a8c 100644 --- a/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/IBMCloud/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml +++ b/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/IBMCloud/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml @@ -137,12 +137,6 @@ spec: rm -f /var/payload/manifests/*_deployment.yaml rm -f /var/payload/manifests/*_servicemonitor.yaml cp -R /release-manifests /var/payload/ - for file in $(find /var/payload/manifests/ -name "*.yaml"); do - IFS=',' read -ra feature_sets <<< "$(cat $file | grep "release.openshift.io/feature-set:" | awk '{print $2}')" - if [[ "${#feature_sets[@]}" -gt 0 ]] && ! [[ " ${feature_sets[*]} " =~ "Default" ]]; then - rm -vf $file - fi - done rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-config.yaml rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-rbac.yaml rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-secret.yaml @@ -243,13 +237,11 @@ spec: cat > /tmp/clusterversion.json < /dev/null || oc create ns openshift-config - oc get ns openshift-config-managed &> /dev/null || oc create ns openshift-config-managed - oc apply -f /var/payload/manifests/0000_00_cluster-version-operator_01_clusterversions* - oc apply -f /tmp/clusterversion.json - while true; do + echo 'Deciding whether bootstrap resources need to be applied...' + ls -l $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests) /tmp/clusterversion.json + while test -z "$(oc get -o jsonpath='{.status.history[0].version}' clusterversions.config.openshift.io version)"; do echo "Applying CVO bootstrap manifests..." - if oc apply -f /var/payload/manifests; then + if oc apply $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests | sed 's/^/-f /') -f /tmp/clusterversion.json; then echo "Bootstrap manifests applied successfully." break fi diff --git a/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/TechPreviewNoUpgrade/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml b/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/TechPreviewNoUpgrade/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml index e1230b097c4..fb3ee8bbb26 100644 --- a/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/TechPreviewNoUpgrade/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml +++ b/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/TechPreviewNoUpgrade/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml @@ -137,12 +137,6 @@ spec: rm -f /var/payload/manifests/*_deployment.yaml rm -f /var/payload/manifests/*_servicemonitor.yaml cp -R /release-manifests /var/payload/ - for file in $(find /var/payload/manifests/ -name "*.yaml"); do - IFS=',' read -ra feature_sets <<< "$(cat $file | grep "release.openshift.io/feature-set:" | awk '{print $2}')" - if [[ "${#feature_sets[@]}" -gt 0 ]] && ! [[ " ${feature_sets[*]} " =~ "TechPreviewNoUpgrade" ]]; then - rm -vf $file - fi - done rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-config.yaml rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-rbac.yaml rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-secret.yaml @@ -306,13 +300,11 @@ spec: cat > /tmp/clusterversion.json < /dev/null || oc create ns openshift-config - oc get ns openshift-config-managed &> /dev/null || oc create ns openshift-config-managed - oc apply -f /var/payload/manifests/0000_00_cluster-version-operator_01_clusterversions* - oc apply -f /tmp/clusterversion.json - while true; do + echo 'Deciding whether bootstrap resources need to be applied...' + ls -l $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests) /tmp/clusterversion.json + while test -z "$(oc get -o jsonpath='{.status.history[0].version}' clusterversions.config.openshift.io version)"; do echo "Applying CVO bootstrap manifests..." - if oc apply -f /var/payload/manifests; then + if oc apply $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests | sed 's/^/-f /') -f /tmp/clusterversion.json; then echo "Bootstrap manifests applied successfully." break fi diff --git a/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml b/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml index 2d9b1f3026d..fb3ee8bbb26 100644 --- a/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml +++ b/control-plane-operator/controllers/hostedcontrolplane/testdata/cluster-version-operator/zz_fixture_TestControlPlaneComponents_cluster_version_operator_deployment.yaml @@ -137,12 +137,6 @@ spec: rm -f /var/payload/manifests/*_deployment.yaml rm -f /var/payload/manifests/*_servicemonitor.yaml cp -R /release-manifests /var/payload/ - for file in $(find /var/payload/manifests/ -name "*.yaml"); do - IFS=',' read -ra feature_sets <<< "$(cat $file | grep "release.openshift.io/feature-set:" | awk '{print $2}')" - if [[ "${#feature_sets[@]}" -gt 0 ]] && ! [[ " ${feature_sets[*]} " =~ "Default" ]]; then - rm -vf $file - fi - done rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-config.yaml rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-rbac.yaml rm -f /var/payload/release-manifests/0000_50_olm_00-pprof-secret.yaml @@ -306,13 +300,11 @@ spec: cat > /tmp/clusterversion.json < /dev/null || oc create ns openshift-config - oc get ns openshift-config-managed &> /dev/null || oc create ns openshift-config-managed - oc apply -f /var/payload/manifests/0000_00_cluster-version-operator_01_clusterversions* - oc apply -f /tmp/clusterversion.json - while true; do + echo 'Deciding whether bootstrap resources need to be applied...' + ls -l $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests) /tmp/clusterversion.json + while test -z "$(oc get -o jsonpath='{.status.history[0].version}' clusterversions.config.openshift.io version)"; do echo "Applying CVO bootstrap manifests..." - if oc apply -f /var/payload/manifests; then + if oc apply $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests | sed 's/^/-f /') -f /tmp/clusterversion.json; then echo "Bootstrap manifests applied successfully." break fi diff --git a/control-plane-operator/controllers/hostedcontrolplane/v2/assets/cluster-version-operator/deployment.yaml b/control-plane-operator/controllers/hostedcontrolplane/v2/assets/cluster-version-operator/deployment.yaml index f43b002ccda..2880ab4ef68 100644 --- a/control-plane-operator/controllers/hostedcontrolplane/v2/assets/cluster-version-operator/deployment.yaml +++ b/control-plane-operator/controllers/hostedcontrolplane/v2/assets/cluster-version-operator/deployment.yaml @@ -91,13 +91,11 @@ spec: cat > /tmp/clusterversion.json < /dev/null || oc create ns openshift-config - oc get ns openshift-config-managed &> /dev/null || oc create ns openshift-config-managed - oc apply -f /var/payload/manifests/0000_00_cluster-version-operator_01_clusterversions* - oc apply -f /tmp/clusterversion.json - while true; do + echo 'Deciding whether bootstrap resources need to be applied...' + ls -l $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests) /tmp/clusterversion.json + while test -z "$(oc get -o jsonpath='{.status.history[0].version}' clusterversions.config.openshift.io version)"; do echo "Applying CVO bootstrap manifests..." - if oc apply -f /var/payload/manifests; then + if oc apply $(grep -rl 'include.release.openshift.io/bootstrap-cluster-version-operator: .*hypershift' /var/payload/manifests | sed 's/^/-f /') -f /tmp/clusterversion.json; then echo "Bootstrap manifests applied successfully." break fi diff --git a/control-plane-operator/controllers/hostedcontrolplane/v2/cvo/deployment.go b/control-plane-operator/controllers/hostedcontrolplane/v2/cvo/deployment.go index 56c175e9868..d74df2b1103 100644 --- a/control-plane-operator/controllers/hostedcontrolplane/v2/cvo/deployment.go +++ b/control-plane-operator/controllers/hostedcontrolplane/v2/cvo/deployment.go @@ -204,18 +204,6 @@ func preparePayloadScript(platformType hyperv1.PlatformType, oauthEnabled bool, fmt.Sprintf("cp -R /release-manifests %s/", payloadDir), ) - // NOTE: We would need to leverage part of the manifest.Include logic (https://github.com/openshift/library-go/blob/0064ad7bd060b9fd52f7840972c1d3e72186d0f0/pkg/manifest/manifest.go#L190-L196) - // to properly evaluate which CVO manifests to select based on featureset. - // We only have access to bash, so we must filter based on the feature-set annotation in the manifests manually. - // Any file that has a feature-set annotation must have a value that matches the current feature set else it is removed. - // Files that do not have a feature-set annotation are included unconditionally. - stmts = append(stmts, fmt.Sprintf(`for file in $(find %s/manifests/ -name "*.yaml"); do - IFS=',' read -ra feature_sets <<< "$(cat $file | grep "release.openshift.io/feature-set:" | awk '{print $2}')" - if [[ "${#feature_sets[@]}" -gt 0 ]] && ! [[ " ${feature_sets[*]} " =~ "%s" ]]; then - rm -vf $file - fi -done`, payloadDir, featureSet)) - for _, manifest := range manifestsToOmit { if platformType == hyperv1.IBMCloudPlatform || platformType == hyperv1.PowerVSPlatform { if manifest == "0000_50_cluster-storage-operator_10_deployment-ibm-cloud-managed.yaml" || manifest == "0000_50_cluster-csi-snapshot-controller-operator_07_deployment-ibm-cloud-managed.yaml" {