http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f41c800d/server/src/com/cloud/storage/VolumeManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f41c800d/server/src/com/cloud/storage/VolumeManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f41c800d/server/src/com/cloud/storage/download/DownloadMonitorImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/storage/download/DownloadMonitorImpl.java
index f5ce55f,f72a563..2b1aa4e
--- a/server/src/com/cloud/storage/download/DownloadMonitorImpl.java
+++ b/server/src/com/cloud/storage/download/DownloadMonitorImpl.java
@@@ -159,40 -266,128 +159,39 @@@ public class DownloadMonitorImpl extend
          }
  
          Long maxTemplateSizeInBytes = getMaxTemplateSizeInBytes();
 -        if (srcTmpltHost.getSize() > maxTemplateSizeInBytes){
 -              throw new CloudRuntimeException("Cant copy the template as the 
template's size " +srcTmpltHost.getSize()+
 -                              " is greater than max.template.iso.size " + 
maxTemplateSizeInBytes);
 -        }
 -        
 -              if(destTmpltHost != null) {
 -                  start();
 -            String sourceChecksum = 
this.templateMgr.getChecksum(srcTmpltHost.getHostId(), 
srcTmpltHost.getInstallPath());
 -                      DownloadCommand dcmd =  
 -              new DownloadCommand(destServer.getStorageUrl(), url, template, 
TemplateConstants.DEFAULT_HTTP_AUTH_USER, _copyAuthPasswd, 
maxTemplateSizeInBytes); 
 -                      if (downloadJobExists) {
 -                              dcmd = new DownloadProgressCommand(dcmd, 
destTmpltHost.getJobId(), RequestType.GET_OR_RESTART);
 -                      }
 +        if (vmTemplateStore != null) {
 +            start();
 +            VirtualMachineTemplate tmpl = 
this._templateDao.findById(template.getId());
 +            DownloadCommand dcmd = new 
DownloadCommand((TemplateObjectTO)(template.getTO()), maxTemplateSizeInBytes);
              dcmd.setProxy(getHttpProxy());
 -                      dcmd.setChecksum(sourceChecksum); // We need to set the 
checksum as the source template might be a compressed url and have cksum for 
compressed image. Bug #10775
 -            HostVO ssAhost = _ssvmMgr.pickSsvmHost(destServer);
 -            if( ssAhost == null ) {
 -                 s_logger.warn("There is no secondary storage VM for 
secondary storage host " + destServer.getName());
 -                 return false;
 -            }
 -            DownloadListener dl = new DownloadListener(ssAhost, destServer, 
template, _timer, _vmTemplateHostDao, destTmpltHost.getId(), this, dcmd, 
_templateDao, _resourceLimitMgr, _alertMgr, _accountMgr);
              if (downloadJobExists) {
 -                dl.setCurrState(destTmpltHost.getDownloadState());
 +                dcmd = new DownloadProgressCommand(dcmd, 
vmTemplateStore.getJobId(), RequestType.GET_OR_RESTART);
              }
 -                      DownloadListener old = null;
 -                      synchronized (_listenerMap) {
 -                          old = _listenerMap.put(destTmpltHost, dl);
 -                      }
 -                      if( old != null ) {
 -                          old.abandon();
 -                      }
 -                      
 -            try {
 -                  send(ssAhost.getId(), dcmd, dl);
 -                  return true;
 -            } catch (AgentUnavailableException e) {
 -                              s_logger.warn("Unable to start /resume COPY of 
template " + template.getUniqueName() + " to " + destServer.getName(), e);
 -                              dl.setDisconnected();
 -                              
dl.scheduleStatusCheck(RequestType.GET_OR_RESTART);
 -                  e.printStackTrace();
 +            if (vmTemplateStore.isCopy()) {
 +                dcmd.setCreds(TemplateConstants.DEFAULT_HTTP_AUTH_USER, 
_copyAuthPasswd);
 +            }
 +            EndPoint ep = _epSelector.select(template);
 +            if (ep == null) {
 +                s_logger.warn("There is no secondary storage VM for 
downloading template to image store " + store.getName());
 +                return;
 +            }
 +            DownloadListener dl = new DownloadListener(ep, store, template, 
_timer, this, dcmd,
 +                     callback);
 +            ComponentContext.inject(dl);  // initialize those auto-wired 
field in download listener.
 +            if (downloadJobExists) {
 +                // due to handling existing download job issues, we still keep
 +                // downloadState in template_store_ref to avoid big change in
 +                // DownloadListener to use
 +                // new ObjectInDataStore.State transition. TODO: fix this 
later
 +                // to be able to remove downloadState from template_store_ref.
 +                dl.setCurrState(vmTemplateStore.getDownloadState());
              }
 -              }
 -              
 -              return false;
 -      }
 -      
 -      private String generateCopyUrl(String ipAddress, String dir, String 
path){
 -              String hostname = ipAddress;
 -              String scheme = "http";
 -              if (_sslCopy) {
 -            hostname = ipAddress.replace(".", "-");
 -            scheme = "https";
 -            
 -            // Code for putting in custom certificates.
 -            if(_ssvmUrlDomain != null && _ssvmUrlDomain.length() > 0){
 -                hostname = hostname + "." + _ssvmUrlDomain;
 -            }else{
 -                hostname = hostname + ".realhostip.com";
 -            } 
 -              }
 -              return scheme + "://" + hostname + "/copy/SecStorage/" + dir + 
"/" + path; 
 -      }
 -      
 -      private String generateCopyUrl(HostVO sourceServer, VMTemplateHostVO 
srcTmpltHost) {
 -              List<SecondaryStorageVmVO> ssVms = 
_secStorageVmDao.getSecStorageVmListInStates(SecondaryStorageVm.Role.templateProcessor,
 sourceServer.getDataCenterId(), State.Running);
 -              if (ssVms.size() > 0) {
 -                      SecondaryStorageVmVO ssVm = ssVms.get(0);
 -                      if (ssVm.getPublicIpAddress() == null) {
 -                              s_logger.warn("A running secondary storage vm 
has a null public ip?");
 -                              return null;
 -                      }
 -                      return generateCopyUrl(ssVm.getPublicIpAddress(), 
sourceServer.getParent(), srcTmpltHost.getInstallPath());
 -              }
 -              
 -              VMTemplateVO tmplt = 
_templateDao.findById(srcTmpltHost.getTemplateId());
 -              HypervisorType hyperType = tmplt.getHypervisorType();
 -              /*No secondary storage vm yet*/
 -              if (hyperType != null && hyperType == HypervisorType.KVM) {
 -                      return "file://" + sourceServer.getParent() + "/" + 
srcTmpltHost.getInstallPath();
 -              }
 -              return null;
 -      }
 -
 -      private void downloadTemplateToStorage(VMTemplateVO template, HostVO 
sserver) {
 -              boolean downloadJobExists = false;
 -        VMTemplateHostVO vmTemplateHost = null;
  
- 
 -        vmTemplateHost = 
_vmTemplateHostDao.findByHostTemplate(sserver.getId(), template.getId());
 -        if (vmTemplateHost == null) {
 -            vmTemplateHost = new VMTemplateHostVO(sserver.getId(), 
template.getId(), new Date(), 0, 
VMTemplateStorageResourceAssoc.Status.NOT_DOWNLOADED, null, null, "jobid0000", 
null, template.getUrl());
 -            _vmTemplateHostDao.persist(vmTemplateHost);
 -        } else if ((vmTemplateHost.getJobId() != null) && 
(vmTemplateHost.getJobId().length() > 2)) {
 -            downloadJobExists = true;
 -        }
 -                
 -        Long maxTemplateSizeInBytes = getMaxTemplateSizeInBytes();
 -        String secUrl = sserver.getStorageUrl();
 -              if(vmTemplateHost != null) {
 -                  start();
 -                      DownloadCommand dcmd =
 -             new DownloadCommand(secUrl, template, maxTemplateSizeInBytes);
 -              if (downloadJobExists) {
 -                  dcmd = new DownloadProgressCommand(dcmd, 
vmTemplateHost.getJobId(), RequestType.GET_OR_RESTART);
 -              }
 -            dcmd.setProxy(getHttpProxy());
 -                      if (vmTemplateHost.isCopy()) {
 -                              
dcmd.setCreds(TemplateConstants.DEFAULT_HTTP_AUTH_USER, _copyAuthPasswd);
 -                      }
 -                      HostVO ssAhost = _ssvmMgr.pickSsvmHost(sserver);
 -                      if( ssAhost == null ) {
 -                   s_logger.warn("There is no secondary storage VM for 
secondary storage host " + sserver.getName());
 -                   return;
 -                      }
 -                      DownloadListener dl = new DownloadListener(ssAhost, 
sserver, template, _timer, _vmTemplateHostDao, vmTemplateHost.getId(), this, 
dcmd, _templateDao, _resourceLimitMgr, _alertMgr, _accountMgr);
 -                      if (downloadJobExists) {
 -                              
dl.setCurrState(vmTemplateHost.getDownloadState());
 -                      }
              DownloadListener old = null;
 -            synchronized (_listenerMap) {
 -                old = _listenerMap.put(vmTemplateHost, dl);
 +            synchronized (_listenerTemplateMap) {
 +                old = _listenerTemplateMap.put(vmTemplateStore, dl);
              }
 -            if( old != null ) {
 +            if (old != null) {
                  old.abandon();
              }
  

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f41c800d/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
index a1a4c90,02e3428..7e1e3d4
--- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
@@@ -537,7 -574,8 +537,7 @@@ public class SnapshotManagerImpl extend
          String intervalTypeStr = cmd.getIntervalType();
          String zoneType = cmd.getZoneType();
          Map<String, String> tags = cmd.getTags();
- 
+         Long zoneId = cmd.getZoneId();
 -        
          Account caller = UserContext.current().getCaller();
          List<Long> permittedAccounts = new ArrayList<Long>();
  
@@@ -604,9 -641,13 +605,13 @@@
          }
  
          if(zoneType != null) {
 -            sc.setJoinParameters("zoneSb", "zoneNetworkType", zoneType);      
    
 +            sc.setJoinParameters("zoneSb", "zoneNetworkType", zoneType);
          }
  
+         if (zoneId != null) {
+             sc.setParameters("dataCenterId", zoneId);
+         }
+         
          if (name != null) {
              sc.setParameters("name", "%" + name + "%");
          }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f41c800d/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f41c800d/server/src/com/cloud/storage/upload/UploadMonitorImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/storage/upload/UploadMonitorImpl.java
index 7d75599,31f3e74..d46db0c
--- a/server/src/com/cloud/storage/upload/UploadMonitorImpl.java
+++ b/server/src/com/cloud/storage/upload/UploadMonitorImpl.java
@@@ -330,26 -330,32 +331,34 @@@ public class UploadMonitorImpl extends 
                String scheme = "http";
                if (_sslCopy) {
                    hostname = ipAddress.replace(".", "-");
-                   hostname = hostname + ".realhostip.com";
                    scheme = "https";
+                   
+                   // Code for putting in custom certificates.
+                   if(_ssvmUrlDomain != null && _ssvmUrlDomain.length() > 0){
+                       hostname = hostname + "." + _ssvmUrlDomain;
+                   }else{
+                       hostname = hostname + ".realhostip.com";
+                   }               
                }
 -              return scheme + "://" + hostname + "/userdata/" + uuid; 
 +              return scheme + "://" + hostname + "/userdata/" + uuid;
            }
 -      
  
  
 -      public void send(Long hostId, Command cmd, Listener listener) throws 
AgentUnavailableException {
 -              _agentMgr.send(hostId, new Commands(cmd), listener);
 -      }
 +
  
        @Override
        public boolean configure(String name, Map<String, Object> params)
                        throws ConfigurationException {
          final Map<String, String> configs = 
_configDao.getConfiguration("ManagementServer", params);
          _sslCopy = 
Boolean.parseBoolean(configs.get("secstorage.encrypt.copy"));
 -        
 +
 +        String cert = configs.get("secstorage.secure.copy.cert");
 +        if ("realhostip.com".equalsIgnoreCase(cert)) {
 +              s_logger.warn("Only realhostip.com ssl cert is supported, 
ignoring self-signed and other certs");
 +        }
 +
+         _ssvmUrlDomain = configs.get("secstorage.ssl.cert.domain");      
+         
          _agentMgr.registerForHostEvents(new UploadListener(this), true, 
false, false);
          String cleanupInterval = configs.get("extract.url.cleanup.interval");
          _cleanupInterval = NumbersUtil.parseInt(cleanupInterval, 7200);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f41c800d/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f41c800d/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f41c800d/ui/scripts/system.js
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f41c800d/ui/scripts/zoneWizard.js
----------------------------------------------------------------------

Reply via email to