mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Relocate deploy-as-is cloned VM if does not end on the host receiving the start command and restore deployment logs
This commit is contained in:
parent
edfbed34ad
commit
acf872cdab
@ -1858,7 +1858,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||||||
}
|
}
|
||||||
String deployAsIsTemplate = deployAsIsInfo.getTemplatePath();
|
String deployAsIsTemplate = deployAsIsInfo.getTemplatePath();
|
||||||
String destDatastore = deployAsIsInfo.getDestStoragePool();
|
String destDatastore = deployAsIsInfo.getDestStoragePool();
|
||||||
vmMo = _storageProcessor.cloneVMFromTemplate(deployAsIsTemplate, vmInternalCSName, destDatastore);
|
_storageProcessor.cloneVMFromTemplate(hyperHost, deployAsIsTemplate, vmInternalCSName, destDatastore);
|
||||||
|
vmMo = hyperHost.findVmOnHyperHost(vmInternalCSName);
|
||||||
|
if (vmMo == null) {
|
||||||
|
s_logger.info("Cloned deploy-as-is VM " + vmInternalCSName + " is not in this host, relocating it");
|
||||||
|
vmMo = takeVmFromOtherHyperHost(hyperHost, vmInternalCSName);
|
||||||
|
}
|
||||||
mapSpecDisksToClonedDisks(vmMo, vmInternalCSName, specDisks);
|
mapSpecDisksToClonedDisks(vmMo, vmInternalCSName, specDisks);
|
||||||
} else {
|
} else {
|
||||||
Pair<ManagedObjectReference, DatastoreMO> rootDiskDataStoreDetails = null;
|
Pair<ManagedObjectReference, DatastoreMO> rootDiskDataStoreDetails = null;
|
||||||
|
|||||||
@ -3729,10 +3729,9 @@ public class VmwareStorageProcessor implements StorageProcessor {
|
|||||||
/**
|
/**
|
||||||
* Return the cloned VM from the template
|
* Return the cloned VM from the template
|
||||||
*/
|
*/
|
||||||
public VirtualMachineMO cloneVMFromTemplate(String templateName, String cloneName, String templatePrimaryStoreUuid) {
|
public VirtualMachineMO cloneVMFromTemplate(VmwareHypervisorHost hyperHost, String templateName, String cloneName, String templatePrimaryStoreUuid) {
|
||||||
try {
|
try {
|
||||||
VmwareContext context = hostService.getServiceContext(null);
|
VmwareContext context = hyperHost.getContext();
|
||||||
VmwareHypervisorHost hyperHost = hostService.getHyperHost(context, null);
|
|
||||||
DatacenterMO dcMo = new DatacenterMO(context, hyperHost.getHyperHostDatacenter());
|
DatacenterMO dcMo = new DatacenterMO(context, hyperHost.getHyperHostDatacenter());
|
||||||
VirtualMachineMO templateMo = dcMo.findVm(templateName);
|
VirtualMachineMO templateMo = dcMo.findVm(templateName);
|
||||||
if (templateMo == null) {
|
if (templateMo == null) {
|
||||||
@ -3744,7 +3743,7 @@ public class VmwareStorageProcessor implements StorageProcessor {
|
|||||||
if (morDatastore == null) {
|
if (morDatastore == null) {
|
||||||
throw new CloudRuntimeException("Unable to find datastore in vSphere");
|
throw new CloudRuntimeException("Unable to find datastore in vSphere");
|
||||||
}
|
}
|
||||||
s_logger.info("Cloning VM " + cloneName + " from template " + templatePrimaryStoreUuid);
|
s_logger.info("Cloning VM " + cloneName + " from template " + templateName + " into datastore " + templatePrimaryStoreUuid);
|
||||||
if (!_fullCloneFlag) {
|
if (!_fullCloneFlag) {
|
||||||
createVMLinkedClone(templateMo, dcMo, cloneName, morDatastore, morPool);
|
createVMLinkedClone(templateMo, dcMo, cloneName, morDatastore, morPool);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user