You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2012/12/24 01:57:38 UTC

[11/50] [abbrv] Simulator: moving hypervisor simulator into plugin

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d6083ce5/agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java b/agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
deleted file mode 100644
index cc15b20..0000000
--- a/agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
+++ /dev/null
@@ -1,1298 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.agent.manager;
-
-import java.io.File;
-import java.math.BigInteger;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import javax.ejb.Local;
-import javax.naming.ConfigurationException;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.AttachIsoCommand;
-import com.cloud.agent.api.AttachVolumeAnswer;
-import com.cloud.agent.api.AttachVolumeCommand;
-import com.cloud.agent.api.BackupSnapshotAnswer;
-import com.cloud.agent.api.BackupSnapshotCommand;
-import com.cloud.agent.api.ComputeChecksumCommand;
-import com.cloud.agent.api.CreatePrivateTemplateFromSnapshotCommand;
-import com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand;
-import com.cloud.agent.api.CreateStoragePoolCommand;
-import com.cloud.agent.api.CreateVolumeFromSnapshotAnswer;
-import com.cloud.agent.api.CreateVolumeFromSnapshotCommand;
-import com.cloud.agent.api.DeleteSnapshotBackupCommand;
-import com.cloud.agent.api.DeleteStoragePoolCommand;
-import com.cloud.agent.api.GetStorageStatsAnswer;
-import com.cloud.agent.api.GetStorageStatsCommand;
-import com.cloud.agent.api.ManageSnapshotAnswer;
-import com.cloud.agent.api.ManageSnapshotCommand;
-import com.cloud.agent.api.ModifyStoragePoolAnswer;
-import com.cloud.agent.api.ModifyStoragePoolCommand;
-import com.cloud.agent.api.SecStorageSetupAnswer;
-import com.cloud.agent.api.SecStorageSetupCommand;
-import com.cloud.agent.api.SecStorageVMSetupCommand;
-import com.cloud.agent.api.StoragePoolInfo;
-import com.cloud.agent.api.storage.CopyVolumeAnswer;
-import com.cloud.agent.api.storage.CopyVolumeCommand;
-import com.cloud.agent.api.storage.CreateAnswer;
-import com.cloud.agent.api.storage.CreateCommand;
-import com.cloud.agent.api.storage.CreatePrivateTemplateAnswer;
-import com.cloud.agent.api.storage.DeleteTemplateCommand;
-import com.cloud.agent.api.storage.DestroyCommand;
-import com.cloud.agent.api.storage.DownloadAnswer;
-import com.cloud.agent.api.storage.DownloadCommand;
-import com.cloud.agent.api.storage.DownloadProgressCommand;
-import com.cloud.agent.api.storage.ListTemplateAnswer;
-import com.cloud.agent.api.storage.ListTemplateCommand;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadAnswer;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
-import com.cloud.agent.api.to.StorageFilerTO;
-import com.cloud.agent.api.to.VolumeTO;
-import com.cloud.simulator.MockHost;
-import com.cloud.simulator.MockSecStorageVO;
-import com.cloud.simulator.MockStoragePoolVO;
-import com.cloud.simulator.MockVMVO;
-import com.cloud.simulator.MockVm;
-import com.cloud.simulator.MockVolumeVO;
-import com.cloud.simulator.MockVolumeVO.MockVolumeType;
-import com.cloud.simulator.dao.MockHostDao;
-import com.cloud.simulator.dao.MockSecStorageDao;
-import com.cloud.simulator.dao.MockStoragePoolDao;
-import com.cloud.simulator.dao.MockVMDao;
-import com.cloud.simulator.dao.MockVolumeDao;
-import com.cloud.storage.Storage;
-import com.cloud.storage.VMTemplateStorageResourceAssoc;
-import com.cloud.storage.Storage.ImageFormat;
-import com.cloud.storage.Storage.StoragePoolType;
-import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
-import com.cloud.storage.template.TemplateInfo;
-import com.cloud.utils.component.Inject;
-import com.cloud.utils.db.Transaction;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.vm.DiskProfile;
-import com.cloud.vm.VirtualMachine.State;
-
-@Local(value = { MockStorageManager.class })
-public class MockStorageManagerImpl implements MockStorageManager {
-	private static final Logger s_logger = Logger.getLogger(MockStorageManagerImpl.class);
-	@Inject
-	MockStoragePoolDao _mockStoragePoolDao = null;
-	@Inject
-	MockSecStorageDao _mockSecStorageDao = null;
-	@Inject
-	MockVolumeDao _mockVolumeDao = null;
-	@Inject
-	MockVMDao _mockVMDao = null;
-	@Inject
-	MockHostDao _mockHostDao = null;
-
-	private MockVolumeVO findVolumeFromSecondary(String path, String ssUrl, MockVolumeType type) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			String volumePath = path.replaceAll(ssUrl, "");
-			MockSecStorageVO secStorage = _mockSecStorageDao.findByUrl(ssUrl);
-			if (secStorage == null) {
-				return null;
-			}
-			volumePath = secStorage.getMountPoint() + volumePath;
-			volumePath = volumePath.replaceAll("//", "/");
-			MockVolumeVO volume = _mockVolumeDao.findByStoragePathAndType(volumePath);
-			txn.commit();
-			if (volume == null) {
-				return null;
-			}
-			return volume;
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Unable to find volume " + path + " on secondary " + ssUrl, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-	@Override
-	public PrimaryStorageDownloadAnswer primaryStorageDownload(PrimaryStorageDownloadCommand cmd) {
-		MockVolumeVO template = findVolumeFromSecondary(cmd.getUrl(), cmd.getSecondaryStorageUrl(),
-				MockVolumeType.TEMPLATE);
-		if (template == null) {
-			return new PrimaryStorageDownloadAnswer("Can't find primary storage");
-		}
-
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockStoragePoolVO primaryStorage = null;
-		try {
-			txn.start();
-			primaryStorage = _mockStoragePoolDao.findByUuid(cmd.getPoolUuid());
-			txn.commit();
-			if (primaryStorage == null) {
-				return new PrimaryStorageDownloadAnswer("Can't find primary storage");
-			}
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when finding primary storagee " + cmd.getPoolUuid(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		String volumeName = UUID.randomUUID().toString();
-		MockVolumeVO newVolume = new MockVolumeVO();
-		newVolume.setName(volumeName);
-		newVolume.setPath(primaryStorage.getMountPoint() + volumeName);
-		newVolume.setPoolId(primaryStorage.getId());
-		newVolume.setSize(template.getSize());
-		newVolume.setType(MockVolumeType.VOLUME);
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			_mockVolumeDao.persist(newVolume);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when saving volume " + newVolume, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		return new PrimaryStorageDownloadAnswer(newVolume.getPath(), newVolume.getSize());
-	}
-
-	@Override
-	public CreateAnswer createVolume(CreateCommand cmd) {
-		StorageFilerTO sf = cmd.getPool();
-		DiskProfile dskch = cmd.getDiskCharacteristics();
-		MockStoragePoolVO storagePool = null;
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			storagePool = _mockStoragePoolDao.findByUuid(sf.getUuid());
-			txn.commit();
-			if (storagePool == null) {
-				return new CreateAnswer(cmd, "Failed to find storage pool: " + sf.getUuid());
-			}
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when finding storage " + sf.getUuid(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		String volumeName = UUID.randomUUID().toString();
-		MockVolumeVO volume = new MockVolumeVO();
-		volume.setPoolId(storagePool.getId());
-		volume.setName(volumeName);
-		volume.setPath(storagePool.getMountPoint() + volumeName);
-		volume.setSize(dskch.getSize());
-		volume.setType(MockVolumeType.VOLUME);
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			volume = _mockVolumeDao.persist(volume);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when saving volume " + volume, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		VolumeTO volumeTo = new VolumeTO(cmd.getVolumeId(), dskch.getType(), sf.getType(), sf.getUuid(),
-				volume.getName(), storagePool.getMountPoint(), volume.getPath(), volume.getSize(), null);
-
-		return new CreateAnswer(cmd, volumeTo);
-	}
-
-	@Override
-	public AttachVolumeAnswer AttachVolume(AttachVolumeCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			String poolid = cmd.getPoolUuid();
-			String volumeName = cmd.getVolumeName();
-			MockVolumeVO volume = _mockVolumeDao.findByStoragePathAndType(cmd.getVolumePath());
-			if (volume == null) {
-				return new AttachVolumeAnswer(cmd, "Can't find volume:" + volumeName + "on pool:" + poolid);
-			}
-
-			String vmName = cmd.getVmName();
-			MockVMVO vm = _mockVMDao.findByVmName(vmName);
-			if (vm == null) {
-				return new AttachVolumeAnswer(cmd, "can't vm :" + vmName);
-			}
-			txn.commit();
-
-			return new AttachVolumeAnswer(cmd, cmd.getDeviceId());
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when attaching volume " + cmd.getVolumeName() + " to VM "
-					+ cmd.getVmName(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-	@Override
-	public Answer AttachIso(AttachIsoCommand cmd) {
-		MockVolumeVO iso = findVolumeFromSecondary(cmd.getIsoPath(), cmd.getStoreUrl(), MockVolumeType.ISO);
-		if (iso == null) {
-			return new Answer(cmd, false, "Failed to find the iso: " + cmd.getIsoPath() + "on secondary storage "
-					+ cmd.getStoreUrl());
-		}
-
-		String vmName = cmd.getVmName();
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockVMVO vm = null;
-		try {
-			txn.start();
-			vm = _mockVMDao.findByVmName(vmName);
-			txn.commit();
-			if (vm == null) {
-				return new Answer(cmd, false, "can't vm :" + vmName);
-			}
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when attaching iso to vm " + vm.getName(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		return new Answer(cmd);
-	}
-
-	@Override
-	public Answer DeleteStoragePool(DeleteStoragePoolCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			MockStoragePoolVO storage = _mockStoragePoolDao.findByUuid(cmd.getPool().getUuid());
-			if (storage == null) {
-				return new Answer(cmd, false, "can't find storage pool:" + cmd.getPool().getUuid());
-			}
-			_mockStoragePoolDao.remove(storage.getId());
-			txn.commit();
-			return new Answer(cmd);
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when deleting storage pool " + cmd.getPool().getPath(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-	@Override
-	public ModifyStoragePoolAnswer ModifyStoragePool(ModifyStoragePoolCommand cmd) {
-		StorageFilerTO sf = cmd.getPool();
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockStoragePoolVO storagePool = null;
-		try {
-			txn.start();
-			storagePool = _mockStoragePoolDao.findByUuid(sf.getUuid());
-			if (storagePool == null) {
-				storagePool = new MockStoragePoolVO();
-				storagePool.setUuid(sf.getUuid());
-				storagePool.setMountPoint("/mnt/" + sf.getUuid() + File.separator);
-
-				Long size = DEFAULT_HOST_STORAGE_SIZE;
-				String path = sf.getPath();
-				int index = path.lastIndexOf("/");
-				if (index != -1) {
-					path = path.substring(index + 1);
-					if (path != null) {
-						String values[] = path.split("=");
-						if (values.length > 1 && values[0].equalsIgnoreCase("size")) {
-							size = Long.parseLong(values[1]);
-						}
-					}
-				}
-				storagePool.setCapacity(size);
-				storagePool.setStorageType(sf.getType());
-				storagePool = _mockStoragePoolDao.persist(storagePool);
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when modifying storage pool " + cmd.getPool().getPath(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		return new ModifyStoragePoolAnswer(cmd, storagePool.getCapacity(), 0, new HashMap<String, TemplateInfo>());
-	}
-
-	@Override
-	public Answer CreateStoragePool(CreateStoragePoolCommand cmd) {
-		StorageFilerTO sf = cmd.getPool();
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockStoragePoolVO storagePool = null;
-		try {
-			txn.start();
-			storagePool = _mockStoragePoolDao.findByUuid(sf.getUuid());
-			if (storagePool == null) {
-				storagePool = new MockStoragePoolVO();
-				storagePool.setUuid(sf.getUuid());
-				storagePool.setMountPoint("/mnt/" + sf.getUuid() + File.separator);
-
-				Long size = DEFAULT_HOST_STORAGE_SIZE;
-				String path = sf.getPath();
-				int index = path.lastIndexOf("/");
-				if (index != -1) {
-					path = path.substring(index + 1);
-					if (path != null) {
-						String values[] = path.split("=");
-						if (values.length > 1 && values[0].equalsIgnoreCase("size")) {
-							size = Long.parseLong(values[1]);
-						}
-					}
-				}
-				storagePool.setCapacity(size);
-				storagePool.setStorageType(sf.getType());
-				storagePool = _mockStoragePoolDao.persist(storagePool);
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when creating storage pool " + cmd.getPool().getPath(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		return new ModifyStoragePoolAnswer(cmd, storagePool.getCapacity(), 0, new HashMap<String, TemplateInfo>());
-	}
-
-	@Override
-	public Answer SecStorageSetup(SecStorageSetupCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockSecStorageVO storage = null;
-		try {
-			txn.start();
-			storage = _mockSecStorageDao.findByUrl(cmd.getSecUrl());
-			if (storage == null) {
-				return new Answer(cmd, false, "can't find the storage");
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when setting up sec storage" + cmd.getSecUrl(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		return new SecStorageSetupAnswer(storage.getMountPoint());
-	}
-
-	@Override
-	public Answer ListTemplates(ListTemplateCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockSecStorageVO storage = null;
-		try {
-			txn.start();
-			storage = _mockSecStorageDao.findByUrl(cmd.getSecUrl());
-			if (storage == null) {
-				return new Answer(cmd, false, "Failed to get secondary storage");
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when finding sec storage " + cmd.getSecUrl(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			List<MockVolumeVO> templates = _mockVolumeDao.findByStorageIdAndType(storage.getId(),
-					MockVolumeType.TEMPLATE);
-
-			Map<String, TemplateInfo> templateInfos = new HashMap<String, TemplateInfo>();
-			for (MockVolumeVO template : templates) {
-				templateInfos.put(template.getName(), new TemplateInfo(template.getName(), template.getPath()
-						.replaceAll(storage.getMountPoint(), ""), template.getSize(), template.getSize(), true, false));
-			}
-			txn.commit();
-			return new ListTemplateAnswer(cmd.getSecUrl(), templateInfos);
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when finding template on sec storage " + storage.getId(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-	@Override
-	public Answer Destroy(DestroyCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			MockVolumeVO volume = _mockVolumeDao.findByStoragePathAndType(cmd.getVolume().getPath());
-			if (volume != null) {
-				_mockVolumeDao.remove(volume.getId());
-			}
-
-			if (cmd.getVmName() != null) {
-				MockVm vm = _mockVMDao.findByVmName(cmd.getVmName());
-				vm.setState(State.Expunging);
-				if (vm != null) {
-					MockVMVO vmVo = _mockVMDao.createForUpdate(vm.getId());
-					_mockVMDao.update(vm.getId(), vmVo);
-				}
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when destroying volume " + cmd.getVolume().getPath(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		return new Answer(cmd);
-	}
-
-	@Override
-	public DownloadAnswer Download(DownloadCommand cmd) {
-		MockSecStorageVO ssvo = null;
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			ssvo = _mockSecStorageDao.findByUrl(cmd.getSecUrl());
-			if (ssvo == null) {
-				return new DownloadAnswer("can't find secondary storage",
-						VMTemplateStorageResourceAssoc.Status.DOWNLOAD_ERROR);
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error accessing secondary storage " + cmd.getSecUrl(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		MockVolumeVO volume = new MockVolumeVO();
-		volume.setPoolId(ssvo.getId());
-		volume.setName(cmd.getName());
-		volume.setPath(ssvo.getMountPoint() + cmd.getName());
-		volume.setSize(0);
-		volume.setType(MockVolumeType.TEMPLATE);
-		volume.setStatus(Status.DOWNLOAD_IN_PROGRESS);
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			volume = _mockVolumeDao.persist(volume);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when saving volume " + volume, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		return new DownloadAnswer(String.valueOf(volume.getId()), 0, "Downloading", Status.DOWNLOAD_IN_PROGRESS,
-				cmd.getName(), cmd.getName(), volume.getSize(), volume.getSize(), null);
-	}
-
-	@Override
-	public DownloadAnswer DownloadProcess(DownloadProgressCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			String volumeId = cmd.getJobId();
-			MockVolumeVO volume = _mockVolumeDao.findById(Long.parseLong(volumeId));
-			if (volume == null) {
-				return new DownloadAnswer("Can't find the downloading volume", Status.ABANDONED);
-			}
-
-			long size = Math.min(volume.getSize() + DEFAULT_TEMPLATE_SIZE / 5, DEFAULT_TEMPLATE_SIZE);
-			volume.setSize(size);
-
-			double volumeSize = volume.getSize();
-			double pct = volumeSize / DEFAULT_TEMPLATE_SIZE;
-			if (pct >= 1.0) {
-				volume.setStatus(Status.DOWNLOADED);
-				_mockVolumeDao.update(volume.getId(), volume);
-				txn.commit();
-				return new DownloadAnswer(cmd.getJobId(), 100, cmd,
-						com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOADED, volume.getPath(),
-						volume.getName());
-			} else {
-				_mockVolumeDao.update(volume.getId(), volume);
-				txn.commit();
-				return new DownloadAnswer(cmd.getJobId(), (int) (pct * 100.0), cmd,
-						com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOAD_IN_PROGRESS, volume.getPath(),
-						volume.getName());
-			}
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error during download job " + cmd.getJobId(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-	@Override
-	public GetStorageStatsAnswer GetStorageStats(GetStorageStatsCommand cmd) {
-		String uuid = cmd.getStorageId();
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			if (uuid == null) {
-				String secUrl = cmd.getSecUrl();
-				MockSecStorageVO secondary = _mockSecStorageDao.findByUrl(secUrl);
-				if (secondary == null) {
-					return new GetStorageStatsAnswer(cmd, "Can't find the secondary storage:" + secUrl);
-				}
-				Long totalUsed = _mockVolumeDao.findTotalStorageId(secondary.getId());
-				txn.commit();
-				return new GetStorageStatsAnswer(cmd, secondary.getCapacity(), totalUsed);
-			} else {
-				MockStoragePoolVO pool = _mockStoragePoolDao.findByUuid(uuid);
-				if (pool == null) {
-					return new GetStorageStatsAnswer(cmd, "Can't find the pool");
-				}
-				Long totalUsed = _mockVolumeDao.findTotalStorageId(pool.getId());
-				if (totalUsed == null) {
-					totalUsed = 0L;
-				}
-				txn.commit();
-				return new GetStorageStatsAnswer(cmd, pool.getCapacity(), totalUsed);
-			}
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("DBException during storage stats collection for pool " + uuid, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-	@Override
-	public ManageSnapshotAnswer ManageSnapshot(ManageSnapshotCommand cmd) {
-		String volPath = cmd.getVolumePath();
-		MockVolumeVO volume = null;
-		MockStoragePoolVO storagePool = null;
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			volume = _mockVolumeDao.findByStoragePathAndType(volPath);
-			if (volume == null) {
-				return new ManageSnapshotAnswer(cmd, false, "Can't find the volume");
-			}
-			storagePool = _mockStoragePoolDao.findById(volume.getPoolId());
-			if (storagePool == null) {
-				return new ManageSnapshotAnswer(cmd, false, "Can't find the storage pooll");
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Unable to perform snapshot", ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		String mountPoint = storagePool.getMountPoint();
-		MockVolumeVO snapshot = new MockVolumeVO();
-
-		snapshot.setName(cmd.getSnapshotName());
-		snapshot.setPath(mountPoint + cmd.getSnapshotName());
-		snapshot.setSize(volume.getSize());
-		snapshot.setPoolId(storagePool.getId());
-		snapshot.setType(MockVolumeType.SNAPSHOT);
-		snapshot.setStatus(Status.DOWNLOADED);
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			snapshot = _mockVolumeDao.persist(snapshot);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when saving snapshot " + snapshot, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		return new ManageSnapshotAnswer(cmd, snapshot.getId(), snapshot.getPath(), true, "");
-	}
-
-	@Override
-	public BackupSnapshotAnswer BackupSnapshot(BackupSnapshotCommand cmd, SimulatorInfo info) {
-		// emulate xenserver backupsnapshot, if the base volume is deleted, then
-		// backupsnapshot failed
-		MockVolumeVO volume = null;
-		MockVolumeVO snapshot = null;
-		MockSecStorageVO secStorage = null;
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			volume = _mockVolumeDao.findByStoragePathAndType(cmd.getVolumePath());
-			if (volume == null) {
-				return new BackupSnapshotAnswer(cmd, false, "Can't find base volume: " + cmd.getVolumePath(), null,
-						true);
-			}
-			String snapshotPath = cmd.getSnapshotUuid();
-			snapshot = _mockVolumeDao.findByStoragePathAndType(snapshotPath);
-			if (snapshot == null) {
-				return new BackupSnapshotAnswer(cmd, false, "can't find snapshot" + snapshotPath, null, true);
-			}
-
-			String secStorageUrl = cmd.getSecondaryStorageUrl();
-			secStorage = _mockSecStorageDao.findByUrl(secStorageUrl);
-			if (secStorage == null) {
-				return new BackupSnapshotAnswer(cmd, false, "can't find sec storage" + snapshotPath, null, true);
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when backing up snapshot");
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		
-		MockVolumeVO newsnapshot = new MockVolumeVO();
-		String name = UUID.randomUUID().toString();
-		newsnapshot.setName(name);
-		newsnapshot.setPath(secStorage.getMountPoint() + name);
-		newsnapshot.setPoolId(secStorage.getId());
-		newsnapshot.setSize(snapshot.getSize());
-		newsnapshot.setStatus(Status.DOWNLOADED);
-		newsnapshot.setType(MockVolumeType.SNAPSHOT);
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			snapshot = _mockVolumeDao.persist(snapshot);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when backing up snapshot " + newsnapshot, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		return new BackupSnapshotAnswer(cmd, true, null, newsnapshot.getName(), true);
-	}
-
-	@Override
-	public Answer DeleteSnapshotBackup(DeleteSnapshotBackupCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			MockVolumeVO backSnapshot = _mockVolumeDao.findByName(cmd.getSnapshotUuid());
-			if (backSnapshot == null) {
-				return new Answer(cmd, false, "can't find the backupsnapshot: " + cmd.getSnapshotUuid());
-			}
-			_mockVolumeDao.remove(backSnapshot.getId());
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when deleting snapshot");
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		return new Answer(cmd);
-	}
-
-	@Override
-	public CreateVolumeFromSnapshotAnswer CreateVolumeFromSnapshot(CreateVolumeFromSnapshotCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockVolumeVO backSnapshot = null;
-		MockStoragePoolVO primary = null;
-		try {
-			txn.start();
-			backSnapshot = _mockVolumeDao.findByName(cmd.getSnapshotUuid());
-			if (backSnapshot == null) {
-				return new CreateVolumeFromSnapshotAnswer(cmd, false, "can't find the backupsnapshot: "
-						+ cmd.getSnapshotUuid(), null);
-			}
-
-			primary = _mockStoragePoolDao.findByUuid(cmd.getPrimaryStoragePoolNameLabel());
-			if (primary == null) {
-				return new CreateVolumeFromSnapshotAnswer(cmd, false, "can't find the primary storage: "
-						+ cmd.getPrimaryStoragePoolNameLabel(), null);
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when creating volume from snapshot", ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		String uuid = UUID.randomUUID().toString();
-		MockVolumeVO volume = new MockVolumeVO();
-
-		volume.setName(uuid);
-		volume.setPath(primary.getMountPoint() + uuid);
-		volume.setPoolId(primary.getId());
-		volume.setSize(backSnapshot.getSize());
-		volume.setStatus(Status.DOWNLOADED);
-		volume.setType(MockVolumeType.VOLUME);
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			_mockVolumeDao.persist(volume);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when creating volume from snapshot " + volume, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		return new CreateVolumeFromSnapshotAnswer(cmd, true, null, volume.getPath());
-	}
-
-	@Override
-	public Answer DeleteTemplate(DeleteTemplateCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			MockVolumeVO template = _mockVolumeDao.findByStoragePathAndType(cmd.getTemplatePath());
-			if (template == null) {
-				return new Answer(cmd, false, "can't find template:" + cmd.getTemplatePath());
-			}
-			_mockVolumeDao.remove(template.getId());
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when deleting template");
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		return new Answer(cmd);
-	}
-
-	@Override
-	public Answer SecStorageVMSetup(SecStorageVMSetupCommand cmd) {
-		return new Answer(cmd);
-	}
-
-	@Override
-	public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
-		// TODO Auto-generated method stub
-		return true;
-	}
-
-	@Override
-	public boolean start() {
-		// TODO Auto-generated method stub
-		return true;
-	}
-
-	@Override
-	public boolean stop() {
-		// TODO Auto-generated method stub
-		return true;
-	}
-
-	@Override
-	public String getName() {
-		return this.getClass().getSimpleName();
-	}
-
-	@Override
-	public void preinstallTemplates(String url, long zoneId) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockSecStorageVO storage = null;
-		try {
-			txn.start();
-			storage = _mockSecStorageDao.findByUrl(url);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Unable to find sec storage at " + url, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		if (storage == null) {
-			storage = new MockSecStorageVO();
-			URI uri;
-			try {
-				uri = new URI(url);
-			} catch (URISyntaxException e) {
-				return;
-			}
-
-			String nfsHost = uri.getHost();
-			String nfsPath = uri.getPath();
-			String path = nfsHost + ":" + nfsPath;
-			String dir = "/mnt/" + UUID.nameUUIDFromBytes(path.getBytes()).toString() + File.separator;
-
-			storage.setUrl(url);
-			storage.setCapacity(DEFAULT_HOST_STORAGE_SIZE);
-
-			storage.setMountPoint(dir);
-			txn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				txn.start();
-				storage = _mockSecStorageDao.persist(storage);
-				txn.commit();
-			} catch (Exception ex) {
-				txn.rollback();
-				throw new CloudRuntimeException("Error when saving storage " + storage, ex);
-			} finally {
-				txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
-			}
-
-			// preinstall default templates into secondary storage
-			long defaultTemplateSize = 2 * 1024 * 1024 * 1024L;
-			MockVolumeVO template = new MockVolumeVO();
-			template.setName("simulator-domR");
-			template.setPath(storage.getMountPoint() + "template/tmpl/1/9/" + UUID.randomUUID().toString());
-			template.setPoolId(storage.getId());
-			template.setSize(defaultTemplateSize);
-			template.setType(MockVolumeType.TEMPLATE);
-			template.setStatus(Status.DOWNLOADED);
-			txn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				txn.start();
-				template = _mockVolumeDao.persist(template);
-				txn.commit();
-			} catch (Exception ex) {
-				txn.rollback();
-				throw new CloudRuntimeException("Error when saving template " + template, ex);
-			} finally {
-				txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
-			}
-
-			template = new MockVolumeVO();
-			template.setName("simulator-Centos");
-			template.setPath(storage.getMountPoint() + "template/tmpl/1/10/" + UUID.randomUUID().toString());
-			template.setPoolId(storage.getId());
-			template.setSize(defaultTemplateSize);
-			template.setType(MockVolumeType.TEMPLATE);
-			template.setStatus(Status.DOWNLOADED);
-			txn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				txn.start();
-				template = _mockVolumeDao.persist(template);
-				txn.commit();
-			} catch (Exception ex) {
-				txn.rollback();
-				throw new CloudRuntimeException("Error when saving template " + template, ex);
-			} finally {
-				txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
-			}
-		}
-
-	}
-
-	@Override
-	public StoragePoolInfo getLocalStorage(String hostGuid) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockHost host = null; 
-		MockStoragePoolVO storagePool = null;
-		try {
-			txn.start();
-			host = _mockHostDao.findByGuid(hostGuid);
-			storagePool = _mockStoragePoolDao.findByHost(hostGuid);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Unable to find host " + hostGuid, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		
-		if (storagePool == null) {
-			String uuid = UUID.randomUUID().toString();
-			storagePool = new MockStoragePoolVO();
-			storagePool.setUuid(uuid);
-			storagePool.setMountPoint("/mnt/" + uuid + File.separator);
-			storagePool.setCapacity(DEFAULT_HOST_STORAGE_SIZE);
-			storagePool.setHostGuid(hostGuid);
-			storagePool.setStorageType(StoragePoolType.Filesystem);
-			txn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				txn.start();
-				storagePool = _mockStoragePoolDao.persist(storagePool);
-				txn.commit();
-			} catch (Exception ex) {
-				txn.rollback();
-				throw new CloudRuntimeException("Error when saving storagePool " + storagePool, ex);
-			} finally {
-				txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
-			}
-		}
-		return new StoragePoolInfo(storagePool.getUuid(), host.getPrivateIpAddress(), storagePool.getMountPoint(),
-				storagePool.getMountPoint(), storagePool.getPoolType(), storagePool.getCapacity(), 0);
-	}
-
-	@Override
-	public StoragePoolInfo getLocalStorage(String hostGuid, Long storageSize) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockHost host = null; 
-		try {
-			txn.start();
-			host = _mockHostDao.findByGuid(hostGuid);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Unable to find host " + hostGuid, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		if (storageSize == null) {
-			storageSize = DEFAULT_HOST_STORAGE_SIZE;
-		}
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockStoragePoolVO storagePool = null;
-		try {
-			txn.start();
-			storagePool = _mockStoragePoolDao.findByHost(hostGuid);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when finding storagePool " + storagePool, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		if (storagePool == null) {
-			String uuid = UUID.randomUUID().toString();
-			storagePool = new MockStoragePoolVO();
-			storagePool.setUuid(uuid);
-			storagePool.setMountPoint("/mnt/" + uuid + File.separator);
-			storagePool.setCapacity(storageSize);
-			storagePool.setHostGuid(hostGuid);
-			storagePool.setStorageType(StoragePoolType.Filesystem);
-			txn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				txn.start();
-				storagePool = _mockStoragePoolDao.persist(storagePool);
-				txn.commit();
-			} catch (Exception ex) {
-				txn.rollback();
-				throw new CloudRuntimeException("Error when saving storagePool " + storagePool, ex);
-			} finally {
-				txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
-			}
-		}
-		return new StoragePoolInfo(storagePool.getUuid(), host.getPrivateIpAddress(), storagePool.getMountPoint(),
-				storagePool.getMountPoint(), storagePool.getPoolType(), storagePool.getCapacity(), 0);
-	}
-
-	@Override
-	public CreatePrivateTemplateAnswer CreatePrivateTemplateFromSnapshot(CreatePrivateTemplateFromSnapshotCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockVolumeVO snapshot = null;
-		MockSecStorageVO sec = null;
-		try {
-			txn.start();
-			String snapshotUUId = cmd.getSnapshotUuid();
-			snapshot = _mockVolumeDao.findByName(snapshotUUId);
-			if (snapshot == null) {
-				snapshotUUId = cmd.getSnapshotName();
-				snapshot = _mockVolumeDao.findByName(snapshotUUId);
-				if (snapshot == null) {
-					return new CreatePrivateTemplateAnswer(cmd, false, "can't find snapshot:" + snapshotUUId);
-				}
-			}
-
-			sec = _mockSecStorageDao.findByUrl(cmd.getSecondaryStorageUrl());
-			if (sec == null) {
-				return new CreatePrivateTemplateAnswer(cmd, false, "can't find secondary storage");
-			}
-			txn.commit();
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		MockVolumeVO template = new MockVolumeVO();
-		String uuid = UUID.randomUUID().toString();
-		template.setName(uuid);
-		template.setPath(sec.getMountPoint() + uuid);
-		template.setPoolId(sec.getId());
-		template.setSize(snapshot.getSize());
-		template.setStatus(Status.DOWNLOADED);
-		template.setType(MockVolumeType.TEMPLATE);
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			template = _mockVolumeDao.persist(template);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when saving template " + template, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		return new CreatePrivateTemplateAnswer(cmd, true, "", template.getName(), template.getSize(),
-				template.getSize(), template.getName(), ImageFormat.QCOW2);
-	}
-
-	@Override
-	public Answer ComputeChecksum(ComputeChecksumCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			MockVolumeVO volume = _mockVolumeDao.findByName(cmd.getTemplatePath());
-			if (volume == null) {
-				return new Answer(cmd, false, "cant' find volume:" + cmd.getTemplatePath());
-			}
-			String md5 = null;
-			try {
-				MessageDigest md = MessageDigest.getInstance("md5");
-				md5 = String.format("%032x", new BigInteger(1, md.digest(cmd.getTemplatePath().getBytes())));
-			} catch (NoSuchAlgorithmException e) {
-				s_logger.debug("failed to gernerate md5:" + e.toString());
-			}
-			txn.commit();
-			return new Answer(cmd, true, md5);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-	@Override
-	public CreatePrivateTemplateAnswer CreatePrivateTemplateFromVolume(CreatePrivateTemplateFromVolumeCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockVolumeVO volume = null;
-		MockSecStorageVO sec = null;
-		try {
-			txn.start();
-			volume = _mockVolumeDao.findByStoragePathAndType(cmd.getVolumePath());
-			if (volume == null) {
-				return new CreatePrivateTemplateAnswer(cmd, false, "cant' find volume" + cmd.getVolumePath());
-			}
-
-			sec = _mockSecStorageDao.findByUrl(cmd.getSecondaryStorageUrl());
-			if (sec == null) {
-				return new CreatePrivateTemplateAnswer(cmd, false, "can't find secondary storage");
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Error when creating private template from volume");
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		MockVolumeVO template = new MockVolumeVO();
-		String uuid = UUID.randomUUID().toString();
-		template.setName(uuid);
-		template.setPath(sec.getMountPoint() + uuid);
-		template.setPoolId(sec.getId());
-		template.setSize(volume.getSize());
-		template.setStatus(Status.DOWNLOADED);
-		template.setType(MockVolumeType.TEMPLATE);
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			template = _mockVolumeDao.persist(template);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when persisting template "
-					+ template.getName(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		return new CreatePrivateTemplateAnswer(cmd, true, "", template.getName(), template.getSize(),
-				template.getSize(), template.getName(), ImageFormat.QCOW2);
-	}
-
-	@Override
-	public CopyVolumeAnswer CopyVolume(CopyVolumeCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		boolean toSecondaryStorage = cmd.toSecondaryStorage();
-		MockSecStorageVO sec = null;
-		MockStoragePoolVO primaryStorage = null;
-		try {
-			txn.start();
-			sec = _mockSecStorageDao.findByUrl(cmd.getSecondaryStorageURL());
-			if (sec == null) {
-				return new CopyVolumeAnswer(cmd, false, "can't find secondary storage", null, null);
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when accessing secondary at "
-					+ cmd.getSecondaryStorageURL(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			primaryStorage = _mockStoragePoolDao.findByUuid(cmd.getPool().getUuid());
-			if (primaryStorage == null) {
-				return new CopyVolumeAnswer(cmd, false, "Can't find primary storage", null, null);
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when accessing primary at "
-					+ cmd.getPool(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		MockVolumeVO volume = null;
-		txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			volume = _mockVolumeDao.findByStoragePathAndType(cmd.getVolumePath());
-			if (volume == null) {
-				return new CopyVolumeAnswer(cmd, false, "cant' find volume" + cmd.getVolumePath(), null, null);
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when accessing volume at "
-					+ cmd.getVolumePath(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-
-		String name = UUID.randomUUID().toString();
-		if (toSecondaryStorage) {
-			MockVolumeVO vol = new MockVolumeVO();
-			vol.setName(name);
-			vol.setPath(sec.getMountPoint() + name);
-			vol.setPoolId(sec.getId());
-			vol.setSize(volume.getSize());
-			vol.setStatus(Status.DOWNLOADED);
-			vol.setType(MockVolumeType.VOLUME);
-			txn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				txn.start();
-				vol = _mockVolumeDao.persist(vol);
-				txn.commit();
-			} catch (Exception ex) {
-				txn.rollback();
-				throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when persisting volume "
-						+ vol.getName(), ex);
-			} finally {
-				txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
-			}
-			return new CopyVolumeAnswer(cmd, true, null, sec.getMountPoint(), vol.getPath());
-		} else {
-			MockVolumeVO vol = new MockVolumeVO();
-			vol.setName(name);
-			vol.setPath(primaryStorage.getMountPoint() + name);
-			vol.setPoolId(primaryStorage.getId());
-			vol.setSize(volume.getSize());
-			vol.setStatus(Status.DOWNLOADED);
-			vol.setType(MockVolumeType.VOLUME);
-			txn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				txn.start();
-				vol = _mockVolumeDao.persist(vol);
-				txn.commit();
-			} catch (Exception ex) {
-				txn.rollback();
-				throw new CloudRuntimeException("Encountered " + ex.getMessage() + " when persisting volume "
-						+ vol.getName(), ex);
-			} finally {
-				txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
-			}
-			return new CopyVolumeAnswer(cmd, true, null, primaryStorage.getMountPoint(), vol.getPath());
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d6083ce5/agent-simulator/src/com/cloud/agent/manager/MockVmManager.java
----------------------------------------------------------------------
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockVmManager.java b/agent-simulator/src/com/cloud/agent/manager/MockVmManager.java
deleted file mode 100644
index 07cf584..0000000
--- a/agent-simulator/src/com/cloud/agent/manager/MockVmManager.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.agent.manager;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.cloud.agent.api.*;
-import com.cloud.agent.api.check.CheckSshAnswer;
-import com.cloud.agent.api.check.CheckSshCommand;
-import com.cloud.agent.api.proxy.CheckConsoleProxyLoadCommand;
-import com.cloud.agent.api.proxy.WatchConsoleProxyLoadCommand;
-import com.cloud.agent.api.routing.DhcpEntryCommand;
-import com.cloud.agent.api.routing.IpAssocCommand;
-import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
-import com.cloud.agent.api.routing.SavePasswordCommand;
-import com.cloud.agent.api.routing.SetFirewallRulesCommand;
-import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
-import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
-import com.cloud.agent.api.routing.VmDataCommand;
-import com.cloud.simulator.MockVMVO;
-import com.cloud.utils.Pair;
-import com.cloud.utils.component.Manager;
-import com.cloud.vm.VirtualMachine.State;
-
-public interface MockVmManager extends Manager {
-    public Answer stopVM(StopCommand cmd);
-	public Answer rebootVM(RebootCommand cmd);
-    
-    public Answer checkVmState(CheckVirtualMachineCommand cmd);
-    public Map<String, State> getVmStates(String hostGuid);
-    public Answer getVncPort(GetVncPortCommand cmd);
-
-	Answer startVM(StartCommand cmd, SimulatorInfo info);
-
-	Answer getVmStats(GetVmStatsCommand cmd);
-    public CheckSshAnswer checkSshCommand(CheckSshCommand cmd);
-    
-    Answer SetStaticNatRules(SetStaticNatRulesCommand cmd);
-    
-    Answer SetPortForwardingRules(SetPortForwardingRulesCommand cmd);
-
-    Answer SetFirewallRules(SetFirewallRulesCommand cmd);
-    
-    Answer getNetworkUsage(NetworkUsageCommand cmd);
-    
-    Answer IpAssoc(IpAssocCommand cmd);
-
-    Answer LoadBalancerConfig(LoadBalancerConfigCommand cmd);
-    
-    Answer AddDhcpEntry(DhcpEntryCommand cmd);
-    
-    Answer setVmData(VmDataCommand cmd);
-    Answer CleanupNetworkRules(CleanupNetworkRulesCmd cmd, SimulatorInfo info);
-    
-    Answer CheckConsoleProxyLoad(CheckConsoleProxyLoadCommand cmd);
-    Answer WatchConsoleProxyLoad(WatchConsoleProxyLoadCommand cmd);
-    
-    Answer SavePassword(SavePasswordCommand cmd);
-    HashMap<String, Pair<Long, Long>> syncNetworkGroups(SimulatorInfo info);
-    SecurityGroupRuleAnswer AddSecurityGroupRules(SecurityGroupRulesCmd cmd, SimulatorInfo info);
-	MigrateAnswer Migrate(MigrateCommand cmd, SimulatorInfo info);
-	GetDomRVersionAnswer getDomRVersion(GetDomRVersionCmd cmd);
-	Map<String, MockVMVO> getVms(String hostGuid);
-
-    CheckRouterAnswer checkRouter(CheckRouterCommand cmd);
-
-    Answer bumpPriority(BumpUpPriorityCommand cmd);
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d6083ce5/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java b/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
deleted file mode 100644
index 78881f2..0000000
--- a/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java
+++ /dev/null
@@ -1,615 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.agent.manager;
-
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.ejb.Local;
-import javax.naming.ConfigurationException;
-
-import com.cloud.agent.api.*;
-import com.cloud.agent.api.routing.*;
-import com.cloud.network.router.VirtualRouter;
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.check.CheckSshAnswer;
-import com.cloud.agent.api.check.CheckSshCommand;
-import com.cloud.agent.api.proxy.CheckConsoleProxyLoadCommand;
-import com.cloud.agent.api.proxy.WatchConsoleProxyLoadCommand;
-import com.cloud.agent.api.to.NicTO;
-import com.cloud.agent.api.to.VirtualMachineTO;
-import com.cloud.network.Networks.TrafficType;
-import com.cloud.simulator.MockHost;
-import com.cloud.simulator.MockSecurityRulesVO;
-import com.cloud.simulator.MockVMVO;
-import com.cloud.simulator.MockVm;
-import com.cloud.simulator.dao.MockHostDao;
-import com.cloud.simulator.dao.MockSecurityRulesDao;
-import com.cloud.simulator.dao.MockVMDao;
-import com.cloud.utils.Pair;
-import com.cloud.utils.Ternary;
-import com.cloud.utils.component.Inject;
-import com.cloud.utils.db.Transaction;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.vm.VirtualMachine.State;
-
-@Local(value = { MockVmManager.class })
-public class MockVmManagerImpl implements MockVmManager {
-    private static final Logger s_logger = Logger.getLogger(MockVmManagerImpl.class);
-
-	@Inject MockVMDao _mockVmDao = null;
-	@Inject MockAgentManager _mockAgentMgr = null;
-	@Inject MockHostDao _mockHostDao = null;
-	@Inject MockSecurityRulesDao _mockSecurityDao = null;
-	private Map<String, Map<String, Ternary<String, Long, Long>>> _securityRules = new ConcurrentHashMap<String, Map<String, Ternary<String, Long, Long>>>();
-	
-	public MockVmManagerImpl() {
-	}
-	
-	@Override
-    public boolean configure(String name, Map<String, Object> params)
-            throws ConfigurationException {
-	    
-	    return true;
-	}
-	
-    public String startVM(String vmName, NicTO[] nics,
-        	int cpuHz, long ramSize,
-        	String bootArgs, String hostGuid) {
-
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		MockHost host = null;
-		MockVm vm = null;
-		try {
-			txn.start();
-			host = _mockHostDao.findByGuid(hostGuid);
-			if (host == null) {
-				return "can't find host";
-			}
-
-			vm = _mockVmDao.findByVmName(vmName);
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("Unable to start VM " + vmName, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-    	
-        if(vm == null) {
-            int vncPort = 0;
-            if(vncPort < 0)
-                return "Unable to allocate VNC port";
-            vm = new MockVMVO();
-            vm.setCpu(cpuHz);
-            vm.setMemory(ramSize);
-            vm.setState(State.Running);
-            vm.setName(vmName);
-            vm.setVncPort(vncPort);
-            vm.setHostId(host.getId());
-            if(vmName.startsWith("s-")) {
-            	vm.setType("SecondaryStorageVm");
-            } else if (vmName.startsWith("v-")) {
-            	vm.setType("ConsoleProxy");
-            } else if (vmName.startsWith("r-")) {
-            	vm.setType("DomainRouter");
-            } else if (vmName.startsWith("i-")) {
-            	vm.setType("User");
-            }
-            txn = Transaction.open(Transaction.SIMULATOR_DB);
-			try {
-				txn.start();
-				vm = _mockVmDao.persist((MockVMVO) vm);
-				txn.commit();
-			} catch (Exception ex) {
-				txn.rollback();
-				throw new CloudRuntimeException("unable to save vm to db " + vm.getName(), ex);
-			} finally {
-				txn.close();
-                txn = Transaction.open(Transaction.CLOUD_DB);
-                txn.close();
-			}
-        } else {
-            if(vm.getState() == State.Stopped) {
-                vm.setState(State.Running);
-                txn = Transaction.open(Transaction.SIMULATOR_DB);
-    			try {
-    				txn.start();
-    				_mockVmDao.update(vm.getId(), (MockVMVO)vm);
-    				txn.commit();
-    			} catch (Exception ex) {
-    				txn.rollback();
-    				throw new CloudRuntimeException("unable to update vm " + vm.getName(), ex);
-    			} finally {
-    				txn.close();
-                    txn = Transaction.open(Transaction.CLOUD_DB);
-                    txn.close();
-    			}
-            }
-        }
-
-        if (vm.getState() == State.Running && vmName.startsWith("s-")) {
-            String prvIp = null;
-            String prvMac = null;
-            String prvNetMask = null;
-
-            for (NicTO nic : nics) {
-                if (nic.getType() == TrafficType.Management) {
-                    prvIp = nic.getIp();
-                    prvMac = nic.getMac();
-                    prvNetMask = nic.getNetmask();
-                }
-            }
-            long dcId = 0;
-            long podId = 0;
-            String name = null;
-            String vmType = null;
-            String url = null;
-            String[] args = bootArgs.trim().split(" ");
-            for (String arg : args) {
-                String[] params = arg.split("=");
-                if (params.length < 1) {
-                    continue;
-                }
-
-                if (params[0].equalsIgnoreCase("zone")) {
-                    dcId = Long.parseLong(params[1]);
-                } else if (params[0].equalsIgnoreCase("name")) {
-                    name = params[1];
-                } else if (params[0].equalsIgnoreCase("type")) {
-                    vmType = params[1];
-                } else if (params[0].equalsIgnoreCase("url")) {
-                    url = params[1];
-                } else if (params[0].equalsIgnoreCase("pod")) {
-                    podId = Long.parseLong(params[1]);
-                }
-            }
-
-            _mockAgentMgr.handleSystemVMStart(vm.getId(), prvIp, prvMac, prvNetMask, dcId, podId, name, vmType, url);
-        }
-
-        return null;
-    }
-
-	public boolean rebootVM(String vmName) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			MockVm vm = _mockVmDao.findByVmName(vmName);
-			if (vm != null) {
-				vm.setState(State.Running);
-				_mockVmDao.update(vm.getId(), (MockVMVO) vm);
-
-			}
-			txn.commit();
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("unable to reboot vm " + vmName, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-		return true;
-	}
-	
-	@Override
-	public Map<String, MockVMVO> getVms(String hostGuid) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			List<MockVMVO> vms = _mockVmDao.findByHostGuid(hostGuid);
-			Map<String, MockVMVO> vmMap = new HashMap<String, MockVMVO>();
-			for (MockVMVO vm : vms) {
-				vmMap.put(vm.getName(), vm);
-			}
-			txn.commit();
-			return vmMap;
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("unable to fetch vms  from host " + hostGuid, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-    @Override
-    public CheckRouterAnswer checkRouter(CheckRouterCommand cmd) {
-        String router_name = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
-        int router_id = Integer.parseInt(router_name.split("-")[1]);
-        if (router_id % 2 == 0) {
-            s_logger.debug("Found even routerId, making it MASTER in RvR");
-            CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: MASTER & Bumped: NO", true);
-            ans.setState(VirtualRouter.RedundantState.MASTER);
-            return ans;
-        } else {
-            s_logger.debug("Found odd routerId, making it BACKUP in RvR");
-            CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: MASTER & Bumped: NO", true);
-            ans.setState(VirtualRouter.RedundantState.BACKUP);
-            return ans;
-        }
-    }
-
-    @Override
-    public Answer bumpPriority(BumpUpPriorityCommand cmd) {
-        String router_name = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
-        int router_id = Integer.parseInt(router_name.split("-")[1]);
-        if (router_id % 2 == 0) {
-            return new Answer(cmd, true, "Status: MASTER & Bumped: YES");
-        } else {
-            return new Answer(cmd, true, "Status: BACKUP & Bumped: YES");
-        }
-
-    }
-
-    @Override
-	public Map<String, State> getVmStates(String hostGuid) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			Map<String, State> states = new HashMap<String, State>();
-			List<MockVMVO> vms = _mockVmDao.findByHostGuid(hostGuid);
-			if (vms.isEmpty()) {
-				txn.commit();
-				return states;
-			}
-			for (MockVm vm : vms) {
-				states.put(vm.getName(), vm.getState());
-			}
-			txn.commit();
-			return states;
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("unable to fetch vms  from host " + hostGuid, ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-    @Override
-    public boolean start() {
-        return true;
-    }
-
-    @Override
-    public boolean stop() {
-        return true;
-    }
-
-    @Override
-    public String getName() {
-        return this.getClass().getSimpleName();
-    }	
-    
-    @Override
-    public Answer getVmStats(GetVmStatsCommand cmd) {
-        HashMap<String, VmStatsEntry> vmStatsNameMap = new HashMap<String, VmStatsEntry>();
-        List<String> vmNames = cmd.getVmNames();
-        for (String vmName : vmNames) {
-            VmStatsEntry entry = new VmStatsEntry(0, 0, 0, 0, "vm");
-            entry.setNetworkReadKBs(32768); // default values 256 KBps
-            entry.setNetworkWriteKBs(16384);
-            entry.setCPUUtilization(10);
-            entry.setNumCPUs(1);
-            vmStatsNameMap.put(vmName, entry);
-        }
-        return new GetVmStatsAnswer(cmd, vmStatsNameMap);
-    }
-
-    @Override
-	public CheckVirtualMachineAnswer checkVmState(CheckVirtualMachineCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			MockVMVO vm = _mockVmDao.findByVmName(cmd.getVmName());
-			if (vm == null) {
-				return new CheckVirtualMachineAnswer(cmd, "can't find vm:" + cmd.getVmName());
-			}
-
-			txn.commit();
-			return new CheckVirtualMachineAnswer(cmd, vm.getState(), vm.getVncPort());
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("unable to fetch vm state " + cmd.getVmName(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-    @Override
-    public Answer startVM(StartCommand cmd, SimulatorInfo info) {
-        VirtualMachineTO vm = cmd.getVirtualMachine();
-        String result = startVM(vm.getName(), vm.getNics(), vm.getCpus()* vm.getSpeed(), vm.getMaxRam(), vm.getBootArgs(), info.getHostUuid());
-        if (result != null) {
-            return new StartAnswer(cmd, result);
-        } else {
-            return new StartAnswer(cmd);
-        }
-    }
-
-    @Override
-    public CheckSshAnswer checkSshCommand(CheckSshCommand cmd) {
-        return new CheckSshAnswer(cmd);
-    }
-
-    @Override
-    public Answer SetStaticNatRules(SetStaticNatRulesCommand cmd) {
-        return new Answer(cmd);
-    }
-
-    @Override
-    public Answer SetPortForwardingRules(SetPortForwardingRulesCommand cmd) {
-        return new Answer(cmd);
-    }
-
-    @Override
-    public Answer SetFirewallRules(SetFirewallRulesCommand cmd) {
-    	return new Answer(cmd);
-    }
-    
-
-    @Override
-    public NetworkUsageAnswer getNetworkUsage(NetworkUsageCommand cmd) {
-        return new NetworkUsageAnswer(cmd, null, 100L, 100L);
-    }
-
-    @Override
-	public MigrateAnswer Migrate(MigrateCommand cmd, SimulatorInfo info) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			String vmName = cmd.getVmName();
-			String destGuid = cmd.getHostGuid();
-			MockVMVO vm = _mockVmDao.findByVmNameAndHost(vmName, info.getHostUuid());
-			if (vm == null) {
-				return new MigrateAnswer(cmd, false, "can;t find vm:" + vmName + " on host:" + info.getHostUuid(), null);
-			}
-
-			MockHost destHost = _mockHostDao.findByGuid(destGuid);
-			if (destHost == null) {
-				return new MigrateAnswer(cmd, false, "can;t find host:" + info.getHostUuid(), null);
-			}
-			vm.setHostId(destHost.getId());
-			_mockVmDao.update(vm.getId(), vm);
-			txn.commit();
-			return new MigrateAnswer(cmd, true, null, 0);
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("unable to migrate vm " + cmd.getVmName(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-    @Override
-    public Answer IpAssoc(IpAssocCommand cmd) {
-        return new Answer(cmd);
-    }
-
-    @Override
-    public Answer LoadBalancerConfig(LoadBalancerConfigCommand cmd) {
-        return new Answer(cmd);
-    }
-
-    @Override
-    public Answer AddDhcpEntry(DhcpEntryCommand cmd) {
-        return new Answer(cmd);
-    }
-
-    @Override
-    public Answer setVmData(VmDataCommand cmd) {
-        return new Answer(cmd);
-    }
-
-    @Override
-	public Answer CleanupNetworkRules(CleanupNetworkRulesCmd cmd, SimulatorInfo info) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			List<MockSecurityRulesVO> rules = _mockSecurityDao.findByHost(info.getHostUuid());
-			for (MockSecurityRulesVO rule : rules) {
-				MockVMVO vm = _mockVmDao.findByVmNameAndHost(rule.getVmName(), info.getHostUuid());
-				if (vm == null) {
-					_mockSecurityDao.remove(rule.getId());
-				}
-			}
-			txn.commit();
-			return new Answer(cmd);
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("unable to clean up rules", ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-    @Override
-	public Answer stopVM(StopCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			String vmName = cmd.getVmName();
-			MockVm vm = _mockVmDao.findByVmName(vmName);
-			if (vm != null) {
-				vm.setState(State.Stopped);
-				_mockVmDao.update(vm.getId(), (MockVMVO) vm);
-			}
-
-			if (vmName.startsWith("s-")) {
-				_mockAgentMgr.handleSystemVMStop(vm.getId());
-			}
-			txn.commit();
-			return new StopAnswer(cmd, null, new Integer(0), true);
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("unable to stop vm " + cmd.getVmName(), ex);
-		} finally {
-			txn.close();
-            txn = Transaction.open(Transaction.CLOUD_DB);
-            txn.close();
-		}
-	}
-
-    @Override
-	public Answer rebootVM(RebootCommand cmd) {
-		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
-		try {
-			txn.start();
-			MockVm vm = _mockVmDao.findByVmName(cmd.getVmName());
-			if (vm != null) {
-				vm.setState(State.Running);
-				_mockVmDao.update(vm.getId(), (MockVMVO) vm);
-			}
-			txn.commit();
-			return new RebootAnswer(cmd, "Rebooted " + cmd.getVmName(), true);
-		} catch (Exception ex) {
-			txn.rollback();
-			throw new CloudRuntimeException("unable to stop vm " + cmd.getVmName(), ex);
-		} finally {
-			txn.close();
-			txn = Transaction.open(Transaction.CLOUD_DB);
-			txn.close();
-		}
-	}
-
-    @Override
-    public Answer getVncPort(GetVncPortCommand cmd) {
-          return new GetVncPortAnswer(cmd, 0);
-    }
-
-    @Override
-    public Answer CheckConsoleProxyLoad(CheckConsoleProxyLoadCommand cmd) {
-        return Answer.createUnsupportedCommandAnswer(cmd);
-    }
-
-    @Override
-    public Answer WatchConsoleProxyLoad(WatchConsoleProxyLoadCommand cmd) {
-        return Answer.createUnsupportedCommandAnswer(cmd);
-    }
-    
-    @Override
-    public GetDomRVersionAnswer getDomRVersion(GetDomRVersionCmd cmd) {
-    	return new GetDomRVersionAnswer(cmd, null, null, null);
-    }
-
-    @Override
-    public SecurityGroupRuleAnswer AddSecurityGroupRules(SecurityGroupRulesCmd cmd, SimulatorInfo info) {
-        if (!info.isEnabled()) {
-        	return new SecurityGroupRuleAnswer(cmd, false, "Disabled", SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
-        }
-        
-        Map<String, Ternary<String,Long, Long>> rules = _securityRules.get(info.getHostUuid());
-       
-        if (rules == null) {
-            logSecurityGroupAction(cmd, null);
-            rules = new ConcurrentHashMap<String, Ternary<String, Long, Long>>();
-            rules.put(cmd.getVmName(), new Ternary<String,Long, Long>(cmd.getSignature(), cmd.getVmId(), cmd.getSeqNum()));
-            _securityRules.put(info.getHostUuid(), rules);
-        } else {
-            logSecurityGroupAction(cmd, rules.get(cmd.getVmName()));
-            rules.put(cmd.getVmName(), new Ternary<String, Long,Long>(cmd.getSignature(), cmd.getVmId(), cmd.getSeqNum()));
-        }
-        
-        return new SecurityGroupRuleAnswer(cmd);
-    }
-    
-    private boolean logSecurityGroupAction(SecurityGroupRulesCmd cmd, Ternary<String,Long, Long> rule) {
-        String action = ", do nothing";
-        String reason = ", reason=";
-        Long currSeqnum = rule == null? null: rule.third();
-        String currSig = rule == null? null: rule.first();
-        boolean updateSeqnoAndSig = false;
-        if (currSeqnum != null) {
-            if (cmd.getSeqNum() > currSeqnum) {
-                s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum);
-                updateSeqnoAndSig = true;
-                if (!cmd.getSignature().equals(currSig)) {
-                    s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum 
-                            + " new signature received:" + cmd.getSignature()  + " curr=" + currSig + ", updated iptables");
-                    action = ", updated iptables";
-                    reason = reason + "seqno_increased_sig_changed";
-                } else {
-                    s_logger.info("New seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum 
-                            + " no change in signature:" + cmd.getSignature() +  ", do nothing"); 
-                    reason = reason + "seqno_increased_sig_same";
-                }
-            } else if (cmd.getSeqNum() < currSeqnum) {
-                s_logger.info("Older seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum + ", do nothing");
-                reason = reason + "seqno_decreased";
-            } else {
-                if (!cmd.getSignature().equals(currSig)) {
-                    s_logger.info("Identical seqno received: " + cmd.getSeqNum()   
-                            + " new signature received:" + cmd.getSignature()  + " curr=" + currSig + ", updated iptables");
-                    action = ", updated iptables";
-                    reason = reason + "seqno_same_sig_changed";
-                    updateSeqnoAndSig = true;
-                } else {
-                    s_logger.info("Identical seqno received: " + cmd.getSeqNum() + " curr=" + currSeqnum 
-                            + " no change in signature:" + cmd.getSignature() +  ", do nothing"); 
-                    reason = reason + "seqno_same_sig_same";
-                }
-            }
-        } else {
-            s_logger.info("New seqno received: " + cmd.getSeqNum() + " old=null");
-            updateSeqnoAndSig = true;
-            action = ", updated iptables";
-            reason = ", seqno_new";
-        }
-        s_logger.info("Programmed network rules for vm " + cmd.getVmName() + " seqno=" + cmd.getSeqNum() 
-                + " signature=" + cmd.getSignature() 
-                + " guestIp=" + cmd.getGuestIp() + ", numIngressRules="
-                + cmd.getIngressRuleSet().length + ", numEgressRules="
-                + cmd.getEgressRuleSet().length + " total cidrs=" + cmd.getTotalNumCidrs() + action + reason);
-        return updateSeqnoAndSig;
-    }
-
-    @Override
-    public Answer SavePassword(SavePasswordCommand cmd) {
-        return new Answer(cmd); 
-    }
-    
-    @Override
-    public HashMap<String, Pair<Long, Long>> syncNetworkGroups(SimulatorInfo info) {
-        HashMap<String, Pair<Long, Long>> maps = new HashMap<String, Pair<Long, Long>>();
-        
-        Map<String, Ternary<String, Long, Long>> rules = _securityRules.get(info.getHostUuid());
-        if (rules == null) {
-            return maps;
-        }
-        for (Map.Entry<String,Ternary<String, Long, Long>> rule : rules.entrySet()) {
-            maps.put(rule.getKey(), new Pair<Long, Long>(rule.getValue().second(), rule.getValue().third()));
-        }
-        return maps;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d6083ce5/agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java
----------------------------------------------------------------------
diff --git a/agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java b/agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java
deleted file mode 100644
index dafd33a..0000000
--- a/agent-simulator/src/com/cloud/agent/manager/SimulatorInfo.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.agent.manager;
-
-public class SimulatorInfo {
-	private boolean enabled;
-	private int timeout;
-	private String hostUuid;
-	
-	public SimulatorInfo(boolean enabled, int timeout, String hostUuid) {
-		this.enabled = enabled;
-		this.timeout = timeout;
-		this.hostUuid = hostUuid;
-	}
-	
-	public SimulatorInfo() {
-		this.enabled = true;
-		this.timeout = -1;
-		this.hostUuid = null;
-	}
-	
-	public boolean isEnabled() {
-		return this.enabled;
-	}
-	
-	public int getTimeout() {
-		return this.timeout;
-	}
-	
-	public String getHostUuid() {
-		return this.hostUuid;
-	}
-	
-	public void setEnabled(boolean enabled) {
-		this.enabled = enabled;
-	}
-	
-	public void setTimeout(int timeout) {
-		this.timeout = timeout;
-	}
-	
-	public void setHostUuid(String hostUuid) {
-		this.hostUuid = hostUuid;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d6083ce5/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java
----------------------------------------------------------------------
diff --git a/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java b/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java
deleted file mode 100755
index 2b31b14..0000000
--- a/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.agent.manager;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.Command;
-import com.cloud.agent.api.StoragePoolInfo;
-import com.cloud.agent.mockvm.MockVm;
-import com.cloud.simulator.MockVMVO;
-import com.cloud.utils.Pair;
-import com.cloud.utils.component.Manager;
-import com.cloud.vm.VirtualMachine.State;
-
-public interface SimulatorManager extends Manager {
-	public static final String Name = "simulator manager";
-	
-	public enum AgentType {
-		Computing(0), // not used anymore
-		Routing(1), 
-		Storage(2);
-
-		int value;
-
-		AgentType(int value) {
-			this.value = value;
-		}
-
-		public int value() {
-			return value;
-		}
-	}
-
-    MockVmManager getVmMgr();
-
-    MockStorageManager getStorageMgr();
-
-    MockAgentManager getAgentMgr();
-
-    Answer simulate(Command cmd, String hostGuid);
-    StoragePoolInfo getLocalStorage(String hostGuid);
-    
-    boolean configureSimulator(Long zoneId, Long podId, Long clusterId, Long hostId, String command, String values);
-    public HashMap<String, Pair<Long, Long>> syncNetworkGroups(String hostGuid);
-
-    Map<String, State> getVmStates(String hostGuid);
-
-	Map<String, MockVMVO> getVms(String hostGuid);
-}
\ No newline at end of file