Merge remote-tracking branch 'origin/4.15'

This commit is contained in:
Rohit Yadav 2021-06-02 14:03:54 +05:30
commit 5aefd3e204
10 changed files with 40 additions and 24 deletions

View File

@ -5008,12 +5008,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
answer.setLocalDatastoreName(morDatastore.getValue());
childDsMo.setCustomFieldValue(CustomFieldConstants.CLOUD_UUID, uuid);
HypervisorHostHelper.createBaseFolderInDatastore(childDsMo, hyperHost);
HypervisorHostHelper.createBaseFolderInDatastore(childDsMo, hyperHost.getHyperHostDatacenter());
childDatastoresModifyStoragePoolAnswers.add(answer);
}
} else {
HypervisorHostHelper.createBaseFolderInDatastore(dsMo, hyperHost);
HypervisorHostHelper.createBaseFolderInDatastore(dsMo, hyperHost.getHyperHostDatacenter());
DatastoreSummary summary = dsMo.getDatastoreSummary();
capacity = summary.getCapacity();
@ -5948,6 +5948,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
dsMo.setCustomFieldValue(CustomFieldConstants.CLOUD_UUID, poolUuid);
}
HypervisorHostHelper.createBaseFolder(dsMo, hyperHost, StoragePoolType.VMFS);
DatastoreSummary dsSummary = dsMo.getDatastoreSummary();
String address = hostMo.getHostName();
StoragePoolInfo pInfo = new StoragePoolInfo(poolUuid, address, dsMo.getMor().getValue(), "", StoragePoolType.VMFS, dsSummary.getCapacity(),

View File

@ -263,6 +263,7 @@ 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 && !dsMo.getDatastoreType().equalsIgnoreCase("VVOL")) {
HypervisorHostHelper.createBaseFolderInDatastore(dsMo, dsMo.getDataCenterMor());
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());
@ -370,6 +371,7 @@ public class VmwareStorageLayoutHelper implements Configurable {
//This method call is for the volumes which actually exists
public static String getLegacyDatastorePathFromVmdkFileName(DatastoreMO dsMo, String vmdkFileName) throws Exception {
HypervisorHostHelper.createBaseFolderInDatastore(dsMo, dsMo.getDataCenterMor());
String vmdkDatastorePath = String.format("[%s] %s/%s", dsMo.getName(), HypervisorHostHelper.VSPHERE_DATASTORE_BASE_FOLDER, vmdkFileName);
if (!dsMo.fileExists(vmdkDatastorePath)) {
vmdkDatastorePath = getDeprecatedLegacyDatastorePathFromVmdkFileName(dsMo, vmdkFileName);
@ -379,6 +381,7 @@ public class VmwareStorageLayoutHelper implements Configurable {
//This method call is for the volumes to be created or can also be for volumes already exists
public static String getDatastorePathBaseFolderFromVmdkFileName(DatastoreMO dsMo, String vmdkFileName) throws Exception {
HypervisorHostHelper.createBaseFolderInDatastore(dsMo, dsMo.getDataCenterMor());
return String.format("[%s] %s/%s", dsMo.getName(), HypervisorHostHelper.VSPHERE_DATASTORE_BASE_FOLDER, vmdkFileName);
}

View File

@ -3772,6 +3772,7 @@ public class VmwareStorageProcessor implements StorageProcessor {
}
if(!primaryDsMo.getDatastoreType().equalsIgnoreCase("VVOL")) {
HypervisorHostHelper.createBaseFolderInDatastore(primaryDsMo, primaryDsMo.getDataCenterMor());
clonedVm.moveAllVmDiskFiles(primaryDsMo, HypervisorHostHelper.VSPHERE_DATASTORE_BASE_FOLDER, false);
}
clonedVm.detachAllDisks();

View File

@ -1507,13 +1507,13 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final VDI patchVDI = findPatchIsoVDI(conn, sr);
for (final VM vm : vms) {
final String vmName = vm.getNameLabel(conn);
try {
if (!vmName.startsWith("r-") && !vmName.startsWith("s-") && !vmName.startsWith("v-")) {
return;
}
final Set<VBD> vbds = vm.getVBDs(conn);
for (final VBD vbd : vbds) {
if (Types.VbdType.CD.equals(vbd.getType(conn))) {
if (!vmName.startsWith("r-") && !vmName.startsWith("s-") && !vmName.startsWith("v-")) {
continue;
}
final Set<VBD> vbds = vm.getVBDs(conn);
for (final VBD vbd : vbds) {
if (Types.VbdType.CD.equals(vbd.getType(conn))) {
try {
if (!vbd.getEmpty(conn)) {
vbd.eject(conn);
}
@ -1522,12 +1522,16 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
vbd.insert(conn, patchVDI);
vbd.eject(conn);
}
vbd.destroy(conn);
break;
} catch (Exception e) {
s_logger.debug("Cannot eject CD-ROM device for VM " + vmName + " due to " + e.toString(), e);
}
try {
vbd.destroy(conn);
} catch (Exception e) {
s_logger.debug("Cannot destroy CD-ROM device for VM " + vmName + " due to " + e.toString(), e);
}
break;
}
} catch (final Exception e) {
s_logger.debug("Cannot destroy CD-ROM device for VM " + vmName + " due to " + e.toString(), e);
}
}
}

View File

@ -1215,7 +1215,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
private void checkIfVolumeIsRootAndVmIsRunning(Long newSize, VolumeVO volume, VMInstanceVO vmInstanceVO) {
if (!volume.getSize().equals(newSize) && volume.getVolumeType().equals(Volume.Type.ROOT) && !State.Stopped.equals(vmInstanceVO.getState())) {
throw new InvalidParameterValueException(String.format("Cannot resize ROOT volume [%s] when VM is not on Stopped State. VM %s is in state %.", volume.getName(), vmInstanceVO
throw new InvalidParameterValueException(String.format("Cannot resize ROOT volume [%s] when VM is not on Stopped State. VM %s is in state %s", volume.getName(), vmInstanceVO
.getInstanceName(), vmInstanceVO.getState()));
}
}

View File

@ -28,7 +28,7 @@ def merge(dbag, data):
else:
remove_keys = set()
for key, entry in dbag.iteritems():
if key != 'id' and entry['mac_address'] == data['mac_address'] and data['remove']:
if key != 'id' and entry['mac_address'] == data['mac_address']:
remove_keys.add(key)
break

View File

@ -137,7 +137,9 @@
</a-tooltip>
</span>
<a-select
v-decorator="['account']"
v-decorator="['account', {
rules: [{ required: true, message: $t('message.error.required.input') }]
}]"
:loading="loadingAccount"
:placeholder="apiParams.account.description">
<a-select-option v-for="(item, idx) in accountList" :key="idx">
@ -225,7 +227,7 @@ export default {
this.apiConfig.params.forEach(param => {
this.apiParams[param.name] = param
})
this.apiConfig = this.$store.getters.apis.authorizeSamlSso || {}
this.apiConfig = this.$store.getters.apis.authorizeSamlSso || { params: [] }
this.apiConfig.params.forEach(param => {
this.apiParams[param.name] = param
})
@ -319,7 +321,7 @@ export default {
if (this.account) {
params.account = this.account
} else if (values.account) {
} else if (this.accountList[values.account]) {
params.account = this.accountList[values.account].name
}

View File

@ -68,6 +68,10 @@ public class DatastoreMO extends BaseMO {
return (DatastoreSummary)_context.getVimClient().getDynamicProperty(_mor, "summary");
}
public ManagedObjectReference getDataCenterMor() throws Exception {
return getOwnerDatacenter().first().getMor();
}
public HostDatastoreBrowserMO getHostDatastoreBrowserMO() throws Exception {
return new HostDatastoreBrowserMO(_context, (ManagedObjectReference)_context.getVimClient().getDynamicProperty(_mor, "browser"));
}

View File

@ -890,7 +890,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
}
if (dsMo != null && !"StoragePod".equals(morDatastore.getType()) && createBaseFolder) {
HypervisorHostHelper.createBaseFolderInDatastore(dsMo, this);
HypervisorHostHelper.createBaseFolderInDatastore(dsMo, this.getHyperHostDatacenter());
}
if (s_logger.isTraceEnabled())

View File

@ -2234,23 +2234,23 @@ public class HypervisorHostHelper {
List<ManagedObjectReference> datastoresInCluster = storagepodMO.getDatastoresInDatastoreCluster();
for (ManagedObjectReference datastore : datastoresInCluster) {
DatastoreMO childDsMo = new DatastoreMO(hyperHost.getContext(), datastore);
createBaseFolderInDatastore(childDsMo, hyperHost);
createBaseFolderInDatastore(childDsMo, hyperHost.getHyperHostDatacenter());
}
} else {
createBaseFolderInDatastore(dsMo, hyperHost);
createBaseFolderInDatastore(dsMo, hyperHost.getHyperHostDatacenter());
}
}
public static void createBaseFolderInDatastore(DatastoreMO dsMo, VmwareHypervisorHost hyperHost) throws Exception {
public static void createBaseFolderInDatastore(DatastoreMO dsMo, ManagedObjectReference mor) throws Exception {
String dsPath = String.format("[%s]", dsMo.getName());
String folderPath = String.format("[%s] %s", dsMo.getName(), VSPHERE_DATASTORE_BASE_FOLDER);
String hiddenFolderPath = String.format("%s/%s", folderPath, VSPHERE_DATASTORE_HIDDEN_FOLDER);
if (!dsMo.folderExists(dsPath, VSPHERE_DATASTORE_BASE_FOLDER)) {
s_logger.info(String.format("vSphere datastore base folder: %s does not exist, now creating on datastore: %s", VSPHERE_DATASTORE_BASE_FOLDER, dsMo.getName()));
dsMo.makeDirectory(folderPath, hyperHost.getHyperHostDatacenter());
dsMo.makeDirectory(folderPath, mor);
// Adding another directory so vCentre doesn't remove the fcd directory when it's empty
dsMo.makeDirectory(hiddenFolderPath, hyperHost.getHyperHostDatacenter());
dsMo.makeDirectory(hiddenFolderPath, mor);
}
}