Fixes issue#392.

This commit is contained in:
prashima
2017-12-06 15:22:29 -08:00
parent bb72237375
commit c52413b82e
2 changed files with 13 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ package vclib
import ( import (
"context" "context"
"fmt" "fmt"
"strings"
"time" "time"
"github.com/golang/glog" "github.com/golang/glog"
@@ -362,12 +363,14 @@ func (vm *VirtualMachine) getVirtualDeviceByPath(ctx context.Context, diskPath s
glog.Errorf("Failed to get the devices for VM: %q. err: %+v", vm.InventoryPath, err) glog.Errorf("Failed to get the devices for VM: %q. err: %+v", vm.InventoryPath, err)
return nil, err return nil, err
} }
// filter vm devices to retrieve device for the given vmdk file identified by disk path // filter vm devices to retrieve device for the given vmdk file identified by disk path
for _, device := range vmDevices { for _, device := range vmDevices {
if vmDevices.TypeName(device) == "VirtualDisk" { if vmDevices.TypeName(device) == "VirtualDisk" {
virtualDevice := device.GetVirtualDevice() virtualDevice := device.GetVirtualDevice()
if backing, ok := virtualDevice.Backing.(*types.VirtualDiskFlatVer2BackingInfo); ok { if backing, ok := virtualDevice.Backing.(*types.VirtualDiskFlatVer2BackingInfo); ok {
if backing.FileName == diskPath { if matchVirtualDiskAndVolPath(backing.FileName, diskPath) {
glog.V(LogLevel).Infof("Found VirtualDisk backing with filename %q for diskPath %q", backing.FileName, diskPath)
return device, nil return device, nil
} }
} }
@@ -376,6 +379,13 @@ func (vm *VirtualMachine) getVirtualDeviceByPath(ctx context.Context, diskPath s
return nil, nil return nil, nil
} }
func matchVirtualDiskAndVolPath(diskPath, volPath string) bool {
fileExt := ".vmdk"
diskPath = strings.TrimSuffix(diskPath, fileExt)
volPath = strings.TrimSuffix(volPath, fileExt)
return diskPath == volPath
}
// deleteController removes latest added SCSI controller from VM. // deleteController removes latest added SCSI controller from VM.
func (vm *VirtualMachine) deleteController(ctx context.Context, controllerDevice types.BaseVirtualDevice, vmDevices object.VirtualDeviceList) error { func (vm *VirtualMachine) deleteController(ctx context.Context, controllerDevice types.BaseVirtualDevice, vmDevices object.VirtualDeviceList) error {
controllerDeviceList := vmDevices.SelectByType(controllerDevice) controllerDeviceList := vmDevices.SelectByType(controllerDevice)

View File

@@ -835,6 +835,7 @@ func (vs *VSphere) DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (b
glog.Errorf("Failed to get VM object for node: %q. err: +%v", vSphereInstance, err) glog.Errorf("Failed to get VM object for node: %q. err: +%v", vSphereInstance, err)
return false, err return false, err
} }
volPath = vclib.RemoveStorageClusterORFolderNameFromVDiskPath(volPath) volPath = vclib.RemoveStorageClusterORFolderNameFromVDiskPath(volPath)
attached, err := vm.IsDiskAttached(ctx, volPath) attached, err := vm.IsDiskAttached(ctx, volPath)
if err != nil { if err != nil {
@@ -842,6 +843,7 @@ func (vs *VSphere) DiskIsAttached(volPath string, nodeName k8stypes.NodeName) (b
volPath, volPath,
vSphereInstance) vSphereInstance)
} }
glog.V(4).Infof("DiskIsAttached result: %q and error: %q, for volume: %q", attached, err, volPath)
return attached, err return attached, err
} }
requestTime := time.Now() requestTime := time.Now()