Repository: cloudstack Updated Branches: refs/heads/master dd700be26 -> 3ac8f8d60
Fixing an issue related to figuring out the name of a datastore that is backed by managed storage Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3ac8f8d6 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3ac8f8d6 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3ac8f8d6 Branch: refs/heads/master Commit: 3ac8f8d601cb2969cc61eedac978becb09950634 Parents: dd700be Author: Mike Tutkowski <[email protected]> Authored: Mon Dec 8 13:40:52 2014 -0700 Committer: Mike Tutkowski <[email protected]> Committed: Mon Dec 8 14:26:31 2014 -0700 ---------------------------------------------------------------------- .../vmware/resource/VmwareResource.java | 24 ++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3ac8f8d6/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 7e1b7cc..edcd9eb 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -2035,15 +2035,31 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa if (diskInfoBuilder != null) { VolumeObjectTO volume = (VolumeObjectTO)vol.getData(); - ManagedObjectReference morDs = HypervisorHostHelper.findDatastoreWithBackwardsCompatibility(hyperHost, volume.getDataStore().getUuid()); - DatastoreMO dsMo = new DatastoreMO(context, morDs); - String dsName = dsMo.getName(); + String dsName = null; + String diskBackingFileBaseName= null; Map<String, String> details = vol.getDetails(); boolean isManaged = details != null && Boolean.parseBoolean(details.get(DiskTO.MANAGED)); + if (isManaged) { + String iScsiName = details.get(DiskTO.IQN); + + // if the storage is managed, iScsiName should not be null + dsName = VmwareResource.getDatastoreName(iScsiName); + + diskBackingFileBaseName = new DatastoreFile(volume.getPath()).getFileBaseName(); + } + else { + ManagedObjectReference morDs = HypervisorHostHelper.findDatastoreWithBackwardsCompatibility(hyperHost, volume.getDataStore().getUuid()); + DatastoreMO dsMo = new DatastoreMO(context, morDs); + + dsName = dsMo.getName(); + + diskBackingFileBaseName = volume.getPath(); + } + VirtualMachineDiskInfo diskInfo = - diskInfoBuilder.getDiskInfoByBackingFileBaseName(isManaged ? new DatastoreFile(volume.getPath()).getFileBaseName() : volume.getPath(), dsName); + diskInfoBuilder.getDiskInfoByBackingFileBaseName(diskBackingFileBaseName, dsName); if (diskInfo != null) { s_logger.info("Found existing disk info from volume path: " + volume.getPath()); return diskInfo;
