func getVirtualDiskID(volPath string, vmDevices object.VirtualDeviceList) (string, error) { // filter vm devices to retrieve disk ID for the given vmdk file for _, device := range vmDevices { if vmDevices.TypeName(device) == "VirtualDisk" { d := device.GetVirtualDevice() if b, ok := d.Backing.(types.BaseVirtualDeviceFileBackingInfo); ok { fileName := b.GetVirtualDeviceFileBackingInfo().FileName if fileName == volPath { return vmDevices.Name(device), nil } } } } return "", ErrNoDiskIDFound }
// Returns the object key that denotes the controller object to which vmdk is attached. func getVirtualDiskControllerKey(volPath string, vmDevices object.VirtualDeviceList, dc *object.Datacenter, client *govmomi.Client) (int32, error) { volumeUUID, err := getVirtualDiskUUIDByPath(volPath, dc, client) if err != nil { glog.Errorf("disk uuid not found for %v. err: %s", volPath, err) return -1, err } // filter vm devices to retrieve disk ID for the given vmdk file for _, device := range vmDevices { if vmDevices.TypeName(device) == "VirtualDisk" { diskUUID, _ := getVirtualDiskUUID(device) if diskUUID == volumeUUID { return device.GetVirtualDevice().ControllerKey, nil } } } return -1, ErrNoDevicesFound }
// Returns a device id which is internal vSphere API identifier for the attached virtual disk. func getVirtualDiskID(volPath string, vmDevices object.VirtualDeviceList, dc *object.Datacenter, client *govmomi.Client) (string, error) { volumeUUID, err := getVirtualDiskUUIDByPath(volPath, dc, client) if err != nil { glog.Warningf("disk uuid not found for %v ", volPath) return "", err } // filter vm devices to retrieve disk ID for the given vmdk file for _, device := range vmDevices { if vmDevices.TypeName(device) == "VirtualDisk" { diskUUID, _ := getVirtualDiskUUID(device) if diskUUID == volumeUUID { return vmDevices.Name(device), nil } } } return "", ErrNoDiskIDFound }