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 2013/06/20 09:20:10 UTC
[37/50] [abbrv] merge to master
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
----------------------------------------------------------------------