You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/01/11 00:29:22 UTC

[7/7] git commit: more files changed

Updated Branches:
  refs/heads/javelin f922c6fc0 -> fac227024


more files changed


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/fac22702
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/fac22702
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/fac22702

Branch: refs/heads/javelin
Commit: fac227024047fd128e7f34b5c6a619afea35191f
Parents: f922c6f
Author: Alex Huang <al...@citrix.com>
Authored: Thu Jan 10 15:29:14 2013 -0800
Committer: Alex Huang <al...@citrix.com>
Committed: Thu Jan 10 15:29:14 2013 -0800

----------------------------------------------------------------------
 .../cloud/agent/manager/MockAgentManagerImpl.java  |  759 +++---
 .../agent/manager/MockStorageManagerImpl.java      | 2304 ++++++++-------
 .../com/cloud/agent/manager/MockVmManagerImpl.java |  501 ++--
 .../cloud/agent/manager/SimulatorManagerImpl.java  |  160 +-
 .../com/cloud/api/commands/ConfigureSimulator.java |   13 +-
 .../src/com/cloud/resource/AgentResourceBase.java  |  427 ++--
 .../com/cloud/resource/SimulatorDiscoverer.java    |  379 ++--
 .../resource/SimulatorSecondaryDiscoverer.java     |  143 +-
 .../src/com/cloud/simulator/SimulatorGuru.java     |   12 +-
 .../src/com/cloud/simulator/dao/MockVMDaoImpl.java |    2 +-
 .../server/auth/SHA256SaltedUserAuthenticator.java |  152 +-
 .../com/cloud/resource/ResourceManagerImpl.java    |   42 +-
 .../src/com/cloud/servlet/ConsoleProxyServlet.java |   12 +-
 .../com/cloud/servlet/RegisterCompleteServlet.java |  177 +-
 .../src/com/cloud/storage/StorageManagerImpl.java  |  348 ++--
 .../cloud/storage/StorageMigrationCleanupMaid.java |  121 -
 .../GarbageCollectingStoragePoolAllocator.java     |   70 +-
 .../cloud/storage/listener/StoragePoolMonitor.java |  103 +-
 .../resource/DummySecondaryStorageResource.java    |  134 +-
 server/src/com/cloud/test/DatabaseConfig.java      | 1016 ++++----
 server/src/com/cloud/test/IPRangeConfig.java       |  898 +++---
 server/src/com/cloud/test/PodZoneConfig.java       |  696 +++---
 server/src/com/cloud/vm/SystemVmLoadScanner.java   |  100 +-
 server/src/com/cloud/vm/UserVmManagerImpl.java     |    5 +-
 .../com/cloud/vm/VirtualMachineManagerImpl.java    |  160 +-
 server/test/com/cloud/async/TestAsync.java         |  224 +-
 26 files changed, 4443 insertions(+), 4515 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/fac22702/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 506fbe0..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.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");
+    }
 }