diff --git a/pkg/cloudprovider/providers/vsphere/credentialmanager_test.go b/pkg/cloudprovider/providers/vsphere/credentialmanager_test.go index 4bef4001ff7..aa2da6d57db 100644 --- a/pkg/cloudprovider/providers/vsphere/credentialmanager_test.go +++ b/pkg/cloudprovider/providers/vsphere/credentialmanager_test.go @@ -204,7 +204,10 @@ func TestSecretCredentialManager_GetCredential(t *testing.T) { t.Fatal("Failed to get all secrets from sharedInformer. error: ", err) } for _, secret := range secrets { - secretInformer.Informer().GetIndexer().Delete(secret) + err := secretInformer.Informer().GetIndexer().Delete(secret) + if err != nil { + t.Fatalf("Failed to delete secret from informer: %v", err) + } } } diff --git a/pkg/cloudprovider/providers/vsphere/nodemanager.go b/pkg/cloudprovider/providers/vsphere/nodemanager.go index 92f4c55d5e0..55a2a09d9d4 100644 --- a/pkg/cloudprovider/providers/vsphere/nodemanager.go +++ b/pkg/cloudprovider/providers/vsphere/nodemanager.go @@ -216,8 +216,7 @@ func (nm *NodeManager) DiscoverNode(node *v1.Node) error { func (nm *NodeManager) RegisterNode(node *v1.Node) error { nm.addNode(node) - nm.DiscoverNode(node) - return nil + return nm.DiscoverNode(node) } func (nm *NodeManager) UnRegisterNode(node *v1.Node) error { diff --git a/pkg/cloudprovider/providers/vsphere/vclib/connection_test.go b/pkg/cloudprovider/providers/vsphere/vclib/connection_test.go index 2cad075d559..1567e9e28f3 100644 --- a/pkg/cloudprovider/providers/vsphere/vclib/connection_test.go +++ b/pkg/cloudprovider/providers/vsphere/vclib/connection_test.go @@ -94,7 +94,7 @@ func TestWithValidCaCert(t *testing.T) { } // Ignoring error here, because we only care about the TLS connection - connection.NewClient(context.Background()) + _, _ = connection.NewClient(context.Background()) verifyConnectionWasMade() } @@ -151,7 +151,7 @@ func TestWithValidThumbprint(t *testing.T) { } // Ignoring error here, because we only care about the TLS connection - connection.NewClient(context.Background()) + _, _ = connection.NewClient(context.Background()) verifyConnectionWasMade() } diff --git a/pkg/cloudprovider/providers/vsphere/vclib/datacenter.go b/pkg/cloudprovider/providers/vsphere/vclib/datacenter.go index 778e0f68290..31c9b98dd70 100644 --- a/pkg/cloudprovider/providers/vsphere/vclib/datacenter.go +++ b/pkg/cloudprovider/providers/vsphere/vclib/datacenter.go @@ -85,6 +85,9 @@ func (dc *Datacenter) GetVMByUUID(ctx context.Context, vmUUID string) (*VirtualM // GetHostByVMUUID gets the host object from the given vmUUID func (dc *Datacenter) GetHostByVMUUID(ctx context.Context, vmUUID string) (*types.ManagedObjectReference, error) { virtualMachine, err := dc.GetVMByUUID(ctx, vmUUID) + if err != nil { + return nil, err + } var vmMo mo.VirtualMachine pc := property.DefaultCollector(virtualMachine.Client()) err = pc.RetrieveOne(ctx, virtualMachine.Reference(), []string{"summary.runtime.host"}, &vmMo) diff --git a/pkg/cloudprovider/providers/vsphere/vclib/virtualmachine.go b/pkg/cloudprovider/providers/vsphere/vclib/virtualmachine.go index f6e28cb1036..878822c32db 100644 --- a/pkg/cloudprovider/providers/vsphere/vclib/virtualmachine.go +++ b/pkg/cloudprovider/providers/vsphere/vclib/virtualmachine.go @@ -127,7 +127,10 @@ func (vm *VirtualMachine) AttachDisk(ctx context.Context, vmDiskPath string, vol RecordvSphereMetric(APIAttachVolume, requestTime, err) klog.Errorf("Failed to attach the disk with storagePolicy: %q on VM: %q. err - %+v", volumeOptions.StoragePolicyID, vm.InventoryPath, err) if newSCSIController != nil { - vm.deleteController(ctx, newSCSIController, vmDevices) + nestedErr := vm.deleteController(ctx, newSCSIController, vmDevices) + if nestedErr != nil { + return "", fmt.Errorf("failed to delete SCSI Controller after reconfiguration failed with err=%v: %v", err, nestedErr) + } } return "", err } @@ -136,7 +139,10 @@ func (vm *VirtualMachine) AttachDisk(ctx context.Context, vmDiskPath string, vol if err != nil { klog.Errorf("Failed to attach the disk with storagePolicy: %+q on VM: %q. err - %+v", volumeOptions.StoragePolicyID, vm.InventoryPath, err) if newSCSIController != nil { - vm.deleteController(ctx, newSCSIController, vmDevices) + nestedErr := vm.deleteController(ctx, newSCSIController, vmDevices) + if nestedErr != nil { + return "", fmt.Errorf("failed to delete SCSI Controller after waiting for reconfiguration failed with err='%v': %v", err, nestedErr) + } } return "", err } @@ -145,9 +151,15 @@ func (vm *VirtualMachine) AttachDisk(ctx context.Context, vmDiskPath string, vol diskUUID, err := vm.Datacenter.GetVirtualDiskPage83Data(ctx, vmDiskPath) if err != nil { klog.Errorf("Error occurred while getting Disk Info from VM: %q. err: %v", vm.InventoryPath, err) - vm.DetachDisk(ctx, vmDiskPath) + nestedErr := vm.DetachDisk(ctx, vmDiskPath) + if nestedErr != nil { + return "", fmt.Errorf("failed to detach disk after getting VM UUID failed with err='%v': %v", err, nestedErr) + } if newSCSIController != nil { - vm.deleteController(ctx, newSCSIController, vmDevices) + nestedErr = vm.deleteController(ctx, newSCSIController, vmDevices) + if nestedErr != nil { + return "", fmt.Errorf("failed to delete SCSI Controller after getting VM UUID failed with err='%v': %v", err, nestedErr) + } } return "", err } @@ -271,7 +283,9 @@ func (vm *VirtualMachine) CreateDiskSpec(ctx context.Context, diskPath string, d if scsiController == nil { klog.Errorf("Cannot find SCSI controller of type: %q in VM", volumeOptions.SCSIControllerType) // attempt clean up of scsi controller - vm.deleteController(ctx, newSCSIController, vmDevices) + if err := vm.deleteController(ctx, newSCSIController, vmDevices); err != nil { + return nil, nil, fmt.Errorf("failed to delete SCSI controller after failing to find it on VM: %v", err) + } return nil, nil, fmt.Errorf("Cannot find SCSI controller of type: %q in VM", volumeOptions.SCSIControllerType) } } @@ -351,7 +365,10 @@ func (vm *VirtualMachine) createAndAttachSCSIController(ctx context.Context, dis if err != nil { klog.V(LogLevel).Infof("Cannot add SCSI controller to VM: %q. err: %+v", vm.InventoryPath, err) // attempt clean up of scsi controller - vm.deleteController(ctx, newSCSIController, vmDevices) + nestedErr := vm.deleteController(ctx, newSCSIController, vmDevices) + if nestedErr != nil { + return nil, fmt.Errorf("failed to delete SCSI controller after failing to add it to vm with err='%v': %v", err, nestedErr) + } return nil, err } return newSCSIController, nil diff --git a/pkg/cloudprovider/providers/vsphere/vsphere.go b/pkg/cloudprovider/providers/vsphere/vsphere.go index 2e562b036ed..7e0405be614 100644 --- a/pkg/cloudprovider/providers/vsphere/vsphere.go +++ b/pkg/cloudprovider/providers/vsphere/vsphere.go @@ -1288,7 +1288,9 @@ func (vs *VSphere) NodeAdded(obj interface{}) { } klog.V(4).Infof("Node added: %+v", node) - vs.nodeManager.RegisterNode(node) + if err := vs.nodeManager.RegisterNode(node); err != nil { + klog.Errorf("failed to add node %+v: %v", node, err) + } } // Notification handler when node is removed from k8s cluster. @@ -1300,7 +1302,9 @@ func (vs *VSphere) NodeDeleted(obj interface{}) { } klog.V(4).Infof("Node deleted: %+v", node) - vs.nodeManager.UnRegisterNode(node) + if err := vs.nodeManager.UnRegisterNode(node); err != nil { + klog.Errorf("failed to delete node %s: %v", node.Name, err) + } } func (vs *VSphere) NodeManager() (nodeManager *NodeManager) { @@ -1316,7 +1320,11 @@ func withTagsClient(ctx context.Context, connection *vclib.VSphereConnection, f if err := c.Login(ctx, user); err != nil { return err } - defer c.Logout(ctx) + defer func() { + if err := c.Logout(ctx); err != nil { + klog.Errorf("failed to logout: %v", err) + } + }() return f(c) } diff --git a/pkg/cloudprovider/providers/vsphere/vsphere_util.go b/pkg/cloudprovider/providers/vsphere/vsphere_util.go index 04f241a89d3..745c0347a48 100644 --- a/pkg/cloudprovider/providers/vsphere/vsphere_util.go +++ b/pkg/cloudprovider/providers/vsphere/vsphere_util.go @@ -72,7 +72,12 @@ func getVSphereConfig() (*VSphereConfig, error) { if err != nil { return nil, err } - defer confFile.Close() + defer func() { + if err := confFile.Close(); err != nil { + klog.Errorf("failed to close config file: %v", err) + } + }() + cfg, err := readConfig(confFile) if err != nil { return nil, err