mirror of https://github.com/k3s-io/k3s
Merge pull request #44661 from xiangpengzhao/fix-vsphere-panic
Automatic merge from submit-queue (batch tested with PRs 44687, 44689, 44661) Fix panic when using `kubeadm init` with vsphere cloud-provider **What this PR does / why we need it**: Check if the reference is nil when finding machine reference by UUID. **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #44603 **Special notes for your reviewer**: This is just a quick fix for the panic. **Release note**: ```release-note NONE ```pull/6/head
commit
fba605ce05
|
@ -262,6 +262,10 @@ func getVMName(client *govmomi.Client, cfg *VSphereConfig) (string, error) {
|
|||
return "", err
|
||||
}
|
||||
|
||||
if svm == nil {
|
||||
return "", fmt.Errorf("unable to find machine reference by UUID")
|
||||
}
|
||||
|
||||
var vm mo.VirtualMachine
|
||||
err = s.Properties(ctx, svm.Reference(), []string{"name"}, &vm)
|
||||
if err != nil {
|
||||
|
|
|
@ -248,3 +248,36 @@ func TestVolumes(t *testing.T) {
|
|||
// t.Fatalf("Cannot delete VMDK volume %s: %v", volPath, err)
|
||||
// }
|
||||
}
|
||||
|
||||
func TestGetVMName(t *testing.T) {
|
||||
cfg, ok := configFromEnv()
|
||||
if !ok {
|
||||
t.Skipf("No config found in environment")
|
||||
}
|
||||
|
||||
// Create vSphere configuration object
|
||||
vs, err := newVSphere(cfg)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to construct/authenticate vSphere: %s", err)
|
||||
}
|
||||
|
||||
// Create context
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
// Create vSphere client
|
||||
err = vSphereLogin(ctx, vs)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to create vSpere client: %s", err)
|
||||
}
|
||||
defer vs.client.Logout(ctx)
|
||||
|
||||
// Get VM name
|
||||
vmName, err := getVMName(vs.client, &cfg)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get VM name: %s", err)
|
||||
}
|
||||
if vmName != "vmname" {
|
||||
t.Errorf("Expect VM name 'vmname', got: %s", vmName)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue