From 651f7d27272a84f18e91a6a622732c2371f84a93 Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Tue, 21 May 2024 10:44:00 -0700 Subject: [PATCH] vcsim: fix: ignore unknown refs in Datacenter.PowerOnMultiVM --- simulator/datacenter.go | 6 ++++-- simulator/datacenter_test.go | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/simulator/datacenter.go b/simulator/datacenter.go index 41fc56961..7680b602a 100644 --- a/simulator/datacenter.go +++ b/simulator/datacenter.go @@ -162,8 +162,10 @@ func (dc *Datacenter) PowerOnMultiVMTask(ctx *Context, req *types.PowerOnMultiVM res.Attempted = []types.ClusterAttemptedVmInfo{} for _, ref := range req.Vm { - vm := ctx.Map.Get(ref).(*VirtualMachine) - + vm, ok := ctx.Map.Get(ref).(*VirtualMachine) + if !ok { + continue + } // This task creates multiple subtasks which violates the assumption // of 1:1 Context:Task, which results in data races in objects // like the Simulator.Event manager. This is the minimum context diff --git a/simulator/datacenter_test.go b/simulator/datacenter_test.go index c6899548e..334b6c1b3 100644 --- a/simulator/datacenter_test.go +++ b/simulator/datacenter_test.go @@ -142,7 +142,10 @@ func TestDatacenterPowerOnMultiVMs(t *testing.T) { } } - dcTask, err := dc.PowerOnVM(ctx, testVMs) + // real VC ignores unknown VM refs + unknown := types.ManagedObjectReference{Type: "VirtualMachine", Value: "unknown"} + + dcTask, err := dc.PowerOnVM(ctx, append(testVMs, unknown)) if err != nil { t.Fatal(err) }