mirror of https://github.com/apache/cloudstack.git
Delete VM fix which does not move detached disks to fcd folder
vVols attach disk fix
This commit is contained in:
parent
f74262b12a
commit
fab6b41c90
|
|
@ -2881,43 +2881,51 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||
}
|
||||
|
||||
DatastoreMO dsMo = volumeDsDetails.second();
|
||||
String datastoreDiskPath;
|
||||
|
||||
// we will honor vCenter's meta if it exists
|
||||
if (diskInfo != null) {
|
||||
// to deal with run-time upgrade to maintain the new datastore folder structure
|
||||
String disks[] = diskInfo.getDiskChain();
|
||||
for (int i = 0; i < disks.length; i++) {
|
||||
DatastoreFile file = new DatastoreFile(disks[i]);
|
||||
if (!isManaged && file.getDir() != null && file.getDir().isEmpty()) {
|
||||
s_logger.info("Perform run-time datastore folder upgrade. sync " + disks[i] + " to VM folder");
|
||||
disks[i] = VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dcMo, vmMo.getName(), dsMo, file.getFileBaseName(), VmwareManager.s_vmwareSearchExcludeFolder.value());
|
||||
}
|
||||
if (dsMo.getDatastoreType().equalsIgnoreCase("VVOL")) {
|
||||
datastoreDiskPath = VmwareStorageLayoutHelper.getLegacyDatastorePathFromVmdkFileName(dsMo, volumeTO.getPath() + ".vmdk");
|
||||
if (!dsMo.fileExists(datastoreDiskPath)) {
|
||||
datastoreDiskPath = VmwareStorageLayoutHelper.getVmwareDatastorePathFromVmdkFileName(dsMo, vmMo.getName(), volumeTO.getPath() + ".vmdk");
|
||||
}
|
||||
return disks;
|
||||
}
|
||||
|
||||
final String datastoreDiskPath;
|
||||
|
||||
if (isManaged) {
|
||||
String vmdkPath = new DatastoreFile(volumeTO.getPath()).getFileBaseName();
|
||||
|
||||
if (volumeTO.getVolumeType() == Volume.Type.ROOT) {
|
||||
if (vmdkPath == null) {
|
||||
vmdkPath = volumeTO.getName();
|
||||
}
|
||||
|
||||
datastoreDiskPath = VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dcMo, vmMo.getName(), dsMo, vmdkPath);
|
||||
} else {
|
||||
if (vmdkPath == null) {
|
||||
vmdkPath = dsMo.getName();
|
||||
}
|
||||
|
||||
datastoreDiskPath = dsMo.getDatastorePath(vmdkPath + VMDK_EXTENSION);
|
||||
if (!dsMo.fileExists(datastoreDiskPath)) {
|
||||
datastoreDiskPath = dsMo.searchFileInSubFolders(volumeTO.getPath() + ".vmdk", true, null);
|
||||
}
|
||||
} else {
|
||||
datastoreDiskPath = VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dcMo, vmMo.getName(), dsMo, volumeTO.getPath(), VmwareManager.s_vmwareSearchExcludeFolder.value());
|
||||
}
|
||||
// we will honor vCenter's meta if it exists
|
||||
if (diskInfo != null) {
|
||||
// to deal with run-time upgrade to maintain the new datastore folder structure
|
||||
String disks[] = diskInfo.getDiskChain();
|
||||
for (int i = 0; i < disks.length; i++) {
|
||||
DatastoreFile file = new DatastoreFile(disks[i]);
|
||||
if (!isManaged && file.getDir() != null && file.getDir().isEmpty()) {
|
||||
s_logger.info("Perform run-time datastore folder upgrade. sync " + disks[i] + " to VM folder");
|
||||
disks[i] = VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dcMo, vmMo.getName(), dsMo, file.getFileBaseName(), VmwareManager.s_vmwareSearchExcludeFolder.value());
|
||||
}
|
||||
}
|
||||
return disks;
|
||||
}
|
||||
|
||||
if (isManaged) {
|
||||
String vmdkPath = new DatastoreFile(volumeTO.getPath()).getFileBaseName();
|
||||
|
||||
if (volumeTO.getVolumeType() == Volume.Type.ROOT) {
|
||||
if (vmdkPath == null) {
|
||||
vmdkPath = volumeTO.getName();
|
||||
}
|
||||
|
||||
datastoreDiskPath = VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dcMo, vmMo.getName(), dsMo, vmdkPath);
|
||||
} else {
|
||||
if (vmdkPath == null) {
|
||||
vmdkPath = dsMo.getName();
|
||||
}
|
||||
|
||||
datastoreDiskPath = dsMo.getDatastorePath(vmdkPath + VMDK_EXTENSION);
|
||||
}
|
||||
} else {
|
||||
datastoreDiskPath = VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dcMo, vmMo.getName(), dsMo, volumeTO.getPath(), VmwareManager.s_vmwareSearchExcludeFolder.value());
|
||||
}
|
||||
}
|
||||
if (!dsMo.fileExists(datastoreDiskPath)) {
|
||||
s_logger.warn("Volume " + volumeTO.getId() + " does not seem to exist on datastore, out of sync? path: " + datastoreDiskPath);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -262,8 +262,8 @@ public class VmwareStorageLayoutHelper implements Configurable {
|
|||
|
||||
s_logger.info("Check if we need to move " + fileFullDsPath + " to its root location");
|
||||
DatastoreMO dsMo = new DatastoreMO(dcMo.getContext(), dcMo.findDatastore(file.getDatastoreName()));
|
||||
if (dsMo.getMor() != null) {
|
||||
DatastoreFile targetFile = new DatastoreFile(file.getDatastoreName(), file.getFileName());
|
||||
if (dsMo.getMor() != null && !dsMo.getDatastoreType().equalsIgnoreCase("VVOL")) {
|
||||
DatastoreFile targetFile = new DatastoreFile(file.getDatastoreName(), HypervisorHostHelper.VSPHERE_DATASTORE_BASE_FOLDER, file.getFileName());
|
||||
if (!targetFile.getPath().equalsIgnoreCase(file.getPath())) {
|
||||
s_logger.info("Move " + file.getPath() + " -> " + targetFile.getPath());
|
||||
dsMo.moveDatastoreFile(file.getPath(), dcMo.getMor(), dsMo.getMor(), targetFile.getPath(), dcMo.getMor(), true);
|
||||
|
|
|
|||
|
|
@ -2086,17 +2086,29 @@ public class VmwareStorageProcessor implements StorageProcessor {
|
|||
if (isManaged) {
|
||||
datastoreVolumePath = dsMo.getDatastorePath((vmdkPath != null ? vmdkPath : dsMo.getName()) + ".vmdk");
|
||||
} else {
|
||||
datastoreVolumePath = VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dsMo.getOwnerDatacenter().first(), vmName, dsMo, volumeTO.getPath(), VmwareManager.s_vmwareSearchExcludeFolder.value());
|
||||
if (dsMo.getDatastoreType().equalsIgnoreCase("VVOL")) {
|
||||
datastoreVolumePath = VmwareStorageLayoutHelper.getLegacyDatastorePathFromVmdkFileName(dsMo, volumeTO.getPath() + ".vmdk");
|
||||
if (!dsMo.fileExists(datastoreVolumePath)) {
|
||||
datastoreVolumePath = VmwareStorageLayoutHelper.getVmwareDatastorePathFromVmdkFileName(dsMo, vmName, volumeTO.getPath() + ".vmdk");
|
||||
}
|
||||
if (!dsMo.fileExists(datastoreVolumePath)) {
|
||||
datastoreVolumePath = dsMo.searchFileInSubFolders(volumeTO.getPath() + ".vmdk", true, null);
|
||||
}
|
||||
} else {
|
||||
datastoreVolumePath = VmwareStorageLayoutHelper.syncVolumeToVmDefaultFolder(dsMo.getOwnerDatacenter().first(), vmName, dsMo, volumeTO.getPath(), VmwareManager.s_vmwareSearchExcludeFolder.value());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isManaged) {
|
||||
datastoreVolumePath = dsMo.getDatastorePath((vmdkPath != null ? vmdkPath : dsMo.getName()) + ".vmdk");
|
||||
} else {
|
||||
datastoreVolumePath = VmwareStorageLayoutHelper.getLegacyDatastorePathFromVmdkFileName(dsMo, volumeTO.getPath() + ".vmdk");
|
||||
|
||||
if (!dsMo.fileExists(datastoreVolumePath)) {
|
||||
datastoreVolumePath = VmwareStorageLayoutHelper.getVmwareDatastorePathFromVmdkFileName(dsMo, vmName, volumeTO.getPath() + ".vmdk");
|
||||
}
|
||||
if (!dsMo.fileExists(datastoreVolumePath)) {
|
||||
datastoreVolumePath = dsMo.searchFileInSubFolders(volumeTO.getPath() + ".vmdk", true, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2127,7 +2139,9 @@ public class VmwareStorageProcessor implements StorageProcessor {
|
|||
if (isManaged) {
|
||||
handleDatastoreAndVmdkDetachManaged(cmd, diskUuid, iScsiName, storageHost, storagePort);
|
||||
} else {
|
||||
VmwareStorageLayoutHelper.syncVolumeToRootFolder(dsMo.getOwnerDatacenter().first(), dsMo, volumeTO.getPath(), vmName, VmwareManager.s_vmwareSearchExcludeFolder.value());
|
||||
if (!dsMo.getDatastoreType().equalsIgnoreCase("VVOL")) {
|
||||
VmwareStorageLayoutHelper.syncVolumeToRootFolder(dsMo.getOwnerDatacenter().first(), dsMo, volumeTO.getPath(), vmName, VmwareManager.s_vmwareSearchExcludeFolder.value());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue