Skip to content

✨ Add contract readiness signal to VM Operator's VirtualMachine and generic VM controllers - #1911

Merged
aruneshpa merged 1 commit into
vmware-tanzu:feature/kube-vmfrom
aruneshpa:minor/controller-changes-and-readiness-status-demo-ready
Sep 8, 2026
Merged

✨ Add contract readiness signal to VM Operator's VirtualMachine and generic VM controllers#1911
aruneshpa merged 1 commit into
vmware-tanzu:feature/kube-vmfrom
aruneshpa:minor/controller-changes-and-readiness-status-demo-ready

Conversation

@aruneshpa

Copy link
Copy Markdown
Collaborator

What does this PR do, and why is it needed?

The generic kube-vm.io VirtualMachine contract requires every provider to expose overall readiness at a fixed status path, so the core controller can mirror it without any provider-specific code. VM Operator's VirtualMachine had no such summary signal, so an adopted generic object could report the VM as fully created and reachable yet stay stuck at "Waiting" forever.

Add status.ready and an InfrastructureReady condition to the VirtualMachine API, computed in status reconciliation from whether the VM has converged to its desired power state and, if powered on, has reported an address. Named InfrastructureReady rather than Ready because the existing Ready condition is already reserved for the result of a configured guest readiness probe, and is deliberately left unset when no probe is configured; reusing it would have collided with that behavior.

Wire the kube-vm.io core controller's status contract reader to the new condition type, and update its tests and fixtures accordingly.

Testing Done:

  • Creating a KubeVM VM with minimal specs (VM class, stroageClass, bootDisk, powerState) and an empty VM Operator VM spec now works
  • The VM Operator VM gets owned by KubeVM, status is correctly reflected up the stack to KubeVM.

Please add a release note if necessary:

Add contract readiness signal to VM Operator's VirtualMachine and generic VM controllers

…eneric VM controllers

The generic kube-vm.io VirtualMachine contract requires every
provider to expose overall readiness at a fixed status path, so the
core controller can mirror it without any provider-specific code.
VM Operator's VirtualMachine had no such summary signal, so an
adopted generic object could report the VM as fully created and
reachable yet stay stuck at "Waiting" forever.

Add status.ready and an InfrastructureReady condition to the
VirtualMachine API, computed in status reconciliation from whether
the VM has converged to its desired power state and, if powered on,
has reported an address. Named InfrastructureReady rather than Ready
because the existing Ready condition is already reserved for the
result of a configured guest readiness probe, and is deliberately
left unset when no probe is configured; reusing it would have
collided with that behavior.

Wire the kube-vm.io core controller's status contract reader to the
new condition type, and update its tests and fixtures accordingly.

Testing Done:
- Creating a KubeVM VM with minimal specs (VM class, stroageClass,
bootDisk, powerState) and an empty VM Operator VM spec now works
- The VM Operator VM gets owned by KubeVM, status is correctly
reflected up the stack to KubeVM.
@aruneshpa
aruneshpa requested review from a team and faisalabujabal as code owners September 8, 2026 04:57
@github-actions github-actions Bot added the size/XXL Denotes a PR that changes 1000+ lines. label Sep 8, 2026
@aruneshpa
aruneshpa merged commit e1d63b2 into vmware-tanzu:feature/kube-vm Sep 8, 2026
2 checks passed
@aruneshpa
aruneshpa deleted the minor/controller-changes-and-readiness-status-demo-ready branch September 8, 2026 04:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XXL Denotes a PR that changes 1000+ lines.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant