Updated Branches:
  refs/heads/4.2-forward d0ffc9e33 -> 3dc8b8863

CLOUDSTACK-4600:Registered Cross-zone template does not populate
template_zone_ref for later added zones.

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

Branch: refs/heads/4.2-forward
Commit: 3dc8b8863a02772e92bb10376d3ee5e4382c0944
Parents: d0ffc9e
Author: Min Chen <[email protected]>
Authored: Tue Sep 3 16:31:40 2013 -0700
Committer: Min Chen <[email protected]>
Committed: Tue Sep 3 16:31:40 2013 -0700

----------------------------------------------------------------------
 .../subsystem/api/storage/TemplateService.java     |  2 ++
 .../storage/image/TemplateServiceImpl.java         | 17 +++++++++++++++++
 .../cloud/storage/download/DownloadListener.java   |  2 ++
 3 files changed, 21 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3dc8b886/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/TemplateService.java
----------------------------------------------------------------------
diff --git 
a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/TemplateService.java
 
b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/TemplateService.java
index 085fbbd..4950597 100644
--- 
a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/TemplateService.java
+++ 
b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/TemplateService.java
@@ -61,4 +61,6 @@ public interface TemplateService {
     void downloadBootstrapSysTemplate(DataStore store);
 
     void addSystemVMTemplatesToSecondary(DataStore store);
+    
+    void associateCrosszoneTemplatesToZone(long dcId);
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3dc8b886/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
 
b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
index a77270f..0113bc0 100644
--- 
a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
+++ 
b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
@@ -487,6 +487,23 @@ public class TemplateServiceImpl implements 
TemplateService {
         }
     }
 
+    // update template_zone_ref for cross-zone template for newly added zone
+    @Override
+    public void associateCrosszoneTemplatesToZone(long dcId){
+        VMTemplateZoneVO tmpltZone;
+
+        List<VMTemplateVO> allTemplates = _templateDao.listAll();
+        for (VMTemplateVO vt: allTemplates){
+            if (vt.isCrossZones()) {
+                tmpltZone = _vmTemplateZoneDao.findByZoneTemplate(dcId, 
vt.getId());
+                if (tmpltZone == null) {
+                    VMTemplateZoneVO vmTemplateZone = new 
VMTemplateZoneVO(dcId, vt.getId(), new Date());
+                    _vmTemplateZoneDao.persist(vmTemplateZone);
+                }
+            }
+        }
+    }
+    
     private Map<String, TemplateProp> listTemplate(DataStore ssStore) {
         ListTemplateCommand cmd = new ListTemplateCommand(ssStore.getTO());
         EndPoint ep = _epSelector.select(ssStore);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3dc8b886/server/src/com/cloud/storage/download/DownloadListener.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/download/DownloadListener.java 
b/server/src/com/cloud/storage/download/DownloadListener.java
index 3b6c0dd..e5efcb2 100755
--- a/server/src/com/cloud/storage/download/DownloadListener.java
+++ b/server/src/com/cloud/storage/download/DownloadListener.java
@@ -289,6 +289,8 @@ public class DownloadListener implements Listener {
                    return;
                }
                _imageSrv.handleSysTemplateDownload(hostHyper, 
agent.getDataCenterId());
+               // update template_zone_ref for cross-zone templates
+               
_imageSrv.associateCrosszoneTemplatesToZone(agent.getDataCenterId());
            }
            /* This can be removed
            else if ( cmd instanceof StartupStorageCommand) {

Reply via email to