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

[6/7] more files changed

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/fac22702/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
index f139254..3c371bc 100644
--- a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java
@@ -28,9 +28,9 @@ import java.util.Map;
 import java.util.UUID;
 
 import javax.ejb.Local;
+import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
-import com.cloud.agent.api.storage.*;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.api.Answer;
@@ -57,6 +57,22 @@ 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.ListVolumeAnswer;
+import com.cloud.agent.api.storage.ListVolumeCommand;
+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;
@@ -71,13 +87,11 @@ 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;
 import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
 import com.cloud.storage.template.TemplateInfo;
-
 import com.cloud.utils.db.Transaction;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.DiskProfile;
@@ -85,1244 +99,1244 @@ 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();
+    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) {
+    @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();
+        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();
+        }
+
+        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();
+        }
+        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();
+        }
+
+        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();
+        }
+
+        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();
+        }
+    }
+
+    @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();
+        }
+        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();
+        }
+    }
+
+    @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();
+        }
+        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();
+        }
+        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());
-	}
+        }
+        return new SecStorageSetupAnswer(storage.getMountPoint());
+    }
 
     @Override
-	public Answer ListVolumes(ListVolumeCommand 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();
+    public Answer ListVolumes(ListVolumeCommand 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> volumes = _mockVolumeDao.findByStorageIdAndType(storage.getId(),
-					MockVolumeType.VOLUME);
-
-			Map<Long, TemplateInfo> templateInfos = new HashMap<Long, TemplateInfo>();
-			for (MockVolumeVO volume : volumes) {
-				templateInfos.put(volume.getId(), new TemplateInfo(volume.getName(), volume.getPath()
-						.replaceAll(storage.getMountPoint(), ""), volume.getSize(), volume.getSize(), true, false));
-			}
-			txn.commit();
-			return new ListVolumeAnswer(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.SIMULATOR_DB);
+        try {
+            txn.start();
+            List<MockVolumeVO> volumes = _mockVolumeDao.findByStorageIdAndType(storage.getId(),
+                    MockVolumeType.VOLUME);
+
+            Map<Long, TemplateInfo> templateInfos = new HashMap<Long, TemplateInfo>();
+            for (MockVolumeVO volume : volumes) {
+                templateInfos.put(volume.getId(), new TemplateInfo(volume.getName(), volume.getPath()
+                        .replaceAll(storage.getMountPoint(), ""), volume.getSize(), volume.getSize(), true, false));
+            }
+            txn.commit();
+            return new ListVolumeAnswer(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 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();
+        }
+    }
+
+    @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.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();
+        }
+    }
+
+    @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();
+        }
+        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();
+        }
+
+        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();
+        }
+        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();
+        }
+    }
+
+    @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();
+        }
+    }
+
+    @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();
+        }
+
+        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();
+        }
+
+        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();
+        }
+
+        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();
+        }
+
+        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();
+        }
+        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();
+        }
+
+        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();
+        }
+
+        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();
+        }
+        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();
+        }
+        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/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();
+            }
+
+            // 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/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();
-			}
-
-			template = new MockVolumeVO();
-			template.setName("simulator-Centos");
-			template.setPath(storage.getMountPoint() + "template/tmpl/1/11/" + 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();
+            }
+
+            template = new MockVolumeVO();
+            template.setName("simulator-Centos");
+            template.setPath(storage.getMountPoint() + "template/tmpl/1/11/" + 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();
+            }
+        }
+
+    }
+
+    @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();
+        }
+
+        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();
+            }
+        }
+        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();
+        }
+        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();
+        }
+        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();
+            }
+        }
+        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();
+        }
+
+        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();
+        }
+
+        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();
+        }
+    }
+
+    @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();
+        }
+
+        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();
+        }
+
+        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.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();
+        }
+
+        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

<TRUNCATED>