mirror of https://github.com/apache/cloudstack.git
Merge remote-tracking branch 'origin/4.15'
This commit is contained in:
commit
5aefd3e204
|
|
@ -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(),
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue