You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2014/07/28 14:00:43 UTC
git commit: updated refs/heads/4.4 to 1e9e530
Repository: cloudstack
Updated Branches:
refs/heads/4.4 20c581e63 -> 1e9e53039
CLOUDSTACK-6170 (VMware root-disk support for managed storage)
(cherry picked from commit a542b6fd825da1d3582a282bcc0e67abd62964bf)
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1e9e5303
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1e9e5303
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1e9e5303
Branch: refs/heads/4.4
Commit: 1e9e53039150f3f3743bb343e0d06e05aafb5b84
Parents: 20c581e
Author: Mike Tutkowski <mi...@solidfire.com>
Authored: Thu Apr 24 13:41:03 2014 -0600
Committer: Daan Hoogland <da...@onecht.net>
Committed: Mon Jul 28 14:00:35 2014 +0200
----------------------------------------------------------------------
.../vmware/resource/VmwareResource.java | 146 -------------------
1 file changed, 146 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1e9e5303/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index da83d18..faf63b4 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -91,7 +91,6 @@ import com.vmware.vim25.VirtualMachineRelocateSpecDiskLocator;
import com.vmware.vim25.VirtualMachineRuntimeInfo;
import com.vmware.vim25.VmwareDistributedVirtualSwitchVlanIdSpec;
-import org.apache.cloudstack.storage.command.DeleteCommand;
import org.apache.cloudstack.storage.command.StorageSubSystemCommand;
import org.apache.cloudstack.storage.to.TemplateObjectTO;
import org.apache.cloudstack.storage.to.VolumeObjectTO;
@@ -3817,151 +3816,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
}
}
- public Answer execute(DeleteCommand cmd) {
- if (s_logger.isInfoEnabled()) {
- s_logger.info("Executing resource DeleteCommand: " + _gson.toJson(cmd));
- }
-
- /*
- * DestroyCommand content exafmple
- *
- * {"volume": {"id":5,"name":"Volume1", "mountPoint":"/export/home/kelven/vmware-test/primary",
- * "path":"6bb8762f-c34c-453c-8e03-26cc246ceec4", "size":0,"type":"DATADISK","resourceType":
- * "STORAGE_POOL","storagePoolType":"NetworkFilesystem", "poolId":0,"deviceId":0 } }
- *
- * {"volume": {"id":1, "name":"i-2-1-KY-ROOT", "mountPoint":"/export/home/kelven/vmware-test/primary",
- * "path":"i-2-1-KY-ROOT","size":0,"type":"ROOT", "resourceType":"STORAGE_POOL", "storagePoolType":"NetworkFilesystem",
- * "poolId":0,"deviceId":0 } }
- */
-
- try {
- VmwareContext context = getServiceContext();
- VmwareHypervisorHost hyperHost = getHyperHost(context);
- VolumeObjectTO vol = (VolumeObjectTO)cmd.getData();
- DataStoreTO store = vol.getDataStore();
-
- ManagedObjectReference morDs = HypervisorHostHelper.findDatastoreWithBackwardsCompatibility(hyperHost, store.getUuid());
- if (morDs == null) {
- String msg = "Unable to find datastore based on volume mount point " + store.getUrl();
- s_logger.error(msg);
- throw new Exception(msg);
- }
-
- DatastoreMO dsMo = new DatastoreMO(context, morDs);
-
- ManagedObjectReference morDc = hyperHost.getHyperHostDatacenter();
- ManagedObjectReference morCluster = hyperHost.getHyperHostCluster();
- ClusterMO clusterMo = new ClusterMO(context, morCluster);
-
- if (vol.getVolumeType() == Volume.Type.ROOT) {
- String vmName = vol.getVmName();
- if (vmName != null) {
- VirtualMachineMO vmMo = clusterMo.findVmOnHyperHost(vmName);
- if (vmMo != null) {
- if (s_logger.isInfoEnabled()) {
- s_logger.info("Destroy root volume and VM itself. vmName " + vmName);
- }
-
- HostMO hostMo = vmMo.getRunningHost();
- List<NetworkDetails> networks = vmMo.getNetworksWithDetails();
-
- // tear down all devices first before we destroy the VM to avoid accidently delete disk backing files
- if (getVmPowerState(vmMo) != PowerState.PowerOff)
- vmMo.safePowerOff(_shutdownWaitMs);
- vmMo.tearDownDevices(new Class<?>[] { /* VirtualDisk.class, */VirtualEthernetCard.class});
- vmMo.destroy();
-
- for (NetworkDetails netDetails : networks) {
- if (netDetails.getGCTag() != null && netDetails.getGCTag().equalsIgnoreCase("true")) {
- if (netDetails.getVMMorsOnNetwork() == null || netDetails.getVMMorsOnNetwork().length == 1) {
- cleanupNetwork(hostMo, netDetails);
- }
- }
- }
- }
-
- if (s_logger.isInfoEnabled())
- s_logger.info("Destroy volume by original name: " + vol.getPath() + ".vmdk");
- dsMo.deleteFile(vol.getPath() + ".vmdk", morDc, true);
-
- // root volume may be created via linked-clone, delete the delta disk as well
- if (_fullCloneFlag) {
- if (s_logger.isInfoEnabled()) {
- s_logger.info("Destroy volume by derived name: " + vol.getPath() + "-flat.vmdk");
- }
- dsMo.deleteFile(vol.getPath() + "-flat.vmdk", morDc, true);
- } else {
- if (s_logger.isInfoEnabled()) {
- s_logger.info("Destroy volume by derived name: " + vol.getPath() + "-delta.vmdk");
- }
- dsMo.deleteFile(vol.getPath() + "-delta.vmdk", morDc, true);
- }
- return new Answer(cmd, true, "Success");
- }
-
- if (s_logger.isInfoEnabled()) {
- s_logger.info("Destroy root volume directly from datastore");
- }
- } else {
- // evitTemplate will be converted into DestroyCommand, test if we are running in this case
- VirtualMachineMO vmMo = clusterMo.findVmOnHyperHost(vol.getPath());
- if (vmMo != null) {
- if (s_logger.isInfoEnabled())
- s_logger.info("Destroy template volume " + vol.getPath());
-
- vmMo.destroy();
- return new Answer(cmd, true, "Success");
- }
- }
-
- String chainInfo = vol.getChainInfo();
- if (chainInfo != null && !chainInfo.isEmpty()) {
- s_logger.info("Destroy volume by chain info: " + chainInfo);
- String[] diskChain = _gson.fromJson(chainInfo, String[].class);
-
- if (diskChain != null && diskChain.length > 0) {
- for (String backingName : diskChain) {
- if (s_logger.isInfoEnabled()) {
- s_logger.info("Delete volume backing file: " + backingName);
- }
- dsMo.deleteFile(backingName, morDc, true);
- }
- } else {
- if (s_logger.isInfoEnabled()) {
- s_logger.info("Empty disk chain info, fall back to try to delete by original backing file name");
- }
- dsMo.deleteFile(vol.getPath() + ".vmdk", morDc, true);
-
- if (s_logger.isInfoEnabled()) {
- s_logger.info("Destroy volume by derived name: " + vol.getPath() + "-flat.vmdk");
- }
- dsMo.deleteFile(vol.getPath() + "-flat.vmdk", morDc, true);
- }
- } else {
- if (s_logger.isInfoEnabled()) {
- s_logger.info("Destroy volume by original name: " + vol.getPath() + ".vmdk");
- }
- dsMo.deleteFile(vol.getPath() + ".vmdk", morDc, true);
-
- if (s_logger.isInfoEnabled()) {
- s_logger.info("Destroy volume by derived name: " + vol.getPath() + "-flat.vmdk");
- }
- dsMo.deleteFile(vol.getPath() + "-flat.vmdk", morDc, true);
- }
-
- return new Answer(cmd, true, "Success");
- } catch (Throwable e) {
- if (e instanceof RemoteException) {
- s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context");
- invalidateServiceContext();
- }
-
- String msg = "DestroyCommand failed due to " + VmwareHelper.getExceptionMessage(e);
- s_logger.error(msg, e);
- return new Answer(cmd, false, msg);
- }
- }
-
public void cleanupNetwork(HostMO hostMo, NetworkDetails netDetails) {
// we will no longer cleanup VLAN networks in order to support native VMware HA
/*