Skip to content

Add vmProviderReady field to NodeInfo proto#427

Open
niontive wants to merge 1 commit intomainfrom
users/niontive/fix-node-readiness-placement
Open

Add vmProviderReady field to NodeInfo proto#427
niontive wants to merge 1 commit intomainfrom
users/niontive/fix-node-readiness-placement

Conversation

@niontive
Copy link
Copy Markdown

Summary

Add google.protobuf.BoolValue vmProviderReady = 10 to the NodeInfo message in moc_common_nodeinfo.proto.

Problem

When wssdagent restarts, its VM provider runs a sequential bootstrap (~4.5 hours for ~800 VMs). During this window, the health endpoint reports the node as healthy because it has no readiness awareness. wssdcloudagent's SelectAnyNode() routes new VMs to the bootstrapping node, which rejects them with ProviderNotReady.

Change

  • Add google.protobuf.BoolValue vmProviderReady = 10 to NodeInfo (field 10)
  • Uses BoolValue (not bare bool) for backward compatibility:
    • nil = old agent (field not set) → treat as ready
    • BoolValue{false} = new agent, still bootstrapping → skip node
    • BoolValue{true} = new agent, ready → allow placement
  • Regenerated .pb.go bindings via make generate

Part of

Coordinated fix across 3 repos:

  1. moc (this PR): Proto definition
  2. wssdagent: Expose VM readiness via health endpoint
  3. wssdcloudagent: Check readiness during placement

Bug 5: Node selection ignores VM provider readiness

Add google.protobuf.BoolValue vmProviderReady = 10 to the NodeInfo message
in moc_common_nodeinfo.proto. This allows wssdagent to report whether its
VM provider has completed bootstrap, so wssdcloudagent can skip nodes that
are not yet ready for VM placement.

Uses BoolValue (not bare bool) so that old agents that don't set the field
return nil, which is distinguishable from an explicit false (not ready).

Bug 5: Node selection ignores readiness

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant