Skip to content

Commit 99fc522

Browse files
authored
[vsphere] Ensure VM 'config' property exists in GetVMs (#17)
Signed-off-by: Alexey Voronov <[email protected]>
1 parent eb74abb commit 99fc522

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
############# builder #############
2-
FROM eu.gcr.io/gardener-project/3rd/golang:1.20.2 AS builder
2+
FROM golang:1.23.3 AS builder
33

44
WORKDIR /go/src/github.com/gardener/machine-controller-manager
55
COPY . .
66

77
RUN .ci/build
88

99
############# base #############
10-
FROM eu.gcr.io/gardener-project/3rd/alpine:3.12.1 as base
10+
FROM alpine:3.21.3 as base
1111

1212
RUN apk add --update bash curl tzdata
1313
WORKDIR /

pkg/driver/driver_vsphere.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -785,12 +785,21 @@ func (d *VsphereDriver) GetVMs(machineID string) (VMs, error) {
785785

786786
matchingVMs := intersectMOReferences(vmObjectRefs, clusterNodeIntersection)
787787
for _, vmObjectRef := range matchingVMs {
788-
vmObject := vmObjectRef.(*object.VirtualMachine)
788+
vmObject, ok := vmObjectRef.(*object.VirtualMachine)
789+
if !ok {
790+
return nil, fmt.Errorf("one of the retrieved object is not a VM")
791+
}
792+
789793
var vmMO mo.VirtualMachine
790794
err := vmObject.Properties(ctx, vmObject.Reference(), []string{"config"}, &vmMO)
791795
if err != nil {
792796
return nil, fmt.Errorf("failed to get config field from VM properties: %s", err)
793797
}
798+
799+
if vmMO.Config == nil {
800+
return nil, fmt.Errorf("the 'config' field of the VM is unset")
801+
}
802+
794803
listOfVMs[d.encodeMachineID(vmMO.Config.Uuid)] = vmMO.Config.Name
795804
}
796805

0 commit comments

Comments
 (0)