From 0a0a1069b41b6107217fc134dff99b70afa84583 Mon Sep 17 00:00:00 2001 From: M Sajid Mansoori Date: Wed, 29 Jul 2026 17:43:42 +0530 Subject: [PATCH 1/7] :bug: Fix mta-801 golden manifest diff mismatch for ocp Signed-off-by: M Sajid Mansoori --- .../ConfigMap__v1_redis_kube-root-ca.crt.yaml | 152 ++++++++++++++++ ...ap__v1_redis_openshift-service-ca.crt.yaml | 52 ++++++ .../redis/Deployment_apps_v1_redis_redis.yaml | 166 ++++++++++++++++++ ...discovery.k8s.io_v1_redis_redis-r8vds.yaml | 49 ++++++ .../redis/Endpoints__v1_redis_redis.yaml | 23 +++ ...stentVolumeClaim__v1_redis_redis-data.yaml | 82 +++++++++ ...icaSet_apps_v1_redis_redis-6b9f4c765d.yaml | 141 +++++++++++++++ ...penshift.io_v1_redis_system:deployers.yaml | 34 ++++ ...ift.io_v1_redis_system:image-builders.yaml | 33 ++++ ...hift.io_v1_redis_system:image-pullers.yaml | 32 ++++ ...tion.k8s.io_v1_redis_system:deployers.yaml | 33 ++++ ...k8s.io_v1_redis_system:image-builders.yaml | 32 ++++ ....k8s.io_v1_redis_system:image-pullers.yaml | 32 ++++ ...ret__v1_redis_builder-dockercfg-lgfpb.yaml | 44 +++++ ...ret__v1_redis_default-dockercfg-jpgs2.yaml | 44 +++++ ...et__v1_redis_deployer-dockercfg-vf8ll.yaml | 44 +++++ .../redis/Secret__v1_redis_redis.yaml | 22 +++ .../ServiceAccount__v1_redis_builder.yaml | 27 +++ .../ServiceAccount__v1_redis_default.yaml | 27 +++ .../ServiceAccount__v1_redis_deployer.yaml | 27 +++ .../redis/Service__v1_redis_redis.yaml | 53 ++++++ .../redis/output/output.yaml | 84 +++++++++ .../redis/Deployment_apps_v1_redis_redis.yaml | 53 ++++++ .../redis/Secret__v1_redis_redis.yaml | 8 + .../redis/Service__v1_redis_redis.yaml | 21 +++ .../tier0/mta_801_stateful_migration_test.go | 17 +- 26 files changed, 1328 insertions(+), 4 deletions(-) create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_kube-root-ca.crt.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_openshift-service-ca.crt.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Deployment_apps_v1_redis_redis.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/EndpointSlice_discovery.k8s.io_v1_redis_redis-r8vds.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Endpoints__v1_redis_redis.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/PersistentVolumeClaim__v1_redis_redis-data.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ReplicaSet_apps_v1_redis_redis-6b9f4c765d.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:deployers.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:image-builders.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:image-pullers.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:deployers.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:image-builders.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:image-pullers.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_builder-dockercfg-lgfpb.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_default-dockercfg-jpgs2.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_deployer-dockercfg-vf8ll.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_redis.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_builder.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_default.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_deployer.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Service__v1_redis_redis.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/output/output.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Deployment_apps_v1_redis_redis.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Secret__v1_redis_redis.yaml create mode 100644 e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Service__v1_redis_redis.yaml diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_kube-root-ca.crt.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_kube-root-ca.crt.yaml new file mode 100644 index 00000000..9cdb92ca --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_kube-root-ca.crt.yaml @@ -0,0 +1,152 @@ +apiVersion: v1 +data: + ca.crt: | + -----BEGIN CERTIFICATE----- + MIIDMjCCAhqgAwIBAgIIWhqGRrDrzlAwDQYJKoZIhvcNAQELBQAwNzESMBAGA1UE + CxMJb3BlbnNoaWZ0MSEwHwYDVQQDExhrdWJlLWFwaXNlcnZlci1sYi1zaWduZXIw + HhcNMjYwNzI5MDQxMjIzWhcNMzYwNzI2MDQxMjIzWjA3MRIwEAYDVQQLEwlvcGVu + c2hpZnQxITAfBgNVBAMTGGt1YmUtYXBpc2VydmVyLWxiLXNpZ25lcjCCASIwDQYJ + KoZIhvcNAQEBBQADggEPADCCAQoCggEBALmDDTGr+bpb+16L+umYHZkQz9NH3gyw + sY9gWan2t8GIfH2vS7CbbRNeLiHs/kIojBKfvl55nqZJjcdiovMptDJhye0PzzDj + A1k75YcBZxJIvTbYqrw8g41CgVoq6ie91rW1MCDxoNUExeL0l2lMotXMPihfljxg + dxM6k9p3dCavPhxc2djptdM4216lPqcvDONMQKu9u6taU8eIP58+8VRYHaPmZ+tu + 18+9vvvK0vVy7RzIyu58m5SEoo7g7rLcKDS01fEpd3SwcnLGJAu3nH1zrJy52R1S + V+OP1/RFnLGepDgilgQdzS5bcUJh6bS2YHmxFMuSe6Y9bMVrgUdyW28CAwEAAaNC + MEAwDgYDVR0PAQH/BAQDAgKkMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCRJ + UhLpTsSSGNt4oWam39bSH0NXMA0GCSqGSIb3DQEBCwUAA4IBAQAoI/0xhP37aUvP + GT1ejrSDHZHKL2kIpoLSJ4XskF0pu7wJpDOJ/ZZd9PraPHbDmhaL+Sj5i1dHcuog + AsPljiOBM2XszTf1/jVoNbVtqeZHNA2yAS9S3FK2NgiSe3qZdt4tBanCAz8Vmdo8 + NopLBLkPCLyAhq95UhLWfB9I9tFU/Fj24uGji2zIPG29H28QNdzopjTYZIWGsgr1 + RmrGphHAKu7X2ObXaBKNgrtNvenYdi9nJKEmLpuEAO/0JUG0UkNBJvSUddNTmFxZ + kNZaOpAJ2OxU7mS+z7BscV40lWAmBNTSzfiVCumCN7H+goyZmjtxYeM2N/LAkP1z + mm5LNysB + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIDQDCCAiigAwIBAgIIKFrxFadTVs4wDQYJKoZIhvcNAQELBQAwPjESMBAGA1UE + CxMJb3BlbnNoaWZ0MSgwJgYDVQQDEx9rdWJlLWFwaXNlcnZlci1sb2NhbGhvc3Qt + c2lnbmVyMB4XDTI2MDcyOTA0MTIyM1oXDTM2MDcyNjA0MTIyM1owPjESMBAGA1UE + CxMJb3BlbnNoaWZ0MSgwJgYDVQQDEx9rdWJlLWFwaXNlcnZlci1sb2NhbGhvc3Qt + c2lnbmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtTSIp3C+bjBv + n9jyY3DmqjYiVHUMrGEVUjDATeHbNreo0oC9B6EnTTspTFvOHs0r80i1kry2XEyw + OKFdJaloa8H3gSXAp11Da45xJM5SzVeIln6RySLtiOjeG4O6dXxgakVUXSg3KnBG + Elrc8H/6A2K7AVWEEonvQ37S8wtuNNgKrET1pjLuJCWFoEASxHklyUYC9MT3jGbC + hlr/N3772rRhzbEp+jLMMImiItQW+Eg7wak4t9UbohaNNo1Q+alWrz29enlZRpCC + nYWnStxsPheduR+xIchkux7gSqC+VzwGHgLcxjpSIBpO+Dsi9ZqFefAx+zvGfIxE + DOFu2OdGrwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB + /zAdBgNVHQ4EFgQUE65reJigFKAk+rkmYa4+EHnOc7QwDQYJKoZIhvcNAQELBQAD + ggEBAII0qokTJtFx9vZW7eUVwGGGkb8vEt31nlvfI2+WKkRWMqLsLVdrIrvDFv4o + oTxBWCLaQ79Vft4E7cjgh8f08h5bBv6iCLJp8UMBb4g6bOtGWFTntIb08CwZh/vV + ICNRBeH6pnAU0lGK7koAAi1CRWD+u5j0bWFaDlGhIU6nwhKyLJAjnmCvK/4hbPNG + 3nmdtJEp1kxcqiUq7iA5fWL7GtjvZL9Ivl0fqOn1sCDvMHBU26vXnGNWnDwWubM4 + HGyt/7g3dWCORQY/ddknnXMlAQoD16q2/DHLvLCRN+L3h4ZXGzpdUL8K93wNIQx2 + QQjcVAg3Yl0AFC+DGHgp1Dnlwho= + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIDTDCCAjSgAwIBAgIIRi/MIHnkUxkwDQYJKoZIhvcNAQELBQAwRDESMBAGA1UE + CxMJb3BlbnNoaWZ0MS4wLAYDVQQDEyVrdWJlLWFwaXNlcnZlci1zZXJ2aWNlLW5l + dHdvcmstc2lnbmVyMB4XDTI2MDcyOTA0MTIyM1oXDTM2MDcyNjA0MTIyM1owRDES + MBAGA1UECxMJb3BlbnNoaWZ0MS4wLAYDVQQDEyVrdWJlLWFwaXNlcnZlci1zZXJ2 + aWNlLW5ldHdvcmstc2lnbmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC + AQEA5LWJcfavzKMdtTHCpQ6w874nhDBzkHUdE+QFdeosWtzmBXD9I3N3Hp7GsiWF + twKIsXCngCtMgZeuYku2zT0JMNz4m1RdZU4HjVqIYX4B8vCSh2K4P7QfXB85zDZZ + YV//exF3NJgSaVgZIJPZWYjHBQe2DtVOY7J2mupzx5wpBKKcd4AFU1AqZMETevbV + 2GXek6bE7C2j+qW2dmpGRXk8hWM8cm9We6uCycWtNQjhRoMHaMk2FO4RFVAtIYcz + tLLr2NMXHBGJwJynC00b0AP71cnD6NnfJTg3TJh5pJj2XTOvPbMIX5sIhuU5iAUa + 7bJwiAOZZ+G6GTKWsk4DFdzcSwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAqQwDwYD + VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPi64sFd/DiqTkwoqR1xJnSWTWaowDQYJ + KoZIhvcNAQELBQADggEBAGHc0Bi9+tpo9LgDCLPv+g5HaFO3ATsu7w48yuDtlI9f + BBvxLzny97nAh6/mPlMbZfjadrXb6GxDz7//JIr5L49CxIDwsNWlZ7PO+SkHC9TQ + MoGoZAqRY5xu9y30l/QSsYyz45VpF+l3mFQjYgV8ao0r43Jik/fIwZtlzO3/0JMO + yBjHYP0BELnVCpKsStStoLs75yhb//XYA7C9xFtRSnKAdbWFMr1TP00pwe6xUcPB + lqwshe0DvX4d3q4MFWJ0vGn044ZGT0Q9TLg3mxkskBsSkMwJB3x6OHaPofMRMXll + VvW+CE3Gm2lkpHTD/YW+4c5NvinuQv5/FPM9mMjxFuM= + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIDlzCCAn+gAwIBAgIIYrUApGEIppMwDQYJKoZIhvcNAQELBQAwWTFXMFUGA1UE + AwxOb3BlbnNoaWZ0LWt1YmUtYXBpc2VydmVyLW9wZXJhdG9yX2xvY2FsaG9zdC1y + ZWNvdmVyeS1zZXJ2aW5nLXNpZ25lckAxNzg1Mjk5MjgwMB4XDTI2MDcyOTA0Mjc1 + OVoXDTM2MDcyNjA0MjgwMFowWTFXMFUGA1UEAwxOb3BlbnNoaWZ0LWt1YmUtYXBp + c2VydmVyLW9wZXJhdG9yX2xvY2FsaG9zdC1yZWNvdmVyeS1zZXJ2aW5nLXNpZ25l + ckAxNzg1Mjk5MjgwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuOnr + QwrC3IARjfHaxR3Esn1emFDSnEHQWojiXxNo4xuMph0W1IKelETXDb3b+rJV4DtJ + kCT2Tob2lDPYLDCaAkIZV1x9H2jBNuIU150xhuPy+Ob8zRiOZRTQmxbW7Utkr+zO + nbZZ3Wo2rVI07TSsTtE3OZQIj7Jy8rlUuxiuzgXoXkicXZnKZ0tRO4es69t0UxQ5 + ST6IV/rBmwzXoDpSFx+iflax4KYn967FAYOQ5t7iAOXC7+7CHyWsPtkjoxl69h7I + 3yT8vimJPc3KRxsN9WxTvM927FVtzxnJBFuFwwYKJzsm+KqqV1U3Znvk1UBPyxld + 64uc/2CYtRg8kgHjjwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/ + BAUwAwEB/zAdBgNVHQ4EFgQURpigJaoVjceFbUKbRebjblCPccQwHwYDVR0jBBgw + FoAURpigJaoVjceFbUKbRebjblCPccQwDQYJKoZIhvcNAQELBQADggEBAICkMv5C + hBQk+Y3tFjW53NazcYjyZ/1XzHu4mYacM1vxsHZLF+pNbEkR8WkRmiFJkIV4n8SZ + nyKoTIFbx+ajJlEN9oR/iX+dEsi6DOfkmC7izYFmE+0E/BHpPEJHIWLvAhcQD7EF + z1wtK1JfZilRM/PxMRKqTS2KY1Mj87hWKyvdpNyNVnJsNn0rxsfkdhSxlisnhUQU + qHmSDUqoBP2KAoUvAHGFP7F0ccOoNEqNjbwmB6QdgjfcxCAKLrG3qxRlaOtsQLjQ + H6qUYlFxJb+VndcI/JRgOsrnLo7jaUOqsvW3y0gaM3GMzyG35pf9lAi6pDfWXx+F + +QIShitXZ4w7ChI= + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIDkzCCAnugAwIBAgIId3wv8mIhakIwDQYJKoZIhvcNAQELBQAwJjEkMCIGA1UE + AwwbaW5ncmVzcy1vcGVyYXRvckAxNzg1Mjk5MzU1MB4XDTI2MDcyOTA0MjkxNloX + DTI4MDcyODA0MjkxN1owOTE3MDUGA1UEAwwuKi5hcHBzLm1pZ3FlLTY2NDMxLnFl + LmRldmNsdXN0ZXIub3BlbnNoaWZ0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP + ADCCAQoCggEBAOuzc2uY0NavHYaNr3wFmmhv7PYQEADqksl5Z5UgxFjqIYWXZBI7 + QTh76h1/lDJjIvywp2f6KwqNtxqGqBMAlMcEyXhfnv0AlVeL/ZPTyH9wrmipk4XB + +oMAncK2T5CJZ9sMe2hzmZlJn5eKmHKjUWsZoMaLNu79HMJFWRr/xbl2XuEQWFDh + r6/tYebFVmiWaCqB3Un+qpnjpwTlOQqRoUpn/euWs85vMr0nOwJthBigeRsQpMtw + puqKus5cEAYvGlQzZG+h/nFhC+g4IreRIUiEeu/jM3J61UvsVq6LOeLnI6owu8n6 + 9rtQy2xyE7T4erxXXV52OD3SheNh7K6P9jsCAwEAAaOBsTCBrjAOBgNVHQ8BAf8E + BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAdBgNVHQ4E + FgQURdJY3LJFTJZcpTcCNXTTaVKsqpswHwYDVR0jBBgwFoAUu5aXDvkJk1mSW8YU + ucWE2fSeoyIwOQYDVR0RBDIwMIIuKi5hcHBzLm1pZ3FlLTY2NDMxLnFlLmRldmNs + dXN0ZXIub3BlbnNoaWZ0LmNvbTANBgkqhkiG9w0BAQsFAAOCAQEABsmKPz0ngh7o + w8eEvywQuIWAalK68sA7ZPXGBhZMk+wtvblcL8FUJncbvyo+FdzgJL6Esb0LVWwS + U3QtVELfyn/VtJfH0pNQcrBtoxMGQ+wLUaCYOxriUs7S850LmyWUk6Go2RCKg24f + l168AB2M/Qa//OPcDwd2ob/B9TydqfIRSPlZvaoQPB4lzQKeJUiO9GX1WKgQhGER + IBzJDXb5dPgaNm4Ri71lEExtqPEYU3ruWQ8EZ6bqX22rJ6xLofg0X+avINZvFERh + XAPDlsfszZqX8pYxy5g93zEE0YrKiAraydZasq2eVk6XImPb02yoNV2d8xD24blF + 1yuqKvAn1g== + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIDDDCCAfSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBtpbmdy + ZXNzLW9wZXJhdG9yQDE3ODUyOTkzNTUwHhcNMjYwNzI5MDQyOTE2WhcNMjgwNzI4 + MDQyOTE3WjAmMSQwIgYDVQQDDBtpbmdyZXNzLW9wZXJhdG9yQDE3ODUyOTkzNTUw + ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDEbyzl8Q3ZLMdw2xaTqSKX + viFab3Fi/FUreWyiH35S9nghk4K8m5y4YlpRR48o9/wsxpOpzU4k3pt5dqw/x4gm + 1aDuCbD+L/JRnUWjLQV3EAEZHXO6Fgat3PA/Sw2ZKEsHo4o3+zhYBFVAZbhHJP3c + 1/AT/sTM8pM/X82/U+LPp6mH4zZ/yiJvNUq65M0ougaxr1XK67jhd58+5/jWWdzH + 5pFW9Cxy69w1H0tpamad8cQ9bbzfBoKMB04dsb7zprufkB2r3WDGGmAnGS8mNd6a + 7ndOaU89MtnO1YUwlYfR3DauE/kK/Ib6Md2KXgUp/KNf8PqeKLeJyDDg1P2n6d7/ + AgMBAAGjRTBDMA4GA1UdDwEB/wQEAwICpDASBgNVHRMBAf8ECDAGAQH/AgEAMB0G + A1UdDgQWBBS7lpcO+QmTWZJbxhS5xYTZ9J6jIjANBgkqhkiG9w0BAQsFAAOCAQEA + orqXfEOXP0mN3zgrYP+XAdZq7W5NCurPXK7CTwegEUuJjcLc7ubFKlY26gshU+kx + truAZ9WVcvQaIisubEAohTxLtEQ60C9euakmICAhJXVZKxXFrcv4xkufhz8o2fWz + QQiPcv99Pi5NSPuIEzndkmf5EinpPsPY4hB3OvBWQ9aoISZEFr7ro1dnOLNeiUzp + 3q13kIdnThcmCBknnHefpAFzbflN+KdOxZW6Ol9HWkwmSQYUngPVPTENteLZ0tHW + q5hTGBX5TIRsrcUKb/U6NYb6f5JDX4mAOnWkB4xf4aN7K69d21Fh71CM4c7Ts1SO + 9a1Po3eD1lXH7N/4H8OdKA== + -----END CERTIFICATE----- +kind: ConfigMap +metadata: + annotations: + kubernetes.io/description: Contains a CA bundle that can be used to verify the + kube-apiserver when using internal endpoints such as the internal service IP + or kubernetes.default.svc. No other usage is guaranteed across distributions + of Kubernetes clusters. + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:data: + .: {} + f:ca.crt: {} + f:metadata: + f:annotations: + .: {} + f:kubernetes.io/description: {} + manager: kube-controller-manager + operation: Update + time: "2026-07-29T11:56:52Z" + name: kube-root-ca.crt + namespace: redis + resourceVersion: "133775" + uid: 13eaf43a-55b7-47f6-ab4a-5475e526137f diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_openshift-service-ca.crt.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_openshift-service-ca.crt.yaml new file mode 100644 index 00000000..ed7e1b1e --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_openshift-service-ca.crt.yaml @@ -0,0 +1,52 @@ +apiVersion: v1 +data: + service-ca.crt: | + -----BEGIN CERTIFICATE----- + MIIDUTCCAjmgAwIBAgIIZqyIdI72MQIwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE + Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTI5OTI3OTAe + Fw0yNjA3MjkwNDI3NTlaFw0yODA5MjYwNDI4MDBaMDYxNDAyBgNVBAMMK29wZW5z + aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUyOTkyNzkwggEiMA0GCSqG + SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDLMGWscRza/5CDJXibKR0gBXDyZHkDBFyG + UZHHPMD+kBEY0Dd4GyXr6qRLsZVGb98UKOVM2zxu6HBzSvyaFex/AyeU8Gv1gXHt + WslQjbk3hG2t8k8jGNTBn3pz6gOXOAdvdhjfTjinAEnkiajoQdq2fq9m2+QgowY2 + G5smFmC2d6OpfeKxDQ9VL0N/KHfMRqnlV16ktsQn/YewwevwISJJrDQ3xvET38JY + Kxj4Fsr+xcND+nKq/3pjFqY1F/mQQi3CeLMulTlvDafGbOFDduPqoL7k6LhW5+7l + yhwFXfn1RoJqtujOTqhWZoq+1cFRph7SfcLvvL70N/jQzW3vC+wTAgMBAAGjYzBh + MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQe0G5N + 3AAHoT0aUl4JzVp17uA41TAfBgNVHSMEGDAWgBQe0G5N3AAHoT0aUl4JzVp17uA4 + 1TANBgkqhkiG9w0BAQsFAAOCAQEAhq7iu31m5Jx9QRcoLuYDYGpEDlXBkpdL7UEF + w1Q7w081J8f48xr2+R/kzRKHDKGpDtUENj2VR9rSJIjnlsm6/1lqtG6KaZR4Fi6y + GprYP6K2tLcIF3Y41YQ4Gv2gMnRf0ZoNYAI3OZSLooM4vhRyMFCZlfnrke5TABLI + hpf7YzoxleFPHFKjPGjgk9UpphVFpchri1Gv9n3n0MJP8vAv9I5T4wzQgbVZaml9 + WdXff34r78u/g7g9u1n9wX8ngSoGByy7Vyrdk2Ff8SZ2WJsGtGqQ05cgamyiCCHb + jji3oOFOWxLDxpDX/CE8PG+/IXIoE7DwWLNoFntfOjyCgFWqAg== + -----END CERTIFICATE----- +kind: ConfigMap +metadata: + annotations: + service.beta.openshift.io/inject-cabundle: "true" + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:data: {} + f:metadata: + f:annotations: + .: {} + f:service.beta.openshift.io/inject-cabundle: {} + manager: kube-controller-manager + operation: Update + time: "2026-07-29T11:56:52Z" + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:data: + f:service-ca.crt: {} + manager: service-ca-operator + operation: Update + time: "2026-07-29T11:56:52Z" + name: openshift-service-ca.crt + namespace: redis + resourceVersion: "133781" + uid: d7c48f25-8f13-442e-9c7a-075236e4a781 diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Deployment_apps_v1_redis_redis.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Deployment_apps_v1_redis_redis.yaml new file mode 100644 index 00000000..c877852e --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Deployment_apps_v1_redis_redis.yaml @@ -0,0 +1,166 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + deployment.kubernetes.io/revision: "1" + creationTimestamp: "2026-07-29T11:57:01Z" + generation: 2 + labels: + name: redis + managedFields: + - apiVersion: apps/v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:labels: + .: {} + f:name: {} + f:spec: + f:progressDeadlineSeconds: {} + f:revisionHistoryLimit: {} + f:selector: {} + f:strategy: + f:rollingUpdate: + .: {} + f:maxSurge: {} + f:maxUnavailable: {} + f:type: {} + f:template: + f:metadata: + f:labels: + .: {} + f:name: {} + f:spec: + f:containers: + k:{"name":"redis"}: + .: {} + f:command: {} + f:image: {} + f:imagePullPolicy: {} + f:name: {} + f:ports: + .: {} + k:{"containerPort":6379,"protocol":"TCP"}: + .: {} + f:containerPort: {} + f:name: {} + f:protocol: {} + f:resources: {} + f:terminationMessagePath: {} + f:terminationMessagePolicy: {} + f:volumeMounts: + .: {} + k:{"mountPath":"/data"}: + .: {} + f:mountPath: {} + f:name: {} + f:dnsPolicy: {} + f:restartPolicy: {} + f:schedulerName: {} + f:securityContext: {} + f:terminationGracePeriodSeconds: {} + f:volumes: + .: {} + k:{"name":"redis-data"}: + .: {} + f:name: {} + f:persistentVolumeClaim: + .: {} + f:claimName: {} + manager: OpenAPI-Generator + operation: Update + time: "2026-07-29T11:57:01Z" + - apiVersion: apps/v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: {} + f:deployment.kubernetes.io/revision: {} + f:status: + f:conditions: + .: {} + k:{"type":"Available"}: + .: {} + f:lastTransitionTime: {} + f:lastUpdateTime: {} + f:message: {} + f:reason: {} + f:status: {} + f:type: {} + k:{"type":"Progressing"}: + .: {} + f:lastTransitionTime: {} + f:lastUpdateTime: {} + f:message: {} + f:reason: {} + f:status: {} + f:type: {} + f:observedGeneration: {} + manager: kube-controller-manager + operation: Update + subresource: status + time: "2026-07-29T11:57:43Z" + name: redis + namespace: redis + resourceVersion: "134042" + uid: c8d35c35-660f-4b82-bf7b-c8e4e89894db +spec: + progressDeadlineSeconds: 600 + replicas: 0 + revisionHistoryLimit: 10 + selector: + matchLabels: + name: redis + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + labels: + name: redis + spec: + containers: + - command: + - redis-server + - --requirepass + - PASSWORD + image: redis:latest + imagePullPolicy: Always + name: redis + ports: + - containerPort: 6379 + name: redis + protocol: TCP + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data + name: redis-data + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - name: redis-data + persistentVolumeClaim: + claimName: redis-data +status: + conditions: + - lastTransitionTime: "2026-07-29T11:57:08Z" + lastUpdateTime: "2026-07-29T11:57:08Z" + message: Deployment has minimum availability. + reason: MinimumReplicasAvailable + status: "True" + type: Available + - lastTransitionTime: "2026-07-29T11:57:01Z" + lastUpdateTime: "2026-07-29T11:57:08Z" + message: ReplicaSet "redis-6b9f4c765d" has successfully progressed. + reason: NewReplicaSetAvailable + status: "True" + type: Progressing + observedGeneration: 2 diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/EndpointSlice_discovery.k8s.io_v1_redis_redis-r8vds.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/EndpointSlice_discovery.k8s.io_v1_redis_redis-r8vds.yaml new file mode 100644 index 00000000..920dd5dc --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/EndpointSlice_discovery.k8s.io_v1_redis_redis-r8vds.yaml @@ -0,0 +1,49 @@ +addressType: IPv4 +apiVersion: discovery.k8s.io/v1 +endpoints: null +kind: EndpointSlice +metadata: + annotations: + endpoints.kubernetes.io/last-change-trigger-time: "2026-07-29T11:57:44Z" + creationTimestamp: "2026-07-29T11:56:57Z" + generateName: redis- + generation: 4 + labels: + endpointslice.kubernetes.io/managed-by: endpointslice-controller.k8s.io + kubernetes.io/service-name: redis + name: redis + managedFields: + - apiVersion: discovery.k8s.io/v1 + fieldsType: FieldsV1 + fieldsV1: + f:addressType: {} + f:endpoints: {} + f:metadata: + f:annotations: + .: {} + f:endpoints.kubernetes.io/last-change-trigger-time: {} + f:generateName: {} + f:labels: + .: {} + f:endpointslice.kubernetes.io/managed-by: {} + f:kubernetes.io/service-name: {} + f:name: {} + f:ownerReferences: + .: {} + k:{"uid":"600b5f3e-a866-4acf-8bf2-256d80a4b080"}: {} + f:ports: {} + manager: kube-controller-manager + operation: Update + time: "2026-07-29T11:57:44Z" + name: redis-r8vds + namespace: redis + ownerReferences: + - apiVersion: v1 + blockOwnerDeletion: true + controller: true + kind: Service + name: redis + uid: 600b5f3e-a866-4acf-8bf2-256d80a4b080 + resourceVersion: "134045" + uid: 965d04da-5f5d-4287-b5f9-ba10e4d84c4b +ports: null diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Endpoints__v1_redis_redis.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Endpoints__v1_redis_redis.yaml new file mode 100644 index 00000000..2abc9419 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Endpoints__v1_redis_redis.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Endpoints +metadata: + creationTimestamp: "2026-07-29T11:56:57Z" + labels: + endpoints.kubernetes.io/managed-by: endpoint-controller + name: redis + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:labels: + .: {} + f:endpoints.kubernetes.io/managed-by: {} + f:name: {} + manager: kube-controller-manager + operation: Update + time: "2026-07-29T11:57:08Z" + name: redis + namespace: redis + resourceVersion: "134036" + uid: 16d11b11-a4f1-4395-8a59-d2aa5d52f2ee diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/PersistentVolumeClaim__v1_redis_redis-data.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/PersistentVolumeClaim__v1_redis_redis-data.yaml new file mode 100644 index 00000000..b737afb2 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/PersistentVolumeClaim__v1_redis_redis-data.yaml @@ -0,0 +1,82 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + annotations: + pv.kubernetes.io/bind-completed: "yes" + pv.kubernetes.io/bound-by-controller: "yes" + volume.beta.kubernetes.io/storage-provisioner: ebs.csi.aws.com + volume.kubernetes.io/selected-node: ip-10-0-25-205.us-east-2.compute.internal + volume.kubernetes.io/storage-provisioner: ebs.csi.aws.com + creationTimestamp: "2026-07-29T11:56:59Z" + finalizers: + - kubernetes.io/pvc-protection + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:spec: + f:accessModes: {} + f:resources: + f:requests: + .: {} + f:storage: {} + f:volumeMode: {} + manager: OpenAPI-Generator + operation: Update + time: "2026-07-29T11:56:59Z" + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: {} + f:volume.kubernetes.io/selected-node: {} + manager: kube-scheduler + operation: Update + time: "2026-07-29T11:57:01Z" + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + f:pv.kubernetes.io/bind-completed: {} + f:pv.kubernetes.io/bound-by-controller: {} + f:volume.beta.kubernetes.io/storage-provisioner: {} + f:volume.kubernetes.io/storage-provisioner: {} + f:spec: + f:volumeName: {} + manager: kube-controller-manager + operation: Update + time: "2026-07-29T11:57:03Z" + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:status: + f:accessModes: {} + f:capacity: + .: {} + f:storage: {} + f:phase: {} + manager: kube-controller-manager + operation: Update + subresource: status + time: "2026-07-29T11:57:03Z" + name: redis-data + namespace: redis + resourceVersion: "133859" + uid: 4551f374-2f86-4794-827a-e2475a2593df +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: gp3-csi + volumeMode: Filesystem + volumeName: pvc-4551f374-2f86-4794-827a-e2475a2593df +status: + accessModes: + - ReadWriteOnce + capacity: + storage: 1Gi + phase: Bound diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ReplicaSet_apps_v1_redis_redis-6b9f4c765d.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ReplicaSet_apps_v1_redis_redis-6b9f4c765d.yaml new file mode 100644 index 00000000..cf1c0a09 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ReplicaSet_apps_v1_redis_redis-6b9f4c765d.yaml @@ -0,0 +1,141 @@ +apiVersion: apps/v1 +kind: ReplicaSet +metadata: + annotations: + deployment.kubernetes.io/desired-replicas: "0" + deployment.kubernetes.io/max-replicas: "0" + deployment.kubernetes.io/revision: "1" + creationTimestamp: "2026-07-29T11:57:01Z" + generation: 2 + labels: + name: redis + pod-template-hash: 6b9f4c765d + managedFields: + - apiVersion: apps/v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: {} + f:deployment.kubernetes.io/desired-replicas: {} + f:deployment.kubernetes.io/max-replicas: {} + f:deployment.kubernetes.io/revision: {} + f:labels: + .: {} + f:name: {} + f:pod-template-hash: {} + f:ownerReferences: + .: {} + k:{"uid":"c8d35c35-660f-4b82-bf7b-c8e4e89894db"}: {} + f:spec: + f:replicas: {} + f:selector: {} + f:template: + f:metadata: + f:labels: + .: {} + f:name: {} + f:pod-template-hash: {} + f:spec: + f:containers: + k:{"name":"redis"}: + .: {} + f:command: {} + f:image: {} + f:imagePullPolicy: {} + f:name: {} + f:ports: + .: {} + k:{"containerPort":6379,"protocol":"TCP"}: + .: {} + f:containerPort: {} + f:name: {} + f:protocol: {} + f:resources: {} + f:terminationMessagePath: {} + f:terminationMessagePolicy: {} + f:volumeMounts: + .: {} + k:{"mountPath":"/data"}: + .: {} + f:mountPath: {} + f:name: {} + f:dnsPolicy: {} + f:restartPolicy: {} + f:schedulerName: {} + f:securityContext: {} + f:terminationGracePeriodSeconds: {} + f:volumes: + .: {} + k:{"name":"redis-data"}: + .: {} + f:name: {} + f:persistentVolumeClaim: + .: {} + f:claimName: {} + manager: kube-controller-manager + operation: Update + time: "2026-07-29T11:57:43Z" + - apiVersion: apps/v1 + fieldsType: FieldsV1 + fieldsV1: + f:status: + f:observedGeneration: {} + f:replicas: {} + manager: kube-controller-manager + operation: Update + subresource: status + time: "2026-07-29T11:57:43Z" + name: redis-6b9f4c765d + namespace: redis + ownerReferences: + - apiVersion: apps/v1 + blockOwnerDeletion: true + controller: true + kind: Deployment + name: redis + uid: c8d35c35-660f-4b82-bf7b-c8e4e89894db + resourceVersion: "134041" + uid: 3ca53332-56d2-444f-b0af-71221bc7dc33 +spec: + replicas: 0 + selector: + matchLabels: + name: redis + pod-template-hash: 6b9f4c765d + template: + metadata: + labels: + name: redis + pod-template-hash: 6b9f4c765d + spec: + containers: + - command: + - redis-server + - --requirepass + - PASSWORD + image: redis:latest + imagePullPolicy: Always + name: redis + ports: + - containerPort: 6379 + name: redis + protocol: TCP + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data + name: redis-data + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - name: redis-data + persistentVolumeClaim: + claimName: redis-data +status: + observedGeneration: 2 + replicas: 0 diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:deployers.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:deployers.yaml new file mode 100644 index 00000000..33c9d265 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:deployers.yaml @@ -0,0 +1,34 @@ +apiVersion: authorization.openshift.io/v1 +groupNames: null +kind: RoleBinding +metadata: + annotations: + openshift.io/description: Allows deploymentconfigs in this namespace to rollout + pods in this namespace. It is auto-managed by a controller; remove subjects + to disable. + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: rbac.authorization.k8s.io/v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: {} + f:openshift.io/description: {} + f:roleRef: {} + f:subjects: {} + manager: openshift-controller-manager + operation: Update + time: "2026-07-29T11:56:52Z" + name: system:deployers + namespace: redis + resourceVersion: "133792" + uid: 8fa4cde0-ecb2-484f-81f3-94482b22d8cf +roleRef: + name: system:deployer +subjects: +- kind: ServiceAccount + name: deployer + namespace: redis +userNames: +- system:serviceaccount:redis:deployer diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:image-builders.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:image-builders.yaml new file mode 100644 index 00000000..4eb35784 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:image-builders.yaml @@ -0,0 +1,33 @@ +apiVersion: authorization.openshift.io/v1 +groupNames: null +kind: RoleBinding +metadata: + annotations: + openshift.io/description: Allows builds in this namespace to push images to this + namespace. It is auto-managed by a controller; remove subjects to disable. + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: rbac.authorization.k8s.io/v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: {} + f:openshift.io/description: {} + f:roleRef: {} + f:subjects: {} + manager: openshift-controller-manager + operation: Update + time: "2026-07-29T11:56:52Z" + name: system:image-builders + namespace: redis + resourceVersion: "133791" + uid: f1f51514-0c62-45e1-8e0d-5f25c368ae39 +roleRef: + name: system:image-builder +subjects: +- kind: ServiceAccount + name: builder + namespace: redis +userNames: +- system:serviceaccount:redis:builder diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:image-pullers.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:image-pullers.yaml new file mode 100644 index 00000000..9496b5a5 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_authorization.openshift.io_v1_redis_system:image-pullers.yaml @@ -0,0 +1,32 @@ +apiVersion: authorization.openshift.io/v1 +groupNames: +- system:serviceaccounts:redis +kind: RoleBinding +metadata: + annotations: + openshift.io/description: Allows all pods in this namespace to pull images from + this namespace. It is auto-managed by a controller; remove subjects to disable. + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: rbac.authorization.k8s.io/v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: {} + f:openshift.io/description: {} + f:roleRef: {} + f:subjects: {} + manager: openshift-controller-manager + operation: Update + time: "2026-07-29T11:56:52Z" + name: system:image-pullers + namespace: redis + resourceVersion: "133790" + uid: 9ec4ac50-950e-4bb0-baac-d6bb266bcc48 +roleRef: + name: system:image-puller +subjects: +- kind: SystemGroup + name: system:serviceaccounts:redis +userNames: null diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:deployers.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:deployers.yaml new file mode 100644 index 00000000..92021d21 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:deployers.yaml @@ -0,0 +1,33 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + annotations: + openshift.io/description: Allows deploymentconfigs in this namespace to rollout + pods in this namespace. It is auto-managed by a controller; remove subjects + to disable. + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: rbac.authorization.k8s.io/v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: {} + f:openshift.io/description: {} + f:roleRef: {} + f:subjects: {} + manager: openshift-controller-manager + operation: Update + time: "2026-07-29T11:56:52Z" + name: system:deployers + namespace: redis + resourceVersion: "133792" + uid: 8fa4cde0-ecb2-484f-81f3-94482b22d8cf +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:deployer +subjects: +- kind: ServiceAccount + name: deployer + namespace: redis diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:image-builders.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:image-builders.yaml new file mode 100644 index 00000000..7987e52b --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:image-builders.yaml @@ -0,0 +1,32 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + annotations: + openshift.io/description: Allows builds in this namespace to push images to this + namespace. It is auto-managed by a controller; remove subjects to disable. + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: rbac.authorization.k8s.io/v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: {} + f:openshift.io/description: {} + f:roleRef: {} + f:subjects: {} + manager: openshift-controller-manager + operation: Update + time: "2026-07-29T11:56:52Z" + name: system:image-builders + namespace: redis + resourceVersion: "133791" + uid: f1f51514-0c62-45e1-8e0d-5f25c368ae39 +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:image-builder +subjects: +- kind: ServiceAccount + name: builder + namespace: redis diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:image-pullers.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:image-pullers.yaml new file mode 100644 index 00000000..608c5dc8 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/RoleBinding_rbac.authorization.k8s.io_v1_redis_system:image-pullers.yaml @@ -0,0 +1,32 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + annotations: + openshift.io/description: Allows all pods in this namespace to pull images from + this namespace. It is auto-managed by a controller; remove subjects to disable. + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: rbac.authorization.k8s.io/v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: {} + f:openshift.io/description: {} + f:roleRef: {} + f:subjects: {} + manager: openshift-controller-manager + operation: Update + time: "2026-07-29T11:56:52Z" + name: system:image-pullers + namespace: redis + resourceVersion: "133790" + uid: 9ec4ac50-950e-4bb0-baac-d6bb266bcc48 +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:image-puller +subjects: +- apiGroup: rbac.authorization.k8s.io + kind: Group + name: system:serviceaccounts:redis diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_builder-dockercfg-lgfpb.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_builder-dockercfg-lgfpb.yaml new file mode 100644 index 00000000..41d8089a --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_builder-dockercfg-lgfpb.yaml @@ -0,0 +1,44 @@ +apiVersion: v1 +data: + .dockercfg: REDACTED +kind: Secret +metadata: + annotations: + openshift.io/internal-registry-auth-token.binding: bound + openshift.io/internal-registry-auth-token.service-account: builder + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:data: + f:.dockercfg: {} + f:metadata: + f:annotations: + f:openshift.io/internal-registry-auth-token.binding: {} + f:type: {} + manager: openshift.io/image-registry-pull-secrets_image-pull-secret-controller + operation: Apply + time: "2026-07-29T11:56:52Z" + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + f:openshift.io/internal-registry-auth-token.service-account: {} + f:ownerReferences: + k:{"uid":"65e40fd1-e248-4de3-be35-80849ead02b0"}: {} + f:type: {} + manager: openshift.io/image-registry-pull-secrets_service-account-controller + operation: Apply + time: "2026-07-29T11:56:52Z" + name: builder-dockercfg-lgfpb + namespace: redis + ownerReferences: + - apiVersion: v1 + kind: ServiceAccount + name: builder + uid: 65e40fd1-e248-4de3-be35-80849ead02b0 + resourceVersion: "133789" + uid: f7b8e726-7d2e-4994-9c55-8d6ffaac8958 +type: kubernetes.io/dockercfg diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_default-dockercfg-jpgs2.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_default-dockercfg-jpgs2.yaml new file mode 100644 index 00000000..71501483 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_default-dockercfg-jpgs2.yaml @@ -0,0 +1,44 @@ +apiVersion: v1 +data: + .dockercfg: REDACTED +kind: Secret +metadata: + annotations: + openshift.io/internal-registry-auth-token.binding: bound + openshift.io/internal-registry-auth-token.service-account: default + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:data: + f:.dockercfg: {} + f:metadata: + f:annotations: + f:openshift.io/internal-registry-auth-token.binding: {} + f:type: {} + manager: openshift.io/image-registry-pull-secrets_image-pull-secret-controller + operation: Apply + time: "2026-07-29T11:56:52Z" + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + f:openshift.io/internal-registry-auth-token.service-account: {} + f:ownerReferences: + k:{"uid":"8c9992b4-af7a-466d-87b4-7b47cc7c2bb3"}: {} + f:type: {} + manager: openshift.io/image-registry-pull-secrets_service-account-controller + operation: Apply + time: "2026-07-29T11:56:52Z" + name: default-dockercfg-jpgs2 + namespace: redis + ownerReferences: + - apiVersion: v1 + kind: ServiceAccount + name: default + uid: 8c9992b4-af7a-466d-87b4-7b47cc7c2bb3 + resourceVersion: "133788" + uid: 8ba355c4-259a-44ff-a223-5ac624c78c3b +type: kubernetes.io/dockercfg diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_deployer-dockercfg-vf8ll.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_deployer-dockercfg-vf8ll.yaml new file mode 100644 index 00000000..4601e232 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_deployer-dockercfg-vf8ll.yaml @@ -0,0 +1,44 @@ +apiVersion: v1 +data: + .dockercfg: REDACTED +kind: Secret +metadata: + annotations: + openshift.io/internal-registry-auth-token.binding: bound + openshift.io/internal-registry-auth-token.service-account: deployer + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:data: + f:.dockercfg: {} + f:metadata: + f:annotations: + f:openshift.io/internal-registry-auth-token.binding: {} + f:type: {} + manager: openshift.io/image-registry-pull-secrets_image-pull-secret-controller + operation: Apply + time: "2026-07-29T11:56:52Z" + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + f:openshift.io/internal-registry-auth-token.service-account: {} + f:ownerReferences: + k:{"uid":"0284d0fd-c0fb-447b-b52d-4bffda1154bd"}: {} + f:type: {} + manager: openshift.io/image-registry-pull-secrets_service-account-controller + operation: Apply + time: "2026-07-29T11:56:52Z" + name: deployer-dockercfg-vf8ll + namespace: redis + ownerReferences: + - apiVersion: v1 + kind: ServiceAccount + name: deployer + uid: 0284d0fd-c0fb-447b-b52d-4bffda1154bd + resourceVersion: "133787" + uid: ebcc1896-0aff-4320-8932-07ae0bc5d4f4 +type: kubernetes.io/dockercfg diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_redis.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_redis.yaml new file mode 100644 index 00000000..3c8581f7 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Secret__v1_redis_redis.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +data: + redis-password: UEFTU1dPUkQ= +kind: Secret +metadata: + creationTimestamp: "2026-07-29T11:56:55Z" + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:data: + .: {} + f:redis-password: {} + f:type: {} + manager: OpenAPI-Generator + operation: Update + time: "2026-07-29T11:56:55Z" + name: redis + namespace: redis + resourceVersion: "133801" + uid: 2534e8f3-8e56-4067-89af-d02c846ef69f +type: Opaque diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_builder.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_builder.yaml new file mode 100644 index 00000000..503c962b --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_builder.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +imagePullSecrets: +- name: builder-dockercfg-lgfpb +kind: ServiceAccount +metadata: + annotations: + openshift.io/internal-registry-pull-secret-ref: builder-dockercfg-lgfpb + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:imagePullSecrets: {} + f:metadata: + f:annotations: + f:openshift.io/internal-registry-pull-secret-ref: {} + f:secrets: + k:{"name":"builder-dockercfg-lgfpb"}: {} + manager: openshift.io/image-registry-pull-secrets_service-account-controller + operation: Apply + time: "2026-07-29T11:56:52Z" + name: builder + namespace: redis + resourceVersion: "133780" + uid: 65e40fd1-e248-4de3-be35-80849ead02b0 +secrets: +- name: builder-dockercfg-lgfpb diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_default.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_default.yaml new file mode 100644 index 00000000..d773e18f --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_default.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +imagePullSecrets: +- name: default-dockercfg-jpgs2 +kind: ServiceAccount +metadata: + annotations: + openshift.io/internal-registry-pull-secret-ref: default-dockercfg-jpgs2 + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:imagePullSecrets: {} + f:metadata: + f:annotations: + f:openshift.io/internal-registry-pull-secret-ref: {} + f:secrets: + k:{"name":"default-dockercfg-jpgs2"}: {} + manager: openshift.io/image-registry-pull-secrets_service-account-controller + operation: Apply + time: "2026-07-29T11:56:52Z" + name: default + namespace: redis + resourceVersion: "133777" + uid: 8c9992b4-af7a-466d-87b4-7b47cc7c2bb3 +secrets: +- name: default-dockercfg-jpgs2 diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_deployer.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_deployer.yaml new file mode 100644 index 00000000..d9c478de --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ServiceAccount__v1_redis_deployer.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +imagePullSecrets: +- name: deployer-dockercfg-vf8ll +kind: ServiceAccount +metadata: + annotations: + openshift.io/internal-registry-pull-secret-ref: deployer-dockercfg-vf8ll + creationTimestamp: "2026-07-29T11:56:52Z" + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:imagePullSecrets: {} + f:metadata: + f:annotations: + f:openshift.io/internal-registry-pull-secret-ref: {} + f:secrets: + k:{"name":"deployer-dockercfg-vf8ll"}: {} + manager: openshift.io/image-registry-pull-secrets_service-account-controller + operation: Apply + time: "2026-07-29T11:56:52Z" + name: deployer + namespace: redis + resourceVersion: "133779" + uid: 0284d0fd-c0fb-447b-b52d-4bffda1154bd +secrets: +- name: deployer-dockercfg-vf8ll diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Service__v1_redis_redis.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Service__v1_redis_redis.yaml new file mode 100644 index 00000000..aa1c8b5f --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Service__v1_redis_redis.yaml @@ -0,0 +1,53 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: "2026-07-29T11:56:57Z" + labels: + name: redis + managedFields: + - apiVersion: v1 + fieldsType: FieldsV1 + fieldsV1: + f:metadata: + f:labels: + .: {} + f:name: {} + f:spec: + f:internalTrafficPolicy: {} + f:ports: + .: {} + k:{"port":6379,"protocol":"TCP"}: + .: {} + f:name: {} + f:port: {} + f:protocol: {} + f:targetPort: {} + f:selector: {} + f:sessionAffinity: {} + f:type: {} + manager: OpenAPI-Generator + operation: Update + time: "2026-07-29T11:56:57Z" + name: redis + namespace: redis + resourceVersion: "133808" + uid: 600b5f3e-a866-4acf-8bf2-256d80a4b080 +spec: + clusterIP: 172.30.113.13 + clusterIPs: + - 172.30.113.13 + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: redis + port: 6379 + protocol: TCP + targetPort: 6379 + selector: + name: redis + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/e2e-tests/golden-manifests-ocp/redis/output/output.yaml b/e2e-tests/golden-manifests-ocp/redis/output/output.yaml new file mode 100644 index 00000000..409e8bbf --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/output/output.yaml @@ -0,0 +1,84 @@ +apiVersion: v1 +data: + redis-password: UEFTU1dPUkQ= +kind: Secret +metadata: + name: redis + namespace: redis +type: Opaque +--- +apiVersion: v1 +kind: Service +metadata: + labels: + name: redis + name: redis + namespace: redis +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: redis + port: 6379 + protocol: TCP + targetPort: 6379 + selector: + name: redis + sessionAffinity: None + type: ClusterIP +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + deployment.kubernetes.io/revision: "1" + labels: + name: redis + name: redis + namespace: redis +spec: + progressDeadlineSeconds: 600 + replicas: 0 + revisionHistoryLimit: 10 + selector: + matchLabels: + name: redis + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + labels: + name: redis + spec: + containers: + - command: + - redis-server + - --requirepass + - PASSWORD + image: redis:latest + imagePullPolicy: Always + name: redis + ports: + - containerPort: 6379 + name: redis + protocol: TCP + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data + name: redis-data + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - name: redis-data + persistentVolumeClaim: + claimName: redis-data diff --git a/e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Deployment_apps_v1_redis_redis.yaml b/e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Deployment_apps_v1_redis_redis.yaml new file mode 100644 index 00000000..ce77d1ea --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Deployment_apps_v1_redis_redis.yaml @@ -0,0 +1,53 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + deployment.kubernetes.io/revision: "1" + labels: + name: redis + name: redis + namespace: redis +spec: + progressDeadlineSeconds: 600 + replicas: 0 + revisionHistoryLimit: 10 + selector: + matchLabels: + name: redis + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + labels: + name: redis + spec: + containers: + - command: + - redis-server + - --requirepass + - PASSWORD + image: redis:latest + imagePullPolicy: Always + name: redis + ports: + - containerPort: 6379 + name: redis + protocol: TCP + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data + name: redis-data + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - name: redis-data + persistentVolumeClaim: + claimName: redis-data diff --git a/e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Secret__v1_redis_redis.yaml b/e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Secret__v1_redis_redis.yaml new file mode 100644 index 00000000..20024610 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Secret__v1_redis_redis.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +data: + redis-password: UEFTU1dPUkQ= +kind: Secret +metadata: + name: redis + namespace: redis +type: Opaque diff --git a/e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Service__v1_redis_redis.yaml b/e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Service__v1_redis_redis.yaml new file mode 100644 index 00000000..cd1c8ee1 --- /dev/null +++ b/e2e-tests/golden-manifests-ocp/redis/output/resources/redis/Service__v1_redis_redis.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + name: redis + name: redis + namespace: redis +spec: + internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: redis + port: 6379 + protocol: TCP + targetPort: 6379 + selector: + name: redis + sessionAffinity: None + type: ClusterIP diff --git a/e2e-tests/tests/tier0/mta_801_stateful_migration_test.go b/e2e-tests/tests/tier0/mta_801_stateful_migration_test.go index 5ff822b7..228ec4c2 100644 --- a/e2e-tests/tests/tier0/mta_801_stateful_migration_test.go +++ b/e2e-tests/tests/tier0/mta_801_stateful_migration_test.go @@ -27,6 +27,7 @@ var _ = Describe("Stateful app migration", func() { tgtApp := scenario.TgtApp kubectlSrc := scenario.KubectlSrc kubectlTgt := scenario.KubectlTgt + isOpenShift := kubectlSrc.IsOpenShift() By("Prepare source app") log.Printf("Preparing source app %s in namespace %s\n", srcApp.Name, srcApp.Namespace) @@ -63,18 +64,26 @@ var _ = Describe("Stateful app migration", func() { Expect(RunCranePipelineWithChecks(runner, exportOpts, transformOpts, applyOpts)).NotTo(HaveOccurred()) log.Printf("Crane pipeline completed for namespace %s\n", srcApp.Namespace) By("Compare YAML semantic diff of golden and actual export files") - goldenExportDir, err := utils.GoldenManifestsDir(appName, "export") + goldenExportDir, err := utils.GoldenManifestsDirForPlatform(appName, "export", isOpenShift) Expect(err).NotTo(HaveOccurred()) - if err := utils.CompareDirectoryYAMLSemanticsExport(goldenExportDir, paths.ExportDir); err != nil { + compareExport := utils.CompareDirectoryYAMLSemanticsExport + if isOpenShift { + compareExport = utils.CompareDirectoryYAMLSemanticsExportAllowOptionalOCPOutputDefaults + } + if err := compareExport(goldenExportDir, paths.ExportDir); err != nil { Fail(fmt.Sprintf("YAML semantic diff of golden and actual export files: %v", err)) } else { log.Printf("YAML semantic diff of golden and actual export files: no differences found") } log.Printf("Yaml diff comparison completed for export files successfully") By("Compare YAML semantic diff of golden and actual output files") - goldenOutputDir, err := utils.GoldenManifestsDir(appName, "output") + goldenOutputDir, err := utils.GoldenManifestsDirForPlatform(appName, "output", isOpenShift) Expect(err).NotTo(HaveOccurred()) - if err := utils.CompareDirectoryYAMLSemantics(goldenOutputDir, paths.OutputDir); err != nil { + compareOutput := utils.CompareDirectoryYAMLSemantics + if isOpenShift { + compareOutput = utils.CompareDirectoryYAMLSemanticsExportAllowOptionalOCPOutputDefaults + } + if err := compareOutput(goldenOutputDir, paths.OutputDir); err != nil { Fail(fmt.Sprintf("YAML semantic diff of golden and actual output files: %v", err)) } else { log.Printf("YAML semantic diff of golden and actual output files: no differences found") From ff449ce0af3948c3c520fcfd2cfde768e148875f Mon Sep 17 00:00:00 2001 From: M Sajid Mansoori Date: Wed, 29 Jul 2026 18:07:43 +0530 Subject: [PATCH 2/7] Add logic to normalize PVC annotations and service specific fields addressing coderabbit comments Signed-off-by: M Sajid Mansoori --- ...stentVolumeClaim__v1_redis_redis-data.yaml | 3 - .../redis/Service__v1_redis_redis.yaml | 3 - e2e-tests/utils/utils.go | 77 ++++++++++++------- e2e-tests/utils/utils_test.go | 20 +++++ 4 files changed, 68 insertions(+), 35 deletions(-) diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/PersistentVolumeClaim__v1_redis_redis-data.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/PersistentVolumeClaim__v1_redis_redis-data.yaml index b737afb2..44888032 100644 --- a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/PersistentVolumeClaim__v1_redis_redis-data.yaml +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/PersistentVolumeClaim__v1_redis_redis-data.yaml @@ -4,9 +4,6 @@ metadata: annotations: pv.kubernetes.io/bind-completed: "yes" pv.kubernetes.io/bound-by-controller: "yes" - volume.beta.kubernetes.io/storage-provisioner: ebs.csi.aws.com - volume.kubernetes.io/selected-node: ip-10-0-25-205.us-east-2.compute.internal - volume.kubernetes.io/storage-provisioner: ebs.csi.aws.com creationTimestamp: "2026-07-29T11:56:59Z" finalizers: - kubernetes.io/pvc-protection diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Service__v1_redis_redis.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Service__v1_redis_redis.yaml index aa1c8b5f..b7a6a1fa 100644 --- a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Service__v1_redis_redis.yaml +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/Service__v1_redis_redis.yaml @@ -37,9 +37,6 @@ spec: clusterIPs: - 172.30.113.13 internalTrafficPolicy: Cluster - ipFamilies: - - IPv4 - ipFamilyPolicy: SingleStack ports: - name: redis port: 6379 diff --git a/e2e-tests/utils/utils.go b/e2e-tests/utils/utils.go index 9d10dc96..54d03431 100644 --- a/e2e-tests/utils/utils.go +++ b/e2e-tests/utils/utils.go @@ -770,6 +770,25 @@ func normalizeUnstableFields(doc any) any { return normalized } + if kind == "PersistentVolumeClaim" { + if annotations, ok := metadata["annotations"].(map[string]any); ok { + // Scheduler and provisioner annotations vary across OCP clusters. + delete(annotations, "volume.kubernetes.io/selected-node") + delete(annotations, "volume.kubernetes.io/storage-provisioner") + delete(annotations, "volume.beta.kubernetes.io/storage-provisioner") + } + return normalized + } + + if kind == "Service" { + if spec, ok := root["spec"].(map[string]any); ok { + // Single-stack defaults can be injected differently across clusters. + delete(spec, "ipFamilies") + delete(spec, "ipFamilyPolicy") + } + return normalized + } + if kind == "Route" { if annotations, ok := metadata["annotations"].(map[string]any); ok { // Only normalize host when OpenShift explicitly marks it as generated. @@ -1275,35 +1294,35 @@ func AssertFilesExist(dir string, expectedFiles []string) error { } return nil } - - // RemapNamespaceInYAML parses each document in a multi-doc YAML stream, - // replaces srcNamespace with tgtNamespace in metadata.namespace, - // and returns the re-serialized YAML string. - func RemapNamespaceInYAML(content []byte, srcNamespace, tgtNamespace string) (string, error) { - docs, err := parseYAMLDocuments(content) - if err != nil { - return "", fmt.Errorf("parsing YAML documents: %w", err) - } - - var parts []string - for i, doc := range docs { - obj, ok := doc.(map[string]any) - if !ok { - return "", fmt.Errorf("document %d: expected map[string]any, got %T", i, doc) - } - if meta, ok := obj["metadata"].(map[string]any); ok { - if meta["namespace"] == srcNamespace { - meta["namespace"] = tgtNamespace - } - } - out, err := yaml.Marshal(obj) - if err != nil { - return "", fmt.Errorf("marshaling YAML document: %w", err) - } - parts = append(parts, string(out)) - } - return strings.Join(parts, "---\n"), nil - } + +// RemapNamespaceInYAML parses each document in a multi-doc YAML stream, +// replaces srcNamespace with tgtNamespace in metadata.namespace, +// and returns the re-serialized YAML string. +func RemapNamespaceInYAML(content []byte, srcNamespace, tgtNamespace string) (string, error) { + docs, err := parseYAMLDocuments(content) + if err != nil { + return "", fmt.Errorf("parsing YAML documents: %w", err) + } + + var parts []string + for i, doc := range docs { + obj, ok := doc.(map[string]any) + if !ok { + return "", fmt.Errorf("document %d: expected map[string]any, got %T", i, doc) + } + if meta, ok := obj["metadata"].(map[string]any); ok { + if meta["namespace"] == srcNamespace { + meta["namespace"] = tgtNamespace + } + } + out, err := yaml.Marshal(obj) + if err != nil { + return "", fmt.Errorf("marshaling YAML document: %w", err) + } + parts = append(parts, string(out)) + } + return strings.Join(parts, "---\n"), nil +} // ParseValidationReport reads and parses a crane validate report file. // The report parameter should be a pointer to the structure that will hold the parsed data. diff --git a/e2e-tests/utils/utils_test.go b/e2e-tests/utils/utils_test.go index fdefd140..e4b58c69 100644 --- a/e2e-tests/utils/utils_test.go +++ b/e2e-tests/utils/utils_test.go @@ -590,6 +590,26 @@ func TestCompareDirectoryYAMLSemanticsExport(t *testing.T) { return golden, got }, }, + { + name: "service_ip_family_defaults_are_ignored", + build: func(t *testing.T) (string, string) { + golden := t.TempDir() + got := t.TempDir() + write(t, golden, "resources/svc.yaml", "apiVersion: v1\nkind: Service\nmetadata:\n namespace: ns\n name: s\nspec:\n type: ClusterIP\n ipFamilies:\n - IPv4\n ipFamilyPolicy: SingleStack\n") + write(t, got, "resources/svc.yaml", "apiVersion: v1\nkind: Service\nmetadata:\n namespace: ns\n name: s\nspec:\n type: ClusterIP\n ipFamilies:\n - IPv6\n ipFamilyPolicy: PreferDualStack\n") + return golden, got + }, + }, + { + name: "pvc_provisioner_and_selected_node_annotations_are_ignored", + build: func(t *testing.T) (string, string) { + golden := t.TempDir() + got := t.TempDir() + write(t, golden, "resources/pvc.yaml", "apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n namespace: ns\n name: data\n annotations:\n volume.beta.kubernetes.io/storage-provisioner: ebs.csi.aws.com\n volume.kubernetes.io/selected-node: ip-10-0-25-205.us-east-2.compute.internal\n volume.kubernetes.io/storage-provisioner: ebs.csi.aws.com\nspec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 1Gi\n") + write(t, got, "resources/pvc.yaml", "apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n namespace: ns\n name: data\n annotations:\n volume.beta.kubernetes.io/storage-provisioner: pd.csi.storage.gke.io\n volume.kubernetes.io/selected-node: gke-worker-01\n volume.kubernetes.io/storage-provisioner: pd.csi.storage.gke.io\nspec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 1Gi\n") + return golden, got + }, + }, { name: "real_semantic_diff_detected", build: func(t *testing.T) (string, string) { From abc272a981e10156d38d5f40fa05d001b6184be7 Mon Sep 17 00:00:00 2001 From: M Sajid Mansoori Date: Mon, 3 Aug 2026 09:46:22 +0530 Subject: [PATCH 3/7] redact clusters certs from configmaps Signed-off-by: M Sajid Mansoori --- .../ConfigMap__v1_redis_kube-root-ca.crt.yaml | 142 +----------------- ...ap__v1_redis_openshift-service-ca.crt.yaml | 45 +----- 2 files changed, 2 insertions(+), 185 deletions(-) diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_kube-root-ca.crt.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_kube-root-ca.crt.yaml index 9cdb92ca..1fab4156 100644 --- a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_kube-root-ca.crt.yaml +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_kube-root-ca.crt.yaml @@ -1,129 +1,6 @@ apiVersion: v1 data: - ca.crt: | - -----BEGIN CERTIFICATE----- - MIIDMjCCAhqgAwIBAgIIWhqGRrDrzlAwDQYJKoZIhvcNAQELBQAwNzESMBAGA1UE - CxMJb3BlbnNoaWZ0MSEwHwYDVQQDExhrdWJlLWFwaXNlcnZlci1sYi1zaWduZXIw - HhcNMjYwNzI5MDQxMjIzWhcNMzYwNzI2MDQxMjIzWjA3MRIwEAYDVQQLEwlvcGVu - c2hpZnQxITAfBgNVBAMTGGt1YmUtYXBpc2VydmVyLWxiLXNpZ25lcjCCASIwDQYJ - KoZIhvcNAQEBBQADggEPADCCAQoCggEBALmDDTGr+bpb+16L+umYHZkQz9NH3gyw - sY9gWan2t8GIfH2vS7CbbRNeLiHs/kIojBKfvl55nqZJjcdiovMptDJhye0PzzDj - A1k75YcBZxJIvTbYqrw8g41CgVoq6ie91rW1MCDxoNUExeL0l2lMotXMPihfljxg - dxM6k9p3dCavPhxc2djptdM4216lPqcvDONMQKu9u6taU8eIP58+8VRYHaPmZ+tu - 18+9vvvK0vVy7RzIyu58m5SEoo7g7rLcKDS01fEpd3SwcnLGJAu3nH1zrJy52R1S - V+OP1/RFnLGepDgilgQdzS5bcUJh6bS2YHmxFMuSe6Y9bMVrgUdyW28CAwEAAaNC - MEAwDgYDVR0PAQH/BAQDAgKkMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCRJ - UhLpTsSSGNt4oWam39bSH0NXMA0GCSqGSIb3DQEBCwUAA4IBAQAoI/0xhP37aUvP - GT1ejrSDHZHKL2kIpoLSJ4XskF0pu7wJpDOJ/ZZd9PraPHbDmhaL+Sj5i1dHcuog - AsPljiOBM2XszTf1/jVoNbVtqeZHNA2yAS9S3FK2NgiSe3qZdt4tBanCAz8Vmdo8 - NopLBLkPCLyAhq95UhLWfB9I9tFU/Fj24uGji2zIPG29H28QNdzopjTYZIWGsgr1 - RmrGphHAKu7X2ObXaBKNgrtNvenYdi9nJKEmLpuEAO/0JUG0UkNBJvSUddNTmFxZ - kNZaOpAJ2OxU7mS+z7BscV40lWAmBNTSzfiVCumCN7H+goyZmjtxYeM2N/LAkP1z - mm5LNysB - -----END CERTIFICATE----- - -----BEGIN CERTIFICATE----- - MIIDQDCCAiigAwIBAgIIKFrxFadTVs4wDQYJKoZIhvcNAQELBQAwPjESMBAGA1UE - CxMJb3BlbnNoaWZ0MSgwJgYDVQQDEx9rdWJlLWFwaXNlcnZlci1sb2NhbGhvc3Qt - c2lnbmVyMB4XDTI2MDcyOTA0MTIyM1oXDTM2MDcyNjA0MTIyM1owPjESMBAGA1UE - CxMJb3BlbnNoaWZ0MSgwJgYDVQQDEx9rdWJlLWFwaXNlcnZlci1sb2NhbGhvc3Qt - c2lnbmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtTSIp3C+bjBv - n9jyY3DmqjYiVHUMrGEVUjDATeHbNreo0oC9B6EnTTspTFvOHs0r80i1kry2XEyw - OKFdJaloa8H3gSXAp11Da45xJM5SzVeIln6RySLtiOjeG4O6dXxgakVUXSg3KnBG - Elrc8H/6A2K7AVWEEonvQ37S8wtuNNgKrET1pjLuJCWFoEASxHklyUYC9MT3jGbC - hlr/N3772rRhzbEp+jLMMImiItQW+Eg7wak4t9UbohaNNo1Q+alWrz29enlZRpCC - nYWnStxsPheduR+xIchkux7gSqC+VzwGHgLcxjpSIBpO+Dsi9ZqFefAx+zvGfIxE - DOFu2OdGrwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB - /zAdBgNVHQ4EFgQUE65reJigFKAk+rkmYa4+EHnOc7QwDQYJKoZIhvcNAQELBQAD - ggEBAII0qokTJtFx9vZW7eUVwGGGkb8vEt31nlvfI2+WKkRWMqLsLVdrIrvDFv4o - oTxBWCLaQ79Vft4E7cjgh8f08h5bBv6iCLJp8UMBb4g6bOtGWFTntIb08CwZh/vV - ICNRBeH6pnAU0lGK7koAAi1CRWD+u5j0bWFaDlGhIU6nwhKyLJAjnmCvK/4hbPNG - 3nmdtJEp1kxcqiUq7iA5fWL7GtjvZL9Ivl0fqOn1sCDvMHBU26vXnGNWnDwWubM4 - HGyt/7g3dWCORQY/ddknnXMlAQoD16q2/DHLvLCRN+L3h4ZXGzpdUL8K93wNIQx2 - QQjcVAg3Yl0AFC+DGHgp1Dnlwho= - -----END CERTIFICATE----- - -----BEGIN CERTIFICATE----- - MIIDTDCCAjSgAwIBAgIIRi/MIHnkUxkwDQYJKoZIhvcNAQELBQAwRDESMBAGA1UE - CxMJb3BlbnNoaWZ0MS4wLAYDVQQDEyVrdWJlLWFwaXNlcnZlci1zZXJ2aWNlLW5l - dHdvcmstc2lnbmVyMB4XDTI2MDcyOTA0MTIyM1oXDTM2MDcyNjA0MTIyM1owRDES - MBAGA1UECxMJb3BlbnNoaWZ0MS4wLAYDVQQDEyVrdWJlLWFwaXNlcnZlci1zZXJ2 - aWNlLW5ldHdvcmstc2lnbmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC - AQEA5LWJcfavzKMdtTHCpQ6w874nhDBzkHUdE+QFdeosWtzmBXD9I3N3Hp7GsiWF - twKIsXCngCtMgZeuYku2zT0JMNz4m1RdZU4HjVqIYX4B8vCSh2K4P7QfXB85zDZZ - YV//exF3NJgSaVgZIJPZWYjHBQe2DtVOY7J2mupzx5wpBKKcd4AFU1AqZMETevbV - 2GXek6bE7C2j+qW2dmpGRXk8hWM8cm9We6uCycWtNQjhRoMHaMk2FO4RFVAtIYcz - tLLr2NMXHBGJwJynC00b0AP71cnD6NnfJTg3TJh5pJj2XTOvPbMIX5sIhuU5iAUa - 7bJwiAOZZ+G6GTKWsk4DFdzcSwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAqQwDwYD - VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPi64sFd/DiqTkwoqR1xJnSWTWaowDQYJ - KoZIhvcNAQELBQADggEBAGHc0Bi9+tpo9LgDCLPv+g5HaFO3ATsu7w48yuDtlI9f - BBvxLzny97nAh6/mPlMbZfjadrXb6GxDz7//JIr5L49CxIDwsNWlZ7PO+SkHC9TQ - MoGoZAqRY5xu9y30l/QSsYyz45VpF+l3mFQjYgV8ao0r43Jik/fIwZtlzO3/0JMO - yBjHYP0BELnVCpKsStStoLs75yhb//XYA7C9xFtRSnKAdbWFMr1TP00pwe6xUcPB - lqwshe0DvX4d3q4MFWJ0vGn044ZGT0Q9TLg3mxkskBsSkMwJB3x6OHaPofMRMXll - VvW+CE3Gm2lkpHTD/YW+4c5NvinuQv5/FPM9mMjxFuM= - -----END CERTIFICATE----- - -----BEGIN CERTIFICATE----- - MIIDlzCCAn+gAwIBAgIIYrUApGEIppMwDQYJKoZIhvcNAQELBQAwWTFXMFUGA1UE - AwxOb3BlbnNoaWZ0LWt1YmUtYXBpc2VydmVyLW9wZXJhdG9yX2xvY2FsaG9zdC1y - ZWNvdmVyeS1zZXJ2aW5nLXNpZ25lckAxNzg1Mjk5MjgwMB4XDTI2MDcyOTA0Mjc1 - OVoXDTM2MDcyNjA0MjgwMFowWTFXMFUGA1UEAwxOb3BlbnNoaWZ0LWt1YmUtYXBp - c2VydmVyLW9wZXJhdG9yX2xvY2FsaG9zdC1yZWNvdmVyeS1zZXJ2aW5nLXNpZ25l - ckAxNzg1Mjk5MjgwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuOnr - QwrC3IARjfHaxR3Esn1emFDSnEHQWojiXxNo4xuMph0W1IKelETXDb3b+rJV4DtJ - kCT2Tob2lDPYLDCaAkIZV1x9H2jBNuIU150xhuPy+Ob8zRiOZRTQmxbW7Utkr+zO - nbZZ3Wo2rVI07TSsTtE3OZQIj7Jy8rlUuxiuzgXoXkicXZnKZ0tRO4es69t0UxQ5 - ST6IV/rBmwzXoDpSFx+iflax4KYn967FAYOQ5t7iAOXC7+7CHyWsPtkjoxl69h7I - 3yT8vimJPc3KRxsN9WxTvM927FVtzxnJBFuFwwYKJzsm+KqqV1U3Znvk1UBPyxld - 64uc/2CYtRg8kgHjjwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/ - BAUwAwEB/zAdBgNVHQ4EFgQURpigJaoVjceFbUKbRebjblCPccQwHwYDVR0jBBgw - FoAURpigJaoVjceFbUKbRebjblCPccQwDQYJKoZIhvcNAQELBQADggEBAICkMv5C - hBQk+Y3tFjW53NazcYjyZ/1XzHu4mYacM1vxsHZLF+pNbEkR8WkRmiFJkIV4n8SZ - nyKoTIFbx+ajJlEN9oR/iX+dEsi6DOfkmC7izYFmE+0E/BHpPEJHIWLvAhcQD7EF - z1wtK1JfZilRM/PxMRKqTS2KY1Mj87hWKyvdpNyNVnJsNn0rxsfkdhSxlisnhUQU - qHmSDUqoBP2KAoUvAHGFP7F0ccOoNEqNjbwmB6QdgjfcxCAKLrG3qxRlaOtsQLjQ - H6qUYlFxJb+VndcI/JRgOsrnLo7jaUOqsvW3y0gaM3GMzyG35pf9lAi6pDfWXx+F - +QIShitXZ4w7ChI= - -----END CERTIFICATE----- - -----BEGIN CERTIFICATE----- - MIIDkzCCAnugAwIBAgIId3wv8mIhakIwDQYJKoZIhvcNAQELBQAwJjEkMCIGA1UE - AwwbaW5ncmVzcy1vcGVyYXRvckAxNzg1Mjk5MzU1MB4XDTI2MDcyOTA0MjkxNloX - DTI4MDcyODA0MjkxN1owOTE3MDUGA1UEAwwuKi5hcHBzLm1pZ3FlLTY2NDMxLnFl - LmRldmNsdXN0ZXIub3BlbnNoaWZ0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP - ADCCAQoCggEBAOuzc2uY0NavHYaNr3wFmmhv7PYQEADqksl5Z5UgxFjqIYWXZBI7 - QTh76h1/lDJjIvywp2f6KwqNtxqGqBMAlMcEyXhfnv0AlVeL/ZPTyH9wrmipk4XB - +oMAncK2T5CJZ9sMe2hzmZlJn5eKmHKjUWsZoMaLNu79HMJFWRr/xbl2XuEQWFDh - r6/tYebFVmiWaCqB3Un+qpnjpwTlOQqRoUpn/euWs85vMr0nOwJthBigeRsQpMtw - puqKus5cEAYvGlQzZG+h/nFhC+g4IreRIUiEeu/jM3J61UvsVq6LOeLnI6owu8n6 - 9rtQy2xyE7T4erxXXV52OD3SheNh7K6P9jsCAwEAAaOBsTCBrjAOBgNVHQ8BAf8E - BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAdBgNVHQ4E - FgQURdJY3LJFTJZcpTcCNXTTaVKsqpswHwYDVR0jBBgwFoAUu5aXDvkJk1mSW8YU - ucWE2fSeoyIwOQYDVR0RBDIwMIIuKi5hcHBzLm1pZ3FlLTY2NDMxLnFlLmRldmNs - dXN0ZXIub3BlbnNoaWZ0LmNvbTANBgkqhkiG9w0BAQsFAAOCAQEABsmKPz0ngh7o - w8eEvywQuIWAalK68sA7ZPXGBhZMk+wtvblcL8FUJncbvyo+FdzgJL6Esb0LVWwS - U3QtVELfyn/VtJfH0pNQcrBtoxMGQ+wLUaCYOxriUs7S850LmyWUk6Go2RCKg24f - l168AB2M/Qa//OPcDwd2ob/B9TydqfIRSPlZvaoQPB4lzQKeJUiO9GX1WKgQhGER - IBzJDXb5dPgaNm4Ri71lEExtqPEYU3ruWQ8EZ6bqX22rJ6xLofg0X+avINZvFERh - XAPDlsfszZqX8pYxy5g93zEE0YrKiAraydZasq2eVk6XImPb02yoNV2d8xD24blF - 1yuqKvAn1g== - -----END CERTIFICATE----- - -----BEGIN CERTIFICATE----- - MIIDDDCCAfSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBtpbmdy - ZXNzLW9wZXJhdG9yQDE3ODUyOTkzNTUwHhcNMjYwNzI5MDQyOTE2WhcNMjgwNzI4 - MDQyOTE3WjAmMSQwIgYDVQQDDBtpbmdyZXNzLW9wZXJhdG9yQDE3ODUyOTkzNTUw - ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDEbyzl8Q3ZLMdw2xaTqSKX - viFab3Fi/FUreWyiH35S9nghk4K8m5y4YlpRR48o9/wsxpOpzU4k3pt5dqw/x4gm - 1aDuCbD+L/JRnUWjLQV3EAEZHXO6Fgat3PA/Sw2ZKEsHo4o3+zhYBFVAZbhHJP3c - 1/AT/sTM8pM/X82/U+LPp6mH4zZ/yiJvNUq65M0ougaxr1XK67jhd58+5/jWWdzH - 5pFW9Cxy69w1H0tpamad8cQ9bbzfBoKMB04dsb7zprufkB2r3WDGGmAnGS8mNd6a - 7ndOaU89MtnO1YUwlYfR3DauE/kK/Ib6Md2KXgUp/KNf8PqeKLeJyDDg1P2n6d7/ - AgMBAAGjRTBDMA4GA1UdDwEB/wQEAwICpDASBgNVHRMBAf8ECDAGAQH/AgEAMB0G - A1UdDgQWBBS7lpcO+QmTWZJbxhS5xYTZ9J6jIjANBgkqhkiG9w0BAQsFAAOCAQEA - orqXfEOXP0mN3zgrYP+XAdZq7W5NCurPXK7CTwegEUuJjcLc7ubFKlY26gshU+kx - truAZ9WVcvQaIisubEAohTxLtEQ60C9euakmICAhJXVZKxXFrcv4xkufhz8o2fWz - QQiPcv99Pi5NSPuIEzndkmf5EinpPsPY4hB3OvBWQ9aoISZEFr7ro1dnOLNeiUzp - 3q13kIdnThcmCBknnHefpAFzbflN+KdOxZW6Ol9HWkwmSQYUngPVPTENteLZ0tHW - q5hTGBX5TIRsrcUKb/U6NYb6f5JDX4mAOnWkB4xf4aN7K69d21Fh71CM4c7Ts1SO - 9a1Po3eD1lXH7N/4H8OdKA== - -----END CERTIFICATE----- + ca.crt: REDACTED kind: ConfigMap metadata: annotations: @@ -131,22 +8,5 @@ metadata: kube-apiserver when using internal endpoints such as the internal service IP or kubernetes.default.svc. No other usage is guaranteed across distributions of Kubernetes clusters. - creationTimestamp: "2026-07-29T11:56:52Z" - managedFields: - - apiVersion: v1 - fieldsType: FieldsV1 - fieldsV1: - f:data: - .: {} - f:ca.crt: {} - f:metadata: - f:annotations: - .: {} - f:kubernetes.io/description: {} - manager: kube-controller-manager - operation: Update - time: "2026-07-29T11:56:52Z" name: kube-root-ca.crt namespace: redis - resourceVersion: "133775" - uid: 13eaf43a-55b7-47f6-ab4a-5475e526137f diff --git a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_openshift-service-ca.crt.yaml b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_openshift-service-ca.crt.yaml index ed7e1b1e..4201325a 100644 --- a/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_openshift-service-ca.crt.yaml +++ b/e2e-tests/golden-manifests-ocp/redis/export/resources/redis/ConfigMap__v1_redis_openshift-service-ca.crt.yaml @@ -1,52 +1,9 @@ apiVersion: v1 data: - service-ca.crt: | - -----BEGIN CERTIFICATE----- - MIIDUTCCAjmgAwIBAgIIZqyIdI72MQIwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE - Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTI5OTI3OTAe - Fw0yNjA3MjkwNDI3NTlaFw0yODA5MjYwNDI4MDBaMDYxNDAyBgNVBAMMK29wZW5z - aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUyOTkyNzkwggEiMA0GCSqG - SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDLMGWscRza/5CDJXibKR0gBXDyZHkDBFyG - UZHHPMD+kBEY0Dd4GyXr6qRLsZVGb98UKOVM2zxu6HBzSvyaFex/AyeU8Gv1gXHt - WslQjbk3hG2t8k8jGNTBn3pz6gOXOAdvdhjfTjinAEnkiajoQdq2fq9m2+QgowY2 - G5smFmC2d6OpfeKxDQ9VL0N/KHfMRqnlV16ktsQn/YewwevwISJJrDQ3xvET38JY - Kxj4Fsr+xcND+nKq/3pjFqY1F/mQQi3CeLMulTlvDafGbOFDduPqoL7k6LhW5+7l - yhwFXfn1RoJqtujOTqhWZoq+1cFRph7SfcLvvL70N/jQzW3vC+wTAgMBAAGjYzBh - MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQe0G5N - 3AAHoT0aUl4JzVp17uA41TAfBgNVHSMEGDAWgBQe0G5N3AAHoT0aUl4JzVp17uA4 - 1TANBgkqhkiG9w0BAQsFAAOCAQEAhq7iu31m5Jx9QRcoLuYDYGpEDlXBkpdL7UEF - w1Q7w081J8f48xr2+R/kzRKHDKGpDtUENj2VR9rSJIjnlsm6/1lqtG6KaZR4Fi6y - GprYP6K2tLcIF3Y41YQ4Gv2gMnRf0ZoNYAI3OZSLooM4vhRyMFCZlfnrke5TABLI - hpf7YzoxleFPHFKjPGjgk9UpphVFpchri1Gv9n3n0MJP8vAv9I5T4wzQgbVZaml9 - WdXff34r78u/g7g9u1n9wX8ngSoGByy7Vyrdk2Ff8SZ2WJsGtGqQ05cgamyiCCHb - jji3oOFOWxLDxpDX/CE8PG+/IXIoE7DwWLNoFntfOjyCgFWqAg== - -----END CERTIFICATE----- + service-ca.crt: REDACTED kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" - creationTimestamp: "2026-07-29T11:56:52Z" - managedFields: - - apiVersion: v1 - fieldsType: FieldsV1 - fieldsV1: - f:data: {} - f:metadata: - f:annotations: - .: {} - f:service.beta.openshift.io/inject-cabundle: {} - manager: kube-controller-manager - operation: Update - time: "2026-07-29T11:56:52Z" - - apiVersion: v1 - fieldsType: FieldsV1 - fieldsV1: - f:data: - f:service-ca.crt: {} - manager: service-ca-operator - operation: Update - time: "2026-07-29T11:56:52Z" name: openshift-service-ca.crt namespace: redis - resourceVersion: "133781" - uid: d7c48f25-8f13-442e-9c7a-075236e4a781 From 19203565393dd1c00a5a1aca91013efbad5aed94 Mon Sep 17 00:00:00 2001 From: M Sajid Mansoori Date: Mon, 3 Aug 2026 10:24:10 +0530 Subject: [PATCH 4/7] Use strict output comparator for golden manifests Signed-off-by: M Sajid Mansoori --- e2e-tests/tests/tier0/mta_801_stateful_migration_test.go | 6 +----- e2e-tests/tests/tier0/mta_817_stateless_migration_test.go | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/e2e-tests/tests/tier0/mta_801_stateful_migration_test.go b/e2e-tests/tests/tier0/mta_801_stateful_migration_test.go index 228ec4c2..0c8aac75 100644 --- a/e2e-tests/tests/tier0/mta_801_stateful_migration_test.go +++ b/e2e-tests/tests/tier0/mta_801_stateful_migration_test.go @@ -79,11 +79,7 @@ var _ = Describe("Stateful app migration", func() { By("Compare YAML semantic diff of golden and actual output files") goldenOutputDir, err := utils.GoldenManifestsDirForPlatform(appName, "output", isOpenShift) Expect(err).NotTo(HaveOccurred()) - compareOutput := utils.CompareDirectoryYAMLSemantics - if isOpenShift { - compareOutput = utils.CompareDirectoryYAMLSemanticsExportAllowOptionalOCPOutputDefaults - } - if err := compareOutput(goldenOutputDir, paths.OutputDir); err != nil { + if err := utils.CompareDirectoryYAMLSemantics(goldenOutputDir, paths.OutputDir); err != nil { Fail(fmt.Sprintf("YAML semantic diff of golden and actual output files: %v", err)) } else { log.Printf("YAML semantic diff of golden and actual output files: no differences found") diff --git a/e2e-tests/tests/tier0/mta_817_stateless_migration_test.go b/e2e-tests/tests/tier0/mta_817_stateless_migration_test.go index 83f4dea8..a4a4dd53 100644 --- a/e2e-tests/tests/tier0/mta_817_stateless_migration_test.go +++ b/e2e-tests/tests/tier0/mta_817_stateless_migration_test.go @@ -71,11 +71,7 @@ var _ = Describe("Stateless migration", func() { By("Compare YAML semantic diff of golden and actual output files") goldenOutputDir, err := utils.GoldenManifestsDirForPlatform(appName, "output", isOpenShift) Expect(err).NotTo(HaveOccurred()) - compareOutput := utils.CompareDirectoryYAMLSemantics - if isOpenShift { - compareOutput = utils.CompareDirectoryYAMLSemanticsExportAllowOptionalOCPOutputDefaults - } - if err := compareOutput(goldenOutputDir, paths.OutputDir); err != nil { + if err := utils.CompareDirectoryYAMLSemantics(goldenOutputDir, paths.OutputDir); err != nil { Fail(fmt.Sprintf("YAML semantic diff of golden and actual output files: %v", err)) } else { log.Printf("YAML semantic diff of golden and actual output files: no differences found") From 8e78e01e2440ebdbbcb41906bd84b4792c150064 Mon Sep 17 00:00:00 2001 From: M Sajid Mansoori Date: Mon, 3 Aug 2026 10:49:52 +0530 Subject: [PATCH 5/7] Fix coderabbit suggestions Signed-off-by: M Sajid Mansoori --- e2e-tests/utils/utils.go | 3 +++ e2e-tests/utils/utils_test.go | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/e2e-tests/utils/utils.go b/e2e-tests/utils/utils.go index 54d03431..299cab6d 100644 --- a/e2e-tests/utils/utils.go +++ b/e2e-tests/utils/utils.go @@ -776,6 +776,9 @@ func normalizeUnstableFields(doc any) any { delete(annotations, "volume.kubernetes.io/selected-node") delete(annotations, "volume.kubernetes.io/storage-provisioner") delete(annotations, "volume.beta.kubernetes.io/storage-provisioner") + if len(annotations) == 0 { + delete(metadata, "annotations") + } } return normalized } diff --git a/e2e-tests/utils/utils_test.go b/e2e-tests/utils/utils_test.go index e4b58c69..b4e19c0d 100644 --- a/e2e-tests/utils/utils_test.go +++ b/e2e-tests/utils/utils_test.go @@ -610,6 +610,16 @@ func TestCompareDirectoryYAMLSemanticsExport(t *testing.T) { return golden, got }, }, + { + name: "pvc_ignored_annotations_present_on_one_side_only", + build: func(t *testing.T) (string, string) { + golden := t.TempDir() + got := t.TempDir() + write(t, golden, "resources/pvc.yaml", "apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n namespace: ns\n name: data\n annotations:\n volume.beta.kubernetes.io/storage-provisioner: ebs.csi.aws.com\n volume.kubernetes.io/selected-node: ip-10-0-25-205.us-east-2.compute.internal\n volume.kubernetes.io/storage-provisioner: ebs.csi.aws.com\nspec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 1Gi\n") + write(t, got, "resources/pvc.yaml", "apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n namespace: ns\n name: data\nspec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 1Gi\n") + return golden, got + }, + }, { name: "real_semantic_diff_detected", build: func(t *testing.T) (string, string) { From bf1b5572b1f7855868a964deffde9404a8fc534f Mon Sep 17 00:00:00 2001 From: M Sajid Mansoori Date: Mon, 3 Aug 2026 11:26:19 +0530 Subject: [PATCH 6/7] Update golden manifests for ocp Signed-off-by: M Sajid Mansoori --- .../simple-nginx-nopv/output/output.yaml | 87 ------------------- ...e-nginx-nopv_openshift-service-ca.crt.yaml | 9 -- ...v1_simple-nginx-nopv_system:deployers.yaml | 15 ---- ...mple-nginx-nopv_system:image-builders.yaml | 15 ---- ...imple-nginx-nopv_system:image-pullers.yaml | 15 ---- ...Account__v1_simple-nginx-nopv_builder.yaml | 11 --- ...ccount__v1_simple-nginx-nopv_deployer.yaml | 11 --- 7 files changed, 163 deletions(-) delete mode 100644 e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ConfigMap__v1_simple-nginx-nopv_openshift-service-ca.crt.yaml delete mode 100644 e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:deployers.yaml delete mode 100644 e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:image-builders.yaml delete mode 100644 e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:image-pullers.yaml delete mode 100644 e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ServiceAccount__v1_simple-nginx-nopv_builder.yaml delete mode 100644 e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ServiceAccount__v1_simple-nginx-nopv_deployer.yaml diff --git a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/output.yaml b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/output.yaml index b43f564b..06b2a95d 100644 --- a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/output.yaml +++ b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/output.yaml @@ -1,91 +1,4 @@ apiVersion: v1 -imagePullSecrets: -- name: builder-dockercfg-n5zzt -kind: ServiceAccount -metadata: - annotations: - openshift.io/internal-registry-pull-secret-ref: builder-dockercfg-n5zzt - name: builder - namespace: simple-nginx-nopv -secrets: -- name: builder-dockercfg-n5zzt ---- -apiVersion: v1 -imagePullSecrets: -- name: deployer-dockercfg-rgp2c -kind: ServiceAccount -metadata: - annotations: - openshift.io/internal-registry-pull-secret-ref: deployer-dockercfg-rgp2c - name: deployer - namespace: simple-nginx-nopv -secrets: -- name: deployer-dockercfg-rgp2c ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - annotations: - openshift.io/description: Allows deploymentconfigs in this namespace to rollout - pods in this namespace. It is auto-managed by a controller; remove subjects - to disable. - name: system:deployers - namespace: simple-nginx-nopv -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: system:deployer -subjects: -- kind: ServiceAccount - name: deployer - namespace: simple-nginx-nopv ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - annotations: - openshift.io/description: Allows builds in this namespace to push images to this - namespace. It is auto-managed by a controller; remove subjects to disable. - name: system:image-builders - namespace: simple-nginx-nopv -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: system:image-builder -subjects: -- kind: ServiceAccount - name: builder - namespace: simple-nginx-nopv ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - annotations: - openshift.io/description: Allows all pods in this namespace to pull images from - this namespace. It is auto-managed by a controller; remove subjects to disable. - name: system:image-pullers - namespace: simple-nginx-nopv -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: system:image-puller -subjects: -- apiGroup: rbac.authorization.k8s.io - kind: Group - name: system:serviceaccounts:simple-nginx-nopv ---- -apiVersion: v1 -data: - service-ca.crt: | - REDACTED -kind: ConfigMap -metadata: - annotations: - service.beta.openshift.io/inject-cabundle: "true" - name: openshift-service-ca.crt - namespace: simple-nginx-nopv ---- -apiVersion: v1 kind: Service metadata: labels: diff --git a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ConfigMap__v1_simple-nginx-nopv_openshift-service-ca.crt.yaml b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ConfigMap__v1_simple-nginx-nopv_openshift-service-ca.crt.yaml deleted file mode 100644 index 620f03dd..00000000 --- a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ConfigMap__v1_simple-nginx-nopv_openshift-service-ca.crt.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v1 -data: - service-ca.crt: REDACTED -kind: ConfigMap -metadata: - annotations: - service.beta.openshift.io/inject-cabundle: "true" - name: openshift-service-ca.crt - namespace: simple-nginx-nopv diff --git a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:deployers.yaml b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:deployers.yaml deleted file mode 100644 index f603a26b..00000000 --- a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:deployers.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - annotations: - openshift.io/description: Allows deploymentconfigs in this namespace to rollout pods in this namespace. It is auto-managed by a controller; remove subjects to disable. - name: system:deployers - namespace: simple-nginx-nopv -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: system:deployer -subjects: - - kind: ServiceAccount - name: deployer - namespace: simple-nginx-nopv diff --git a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:image-builders.yaml b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:image-builders.yaml deleted file mode 100644 index c7016efc..00000000 --- a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:image-builders.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - annotations: - openshift.io/description: Allows builds in this namespace to push images to this namespace. It is auto-managed by a controller; remove subjects to disable. - name: system:image-builders - namespace: simple-nginx-nopv -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: system:image-builder -subjects: - - kind: ServiceAccount - name: builder - namespace: simple-nginx-nopv diff --git a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:image-pullers.yaml b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:image-pullers.yaml deleted file mode 100644 index 94c9140f..00000000 --- a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/RoleBinding_rbac.authorization.k8s.io_v1_simple-nginx-nopv_system:image-pullers.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - annotations: - openshift.io/description: Allows all pods in this namespace to pull images from this namespace. It is auto-managed by a controller; remove subjects to disable. - name: system:image-pullers - namespace: simple-nginx-nopv -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: system:image-puller -subjects: - - apiGroup: rbac.authorization.k8s.io - kind: Group - name: system:serviceaccounts:simple-nginx-nopv diff --git a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ServiceAccount__v1_simple-nginx-nopv_builder.yaml b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ServiceAccount__v1_simple-nginx-nopv_builder.yaml deleted file mode 100644 index 7afcea92..00000000 --- a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ServiceAccount__v1_simple-nginx-nopv_builder.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -imagePullSecrets: - - name: builder-dockercfg-n5zzt -kind: ServiceAccount -metadata: - annotations: - openshift.io/internal-registry-pull-secret-ref: builder-dockercfg-n5zzt - name: builder - namespace: simple-nginx-nopv -secrets: - - name: builder-dockercfg-n5zzt diff --git a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ServiceAccount__v1_simple-nginx-nopv_deployer.yaml b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ServiceAccount__v1_simple-nginx-nopv_deployer.yaml deleted file mode 100644 index c9e1d603..00000000 --- a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/ServiceAccount__v1_simple-nginx-nopv_deployer.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -imagePullSecrets: - - name: deployer-dockercfg-rgp2c -kind: ServiceAccount -metadata: - annotations: - openshift.io/internal-registry-pull-secret-ref: deployer-dockercfg-rgp2c - name: deployer - namespace: simple-nginx-nopv -secrets: - - name: deployer-dockercfg-rgp2c From 615628c00a4bdc7a49f3741ea94d51cc48a3aaee Mon Sep 17 00:00:00 2001 From: M Sajid Mansoori Date: Mon, 3 Aug 2026 11:52:12 +0530 Subject: [PATCH 7/7] Update golden manifest Signed-off-by: M Sajid Mansoori --- .../golden-manifests-ocp/simple-nginx-nopv/output/output.yaml | 2 ++ ....openshift.io_v1_simple-nginx-nopv_my-simple-nginx-nopv.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/output.yaml b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/output.yaml index 06b2a95d..4970c7b5 100644 --- a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/output.yaml +++ b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/output.yaml @@ -66,6 +66,8 @@ spec: apiVersion: route.openshift.io/v1 kind: Route metadata: + annotations: + openshift.io/host.generated: "true" labels: app: simple-nginx-nopv name: my-simple-nginx-nopv diff --git a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/Route_route.openshift.io_v1_simple-nginx-nopv_my-simple-nginx-nopv.yaml b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/Route_route.openshift.io_v1_simple-nginx-nopv_my-simple-nginx-nopv.yaml index 97020c4e..ff42f566 100644 --- a/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/Route_route.openshift.io_v1_simple-nginx-nopv_my-simple-nginx-nopv.yaml +++ b/e2e-tests/golden-manifests-ocp/simple-nginx-nopv/output/resources/simple-nginx-nopv/Route_route.openshift.io_v1_simple-nginx-nopv_my-simple-nginx-nopv.yaml @@ -1,6 +1,8 @@ apiVersion: route.openshift.io/v1 kind: Route metadata: + annotations: + openshift.io/host.generated: "true" labels: app: simple-nginx-nopv name: my-simple-nginx-nopv