You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2012/07/03 02:46:52 UTC

[9/9] adding runbook and publican-cloudstack to docs

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/3ae274a4/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareContext.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareContext.java b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareContext.java
index 155a3a7..6dd6475 100755
--- a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareContext.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareContext.java
@@ -27,38 +27,38 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.net.ConnectException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLSession;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.hypervisor.vmware.mo.DatacenterMO;
-import com.cloud.hypervisor.vmware.mo.DatastoreFile;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLSession;
+
+import org.apache.log4j.Logger;
+
+import com.cloud.hypervisor.vmware.mo.DatacenterMO;
+import com.cloud.hypervisor.vmware.mo.DatastoreFile;
 import com.cloud.utils.ActionDelegate;
-import com.vmware.apputils.version.ExtendedAppUtil;
-import com.vmware.apputils.vim25.ServiceConnection;
-import com.vmware.apputils.vim25.ServiceUtil;
-import com.vmware.vim25.ManagedObjectReference;
-import com.vmware.vim25.ObjectContent;
-import com.vmware.vim25.ObjectSpec;
-import com.vmware.vim25.PropertyFilterSpec;
-import com.vmware.vim25.PropertySpec;
-import com.vmware.vim25.SelectionSpec;
-import com.vmware.vim25.ServiceContent;
-import com.vmware.vim25.TaskInfo;
-import com.vmware.vim25.TraversalSpec;
-import com.vmware.vim25.VimPortType;
-
-public class VmwareContext {
+import com.vmware.apputils.version.ExtendedAppUtil;
+import com.vmware.apputils.vim25.ServiceConnection;
+import com.vmware.apputils.vim25.ServiceUtil;
+import com.vmware.vim25.ManagedObjectReference;
+import com.vmware.vim25.ObjectContent;
+import com.vmware.vim25.ObjectSpec;
+import com.vmware.vim25.PropertyFilterSpec;
+import com.vmware.vim25.PropertySpec;
+import com.vmware.vim25.SelectionSpec;
+import com.vmware.vim25.ServiceContent;
+import com.vmware.vim25.TaskInfo;
+import com.vmware.vim25.TraversalSpec;
+import com.vmware.vim25.VimPortType;
+
+public class VmwareContext {
     private static final Logger s_logger = Logger.getLogger(VmwareContext.class);
 
     private static int MAX_CONNECT_RETRY = 5;
@@ -69,229 +69,229 @@ public class VmwareContext {
 	
 	private Map<String, Object> _stockMap = new HashMap<String, Object>();
 	private int _CHUNKSIZE = 1*1024*1024;		// 1M
-	
-	static {
-		try {
-			javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1]; 
-			javax.net.ssl.TrustManager tm = new TrustAllManager(); 
-			trustAllCerts[0] = tm; 
-			javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL"); 
-			sc.init(null, trustAllCerts, null); 
-			javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
-		} catch (Exception e) {
-			s_logger.error("Unexpected exception ", e);
-		}
-	}
-	
-	public VmwareContext(ExtendedAppUtil appUtil, String address) {
-		assert(appUtil != null) : "Invalid parameter in constructing VmwareContext object";
-		
-		_appUtil = appUtil;		
-		_serverAddress = address;
-	}
-
-	public void registerStockObject(String name, Object obj) {
-		synchronized(_stockMap) {
-			_stockMap.put(name, obj);
-		}
-	}
-	
-	public void uregisterStockObject(String name) {
-		synchronized(_stockMap) {
-			_stockMap.remove(name);
-		}
-	}
-	
-	@SuppressWarnings("unchecked")
-	public <T> T getStockObject(String name) {
-		synchronized(_stockMap) {
-			return (T)_stockMap.get(name);
-		}
-	}
-	
-	public String getServerAddress() {
-		return _serverAddress;
-	}
-	
-	public ServiceConnection getServiceConnection() {
-		return _appUtil.getServiceConnection3();
-	}
-	
-	public VimPortType getService() {
-		return getServiceConnection().getService();
-	}
-	
-	public ServiceContent getServiceContent() {
-		return getServiceConnection().getServiceContent();
-	}
-	
-	public ServiceUtil getServiceUtil() {
-		return _appUtil.getServiceUtil3(); 
-	}
-	
-	public ManagedObjectReference getRootFolder() {
-		return getServiceContent().getRootFolder();
-	}
-	
-	public ManagedObjectReference getHostMorByPath(String inventoryPath) throws Exception {
-		assert(inventoryPath != null);
-		
-		String[] tokens;
-		if(inventoryPath.startsWith("/"))
-			tokens = inventoryPath.substring(1).split("/");
-		else
-			tokens = inventoryPath.split("/");
-		
-		ManagedObjectReference mor = getRootFolder();
-		for(int i=0; i < tokens.length;i++) {
-			String token = tokens[i];
-			ObjectContent[] ocs;
-			if(mor.getType().equalsIgnoreCase("Datacenter")) {
-				PropertySpec pSpec = new PropertySpec();
-				pSpec.setType("ManagedEntity");
-				pSpec.setPathSet(new String[] { "name" });
-				
-			    TraversalSpec dcHostFolderTraversal = new TraversalSpec();
-			    dcHostFolderTraversal.setType("Datacenter");
-			    dcHostFolderTraversal.setPath("hostFolder");
-			    dcHostFolderTraversal.setName("dcHostFolderTraversal");
-
-			    ObjectSpec oSpec = new ObjectSpec();
-			    oSpec.setObj(mor);
-			    oSpec.setSkip(Boolean.TRUE);
-			    oSpec.setSelectSet(new SelectionSpec[] { dcHostFolderTraversal });
-
-			    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
-			    pfSpec.setPropSet(new PropertySpec[] { pSpec });
-			    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
-			    ocs = getService().retrieveProperties(
-			    	getServiceContent().getPropertyCollector(), 
-			    	new PropertyFilterSpec[] { pfSpec });
-				
-			} else if(mor.getType().equalsIgnoreCase("Folder")) {
-				PropertySpec pSpec = new PropertySpec();
-				pSpec.setType("ManagedEntity");
-				pSpec.setPathSet(new String[] { "name" });
-				
-			    TraversalSpec folderChildrenTraversal = new TraversalSpec();
-			    folderChildrenTraversal.setType("Folder");
-			    folderChildrenTraversal.setPath("childEntity");
-			    folderChildrenTraversal.setName("folderChildrenTraversal");
-
-			    ObjectSpec oSpec = new ObjectSpec();
-			    oSpec.setObj(mor);
-			    oSpec.setSkip(Boolean.TRUE);
-			    oSpec.setSelectSet(new SelectionSpec[] { folderChildrenTraversal });
-
-			    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
-			    pfSpec.setPropSet(new PropertySpec[] { pSpec });
-			    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
-			    
-			    ocs = getService().retrieveProperties(
-			    	getServiceContent().getPropertyCollector(), 
-			    	new PropertyFilterSpec[] { pfSpec });
-			} else if(mor.getType().equalsIgnoreCase("ClusterComputeResource")) {
-				PropertySpec pSpec = new PropertySpec();
-				pSpec.setType("ManagedEntity");
-				pSpec.setPathSet(new String[] { "name" });
-				
-			    TraversalSpec clusterHostTraversal = new TraversalSpec();
-			    clusterHostTraversal.setType("ClusterComputeResource");
-			    clusterHostTraversal.setPath("host");
-			    clusterHostTraversal.setName("folderChildrenTraversal");
-
-			    ObjectSpec oSpec = new ObjectSpec();
-			    oSpec.setObj(mor);
-			    oSpec.setSkip(Boolean.TRUE);
-			    oSpec.setSelectSet(new SelectionSpec[] { clusterHostTraversal });
-
-			    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
-			    pfSpec.setPropSet(new PropertySpec[] { pSpec });
-			    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
-			    
-			    ocs = getService().retrieveProperties(
-			    	getServiceContent().getPropertyCollector(), 
-			    	new PropertyFilterSpec[] { pfSpec });
-			} else {
-				s_logger.error("Invalid inventory path, path element can only be datacenter and folder");
-				return null;
-			}
-			
-		    if(ocs != null && ocs.length > 0) {
-		    	boolean found = false;
-		    	for(ObjectContent oc : ocs) {
-		    		String name = oc.getPropSet()[0].getVal().toString();		    		
-		    		if(name.equalsIgnoreCase(token) || name.equalsIgnoreCase("host")) {
-		    			mor = oc.getObj();
-		    			found  = true;
-		    			if (name.equalsIgnoreCase("host"))
-		    				i--;
-		    			break;
-		    		}
-		    	}
-		    	if(!found) {
-					s_logger.error("Path element points to an un-existing inventory entity");
-			    	return null;
-		    	}
-		    } else {
-				s_logger.error("Path element points to an un-existing inventory entity");
-		    	return null;
-		    }
-		}
-		return mor;
-	}
-
-	// path in format of <datacenter name>/<datastore name>
-	public ManagedObjectReference getDatastoreMorByPath(String inventoryPath) throws Exception {
-		assert(inventoryPath != null);
-		
-		String[] tokens;
-		if(inventoryPath.startsWith("/"))
-			tokens = inventoryPath.substring(1).split("/");
-		else
-			tokens = inventoryPath.split("/");
-		
-		if(tokens == null || tokens.length != 2) {
-			s_logger.error("Invalid datastore inventory path. path: " + inventoryPath);
-			return null;
-		}
-			
-		DatacenterMO dcMo = new DatacenterMO(this, tokens[0]);
-		if(dcMo.getMor() == null) {
-			s_logger.error("Unable to locate the datacenter specified in path: " + inventoryPath);
-			return null;
-		}
-		
-		return dcMo.findDatastore(tokens[1]);
-	}
-	
-	public void waitForTaskProgressDone(ManagedObjectReference morTask) throws Exception {
-		while(true) {
-			TaskInfo tinfo = (TaskInfo)getServiceUtil().getDynamicProperty(morTask, "info");
-			Integer progress = tinfo.getProgress();
-			if(progress == null)
-				break;
-			
-			if(progress.intValue() >= 100)
-				break;
-			
-			Thread.sleep(1000);
-		}
-	}
-	
-	public void getFile(String urlString, String localFileFullName) throws Exception {
-		HttpURLConnection conn = getHTTPConnection(urlString);
-		
-	    InputStream in = conn.getInputStream();
-	    OutputStream out = new FileOutputStream(new File(localFileFullName));
-	    byte[] buf = new byte[_CHUNKSIZE];
-	    int len = 0;
-	    while ((len = in.read(buf)) > 0) {
-	    	out.write(buf, 0, len);
-	    }
-	    in.close();
-	    out.close();              
-	}
+	
+	static {
+		try {
+			javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1]; 
+			javax.net.ssl.TrustManager tm = new TrustAllManager(); 
+			trustAllCerts[0] = tm; 
+			javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL"); 
+			sc.init(null, trustAllCerts, null); 
+			javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+		} catch (Exception e) {
+			s_logger.error("Unexpected exception ", e);
+		}
+	}
+	
+	public VmwareContext(ExtendedAppUtil appUtil, String address) {
+		assert(appUtil != null) : "Invalid parameter in constructing VmwareContext object";
+		
+		_appUtil = appUtil;		
+		_serverAddress = address;
+	}
+
+	public void registerStockObject(String name, Object obj) {
+		synchronized(_stockMap) {
+			_stockMap.put(name, obj);
+		}
+	}
+	
+	public void uregisterStockObject(String name) {
+		synchronized(_stockMap) {
+			_stockMap.remove(name);
+		}
+	}
+	
+	@SuppressWarnings("unchecked")
+	public <T> T getStockObject(String name) {
+		synchronized(_stockMap) {
+			return (T)_stockMap.get(name);
+		}
+	}
+	
+	public String getServerAddress() {
+		return _serverAddress;
+	}
+	
+	public ServiceConnection getServiceConnection() {
+		return _appUtil.getServiceConnection3();
+	}
+	
+	public VimPortType getService() {
+		return getServiceConnection().getService();
+	}
+	
+	public ServiceContent getServiceContent() {
+		return getServiceConnection().getServiceContent();
+	}
+	
+	public ServiceUtil getServiceUtil() {
+		return _appUtil.getServiceUtil3(); 
+	}
+	
+	public ManagedObjectReference getRootFolder() {
+		return getServiceContent().getRootFolder();
+	}
+	
+	public ManagedObjectReference getHostMorByPath(String inventoryPath) throws Exception {
+		assert(inventoryPath != null);
+		
+		String[] tokens;
+		if(inventoryPath.startsWith("/"))
+			tokens = inventoryPath.substring(1).split("/");
+		else
+			tokens = inventoryPath.split("/");
+		
+		ManagedObjectReference mor = getRootFolder();
+		for(int i=0; i < tokens.length;i++) {
+			String token = tokens[i];
+			ObjectContent[] ocs;
+			if(mor.getType().equalsIgnoreCase("Datacenter")) {
+				PropertySpec pSpec = new PropertySpec();
+				pSpec.setType("ManagedEntity");
+				pSpec.setPathSet(new String[] { "name" });
+				
+			    TraversalSpec dcHostFolderTraversal = new TraversalSpec();
+			    dcHostFolderTraversal.setType("Datacenter");
+			    dcHostFolderTraversal.setPath("hostFolder");
+			    dcHostFolderTraversal.setName("dcHostFolderTraversal");
+
+			    ObjectSpec oSpec = new ObjectSpec();
+			    oSpec.setObj(mor);
+			    oSpec.setSkip(Boolean.TRUE);
+			    oSpec.setSelectSet(new SelectionSpec[] { dcHostFolderTraversal });
+
+			    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
+			    pfSpec.setPropSet(new PropertySpec[] { pSpec });
+			    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
+			    ocs = getService().retrieveProperties(
+			    	getServiceContent().getPropertyCollector(), 
+			    	new PropertyFilterSpec[] { pfSpec });
+				
+			} else if(mor.getType().equalsIgnoreCase("Folder")) {
+				PropertySpec pSpec = new PropertySpec();
+				pSpec.setType("ManagedEntity");
+				pSpec.setPathSet(new String[] { "name" });
+				
+			    TraversalSpec folderChildrenTraversal = new TraversalSpec();
+			    folderChildrenTraversal.setType("Folder");
+			    folderChildrenTraversal.setPath("childEntity");
+			    folderChildrenTraversal.setName("folderChildrenTraversal");
+
+			    ObjectSpec oSpec = new ObjectSpec();
+			    oSpec.setObj(mor);
+			    oSpec.setSkip(Boolean.TRUE);
+			    oSpec.setSelectSet(new SelectionSpec[] { folderChildrenTraversal });
+
+			    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
+			    pfSpec.setPropSet(new PropertySpec[] { pSpec });
+			    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
+			    
+			    ocs = getService().retrieveProperties(
+			    	getServiceContent().getPropertyCollector(), 
+			    	new PropertyFilterSpec[] { pfSpec });
+			} else if(mor.getType().equalsIgnoreCase("ClusterComputeResource")) {
+				PropertySpec pSpec = new PropertySpec();
+				pSpec.setType("ManagedEntity");
+				pSpec.setPathSet(new String[] { "name" });
+				
+			    TraversalSpec clusterHostTraversal = new TraversalSpec();
+			    clusterHostTraversal.setType("ClusterComputeResource");
+			    clusterHostTraversal.setPath("host");
+			    clusterHostTraversal.setName("folderChildrenTraversal");
+
+			    ObjectSpec oSpec = new ObjectSpec();
+			    oSpec.setObj(mor);
+			    oSpec.setSkip(Boolean.TRUE);
+			    oSpec.setSelectSet(new SelectionSpec[] { clusterHostTraversal });
+
+			    PropertyFilterSpec pfSpec = new PropertyFilterSpec();
+			    pfSpec.setPropSet(new PropertySpec[] { pSpec });
+			    pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
+			    
+			    ocs = getService().retrieveProperties(
+			    	getServiceContent().getPropertyCollector(), 
+			    	new PropertyFilterSpec[] { pfSpec });
+			} else {
+				s_logger.error("Invalid inventory path, path element can only be datacenter and folder");
+				return null;
+			}
+			
+		    if(ocs != null && ocs.length > 0) {
+		    	boolean found = false;
+		    	for(ObjectContent oc : ocs) {
+		    		String name = oc.getPropSet()[0].getVal().toString();		    		
+		    		if(name.equalsIgnoreCase(token) || name.equalsIgnoreCase("host")) {
+		    			mor = oc.getObj();
+		    			found  = true;
+		    			if (name.equalsIgnoreCase("host"))
+		    				i--;
+		    			break;
+		    		}
+		    	}
+		    	if(!found) {
+					s_logger.error("Path element points to an un-existing inventory entity");
+			    	return null;
+		    	}
+		    } else {
+				s_logger.error("Path element points to an un-existing inventory entity");
+		    	return null;
+		    }
+		}
+		return mor;
+	}
+
+	// path in format of <datacenter name>/<datastore name>
+	public ManagedObjectReference getDatastoreMorByPath(String inventoryPath) throws Exception {
+		assert(inventoryPath != null);
+		
+		String[] tokens;
+		if(inventoryPath.startsWith("/"))
+			tokens = inventoryPath.substring(1).split("/");
+		else
+			tokens = inventoryPath.split("/");
+		
+		if(tokens == null || tokens.length != 2) {
+			s_logger.error("Invalid datastore inventory path. path: " + inventoryPath);
+			return null;
+		}
+			
+		DatacenterMO dcMo = new DatacenterMO(this, tokens[0]);
+		if(dcMo.getMor() == null) {
+			s_logger.error("Unable to locate the datacenter specified in path: " + inventoryPath);
+			return null;
+		}
+		
+		return dcMo.findDatastore(tokens[1]);
+	}
+	
+	public void waitForTaskProgressDone(ManagedObjectReference morTask) throws Exception {
+		while(true) {
+			TaskInfo tinfo = (TaskInfo)getServiceUtil().getDynamicProperty(morTask, "info");
+			Integer progress = tinfo.getProgress();
+			if(progress == null)
+				break;
+			
+			if(progress.intValue() >= 100)
+				break;
+			
+			Thread.sleep(1000);
+		}
+	}
+	
+	public void getFile(String urlString, String localFileFullName) throws Exception {
+		HttpURLConnection conn = getHTTPConnection(urlString);
+		
+	    InputStream in = conn.getInputStream();
+	    OutputStream out = new FileOutputStream(new File(localFileFullName));
+	    byte[] buf = new byte[_CHUNKSIZE];
+	    int len = 0;
+	    while ((len = in.read(buf)) > 0) {
+	    	out.write(buf, 0, len);
+	    }
+	    in.close();
+	    out.close();              
+	}
 	
 	public void uploadFile(String urlString, String localFileFullName) throws Exception {
 		uploadFile(urlString, new File(localFileFullName));

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/3ae274a4/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
index 746b714..47ff8e2 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package com.cloud.hypervisor.vmware.util;
+package com.cloud.hypervisor.vmware.util;
 
 import java.io.BufferedWriter;
 import java.io.ByteArrayOutputStream;
@@ -108,9 +108,9 @@ public class VmwareHelper {
 		nic.setAddressType("Manual");
 		nic.setConnectable(connectInfo);
 		nic.setMacAddress(macAddress);
-		nic.setUnitNumber(deviceNumber);
-		nic.setKey(-contextNumber);
-		return nic;
+		nic.setUnitNumber(deviceNumber);
+		nic.setKey(-contextNumber);
+		return nic;
 	}
 	
     public static VirtualDevice prepareDvNicDevice(VirtualMachineMO vmMo, ManagedObjectReference morNetwork, VirtualEthernetCardType deviceType,
@@ -160,93 +160,93 @@ public class VmwareHelper {
         nic.setKey(-contextNumber);
         return nic;
     }
-
-	// vmdkDatastorePath: [datastore name] vmdkFilePath
-	public static VirtualDevice prepareDiskDevice(VirtualMachineMO vmMo, int controllerKey, String vmdkDatastorePath, 
-		int sizeInMb, ManagedObjectReference morDs, int deviceNumber, int contextNumber) throws Exception {
-		
-		VirtualDisk disk = new VirtualDisk();
-
-		VirtualDiskFlatVer2BackingInfo backingInfo = new VirtualDiskFlatVer2BackingInfo();
-        backingInfo.setDiskMode(VirtualDiskMode.persistent.toString());
-    	backingInfo.setThinProvisioned(true);
-    	backingInfo.setEagerlyScrub(false);
-        backingInfo.setDatastore(morDs);
-        backingInfo.setFileName(vmdkDatastorePath);
-        disk.setBacking(backingInfo);
+
+	// vmdkDatastorePath: [datastore name] vmdkFilePath
+	public static VirtualDevice prepareDiskDevice(VirtualMachineMO vmMo, int controllerKey, String vmdkDatastorePath, 
+		int sizeInMb, ManagedObjectReference morDs, int deviceNumber, int contextNumber) throws Exception {
+		
+		VirtualDisk disk = new VirtualDisk();
+
+		VirtualDiskFlatVer2BackingInfo backingInfo = new VirtualDiskFlatVer2BackingInfo();
+        backingInfo.setDiskMode(VirtualDiskMode.persistent.toString());
+    	backingInfo.setThinProvisioned(true);
+    	backingInfo.setEagerlyScrub(false);
+        backingInfo.setDatastore(morDs);
+        backingInfo.setFileName(vmdkDatastorePath);
+        disk.setBacking(backingInfo);
 
 		if(controllerKey < 0)
 			controllerKey = vmMo.getIDEDeviceControllerKey();
         if(deviceNumber < 0)
         	deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
 		disk.setControllerKey(controllerKey);
-		
-	    disk.setKey(-contextNumber);
-	    disk.setUnitNumber(deviceNumber);
-	    disk.setCapacityInKB(sizeInMb*1024);
-
-	    VirtualDeviceConnectInfo connectInfo = new VirtualDeviceConnectInfo();
-	    connectInfo.setConnected(true);
-	    connectInfo.setStartConnected(true);
-	    disk.setConnectable(connectInfo);
-	    
-	    return disk;
+		
+	    disk.setKey(-contextNumber);
+	    disk.setUnitNumber(deviceNumber);
+	    disk.setCapacityInKB(sizeInMb*1024);
+
+	    VirtualDeviceConnectInfo connectInfo = new VirtualDeviceConnectInfo();
+	    connectInfo.setConnected(true);
+	    connectInfo.setStartConnected(true);
+	    disk.setConnectable(connectInfo);
+	    
+	    return disk;
 	}
 	
-	// vmdkDatastorePath: [datastore name] vmdkFilePath, create delta disk based on disk from template
-	public static VirtualDevice prepareDiskDevice(VirtualMachineMO vmMo, int controllerKey, String vmdkDatastorePath, 
-		int sizeInMb, ManagedObjectReference morDs, VirtualDisk templateDisk, int deviceNumber, int contextNumber) throws Exception {
-		
-		assert(templateDisk != null);
-		VirtualDeviceBackingInfo parentBacking = templateDisk.getBacking();
-		assert(parentBacking != null);
-		
-		// TODO Not sure if we need to check if the disk in template and the new disk needs to share the 
-		// same datastore
-		VirtualDisk disk = new VirtualDisk();
-		if(parentBacking instanceof VirtualDiskFlatVer1BackingInfo) {
-			VirtualDiskFlatVer1BackingInfo backingInfo = new VirtualDiskFlatVer1BackingInfo();
-	        backingInfo.setDiskMode(((VirtualDiskFlatVer1BackingInfo)parentBacking).getDiskMode());
-	        backingInfo.setDatastore(morDs);
-	        backingInfo.setFileName(vmdkDatastorePath);
-	        backingInfo.setParent((VirtualDiskFlatVer1BackingInfo)parentBacking);
-	        disk.setBacking(backingInfo);
-		} else if(parentBacking instanceof VirtualDiskFlatVer2BackingInfo) {
-			VirtualDiskFlatVer2BackingInfo backingInfo = new VirtualDiskFlatVer2BackingInfo();
-	        backingInfo.setDiskMode(((VirtualDiskFlatVer2BackingInfo)parentBacking).getDiskMode());
-	        backingInfo.setDatastore(morDs);
-	        backingInfo.setFileName(vmdkDatastorePath);
-	        backingInfo.setParent((VirtualDiskFlatVer2BackingInfo)parentBacking);
-	        disk.setBacking(backingInfo);
-		} else if(parentBacking instanceof VirtualDiskRawDiskMappingVer1BackingInfo) {
-			VirtualDiskRawDiskMappingVer1BackingInfo backingInfo = new VirtualDiskRawDiskMappingVer1BackingInfo();
-	        backingInfo.setDiskMode(((VirtualDiskRawDiskMappingVer1BackingInfo)parentBacking).getDiskMode());
-	        backingInfo.setDatastore(morDs);
-	        backingInfo.setFileName(vmdkDatastorePath);
-	        backingInfo.setParent((VirtualDiskRawDiskMappingVer1BackingInfo)parentBacking);
-	        disk.setBacking(backingInfo);
-		} else if(parentBacking instanceof VirtualDiskSparseVer1BackingInfo) {
-			VirtualDiskSparseVer1BackingInfo backingInfo = new VirtualDiskSparseVer1BackingInfo();
-	        backingInfo.setDiskMode(((VirtualDiskSparseVer1BackingInfo)parentBacking).getDiskMode());
-	        backingInfo.setDatastore(morDs);
-	        backingInfo.setFileName(vmdkDatastorePath);
-	        backingInfo.setParent((VirtualDiskSparseVer1BackingInfo)parentBacking);
-	        disk.setBacking(backingInfo);
-		} else if(parentBacking instanceof VirtualDiskSparseVer2BackingInfo) {
-			VirtualDiskSparseVer2BackingInfo backingInfo = new VirtualDiskSparseVer2BackingInfo();
-	        backingInfo.setDiskMode(((VirtualDiskSparseVer2BackingInfo)parentBacking).getDiskMode());
-	        backingInfo.setDatastore(morDs);
-	        backingInfo.setFileName(vmdkDatastorePath);
-	        backingInfo.setParent((VirtualDiskSparseVer2BackingInfo)parentBacking);
-	        disk.setBacking(backingInfo);
-		} else {
-			throw new Exception("Unsupported disk backing: " + parentBacking.getClass().getCanonicalName());
-		}
-		
-		if(controllerKey < 0)
-			controllerKey = vmMo.getIDEDeviceControllerKey();
-		disk.setControllerKey(controllerKey);
-		if(deviceNumber < 0)
+	// vmdkDatastorePath: [datastore name] vmdkFilePath, create delta disk based on disk from template
+	public static VirtualDevice prepareDiskDevice(VirtualMachineMO vmMo, int controllerKey, String vmdkDatastorePath, 
+		int sizeInMb, ManagedObjectReference morDs, VirtualDisk templateDisk, int deviceNumber, int contextNumber) throws Exception {
+		
+		assert(templateDisk != null);
+		VirtualDeviceBackingInfo parentBacking = templateDisk.getBacking();
+		assert(parentBacking != null);
+		
+		// TODO Not sure if we need to check if the disk in template and the new disk needs to share the 
+		// same datastore
+		VirtualDisk disk = new VirtualDisk();
+		if(parentBacking instanceof VirtualDiskFlatVer1BackingInfo) {
+			VirtualDiskFlatVer1BackingInfo backingInfo = new VirtualDiskFlatVer1BackingInfo();
+	        backingInfo.setDiskMode(((VirtualDiskFlatVer1BackingInfo)parentBacking).getDiskMode());
+	        backingInfo.setDatastore(morDs);
+	        backingInfo.setFileName(vmdkDatastorePath);
+	        backingInfo.setParent((VirtualDiskFlatVer1BackingInfo)parentBacking);
+	        disk.setBacking(backingInfo);
+		} else if(parentBacking instanceof VirtualDiskFlatVer2BackingInfo) {
+			VirtualDiskFlatVer2BackingInfo backingInfo = new VirtualDiskFlatVer2BackingInfo();
+	        backingInfo.setDiskMode(((VirtualDiskFlatVer2BackingInfo)parentBacking).getDiskMode());
+	        backingInfo.setDatastore(morDs);
+	        backingInfo.setFileName(vmdkDatastorePath);
+	        backingInfo.setParent((VirtualDiskFlatVer2BackingInfo)parentBacking);
+	        disk.setBacking(backingInfo);
+		} else if(parentBacking instanceof VirtualDiskRawDiskMappingVer1BackingInfo) {
+			VirtualDiskRawDiskMappingVer1BackingInfo backingInfo = new VirtualDiskRawDiskMappingVer1BackingInfo();
+	        backingInfo.setDiskMode(((VirtualDiskRawDiskMappingVer1BackingInfo)parentBacking).getDiskMode());
+	        backingInfo.setDatastore(morDs);
+	        backingInfo.setFileName(vmdkDatastorePath);
+	        backingInfo.setParent((VirtualDiskRawDiskMappingVer1BackingInfo)parentBacking);
+	        disk.setBacking(backingInfo);
+		} else if(parentBacking instanceof VirtualDiskSparseVer1BackingInfo) {
+			VirtualDiskSparseVer1BackingInfo backingInfo = new VirtualDiskSparseVer1BackingInfo();
+	        backingInfo.setDiskMode(((VirtualDiskSparseVer1BackingInfo)parentBacking).getDiskMode());
+	        backingInfo.setDatastore(morDs);
+	        backingInfo.setFileName(vmdkDatastorePath);
+	        backingInfo.setParent((VirtualDiskSparseVer1BackingInfo)parentBacking);
+	        disk.setBacking(backingInfo);
+		} else if(parentBacking instanceof VirtualDiskSparseVer2BackingInfo) {
+			VirtualDiskSparseVer2BackingInfo backingInfo = new VirtualDiskSparseVer2BackingInfo();
+	        backingInfo.setDiskMode(((VirtualDiskSparseVer2BackingInfo)parentBacking).getDiskMode());
+	        backingInfo.setDatastore(morDs);
+	        backingInfo.setFileName(vmdkDatastorePath);
+	        backingInfo.setParent((VirtualDiskSparseVer2BackingInfo)parentBacking);
+	        disk.setBacking(backingInfo);
+		} else {
+			throw new Exception("Unsupported disk backing: " + parentBacking.getClass().getCanonicalName());
+		}
+		
+		if(controllerKey < 0)
+			controllerKey = vmMo.getIDEDeviceControllerKey();
+		disk.setControllerKey(controllerKey);
+		if(deviceNumber < 0)
 			deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
 		
 	    disk.setKey(-contextNumber);
@@ -285,19 +285,19 @@ public class VmwareHelper {
 
 		if(controllerKey < 0)
 			controllerKey = vmMo.getIDEDeviceControllerKey();
-        if(deviceNumber < 0)
-        	deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
-		
-		disk.setControllerKey(controllerKey);
-	    disk.setKey(-contextNumber);
-	    disk.setUnitNumber(deviceNumber);
-	    
-	    VirtualDeviceConnectInfo connectInfo = new VirtualDeviceConnectInfo();
-	    connectInfo.setConnected(true);
-	    connectInfo.setStartConnected(true);
-	    disk.setConnectable(connectInfo);
-	    
-	    return disk;
+        if(deviceNumber < 0)
+        	deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
+		
+		disk.setControllerKey(controllerKey);
+	    disk.setKey(-contextNumber);
+	    disk.setUnitNumber(deviceNumber);
+	    
+	    VirtualDeviceConnectInfo connectInfo = new VirtualDeviceConnectInfo();
+	    connectInfo.setConnected(true);
+	    connectInfo.setStartConnected(true);
+	    disk.setConnectable(connectInfo);
+	    
+	    return disk;
 	}
 	
 	public static VirtualDevice prepareDiskDevice(VirtualMachineMO vmMo, int controllerKey, 
@@ -339,23 +339,23 @@ public class VmwareHelper {
 	    
 	    return disk;
 	}
-	
-	private static void setParentBackingInfo(VirtualDiskFlatVer2BackingInfo backingInfo, 
-		ManagedObjectReference morDs, String[] parentDatastorePathList) {
-		
-		VirtualDiskFlatVer2BackingInfo parentBacking = new VirtualDiskFlatVer2BackingInfo();
-		parentBacking.setDatastore(morDs);
-		parentBacking.setDiskMode(VirtualDiskMode.persistent.toString());
-		
-		if(parentDatastorePathList.length > 1) {
-			String[] nextDatastorePathList = new String[parentDatastorePathList.length -1];
-			for(int i = 0; i < parentDatastorePathList.length -1; i++)
-				nextDatastorePathList[i] = parentDatastorePathList[i + 1];
-			setParentBackingInfo(parentBacking, morDs, nextDatastorePathList);
-		}
-		parentBacking.setFileName(parentDatastorePathList[0]);
-		
-		backingInfo.setParent(parentBacking);
+	
+	private static void setParentBackingInfo(VirtualDiskFlatVer2BackingInfo backingInfo, 
+		ManagedObjectReference morDs, String[] parentDatastorePathList) {
+		
+		VirtualDiskFlatVer2BackingInfo parentBacking = new VirtualDiskFlatVer2BackingInfo();
+		parentBacking.setDatastore(morDs);
+		parentBacking.setDiskMode(VirtualDiskMode.persistent.toString());
+		
+		if(parentDatastorePathList.length > 1) {
+			String[] nextDatastorePathList = new String[parentDatastorePathList.length -1];
+			for(int i = 0; i < parentDatastorePathList.length -1; i++)
+				nextDatastorePathList[i] = parentDatastorePathList[i + 1];
+			setParentBackingInfo(parentBacking, morDs, nextDatastorePathList);
+		}
+		parentBacking.setFileName(parentDatastorePathList[0]);
+		
+		backingInfo.setParent(parentBacking);
 	}
 	
 	private static void setParentBackingInfo(VirtualDiskFlatVer2BackingInfo backingInfo, 
@@ -375,14 +375,14 @@ public class VmwareHelper {
 		
 		backingInfo.setParent(parentBacking);
 	}
-	
-	public static Pair<VirtualDevice, Boolean> prepareIsoDevice(VirtualMachineMO vmMo, String isoDatastorePath, ManagedObjectReference morDs,
-		boolean connect, boolean connectAtBoot, int deviceNumber, int contextNumber) throws Exception {
-		
-		boolean newCdRom = false;
-		VirtualCdrom cdRom = (VirtualCdrom )vmMo.getIsoDevice();
-		if(cdRom == null) {
-			newCdRom = true;
+	
+	public static Pair<VirtualDevice, Boolean> prepareIsoDevice(VirtualMachineMO vmMo, String isoDatastorePath, ManagedObjectReference morDs,
+		boolean connect, boolean connectAtBoot, int deviceNumber, int contextNumber) throws Exception {
+		
+		boolean newCdRom = false;
+		VirtualCdrom cdRom = (VirtualCdrom )vmMo.getIsoDevice();
+		if(cdRom == null) {
+			newCdRom = true;
 			cdRom = new VirtualCdrom();
 			
 			assert(vmMo.getIDEDeviceControllerKey() >= 0);