You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ed...@apache.org on 2013/01/15 03:04:54 UTC

[22/44] Revert "Merge remote-tracking branch 'origin/javelin' into javelin"

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index b52e2d8..af5b2a4 100755
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -25,9 +25,7 @@ import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.lang.reflect.InvocationTargetException;
 import java.net.InetAddress;
-import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLConnection;
@@ -44,15 +42,14 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
-import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.ejb.Local;
 import javax.naming.ConfigurationException;
@@ -167,7 +164,13 @@ import com.cloud.agent.api.to.NicTO;
 import com.cloud.agent.api.to.StorageFilerTO;
 import com.cloud.agent.api.to.VirtualMachineTO;
 import com.cloud.agent.api.to.VolumeTO;
+import com.cloud.agent.resource.virtualnetwork.VirtualRoutingResource;
+import com.cloud.dc.Vlan;
+import com.cloud.exception.InternalErrorException;
+import com.cloud.host.Host.Type;
+import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.hypervisor.kvm.resource.KVMHABase.NfsStoragePool;
+import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.ClockDef;
 import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.ConsoleDef;
 import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.CpuTuneDef;
 import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.DevicesDef;
@@ -182,16 +185,10 @@ import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef;
 import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef.hostNicType;
 import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.SerialDef;
 import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.TermPolicy;
-import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.ClockDef;
-import com.cloud.agent.resource.virtualnetwork.VirtualRoutingResource;
 import com.cloud.hypervisor.kvm.storage.KVMPhysicalDisk;
 import com.cloud.hypervisor.kvm.storage.KVMPhysicalDisk.PhysicalDiskFormat;
 import com.cloud.hypervisor.kvm.storage.KVMStoragePool;
 import com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager;
-import com.cloud.dc.Vlan;
-import com.cloud.exception.InternalErrorException;
-import com.cloud.host.Host.Type;
-import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.network.Networks.BroadcastDomainType;
 import com.cloud.network.Networks.IsolationType;
 import com.cloud.network.Networks.RouterPrivateIpStrategy;
@@ -199,6 +196,7 @@ import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.PhysicalNetworkSetupInfo;
 import com.cloud.resource.ServerResource;
 import com.cloud.resource.ServerResourceBase;
+import com.cloud.storage.JavaStorageLayer;
 import com.cloud.storage.Storage;
 import com.cloud.storage.Storage.ImageFormat;
 import com.cloud.storage.Storage.StoragePoolType;
@@ -212,7 +210,6 @@ import com.cloud.storage.template.TemplateLocation;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.PropertiesUtil;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.net.NetUtils;
 import com.cloud.utils.script.OutputInterpreter;
@@ -246,7 +243,7 @@ import com.cloud.vm.VirtualMachineName;
  **/
 @Local(value = { ServerResource.class })
 public class LibvirtComputingResource extends ServerResourceBase implements
-        ServerResource {
+ServerResource {
     private static final Logger s_logger = Logger
             .getLogger(LibvirtComputingResource.class);
 
@@ -329,8 +326,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
     private boolean _can_bridge_firewall;
     protected String _localStoragePath;
     protected String _localStorageUUID;
-    private Map <String, String> _pifs = new HashMap<String, String>();
-    private Map<String, Map<String, String>> hostNetInfo = new HashMap<String, Map<String, String>>();
+    private final Map <String, String> _pifs = new HashMap<String, String>();
+    private final Map<String, Map<String, String>> hostNetInfo = new HashMap<String, Map<String, String>>();
     private final Map<String, vmStats> _vmStats = new ConcurrentHashMap<String, vmStats>();
 
     protected boolean _disconnected = true;
@@ -375,7 +372,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         tokens[3] = Integer.toString(lastbyte);
         StringBuilder end = new StringBuilder(15);
         end.append(tokens[0]).append(".").append(tokens[1]).append(".")
-                .append(tokens[2]).append(".").append(tokens[3]);
+        .append(tokens[2]).append(".").append(tokens[3]);
         return end.toString();
     }
 
@@ -444,16 +441,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             return false;
         }
 
-        try {
-            Class<?> clazz = Class
-                    .forName("com.cloud.storage.JavaStorageLayer");
-            _storage = (StorageLayer) ComponentLocator.inject(clazz);
-            _storage.configure("StorageLayer", params);
-        } catch (ClassNotFoundException e) {
-            throw new ConfigurationException("Unable to find class "
-                    + "com.cloud.storage.JavaStorageLayer");
-        }
-
+        _storage = new JavaStorageLayer();
+        _storage.configure("StorageLayer", params);
 
         String domrScriptsDir = (String) params.get("domr.scripts.dir");
         if (domrScriptsDir == null) {
@@ -685,7 +674,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             String[] isoPaths = { "/usr/lib64/cloud/agent/vms/systemvm.iso",
                     "/usr/lib/cloud/agent/vms/systemvm.iso",
                     "/usr/lib64/cloud/common/vms/systemvm.iso",
-                    "/usr/lib/cloud/common/vms/systemvm.iso" };
+            "/usr/lib/cloud/common/vms/systemvm.iso" };
             for (String isoPath : isoPaths) {
                 if (_storage.exists(isoPath)) {
                     _sysvmISOPath = isoPath;
@@ -723,7 +712,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         if (_mountPoint == null) {
             _mountPoint = "/mnt";
         }
-        
+
         value = (String) params.get("vm.migrate.speed");
         _migrateSpeed = NumbersUtil.parseInt(value, -1);
         if (_migrateSpeed == -1) {
@@ -736,7 +725,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                     try {
                         _migrateSpeed = Integer.parseInt(tokens[0]);
                     } catch (Exception e) {
-                        
+
                     }
                     s_logger.debug("device " + _pifs.get("public") + " has speed: " + String.valueOf(_migrateSpeed));
                 }
@@ -750,28 +739,28 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         bridges.put("private", _privBridgeName);
         bridges.put("guest", _guestBridgeName);
 
-        params.put("libvirt.host.bridges", (Object) bridges);
-        params.put("libvirt.host.pifs", (Object) _pifs);
+        params.put("libvirt.host.bridges", bridges);
+        params.put("libvirt.host.pifs", _pifs);
 
         // Load the vif driver
         String vifDriverName = (String) params.get("libvirt.vif.driver");
         if (vifDriverName == null) {
-        	s_logger.info("No libvirt.vif.driver specififed. Defaults to BridgeVifDriver.");
-        	vifDriverName = "com.cloud.hypervisor.kvm.resource.BridgeVifDriver";
+            s_logger.info("No libvirt.vif.driver specififed. Defaults to BridgeVifDriver.");
+            vifDriverName = "com.cloud.hypervisor.kvm.resource.BridgeVifDriver";
         }
 
-        params.put("libvirt.computing.resource", (Object) this);
+        params.put("libvirt.computing.resource", this);
 
         try {
-        	Class<?> clazz = Class.forName(vifDriverName);
-        	_vifDriver = (VifDriver) clazz.newInstance();
-        	_vifDriver.configure(params);
+            Class<?> clazz = Class.forName(vifDriverName);
+            _vifDriver = (VifDriver) clazz.newInstance();
+            _vifDriver.configure(params);
         } catch (ClassNotFoundException e) {
-        	throw new ConfigurationException("Unable to find class for libvirt.vif.driver " + e);
+            throw new ConfigurationException("Unable to find class for libvirt.vif.driver " + e);
         } catch (InstantiationException e) {
-        	throw new ConfigurationException("Unable to instantiate class for libvirt.vif.driver " + e);
+            throw new ConfigurationException("Unable to instantiate class for libvirt.vif.driver " + e);
         } catch (Exception e) {
-        	throw new ConfigurationException("Failed to initialize libvirt.vif.driver " + e);
+            throw new ConfigurationException("Failed to initialize libvirt.vif.driver " + e);
         }
 
 
@@ -802,7 +791,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         String vlan = Script.runSimpleBashScript("ls /proc/net/vlan/" + pif);
 
         if (vlan != null && !vlan.isEmpty()) {
-                pif = Script.runSimpleBashScript("grep ^Device\\: /proc/net/vlan/" + pif + " | awk {'print $2'}");
+            pif = Script.runSimpleBashScript("grep ^Device\\: /proc/net/vlan/" + pif + " | awk {'print $2'}");
         }
 
         return pif;
@@ -1105,8 +1094,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         KVMStoragePool secondaryStoragePool = null;
         try {
             KVMStoragePool primaryPool = _storagePoolMgr.getStoragePool(
-                                             pool.getType(),
-                                             pool.getUuid());
+                    pool.getType(),
+                    pool.getUuid());
             String volumeName = UUID.randomUUID().toString();
 
             if (copyToSecondary) {
@@ -1116,20 +1105,20 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                 String volumeDestPath = "/volumes/" + cmd.getVolumeId()
                         + File.separator;
                 secondaryStoragePool = _storagePoolMgr.getStoragePoolByURI(
-                                                           secondaryStorageUrl);
+                        secondaryStorageUrl);
                 secondaryStoragePool.createFolder(volumeDestPath);
                 secondaryStoragePool.delete();
                 secondaryStoragePool = _storagePoolMgr.getStoragePoolByURI(
-                                                           secondaryStorageUrl
-                                                           + volumeDestPath);
+                        secondaryStorageUrl
+                        + volumeDestPath);
                 _storagePoolMgr.copyPhysicalDisk(volume,
                         destVolumeName,secondaryStoragePool);
                 return new CopyVolumeAnswer(cmd, true, null, null, volumeName);
             } else {
                 volumePath = "/volumes/" + cmd.getVolumeId() + File.separator;
                 secondaryStoragePool = _storagePoolMgr.getStoragePoolByURI(
-                                                           secondaryStorageUrl
-                                                           + volumePath);
+                        secondaryStorageUrl
+                        + volumePath);
                 KVMPhysicalDisk volume = secondaryStoragePool
                         .getPhysicalDisk(cmd.getVolumePath() + ".qcow2");
                 _storagePoolMgr.copyPhysicalDisk(volume, volumeName,
@@ -1148,7 +1137,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
     protected Answer execute(DeleteStoragePoolCommand cmd) {
         try {
             _storagePoolMgr.deleteStoragePool(cmd.getPool().getType(),
-                                              cmd.getPool().getUuid());
+                    cmd.getPool().getUuid());
             return new Answer(cmd);
         } catch (CloudRuntimeException e) {
             return new Answer(cmd, false, e.toString());
@@ -1190,7 +1179,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         long disksize;
         try {
             primaryPool = _storagePoolMgr.getStoragePool(pool.getType(),
-                                                         pool.getUuid());
+                    pool.getUuid());
             disksize = dskch.getSize();
 
             if (cmd.getTemplateUrl() != null) {
@@ -1199,7 +1188,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                 } else {
                     BaseVol = primaryPool.getPhysicalDisk(cmd.getTemplateUrl());
                     vol = _storagePoolMgr.createDiskFromTemplate(BaseVol, UUID
-                        .randomUUID().toString(), primaryPool);
+                            .randomUUID().toString(), primaryPool);
                 }
                 if (vol == null) {
                     return new Answer(cmd, false,
@@ -1273,8 +1262,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
 
         try {
             KVMStoragePool pool = _storagePoolMgr.getStoragePool(
-                                      vol.getPoolType(),
-                                      vol.getPoolUuid());
+                    vol.getPoolType(),
+                    vol.getPoolUuid());
             pool.deletePhysicalDisk(vol.getPath());
             String vmName = cmd.getVmName();
             String poolPath = pool.getLocalPath();
@@ -1289,7 +1278,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                         _storagePoolMgr.deleteVbdByPath(vol.getPoolType(),patchVbd.getAbsolutePath());
                     } catch(CloudRuntimeException e) {
                         s_logger.warn("unable to destroy patch disk '" + patchVbd.getAbsolutePath() +
-                                      "' while removing root disk for " + vmName + " : " + e);
+                                "' while removing root disk for " + vmName + " : " + e);
                     }
                 } else {
                     s_logger.debug("file '" +patchVbd.getAbsolutePath()+ "' not found");
@@ -1425,7 +1414,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             String dev = "eth" + nic.getDeviceId();
             String netmask = NetUtils.getSubNet(routerGIP, nic.getNetmask());
             String result = _virtRouterResource.assignGuestNetwork(dev, routerIP,
-                           routerGIP, gateway, cidr, netmask, dns, domainName );
+                    routerGIP, gateway, cidr, netmask, dns, domainName );
 
             if (result != null) {
                 return new SetupGuestNetworkAnswer(cmd, false, "Creating guest network failed due to " + result);
@@ -1461,7 +1450,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
 
             String rule =  sb.toString();
             String result = _virtRouterResource.assignNetworkACL(routerIp,
-                           dev, nic.getIp(), netmask, rule);
+                    dev, nic.getIp(), netmask, rule);
 
             if (result != null) {
                 for (int i=0; i < results.length; i++) {
@@ -1492,21 +1481,21 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             List<InterfaceDef> pluggedNics = getInterfaces(conn, routerName);
 
             for (InterfaceDef pluggedNic : pluggedNics) {
-            	String pluggedVlanBr = pluggedNic.getBrName();
-            	String pluggedVlanId = getVlanIdFromBridge(pluggedVlanBr);
-            	if (pubVlan.equalsIgnoreCase(Vlan.UNTAGGED) 
-            			&& pluggedVlanBr.equalsIgnoreCase(_publicBridgeName)) {
-            		break;
-            	} else if (pluggedVlanBr.equalsIgnoreCase(_linkLocalBridgeName)){
-            		/*skip over, no physical bridge device exists*/
-            	} else if (pluggedVlanId == null) {
-            		/*this should only be true in the case of link local bridge*/
-            		return new SetSourceNatAnswer(cmd, false, "unable to find the vlan id for bridge "+pluggedVlanBr+
-            				" when attempting to set up" + pubVlan + " on router " + routerName);
-            	} else if (pluggedVlanId.equals(pubVlan)) {
-            		break;
-            	}
-            	devNum++;
+                String pluggedVlanBr = pluggedNic.getBrName();
+                String pluggedVlanId = getVlanIdFromBridge(pluggedVlanBr);
+                if (pubVlan.equalsIgnoreCase(Vlan.UNTAGGED) 
+                        && pluggedVlanBr.equalsIgnoreCase(_publicBridgeName)) {
+                    break;
+                } else if (pluggedVlanBr.equalsIgnoreCase(_linkLocalBridgeName)){
+                    /*skip over, no physical bridge device exists*/
+                } else if (pluggedVlanId == null) {
+                    /*this should only be true in the case of link local bridge*/
+                    return new SetSourceNatAnswer(cmd, false, "unable to find the vlan id for bridge "+pluggedVlanBr+
+                            " when attempting to set up" + pubVlan + " on router " + routerName);
+                } else if (pluggedVlanId.equals(pubVlan)) {
+                    break;
+                }
+                devNum++;
             }
 
             String dev = "eth" + devNum;
@@ -1544,8 +1533,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                     vlanToNicNum.put("LinkLocal",devNum); 
                 }
                 else if (pluggedVlan.equalsIgnoreCase(_publicBridgeName)
-                         || pluggedVlan.equalsIgnoreCase(_privBridgeName)
-                         || pluggedVlan.equalsIgnoreCase(_guestBridgeName)) {
+                        || pluggedVlan.equalsIgnoreCase(_privBridgeName)
+                        || pluggedVlan.equalsIgnoreCase(_guestBridgeName)) {
                     vlanToNicNum.put(Vlan.UNTAGGED,devNum);
                 }
                 else {
@@ -1560,7 +1549,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                 String netmask = Long.toString(NetUtils.getCidrSize(ip.getVlanNetmask()));
                 String subnet = NetUtils.getSubNet(ip.getPublicIp(), ip.getVlanNetmask());
                 _virtRouterResource.assignVpcIpToRouter(routerIP, ip.isAdd(), ip.getPublicIp(),
-                               nicName, ip.getVlanGateway(), netmask, subnet);
+                        nicName, ip.getVlanGateway(), netmask, subnet);
                 results[i++] = ip.getPublicIp() + " - success";
             }
 
@@ -1587,14 +1576,14 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                 if (nic.getBrName().equalsIgnoreCase(_linkLocalBridgeName)) {
                     vlanAllocatedToVM.put("LinkLocal", nicPos);
                 } else {
-                       if (nic.getBrName().equalsIgnoreCase(_publicBridgeName) 
-                               || nic.getBrName().equalsIgnoreCase(_privBridgeName) 
-                               || nic.getBrName().equalsIgnoreCase(_guestBridgeName)) {
-                           vlanAllocatedToVM.put(Vlan.UNTAGGED, nicPos);
-                       } else {
-                           String vlanId = getVlanIdFromBridge(nic.getBrName());
-                           vlanAllocatedToVM.put(vlanId, nicPos);
-                       }
+                    if (nic.getBrName().equalsIgnoreCase(_publicBridgeName) 
+                            || nic.getBrName().equalsIgnoreCase(_privBridgeName) 
+                            || nic.getBrName().equalsIgnoreCase(_guestBridgeName)) {
+                        vlanAllocatedToVM.put(Vlan.UNTAGGED, nicPos);
+                    } else {
+                        String vlanId = getVlanIdFromBridge(nic.getBrName());
+                        vlanAllocatedToVM.put(vlanId, nicPos);
+                    }
                 }
                 nicPos++;
             }
@@ -1649,13 +1638,13 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             }
 
             KVMStoragePool primaryPool = _storagePoolMgr.getStoragePool(
-                                             cmd.getPool().getType(),
-                                             cmd.getPool().getUuid());
+                    cmd.getPool().getType(),
+                    cmd.getPool().getUuid());
 
             if (primaryPool.getType() == StoragePoolType.RBD) {
                 s_logger.debug("Snapshots are not supported on RBD volumes");
                 return new ManageSnapshotAnswer(cmd, false,
-                    "Snapshots are not supported on RBD volumes");
+                        "Snapshots are not supported on RBD volumes");
             }
 
             KVMPhysicalDisk disk = primaryPool.getPhysicalDisk(cmd
@@ -1728,7 +1717,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             Connect conn = LibvirtConnection.getConnection();
 
             secondaryStoragePool = _storagePoolMgr.getStoragePoolByURI(
-                                                   secondaryStoragePoolUrl);
+                    secondaryStoragePoolUrl);
 
             String ssPmountPath = secondaryStoragePool.getLocalPath();
             snapshotRelPath = File.separator + "snapshots" + File.separator
@@ -1739,8 +1728,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                     + File.separator + dcId + File.separator + accountId
                     + File.separator + volumeId;
             KVMStoragePool primaryPool = _storagePoolMgr.getStoragePool(
-                                             cmd.getPool().getType(),
-                                             cmd.getPrimaryStoragePoolNameLabel());
+                    cmd.getPool().getType(),
+                    cmd.getPrimaryStoragePoolNameLabel());
             KVMPhysicalDisk snapshotDisk = primaryPool.getPhysicalDisk(cmd
                     .getVolumePath());
             Script command = new Script(_manageSnapshotPath, _cmdsTimeout,
@@ -1768,8 +1757,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             }
 
             KVMStoragePool primaryStorage = _storagePoolMgr.getStoragePool(
-                                                cmd.getPool().getType(),
-                                                cmd.getPool().getUuid());
+                    cmd.getPool().getType(),
+                    cmd.getPool().getUuid());
             if (state == DomainInfo.DomainState.VIR_DOMAIN_RUNNING
                     && !primaryStorage.isExternalSnapshot()) {
                 String vmUuid = vm.getUUIDString();
@@ -1853,7 +1842,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         KVMStoragePool secondaryStoragePool = null;
         try {
             secondaryStoragePool = _storagePoolMgr.getStoragePoolByURI(cmd
-                                       .getSecondaryStorageUrl());
+                    .getSecondaryStorageUrl());
 
             String ssPmountPath = secondaryStoragePool.getLocalPath();
             String snapshotDestPath = ssPmountPath + File.separator
@@ -1884,15 +1873,15 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             int index = snapshotPath.lastIndexOf("/");
             snapshotPath = snapshotPath.substring(0, index);
             KVMStoragePool secondaryPool = _storagePoolMgr.getStoragePoolByURI(
-                                               cmd.getSecondaryStorageUrl()
-                                               + snapshotPath);
+                    cmd.getSecondaryStorageUrl()
+                    + snapshotPath);
             KVMPhysicalDisk snapshot = secondaryPool.getPhysicalDisk(cmd
                     .getSnapshotName());
 
             String primaryUuid = cmd.getPrimaryStoragePoolNameLabel();
             KVMStoragePool primaryPool = _storagePoolMgr
                     .getStoragePool(cmd.getPool().getType(),
-                    primaryUuid);
+                            primaryUuid);
             String volUuid = UUID.randomUUID().toString();
             KVMPhysicalDisk disk = _storagePoolMgr.copyPhysicalDisk(snapshot,
                     volUuid, primaryPool);
@@ -1928,7 +1917,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                     .getSnapshotName());
 
             secondaryPool = _storagePoolMgr.getStoragePoolByURI(
-                                            cmd.getSecondaryStorageUrl());
+                    cmd.getSecondaryStorageUrl());
 
             String templatePath = secondaryPool.getLocalPath() + File.separator
                     + templateInstallFolder;
@@ -1978,8 +1967,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
     protected GetStorageStatsAnswer execute(final GetStorageStatsCommand cmd) {
         try {
             KVMStoragePool sp = _storagePoolMgr.getStoragePool(
-                                    cmd.getPooltype(),
-                                    cmd.getStorageId());
+                    cmd.getPooltype(),
+                    cmd.getStorageId());
             return new GetStorageStatsAnswer(cmd, sp.getCapacity(),
                     sp.getUsed());
         } catch (CloudRuntimeException e) {
@@ -1999,11 +1988,11 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             String templateInstallFolder = "/template/tmpl/" + templateFolder;
 
             secondaryStorage = _storagePoolMgr.getStoragePoolByURI(
-                                               secondaryStorageURL);
+                    secondaryStorageURL);
 
             KVMStoragePool primary = _storagePoolMgr.getStoragePool(
-                                         cmd.getPool().getType(),
-                                         cmd.getPrimaryStoragePoolNameLabel());
+                    cmd.getPool().getType(),
+                    cmd.getPrimaryStoragePoolNameLabel());
             KVMPhysicalDisk disk = primary.getPhysicalDisk(cmd.getVolumePath());
             String tmpltPath = secondaryStorage.getLocalPath() + File.separator
                     + templateInstallFolder;
@@ -2024,12 +2013,12 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             } else {
                 s_logger.debug("Converting RBD disk " + disk.getPath() + " into template " + cmd.getUniqueName());
                 Script.runSimpleBashScript("qemu-img convert"
-                                + " -f raw -O qcow2 "
-                                + KVMPhysicalDisk.RBDStringBuilder(primary.getSourceHost(),
-                                                primary.getSourcePort(),
-                                                primary.getAuthUserName(),
-                                                primary.getAuthSecret(),
-                                                disk.getPath())
+                        + " -f raw -O qcow2 "
+                        + KVMPhysicalDisk.RBDStringBuilder(primary.getSourceHost(),
+                                primary.getSourcePort(),
+                                primary.getAuthUserName(),
+                                primary.getAuthSecret(),
+                                disk.getPath())
                                 + " " + tmpltPath + "/" + cmd.getUniqueName() + ".qcow2");
                 File templateProp = new File(tmpltPath + "/template.properties");
                 if (!templateProp.exists()) {
@@ -2126,8 +2115,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
 
             /* Copy volume to primary storage */
             KVMStoragePool primaryPool = _storagePoolMgr.getStoragePool(
-                                             cmd.getPool().getType(),
-                                             cmd.getPoolUuid());
+                    cmd.getPool().getType(),
+                    cmd.getPoolUuid());
 
             KVMPhysicalDisk primaryVol = _storagePoolMgr.copyPhysicalDisk(
                     tmplVol, UUID.randomUUID().toString(), primaryPool);
@@ -2233,7 +2222,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
 
         final StringBuffer sb = new StringBuffer();
         sb.append("http://").append(proxyManagementIp).append(":" + cmdPort)
-                .append("/cmd/getstatus");
+        .append("/cmd/getstatus");
 
         boolean success = true;
         try {
@@ -2291,8 +2280,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         try {
             Connect conn = LibvirtConnection.getConnection();
             KVMStoragePool primary = _storagePoolMgr.getStoragePool(
-                                         cmd.getPooltype(),
-                                         cmd.getPoolUuid());
+                    cmd.getPooltype(),
+                    cmd.getPoolUuid());
             KVMPhysicalDisk disk = primary.getPhysicalDisk(cmd.getVolumePath());
             attachOrDetachDisk(conn, cmd.getAttach(), cmd.getVmName(), disk,
                     cmd.getDeviceId().intValue());
@@ -2364,10 +2353,10 @@ public class LibvirtComputingResource extends ServerResourceBase implements
     private Answer execute(PingTestCommand cmd) {
         String result = null;
         final String computingHostIp = cmd.getComputingHostIp(); // TODO, split
-                                                                    // the
-                                                                    // command
-                                                                    // into 2
-                                                                    // types
+        // the
+        // command
+        // into 2
+        // types
 
         if (computingHostIp != null) {
             result = doPingTest(computingHostIp);
@@ -2507,7 +2496,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         final Script cpuScript = new Script("/bin/bash", s_logger);
         cpuScript.add("-c");
         cpuScript
-                .add("idle=$(top -b -n 1|grep Cpu\\(s\\):|cut -d% -f4|cut -d, -f2);echo $idle");
+        .add("idle=$(top -b -n 1|grep Cpu\\(s\\):|cut -d% -f4|cut -d, -f2);echo $idle");
 
         final OutputInterpreter.OneLineParser parser = new OutputInterpreter.OneLineParser();
         String result = cpuScript.execute(parser);
@@ -2521,7 +2510,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         final Script memScript = new Script("/bin/bash", s_logger);
         memScript.add("-c");
         memScript
-                .add("freeMem=$(free|grep cache:|awk '{print $4}');echo $freeMem");
+        .add("freeMem=$(free|grep cache:|awk '{print $4}');echo $freeMem");
         final OutputInterpreter.OneLineParser Memparser = new OutputInterpreter.OneLineParser();
         result = memScript.execute(Memparser);
         if (result != null) {
@@ -2721,7 +2710,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             script.add("-m","700");
             script.add(_SSHKEYSPATH);
             script.execute();
-            
+
             if(!sshKeysDir.exists()) {
                 s_logger.debug("failed to create directory " + _SSHKEYSPATH);
             }
@@ -2903,7 +2892,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             for (NicTO nic : nics) {
                 if (nic.getIsolationUri() != null
                         && nic.getIsolationUri().getScheme()
-                                .equalsIgnoreCase(IsolationType.Ec2.toString())) {
+                        .equalsIgnoreCase(IsolationType.Ec2.toString())) {
                     if (vmSpec.getType() != VirtualMachine.Type.User) {
                         default_network_rules_for_systemvm(conn, vmName);
                         break;
@@ -2940,7 +2929,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             String path = isoPath.substring(0, index);
             String name = isoPath.substring(index + 1);
             KVMStoragePool secondaryPool = _storagePoolMgr.getStoragePoolByURI(
-                                                                          path);
+                    path);
             KVMPhysicalDisk isoVol = secondaryPool.getPhysicalDisk(name);
             return isoVol.getPath();
         } else {
@@ -2958,7 +2947,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                 return arg0.getDeviceId() > arg1.getDeviceId() ? 1 : -1;
             }
         });
-        
+
         for (VolumeTO volume : disks) {
             KVMPhysicalDisk physicalDisk = null;
             KVMStoragePool pool = null;
@@ -2968,12 +2957,12 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                 String volDir = volPath.substring(0, index);
                 String volName = volPath.substring(index + 1);
                 KVMStoragePool secondaryStorage = _storagePoolMgr.
-                                                  getStoragePoolByURI(volDir);
+                        getStoragePoolByURI(volDir);
                 physicalDisk = secondaryStorage.getPhysicalDisk(volName);
             } else if (volume.getType() != Volume.Type.ISO) {
                 pool = _storagePoolMgr.getStoragePool(
-                           volume.getPoolType(),
-                           volume.getPoolUuid());
+                        volume.getPoolType(),
+                        volume.getPoolUuid());
                 physicalDisk = pool.getPhysicalDisk(volume.getPath());
             }
 
@@ -2999,23 +2988,23 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                             For RBD pools we use the secret mechanism in libvirt.
                             We store the secret under the UUID of the pool, that's why
                             we pass the pool's UUID as the authSecret
-                    */
+                     */
                     disk.defNetworkBasedDisk(physicalDisk.getPath().replace("rbd:", ""), pool.getSourceHost(), pool.getSourcePort(),
-                                             pool.getAuthUserName(), pool.getUuid(),
-                                             devId, diskBusType, diskProtocol.RBD);
+                            pool.getAuthUserName(), pool.getUuid(),
+                            devId, diskBusType, diskProtocol.RBD);
                 } else if (pool.getType() == StoragePoolType.CLVM) {
                     disk.defBlockBasedDisk(physicalDisk.getPath(), devId,
-                    diskBusType);
+                            diskBusType);
                 } else {
                     if (volume.getType() == Volume.Type.DATADISK) {
-                         disk.defFileBasedDisk(physicalDisk.getPath(), devId,
-                         DiskDef.diskBus.VIRTIO,
-                         DiskDef.diskFmtType.QCOW2);
-                } else {
-                    disk.defFileBasedDisk(physicalDisk.getPath(), devId, diskBusType, DiskDef.diskFmtType.QCOW2);
-                }
+                        disk.defFileBasedDisk(physicalDisk.getPath(), devId,
+                                DiskDef.diskBus.VIRTIO,
+                                DiskDef.diskFmtType.QCOW2);
+                    } else {
+                        disk.defFileBasedDisk(physicalDisk.getPath(), devId, diskBusType, DiskDef.diskFmtType.QCOW2);
+                    }
 
-            }
+                }
 
             }
 
@@ -3052,8 +3041,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         VolumeTO rootVol = getVolume(vmSpec, Volume.Type.ROOT);
         String patchName = vmName + "-patchdisk";
         KVMStoragePool pool = _storagePoolMgr.getStoragePool(
-                                  rootVol.getPoolType(),
-                                  rootVol.getPoolUuid());
+                rootVol.getPoolType(),
+                rootVol.getPoolUuid());
         String patchDiskPath = pool.getLocalPath() + "/" + patchName;
 
         List<KVMPhysicalDisk> phyDisks = pool.listPhysicalDisks();
@@ -3069,7 +3058,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         if (!foundDisk) {
             s_logger.debug("generating new patch disk for " + vmName + " since none was found");
             KVMPhysicalDisk disk = pool.createPhysicalDisk(patchName, KVMPhysicalDisk.PhysicalDiskFormat.RAW,
-                10L * 1024 * 1024);
+                    10L * 1024 * 1024);
         } else {
             s_logger.debug("found existing patch disk at " + patchDiskPath + " using it for " + vmName);
         }
@@ -3091,9 +3080,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements
             patchDisk.defBlockBasedDisk(patchDiskPath, 1, rootDisk.getBusType());
         } else {
             patchDisk.defFileBasedDisk(patchDiskPath, 1, rootDisk.getBusType(),
-            DiskDef.diskFmtType.RAW);
+                    DiskDef.diskFmtType.RAW);
         }
- 
+
         disks.add(patchDisk);
 
         String bootArgs = vmSpec.getBootArgs();
@@ -3162,14 +3151,14 @@ public class LibvirtComputingResource extends ServerResourceBase implements
 
     protected synchronized String attachOrDetachISO(Connect conn,
             String vmName, String isoPath, boolean isAttach)
-            throws LibvirtException, URISyntaxException, InternalErrorException {
+                    throws LibvirtException, URISyntaxException, InternalErrorException {
         String isoXml = null;
         if (isoPath != null && isAttach) {
             int index = isoPath.lastIndexOf("/");
             String path = isoPath.substring(0, index);
             String name = isoPath.substring(index + 1);
             KVMStoragePool secondaryPool = _storagePoolMgr.getStoragePoolByURI(
-                                                           path);
+                    path);
             KVMPhysicalDisk isoVol = secondaryPool.getPhysicalDisk(name);
             isoPath = isoVol.getPath();
 
@@ -3691,9 +3680,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements
         info.add(ram);
         info.add(cap);
         long dom0ram = Math.min(ram / 10, 768 * 1024 * 1024L);// save a maximum
-                                                                // of 10% of
-                                                                // system ram or
-                                                                // 768M
+        // of 10% of
+        // system ram or
+        // 768M
         dom0ram = Math.max(dom0ram, _dom0MinMem);
         info.add(dom0ram);
         s_logger.debug("cpus=" + cpus + ", speed=" + speed + ", ram=" + ram
@@ -4162,7 +4151,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements
                 NodeInfo node = conn.nodeInfo();
                 utilization = utilization / node.cpus;
                 if(utilization > 0){
-                	stats.setCPUUtilization(utilization * 100);
+                    stats.setCPUUtilization(utilization * 100);
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
index f6bc8fc..0a9f93f 100755
--- a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
@@ -29,6 +29,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.regex.PatternSyntaxException;
 
 import javax.ejb.Local;
+import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
 import org.apache.log4j.Logger;
@@ -43,9 +44,6 @@ import com.cloud.agent.api.GetHostStatsCommand;
 import com.cloud.agent.api.HostStatsEntry;
 import com.cloud.agent.api.MaintainAnswer;
 import com.cloud.agent.api.PingTestCommand;
-import com.cloud.agent.api.PrepareForMigrationAnswer;
-import com.cloud.agent.api.PrepareForMigrationCommand;
-import com.cloud.agent.api.to.VirtualMachineTO;
 import com.cloud.dc.dao.HostPodDao;
 import com.cloud.host.Host;
 import com.cloud.resource.AgentResourceBase;
@@ -58,7 +56,6 @@ import com.cloud.simulator.MockVMVO;
 import com.cloud.simulator.dao.MockHostDao;
 import com.cloud.simulator.dao.MockVMDao;
 import com.cloud.utils.Pair;
-import com.cloud.utils.component.Inject;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.Transaction;
@@ -67,393 +64,393 @@ import com.cloud.utils.net.NetUtils;
 
 @Local(value = { MockAgentManager.class })
 public class MockAgentManagerImpl implements MockAgentManager {
-	private static final Logger s_logger = Logger.getLogger(MockAgentManagerImpl.class);
-	@Inject
-	HostPodDao _podDao = null;
-	@Inject
-	MockHostDao _mockHostDao = null;
-	@Inject
-	MockVMDao _mockVmDao = null;
-	@Inject
-	SimulatorManager _simulatorMgr = null;
-	@Inject
-	AgentManager _agentMgr = null;
-	@Inject
-	MockStorageManager _storageMgr = null;
-	@Inject
-	ResourceManager _resourceMgr;
-	private SecureRandom random;
-	private Map<String, AgentResourceBase> _resources = new ConcurrentHashMap<String, AgentResourceBase>();
-	private ThreadPoolExecutor _executor;
-
-	private Pair<String, Long> getPodCidr(long podId, long dcId) {
-		try {
-
-			HashMap<Long, List<Object>> podMap = _podDao.getCurrentPodCidrSubnets(dcId, 0);
-			List<Object> cidrPair = podMap.get(podId);
-			String cidrAddress = (String) cidrPair.get(0);
-			Long cidrSize = (Long) cidrPair.get(1);
-			return new Pair<String, Long>(cidrAddress, cidrSize);
-		} catch (PatternSyntaxException e) {
-			s_logger.error("Exception while splitting pod cidr");
-			return null;
-		} catch (IndexOutOfBoundsException e) {
-			s_logger.error("Invalid pod cidr. Please check");
-			return null;
-		}
-	}
-
-	private String getIpAddress(long instanceId, long dcId, long podId) {
-		Pair<String, Long> cidr = this.getPodCidr(podId, dcId);
-		return NetUtils.long2Ip(NetUtils.ip2Long(cidr.first()) + instanceId);
-	}
-
-	private String getMacAddress(long dcId, long podId, long clusterId, int instanceId) {
-		return NetUtils.long2Mac((dcId << 40 + podId << 32 + clusterId << 24 + instanceId));
-	}
-
-	public synchronized int getNextAgentId(long cidrSize) {
-		return random.nextInt((int) cidrSize);
-	}
-
-	@Override
-	@DB
-	public Map<AgentResourceBase, Map<String, String>> createServerResources(Map<String, Object> params) {
-
-		Map<String, String> args = new HashMap<String, String>();
-		Map<AgentResourceBase, Map<String, String>> newResources = new HashMap<AgentResourceBase, Map<String, String>>();
-		AgentResourceBase agentResource;
-		long cpuCore = Long.parseLong((String) params.get("cpucore"));
-		long cpuSpeed = Long.parseLong((String) params.get("cpuspeed"));
-		long memory = Long.parseLong((String) params.get("memory"));
-		long localStorageSize = Long.parseLong((String) params.get("localstorage"));
-		synchronized (this) {
-			long dataCenterId = Long.parseLong((String) params.get("zone"));
-			long podId = Long.parseLong((String) params.get("pod"));
-			long clusterId = Long.parseLong((String) params.get("cluster"));
-			long cidrSize = getPodCidr(podId, dataCenterId).second();
-
-			int agentId = getNextAgentId(cidrSize);
-			String ipAddress = getIpAddress(agentId, dataCenterId, podId);
-			String macAddress = getMacAddress(dataCenterId, podId, clusterId, agentId);
-			MockHostVO mockHost = new MockHostVO();
-			mockHost.setDataCenterId(dataCenterId);
-			mockHost.setPodId(podId);
-			mockHost.setClusterId(clusterId);
-			mockHost.setCapabilities("hvm");
-			mockHost.setCpuCount(cpuCore);
-			mockHost.setCpuSpeed(cpuSpeed);
-			mockHost.setMemorySize(memory);
-			String guid = UUID.randomUUID().toString();
-			mockHost.setGuid(guid);
-			mockHost.setName("SimulatedAgent." + guid);
-			mockHost.setPrivateIpAddress(ipAddress);
-			mockHost.setPublicIpAddress(ipAddress);
-			mockHost.setStorageIpAddress(ipAddress);
-			mockHost.setPrivateMacAddress(macAddress);
-			mockHost.setPublicMacAddress(macAddress);
-			mockHost.setStorageMacAddress(macAddress);
-			mockHost.setVersion(this.getClass().getPackage().getImplementationVersion());
-			mockHost.setResource("com.cloud.agent.AgentRoutingResource");
-
-			Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				txn.start();
-				mockHost = _mockHostDao.persist(mockHost);
-				txn.commit();
-			} catch (Exception ex) {
-				txn.rollback();
-				s_logger.error("Error while configuring mock agent " + ex.getMessage());
-				throw new CloudRuntimeException("Error configuring agent", ex);
-			} finally {
-				txn.close();
+    private static final Logger s_logger = Logger.getLogger(MockAgentManagerImpl.class);
+    @Inject
+    HostPodDao _podDao = null;
+    @Inject
+    MockHostDao _mockHostDao = null;
+    @Inject
+    MockVMDao _mockVmDao = null;
+    @Inject
+    SimulatorManager _simulatorMgr = null;
+    @Inject
+    AgentManager _agentMgr = null;
+    @Inject
+    MockStorageManager _storageMgr = null;
+    @Inject
+    ResourceManager _resourceMgr;
+    private SecureRandom random;
+    private final Map<String, AgentResourceBase> _resources = new ConcurrentHashMap<String, AgentResourceBase>();
+    private ThreadPoolExecutor _executor;
+
+    private Pair<String, Long> getPodCidr(long podId, long dcId) {
+        try {
+
+            HashMap<Long, List<Object>> podMap = _podDao.getCurrentPodCidrSubnets(dcId, 0);
+            List<Object> cidrPair = podMap.get(podId);
+            String cidrAddress = (String) cidrPair.get(0);
+            Long cidrSize = (Long) cidrPair.get(1);
+            return new Pair<String, Long>(cidrAddress, cidrSize);
+        } catch (PatternSyntaxException e) {
+            s_logger.error("Exception while splitting pod cidr");
+            return null;
+        } catch (IndexOutOfBoundsException e) {
+            s_logger.error("Invalid pod cidr. Please check");
+            return null;
+        }
+    }
+
+    private String getIpAddress(long instanceId, long dcId, long podId) {
+        Pair<String, Long> cidr = this.getPodCidr(podId, dcId);
+        return NetUtils.long2Ip(NetUtils.ip2Long(cidr.first()) + instanceId);
+    }
+
+    private String getMacAddress(long dcId, long podId, long clusterId, int instanceId) {
+        return NetUtils.long2Mac((dcId << 40 + podId << 32 + clusterId << 24 + instanceId));
+    }
+
+    public synchronized int getNextAgentId(long cidrSize) {
+        return random.nextInt((int) cidrSize);
+    }
+
+    @Override
+    @DB
+    public Map<AgentResourceBase, Map<String, String>> createServerResources(Map<String, Object> params) {
+
+        Map<String, String> args = new HashMap<String, String>();
+        Map<AgentResourceBase, Map<String, String>> newResources = new HashMap<AgentResourceBase, Map<String, String>>();
+        AgentResourceBase agentResource;
+        long cpuCore = Long.parseLong((String) params.get("cpucore"));
+        long cpuSpeed = Long.parseLong((String) params.get("cpuspeed"));
+        long memory = Long.parseLong((String) params.get("memory"));
+        long localStorageSize = Long.parseLong((String) params.get("localstorage"));
+        synchronized (this) {
+            long dataCenterId = Long.parseLong((String) params.get("zone"));
+            long podId = Long.parseLong((String) params.get("pod"));
+            long clusterId = Long.parseLong((String) params.get("cluster"));
+            long cidrSize = getPodCidr(podId, dataCenterId).second();
+
+            int agentId = getNextAgentId(cidrSize);
+            String ipAddress = getIpAddress(agentId, dataCenterId, podId);
+            String macAddress = getMacAddress(dataCenterId, podId, clusterId, agentId);
+            MockHostVO mockHost = new MockHostVO();
+            mockHost.setDataCenterId(dataCenterId);
+            mockHost.setPodId(podId);
+            mockHost.setClusterId(clusterId);
+            mockHost.setCapabilities("hvm");
+            mockHost.setCpuCount(cpuCore);
+            mockHost.setCpuSpeed(cpuSpeed);
+            mockHost.setMemorySize(memory);
+            String guid = UUID.randomUUID().toString();
+            mockHost.setGuid(guid);
+            mockHost.setName("SimulatedAgent." + guid);
+            mockHost.setPrivateIpAddress(ipAddress);
+            mockHost.setPublicIpAddress(ipAddress);
+            mockHost.setStorageIpAddress(ipAddress);
+            mockHost.setPrivateMacAddress(macAddress);
+            mockHost.setPublicMacAddress(macAddress);
+            mockHost.setStorageMacAddress(macAddress);
+            mockHost.setVersion(this.getClass().getPackage().getImplementationVersion());
+            mockHost.setResource("com.cloud.agent.AgentRoutingResource");
+
+            Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
+            try {
+                txn.start();
+                mockHost = _mockHostDao.persist(mockHost);
+                txn.commit();
+            } catch (Exception ex) {
+                txn.rollback();
+                s_logger.error("Error while configuring mock agent " + ex.getMessage());
+                throw new CloudRuntimeException("Error configuring agent", ex);
+            } finally {
+                txn.close();
                 txn = Transaction.open(Transaction.CLOUD_DB);
                 txn.close();
-			}
-
-			_storageMgr.getLocalStorage(guid, localStorageSize);
-
-			agentResource = new AgentRoutingResource();
-			if (agentResource != null) {
-				try {
-					params.put("guid", mockHost.getGuid());
-					agentResource.start();
-					agentResource.configure(mockHost.getName(), params);
-
-					newResources.put(agentResource, args);
-				} catch (ConfigurationException e) {
-					s_logger.error("error while configuring server resource" + e.getMessage());
-				}
-			}
-		}
-		return newResources;
-	}
-
-	@Override
-	public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
-		try {
-			random = SecureRandom.getInstance("SHA1PRNG");
-			_executor = new ThreadPoolExecutor(1, 5, 1, TimeUnit.DAYS, new LinkedBlockingQueue<Runnable>(),
-					new NamedThreadFactory("Simulator-Agent-Mgr"));
-			// ComponentLocator locator = ComponentLocator.getCurrentLocator();
-			// _simulatorMgr = (SimulatorManager)
-			// locator.getComponent(SimulatorManager.Name);
-		} catch (NoSuchAlgorithmException e) {
-			s_logger.debug("Failed to initialize random:" + e.toString());
-			return false;
-		}
-		return true;
-	}
-
-	@Override
-	public boolean handleSystemVMStart(long vmId, String privateIpAddress, String privateMacAddress,
-			String privateNetMask, long dcId, long podId, String name, String vmType, String url) {
-		_executor.execute(new SystemVMHandler(vmId, privateIpAddress, privateMacAddress, privateNetMask, dcId, podId,
-				name, vmType, _simulatorMgr, url));
-		return true;
-	}
-
-	@Override
-	public boolean handleSystemVMStop(long vmId) {
-		_executor.execute(new SystemVMHandler(vmId));
-		return true;
-	}
-
-	private class SystemVMHandler implements Runnable {
-		private long vmId;
-		private String privateIpAddress;
-		private String privateMacAddress;
-		private String privateNetMask;
-		private long dcId;
-		private long podId;
-		private String guid;
-		private String name;
-		private String vmType;
-		private SimulatorManager mgr;
-		private String mode;
-		private String url;
-
-		public SystemVMHandler(long vmId, String privateIpAddress, String privateMacAddress, String privateNetMask,
-				long dcId, long podId, String name, String vmType, SimulatorManager mgr, String url) {
-			this.vmId = vmId;
-			this.privateIpAddress = privateIpAddress;
-			this.privateMacAddress = privateMacAddress;
-			this.privateNetMask = privateNetMask;
-			this.dcId = dcId;
-			this.guid = "SystemVM-" + UUID.randomUUID().toString();
-			this.name = name;
-			this.vmType = vmType;
-			this.mgr = mgr;
-			this.mode = "Start";
-			this.url = url;
-			this.podId = podId;
-		}
-
-		public SystemVMHandler(long vmId) {
-			this.vmId = vmId;
-			this.mode = "Stop";
-		}
-
-		@Override
-		@DB
-		public void run() {
-
-			Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				if (this.mode.equalsIgnoreCase("Stop")) {
-					txn.start();
-					MockHost host = _mockHostDao.findByVmId(this.vmId);
-					if (host != null) {
-						String guid = host.getGuid();
-						if (guid != null) {
-							AgentResourceBase res = _resources.get(guid);
-							if (res != null) {
-								res.stop();
-								_resources.remove(guid);
-							}
-						}
-					}
-					txn.commit();
-					return;
-				}
-			} catch (Exception ex) {
-				txn.rollback();
-				throw new CloudRuntimeException("Unable to get host " + guid + " due to " + ex.getMessage(), ex);
-			} finally {
-				txn.close();
+            }
+
+            _storageMgr.getLocalStorage(guid, localStorageSize);
+
+            agentResource = new AgentRoutingResource();
+            if (agentResource != null) {
+                try {
+                    params.put("guid", mockHost.getGuid());
+                    agentResource.start();
+                    agentResource.configure(mockHost.getName(), params);
+
+                    newResources.put(agentResource, args);
+                } catch (ConfigurationException e) {
+                    s_logger.error("error while configuring server resource" + e.getMessage());
+                }
+            }
+        }
+        return newResources;
+    }
+
+    @Override
+    public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
+        try {
+            random = SecureRandom.getInstance("SHA1PRNG");
+            _executor = new ThreadPoolExecutor(1, 5, 1, TimeUnit.DAYS, new LinkedBlockingQueue<Runnable>(),
+                    new NamedThreadFactory("Simulator-Agent-Mgr"));
+            // ComponentLocator locator = ComponentLocator.getCurrentLocator();
+            // _simulatorMgr = (SimulatorManager)
+            // locator.getComponent(SimulatorManager.Name);
+        } catch (NoSuchAlgorithmException e) {
+            s_logger.debug("Failed to initialize random:" + e.toString());
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public boolean handleSystemVMStart(long vmId, String privateIpAddress, String privateMacAddress,
+            String privateNetMask, long dcId, long podId, String name, String vmType, String url) {
+        _executor.execute(new SystemVMHandler(vmId, privateIpAddress, privateMacAddress, privateNetMask, dcId, podId,
+                name, vmType, _simulatorMgr, url));
+        return true;
+    }
+
+    @Override
+    public boolean handleSystemVMStop(long vmId) {
+        _executor.execute(new SystemVMHandler(vmId));
+        return true;
+    }
+
+    private class SystemVMHandler implements Runnable {
+        private final long vmId;
+        private String privateIpAddress;
+        private String privateMacAddress;
+        private String privateNetMask;
+        private long dcId;
+        private long podId;
+        private String guid;
+        private String name;
+        private String vmType;
+        private SimulatorManager mgr;
+        private final String mode;
+        private String url;
+
+        public SystemVMHandler(long vmId, String privateIpAddress, String privateMacAddress, String privateNetMask,
+                long dcId, long podId, String name, String vmType, SimulatorManager mgr, String url) {
+            this.vmId = vmId;
+            this.privateIpAddress = privateIpAddress;
+            this.privateMacAddress = privateMacAddress;
+            this.privateNetMask = privateNetMask;
+            this.dcId = dcId;
+            this.guid = "SystemVM-" + UUID.randomUUID().toString();
+            this.name = name;
+            this.vmType = vmType;
+            this.mgr = mgr;
+            this.mode = "Start";
+            this.url = url;
+            this.podId = podId;
+        }
+
+        public SystemVMHandler(long vmId) {
+            this.vmId = vmId;
+            this.mode = "Stop";
+        }
+
+        @Override
+        @DB
+        public void run() {
+
+            Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
+            try {
+                if (this.mode.equalsIgnoreCase("Stop")) {
+                    txn.start();
+                    MockHost host = _mockHostDao.findByVmId(this.vmId);
+                    if (host != null) {
+                        String guid = host.getGuid();
+                        if (guid != null) {
+                            AgentResourceBase res = _resources.get(guid);
+                            if (res != null) {
+                                res.stop();
+                                _resources.remove(guid);
+                            }
+                        }
+                    }
+                    txn.commit();
+                    return;
+                }
+            } catch (Exception ex) {
+                txn.rollback();
+                throw new CloudRuntimeException("Unable to get host " + guid + " due to " + ex.getMessage(), ex);
+            } finally {
+                txn.close();
                 txn = Transaction.open(Transaction.CLOUD_DB);
                 txn.close();
-			}
-
-			String resource = null;
-			if (vmType.equalsIgnoreCase("secstorage")) {
-				resource = "com.cloud.agent.AgentStorageResource";
-			}
-			MockHostVO mockHost = new MockHostVO();
-			mockHost.setDataCenterId(this.dcId);
-			mockHost.setPodId(this.podId);
-			mockHost.setCpuCount(DEFAULT_HOST_CPU_CORES);
-			mockHost.setCpuSpeed(DEFAULT_HOST_SPEED_MHZ);
-			mockHost.setMemorySize(DEFAULT_HOST_MEM_SIZE);
-			mockHost.setGuid(this.guid);
-			mockHost.setName(name);
-			mockHost.setPrivateIpAddress(this.privateIpAddress);
-			mockHost.setPublicIpAddress(this.privateIpAddress);
-			mockHost.setStorageIpAddress(this.privateIpAddress);
-			mockHost.setPrivateMacAddress(this.privateMacAddress);
-			mockHost.setPublicMacAddress(this.privateMacAddress);
-			mockHost.setStorageMacAddress(this.privateMacAddress);
-			mockHost.setVersion(this.getClass().getPackage().getImplementationVersion());
-			mockHost.setResource(resource);
-			mockHost.setVmId(vmId);
-			Transaction simtxn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				simtxn.start();
-				mockHost = _mockHostDao.persist(mockHost);
-				simtxn.commit();
-			} catch (Exception ex) {
-				simtxn.rollback();
-				throw new CloudRuntimeException("Unable to persist host " + mockHost.getGuid() + " due to "
-						+ ex.getMessage(), ex);
-			} finally {
-				simtxn.close();
+            }
+
+            String resource = null;
+            if (vmType.equalsIgnoreCase("secstorage")) {
+                resource = "com.cloud.agent.AgentStorageResource";
+            }
+            MockHostVO mockHost = new MockHostVO();
+            mockHost.setDataCenterId(this.dcId);
+            mockHost.setPodId(this.podId);
+            mockHost.setCpuCount(DEFAULT_HOST_CPU_CORES);
+            mockHost.setCpuSpeed(DEFAULT_HOST_SPEED_MHZ);
+            mockHost.setMemorySize(DEFAULT_HOST_MEM_SIZE);
+            mockHost.setGuid(this.guid);
+            mockHost.setName(name);
+            mockHost.setPrivateIpAddress(this.privateIpAddress);
+            mockHost.setPublicIpAddress(this.privateIpAddress);
+            mockHost.setStorageIpAddress(this.privateIpAddress);
+            mockHost.setPrivateMacAddress(this.privateMacAddress);
+            mockHost.setPublicMacAddress(this.privateMacAddress);
+            mockHost.setStorageMacAddress(this.privateMacAddress);
+            mockHost.setVersion(this.getClass().getPackage().getImplementationVersion());
+            mockHost.setResource(resource);
+            mockHost.setVmId(vmId);
+            Transaction simtxn = Transaction.open(Transaction.SIMULATOR_DB);
+            try {
+                simtxn.start();
+                mockHost = _mockHostDao.persist(mockHost);
+                simtxn.commit();
+            } catch (Exception ex) {
+                simtxn.rollback();
+                throw new CloudRuntimeException("Unable to persist host " + mockHost.getGuid() + " due to "
+                        + ex.getMessage(), ex);
+            } finally {
+                simtxn.close();
                 simtxn = Transaction.open(Transaction.CLOUD_DB);
                 simtxn.close();
-			}
-
-			if (vmType.equalsIgnoreCase("secstorage")) {
-				AgentStorageResource storageResource = new AgentStorageResource();
-				try {
-					Map<String, Object> params = new HashMap<String, Object>();
-					Map<String, String> details = new HashMap<String, String>();
-					params.put("guid", this.guid);
-					details.put("guid", this.guid);
-					storageResource.configure("secondaryStorage", params);
-					storageResource.start();
-					// on the simulator the ssvm is as good as a direct
-					// agent
-					_resourceMgr.addHost(mockHost.getDataCenterId(), storageResource, Host.Type.SecondaryStorageVM,
-							details);
-					_resources.put(this.guid, storageResource);
-				} catch (ConfigurationException e) {
-					s_logger.debug("Failed to load secondary storage resource: " + e.toString());
-					return;
-				}
-			}
-		}
-	}
-
-	@Override
-	public MockHost getHost(String guid) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			MockHost _host = _mockHostDao.findByGuid(guid);
-			txn.commit();
-			if (_host != null) {
-				return _host;
-			} else {
-				s_logger.error("Host with guid " + guid + " was not found");
-				return null;
-			}
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Unable to get host " + guid + " due to " + ex.getMessage(), ex);
-		} finally {
-			txn.close();
+            }
+
+            if (vmType.equalsIgnoreCase("secstorage")) {
+                AgentStorageResource storageResource = new AgentStorageResource();
+                try {
+                    Map<String, Object> params = new HashMap<String, Object>();
+                    Map<String, String> details = new HashMap<String, String>();
+                    params.put("guid", this.guid);
+                    details.put("guid", this.guid);
+                    storageResource.configure("secondaryStorage", params);
+                    storageResource.start();
+                    // on the simulator the ssvm is as good as a direct
+                    // agent
+                    _resourceMgr.addHost(mockHost.getDataCenterId(), storageResource, Host.Type.SecondaryStorageVM,
+                            details);
+                    _resources.put(this.guid, storageResource);
+                } catch (ConfigurationException e) {
+                    s_logger.debug("Failed to load secondary storage resource: " + e.toString());
+                    return;
+                }
+            }
+        }
+    }
+
+    @Override
+    public MockHost getHost(String guid) {
+        Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
+        try {
+            txn.start();
+            MockHost _host = _mockHostDao.findByGuid(guid);
+            txn.commit();
+            if (_host != null) {
+                return _host;
+            } else {
+                s_logger.error("Host with guid " + guid + " was not found");
+                return null;
+            }
+        } catch (Exception ex) {
+            txn.rollback();
+            throw new CloudRuntimeException("Unable to get host " + guid + " due to " + ex.getMessage(), ex);
+        } finally {
+            txn.close();
             txn = Transaction.open(Transaction.CLOUD_DB);
             txn.close();
-		}
-	}
-
-	@Override
-	public GetHostStatsAnswer getHostStatistic(GetHostStatsCommand cmd) {
-		String hostGuid = cmd.getHostGuid();
-		MockHost host = null;
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			host = _mockHostDao.findByGuid(hostGuid);
-			txn.commit();
-			if (host == null) {
-				return null;
-			}
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Unable to get host " + hostGuid + " due to " + ex.getMessage(), ex);
-		} finally {
-			txn.close();
+        }
+    }
+
+    @Override
+    public GetHostStatsAnswer getHostStatistic(GetHostStatsCommand cmd) {
+        String hostGuid = cmd.getHostGuid();
+        MockHost host = null;
+        Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
+        try {
+            txn.start();
+            host = _mockHostDao.findByGuid(hostGuid);
+            txn.commit();
+            if (host == null) {
+                return null;
+            }
+        } catch (Exception ex) {
+            txn.rollback();
+            throw new CloudRuntimeException("Unable to get host " + hostGuid + " due to " + ex.getMessage(), ex);
+        } finally {
+            txn.close();
             txn = Transaction.open(Transaction.CLOUD_DB);
             txn.close();
-		}
-
-		Transaction vmtxn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			vmtxn.start();
-			List<MockVMVO> vms = _mockVmDao.findByHostId(host.getId());
-			vmtxn.commit();
-			double usedMem = 0.0;
-			double usedCpu = 0.0;
-			for (MockVMVO vm : vms) {
-				usedMem += vm.getMemory();
-				usedCpu += vm.getCpu();
-			}
-
-			HostStatsEntry hostStats = new HostStatsEntry();
-			hostStats.setTotalMemoryKBs(host.getMemorySize());
-			hostStats.setFreeMemoryKBs(host.getMemorySize() - usedMem);
-			hostStats.setNetworkReadKBs(32768);
-			hostStats.setNetworkWriteKBs(16384);
-			hostStats.setCpuUtilization(usedCpu / (host.getCpuCount() * host.getCpuSpeed()));
-			hostStats.setEntityType("simulator-host");
-			hostStats.setHostId(cmd.getHostId());
-			return new GetHostStatsAnswer(cmd, hostStats);
-		} catch (Exception ex) {
-			vmtxn.rollback();
-			throw new CloudRuntimeException("Unable to get Vms on host " + host.getGuid() + " due to "
-					+ ex.getMessage(), ex);
-		} finally {
-			vmtxn.close();
+        }
+
+        Transaction vmtxn = Transaction.open(Transaction.SIMULATOR_DB);
+        try {
+            vmtxn.start();
+            List<MockVMVO> vms = _mockVmDao.findByHostId(host.getId());
+            vmtxn.commit();
+            double usedMem = 0.0;
+            double usedCpu = 0.0;
+            for (MockVMVO vm : vms) {
+                usedMem += vm.getMemory();
+                usedCpu += vm.getCpu();
+            }
+
+            HostStatsEntry hostStats = new HostStatsEntry();
+            hostStats.setTotalMemoryKBs(host.getMemorySize());
+            hostStats.setFreeMemoryKBs(host.getMemorySize() - usedMem);
+            hostStats.setNetworkReadKBs(32768);
+            hostStats.setNetworkWriteKBs(16384);
+            hostStats.setCpuUtilization(usedCpu / (host.getCpuCount() * host.getCpuSpeed()));
+            hostStats.setEntityType("simulator-host");
+            hostStats.setHostId(cmd.getHostId());
+            return new GetHostStatsAnswer(cmd, hostStats);
+        } catch (Exception ex) {
+            vmtxn.rollback();
+            throw new CloudRuntimeException("Unable to get Vms on host " + host.getGuid() + " due to "
+                    + ex.getMessage(), ex);
+        } finally {
+            vmtxn.close();
             vmtxn = Transaction.open(Transaction.CLOUD_DB);
             vmtxn.close();
-		}
-	}
-
-	@Override
-	public Answer checkHealth(CheckHealthCommand cmd) {
-		return new Answer(cmd);
-	}
-
-	@Override
-	public Answer pingTest(PingTestCommand cmd) {
-		return new Answer(cmd);
-	}
-
-	@Override
-	public boolean start() {
-		return true;
-	}
-
-	@Override
-	public boolean stop() {
-		return true;
-	}
-
-	@Override
-	public String getName() {
-		return this.getClass().getSimpleName();
-	}
-
-	@Override
-	public MaintainAnswer maintain(com.cloud.agent.api.MaintainCommand cmd) {
-		return new MaintainAnswer(cmd);
-	}
-
-	@Override
-	public Answer checkNetworkCommand(CheckNetworkCommand cmd) {
-		if (s_logger.isDebugEnabled()) {
-			s_logger.debug("Checking if network name setup is done on the resource");
-		}
-		return new CheckNetworkAnswer(cmd, true, "Network Setup check by names is done");
-	}
+        }
+    }
+
+    @Override
+    public Answer checkHealth(CheckHealthCommand cmd) {
+        return new Answer(cmd);
+    }
+
+    @Override
+    public Answer pingTest(PingTestCommand cmd) {
+        return new Answer(cmd);
+    }
+
+    @Override
+    public boolean start() {
+        return true;
+    }
+
+    @Override
+    public boolean stop() {
+        return true;
+    }
+
+    @Override
+    public String getName() {
+        return this.getClass().getSimpleName();
+    }
+
+    @Override
+    public MaintainAnswer maintain(com.cloud.agent.api.MaintainCommand cmd) {
+        return new MaintainAnswer(cmd);
+    }
+
+    @Override
+    public Answer checkNetworkCommand(CheckNetworkCommand cmd) {
+        if (s_logger.isDebugEnabled()) {
+            s_logger.debug("Checking if network name setup is done on the resource");
+        }
+        return new CheckNetworkAnswer(cmd, true, "Network Setup check by names is done");
+    }
 }