Skip to content

Conversation

@orenc1
Copy link
Contributor

@orenc1 orenc1 commented Dec 18, 2025

The kubevirt platform in Hosted Control Planes (HCP) supports a dual-stack topology. Adding it to the dualStackPlatforms list to avoid reconciler error when the hosted cluster is dual-stack.

backport of #2849

The kubevirt platform in Hosted Control Planes (HCP) supports a dual-stack topology.
Adding it to the dualStackPlatforms list to avoid reconciler error when the hosted cluster is dual-stack.

Signed-off-by: Oren Cohen <ocohen@redhat.com>
@coderabbitai
Copy link

coderabbitai bot commented Dec 18, 2025

Important

Review skipped

Auto reviews are limited based on label configuration.

🚫 Review skipped — only excluded labels are configured. (1)
  • do-not-merge/work-in-progress

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Comment @coderabbitai help to get the list of available commands and usage tips.

@orenc1 orenc1 changed the title [release-4.20] Add kubevirt platform to dual-stack supported platforms OCPBUGS-66253: [release-4.20] Add kubevirt platform to dual-stack supported platforms Dec 23, 2025
@openshift-ci-robot openshift-ci-robot added jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Dec 23, 2025
@openshift-ci-robot
Copy link
Contributor

@orenc1: This pull request references Jira Issue OCPBUGS-66253, which is invalid:

  • release note text must be set and not match the template OR release note type must be set to "Release Note Not Required". For more information you can reference the OpenShift Bug Process.
  • expected Jira Issue OCPBUGS-66253 to depend on a bug targeting a version in 4.21.0 and in one of the following states: VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA), but no dependents were found

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

The kubevirt platform in Hosted Control Planes (HCP) supports a dual-stack topology. Adding it to the dualStackPlatforms list to avoid reconciler error when the hosted cluster is dual-stack.

backport of #2849

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@orenc1
Copy link
Contributor Author

orenc1 commented Dec 23, 2025

/jira refresh

@openshift-ci-robot
Copy link
Contributor

@orenc1: This pull request references Jira Issue OCPBUGS-66253, which is invalid:

  • expected dependent Jira Issue OCPBUGS-69941 to be in one of the following states: VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA), but it is POST instead

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

Details

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@orenc1
Copy link
Contributor Author

orenc1 commented Dec 24, 2025

Verified on an OCP 4.20 release image built from this PR - registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release:latest

hypershift create cluster kubevirt \
  --name dualstack-420 \
  --node-pool-replicas 3 \ 
  --ssh-key=/home/ocohen/.ssh/cnv-qe-jenkins.pub \
  --memory 16Gi   --cores 4 \
  --pull-secret=/home/ocohen/pull-secret.json \
  --release-image=registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release:latest \
  --control-plane-availability-policy=HighlyAvailable \
  --root-volume-storage-class ocs-storagecluster-ceph-rbd-virtualization \
  --cluster-cidr 10.132.0.0/14 \
  --cluster-cidr fd03::/48 \
  --service-cidr 172.31.0.0/16 \
  --service-cidr fd04::/112
Hosted Cluster CR:
apiVersion: hypershift.openshift.io/v1beta1
kind: HostedCluster
metadata:
  annotations:
    hypershift.openshift.io/HasBeenAvailable: "true"
    hypershift.openshift.io/management-platform: BareMetal
  creationTimestamp: "2025-12-24T08:45:39Z"
  finalizers:
  - hypershift.openshift.io/finalizer
  generation: 3
  labels:
    hypershift.openshift.io/auto-created-for-infra: dualstack-420-x2j2j
  name: dualstack-420
  namespace: clusters
  resourceVersion: "1356752"
  uid: 42d1ac7b-022e-4677-9bb5-6366da965125
spec:
  autoscaling:
    scaling: ScaleUpAndScaleDown
  capabilities: {}
  clusterID: a8d619bb-abcc-4dea-8aa0-a5dea79b4fb1
  configuration: {}
  controllerAvailabilityPolicy: HighlyAvailable
  dns:
    baseDomain: apps.bm17a-tlv2.abi.cnv-qe.rhood.us
  etcd:
    managed:
      storage:
        persistentVolume:
          size: 8Gi
        type: PersistentVolume
    managementType: Managed
  fips: false
  infraID: dualstack-420-x2j2j
  infrastructureAvailabilityPolicy: SingleReplica
  issuerURL: https://kubernetes.default.svc
  networking:
    clusterNetwork:
    - cidr: 10.132.0.0/14
    - cidr: fd03::/48
    networkType: OVNKubernetes
    serviceNetwork:
    - cidr: 172.31.0.0/16
    - cidr: fd04::/112
  olmCatalogPlacement: management
  platform:
    kubevirt:
      baseDomainPassthrough: true
      generateID: vxv7mtfjfp
    type: KubeVirt
  pullSecret:
    name: dualstack-420-pull-secret
  release:
    image: registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release:latest
  secretEncryption:
    aescbc:
      activeKey:
        name: dualstack-420-etcd-encryption-key
    type: aescbc
  services:
  - service: APIServer
    servicePublishingStrategy:
      type: LoadBalancer
  - service: Ignition
    servicePublishingStrategy:
      type: Route
  - service: Konnectivity
    servicePublishingStrategy:
      type: Route
  - service: OAuthServer
    servicePublishingStrategy:
      type: Route
  sshKey:
    name: dualstack-420-ssh-key
status:
  conditions:
  - lastTransitionTime: "2025-12-24T08:45:41Z"
    message: Reconciliation completed successfully
    observedGeneration: 3
    reason: ReconciliatonSucceeded
    status: "True"
    type: ReconciliationSucceeded
  - lastTransitionTime: "2025-12-24T08:59:30Z"
    message: Cluster version is 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest
    observedGeneration: 3
    reason: FromClusterVersion
    status: "False"
    type: ClusterVersionProgressing
  - lastTransitionTime: "2025-12-24T08:48:53Z"
    message: Payload loaded version="4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest"
      image="registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release@sha256:0cf754c8303ce925795b1a08196b2907a164d85f084e5667dd9ee1b37d592b8e"
      architecture="amd64"
    observedGeneration: 3
    reason: PayloadLoaded
    status: "True"
    type: ClusterVersionReleaseAccepted
  - lastTransitionTime: "2025-12-24T09:00:35Z"
    message: Condition not found in the CVO.
    observedGeneration: 3
    reason: FromClusterVersion
    status: "True"
    type: ClusterVersionUpgradeable
  - lastTransitionTime: "2025-12-24T08:59:30Z"
    message: Done applying 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest
    observedGeneration: 3
    reason: FromClusterVersion
    status: "True"
    type: ClusterVersionAvailable
  - lastTransitionTime: "2025-12-24T08:59:30Z"
    message: ""
    observedGeneration: 3
    reason: FromClusterVersion
    status: "True"
    type: ClusterVersionSucceeding
  - lastTransitionTime: "2025-12-24T09:00:25Z"
    message: The hosted cluster is not degraded
    observedGeneration: 3
    reason: AsExpected
    status: "False"
    type: Degraded
  - lastTransitionTime: "2025-12-24T08:45:39Z"
    message: All is well
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: KubeVirtNodesLiveMigratable
  - lastTransitionTime: "2025-12-24T08:47:39Z"
    message: ""
    observedGeneration: 3
    reason: QuorumAvailable
    status: "True"
    type: EtcdAvailable
  - lastTransitionTime: "2025-12-24T08:48:07Z"
    message: Kube APIServer deployment is available
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: KubeAPIServerAvailable
  - lastTransitionTime: "2025-12-24T08:47:04Z"
    message: All is well
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: InfrastructureReady
  - lastTransitionTime: "2025-12-24T08:45:39Z"
    message: External DNS is not configured
    observedGeneration: 3
    reason: StatusUnknown
    status: Unknown
    type: ExternalDNSReachable
  - lastTransitionTime: "2025-12-24T08:45:46Z"
    message: Configuration passes validation
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: ValidHostedControlPlaneConfiguration
  - lastTransitionTime: "2025-12-24T08:47:04Z"
    message: All is well
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: ValidReleaseInfo
  - lastTransitionTime: "2025-12-24T08:47:04Z"
    message: Identity provider configuration is valid
    observedGeneration: 3
    reason: IDPConfigurationValid
    status: "True"
    type: ValidIDPConfiguration
  - lastTransitionTime: "2025-12-24T08:45:39Z"
    message: Condition not found in the HCP
    observedGeneration: 3
    reason: StatusUnknown
    status: Unknown
    type: HostedClusterRestoredFromBackup
  - lastTransitionTime: "2025-12-24T08:45:39Z"
    message: Condition not found in the HCP
    observedGeneration: 3
    reason: StatusUnknown
    status: Unknown
    type: DataPlaneConnectionAvailable
  - lastTransitionTime: "2025-12-24T08:48:07Z"
    message: The hosted control plane is available
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: Available
  - lastTransitionTime: "2025-12-24T08:45:39Z"
    message: Configuration passes validation
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: ValidConfiguration
  - lastTransitionTime: "2025-12-24T08:45:39Z"
    message: HostedCluster is supported by operator configuration
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: SupportedHostedCluster
  - lastTransitionTime: "2025-12-24T08:48:21Z"
    message: Ignition server deployment is available
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: IgnitionEndpointAvailable
  - lastTransitionTime: "2025-12-24T08:45:39Z"
    message: Reconciliation active on resource
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: ReconciliationActive
  - lastTransitionTime: "2025-12-24T08:45:39Z"
    message: Release image is valid
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: ValidReleaseImage
  - lastTransitionTime: "2025-12-24T08:45:39Z"
    message: HostedCluster is at expected version
    observedGeneration: 3
    reason: AsExpected
    status: "False"
    type: Progressing
  - lastTransitionTime: "2025-12-24T08:45:40Z"
    message: Required platform credentials are found
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: PlatformCredentialsFound
  - lastTransitionTime: "2025-12-24T08:48:53Z"
    message: The update channel has not been configured.
    observedGeneration: 3
    reason: NoChannel
    status: "False"
    type: ClusterVersionRetrievedUpdates
  - lastTransitionTime: "2025-12-24T08:54:07Z"
    message: All is well
    observedGeneration: 3
    reason: AsExpected
    status: "True"
    type: ValidKubeVirtInfraNetworkMTU
  controlPlaneEndpoint:
    host: 10.46.255.10
    port: 6443
  ignitionEndpoint: ignition-server-clusters-dualstack-420.apps.bm17a-tlv2.abi.cnv-qe.rhood.us
  kubeadminPassword:
    name: dualstack-420-kubeadmin-password
  kubeconfig:
    name: dualstack-420-admin-kubeconfig
  oauthCallbackURLTemplate: https://oauth-clusters-dualstack-420.apps.bm17a-tlv2.abi.cnv-qe.rhood.us:443/oauth2callback/[identity-provider-name]
  payloadArch: AMD64
  version:
    availableUpdates: null
    desired:
      image: registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release@sha256:0cf754c8303ce925795b1a08196b2907a164d85f084e5667dd9ee1b37d592b8e
      version: 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest
    history:
    - completionTime: "2025-12-24T08:59:30Z"
      image: registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release@sha256:0cf754c8303ce925795b1a08196b2907a164d85f084e5667dd9ee1b37d592b8e
      startedTime: "2025-12-24T08:48:45Z"
      state: Completed
      verified: false
      version: 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest
    observedGeneration: 1
hosted cluster's cluster operators:
$ oc get co
NAME                                       VERSION                                                AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
console                                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      114m    
csi-snapshot-controller                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
dns                                        4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      115m    
image-registry                             4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      115m    
ingress                                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      115m    
insights                                   4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      116m    
kube-apiserver                             4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
kube-controller-manager                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
kube-scheduler                             4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
kube-storage-version-migrator              4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      116m    
monitoring                                 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      112m    
network                                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      116m    
node-tuning                                4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      118m    
openshift-apiserver                        4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
openshift-controller-manager               4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
openshift-samples                          4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      115m    
operator-lifecycle-manager                 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
operator-lifecycle-manager-catalog         4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
operator-lifecycle-manager-packageserver   4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
service-ca                                 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      116m    
storage                                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    

ClusterVersion:

$ oc get clusterversion
NAME      VERSION                                                AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         113m    Cluster version is 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest

NodePool - all nodes are up:

$ oc get np -n clusters dualstack-420
NAME            CLUSTER         DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION                                                UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
dualstack-420   dualstack-420   3               3               False         False        4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   False             False            

Then I've upgraded this HostedCluster to 4.21 using the release image from #2861 by updating the HostedCluster's .spec.release.image to registry.build06.ci.openshift.org/ci-ln-rs095h2/release:latest

After several minutes, the HCP pods have been replaced with 4.21.

Cluster Operators:

$ oc get co
NAME                                       VERSION                                                AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
console                                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      137m    
csi-snapshot-controller                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      8m6s    
dns                                        4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      137m    
image-registry                             4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      137m    
ingress                                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      137m    
insights                                   4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      138m    
kube-apiserver                             4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
kube-controller-manager                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
kube-scheduler                             4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
kube-storage-version-migrator              4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      138m    
monitoring                                 4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      134m    
network                                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      138m    
node-tuning                                4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      7m11s   
openshift-apiserver                        4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
openshift-controller-manager               4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
openshift-samples                          4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      137m    
operator-lifecycle-manager                 4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
operator-lifecycle-manager-catalog         4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
operator-lifecycle-manager-packageserver   4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
service-ca                                 4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      138m    
storage                                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    

ClusterVersion:

$ oc get clusterversion
NAME      VERSION                                                AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         2m18s   Cluster version is 4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest

The nodepool's nodes have also been upgraded, new VMs were created with RHCOS 4.21.
after the upgrade:

$ oc get nodes dualstack-420-k57n6-4jm77 -o yaml | yq .status.nodeInfo
architecture: amd64
bootID: 51977f59-a673-4cb0-b24b-89f6d4bd389b
containerRuntimeVersion: cri-o://1.34.2-2.rhaos4.21.gitc8e8b46.el9
kernelVersion: 5.14.0-570.76.1.el9_6.x86_64
kubeProxyVersion: ""
kubeletVersion: v1.34.2
machineID: 6756318874cf4be6b493e0d8b0a58e1f
operatingSystem: linux
osImage: Red Hat Enterprise Linux CoreOS 9.6.20251219-0 (Plow)
systemUUID: 67563188-74cf-4be6-b493-e0d8b0a58e1f

/verified by @orenc1

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Dec 24, 2025
@openshift-ci-robot
Copy link
Contributor

@orenc1: This PR has been marked as verified by @orenc1.

Details

In response to this:

Verified on an OCP 4.20 release image built from this PR - registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release:latest

hypershift create cluster kubevirt \
 --name dualstack-420 \
 --node-pool-replicas 3 \ 
 --ssh-key=/home/ocohen/.ssh/cnv-qe-jenkins.pub \
 --memory 16Gi   --cores 4 \
 --pull-secret=/home/ocohen/pull-secret.json \
 --release-image=registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release:latest \
 --control-plane-availability-policy=HighlyAvailable \
 --root-volume-storage-class ocs-storagecluster-ceph-rbd-virtualization \
 --cluster-cidr 10.132.0.0/14 \
 --cluster-cidr fd03::/48 \
 --service-cidr 172.31.0.0/16 \
 --service-cidr fd04::/112
Hosted Cluster CR:
apiVersion: hypershift.openshift.io/v1beta1
kind: HostedCluster
metadata:
 annotations:
   hypershift.openshift.io/HasBeenAvailable: "true"
   hypershift.openshift.io/management-platform: BareMetal
 creationTimestamp: "2025-12-24T08:45:39Z"
 finalizers:
 - hypershift.openshift.io/finalizer
 generation: 3
 labels:
   hypershift.openshift.io/auto-created-for-infra: dualstack-420-x2j2j
 name: dualstack-420
 namespace: clusters
 resourceVersion: "1356752"
 uid: 42d1ac7b-022e-4677-9bb5-6366da965125
spec:
 autoscaling:
   scaling: ScaleUpAndScaleDown
 capabilities: {}
 clusterID: a8d619bb-abcc-4dea-8aa0-a5dea79b4fb1
 configuration: {}
 controllerAvailabilityPolicy: HighlyAvailable
 dns:
   baseDomain: apps.bm17a-tlv2.abi.cnv-qe.rhood.us
 etcd:
   managed:
     storage:
       persistentVolume:
         size: 8Gi
       type: PersistentVolume
   managementType: Managed
 fips: false
 infraID: dualstack-420-x2j2j
 infrastructureAvailabilityPolicy: SingleReplica
 issuerURL: https://kubernetes.default.svc
 networking:
   clusterNetwork:
   - cidr: 10.132.0.0/14
   - cidr: fd03::/48
   networkType: OVNKubernetes
   serviceNetwork:
   - cidr: 172.31.0.0/16
   - cidr: fd04::/112
 olmCatalogPlacement: management
 platform:
   kubevirt:
     baseDomainPassthrough: true
     generateID: vxv7mtfjfp
   type: KubeVirt
 pullSecret:
   name: dualstack-420-pull-secret
 release:
   image: registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release:latest
 secretEncryption:
   aescbc:
     activeKey:
       name: dualstack-420-etcd-encryption-key
   type: aescbc
 services:
 - service: APIServer
   servicePublishingStrategy:
     type: LoadBalancer
 - service: Ignition
   servicePublishingStrategy:
     type: Route
 - service: Konnectivity
   servicePublishingStrategy:
     type: Route
 - service: OAuthServer
   servicePublishingStrategy:
     type: Route
 sshKey:
   name: dualstack-420-ssh-key
status:
 conditions:
 - lastTransitionTime: "2025-12-24T08:45:41Z"
   message: Reconciliation completed successfully
   observedGeneration: 3
   reason: ReconciliatonSucceeded
   status: "True"
   type: ReconciliationSucceeded
 - lastTransitionTime: "2025-12-24T08:59:30Z"
   message: Cluster version is 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest
   observedGeneration: 3
   reason: FromClusterVersion
   status: "False"
   type: ClusterVersionProgressing
 - lastTransitionTime: "2025-12-24T08:48:53Z"
   message: Payload loaded version="4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest"
     image="registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release@sha256:0cf754c8303ce925795b1a08196b2907a164d85f084e5667dd9ee1b37d592b8e"
     architecture="amd64"
   observedGeneration: 3
   reason: PayloadLoaded
   status: "True"
   type: ClusterVersionReleaseAccepted
 - lastTransitionTime: "2025-12-24T09:00:35Z"
   message: Condition not found in the CVO.
   observedGeneration: 3
   reason: FromClusterVersion
   status: "True"
   type: ClusterVersionUpgradeable
 - lastTransitionTime: "2025-12-24T08:59:30Z"
   message: Done applying 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest
   observedGeneration: 3
   reason: FromClusterVersion
   status: "True"
   type: ClusterVersionAvailable
 - lastTransitionTime: "2025-12-24T08:59:30Z"
   message: ""
   observedGeneration: 3
   reason: FromClusterVersion
   status: "True"
   type: ClusterVersionSucceeding
 - lastTransitionTime: "2025-12-24T09:00:25Z"
   message: The hosted cluster is not degraded
   observedGeneration: 3
   reason: AsExpected
   status: "False"
   type: Degraded
 - lastTransitionTime: "2025-12-24T08:45:39Z"
   message: All is well
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: KubeVirtNodesLiveMigratable
 - lastTransitionTime: "2025-12-24T08:47:39Z"
   message: ""
   observedGeneration: 3
   reason: QuorumAvailable
   status: "True"
   type: EtcdAvailable
 - lastTransitionTime: "2025-12-24T08:48:07Z"
   message: Kube APIServer deployment is available
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: KubeAPIServerAvailable
 - lastTransitionTime: "2025-12-24T08:47:04Z"
   message: All is well
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: InfrastructureReady
 - lastTransitionTime: "2025-12-24T08:45:39Z"
   message: External DNS is not configured
   observedGeneration: 3
   reason: StatusUnknown
   status: Unknown
   type: ExternalDNSReachable
 - lastTransitionTime: "2025-12-24T08:45:46Z"
   message: Configuration passes validation
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: ValidHostedControlPlaneConfiguration
 - lastTransitionTime: "2025-12-24T08:47:04Z"
   message: All is well
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: ValidReleaseInfo
 - lastTransitionTime: "2025-12-24T08:47:04Z"
   message: Identity provider configuration is valid
   observedGeneration: 3
   reason: IDPConfigurationValid
   status: "True"
   type: ValidIDPConfiguration
 - lastTransitionTime: "2025-12-24T08:45:39Z"
   message: Condition not found in the HCP
   observedGeneration: 3
   reason: StatusUnknown
   status: Unknown
   type: HostedClusterRestoredFromBackup
 - lastTransitionTime: "2025-12-24T08:45:39Z"
   message: Condition not found in the HCP
   observedGeneration: 3
   reason: StatusUnknown
   status: Unknown
   type: DataPlaneConnectionAvailable
 - lastTransitionTime: "2025-12-24T08:48:07Z"
   message: The hosted control plane is available
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: Available
 - lastTransitionTime: "2025-12-24T08:45:39Z"
   message: Configuration passes validation
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: ValidConfiguration
 - lastTransitionTime: "2025-12-24T08:45:39Z"
   message: HostedCluster is supported by operator configuration
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: SupportedHostedCluster
 - lastTransitionTime: "2025-12-24T08:48:21Z"
   message: Ignition server deployment is available
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: IgnitionEndpointAvailable
 - lastTransitionTime: "2025-12-24T08:45:39Z"
   message: Reconciliation active on resource
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: ReconciliationActive
 - lastTransitionTime: "2025-12-24T08:45:39Z"
   message: Release image is valid
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: ValidReleaseImage
 - lastTransitionTime: "2025-12-24T08:45:39Z"
   message: HostedCluster is at expected version
   observedGeneration: 3
   reason: AsExpected
   status: "False"
   type: Progressing
 - lastTransitionTime: "2025-12-24T08:45:40Z"
   message: Required platform credentials are found
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: PlatformCredentialsFound
 - lastTransitionTime: "2025-12-24T08:48:53Z"
   message: The update channel has not been configured.
   observedGeneration: 3
   reason: NoChannel
   status: "False"
   type: ClusterVersionRetrievedUpdates
 - lastTransitionTime: "2025-12-24T08:54:07Z"
   message: All is well
   observedGeneration: 3
   reason: AsExpected
   status: "True"
   type: ValidKubeVirtInfraNetworkMTU
 controlPlaneEndpoint:
   host: 10.46.255.10
   port: 6443
 ignitionEndpoint: ignition-server-clusters-dualstack-420.apps.bm17a-tlv2.abi.cnv-qe.rhood.us
 kubeadminPassword:
   name: dualstack-420-kubeadmin-password
 kubeconfig:
   name: dualstack-420-admin-kubeconfig
 oauthCallbackURLTemplate: https://oauth-clusters-dualstack-420.apps.bm17a-tlv2.abi.cnv-qe.rhood.us:443/oauth2callback/[identity-provider-name]
 payloadArch: AMD64
 version:
   availableUpdates: null
   desired:
     image: registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release@sha256:0cf754c8303ce925795b1a08196b2907a164d85f084e5667dd9ee1b37d592b8e
     version: 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest
   history:
   - completionTime: "2025-12-24T08:59:30Z"
     image: registry.build06.ci.openshift.org/ci-ln-c3ifyb2/release@sha256:0cf754c8303ce925795b1a08196b2907a164d85f084e5667dd9ee1b37d592b8e
     startedTime: "2025-12-24T08:48:45Z"
     state: Completed
     verified: false
     version: 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest
   observedGeneration: 1
hosted cluster's cluster operators:
$ oc get co
NAME                                       VERSION                                                AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
console                                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      114m    
csi-snapshot-controller                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
dns                                        4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      115m    
image-registry                             4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      115m    
ingress                                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      115m    
insights                                   4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      116m    
kube-apiserver                             4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
kube-controller-manager                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
kube-scheduler                             4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
kube-storage-version-migrator              4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      116m    
monitoring                                 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      112m    
network                                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      116m    
node-tuning                                4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      118m    
openshift-apiserver                        4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
openshift-controller-manager               4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
openshift-samples                          4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      115m    
operator-lifecycle-manager                 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
operator-lifecycle-manager-catalog         4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
operator-lifecycle-manager-packageserver   4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    
service-ca                                 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      116m    
storage                                    4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         False      122m    

ClusterVersion:

$ oc get clusterversion
NAME      VERSION                                                AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   True        False         113m    Cluster version is 4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest

NodePool - all nodes are up:

$ oc get np -n clusters dualstack-420
NAME            CLUSTER         DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION                                                UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
dualstack-420   dualstack-420   3               3               False         False        4.20.0-0-2025-12-18-094514-test-ci-ln-c3ifyb2-latest   False             False            

Then I've upgraded this HostedCluster to 4.21 using the release image from #2861 by updating the HostedCluster's .spec.release.image to registry.build06.ci.openshift.org/ci-ln-rs095h2/release:latest

After several minutes, the HCP pods have been replaced with 4.21.

Cluster Operators:

$ oc get co
NAME                                       VERSION                                                AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
console                                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      137m    
csi-snapshot-controller                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      8m6s    
dns                                        4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      137m    
image-registry                             4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      137m    
ingress                                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      137m    
insights                                   4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      138m    
kube-apiserver                             4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
kube-controller-manager                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
kube-scheduler                             4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
kube-storage-version-migrator              4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      138m    
monitoring                                 4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      134m    
network                                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      138m    
node-tuning                                4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      7m11s   
openshift-apiserver                        4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
openshift-controller-manager               4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
openshift-samples                          4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      137m    
operator-lifecycle-manager                 4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
operator-lifecycle-manager-catalog         4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
operator-lifecycle-manager-packageserver   4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    
service-ca                                 4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      138m    
storage                                    4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         False      145m    

ClusterVersion:

$ oc get clusterversion
NAME      VERSION                                                AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest   True        False         2m18s   Cluster version is 4.21.0-0-2025-12-24-082300-test-ci-ln-rs095h2-latest

The nodepool's nodes have also been upgraded, new VMs were created with RHCOS 4.21.
after the upgrade:

$ oc get nodes dualstack-420-k57n6-4jm77 -o yaml | yq .status.nodeInfo
architecture: amd64
bootID: 51977f59-a673-4cb0-b24b-89f6d4bd389b
containerRuntimeVersion: cri-o://1.34.2-2.rhaos4.21.gitc8e8b46.el9
kernelVersion: 5.14.0-570.76.1.el9_6.x86_64
kubeProxyVersion: ""
kubeletVersion: v1.34.2
machineID: 6756318874cf4be6b493e0d8b0a58e1f
operatingSystem: linux
osImage: Red Hat Enterprise Linux CoreOS 9.6.20251219-0 (Plow)
systemUUID: 67563188-74cf-4be6-b493-e0d8b0a58e1f

/verified by @orenc1

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@orenc1
Copy link
Contributor Author

orenc1 commented Dec 24, 2025

/retest

Copy link
Contributor

@tssurya tssurya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Dec 24, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Dec 24, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: orenc1, tssurya

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Dec 24, 2025
@tssurya
Copy link
Contributor

tssurya commented Dec 24, 2025

/label backport-risk-assessed

@openshift-ci openshift-ci bot added the backport-risk-assessed Indicates a PR to a release branch has been evaluated and considered safe to accept. label Dec 24, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Dec 24, 2025

@orenc1: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/security ec1f517 link false /test security

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@orenc1
Copy link
Contributor Author

orenc1 commented Dec 25, 2025

/test 4.20-upgrade-from-stable-4.19-e2e-azure-ovn-upgrade

@orenc1 orenc1 changed the title OCPBUGS-66253: [release-4.20] Add kubevirt platform to dual-stack supported platforms [release-4.20] OCPBUGS-66253: Add kubevirt platform to dual-stack supported platforms Dec 25, 2025
@orenc1
Copy link
Contributor Author

orenc1 commented Dec 28, 2025

/jira refresh

@openshift-ci-robot openshift-ci-robot added the jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. label Dec 28, 2025
@openshift-ci-robot
Copy link
Contributor

@orenc1: This pull request references Jira Issue OCPBUGS-66253, which is valid. The bug has been moved to the POST state.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.20.z) matches configured target version for branch (4.20.z)
  • bug is in the state New, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-69941 is in the state Verified, which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-69941 targets the "4.21.0" version, which is one of the valid target versions: 4.21.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (lgao@redhat.com), skipping review request.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot openshift-ci-robot removed the jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. label Dec 28, 2025
@openshift-merge-bot openshift-merge-bot bot merged commit dbd9826 into openshift:release-4.20 Dec 28, 2025
27 of 28 checks passed
@openshift-ci-robot
Copy link
Contributor

@orenc1: Jira Issue Verification Checks: Jira Issue OCPBUGS-66253
✔️ This pull request was pre-merge verified.
✔️ All associated pull requests have merged.
✔️ All associated, merged pull requests were pre-merge verified.

Jira Issue OCPBUGS-66253 has been moved to the MODIFIED state and will move to the VERIFIED state when the change is available in an accepted nightly payload. 🕓

Details

In response to this:

The kubevirt platform in Hosted Control Planes (HCP) supports a dual-stack topology. Adding it to the dualStackPlatforms list to avoid reconciler error when the hosted cluster is dual-stack.

backport of #2849

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@orenc1 orenc1 deleted the 4.20_add_kubevirt_platform_dual_stack branch December 28, 2025 14:12
@orenc1
Copy link
Contributor Author

orenc1 commented Jan 4, 2026

This fix is also needed at 4.19.z
/cherry-pick release-4.19

@openshift-cherrypick-robot

@orenc1: new pull request created: #2864

Details

In response to this:

This fix is also needed at 4.19.z
/cherry-pick release-4.19

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. backport-risk-assessed Indicates a PR to a release branch has been evaluated and considered safe to accept. jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.