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

[1/8] git commit: starting unit test

Updated Branches:
  refs/heads/javelin d62da2a7b -> 550f4fbcd


starting unit test


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

Branch: refs/heads/javelin
Commit: 573d13dd7c9d0baa1655fda1e1a8e49d702288c4
Parents: d62da2a
Author: Edison Su <su...@gmail.com>
Authored: Mon Nov 19 17:59:50 2012 -0800
Committer: Edison Su <su...@gmail.com>
Committed: Tue Nov 20 18:57:19 2012 -0800

----------------------------------------------------------------------
 engine/components-api/PrimaryDataStore.java        |   34 -
 .../org/apache/cloudstack/storage/BaseType.java    |   36 +-
 .../cloudstack/storage/HypervisorHostEndPoint.java |   45 +-
 .../storage/StorageOrchestratorImpl.java           |  553 +++++-----
 .../cloudstack/storage/StorageProviderManager.java |   11 +-
 .../storage/StorageProviderManagerImpl.java        |   81 +-
 .../apache/cloudstack/storage/VolumeBackupRef.java |   38 +-
 .../storage/backup/BackupMotionService.java        |    2 +-
 .../cloudstack/storage/backup/BackupService.java   |    5 +-
 .../command/CopyTemplateToPrimaryStorage.java      |   32 +-
 .../storage/command/CreateVolumeAnswer.java        |   25 +-
 .../storage/command/CreateVolumeCommand.java       |   31 +-
 .../command/CreateVolumeFromBaseImageCommand.java  |   24 +-
 .../storage/datastore/DataStoreStatus.java         |    8 +-
 .../storage/datastore/DefaultDataStore.java        |  411 ++++----
 .../datastore/DefaultPrimaryDataStoreImpl.java     |  281 +++---
 .../storage/datastore/PrimaryDataStore.java        |   38 +-
 .../datastore/PrimaryDataStoreInfoImpl.java        |   89 +-
 .../storage/datastore/db/DataStoreVO.java          |  259 ++--
 .../storage/datastore/db/PrimaryDataStoreDao.java  |   94 +-
 .../datastore/db/PrimaryDataStoreDaoImpl.java      |  447 ++++----
 .../datastore/db/PrimaryDataStoreDetailVO.java     |   79 ++
 .../datastore/db/PrimaryDataStoreDetailsDao.java   |   28 +
 .../db/PrimaryDataStoreDetailsDaoImpl.java         |   71 ++
 .../datastore/db/PrimaryDataStoreProviderDao.java  |    2 +-
 .../db/PrimaryDataStoreProviderDaoImpl.java        |    2 +-
 .../datastore/db/PrimaryDataStoreProviderVO.java   |   12 +-
 .../driver/DefaultPrimaryDataStoreDriverImpl.java  |  169 ++--
 .../datastore/driver/PrimaryDataStoreDriver.java   |   15 +-
 .../DefaultPrimaryDataStoreLifeCycleImpl.java      |   70 +-
 .../lifecycle/PrimaryDataStoreLifeCycle.java       |   20 +-
 .../DefaultPrimaryDataStoreManagerImpl.java        |   39 +-
 .../datastore/manager/PrimaryDataStoreManager.java |    5 +-
 .../DefaultPrimaryDatastoreProviderImpl.java       |   54 +-
 .../provider/PrimaryDataStoreProvider.java         |    7 +-
 .../provider/PrimaryDataStoreProviderManager.java  |    3 +-
 .../PrimaryDataStoreProviderManagerImpl.java       |   10 +-
 .../cloudstack/storage/datastore/type/ISCSI.java   |   11 +-
 .../storage/datastore/type/NetworkFileSystem.java  |   11 +-
 .../storage/datastore/type/SharedMount.java        |   11 +-
 .../storage/driver/AbstractStorageDriver.java      |   79 +-
 .../storage/driver/DefaultNfsSecondaryDriver.java  |   94 +-
 .../storage/driver/XenServerStorageDriver.java     |   86 +-
 .../cloudstack/storage/image/ImageManager.java     |   10 +-
 .../cloudstack/storage/image/ImageManagerImpl.java |  206 ++--
 .../storage/image/ImageOrchestrator.java           |   11 +-
 .../storage/image/ImageOrchestratorImpl.java       |   76 +-
 .../cloudstack/storage/image/ImageService.java     |   27 +-
 .../cloudstack/storage/image/ImageServiceImpl.java |  105 +-
 .../storage/image/TemplateEntityImpl.java          |   12 +-
 .../cloudstack/storage/image/TemplateInfo.java     |   12 +-
 .../cloudstack/storage/image/TemplateObject.java   |   54 +-
 .../storage/image/db/ImageDaoStoreDaoImpl.java     |    1 +
 .../cloudstack/storage/image/db/ImageDataDao.java  |   70 +-
 .../storage/image/db/ImageDataDaoImpl.java         |  953 ++++++++-------
 .../image/db/ImageDataStoreProviderDao.java        |    1 -
 .../storage/image/db/ImageDataStoreProviderVO.java |   22 +-
 .../storage/image/db/ImageDataStoreVO.java         |   34 +-
 .../cloudstack/storage/image/db/ImageDataVO.java   |  150 ++--
 .../storage/image/downloader/ImageDownloader.java  |    2 +-
 .../storage/image/driver/ImageDataStoreDriver.java |   11 +-
 .../image/driver/ImageDataStoreDriverImpl.java     |   55 +-
 .../cloudstack/storage/image/format/BAREMETAL.java |   11 +-
 .../cloudstack/storage/image/format/ISO.java       |   11 +-
 .../storage/image/format/ImageFormatHelper.java    |   31 +-
 .../cloudstack/storage/image/format/OVA.java       |   11 +-
 .../cloudstack/storage/image/format/QCOW2.java     |   11 +-
 .../cloudstack/storage/image/format/Unknown.java   |   12 +-
 .../cloudstack/storage/image/format/VHD.java       |   13 +-
 .../image/manager/ImageDataStoreManager.java       |    2 +-
 .../image/manager/ImageDataStoreManagerImpl.java   |   21 +-
 .../image/motion/DefaultImageMotionStrategy.java   |   36 +-
 .../storage/image/motion/ImageMotionService.java   |    5 +-
 .../image/motion/ImageMotionServiceImpl.java       |   67 +-
 .../storage/image/motion/ImageMotionStrategy.java  |    8 +-
 .../provider/DefaultImageDataStoreProvider.java    |   40 +-
 .../image/provider/ImageDataStoreProvider.java     |    5 +-
 .../provider/ImageDataStoreProviderManager.java    |   13 +-
 .../ImageDataStoreProviderManagerImpl.java         |  131 ++-
 .../storage/image/store/ImageDataStore.java        |   21 +-
 .../storage/image/store/ImageDataStoreImpl.java    |  125 +-
 .../storage/image/store/ImageDataStoreInfo.java    |    2 +-
 .../lifecycle/DefaultNfsSecondaryLifeCycle.java    |   40 +-
 .../DefaultPrimaryDataStoreLifeCycle.java          |  186 ++--
 .../storage/manager/BackupStorageManager.java      |   22 +-
 .../storage/manager/BackupStorageManagerImpl.java  |   56 +-
 .../storage/manager/PrimaryDataStoreManager.java   |   25 +-
 .../manager/PrimaryDataStoreManagerImpl.java       |  150 ++--
 .../storage/manager/SecondaryStorageManager.java   |   11 +-
 .../manager/SecondaryStorageManagerImpl.java       |   48 +-
 .../DefaultNfsSecondaryStorageProvider.java        |  173 ++--
 .../provider/DefaultPrimaryStorageProvider.java    |  215 ++--
 .../storage/provider/HttpImageStoreProvider.java   |  108 +-
 .../provider/S3SecondaryStorageProvider.java       |  108 +-
 .../provider/SwiftSecondaryStorageProvider.java    |  108 +-
 .../storage/snapshot/SnapshotService.java          |    5 +-
 .../storage/strategy/DefaultTemplateStratey.java   |  258 ++--
 .../storage/strategy/DefaultVolumeStrategy.java    |  130 +-
 .../storage/strategy/XenBackupStrategy.java        |    9 +-
 .../storage/strategy/XenSnapshotStrategy.java      |    9 +-
 .../cloudstack/storage/to/ImageDataStoreTO.java    |    6 +-
 .../storage/to/ImageOnPrimayDataStoreTO.java       |    6 +-
 .../cloudstack/storage/to/PrimaryDataStoreTO.java  |    6 +-
 .../apache/cloudstack/storage/to/TemplateTO.java   |    6 +-
 .../org/apache/cloudstack/storage/to/VolumeTO.java |    6 +-
 .../volume/TemplateOnPrimaryDataStoreInfo.java     |   11 +-
 .../volume/TemplateOnPrimaryDataStoreObject.java   |   66 +-
 .../volume/TemplatePrimaryDataStoreManager.java    |    5 +-
 .../TemplatePrimaryDataStoreManagerImpl.java       |   44 +-
 .../storage/volume/VolumeEntityImpl.java           |    6 +
 .../cloudstack/storage/volume/VolumeEvent.java     |   13 +-
 .../cloudstack/storage/volume/VolumeManager.java   |   14 +-
 .../storage/volume/VolumeManagerImpl.java          |   63 +-
 .../storage/volume/VolumeMotionService.java        |    2 +-
 .../cloudstack/storage/volume/VolumeObject.java    |  217 ++--
 .../cloudstack/storage/volume/VolumeService.java   |   23 +-
 .../storage/volume/VolumeServiceImpl.java          |  274 +++---
 .../volume/db/TemplatePrimaryDataStoreVO.java      |  289 +++---
 .../cloudstack/storage/volume/db/VolumeDao.java    |   54 +-
 .../storage/volume/db/VolumeDaoImpl.java           |  367 +++---
 .../cloudstack/storage/volume/db/VolumeVO.java     |  761 ++++++------
 .../cloudstack/storage/test/storageContext.xml     |   67 -
 .../cloudstack/storage/test/volumeServiceTest.java |   51 +-
 engine/storage/test/resource/storageContext.xml    |   67 +
 .../src/com/cloud/storage/dao/VolumeDaoImpl.java   |    1 -
 125 files changed, 5097 insertions(+), 4799 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/components-api/PrimaryDataStore.java
----------------------------------------------------------------------
diff --git a/engine/components-api/PrimaryDataStore.java b/engine/components-api/PrimaryDataStore.java
deleted file mode 100644
index 87aee25..0000000
--- a/engine/components-api/PrimaryDataStore.java
+++ /dev/null
@@ -1,34 +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 org.apache.cloudstack.engine.subsystem.api.storage;
-
-import java.util.List;
-
-import org.apache.cloudstack.engine.cloud.entity.api.VolumeEntity;
-import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskType;
-
-
-public interface PrimaryDataStore {
-	VolumeEntity getVolume(String id);
-	List<VolumeEntity> getVolumes();
-	boolean deleteVolume(VolumeEntity id);
-	VolumeEntity createVolume(String id, VolumeDiskType diskType);
-	List<EndPoint> getEndPoints();
-	PrimaryDataStoreInfo getDataStoreInfo();
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/BaseType.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/BaseType.java b/engine/storage/src/org/apache/cloudstack/storage/BaseType.java
index 12acc7d..a5b45e1 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/BaseType.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/BaseType.java
@@ -19,22 +19,22 @@
 package org.apache.cloudstack.storage;
 
 public abstract class BaseType {
-	public boolean equals(Object that) {
-		if (this == that) {
-			return true;
-		}
-		if (that instanceof String) {
-			if (this.toString().equalsIgnoreCase((String)that)) {
-				return true;
-			}
-		} else if (that instanceof BaseType) {
-			BaseType th = (BaseType)that;
-			if (this.toString().equalsIgnoreCase(th.toString())) {
-				return true;
-			}
-		} else {
-			return false;
-		}
-		return false;
-	}
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that instanceof String) {
+            if (this.toString().equalsIgnoreCase((String) that)) {
+                return true;
+            }
+        } else if (that instanceof BaseType) {
+            BaseType th = (BaseType) that;
+            if (this.toString().equalsIgnoreCase(th.toString())) {
+                return true;
+            }
+        } else {
+            return false;
+        }
+        return false;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/HypervisorHostEndPoint.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/HypervisorHostEndPoint.java b/engine/storage/src/org/apache/cloudstack/storage/HypervisorHostEndPoint.java
index a47946a..a7c1041 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/HypervisorHostEndPoint.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/HypervisorHostEndPoint.java
@@ -30,27 +30,28 @@ import com.cloud.exception.AgentUnavailableException;
 import com.cloud.exception.OperationTimedoutException;
 
 public class HypervisorHostEndPoint implements EndPoint {
-	private static final Logger s_logger = Logger.getLogger(HypervisorHostEndPoint.class);
-	private long hostId;
-	@Inject
-	AgentManager agentMgr;
-	public HypervisorHostEndPoint(long hostId) {
-		this.hostId = hostId;
-	}
-	
-	@Override
-	public Answer sendMessage(Command cmd) {
-		Answer answer = null;
-		try {
-			answer = agentMgr.send(hostId, cmd);
-		} catch (AgentUnavailableException e) {
-			s_logger.debug("Unable to send command:" + cmd + ", due to: " + e.toString());
-		} catch (OperationTimedoutException e) {
-			s_logger.debug("Unable to send command:" + cmd + ", due to: " + e.toString());
-		} catch (Exception e) {
-			s_logger.debug("Unable to send command:" + cmd + ", due to: " + e.toString());
-		}
-		return answer;
-	}
+    private static final Logger s_logger = Logger.getLogger(HypervisorHostEndPoint.class);
+    private long hostId;
+    @Inject
+    AgentManager agentMgr;
+
+    public HypervisorHostEndPoint(long hostId) {
+        this.hostId = hostId;
+    }
+
+    @Override
+    public Answer sendMessage(Command cmd) {
+        Answer answer = null;
+        try {
+            answer = agentMgr.send(hostId, cmd);
+        } catch (AgentUnavailableException e) {
+            s_logger.debug("Unable to send command:" + cmd + ", due to: " + e.toString());
+        } catch (OperationTimedoutException e) {
+            s_logger.debug("Unable to send command:" + cmd + ", due to: " + e.toString());
+        } catch (Exception e) {
+            s_logger.debug("Unable to send command:" + cmd + ", due to: " + e.toString());
+        }
+        return answer;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/StorageOrchestratorImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/StorageOrchestratorImpl.java b/engine/storage/src/org/apache/cloudstack/storage/StorageOrchestratorImpl.java
index 18e9429..efc9b70 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/StorageOrchestratorImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/StorageOrchestratorImpl.java
@@ -72,295 +72,290 @@ import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.dao.VMInstanceDao;
 
 public class StorageOrchestratorImpl implements StorageOrchestrator {
-	private static final Logger s_logger = Logger.getLogger(StorageOrchestratorImpl.class);
-	@Inject
-	StoragePoolDao _storagePoolDao;
-	@Inject
-	StorageProviderManager _spManager;
-	@Inject
-	VolumeDao _volumeDao;
-	@Inject
-	VMInstanceDao _vmDao;
-	@Inject
-	DiskOfferingDao _diskOfferingDao;
-	@Inject
-	VolumeHostDao _volumeHostDao;
-	@Inject
-	StorageProviderManager _storageProviderMgr;
-	@Inject
-	VolumeManager _volumeMgr;
-	@Inject
-	SecondaryStorageManager _secondaryStorageMgr;
-	@Inject
-	ImageManager _templateMgr;
-	@Inject
-	VMTemplateDao _templateDao;
-	@Inject
-	VolumeService volumeService;
-	@Inject
-	ImageMotionService imageMotionService;
-	@Inject
-	ImageService imageService;
-	@Inject
-	PrimaryDataStoreManager primaryStorageMgr;
-	
-	@DB
-	protected Volume copyVolumeFromBackupStorage(VolumeVO volume, DataStore destStore, String reservationId) throws NoTransitionException {
-		DataStore ds = _secondaryStorageMgr.getStore(volume);
-		if (!ds.contains(volume)) {
-			throw new CloudRuntimeException("volume: " + volume + "doesn't exist on backup storage");
-		}
-		
-		VolumeProfile vp = ds.prepareVolume(volume, destStore);
-		
-		VolumeStrategy vs = destStore.getVolumeStrategy();
-
-		Transaction txn = Transaction.currentTxn();
-		volume.setReservationId(reservationId);
-		_volumeMgr.processEvent(volume, Volume.Event.CopyRequested);
-		VolumeVO destVolume = _volumeMgr.allocateDuplicateVolume(volume);
-		destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.CreateRequested);
-		txn.commit();
-		
-		vs.copyVolumeFromBackup(vp, destVolume);
-		
-		txn.start();
-		volume = _volumeMgr.processEvent(volume, Volume.Event.OperationSucceeded);
-		destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.OperationSucceeded);
-		txn.commit();
-		
-		return destVolume;
-	}
-	
-	@DB
-	protected Volume migrateVolume(VolumeVO volume, DataStore srcStore, DataStore destStore, String reservationId) throws NoTransitionException {
-		Transaction txn = Transaction.currentTxn();
-		txn.start();
-		volume.setReservationId(reservationId);
-		volume = _volumeMgr.processEvent(volume, Volume.Event.MigrationRequested);
-		Volume destVolume = _volumeMgr.allocateDuplicateVolume(volume);
-		destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.CreateRequested);
-		txn.commit();
-		
-		VolumeStrategy vs = srcStore.getVolumeStrategy();
-		vs.migrateVolume(volume, destVolume, destStore);
-		
-		txn.start();
-		volume = _volumeMgr.processEvent(volume, Volume.Event.OperationSucceeded);
-		destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.OperationSucceeded);
-		txn.commit();
-		
-		volume = _volumeMgr.processEvent(volume, Volume.Event.DestroyRequested);
-		
-		vs.deleteVolume(volume);
-		
-		_volumeMgr.processEvent(volume, Volume.Event.OperationSucceeded);
-		return destVolume;
-	}
-	
-	@DB
-	protected Volume recreateVolume(VolumeVO srcVolume, DataStore destStore, String reservationId) throws NoTransitionException {
-		Transaction txn = Transaction.currentTxn();
-		txn.start();
-		srcVolume.setReservationId(reservationId);
-		srcVolume = _volumeMgr.processEvent(srcVolume, Volume.Event.CopyRequested);
-		Volume destVolume = _volumeMgr.allocateDuplicateVolume(srcVolume);
-		destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.CreateRequested);
-		txn.commit();
-		
-		DataStore srcStore = _storageProviderMgr.getDataStore(srcVolume.getPoolId());
-		VolumeStrategy vs = srcStore.getVolumeStrategy();
-		
-		vs.migrateVolume(srcVolume, destVolume, destStore);
-		
-		txn.start();
-		srcVolume = _volumeMgr.processEvent(srcVolume, Volume.Event.OperationSucceeded);
-		destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.OperationSucceeded);
-		txn.commit();
-		
-		srcVolume = _volumeMgr.processEvent(srcVolume, Volume.Event.DestroyRequested);
-		
-		vs.deleteVolume(srcVolume);
-		
-		_volumeMgr.processEvent(srcVolume, Volume.Event.OperationSucceeded);
-		
-		return destVolume;
-	}
-	
-	protected Volume createVolumeOnStorage(Volume volume, DataStore destStore, String reservationId) throws NoTransitionException {
-		VolumeStrategy vs = destStore.getVolumeStrategy();
-		volume.setReservationId(reservationId);
-		volume = _volumeMgr.processEvent(volume, Volume.Event.CreateRequested);
-		
-		if (volume.getTemplateId() != null) {
-			DataStore ds = _secondaryStorageMgr.getImageStore(destStore);
-			TemplateProfile tp = ds.prepareTemplate(volume.getTemplateId(), destStore);
-			if (!destStore.contains(tp)) {
-				tp = _templateMgr.AssociateTemplateStoragePool(tp, destStore);
-				tp  = destStore.getTemplateStrategy().install(tp);
-			} else {
-				tp = destStore.getTemplateStrategy().get(tp.getId());
-			}
-			volume = vs.createVolumeFromBaseTemplate(volume, tp);
-		} else {
-			volume = vs.createDataVolume(volume);
-		}
-		
-		volume = _volumeMgr.processEvent(volume, Volume.Event.OperationSucceeded);
-		return volume;
-	}
-	
-	@DB
-	protected void prepareVolumes(List<VolumeVO> vols, Long destPoolId, String reservationId) throws NoTransitionException {
-		DataStore destStore = null;
-		if (destPoolId != null) {
-			destStore = _storageProviderMgr.getDataStore(destPoolId);
-		}
-		
-		for (VolumeVO volume : vols) {
-			if (volume.getPoolId() == null && destStore == null) {
-				throw new CloudRuntimeException("Volume has no pool associate and also no storage pool assigned in DeployDestination, Unable to create.");
-			}
-			if (destStore == null) {
-				continue;
-			}
-
-			DataStore srcStore = _storageProviderMgr.getDataStore(volume.getPoolId());
-			boolean needToCreateVolume = false;
-			boolean needToRecreateVolume = false;
-			boolean needToMigrateVolume = false;
-			boolean needToCopyFromSec = false;
-
-			Volume.State state = volume.getState();
-			if (state == Volume.State.Allocated) {
-				needToCreateVolume = true;
-			} else if (state == Volume.State.UploadOp) {
-				needToCopyFromSec = true;
-			} else if (destStore.getId() != srcStore.getId()) {
-				if (s_logger.isDebugEnabled()) {
-					s_logger.debug("Mismatch in storage pool " + destStore.getId() + " assigned by deploymentPlanner and the one associated with volume " + volume);
-				}
-				
-				if (volume.isRecreatable()) {
-					needToRecreateVolume = true;
-				} else {
-					if (Volume.Type.ROOT == volume.getVolumeType()) {
-						needToMigrateVolume = true;
-					} else {
-						if (destStore.getCluterId() != srcStore.getCluterId()) {
-							needToMigrateVolume = true;
-						} else if (!srcStore.isSharedStorage() && srcStore.getId() != destStore.getId()) {
-							needToMigrateVolume = true;
-						} else {
-							continue;
-						}
-					}	
-				}
-			} else {
-				continue;
-			}
-			
-			
-			if (needToCreateVolume) {
-				createVolumeOnStorage(volume, destStore, reservationId);
-			} else if (needToMigrateVolume) {
-				migrateVolume(volume, srcStore, destStore, reservationId);
-			} else if (needToCopyFromSec) {
-				copyVolumeFromBackupStorage(volume, destStore, reservationId);
-			} else if (needToRecreateVolume) {
-				recreateVolume(volume, destStore, reservationId);
-			}
-		}
-	}
-	
-	public void prepare(long vmId, DeploymentPlan plan, String reservationId) {
+    private static final Logger s_logger = Logger.getLogger(StorageOrchestratorImpl.class);
+    @Inject
+    StoragePoolDao _storagePoolDao;
+    @Inject
+    StorageProviderManager _spManager;
+    @Inject
+    VolumeDao _volumeDao;
+    @Inject
+    VMInstanceDao _vmDao;
+    @Inject
+    DiskOfferingDao _diskOfferingDao;
+    @Inject
+    VolumeHostDao _volumeHostDao;
+    @Inject
+    StorageProviderManager _storageProviderMgr;
+    @Inject
+    VolumeManager _volumeMgr;
+    @Inject
+    SecondaryStorageManager _secondaryStorageMgr;
+    @Inject
+    ImageManager _templateMgr;
+    @Inject
+    VMTemplateDao _templateDao;
+    @Inject
+    VolumeService volumeService;
+    @Inject
+    ImageMotionService imageMotionService;
+    @Inject
+    ImageService imageService;
+    @Inject
+    PrimaryDataStoreManager primaryStorageMgr;
+
+    @DB
+    protected Volume copyVolumeFromBackupStorage(VolumeVO volume, DataStore destStore, String reservationId) throws NoTransitionException {
+        DataStore ds = _secondaryStorageMgr.getStore(volume);
+        if (!ds.contains(volume)) {
+            throw new CloudRuntimeException("volume: " + volume + "doesn't exist on backup storage");
+        }
+
+        VolumeProfile vp = ds.prepareVolume(volume, destStore);
+
+        VolumeStrategy vs = destStore.getVolumeStrategy();
+
+        Transaction txn = Transaction.currentTxn();
+        volume.setReservationId(reservationId);
+        _volumeMgr.processEvent(volume, Volume.Event.CopyRequested);
+        VolumeVO destVolume = _volumeMgr.allocateDuplicateVolume(volume);
+        destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.CreateRequested);
+        txn.commit();
+
+        vs.copyVolumeFromBackup(vp, destVolume);
+
+        txn.start();
+        volume = _volumeMgr.processEvent(volume, Volume.Event.OperationSucceeded);
+        destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.OperationSucceeded);
+        txn.commit();
+
+        return destVolume;
+    }
+
+    @DB
+    protected Volume migrateVolume(VolumeVO volume, DataStore srcStore, DataStore destStore, String reservationId) throws NoTransitionException {
+        Transaction txn = Transaction.currentTxn();
+        txn.start();
+        volume.setReservationId(reservationId);
+        volume = _volumeMgr.processEvent(volume, Volume.Event.MigrationRequested);
+        Volume destVolume = _volumeMgr.allocateDuplicateVolume(volume);
+        destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.CreateRequested);
+        txn.commit();
+
+        VolumeStrategy vs = srcStore.getVolumeStrategy();
+        vs.migrateVolume(volume, destVolume, destStore);
+
+        txn.start();
+        volume = _volumeMgr.processEvent(volume, Volume.Event.OperationSucceeded);
+        destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.OperationSucceeded);
+        txn.commit();
+
+        volume = _volumeMgr.processEvent(volume, Volume.Event.DestroyRequested);
+
+        vs.deleteVolume(volume);
+
+        _volumeMgr.processEvent(volume, Volume.Event.OperationSucceeded);
+        return destVolume;
+    }
+
+    @DB
+    protected Volume recreateVolume(VolumeVO srcVolume, DataStore destStore, String reservationId) throws NoTransitionException {
+        Transaction txn = Transaction.currentTxn();
+        txn.start();
+        srcVolume.setReservationId(reservationId);
+        srcVolume = _volumeMgr.processEvent(srcVolume, Volume.Event.CopyRequested);
+        Volume destVolume = _volumeMgr.allocateDuplicateVolume(srcVolume);
+        destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.CreateRequested);
+        txn.commit();
+
+        DataStore srcStore = _storageProviderMgr.getDataStore(srcVolume.getPoolId());
+        VolumeStrategy vs = srcStore.getVolumeStrategy();
+
+        vs.migrateVolume(srcVolume, destVolume, destStore);
+
+        txn.start();
+        srcVolume = _volumeMgr.processEvent(srcVolume, Volume.Event.OperationSucceeded);
+        destVolume = _volumeMgr.processEvent(destVolume, Volume.Event.OperationSucceeded);
+        txn.commit();
+
+        srcVolume = _volumeMgr.processEvent(srcVolume, Volume.Event.DestroyRequested);
+
+        vs.deleteVolume(srcVolume);
+
+        _volumeMgr.processEvent(srcVolume, Volume.Event.OperationSucceeded);
+
+        return destVolume;
+    }
+
+    protected Volume createVolumeOnStorage(Volume volume, DataStore destStore, String reservationId) throws NoTransitionException {
+        VolumeStrategy vs = destStore.getVolumeStrategy();
+        volume.setReservationId(reservationId);
+        volume = _volumeMgr.processEvent(volume, Volume.Event.CreateRequested);
+
+        if (volume.getTemplateId() != null) {
+            DataStore ds = _secondaryStorageMgr.getImageStore(destStore);
+            TemplateProfile tp = ds.prepareTemplate(volume.getTemplateId(), destStore);
+            if (!destStore.contains(tp)) {
+                tp = _templateMgr.AssociateTemplateStoragePool(tp, destStore);
+                tp = destStore.getTemplateStrategy().install(tp);
+            } else {
+                tp = destStore.getTemplateStrategy().get(tp.getId());
+            }
+            volume = vs.createVolumeFromBaseTemplate(volume, tp);
+        } else {
+            volume = vs.createDataVolume(volume);
+        }
+
+        volume = _volumeMgr.processEvent(volume, Volume.Event.OperationSucceeded);
+        return volume;
+    }
+
+    @DB
+    protected void prepareVolumes(List<VolumeVO> vols, Long destPoolId, String reservationId) throws NoTransitionException {
+        DataStore destStore = null;
+        if (destPoolId != null) {
+            destStore = _storageProviderMgr.getDataStore(destPoolId);
+        }
+
+        for (VolumeVO volume : vols) {
+            if (volume.getPoolId() == null && destStore == null) {
+                throw new CloudRuntimeException("Volume has no pool associate and also no storage pool assigned in DeployDestination, Unable to create.");
+            }
+            if (destStore == null) {
+                continue;
+            }
+
+            DataStore srcStore = _storageProviderMgr.getDataStore(volume.getPoolId());
+            boolean needToCreateVolume = false;
+            boolean needToRecreateVolume = false;
+            boolean needToMigrateVolume = false;
+            boolean needToCopyFromSec = false;
+
+            Volume.State state = volume.getState();
+            if (state == Volume.State.Allocated) {
+                needToCreateVolume = true;
+            } else if (state == Volume.State.UploadOp) {
+                needToCopyFromSec = true;
+            } else if (destStore.getId() != srcStore.getId()) {
+                if (s_logger.isDebugEnabled()) {
+                    s_logger.debug("Mismatch in storage pool " + destStore.getId() + " assigned by deploymentPlanner and the one associated with volume " + volume);
+                }
+
+                if (volume.isRecreatable()) {
+                    needToRecreateVolume = true;
+                } else {
+                    if (Volume.Type.ROOT == volume.getVolumeType()) {
+                        needToMigrateVolume = true;
+                    } else {
+                        if (destStore.getCluterId() != srcStore.getCluterId()) {
+                            needToMigrateVolume = true;
+                        } else if (!srcStore.isSharedStorage() && srcStore.getId() != destStore.getId()) {
+                            needToMigrateVolume = true;
+                        } else {
+                            continue;
+                        }
+                    }
+                }
+            } else {
+                continue;
+            }
+
+            if (needToCreateVolume) {
+                createVolumeOnStorage(volume, destStore, reservationId);
+            } else if (needToMigrateVolume) {
+                migrateVolume(volume, srcStore, destStore, reservationId);
+            } else if (needToCopyFromSec) {
+                copyVolumeFromBackupStorage(volume, destStore, reservationId);
+            } else if (needToRecreateVolume) {
+                recreateVolume(volume, destStore, reservationId);
+            }
+        }
+    }
+
+    public void prepare(long vmId, DeploymentPlan plan, String reservationId) {
         VirtualMachine vm = _vmDao.findById(vmId);
-       
 
         List<VolumeVO> vols = _volumeDao.findUsableVolumesForInstance(vm.getId());
         if (s_logger.isDebugEnabled()) {
             s_logger.debug("Prepare " + vols.size() + " volumes for " + vm.getInstanceName());
         }
-        
+
         try {
-        	prepareVolumes(vols, plan.getPoolId(), reservationId);
+            prepareVolumes(vols, plan.getPoolId(), reservationId);
         } catch (NoTransitionException e) {
-        	s_logger.debug("Failed to prepare volume: " + e.toString());
+            s_logger.debug("Failed to prepare volume: " + e.toString());
         }
     }
 
+    public void release(long vmId, String reservationId) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void destroy(List<Long> disks, String reservationId) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void cancel(String reservationId) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void prepareAttachDiskToVM(long diskId, long vmId, String reservationId) {
+        VirtualMachine vm = _vmDao.findById(vmId);
+
+        if (vm == null || vm.getState() != VirtualMachine.State.Running) {
+            return;
+        }
 
-	public void release(long vmId, String reservationId) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public void destroy(List<Long> disks, String reservationId) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public void cancel(String reservationId) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public void prepareAttachDiskToVM(long diskId, long vmId, String reservationId) {
-		VirtualMachine vm = _vmDao.findById(vmId);
-		
-		if (vm == null || vm.getState() != VirtualMachine.State.Running) {
-			return;
-		}
-		
-		VolumeVO volume = _volumeDao.findById(diskId);
-		if (volume.getInstanceId() != null) {
-			if (volume.getInstanceId() != vmId) {
-				throw new InvalidParameterValueException("Volume " + volume + "already attached to " + volume.getInstanceId());
-			} else {
-				return;
-			}
-		}
-		
-		List<VolumeVO> vols = new ArrayList<VolumeVO>();
-		vols.add(volume);
-		
-		List<VolumeVO> rootDisks = _volumeDao.findByInstanceAndType(vmId, Volume.Type.ROOT);
-		VolumeVO rootDisk = rootDisks.get(0);
-		try {
-			prepareVolumes(vols, rootDisk.getPoolId(), reservationId);
-		} catch (NoTransitionException e) {
-			s_logger.debug("Failed to prepare volume: " + volume + ", due to" + e.toString());
-			throw new CloudRuntimeException(e.toString());
-		}
-		
-		volume = _volumeDao.findById(diskId);
-		volume.setInstanceId(vmId);
-		_volumeDao.update(volume.getId(), volume);
-	}
-
-
-
-	@Override
-	public boolean createVolume(VolumeEntity volume, long dataStoreId, VolumeDiskType diskType) {
-		VolumeEntityImpl vei = ((VolumeEntityImpl)volume);
-		VolumeInfo vi = volumeService.createVolume(vei.getVolumeInfo(), dataStoreId, diskType);
-		vei.setVolumeInfo(vi);
-		return true;
-	}
-
-	@Override
-	public VolumeEntity allocateVolumeInDb(long size, VolumeType type, String volName, Long templateId) {
-		return volumeService.allocateVolumeInDb(size, type, volName, templateId);
-	}
-	
-	protected VolumeInfo getVolumeInfo(VolumeEntity volume) {
-		VolumeEntityImpl vei = (VolumeEntityImpl)volume;
-		return vei.getVolumeInfo();
-	}
-	
-	@Override
-	public boolean createVolumeFromTemplate(VolumeEntity volume, long dataStoreId, VolumeDiskType diskType, TemplateEntity template) {
-	
-		return false;
-	}
+        VolumeVO volume = _volumeDao.findById(diskId);
+        if (volume.getInstanceId() != null) {
+            if (volume.getInstanceId() != vmId) {
+                throw new InvalidParameterValueException("Volume " + volume + "already attached to " + volume.getInstanceId());
+            } else {
+                return;
+            }
+        }
+
+        List<VolumeVO> vols = new ArrayList<VolumeVO>();
+        vols.add(volume);
+
+        List<VolumeVO> rootDisks = _volumeDao.findByInstanceAndType(vmId, Volume.Type.ROOT);
+        VolumeVO rootDisk = rootDisks.get(0);
+        try {
+            prepareVolumes(vols, rootDisk.getPoolId(), reservationId);
+        } catch (NoTransitionException e) {
+            s_logger.debug("Failed to prepare volume: " + volume + ", due to" + e.toString());
+            throw new CloudRuntimeException(e.toString());
+        }
+
+        volume = _volumeDao.findById(diskId);
+        volume.setInstanceId(vmId);
+        _volumeDao.update(volume.getId(), volume);
+    }
+
+    @Override
+    public boolean createVolume(VolumeEntity volume, long dataStoreId, VolumeDiskType diskType) {
+        VolumeEntityImpl vei = ((VolumeEntityImpl) volume);
+        VolumeInfo vi = volumeService.createVolume(vei.getVolumeInfo(), dataStoreId, diskType);
+        vei.setVolumeInfo(vi);
+        return true;
+    }
+
+    @Override
+    public VolumeEntity allocateVolumeInDb(long size, VolumeType type, String volName, Long templateId) {
+        return volumeService.allocateVolumeInDb(size, type, volName, templateId);
+    }
+
+    protected VolumeInfo getVolumeInfo(VolumeEntity volume) {
+        VolumeEntityImpl vei = (VolumeEntityImpl) volume;
+        return vei.getVolumeInfo();
+    }
+
+    @Override
+    public boolean createVolumeFromTemplate(VolumeEntity volume, long dataStoreId, VolumeDiskType diskType, TemplateEntity template) {
+
+        return false;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/StorageProviderManager.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/StorageProviderManager.java b/engine/storage/src/org/apache/cloudstack/storage/StorageProviderManager.java
index a49dcda..4260115 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/StorageProviderManager.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/StorageProviderManager.java
@@ -4,8 +4,11 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
 import org.apache.cloudstack.engine.subsystem.api.storage.StorageProvider;
 
 public interface StorageProviderManager {
-	StorageProvider getProvider(String uuid);
-	StorageProvider getProvider(long poolId);
-	StorageProvider getBackupStorageProvider(long zoneId);
-	DataStore getDataStore(long poolId);
+    StorageProvider getProvider(String uuid);
+
+    StorageProvider getProvider(long poolId);
+
+    StorageProvider getBackupStorageProvider(long zoneId);
+
+    DataStore getDataStore(long poolId);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/StorageProviderManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/StorageProviderManagerImpl.java b/engine/storage/src/org/apache/cloudstack/storage/StorageProviderManagerImpl.java
index f327c40..bbed9f4 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/StorageProviderManagerImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/StorageProviderManagerImpl.java
@@ -10,46 +10,45 @@ import org.apache.cloudstack.engine.subsystem.api.storage.StorageProvider;
 import com.cloud.utils.component.Manager;
 
 public class StorageProviderManagerImpl implements StorageProviderManager, Manager {
-	
-	public StorageProvider getProvider(String uuid) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public boolean configure(String name, Map<String, Object> params)
-			throws ConfigurationException {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public boolean start() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public boolean stop() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public String getName() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public StorageProvider getProvider(long poolId) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public StorageProvider getBackupStorageProvider(long zoneId) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public DataStore getDataStore(long poolId) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+
+    public StorageProvider getProvider(String uuid) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean start() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean stop() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public String getName() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public StorageProvider getProvider(long poolId) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public StorageProvider getBackupStorageProvider(long zoneId) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public DataStore getDataStore(long poolId) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/VolumeBackupRef.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/VolumeBackupRef.java b/engine/storage/src/org/apache/cloudstack/storage/VolumeBackupRef.java
index 645e94c..4b512ba 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/VolumeBackupRef.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/VolumeBackupRef.java
@@ -28,39 +28,39 @@ import com.cloud.storage.Storage.ImageFormat;
 import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
 
 public interface VolumeBackupRef {
-	public DataObjectBackupStorageOperationState getOperationState();
-	
-	public String getInstallPath();
+    public DataObjectBackupStorageOperationState getOperationState();
 
-	public long getHostId();
+    public String getInstallPath();
 
-	public long getVolumeId();
+    public long getHostId();
 
-	public long getZoneId();
+    public long getVolumeId();
 
-	public int getDownloadPercent();
+    public long getZoneId();
 
-	public  long getVolumeSize();
+    public int getDownloadPercent();
 
-	public  Storage.ImageFormat getFormat();
+    public long getVolumeSize();
 
-	public  String getDownloadUrl();
+    public Storage.ImageFormat getFormat();
 
-	public  boolean getDestroyed();
+    public String getDownloadUrl();
 
-	public  long getPhysicalSize();
+    public boolean getDestroyed();
 
-	public  long getSize();
+    public long getPhysicalSize();
 
-	public  String getLocalDownloadPath();
+    public long getSize();
 
-	public  String getChecksum();
+    public String getLocalDownloadPath();
 
-	public  Status getDownloadState();
+    public String getChecksum();
 
-	public  Date getLastUpdated();
+    public Status getDownloadState();
 
-	public  Date getCreated();
+    public Date getLastUpdated();
 
-	public  long getId();
+    public Date getCreated();
+
+    public long getId();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/backup/BackupMotionService.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/backup/BackupMotionService.java b/engine/storage/src/org/apache/cloudstack/storage/backup/BackupMotionService.java
index 5105e25..cb49027 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/backup/BackupMotionService.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/backup/BackupMotionService.java
@@ -19,5 +19,5 @@
 package org.apache.cloudstack.storage.backup;
 
 public interface BackupMotionService {
-	boolean copySnapshot(String snapshotUri, String destSnapshotUri);
+    boolean copySnapshot(String snapshotUri, String destSnapshotUri);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/backup/BackupService.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/backup/BackupService.java b/engine/storage/src/org/apache/cloudstack/storage/backup/BackupService.java
index 198247d..ebb4c9f 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/backup/BackupService.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/backup/BackupService.java
@@ -19,6 +19,7 @@
 package org.apache.cloudstack.storage.backup;
 
 public interface BackupService {
-	String grantAccessSnapshot(long snapshotId, long endpointId);
-	boolean revokeAccessSnapshot(long snapshotId, long endpointId);
+    String grantAccessSnapshot(long snapshotId, long endpointId);
+
+    boolean revokeAccessSnapshot(long snapshotId, long endpointId);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/command/CopyTemplateToPrimaryStorage.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/command/CopyTemplateToPrimaryStorage.java b/engine/storage/src/org/apache/cloudstack/storage/command/CopyTemplateToPrimaryStorage.java
index 80a280e..d092e9e 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/command/CopyTemplateToPrimaryStorage.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/command/CopyTemplateToPrimaryStorage.java
@@ -8,21 +8,21 @@ import com.cloud.agent.api.Command;
 
 public class CopyTemplateToPrimaryStorage extends Command {
 
-	private ImageOnPrimayDataStoreTO imageTO;
-	
-	protected CopyTemplateToPrimaryStorage() {
-		super();
-	}
-	
-	public CopyTemplateToPrimaryStorage(ImageOnPrimayDataStoreTO image) {
-		super();
-		this.imageTO = image;
-	}
-	
-	@Override
-	public boolean executeInSequence() {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    private ImageOnPrimayDataStoreTO imageTO;
+
+    protected CopyTemplateToPrimaryStorage() {
+        super();
+    }
+
+    public CopyTemplateToPrimaryStorage(ImageOnPrimayDataStoreTO image) {
+        super();
+        this.imageTO = image;
+    }
+
+    @Override
+    public boolean executeInSequence() {
+        // TODO Auto-generated method stub
+        return false;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeAnswer.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeAnswer.java b/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeAnswer.java
index e75307c..49fa93e 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeAnswer.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeAnswer.java
@@ -21,16 +21,17 @@ package org.apache.cloudstack.storage.command;
 import com.cloud.agent.api.Answer;
 
 public class CreateVolumeAnswer extends Answer {
-	private String volumeUuid;
-	protected CreateVolumeAnswer() {
-		super();
-	}
-	
-	public CreateVolumeAnswer(String volumeUuid) {
-		this.volumeUuid = volumeUuid;
-	}
-	
-	public String getVolumeUuid() {
-		return this.volumeUuid;
-	}
+    private String volumeUuid;
+
+    protected CreateVolumeAnswer() {
+        super();
+    }
+
+    public CreateVolumeAnswer(String volumeUuid) {
+        this.volumeUuid = volumeUuid;
+    }
+
+    public String getVolumeUuid() {
+        return this.volumeUuid;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeCommand.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeCommand.java b/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeCommand.java
index 70d1611..3d8880f 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeCommand.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeCommand.java
@@ -23,20 +23,21 @@ import org.apache.cloudstack.storage.to.VolumeTO;
 import com.cloud.agent.api.Command;
 
 public class CreateVolumeCommand extends Command {
-	protected VolumeTO volumeInfo;
-	public CreateVolumeCommand(VolumeTO volumeInfo) {
-		super();
-		this.volumeInfo = volumeInfo;
-	}
-	
-	protected CreateVolumeCommand() {
-		super();
-	}
-	
-	@Override
-	public boolean executeInSequence() {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    protected VolumeTO volumeInfo;
+
+    public CreateVolumeCommand(VolumeTO volumeInfo) {
+        super();
+        this.volumeInfo = volumeInfo;
+    }
+
+    protected CreateVolumeCommand() {
+        super();
+    }
+
+    @Override
+    public boolean executeInSequence() {
+        // TODO Auto-generated method stub
+        return false;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeFromBaseImageCommand.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeFromBaseImageCommand.java b/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeFromBaseImageCommand.java
index 0e520a9..0042c95 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeFromBaseImageCommand.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/command/CreateVolumeFromBaseImageCommand.java
@@ -24,16 +24,18 @@ import org.apache.cloudstack.storage.to.VolumeTO;
 import com.cloud.agent.api.Command;
 
 public class CreateVolumeFromBaseImageCommand extends Command {
-	private VolumeTO volume;
-	private ImageOnPrimayDataStoreTO image;
-	public CreateVolumeFromBaseImageCommand(VolumeTO volume, ImageOnPrimayDataStoreTO image) {
-		this.volume = volume;
-		this.image = image;
-	}
-	@Override
-	public boolean executeInSequence() {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    private VolumeTO volume;
+    private ImageOnPrimayDataStoreTO image;
+
+    public CreateVolumeFromBaseImageCommand(VolumeTO volume, ImageOnPrimayDataStoreTO image) {
+        this.volume = volume;
+        this.image = image;
+    }
+
+    @Override
+    public boolean executeInSequence() {
+        // TODO Auto-generated method stub
+        return false;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreStatus.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreStatus.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreStatus.java
index 65f46b1..5c61da0 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreStatus.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreStatus.java
@@ -19,11 +19,5 @@
 package org.apache.cloudstack.storage.datastore;
 
 public enum DataStoreStatus {
-	Creating,
-	Up,
-	PrepareForMaintenance,
-	ErrorInMaintenance,
-	CancelMaintenance,
-	Maintenance,
-	Removed;
+    Creating, Up, PrepareForMaintenance, ErrorInMaintenance, CancelMaintenance, Maintenance, Removed;
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultDataStore.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultDataStore.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultDataStore.java
index b95abe8..206f917 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultDataStore.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultDataStore.java
@@ -20,210 +20,209 @@ import com.cloud.storage.Storage.StoragePoolType;
 import com.cloud.storage.Volume;
 
 public class DefaultDataStore implements DataStore {
-	protected VolumeStrategy _volumeStrategy;
-	protected SnapshotStrategy _snapshotStrategy;
-	protected BackupStrategy _backupStrategy;
-	protected TemplateStrategy _templateStrategy;
-	protected String _uri;
-	protected String _uuid;
-	protected StoreType _type;
-	protected StoreScope _scope;
-	protected long _poolId;
-	protected DataStoreDriver _driverRef;
-	protected DataStoreEndPointSelector _selector;
-	protected FileSystem _fs;
-	protected VolumeStrategy _volumeSt;
-	protected SnapshotStrategy _snapshotSt;
-	protected BackupStrategy _backupSt;
-	protected long _id;
-	protected DataStoreLifeCycle _dslf;
-	
-	public DefaultDataStore(
-	) {
-	}
-
-	public String getURI() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-	
-	public void setURI(String uri) {
-		this._uri = uri;
-	}
-
-	public String getUUID() {
-		return this._uuid;
-	}
-	
-	public void setUUID(String uuid) {
-		this._uuid = uuid;
-	}
-
-	public StoreType getType() {
-		return this._type;
-	}
-	
-	public void setType(StoreType type) {
-		this._type = type;
-	}
-
-	public StoreScope getScope() {
-		return this._scope;
-	}
-	
-	public void setScope(StoreScope scope) {
-		this._scope = scope;
-	}
-
-	public Long getId() {
-		return this._id;
-	}
-	
-	public void setId(long id) {
-		this._id = id;
-	}
-
-	public DataStoreDriver getDataStoreDriver() {
-		return this._driverRef;
-	}
-	
-	public void setDataStoreDriver(DataStoreDriver drv) {
-		this._driverRef = drv;
-	}
-
-	public void setEndPointSelector(DataStoreEndPointSelector selector) {
-		this._selector = selector;
-	}
-	
-	public DataStoreEndPointSelector getSelector() {
-		return this._selector;
-	}
-
-	public FileSystem getFileSystem() {
-		return this._fs;
-	}
-	
-	public void setFileSystem(FileSystem fs) {
-		this._fs = fs;
-	}
-
-	public VolumeStrategy getVolumeStrategy() {
-		return this._volumeSt;
-	}
-	
-	public void setVolumeStrategy(VolumeStrategy vs) {
-		this._volumeSt = vs;
-	}
-
-	public SnapshotStrategy getSnapshotStrategy() {
-		return this._snapshotSt;
-	}
-	
-	public void setSnapshotStrategy(SnapshotStrategy ss) {
-		this._snapshotSt = ss;
-	}
-
-	public BackupStrategy getBackupStrategy() {
-		return this._backupSt;
-	}
-	
-	public void setBackupStrategy(BackupStrategy bs) {
-		this._backupSt = bs;
-	}
-	
-	public TemplateStrategy getTemplateStrategy() {
-		return this._templateStrategy;
-	}
-	
-	public void setTemplateStrategy(TemplateStrategy ts) {
-		this._templateStrategy = ts;
-	}
-
-	public DataStoreLifeCycle getLifeCycle() {
-		return this._dslf;
-	}
-	
-	public void setLifeCycle(DataStoreLifeCycle lf) {
-		this._dslf = lf;
-	}
-
-	public long getCluterId() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	public long getPodId() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	public long getZoneId() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	public String getPath() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public StoragePoolType getPoolType() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public boolean isSharedStorage() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public StorageProvider getProvider() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public DataStoreEndPointSelector getEndPointSelector() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public VolumeProfile prepareVolume(Volume volume, DataStore destStore) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public SnapshotProfile prepareSnapshot(Snapshot snapshot, DataStore destStore) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public TemplateProfile prepareTemplate(long templateId, DataStore destStore) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public boolean contains(Volume volume) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public boolean contains(Snapshot snapshot) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public boolean contains(TemplateProfile template) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public TemplateProfile get(TemplateProfile template) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public StorageFilerTO getTO() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    protected VolumeStrategy _volumeStrategy;
+    protected SnapshotStrategy _snapshotStrategy;
+    protected BackupStrategy _backupStrategy;
+    protected TemplateStrategy _templateStrategy;
+    protected String _uri;
+    protected String _uuid;
+    protected StoreType _type;
+    protected StoreScope _scope;
+    protected long _poolId;
+    protected DataStoreDriver _driverRef;
+    protected DataStoreEndPointSelector _selector;
+    protected FileSystem _fs;
+    protected VolumeStrategy _volumeSt;
+    protected SnapshotStrategy _snapshotSt;
+    protected BackupStrategy _backupSt;
+    protected long _id;
+    protected DataStoreLifeCycle _dslf;
+
+    public DefaultDataStore() {
+    }
+
+    public String getURI() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void setURI(String uri) {
+        this._uri = uri;
+    }
+
+    public String getUUID() {
+        return this._uuid;
+    }
+
+    public void setUUID(String uuid) {
+        this._uuid = uuid;
+    }
+
+    public StoreType getType() {
+        return this._type;
+    }
+
+    public void setType(StoreType type) {
+        this._type = type;
+    }
+
+    public StoreScope getScope() {
+        return this._scope;
+    }
+
+    public void setScope(StoreScope scope) {
+        this._scope = scope;
+    }
+
+    public Long getId() {
+        return this._id;
+    }
+
+    public void setId(long id) {
+        this._id = id;
+    }
+
+    public DataStoreDriver getDataStoreDriver() {
+        return this._driverRef;
+    }
+
+    public void setDataStoreDriver(DataStoreDriver drv) {
+        this._driverRef = drv;
+    }
+
+    public void setEndPointSelector(DataStoreEndPointSelector selector) {
+        this._selector = selector;
+    }
+
+    public DataStoreEndPointSelector getSelector() {
+        return this._selector;
+    }
+
+    public FileSystem getFileSystem() {
+        return this._fs;
+    }
+
+    public void setFileSystem(FileSystem fs) {
+        this._fs = fs;
+    }
+
+    public VolumeStrategy getVolumeStrategy() {
+        return this._volumeSt;
+    }
+
+    public void setVolumeStrategy(VolumeStrategy vs) {
+        this._volumeSt = vs;
+    }
+
+    public SnapshotStrategy getSnapshotStrategy() {
+        return this._snapshotSt;
+    }
+
+    public void setSnapshotStrategy(SnapshotStrategy ss) {
+        this._snapshotSt = ss;
+    }
+
+    public BackupStrategy getBackupStrategy() {
+        return this._backupSt;
+    }
+
+    public void setBackupStrategy(BackupStrategy bs) {
+        this._backupSt = bs;
+    }
+
+    public TemplateStrategy getTemplateStrategy() {
+        return this._templateStrategy;
+    }
+
+    public void setTemplateStrategy(TemplateStrategy ts) {
+        this._templateStrategy = ts;
+    }
+
+    public DataStoreLifeCycle getLifeCycle() {
+        return this._dslf;
+    }
+
+    public void setLifeCycle(DataStoreLifeCycle lf) {
+        this._dslf = lf;
+    }
+
+    public long getCluterId() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public long getPodId() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public long getZoneId() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public String getPath() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public StoragePoolType getPoolType() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public boolean isSharedStorage() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public StorageProvider getProvider() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public DataStoreEndPointSelector getEndPointSelector() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public VolumeProfile prepareVolume(Volume volume, DataStore destStore) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public SnapshotProfile prepareSnapshot(Snapshot snapshot, DataStore destStore) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public TemplateProfile prepareTemplate(long templateId, DataStore destStore) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public boolean contains(Volume volume) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean contains(Snapshot snapshot) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean contains(TemplateProfile template) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public TemplateProfile get(TemplateProfile template) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public StorageFilerTO getTO() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
index 780435c..9981d68 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
@@ -36,144 +36,145 @@ import com.cloud.utils.exception.CloudRuntimeException;
 import edu.emory.mathcs.backport.java.util.Collections;
 
 public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore {
-	private static final Logger s_logger = Logger.getLogger(DefaultPrimaryDataStoreImpl.class);
-	protected PrimaryDataStoreDriver driver;
-	protected DataStoreVO pdsv;
-	protected PrimaryDataStoreInfo pdsInfo;
-	@Inject
-	private VolumeDao volumeDao;
-	@Inject
-	private HostDao hostDao;
-	@Inject
-	TemplatePrimaryDataStoreManager templatePrimaryStoreMgr;
-	public DefaultPrimaryDataStoreImpl(PrimaryDataStoreDriver driver, DataStoreVO pdsv, PrimaryDataStoreInfo pdsInfo) {
-		this.driver = driver;
-		this.pdsv = pdsv;
-		this.pdsInfo = pdsInfo;
-	}
-	
-	@Override
-	public VolumeInfo getVolume(long id) {
-		VolumeVO volumeVO = volumeDao.findById(id);
-		VolumeObject vol = new VolumeObject(this, volumeVO);
-		return vol;
-	}
-
-	@Override
-	public List<VolumeInfo> getVolumes() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public boolean deleteVolume(long id) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public List<EndPoint> getEndPoints() {
-		Long clusterId = pdsv.getClusterId();
-		if (clusterId == null) {
-			return null;
-		}
-		List<EndPoint> endpoints = new ArrayList<EndPoint>();
-		List<HostVO> hosts = hostDao.findHypervisorHostInCluster(clusterId);
-		for (HostVO host : hosts) {
-			HypervisorHostEndPoint ep = new HypervisorHostEndPoint(host.getId());
-			ComponentInject.inject(ep);
-			endpoints.add(ep);
-		}
-		Collections.shuffle(endpoints);
-		return endpoints;
-	}
-
-	@Override
-	public PrimaryDataStoreInfo getDataStoreInfo() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public boolean isHypervisorSupported(HypervisorType hypervisor) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public boolean isLocalStorageSupported() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public boolean isVolumeDiskTypeSupported(VolumeDiskType diskType) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public long getCapacity() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	@Override
-	public long getAvailableCapacity() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	@Override
-	public VolumeObject createVolume(VolumeInfo vi, VolumeDiskType diskType) {
-		if (!pdsInfo.isVolumeDiskTypeSupported(diskType)) {
-			return null;
-		}
-		VolumeObject vo = (VolumeObject)vi;
-		vo.setVolumeDiskType(diskType);
-		this.driver.createVolume(vo);
-		return vo;
-	}
-
-	@Override
-	public boolean exists(VolumeInfo vi) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public boolean templateExists(TemplateInfo template) {
-		return (templatePrimaryStoreMgr.findTemplateOnPrimaryDataStore(template, this)  != null) ? true : false;
-	}
-
-	@Override
-	public VolumeDiskType getDefaultDiskType() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public long getId() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	@Override
-	public TemplateOnPrimaryDataStoreInfo getTemplate(TemplateInfo template) {
-		return templatePrimaryStoreMgr.findTemplateOnPrimaryDataStore(template, this);
-	}
-
-	@Override
-	public VolumeInfo createVoluemFromBaseImage(VolumeInfo volume, TemplateOnPrimaryDataStoreInfo template) {
-		VolumeObject vo = (VolumeObject)volume;
-		vo.setVolumeDiskType(template.getTemplate().getDiskType());
-		this.driver.createVolumeFromBaseImage(vo, template);
-		return volume;
-	}
-
-	@Override
-	public boolean installTemplate(TemplateOnPrimaryDataStoreInfo template) {
-		// TODO Auto-generated method stub
-		return true;
-	}
+    private static final Logger s_logger = Logger.getLogger(DefaultPrimaryDataStoreImpl.class);
+    protected PrimaryDataStoreDriver driver;
+    protected DataStoreVO pdsv;
+    protected PrimaryDataStoreInfo pdsInfo;
+    @Inject
+    private VolumeDao volumeDao;
+    @Inject
+    private HostDao hostDao;
+    @Inject
+    TemplatePrimaryDataStoreManager templatePrimaryStoreMgr;
+
+    public DefaultPrimaryDataStoreImpl(PrimaryDataStoreDriver driver, DataStoreVO pdsv, PrimaryDataStoreInfo pdsInfo) {
+        this.driver = driver;
+        this.pdsv = pdsv;
+        this.pdsInfo = pdsInfo;
+    }
+
+    @Override
+    public VolumeInfo getVolume(long id) {
+        VolumeVO volumeVO = volumeDao.findById(id);
+        VolumeObject vol = new VolumeObject(this, volumeVO);
+        return vol;
+    }
+
+    @Override
+    public List<VolumeInfo> getVolumes() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public boolean deleteVolume(long id) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public List<EndPoint> getEndPoints() {
+        Long clusterId = pdsv.getClusterId();
+        if (clusterId == null) {
+            return null;
+        }
+        List<EndPoint> endpoints = new ArrayList<EndPoint>();
+        List<HostVO> hosts = hostDao.findHypervisorHostInCluster(clusterId);
+        for (HostVO host : hosts) {
+            HypervisorHostEndPoint ep = new HypervisorHostEndPoint(host.getId());
+            ComponentInject.inject(ep);
+            endpoints.add(ep);
+        }
+        Collections.shuffle(endpoints);
+        return endpoints;
+    }
+
+    @Override
+    public PrimaryDataStoreInfo getDataStoreInfo() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public boolean isHypervisorSupported(HypervisorType hypervisor) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean isLocalStorageSupported() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean isVolumeDiskTypeSupported(VolumeDiskType diskType) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public long getCapacity() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getAvailableCapacity() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public VolumeObject createVolume(VolumeInfo vi, VolumeDiskType diskType) {
+        if (!pdsInfo.isVolumeDiskTypeSupported(diskType)) {
+            return null;
+        }
+        VolumeObject vo = (VolumeObject) vi;
+        vo.setVolumeDiskType(diskType);
+        this.driver.createVolume(vo);
+        return vo;
+    }
+
+    @Override
+    public boolean exists(VolumeInfo vi) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean templateExists(TemplateInfo template) {
+        return (templatePrimaryStoreMgr.findTemplateOnPrimaryDataStore(template, this) != null) ? true : false;
+    }
+
+    @Override
+    public VolumeDiskType getDefaultDiskType() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public long getId() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public TemplateOnPrimaryDataStoreInfo getTemplate(TemplateInfo template) {
+        return templatePrimaryStoreMgr.findTemplateOnPrimaryDataStore(template, this);
+    }
+
+    @Override
+    public VolumeInfo createVoluemFromBaseImage(VolumeInfo volume, TemplateOnPrimaryDataStoreInfo template) {
+        VolumeObject vo = (VolumeObject) volume;
+        vo.setVolumeDiskType(template.getTemplate().getDiskType());
+        this.driver.createVolumeFromBaseImage(vo, template);
+        return volume;
+    }
+
+    @Override
+    public boolean installTemplate(TemplateOnPrimaryDataStoreInfo template) {
+        // TODO Auto-generated method stub
+        return true;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
index fe0ec99..4b8dd3c 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
@@ -30,19 +30,29 @@ import org.apache.cloudstack.storage.image.TemplateObject;
 import org.apache.cloudstack.storage.volume.TemplateOnPrimaryDataStoreInfo;
 import org.apache.cloudstack.storage.volume.VolumeObject;
 
-
 public interface PrimaryDataStore extends PrimaryDataStoreInfo {
-	VolumeInfo getVolume(long id);
-	List<VolumeInfo> getVolumes();
-	boolean deleteVolume(long id);
-	VolumeInfo createVolume(VolumeInfo vo, VolumeDiskType diskType);
-	VolumeInfo createVoluemFromBaseImage(VolumeInfo volume, TemplateOnPrimaryDataStoreInfo templateStore);
-	List<EndPoint> getEndPoints();
-	PrimaryDataStoreInfo getDataStoreInfo();
-	boolean exists(VolumeInfo vi);
-	boolean templateExists(TemplateInfo template);
-	TemplateOnPrimaryDataStoreInfo getTemplate(TemplateInfo template);
-	boolean installTemplate(TemplateOnPrimaryDataStoreInfo template);
-	VolumeDiskType getDefaultDiskType();
-	
+    VolumeInfo getVolume(long id);
+
+    List<VolumeInfo> getVolumes();
+
+    boolean deleteVolume(long id);
+
+    VolumeInfo createVolume(VolumeInfo vo, VolumeDiskType diskType);
+
+    VolumeInfo createVoluemFromBaseImage(VolumeInfo volume, TemplateOnPrimaryDataStoreInfo templateStore);
+
+    List<EndPoint> getEndPoints();
+
+    PrimaryDataStoreInfo getDataStoreInfo();
+
+    boolean exists(VolumeInfo vi);
+
+    boolean templateExists(TemplateInfo template);
+
+    TemplateOnPrimaryDataStoreInfo getTemplate(TemplateInfo template);
+
+    boolean installTemplate(TemplateOnPrimaryDataStoreInfo template);
+
+    VolumeDiskType getDefaultDiskType();
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfoImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfoImpl.java
index 65b1bbb..c5ed961 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfoImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreInfoImpl.java
@@ -27,55 +27,54 @@ import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskTyp
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 
 public class PrimaryDataStoreInfoImpl implements PrimaryDataStoreInfo {
-	protected List<HypervisorType> supportedHypervs;
-	protected List<VolumeDiskType> supportedDiskTypes;
-	protected long caapcity;
-	protected long avail;
-	protected boolean localStorage;
-	
-	public PrimaryDataStoreInfoImpl(List<HypervisorType> hypers, List<VolumeDiskType> diskTypes, 
-			long capacity, long avail, boolean localStorage) {
-		this.avail = avail;
-		this.caapcity = capacity;
-		this.localStorage = localStorage;
-		this.supportedDiskTypes = diskTypes;
-		this.supportedHypervs = hypers;
-	}
-	
-	@Override
-	public boolean isHypervisorSupported(HypervisorType hypervisor) {
-		return this.supportedHypervs.contains(hypervisor) ? true : false;
-	}
+    protected List<HypervisorType> supportedHypervs;
+    protected List<VolumeDiskType> supportedDiskTypes;
+    protected long caapcity;
+    protected long avail;
+    protected boolean localStorage;
 
-	@Override
-	public boolean isLocalStorageSupported() {
-		return this.localStorage;
-	}
+    public PrimaryDataStoreInfoImpl(List<HypervisorType> hypers, List<VolumeDiskType> diskTypes, long capacity, long avail, boolean localStorage) {
+        this.avail = avail;
+        this.caapcity = capacity;
+        this.localStorage = localStorage;
+        this.supportedDiskTypes = diskTypes;
+        this.supportedHypervs = hypers;
+    }
 
-	@Override
-	public boolean isVolumeDiskTypeSupported(VolumeDiskType diskType) {
-		return this.supportedDiskTypes.contains(diskType) ? true : false;
-	}
+    @Override
+    public boolean isHypervisorSupported(HypervisorType hypervisor) {
+        return this.supportedHypervs.contains(hypervisor) ? true : false;
+    }
 
-	@Override
-	public long getCapacity() {
-		return this.caapcity;
-	}
+    @Override
+    public boolean isLocalStorageSupported() {
+        return this.localStorage;
+    }
 
-	@Override
-	public long getAvailableCapacity() {
-		return this.avail;
-	}
+    @Override
+    public boolean isVolumeDiskTypeSupported(VolumeDiskType diskType) {
+        return this.supportedDiskTypes.contains(diskType) ? true : false;
+    }
 
-	@Override
-	public List<EndPoint> getEndPoints() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    @Override
+    public long getCapacity() {
+        return this.caapcity;
+    }
 
-	@Override
-	public long getId() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
+    @Override
+    public long getAvailableCapacity() {
+        return this.avail;
+    }
+
+    @Override
+    public List<EndPoint> getEndPoints() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public long getId() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/datastore/db/DataStoreVO.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/db/DataStoreVO.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/db/DataStoreVO.java
index 52f3bbf..dc732d9 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/db/DataStoreVO.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/db/DataStoreVO.java
@@ -39,155 +39,153 @@ import com.cloud.storage.Storage.StoragePoolType;
 import com.cloud.utils.db.GenericDao;
 
 @Entity
-@Table(name="storage_pool")
+@Table(name = "storage_pool")
 public class DataStoreVO implements Identity {
     @Id
-    @TableGenerator(name="storage_pool_sq", table="sequence", pkColumnName="name", valueColumnName="value", pkColumnValue="storage_pool_seq", allocationSize=1)
-    @Column(name="id", updatable=false, nullable = false)
-	private long id;
-    
-    @Column(name="name", updatable=false, nullable=false, length=255)
-	private String name = null;
-
-    @Column(name="uuid", length=255)
-	private String uuid = null;
-    
-    @Column(name="pool_type", updatable=false, nullable=false, length=32)
+    @TableGenerator(name = "storage_pool_sq", table = "sequence", pkColumnName = "name", valueColumnName = "value", pkColumnValue = "storage_pool_seq", allocationSize = 1)
+    @Column(name = "id", updatable = false, nullable = false)
+    private long id;
+
+    @Column(name = "name", updatable = false, nullable = false, length = 255)
+    private String name = null;
+
+    @Column(name = "uuid", length = 255)
+    private String uuid = null;
+
+    @Column(name = "pool_type", updatable = false, nullable = false, length = 32)
     private String protocol;
-    
-    @Column(name=GenericDao.CREATED_COLUMN)
+
+    @Column(name = GenericDao.CREATED_COLUMN)
     Date created;
-    
-    @Column(name=GenericDao.REMOVED_COLUMN)
+
+    @Column(name = GenericDao.REMOVED_COLUMN)
     private Date removed;
-    
-    @Column(name="update_time", updatable=true)
-    @Temporal(value=TemporalType.TIMESTAMP)
+
+    @Column(name = "update_time", updatable = true)
+    @Temporal(value = TemporalType.TIMESTAMP)
     private Date updateTime;
-    
-    @Column(name="data_center_id", updatable=true, nullable=false)
+
+    @Column(name = "data_center_id", updatable = true, nullable = false)
     private long dataCenterId;
-    
-    @Column(name="pod_id", updatable=true)
+
+    @Column(name = "pod_id", updatable = true)
     private Long podId;
-    
-    @Column(name="available_bytes", updatable=true, nullable=true)
+
+    @Column(name = "available_bytes", updatable = true, nullable = true)
     private long availableBytes;
-    
-    @Column(name="capacity_bytes", updatable=true, nullable=true)
+
+    @Column(name = "capacity_bytes", updatable = true, nullable = true)
     private long capacityBytes;
 
-    @Column(name="status",  updatable=true, nullable=false)
-    @Enumerated(value=EnumType.STRING)
+    @Column(name = "status", updatable = true, nullable = false)
+    @Enumerated(value = EnumType.STRING)
     private DataStoreStatus status;
-    
-    @Column(name="storage_provider", updatable=true, nullable=false)
+
+    @Column(name = "storage_provider", updatable = true, nullable = false)
     private Long storageProvider;
-    
-    @Column(name="storage_type", nullable=false)
+
+    @Column(name = "storage_type", nullable = false)
     private String storageType;
-    
-    @Column(name="host_address")
+
+    @Column(name = "host_address")
     private String hostAddress;
-    
-    @Column(name="path")
+
+    @Column(name = "path")
     private String path;
-    
-    @Column(name="port")
+
+    @Column(name = "port")
     private int port;
 
-    @Column(name="user_info")
+    @Column(name = "user_info")
     private String userInfo;
 
-    @Column(name="cluster_id")
+    @Column(name = "cluster_id")
     private Long clusterId;
-    
+
     public long getId() {
-		return id;
-	}
-	
-	public DataStoreStatus getStatus() {
-		return status;
-	}
+        return id;
+    }
+
+    public DataStoreStatus getStatus() {
+        return status;
+    }
 
-	public DataStoreVO() {
-		// TODO Auto-generated constructor stub
-	}
+    public DataStoreVO() {
+        // TODO Auto-generated constructor stub
+    }
 
     public String getName() {
-		return name;
-	}
+        return name;
+    }
 
     public String getUuid() {
-		return uuid;
-	}
-	
+        return uuid;
+    }
 
     public String getPoolType() {
-		return protocol;
-	}
+        return protocol;
+    }
 
     public Date getCreated() {
-		return created;
-	}
+        return created;
+    }
 
-	public Date getRemoved() {
-		return removed;
-	}
+    public Date getRemoved() {
+        return removed;
+    }
 
     public Date getUpdateTime() {
-		return updateTime;
-	}
+        return updateTime;
+    }
 
     public long getDataCenterId() {
-		return dataCenterId;
-	}
+        return dataCenterId;
+    }
 
     public long getAvailableBytes() {
-		return availableBytes;
-	}
-
-	public Long getStorageProviderId() {
-		return storageProvider;
-	}
-	
-	public void setStorageProviderId(Long provider) {
-		storageProvider = provider;
-	}
-	
-	public String getStorageType() {
-		return storageType;
-	}
-	
-	public void setStorageType(String type) {
-		storageType = type;
-	}
+        return availableBytes;
+    }
+
+    public Long getStorageProviderId() {
+        return storageProvider;
+    }
+
+    public void setStorageProviderId(Long provider) {
+        storageProvider = provider;
+    }
+
+    public String getStorageType() {
+        return storageType;
+    }
+
+    public void setStorageType(String type) {
+        storageType = type;
+    }
 
     public long getCapacityBytes() {
-		return capacityBytes;
-	}
-
-	public void setAvailableBytes(long available) {
-		availableBytes = available;
-	}
-	
-	public void setCapacityBytes(long capacity) {
-		capacityBytes = capacity;
-	}
-
-    
+        return capacityBytes;
+    }
+
+    public void setAvailableBytes(long available) {
+        availableBytes = available;
+    }
+
+    public void setCapacityBytes(long capacity) {
+        capacityBytes = capacity;
+    }
+
     public Long getClusterId() {
         return clusterId;
     }
-    
+
     public void setClusterId(Long clusterId) {
         this.clusterId = clusterId;
     }
-    
+
     public String getHostAddress() {
         return hostAddress;
     }
-    
+
     public String getPath() {
         return path;
     }
@@ -195,62 +193,61 @@ public class DataStoreVO implements Identity {
     public String getUserInfo() {
         return userInfo;
     }
-    
-    public void setStatus(DataStoreStatus status)
-    {
-    	this.status = status;
+
+    public void setStatus(DataStoreStatus status) {
+        this.status = status;
     }
-    
+
     public void setId(long id) {
         this.id = id;
     }
-    
+
     public void setDataCenterId(long dcId) {
         this.dataCenterId = dcId;
     }
-    
+
     public void setPodId(Long podId) {
         this.podId = podId;
     }
-    
+
     public void setUuid(String uuid) {
         this.uuid = uuid;
     }
-    
+
     public void setPath(String path) {
-    	this.path = path;
+        this.path = path;
     }
 
     public void setUserInfo(String userInfo) {
         this.userInfo = userInfo;
     }
-    
+
     public int getPort() {
         return port;
     }
 
     public Long getPodId() {
-		return podId;
-	}
-	
-	public void setName(String name) {
-	    this.name = name;
-	}
-	
-	@Override
+        return podId;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
     public boolean equals(Object obj) {
-	    if (!(obj instanceof DataStoreVO) || obj == null) {
-	        return false;
-	    }
-	    DataStoreVO that = (DataStoreVO)obj;
-	    return this.id == that.id;
-	}
-	
-	@Override
-	public int hashCode() {
-	    return new Long(id).hashCode();
-	}
-	
+        if (!(obj instanceof DataStoreVO) || obj == null) {
+            return false;
+        }
+        DataStoreVO that = (DataStoreVO) obj;
+        return this.id == that.id;
+    }
+
+    @Override
+    public int hashCode() {
+        return new Long(id).hashCode();
+    }
+
     @Override
     public String toString() {
         return new StringBuilder("Pool[").append(id).append("|").append(protocol).append("]").toString();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/573d13dd/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java
index 8016559..f525632 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java
@@ -25,82 +25,92 @@ import org.apache.cloudstack.storage.datastore.DataStoreStatus;
 
 import com.cloud.utils.db.GenericDao;
 
-
 public interface PrimaryDataStoreDao extends GenericDao<DataStoreVO, Long> {
 
-	/**
-	 * @param datacenterId -- the id of the datacenter (availability zone)
-	 */
-	List<DataStoreVO> listByDataCenterId(long datacenterId);
-	
-	/**
-	 * @param datacenterId -- the id of the datacenter (availability zone)
-	 */
-	List<DataStoreVO> listBy(long datacenterId, long podId, Long clusterId);
-    
-	/**
-	 * Set capacity of storage pool in bytes
-	 * @param id pool id.
-	 * @param capacity capacity in bytes
-	 */
+    /**
+     * @param datacenterId
+     *            -- the id of the datacenter (availability zone)
+     */
+    List<DataStoreVO> listByDataCenterId(long datacenterId);
+
+    /**
+     * @param datacenterId
+     *            -- the id of the datacenter (availability zone)
+     */
+    List<DataStoreVO> listBy(long datacenterId, long podId, Long clusterId);
+
+    /**
+     * Set capacity of storage pool in bytes
+     * 
+     * @param id
+     *            pool id.
+     * @param capacity
+     *            capacity in bytes
+     */
     void updateCapacity(long id, long capacity);
-    
-	/**
-	 * Set available bytes of storage pool in bytes
-	 * @param id pool id.
-	 * @param available available capacity in bytes
-	 */
+
+    /**
+     * Set available bytes of storage pool in bytes
+     * 
+     * @param id
+     *            pool id.
+     * @param available
+     *            available capacity in bytes
+     */
     void updateAvailable(long id, long available);
-        
-    
+
     DataStoreVO persist(DataStoreVO pool, Map<String, String> details);
-    
+
     /**
      * Find pool by name.
      * 
-     * @param name name of pool.
-     * @return the single  StoragePoolVO
+     * @param name
+     *            name of pool.
+     * @return the single StoragePoolVO
      */
     List<DataStoreVO> findPoolByName(String name);
-    
+
     /**
      * Find pools by the pod that matches the details.
      * 
-     * @param podId pod id to find the pools in.
-     * @param details details to match.  All must match for the pool to be returned.
+     * @param podId
+     *            pod id to find the pools in.
+     * @param details
+     *            details to match. All must match for the pool to be returned.
      * @return List of StoragePoolVO
      */
     List<DataStoreVO> findPoolsByDetails(long dcId, long podId, Long clusterId, Map<String, String> details);
-    
+
     List<DataStoreVO> findPoolsByTags(long dcId, long podId, Long clusterId, String[] tags, Boolean shared);
-    
+
     /**
      * Find pool by UUID.
      * 
-     * @param uuid uuid of pool.
-     * @return the single  StoragePoolVO
+     * @param uuid
+     *            uuid of pool.
+     * @return the single StoragePoolVO
      */
     DataStoreVO findPoolByUUID(String uuid);
 
     List<DataStoreVO> listByStorageHost(String hostFqdnOrIp);
 
     DataStoreVO findPoolByHostPath(long dcId, Long podId, String host, String path, String uuid);
-    
+
     List<DataStoreVO> listPoolByHostPath(String host, String path);
-    
+
     void updateDetails(long poolId, Map<String, String> details);
-    
+
     Map<String, String> getDetails(long poolId);
 
-	List<String> searchForStoragePoolDetails(long poolId, String value);
-	
-	List<DataStoreVO> findIfDuplicatePoolsExistByUUID(String uuid);
+    List<String> searchForStoragePoolDetails(long poolId, String value);
+
+    List<DataStoreVO> findIfDuplicatePoolsExistByUUID(String uuid);
 
     List<DataStoreVO> listByStatus(DataStoreStatus status);
 
     long countPoolsByStatus(DataStoreStatus... statuses);
 
-	List<DataStoreVO> listByStatusInZone(long dcId, DataStoreStatus status);
-    
+    List<DataStoreVO> listByStatusInZone(long dcId, DataStoreStatus status);
+
     List<DataStoreVO> listPoolsByCluster(long clusterId);
 }
\ No newline at end of file