Updated Branches:
  refs/heads/javelin 6dd2318b4 -> 17c82b727

add image skeleton


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

Branch: refs/heads/javelin
Commit: 17c82b7270c29c9138adfde7553cdaa5d5bd6627
Parents: 6dd2318
Author: Edison Su <[email protected]>
Authored: Mon Nov 5 19:36:56 2012 -0800
Committer: Edison Su <[email protected]>
Committed: Mon Nov 5 19:36:56 2012 -0800

----------------------------------------------------------------------
 .../storage/image/ImageMotionServiceImpl.java      |   35 ++++++++++
 .../cloudstack/storage/image/ImageServiceImpl.java |    9 ++-
 .../apache/cloudstack/storage/image/Template.java  |    8 ++
 .../storage/image/db/ImageDaoStoreDao.java         |   25 -------
 .../storage/image/db/ImageDaoStoreDaoImpl.java     |    2 +-
 .../storage/image/db/ImageDataStoreDao.java        |   25 +++++++
 .../storage/image/db/ImageDataStoreProviderVO.java |   28 ++++++++-
 .../cloudstack/storage/image/db/ImageDataVO.java   |   11 +++
 .../image/driver/ImageDataStoreDriverImpl.java     |    4 +-
 .../image/manager/ImageDataStoreManagerImpl.java   |    4 +-
 .../provider/DefaultImageDataStoreProvider.java    |   53 +++++++++++++++
 .../image/provider/ImageDataStoreProvider.java     |    1 +
 .../provider/ImageDataStoreProviderManager.java    |    4 +
 .../ImageDataStoreProviderManagerImpl.java         |   42 +++++++++++-
 .../storage/image/store/ImageDataStoreImpl.java    |   11 ++-
 15 files changed, 222 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/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
new file mode 100644
index 0000000..2dc4e74
--- /dev/null
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/ImageMotionServiceImpl.java
@@ -0,0 +1,35 @@
+/*
+ * 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/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/ImageServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/ImageServiceImpl.java 
b/engine/storage/src/org/apache/cloudstack/storage/image/ImageServiceImpl.java
index 6849192..7fabffa 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/ImageServiceImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/ImageServiceImpl.java
@@ -22,15 +22,16 @@ import javax.inject.Inject;
 
 import org.apache.cloudstack.storage.image.downloader.ImageDownloader;
 import org.apache.cloudstack.storage.image.manager.ImageDataStoreManager;
+import 
org.apache.cloudstack.storage.image.provider.ImageDataStoreProviderManager;
 import org.apache.cloudstack.storage.image.store.ImageDataStore;
 
 public class ImageServiceImpl implements ImageService {
 
        @Inject
-       ImageDataStoreManager imageStoreMgr;
+       ImageDataStoreProviderManager imageStoreProviderMgr;
        @Override
        public boolean registerTemplate(long templateId, long imageStoreId) {
-               ImageDataStore ids = 
imageStoreMgr.getImageDataStore(imageStoreId);
+               ImageDataStore ids = 
imageStoreProviderMgr.getDataStore(imageStoreId);
                Template template = ids.registerTemplate(templateId);
                if (ids.needDownloadToCacheStorage()) {
                        ImageDownloader imageDl = ids.getImageDownloader();
@@ -59,8 +60,8 @@ public class ImageServiceImpl implements ImageService {
 
        @Override
        public String grantTemplateAccess(long templateId, long endpointId) {
-               // TODO Auto-generated method stub
-               return null;
+               ImageDataStore ids = 
imageStoreProviderMgr.getDataStoreFromTemplateId(templateId);
+               return ids.grantAccess(templateId, endpointId);
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/Template.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/Template.java 
b/engine/storage/src/org/apache/cloudstack/storage/image/Template.java
index 1a71d82..ae12e0c 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/image/Template.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/image/Template.java
@@ -32,5 +32,13 @@ public class Template {
     public ImageDataStore getImageDataStore() {
         return this.dataStore;
     }
+    
+    public void setImageDataStoreId(long dataStoreId) {
+       imageVO.setImageDataStoreId(dataStoreId);
+    }
+    
+    public long getImageDataStoreId() {
+       return imageVO.getImageDataStoreId();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDaoStoreDao.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDaoStoreDao.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDaoStoreDao.java
deleted file mode 100644
index 3e1a951..0000000
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDaoStoreDao.java
+++ /dev/null
@@ -1,25 +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.db;
-
-import com.cloud.utils.db.GenericDao;
-
-public interface ImageDaoStoreDao extends GenericDao<ImageDataStoreVO, Long> {
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDaoStoreDaoImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDaoStoreDaoImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDaoStoreDaoImpl.java
index 01dd62e..55453fa 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDaoStoreDaoImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDaoStoreDaoImpl.java
@@ -20,6 +20,6 @@ package org.apache.cloudstack.storage.image.db;
 
 import com.cloud.utils.db.GenericDaoBase;
 
-public class ImageDaoStoreDaoImpl extends GenericDaoBase<ImageDataStoreVO, 
Long> implements ImageDaoStoreDao {
+public class ImageDaoStoreDaoImpl extends GenericDaoBase<ImageDataStoreVO, 
Long> implements ImageDataStoreDao {
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataStoreDao.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataStoreDao.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataStoreDao.java
new file mode 100644
index 0000000..1a95c2d
--- /dev/null
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataStoreDao.java
@@ -0,0 +1,25 @@
+/*
+ * 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.db;
+
+import com.cloud.utils.db.GenericDao;
+
+public interface ImageDataStoreDao extends GenericDao<ImageDataStoreVO, Long> {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataStoreProviderVO.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataStoreProviderVO.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataStoreProviderVO.java
index b8ecdcc..799a459 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataStoreProviderVO.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataStoreProviderVO.java
@@ -18,6 +18,32 @@
  */
 package org.apache.cloudstack.storage.image.db;
 
-public interface ImageDataStoreProviderVO {
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.TableGenerator;
 
+@Entity
+@Table(name="image_data_store_provider")
+public class ImageDataStoreProviderVO {
+    @Id
+    @TableGenerator(name="image_data_store_provider_sq", table="sequence", 
pkColumnName="name", valueColumnName="value", 
pkColumnValue="image_data_store_provider_seq", allocationSize=1)
+    @Column(name="id", nullable = false)
+    private long id;
+    
+    @Column(name="name", nullable = false)
+    private String name;
+    
+    public long getId() {
+       return this.id;
+    }
+    
+    public String getName() {
+       return this.name;
+    }
+    
+    public void setName(String name) {
+       this.name = name;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataVO.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataVO.java 
b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataVO.java
index d50be88..eff2dbc 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataVO.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageDataVO.java
@@ -129,6 +129,9 @@ public class ImageDataVO implements Identity {
     @Column(name="enable_sshkey")
     private boolean enableSshKey;
     
+    @Column(name="image_data_store_id")
+    private long imageDataStoreId;
+    
     @Transient
     Map details;
 
@@ -377,5 +380,13 @@ public class ImageDataVO implements Identity {
        public void setEnableSshKey(boolean enable) {
                enableSshKey = enable;
        }
+       
+       public long getImageDataStoreId() {
+               return this.imageDataStoreId;
+       }
+       
+       public void setImageDataStoreId(long dataStoreId) {
+               this.imageDataStoreId = dataStoreId;
+       }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/driver/ImageDataStoreDriverImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/driver/ImageDataStoreDriverImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/driver/ImageDataStoreDriverImpl.java
index a88e669..390148a 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/driver/ImageDataStoreDriverImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/driver/ImageDataStoreDriverImpl.java
@@ -21,7 +21,9 @@ package org.apache.cloudstack.storage.image.driver;
 import org.apache.cloudstack.storage.image.Template;
 
 public class ImageDataStoreDriverImpl implements ImageDataStoreDriver {
-
+       
+       public ImageDataStoreDriverImpl() {
+       }
        @Override
        public boolean registerTemplate(Template template) {
                //TODO: check the availability of template 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/manager/ImageDataStoreManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/manager/ImageDataStoreManagerImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/manager/ImageDataStoreManagerImpl.java
index 3b09fcb..ce9e78c 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/manager/ImageDataStoreManagerImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/manager/ImageDataStoreManagerImpl.java
@@ -21,14 +21,14 @@ package org.apache.cloudstack.storage.image.manager;
 import javax.inject.Inject;
 
 import org.apache.cloudstack.storage.datastore.db.DataStoreVO;
-import org.apache.cloudstack.storage.image.db.ImageDaoStoreDao;
+import org.apache.cloudstack.storage.image.db.ImageDataStoreDao;
 import org.apache.cloudstack.storage.image.db.ImageDataDao;
 import org.apache.cloudstack.storage.image.db.ImageDataStoreVO;
 import org.apache.cloudstack.storage.image.store.ImageDataStore;
 
 public class ImageDataStoreManagerImpl implements ImageDataStoreManager {
        @Inject
-       ImageDaoStoreDao dataStoreDao;
+       ImageDataStoreDao dataStoreDao;
        @Inject
        ImageDataDao imageDataDao;
        @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/provider/DefaultImageDataStoreProvider.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/provider/DefaultImageDataStoreProvider.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/provider/DefaultImageDataStoreProvider.java
new file mode 100644
index 0000000..2953f0b
--- /dev/null
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/provider/DefaultImageDataStoreProvider.java
@@ -0,0 +1,53 @@
+/*
+ * 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.provider;
+
+import javax.inject.Inject;
+
+import org.apache.cloudstack.storage.image.db.ImageDataStoreDao;
+import org.apache.cloudstack.storage.image.db.ImageDataStoreProviderDao;
+import org.apache.cloudstack.storage.image.db.ImageDataStoreVO;
+import org.apache.cloudstack.storage.image.driver.ImageDataStoreDriver;
+import org.apache.cloudstack.storage.image.driver.ImageDataStoreDriverImpl;
+import org.apache.cloudstack.storage.image.store.ImageDataStore;
+import org.apache.cloudstack.storage.image.store.ImageDataStoreImpl;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DefaultImageDataStoreProvider implements ImageDataStoreProvider {
+       private final String providerName = "DefaultProvider";
+       @Inject
+       ImageDataStoreProviderDao providerDao;
+       @Inject
+       ImageDataStoreDao imageStoreDao;
+       
+       @Override
+       public ImageDataStore getImageDataStore(long imageStoreId) {
+               ImageDataStoreVO idsv = imageStoreDao.findById(imageStoreId);
+               ImageDataStoreDriver driver = new ImageDataStoreDriverImpl();
+               ImageDataStore ids = new ImageDataStoreImpl(idsv, driver, 
false, null);
+               return ids;
+       }
+
+       @Override
+       public String getName() {
+               return providerName;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProvider.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProvider.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProvider.java
index 42933f4..495c652 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProvider.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProvider.java
@@ -22,4 +22,5 @@ import 
org.apache.cloudstack.storage.image.store.ImageDataStore;
 
 public interface ImageDataStoreProvider {
        ImageDataStore getImageDataStore(long imageStoreId);
+       public String getName();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProviderManager.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProviderManager.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProviderManager.java
index 1f9c956..dd98a7a 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProviderManager.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProviderManager.java
@@ -18,6 +18,10 @@
  */
 package org.apache.cloudstack.storage.image.provider;
 
+import org.apache.cloudstack.storage.image.store.ImageDataStore;
+
 public interface ImageDataStoreProviderManager {
        public ImageDataStoreProvider getProvider(long providerId);
+       public ImageDataStore getDataStore(long dataStoreId);
+       public ImageDataStore getDataStoreFromTemplateId(long templateId);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProviderManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProviderManagerImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProviderManagerImpl.java
index 0325311..f720667 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProviderManagerImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/provider/ImageDataStoreProviderManagerImpl.java
@@ -18,20 +18,56 @@
  */
 package org.apache.cloudstack.storage.image.provider;
 
+import java.util.List;
+
 import javax.inject.Inject;
 
+import org.apache.cloudstack.storage.image.db.ImageDataDao;
+import org.apache.cloudstack.storage.image.db.ImageDataStoreDao;
 import org.apache.cloudstack.storage.image.db.ImageDataStoreProviderDao;
+import org.apache.cloudstack.storage.image.db.ImageDataStoreProviderVO;
+import org.apache.cloudstack.storage.image.db.ImageDataStoreVO;
+import org.apache.cloudstack.storage.image.db.ImageDataVO;
+import org.apache.cloudstack.storage.image.store.ImageDataStore;
+import org.springframework.stereotype.Component;
 
-
+@Component
 public class ImageDataStoreProviderManagerImpl implements 
ImageDataStoreProviderManager {
-
        @Inject
        ImageDataStoreProviderDao providerDao;
+       @Inject
+       ImageDataStoreDao dataStoreDao;
+       @Inject
+       ImageDataDao imageDataDao;
+       @Inject
+       List<ImageDataStoreProvider> providers;
        @Override
        public ImageDataStoreProvider getProvider(long providerId) {
                
                return null;
        }
+       
+       protected ImageDataStoreProvider getProvider(String name) {
+               for (ImageDataStoreProvider provider : providers) {
+                       if (provider.getName().equalsIgnoreCase(name)) {
+                               return provider;
+                       }
+               }
+               return null;
+       }
+       
+       @Override
+       public ImageDataStore getDataStore(long dataStoreId) {
+               ImageDataStoreVO idsv = dataStoreDao.findById(dataStoreId);
+               long providerId = idsv.getProvider();
+               ImageDataStoreProviderVO idspv = 
providerDao.findById(providerId);
+               ImageDataStoreProvider provider = getProvider(idspv.getName());
+               return provider.getImageDataStore(dataStoreId);
+       }
 
-
+       @Override
+       public ImageDataStore getDataStoreFromTemplateId(long templateId) {
+               ImageDataVO iddv = imageDataDao.findById(templateId);
+               return getDataStore(iddv.getId());
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17c82b72/engine/storage/src/org/apache/cloudstack/storage/image/store/ImageDataStoreImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/store/ImageDataStoreImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/store/ImageDataStoreImpl.java
index 925e152..8ab4f82 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/store/ImageDataStoreImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/store/ImageDataStoreImpl.java
@@ -22,6 +22,8 @@ import javax.inject.Inject;
 
 import org.apache.cloudstack.storage.image.Template;
 import org.apache.cloudstack.storage.image.db.ImageDataDao;
+import org.apache.cloudstack.storage.image.db.ImageDataStoreDao;
+import org.apache.cloudstack.storage.image.db.ImageDataStoreVO;
 import org.apache.cloudstack.storage.image.db.ImageDataVO;
 import org.apache.cloudstack.storage.image.downloader.ImageDownloader;
 import org.apache.cloudstack.storage.image.driver.ImageDataStoreDriver;
@@ -31,13 +33,15 @@ public class ImageDataStoreImpl implements ImageDataStore {
        ImageDataDao imageDao;
        ImageDataStoreDriver driver;
        ImageDownloader downloader;
+       ImageDataStoreVO imageDataStoreVO;
        boolean needDownloadToCacheStorage = false;
        
        
-       public ImageDataStoreImpl(ImageDataStoreDriver driver, boolean 
needDownloadToCacheStorage, ImageDownloader downloader) {
+       public ImageDataStoreImpl(ImageDataStoreVO dataStoreVO, 
ImageDataStoreDriver driver, boolean needDownloadToCacheStorage, 
ImageDownloader downloader) {
                this.driver = driver;
                this.needDownloadToCacheStorage = needDownloadToCacheStorage;
                this.downloader = downloader;
+               this.imageDataStoreVO = dataStoreVO;
        }
        
        @Override
@@ -45,6 +49,7 @@ public class ImageDataStoreImpl implements ImageDataStore {
                ImageDataVO idv = imageDao.findById(templateId);
                Template template = new Template(this, idv);
                if (driver.registerTemplate(template)) {
+                       template.setImageDataStoreId(imageDataStoreVO.getId());
                        return template;
                } else {
                        return null;
@@ -53,8 +58,8 @@ public class ImageDataStoreImpl implements ImageDataStore {
 
        @Override
        public String grantAccess(long templateId, long endPointId) {
-               // TODO Auto-generated method stub
-               return null;
+               ImageDataVO idv = imageDao.findById(templateId);
+               return idv.getUrl();
        }
 
        @Override

Reply via email to