Skip to content

Commit a948a89

Browse files
committed
Sync updates: Merge branch 'master' into api_refactoring
Conflicts: server/src/com/cloud/api/commands/AddTrafficMonitorCmd.java server/src/com/cloud/api/commands/ListTrafficMonitorsCmd.java Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2 parents 13de3ca + d5ac10d commit a948a89

5 files changed

Lines changed: 40 additions & 35 deletions

File tree

plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3705,10 +3705,12 @@ public synchronized CreateAnswer execute(CreateCommand cmd) {
37053705
ManagedObjectReference morDatastore = HypervisorHostHelper.findDatastoreWithBackwardsCompatibility(hyperHost, pool.getUuid());
37063706
if (morDatastore == null)
37073707
throw new Exception("Unable to find datastore in vSphere");
3708-
3708+
37093709
DatastoreMO dsMo = new DatastoreMO(context, morDatastore);
37103710

3711-
if (cmd.getDiskCharacteristics().getType() == Volume.Type.ROOT) {
3711+
if (dskch.getType() == Volume.Type.ROOT) {
3712+
// attach volume id to make the name unique
3713+
String vmdkName = dskch.getName() + "-" + dskch.getVolumeId();
37123714
if (cmd.getTemplateUrl() == null) {
37133715
// create a root volume for blank VM
37143716
String dummyVmName = getWorkerName(context, cmd, 0);
@@ -3720,16 +3722,15 @@ public synchronized CreateAnswer execute(CreateCommand cmd) {
37203722
throw new Exception("Unable to create a dummy VM for volume creation");
37213723
}
37223724

3723-
String volumeDatastorePath = String.format("[%s] %s.vmdk", dsMo.getName(), cmd.getDiskCharacteristics().getName());
3725+
String volumeDatastorePath = String.format("[%s] %s.vmdk", dsMo.getName(), vmdkName);
37243726
synchronized (this) {
37253727
s_logger.info("Delete file if exists in datastore to clear the way for creating the volume. file: " + volumeDatastorePath);
3726-
VmwareHelper.deleteVolumeVmdkFiles(dsMo, cmd.getDiskCharacteristics().getName(), dcMo);
3727-
vmMo.createDisk(volumeDatastorePath, (int) (cmd.getDiskCharacteristics().getSize() / (1024L * 1024L)), morDatastore, -1);
3728+
VmwareHelper.deleteVolumeVmdkFiles(dsMo, vmdkName, dcMo);
3729+
vmMo.createDisk(volumeDatastorePath, (int) (dskch.getSize() / (1024L * 1024L)), morDatastore, -1);
37283730
vmMo.detachDisk(volumeDatastorePath, false);
37293731
}
37303732

3731-
VolumeTO vol = new VolumeTO(cmd.getVolumeId(), dskch.getType(), pool.getType(), pool.getUuid(), cmd.getDiskCharacteristics().getName(), pool.getPath(), cmd
3732-
.getDiskCharacteristics().getName(), cmd.getDiskCharacteristics().getSize(), null);
3733+
VolumeTO vol = new VolumeTO(cmd.getVolumeId(), dskch.getType(), pool.getType(), pool.getUuid(), dskch.getName(), pool.getPath(), vmdkName, dskch.getSize(), null);
37333734
return new CreateAnswer(cmd, vol);
37343735
} finally {
37353736
vmMo.detachAllDisks();
@@ -3753,41 +3754,40 @@ public synchronized CreateAnswer execute(CreateCommand cmd) {
37533754
throw new Exception(msg);
37543755
}
37553756

3756-
String name = cmd.getDiskCharacteristics().getName();
3757-
if(dsMo.folderExists(String.format("[%s]", dsMo.getName()), name))
3758-
dsMo.deleteFile(String.format("[%s] %s/", dsMo.getName(), name), dcMo.getMor(), false);
3757+
if(dsMo.folderExists(String.format("[%s]", dsMo.getName()), vmdkName))
3758+
dsMo.deleteFile(String.format("[%s] %s/", dsMo.getName(), vmdkName), dcMo.getMor(), false);
37593759

37603760
s_logger.info("create linked clone from template");
3761-
if (!vmTemplate.createLinkedClone(name, morBaseSnapshot, dcMo.getVmFolder(), morPool, morDatastore)) {
3761+
if (!vmTemplate.createLinkedClone(vmdkName, morBaseSnapshot, dcMo.getVmFolder(), morPool, morDatastore)) {
37623762
String msg = "Unable to clone from the template";
37633763
s_logger.error(msg);
37643764
throw new Exception(msg);
37653765
}
37663766

3767-
VirtualMachineMO vmMo = new ClusterMO(context, morCluster).findVmOnHyperHost(name);
3767+
VirtualMachineMO vmMo = new ClusterMO(context, morCluster).findVmOnHyperHost(vmdkName);
37683768
assert (vmMo != null);
37693769

37703770
// we can't rely on un-offical API (VirtualMachineMO.moveAllVmDiskFiles() any more, use hard-coded disk names that we know
37713771
// to move files
37723772
s_logger.info("Move volume out of volume-wrapper VM ");
3773-
dsMo.moveDatastoreFile(String.format("[%s] %s/%s.vmdk", dsMo.getName(), name, name),
3774-
dcMo.getMor(), dsMo.getMor(),
3775-
String.format("[%s] %s.vmdk", dsMo.getName(), name), dcMo.getMor(), true);
3773+
dsMo.moveDatastoreFile(String.format("[%s] %s/%s.vmdk", dsMo.getName(), vmdkName, vmdkName),
3774+
dcMo.getMor(), dsMo.getMor(),
3775+
String.format("[%s] %s.vmdk", dsMo.getName(), vmdkName), dcMo.getMor(), true);
37763776

3777-
dsMo.moveDatastoreFile(String.format("[%s] %s/%s-delta.vmdk", dsMo.getName(), name, name),
3778-
dcMo.getMor(), dsMo.getMor(),
3779-
String.format("[%s] %s-delta.vmdk", dsMo.getName(), name), dcMo.getMor(), true);
3777+
dsMo.moveDatastoreFile(String.format("[%s] %s/%s-delta.vmdk", dsMo.getName(), vmdkName, vmdkName),
3778+
dcMo.getMor(), dsMo.getMor(),
3779+
String.format("[%s] %s-delta.vmdk", dsMo.getName(), vmdkName), dcMo.getMor(), true);
37803780

3781-
s_logger.info("detach disks from volume-wrapper VM " + name);
3781+
s_logger.info("detach disks from volume-wrapper VM " + vmdkName);
37823782
vmMo.detachAllDisks();
37833783

3784-
s_logger.info("destroy volume-wrapper VM " + name);
3784+
s_logger.info("destroy volume-wrapper VM " + vmdkName);
37853785
vmMo.destroy();
37863786

3787-
String srcFile = String.format("[%s] %s/", dsMo.getName(), name);
3787+
String srcFile = String.format("[%s] %s/", dsMo.getName(), vmdkName);
37883788
dsMo.deleteFile(srcFile, dcMo.getMor(), true);
37893789

3790-
VolumeTO vol = new VolumeTO(cmd.getVolumeId(), dskch.getType(), pool.getType(), pool.getUuid(), name, pool.getPath(), name, cmd.getDiskCharacteristics().getSize(), null);
3790+
VolumeTO vol = new VolumeTO(cmd.getVolumeId(), dskch.getType(), pool.getType(), pool.getUuid(), dskch.getName(), pool.getPath(), vmdkName, dskch.getSize(), null);
37913791
return new CreateAnswer(cmd, vol);
37923792
}
37933793
} else {
@@ -3806,12 +3806,11 @@ public synchronized CreateAnswer execute(CreateCommand cmd) {
38063806
// s_logger.info("Delete file if exists in datastore to clear the way for creating the volume. file: " + volumeDatastorePath);
38073807
VmwareHelper.deleteVolumeVmdkFiles(dsMo, volumeUuid.toString(), dcMo);
38083808

3809-
vmMo.createDisk(volumeDatastorePath, (int) (cmd.getDiskCharacteristics().getSize() / (1024L * 1024L)), morDatastore, vmMo.getScsiDeviceControllerKey());
3809+
vmMo.createDisk(volumeDatastorePath, (int) (dskch.getSize() / (1024L * 1024L)), morDatastore, vmMo.getScsiDeviceControllerKey());
38103810
vmMo.detachDisk(volumeDatastorePath, false);
38113811
}
38123812

3813-
VolumeTO vol = new VolumeTO(cmd.getVolumeId(), dskch.getType(), pool.getType(), pool.getUuid(), cmd.getDiskCharacteristics().getName(), pool.getPath(), volumeUuid, cmd
3814-
.getDiskCharacteristics().getSize(), null);
3813+
VolumeTO vol = new VolumeTO(cmd.getVolumeId(), dskch.getType(), pool.getType(), pool.getUuid(), dskch.getName(), pool.getPath(), volumeUuid, dskch.getSize(), null);
38153814
return new CreateAnswer(cmd, vol);
38163815
} finally {
38173816
s_logger.info("Destroy dummy VM after volume creation");

server/src/com/cloud/api/commands/AddTrafficMonitorCmd.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,12 @@
2525
import com.cloud.host.Host;
2626
import com.cloud.network.NetworkUsageManager;
2727
import com.cloud.server.ManagementService;
28-
import org.apache.cloudstack.api.response.ExternalFirewallResponse;
2928
import org.apache.cloudstack.api.response.TrafficMonitorResponse;
3029
import com.cloud.user.Account;
3130
import com.cloud.utils.component.ComponentLocator;
3231
import com.cloud.utils.exception.CloudRuntimeException;
3332

34-
@APICommand(name = "addTrafficMonitor", description="Adds Traffic Monitor Host for Direct Network Usage", responseObject = ExternalFirewallResponse.class)
33+
@APICommand(name = "addTrafficMonitor", description="Adds Traffic Monitor Host for Direct Network Usage", responseObject = TrafficMonitorResponse.class)
3534
public class AddTrafficMonitorCmd extends BaseCmd {
3635
public static final Logger s_logger = Logger.getLogger(AddTrafficMonitorCmd.class.getName());
3736
private static final String s_name = "addtrafficmonitorresponse";

server/src/com/cloud/api/commands/ListTrafficMonitorsCmd.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,10 @@
3131
import com.cloud.host.Host;
3232
import com.cloud.network.NetworkUsageManager;
3333
import com.cloud.server.ManagementService;
34-
import org.apache.cloudstack.api.response.ExternalFirewallResponse;
3534
import org.apache.cloudstack.api.response.TrafficMonitorResponse;
3635
import com.cloud.utils.component.ComponentLocator;
3736

38-
@APICommand(name = "listTrafficMonitors", description="List traffic monitor Hosts.", responseObject = ExternalFirewallResponse.class)
37+
@APICommand(name = "listTrafficMonitors", description="List traffic monitor Hosts.", responseObject = TrafficMonitorResponse.class)
3938
public class ListTrafficMonitorsCmd extends BaseListCmd {
4039
public static final Logger s_logger = Logger.getLogger(ListServiceOfferingsCmd.class.getName());
4140
private static final String s_name = "listtrafficmonitorsresponse";

server/src/com/cloud/storage/StorageManagerImpl.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3396,12 +3396,6 @@ public void prepare(VirtualMachineProfile<? extends VirtualMachine> vm, DeployDe
33963396
@DB
33973397
protected VolumeVO switchVolume(VolumeVO existingVolume, VirtualMachineProfile<? extends VirtualMachine> vm) throws StorageUnavailableException {
33983398
Transaction txn = Transaction.currentTxn();
3399-
txn.start();
3400-
try {
3401-
stateTransitTo(existingVolume, Volume.Event.DestroyRequested);
3402-
} catch (NoTransitionException e) {
3403-
s_logger.debug("Unable to destroy existing volume: " + e.toString());
3404-
}
34053399

34063400
Long templateIdToUse = null;
34073401
Long volTemplateId = existingVolume.getTemplateId();
@@ -3412,7 +3406,19 @@ protected VolumeVO switchVolume(VolumeVO existingVolume, VirtualMachineProfile<?
34123406
}
34133407
templateIdToUse = vmTemplateId;
34143408
}
3409+
3410+
txn.start();
34153411
VolumeVO newVolume = allocateDuplicateVolume(existingVolume, templateIdToUse);
3412+
// In case of Vmware if vm reference is not removed then during root disk cleanup
3413+
// the vm also gets deleted, so remove the reference
3414+
if (vm.getHypervisorType() == HypervisorType.VMware) {
3415+
_volsDao.detachVolume(existingVolume.getId());
3416+
}
3417+
try {
3418+
stateTransitTo(existingVolume, Volume.Event.DestroyRequested);
3419+
} catch (NoTransitionException e) {
3420+
s_logger.debug("Unable to destroy existing volume: " + e.toString());
3421+
}
34163422
txn.commit();
34173423
return newVolume;
34183424

ui/scripts/accounts.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@
229229

230230
$.ajax({
231231
url: createURL('createAccount'),
232+
type: "POST",
232233
data: data,
233234
success: function(json) {
234235
var item = json.createaccountresponse.account;
@@ -920,6 +921,7 @@
920921

921922
$.ajax({
922923
url: createURL('createUser'),
924+
type: "POST",
923925
data: data,
924926
success: function(json) {
925927
var item = json.createuserresponse.user;

0 commit comments

Comments
 (0)