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/15 02:47:35 UTC

git commit: add storage motion interface

Updated Branches:
  refs/heads/javelin b38d9b82b -> cad75e722


add storage motion interface


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

Branch: refs/heads/javelin
Commit: cad75e7220a85c03891b0708e11a59297f5a8007
Parents: b38d9b8
Author: Edison Su <su...@gmail.com>
Authored: Wed Nov 14 17:47:09 2012 -0800
Committer: Edison Su <su...@gmail.com>
Committed: Wed Nov 14 17:47:24 2012 -0800

----------------------------------------------------------------------
 .../com/cloud/template/VirtualMachineTemplate.java |    1 -
 .../engine/cloud/entity/api/TemplateEntity.java    |    2 +-
 .../storage/StorageOrchestratorImpl.java           |    2 +-
 .../datastore/DefaultPrimaryDataStoreImpl.java     |   20 +++++---
 .../storage/datastore/PrimaryDataStore.java        |    2 +
 .../storage/image/ImageMotionService.java          |   24 ---------
 .../storage/image/ImageMotionServiceImpl.java      |   35 -------------
 .../cloudstack/storage/image/TemplateObject.java   |    8 +++
 .../image/motion/DefaultImageMotionProvider.java   |   23 +++++++++
 .../storage/image/motion/ImageMotionProvider.java  |   26 ++++++++++
 .../storage/image/motion/ImageMotionService.java   |   27 ++++++++++
 .../image/motion/ImageMotionServiceImpl.java       |   38 +++++++++++++++
 12 files changed, 139 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/api/src/com/cloud/template/VirtualMachineTemplate.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/template/VirtualMachineTemplate.java b/api/src/com/cloud/template/VirtualMachineTemplate.java
index 27f5871..00a4143 100755
--- a/api/src/com/cloud/template/VirtualMachineTemplate.java
+++ b/api/src/com/cloud/template/VirtualMachineTemplate.java
@@ -92,6 +92,5 @@ public interface VirtualMachineTemplate extends ControlledEntity {
     Long getSourceTemplateId();
 
     String getTemplateTag();
-
     Map getDetails();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/TemplateEntity.java
----------------------------------------------------------------------
diff --git a/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/TemplateEntity.java b/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/TemplateEntity.java
index 5978cc7..ac01bde 100755
--- a/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/TemplateEntity.java
+++ b/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/TemplateEntity.java
@@ -23,5 +23,5 @@ import org.apache.cloudstack.engine.entity.api.CloudStackEntity;
 import com.cloud.template.VirtualMachineTemplate;
 
 public interface TemplateEntity extends CloudStackEntity, VirtualMachineTemplate {
-
+	
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/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 eb3b1e0..356190f 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/StorageOrchestratorImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/StorageOrchestratorImpl.java
@@ -348,7 +348,7 @@ public class StorageOrchestratorImpl implements StorageOrchestrator {
 		PrimaryDataStore pd = primaryStorageMgr.getPrimaryDataStore(dataStoreId);
 		boolean existsOnPrimaryStorage = pd.templateExists(template.getId());
 		if (!existsOnPrimaryStorage) {
-			
+			pd.installTemplate(template);
 		}
 		return false;
 	}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/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 bafd280..a87b195 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
@@ -14,6 +14,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskTyp
 import org.apache.cloudstack.storage.HypervisorHostEndPoint;
 import org.apache.cloudstack.storage.datastore.db.DataStoreVO;
 import org.apache.cloudstack.storage.datastore.driver.PrimaryDataStoreDriver;
+import org.apache.cloudstack.storage.image.TemplateInfo;
 
 import org.apache.cloudstack.storage.volume.VolumeEntityImpl;
 import org.apache.cloudstack.storage.volume.VolumeEvent;
@@ -66,13 +67,6 @@ public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore {
 	}
 
 	@Override
-	public VolumeInfo createVolume(VolumeInfo vol, VolumeDiskType diskType) {
-		
-		
-	
-	}
-
-	@Override
 	public List<EndPoint> getEndPoints() {
 		Long clusterId = pdsv.getClusterId();
 		if (clusterId == null) {
@@ -141,4 +135,16 @@ public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore {
 		// TODO Auto-generated method stub
 		return false;
 	}
+
+	@Override
+	public boolean templateExists(long templateId) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean createTemplate(TemplateObject template) {
+		// TODO Auto-generated method stub
+		return false;
+	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/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 dd9be51..4917fc3 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
@@ -25,6 +25,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
 import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
 import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
 import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskType;
+import org.apache.cloudstack.storage.image.TemplateObject;
 import org.apache.cloudstack.storage.volume.VolumeObject;
 
 
@@ -37,4 +38,5 @@ public interface PrimaryDataStore extends PrimaryDataStoreInfo {
 	PrimaryDataStoreInfo getDataStoreInfo();
 	boolean exists(VolumeInfo vi);
 	boolean templateExists(long templateId);
+	boolean installTemplate(TemplateObject template);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionService.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionService.java b/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionService.java
deleted file mode 100644
index dd35e5d..0000000
--- a/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionService.java
+++ /dev/null
@@ -1,24 +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.storage.image;
-
-public interface ImageMotionService {
-	boolean copyTemplate(String templateUri, String destTemplateUri);
-	boolean copyIso(String isoUri, String destIsoUri);
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionServiceImpl.java b/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionServiceImpl.java
deleted file mode 100644
index 2dc4e74..0000000
--- a/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionServiceImpl.java
+++ /dev/null
@@ -1,35 +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.storage.image;
-
-public class ImageMotionServiceImpl implements ImageMotionService {
-
-	@Override
-	public boolean copyTemplate(String templateUri, String destTemplateUri) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public boolean copyIso(String isoUri, String destIsoUri) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/TemplateObject.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/TemplateObject.java b/engine/storage/src/org/apache/cloudstack/storage/image/TemplateObject.java
index f1181db..ad43ec9 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/image/TemplateObject.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/image/TemplateObject.java
@@ -18,6 +18,14 @@
  */
 package org.apache.cloudstack.storage.image;
 
+import org.apache.cloudstack.storage.image.store.ImageDataStoreInfo;
+
 public class TemplateObject implements TemplateInfo {
 
+	@Override
+	public ImageDataStoreInfo getImageDataStore() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionProvider.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionProvider.java b/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionProvider.java
new file mode 100644
index 0000000..f645233
--- /dev/null
+++ b/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionProvider.java
@@ -0,0 +1,23 @@
+/*
+ * 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.storage.image.motion;
+
+public class DefaultImageMotionProvider implements ImageMotionProvider {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionProvider.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionProvider.java b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionProvider.java
new file mode 100644
index 0000000..342ebe6
--- /dev/null
+++ b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionProvider.java
@@ -0,0 +1,26 @@
+/*
+ * 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.storage.image.motion;
+
+import org.apache.cloudstack.engine.cloud.entity.api.TemplateEntity;
+import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
+
+public interface ImageMotionProvider {
+   public boolean canHandle(TemplateEntity template, PrimaryDataStore dataStoe);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionService.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionService.java b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionService.java
new file mode 100644
index 0000000..a98be67
--- /dev/null
+++ b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionService.java
@@ -0,0 +1,27 @@
+/*
+ * 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.storage.image.motion;
+
+import org.apache.cloudstack.engine.cloud.entity.api.TemplateEntity;
+import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
+
+public interface ImageMotionService {
+	boolean copyTemplate(TemplateEntity template, PrimaryDataStoreInfo dataStore);
+	boolean copyIso(String isoUri, String destIsoUri);
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionServiceImpl.java b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionServiceImpl.java
new file mode 100644
index 0000000..e5b7b25
--- /dev/null
+++ b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionServiceImpl.java
@@ -0,0 +1,38 @@
+/*
+ * 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.storage.image.motion;
+
+import org.apache.cloudstack.engine.cloud.entity.api.TemplateEntity;
+import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
+import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
+
+public class ImageMotionServiceImpl implements ImageMotionService {
+	@Override
+	public boolean copyIso(String isoUri, String destIsoUri) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean copyTemplate(TemplateEntity template, PrimaryDataStore dataStore) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+}


Re: git commit: add storage motion interface

Posted by David Nalley <da...@gnsa.us>.
Is this a reshuffling of the current storage motion or is there
something new planned for here?

--David

On Wed, Nov 14, 2012 at 8:47 PM,  <ed...@apache.org> wrote:
> Updated Branches:
>   refs/heads/javelin b38d9b82b -> cad75e722
>
>
> add storage motion interface
>
>
> Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
> Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/cad75e72
> Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/cad75e72
> Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/cad75e72
>
> Branch: refs/heads/javelin
> Commit: cad75e7220a85c03891b0708e11a59297f5a8007
> Parents: b38d9b8
> Author: Edison Su <su...@gmail.com>
> Authored: Wed Nov 14 17:47:09 2012 -0800
> Committer: Edison Su <su...@gmail.com>
> Committed: Wed Nov 14 17:47:24 2012 -0800
>
> ----------------------------------------------------------------------
>  .../com/cloud/template/VirtualMachineTemplate.java |    1 -
>  .../engine/cloud/entity/api/TemplateEntity.java    |    2 +-
>  .../storage/StorageOrchestratorImpl.java           |    2 +-
>  .../datastore/DefaultPrimaryDataStoreImpl.java     |   20 +++++---
>  .../storage/datastore/PrimaryDataStore.java        |    2 +
>  .../storage/image/ImageMotionService.java          |   24 ---------
>  .../storage/image/ImageMotionServiceImpl.java      |   35 -------------
>  .../cloudstack/storage/image/TemplateObject.java   |    8 +++
>  .../image/motion/DefaultImageMotionProvider.java   |   23 +++++++++
>  .../storage/image/motion/ImageMotionProvider.java  |   26 ++++++++++
>  .../storage/image/motion/ImageMotionService.java   |   27 ++++++++++
>  .../image/motion/ImageMotionServiceImpl.java       |   38 +++++++++++++++
>  12 files changed, 139 insertions(+), 69 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/api/src/com/cloud/template/VirtualMachineTemplate.java
> ----------------------------------------------------------------------
> diff --git a/api/src/com/cloud/template/VirtualMachineTemplate.java b/api/src/com/cloud/template/VirtualMachineTemplate.java
> index 27f5871..00a4143 100755
> --- a/api/src/com/cloud/template/VirtualMachineTemplate.java
> +++ b/api/src/com/cloud/template/VirtualMachineTemplate.java
> @@ -92,6 +92,5 @@ public interface VirtualMachineTemplate extends ControlledEntity {
>      Long getSourceTemplateId();
>
>      String getTemplateTag();
> -
>      Map getDetails();
>  }
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/TemplateEntity.java
> ----------------------------------------------------------------------
> diff --git a/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/TemplateEntity.java b/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/TemplateEntity.java
> index 5978cc7..ac01bde 100755
> --- a/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/TemplateEntity.java
> +++ b/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/TemplateEntity.java
> @@ -23,5 +23,5 @@ import org.apache.cloudstack.engine.entity.api.CloudStackEntity;
>  import com.cloud.template.VirtualMachineTemplate;
>
>  public interface TemplateEntity extends CloudStackEntity, VirtualMachineTemplate {
> -
> +
>  }
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/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 eb3b1e0..356190f 100644
> --- a/engine/storage/src/org/apache/cloudstack/storage/StorageOrchestratorImpl.java
> +++ b/engine/storage/src/org/apache/cloudstack/storage/StorageOrchestratorImpl.java
> @@ -348,7 +348,7 @@ public class StorageOrchestratorImpl implements StorageOrchestrator {
>                 PrimaryDataStore pd = primaryStorageMgr.getPrimaryDataStore(dataStoreId);
>                 boolean existsOnPrimaryStorage = pd.templateExists(template.getId());
>                 if (!existsOnPrimaryStorage) {
> -
> +                       pd.installTemplate(template);
>                 }
>                 return false;
>         }
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/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 bafd280..a87b195 100644
> --- a/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
> +++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
> @@ -14,6 +14,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskTyp
>  import org.apache.cloudstack.storage.HypervisorHostEndPoint;
>  import org.apache.cloudstack.storage.datastore.db.DataStoreVO;
>  import org.apache.cloudstack.storage.datastore.driver.PrimaryDataStoreDriver;
> +import org.apache.cloudstack.storage.image.TemplateInfo;
>
>  import org.apache.cloudstack.storage.volume.VolumeEntityImpl;
>  import org.apache.cloudstack.storage.volume.VolumeEvent;
> @@ -66,13 +67,6 @@ public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore {
>         }
>
>         @Override
> -       public VolumeInfo createVolume(VolumeInfo vol, VolumeDiskType diskType) {
> -
> -
> -
> -       }
> -
> -       @Override
>         public List<EndPoint> getEndPoints() {
>                 Long clusterId = pdsv.getClusterId();
>                 if (clusterId == null) {
> @@ -141,4 +135,16 @@ public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore {
>                 // TODO Auto-generated method stub
>                 return false;
>         }
> +
> +       @Override
> +       public boolean templateExists(long templateId) {
> +               // TODO Auto-generated method stub
> +               return false;
> +       }
> +
> +       @Override
> +       public boolean createTemplate(TemplateObject template) {
> +               // TODO Auto-generated method stub
> +               return false;
> +       }
>  }
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/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 dd9be51..4917fc3 100644
> --- a/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
> +++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
> @@ -25,6 +25,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
>  import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
>  import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
>  import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskType;
> +import org.apache.cloudstack.storage.image.TemplateObject;
>  import org.apache.cloudstack.storage.volume.VolumeObject;
>
>
> @@ -37,4 +38,5 @@ public interface PrimaryDataStore extends PrimaryDataStoreInfo {
>         PrimaryDataStoreInfo getDataStoreInfo();
>         boolean exists(VolumeInfo vi);
>         boolean templateExists(long templateId);
> +       boolean installTemplate(TemplateObject template);
>  }
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionService.java
> ----------------------------------------------------------------------
> diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionService.java b/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionService.java
> deleted file mode 100644
> index dd35e5d..0000000
> --- a/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionService.java
> +++ /dev/null
> @@ -1,24 +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.storage.image;
> -
> -public interface ImageMotionService {
> -       boolean copyTemplate(String templateUri, String destTemplateUri);
> -       boolean copyIso(String isoUri, String destIsoUri);
> -}
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionServiceImpl.java
> ----------------------------------------------------------------------
> diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionServiceImpl.java b/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionServiceImpl.java
> deleted file mode 100644
> index 2dc4e74..0000000
> --- a/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionServiceImpl.java
> +++ /dev/null
> @@ -1,35 +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.storage.image;
> -
> -public class ImageMotionServiceImpl implements ImageMotionService {
> -
> -       @Override
> -       public boolean copyTemplate(String templateUri, String destTemplateUri) {
> -               // TODO Auto-generated method stub
> -               return false;
> -       }
> -
> -       @Override
> -       public boolean copyIso(String isoUri, String destIsoUri) {
> -               // TODO Auto-generated method stub
> -               return false;
> -       }
> -
> -}
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/TemplateObject.java
> ----------------------------------------------------------------------
> diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/TemplateObject.java b/engine/storage/src/org/apache/cloudstack/storage/image/TemplateObject.java
> index f1181db..ad43ec9 100644
> --- a/engine/storage/src/org/apache/cloudstack/storage/image/TemplateObject.java
> +++ b/engine/storage/src/org/apache/cloudstack/storage/image/TemplateObject.java
> @@ -18,6 +18,14 @@
>   */
>  package org.apache.cloudstack.storage.image;
>
> +import org.apache.cloudstack.storage.image.store.ImageDataStoreInfo;
> +
>  public class TemplateObject implements TemplateInfo {
>
> +       @Override
> +       public ImageDataStoreInfo getImageDataStore() {
> +               // TODO Auto-generated method stub
> +               return null;
> +       }
> +
>  }
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionProvider.java
> ----------------------------------------------------------------------
> diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionProvider.java b/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionProvider.java
> new file mode 100644
> index 0000000..f645233
> --- /dev/null
> +++ b/engine/storage/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionProvider.java
> @@ -0,0 +1,23 @@
> +/*
> + * 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.storage.image.motion;
> +
> +public class DefaultImageMotionProvider implements ImageMotionProvider {
> +
> +}
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionProvider.java
> ----------------------------------------------------------------------
> diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionProvider.java b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionProvider.java
> new file mode 100644
> index 0000000..342ebe6
> --- /dev/null
> +++ b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionProvider.java
> @@ -0,0 +1,26 @@
> +/*
> + * 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.storage.image.motion;
> +
> +import org.apache.cloudstack.engine.cloud.entity.api.TemplateEntity;
> +import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
> +
> +public interface ImageMotionProvider {
> +   public boolean canHandle(TemplateEntity template, PrimaryDataStore dataStoe);
>
> +}
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionService.java
> ----------------------------------------------------------------------
> diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionService.java b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionService.java
> new file mode 100644
> index 0000000..a98be67
> --- /dev/null
> +++ b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionService.java
> @@ -0,0 +1,27 @@
> +/*
> + * 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.storage.image.motion;
> +
> +import org.apache.cloudstack.engine.cloud.entity.api.TemplateEntity;
> +import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
> +
> +public interface ImageMotionService {
> +       boolean copyTemplate(TemplateEntity template, PrimaryDataStoreInfo dataStore);
> +       boolean copyIso(String isoUri, String destIsoUri);
> +}
>
> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cad75e72/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionServiceImpl.java
> ----------------------------------------------------------------------
> diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionServiceImpl.java b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionServiceImpl.java
> new file mode 100644
> index 0000000..e5b7b25
> --- /dev/null
> +++ b/engine/storage/src/org/apache/cloudstack/storage/image/motion/ImageMotionServiceImpl.java
> @@ -0,0 +1,38 @@
> +/*
> + * 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.storage.image.motion;
> +
> +import org.apache.cloudstack.engine.cloud.entity.api.TemplateEntity;
> +import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
> +import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
> +
> +public class ImageMotionServiceImpl implements ImageMotionService {
> +       @Override
> +       public boolean copyIso(String isoUri, String destIsoUri) {
> +               // TODO Auto-generated method stub
> +               return false;
> +       }
> +
> +       @Override
> +       public boolean copyTemplate(TemplateEntity template, PrimaryDataStore dataStore) {
> +               // TODO Auto-generated method stub
> +               return false;
> +       }
> +
> +}
>