diff --git a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java index 097b85477da..97ac7c9037d 100644 --- a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java +++ b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java @@ -1052,6 +1052,10 @@ public class TemplateServiceImpl implements TemplateService { DataObject templateOnStore = destStore.create(tmplForCopy); templateOnStore.processEvent(Event.CreateOnlyRequested); + if (templateOnStore instanceof TemplateObject) { + ((TemplateObject)templateOnStore).getImage().setChecksum(null); + } // else we don't know what to do. + if (s_logger.isDebugEnabled()) { s_logger.debug("Invoke datastore driver createAsync to create template on destination store"); } diff --git a/server/src/main/java/com/cloud/storage/download/DownloadMonitorImpl.java b/server/src/main/java/com/cloud/storage/download/DownloadMonitorImpl.java index 68be52d842f..1954cdea687 100644 --- a/server/src/main/java/com/cloud/storage/download/DownloadMonitorImpl.java +++ b/server/src/main/java/com/cloud/storage/download/DownloadMonitorImpl.java @@ -53,29 +53,21 @@ import com.cloud.configuration.Config; import com.cloud.storage.RegisterVolumePayload; import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; -import com.cloud.storage.Volume; -import com.cloud.storage.dao.VMTemplateDao; -import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.template.TemplateConstants; import com.cloud.storage.upload.UploadListener; -import com.cloud.template.VirtualMachineTemplate; import com.cloud.utils.component.ComponentContext; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.exception.CloudRuntimeException; @Component public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor { - static final Logger s_logger = Logger.getLogger(DownloadMonitorImpl.class); + static final Logger LOGGER = Logger.getLogger(DownloadMonitorImpl.class); @Inject private TemplateDataStoreDao _vmTemplateStoreDao; @Inject - private VolumeDao _volumeDao; - @Inject private VolumeDataStoreDao _volumeStoreDao; @Inject - private final VMTemplateDao _templateDao = null; - @Inject private AgentManager _agentMgr; @Inject private ConfigurationDao _configDao; @@ -94,7 +86,7 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor String cert = configs.get("secstorage.ssl.cert.domain"); if (!"realhostip.com".equalsIgnoreCase(cert)) { - s_logger.warn("Only realhostip.com ssl cert is supported, ignoring self-signed and other certs"); + LOGGER.warn("Only realhostip.com ssl cert is supported, ignoring self-signed and other certs"); } _copyAuthPasswd = configs.get("secstorage.copy.password"); @@ -125,7 +117,7 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor private void initiateTemplateDownload(DataObject template, AsyncCompletionCallback callback) { boolean downloadJobExists = false; - TemplateDataStoreVO vmTemplateStore = null; + TemplateDataStoreVO vmTemplateStore; DataStore store = template.getDataStore(); vmTemplateStore = _vmTemplateStoreDao.findByStoreTemplate(store.getId(), template.getId()); @@ -141,7 +133,6 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor Long maxTemplateSizeInBytes = getMaxTemplateSizeInBytes(); if (vmTemplateStore != null) { start(); - VirtualMachineTemplate tmpl = _templateDao.findById(template.getId()); DownloadCommand dcmd = new DownloadCommand((TemplateObjectTO)(template.getTO()), maxTemplateSizeInBytes); dcmd.setProxy(getHttpProxy()); if (downloadJobExists) { @@ -153,7 +144,7 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor EndPoint ep = _epSelector.select(template); if (ep == null) { String errMsg = "There is no secondary storage VM for downloading template to image store " + store.getName(); - s_logger.warn(errMsg); + LOGGER.warn(errMsg); throw new CloudRuntimeException(errMsg); } DownloadListener dl = new DownloadListener(ep, store, template, _timer, this, dcmd, callback); @@ -164,14 +155,14 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor // DownloadListener to use // new ObjectInDataStore.State transition. TODO: fix this later // to be able to remove downloadState from template_store_ref. - s_logger.info("found existing download job"); + LOGGER.info("found existing download job"); dl.setCurrState(vmTemplateStore.getDownloadState()); } try { ep.sendMessageAsync(dcmd, new UploadListener.Callback(ep.getId(), dl)); } catch (Exception e) { - s_logger.warn("Unable to start /resume download of template " + template.getId() + " to " + store.getName(), e); + LOGGER.warn("Unable to start /resume download of template " + template.getId() + " to " + store.getName(), e); dl.setDisconnected(); dl.scheduleStatusCheck(RequestType.GET_OR_RESTART); } @@ -187,12 +178,12 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor if (template.getUri() != null) { initiateTemplateDownload(template, callback); } else { - s_logger.info("Template url is null, cannot download"); + LOGGER.info("Template url is null, cannot download"); DownloadAnswer ans = new DownloadAnswer("Template url is null", Status.UNKNOWN); callback.complete(ans); } } else { - s_logger.info("Template download is already in progress or already downloaded"); + LOGGER.info("Template download is already in progress or already downloaded"); DownloadAnswer ans = new DownloadAnswer("Template download is already in progress or already downloaded", Status.UNKNOWN); callback.complete(ans); @@ -203,7 +194,7 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor @Override public void downloadVolumeToStorage(DataObject volume, AsyncCompletionCallback callback) { boolean downloadJobExists = false; - VolumeDataStoreVO volumeHost = null; + VolumeDataStoreVO volumeHost; DataStore store = volume.getDataStore(); VolumeInfo volInfo = (VolumeInfo)volume; RegisterVolumePayload payload = (RegisterVolumePayload)volInfo.getpayload(); @@ -214,7 +205,7 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor volumeHost = _volumeStoreDao.findByStoreVolume(store.getId(), volume.getId()); if (volumeHost == null) { volumeHost = new VolumeDataStoreVO(store.getId(), volume.getId(), new Date(), 0, Status.NOT_DOWNLOADED, null, null, "jobid0000", null, url, checkSum); - _volumeStoreDao.persist(volumeHost); + volumeHost = _volumeStoreDao.persist(volumeHost); } else if ((volumeHost.getJobId() != null) && (volumeHost.getJobId().length() > 2)) { downloadJobExists = true; } else { @@ -225,35 +216,32 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor } Long maxVolumeSizeInBytes = getMaxVolumeSizeInBytes(); - if (volumeHost != null) { - start(); - Volume vol = _volumeDao.findById(volume.getId()); - DownloadCommand dcmd = new DownloadCommand((VolumeObjectTO)(volume.getTO()), maxVolumeSizeInBytes, checkSum, url, format); - dcmd.setProxy(getHttpProxy()); - if (downloadJobExists) { - dcmd = new DownloadProgressCommand(dcmd, volumeHost.getJobId(), RequestType.GET_OR_RESTART); - dcmd.setResourceType(ResourceType.VOLUME); - } + start(); + DownloadCommand dcmd = new DownloadCommand((VolumeObjectTO)(volume.getTO()), maxVolumeSizeInBytes, checkSum, url, format); + dcmd.setProxy(getHttpProxy()); + if (downloadJobExists) { + dcmd = new DownloadProgressCommand(dcmd, volumeHost.getJobId(), RequestType.GET_OR_RESTART); + dcmd.setResourceType(ResourceType.VOLUME); + } - EndPoint ep = _epSelector.select(volume); - if (ep == null) { - s_logger.warn("There is no secondary storage VM for image store " + store.getName()); - return; - } - DownloadListener dl = new DownloadListener(ep, store, volume, _timer, this, dcmd, callback); - ComponentContext.inject(dl); // auto-wired those injected fields in DownloadListener + EndPoint ep = _epSelector.select(volume); + if (ep == null) { + LOGGER.warn("There is no secondary storage VM for image store " + store.getName()); + return; + } + DownloadListener dl = new DownloadListener(ep, store, volume, _timer, this, dcmd, callback); + ComponentContext.inject(dl); // auto-wired those injected fields in DownloadListener - if (downloadJobExists) { - dl.setCurrState(volumeHost.getDownloadState()); - } + if (downloadJobExists) { + dl.setCurrState(volumeHost.getDownloadState()); + } - try { - ep.sendMessageAsync(dcmd, new UploadListener.Callback(ep.getId(), dl)); - } catch (Exception e) { - s_logger.warn("Unable to start /resume download of volume " + volume.getId() + " to " + store.getName(), e); - dl.setDisconnected(); - dl.scheduleStatusCheck(RequestType.GET_OR_RESTART); - } + try { + ep.sendMessageAsync(dcmd, new UploadListener.Callback(ep.getId(), dl)); + } catch (Exception e) { + LOGGER.warn("Unable to start /resume download of volume " + volume.getId() + " to " + store.getName(), e); + dl.setDisconnected(); + dl.scheduleStatusCheck(RequestType.GET_OR_RESTART); } } @@ -279,8 +267,7 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor } try { URI uri = new URI(_proxy); - Proxy prx = new Proxy(uri); - return prx; + return new Proxy(uri); } catch (URISyntaxException e) { return null; } diff --git a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java index 646d2c3cd55..93905fc0f3f 100755 --- a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java @@ -927,8 +927,6 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, } } } - - } if ((destZoneIds != null) && (destZoneIds.size() > failedZones.size())){ diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java index bd5c59131b6..f6de4c3d0e8 100644 --- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java +++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java @@ -231,7 +231,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager } } - public static final Logger s_logger = Logger.getLogger(DownloadManagerImpl.class); + public static final Logger LOGGER = Logger.getLogger(DownloadManagerImpl.class); private String _templateDir; private String _volumeDir; private String createTmpltScr; @@ -264,12 +264,12 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager public void setDownloadStatus(String jobId, Status status) { DownloadJob dj = jobs.get(jobId); if (dj == null) { - s_logger.warn("setDownloadStatus for jobId: " + jobId + ", status=" + status + " no job found"); + LOGGER.warn("setDownloadStatus for jobId: " + jobId + ", status=" + status + " no job found"); return; } TemplateDownloader td = dj.getTemplateDownloader(); - s_logger.info("Download Completion for jobId: " + jobId + ", status=" + status); - s_logger.info("local: " + td.getDownloadLocalPath() + ", bytes=" + td.getDownloadedBytes() + ", error=" + td.getDownloadError() + ", pct=" + + LOGGER.info("Download Completion for jobId: " + jobId + ", status=" + status); + LOGGER.info("local: " + td.getDownloadLocalPath() + ", bytes=" + td.getDownloadedBytes() + ", error=" + td.getDownloadError() + ", pct=" + td.getDownloadPercent()); switch (status) { @@ -282,7 +282,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager case UNKNOWN: return; case IN_PROGRESS: - s_logger.info("Resuming jobId: " + jobId + ", status=" + status); + LOGGER.info("Resuming jobId: " + jobId + ", status=" + status); td.setResume(true); threadPool.execute(td); break; @@ -297,7 +297,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager td.setDownloadError("Download success, starting install "); String result = postRemoteDownload(jobId); if (result != null) { - s_logger.error("Failed post download install: " + result); + LOGGER.error("Failed post download install: " + result); td.setStatus(Status.UNRECOVERABLE_ERROR); td.setDownloadError("Failed post download install: " + result); ((S3TemplateDownloader) td).cleanupAfterError(); @@ -312,7 +312,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager td.setDownloadError("Download success, starting install "); String result = postLocalDownload(jobId); if (result != null) { - s_logger.error("Failed post download script: " + result); + LOGGER.error("Failed post download script: " + result); td.setStatus(Status.UNRECOVERABLE_ERROR); td.setDownloadError("Failed post download script: " + result); } else { @@ -371,6 +371,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager * Post local download activity (install and cleanup). Executed in context of * downloader thread * + * @return an error message describing why download failed or {code}null{code} on success * @throws IOException */ private String postLocalDownload(String jobId) { @@ -384,29 +385,58 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager ResourceType resourceType = dnld.getResourceType(); File originalTemplate = new File(td.getDownloadLocalPath()); - ChecksumValue oldValue = new ChecksumValue(dnld.getChecksum()); - ChecksumValue newValue = null; + if(StringUtils.isBlank(dnld.getChecksum())) { + if (LOGGER.isInfoEnabled()) { + LOGGER.info(String.format("No checksum available for '%s'", originalTemplate.getName())); + } + } + // check or create checksum + String checksumErrorMessage = checkOrCreateTheChecksum(dnld, originalTemplate); + if (checksumErrorMessage != null) { + return checksumErrorMessage; + } + + String result; + String extension = dnld.getFormat().getFileExtension(); + String templateName = makeTemplatename(jobId, extension); + String templateFilename = templateName + "." + extension; + + result = executeCreateScript(dnld, td, resourcePath, finalResourcePath, resourceType, templateFilename); + if (result != null) { + return result; + } + + // Set permissions for the downloaded template + File downloadedTemplate = new File(resourcePath + "/" + templateFilename); + + _storage.setWorldReadableAndWriteable(downloadedTemplate); + setPermissionsForTheDownloadedTemplate(dnld, resourcePath, resourceType); + + TemplateLocation loc = new TemplateLocation(_storage, resourcePath); try { - newValue = computeCheckSum(oldValue.getAlgorithm(), originalTemplate); - } catch (NoSuchAlgorithmException e) { - return "checksum algorithm not recognised: " + oldValue.getAlgorithm(); - } - if(StringUtils.isNotBlank(dnld.getChecksum()) && ! oldValue.equals(newValue)) { - return "checksum \"" + newValue +"\" didn't match the given value, \"" + oldValue + "\""; - } - String checksum = newValue.getChecksum(); - if (checksum == null) { - s_logger.warn("Something wrong happened when try to calculate the checksum of downloaded template!"); + loc.create(dnld.getId(), true, dnld.getTmpltName()); + } catch (IOException e) { + LOGGER.warn("Something is wrong with template location " + resourcePath, e); + loc.purge(); + return "Unable to download due to " + e.getMessage(); } - dnld.setCheckSum(checksum); + result = postProcessAfterDownloadComplete(dnld, resourcePath, templateName, loc); + if (result != null) { + return result; + } + return null; + } + + private String executeCreateScript(DownloadJob dnld, TemplateDownloader td, String resourcePath, String finalResourcePath, ResourceType resourceType, String templateFilename) { + String result; int imgSizeGigs = (int)Math.ceil(_storage.getSize(td.getDownloadLocalPath()) * 1.0d / (1024 * 1024 * 1024)); imgSizeGigs++; // add one just in case long timeout = (long)imgSizeGigs * installTimeoutPerGig; Script scr = null; String script = resourceType == ResourceType.TEMPLATE ? createTmpltScr : createVolScr; - scr = new Script(script, timeout, s_logger); + scr = new Script(script, timeout, LOGGER); scr.add("-s", Integer.toString(imgSizeGigs)); scr.add("-S", Long.toString(td.getMaxTemplateSizeInBytes())); if (dnld.getDescription() != null && dnld.getDescription().length() > 1) { @@ -416,35 +446,30 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager scr.add("-h"); } - // add options common to ISO and template - String extension = dnld.getFormat().getFileExtension(); - String templateName = ""; - if (extension.equals("iso")) { - templateName = jobs.get(jobId).getTmpltName().trim().replace(" ", "_"); - } else { - templateName = java.util.UUID.nameUUIDFromBytes((jobs.get(jobId).getTmpltName() + System.currentTimeMillis()).getBytes(StringUtils.getPreferredCharset())).toString(); - } - // run script to mv the temporary template file to the final template // file - String templateFilename = templateName + "." + extension; dnld.setTmpltPath(finalResourcePath + "/" + templateFilename); scr.add("-n", templateFilename); scr.add("-t", resourcePath); scr.add("-f", td.getDownloadLocalPath()); // this is the temporary template file downloaded scr.add("-u"); // cleanup - String result; result = scr.execute(); + return result; + } - if (result != null) { - return result; + private String makeTemplatename(String jobId, String extension) { + // add options common to ISO and template + String templateName = ""; + if (extension.equals("iso")) { + templateName = jobs.get(jobId).getTmpltName().trim().replace(" ", "_"); + } else { + templateName = UUID.nameUUIDFromBytes((jobs.get(jobId).getTmpltName() + System.currentTimeMillis()).getBytes(StringUtils.getPreferredCharset())).toString(); } + return templateName; + } - // Set permissions for the downloaded template - File downloadedTemplate = new File(resourcePath + "/" + templateFilename); - _storage.setWorldReadableAndWriteable(downloadedTemplate); - + private void setPermissionsForTheDownloadedTemplate(DownloadJob dnld, String resourcePath, ResourceType resourceType) { // Set permissions for template/volume.properties String propertiesFile = resourcePath; if (resourceType == ResourceType.TEMPLATE) { @@ -454,16 +479,31 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager } File templateProperties = new File(propertiesFile); _storage.setWorldReadableAndWriteable(templateProperties); + } - TemplateLocation loc = new TemplateLocation(_storage, resourcePath); + private String checkOrCreateTheChecksum(DownloadJob dnld, File targetFile) { + ChecksumValue oldValue = new ChecksumValue(dnld.getChecksum()); + ChecksumValue newValue = null; try { - loc.create(dnld.getId(), true, dnld.getTmpltName()); - } catch (IOException e) { - s_logger.warn("Something is wrong with template location " + resourcePath, e); - loc.purge(); - return "Unable to download due to " + e.getMessage(); + newValue = computeCheckSum(oldValue.getAlgorithm(), targetFile); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug(String.format("computed checksum: %s", newValue)); + } + } catch (NoSuchAlgorithmException e) { + return "checksum algorithm not recognised: " + oldValue.getAlgorithm(); } + if (StringUtils.isNotBlank(dnld.getChecksum()) && !oldValue.equals(newValue)) { + return "checksum \"" + newValue + "\" didn't match the given value, \"" + oldValue + "\""; + } + String checksum = newValue.toString(); + if (checksum == null) { + LOGGER.warn("Something wrong happened when try to calculate the checksum of downloaded template!"); + } + dnld.setCheckSum(checksum); + return null; + } + private String postProcessAfterDownloadComplete(DownloadJob dnld, String resourcePath, String templateName, TemplateLocation loc) { Iterator en = _processors.values().iterator(); while (en.hasNext()) { Processor processor = en.next(); @@ -472,7 +512,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager try { info = processor.process(resourcePath, null, templateName, this._processTimeout); } catch (InternalErrorException e) { - s_logger.error("Template process exception ", e); + LOGGER.error("Template process exception ", e); return e.toString(); } if (info != null) { @@ -490,7 +530,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager } if (!loc.save()) { - s_logger.warn("Cleaning up because we're unable to save the formats"); + LOGGER.warn("Cleaning up because we're unable to save the formats"); loc.purge(); } @@ -549,7 +589,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager try { if (!_storage.mkdirs(tmpDir)) { - s_logger.warn("Unable to create " + tmpDir); + LOGGER.warn("Unable to create " + tmpDir); return "Unable to create " + tmpDir; } // TO DO - define constant for volume properties. @@ -558,12 +598,12 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager "volume.properties"); if (file.exists()) { if(! file.delete()) { - s_logger.warn("Deletion of file '" + file.getAbsolutePath() + "' failed."); + LOGGER.warn("Deletion of file '" + file.getAbsolutePath() + "' failed."); } } if (!file.createNewFile()) { - s_logger.warn("Unable to create new file: " + file.getAbsolutePath()); + LOGGER.warn("Unable to create new file: " + file.getAbsolutePath()); return "Unable to create new file: " + file.getAbsolutePath(); } @@ -605,7 +645,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager return jobId; } catch (IOException e) { - s_logger.warn("Unable to download to " + tmpDir, e); + LOGGER.warn("Unable to download to " + tmpDir, e); return null; } } @@ -808,24 +848,24 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager private List listVolumes(String rootdir) { List result = new ArrayList(); - Script script = new Script(listVolScr, s_logger); + Script script = new Script(listVolScr, LOGGER); script.add("-r", rootdir); ZfsPathParser zpp = new ZfsPathParser(rootdir); script.execute(zpp); result.addAll(zpp.getPaths()); - s_logger.info("found " + zpp.getPaths().size() + " volumes" + zpp.getPaths()); + LOGGER.info("found " + zpp.getPaths().size() + " volumes" + zpp.getPaths()); return result; } private List listTemplates(String rootdir) { List result = new ArrayList(); - Script script = new Script(listTmpltScr, s_logger); + Script script = new Script(listTmpltScr, LOGGER); script.add("-r", rootdir); ZfsPathParser zpp = new ZfsPathParser(rootdir); script.execute(zpp); result.addAll(zpp.getPaths()); - s_logger.info("found " + zpp.getPaths().size() + " templates" + zpp.getPaths()); + LOGGER.info("found " + zpp.getPaths().size() + " templates" + zpp.getPaths()); return result; } @@ -844,13 +884,13 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager TemplateLocation loc = new TemplateLocation(_storage, path); try { if (!loc.load()) { - s_logger.warn("Post download installation was not completed for " + path); + LOGGER.warn("Post download installation was not completed for " + path); // loc.purge(); _storage.cleanup(path, templateDir); continue; } } catch (IOException e) { - s_logger.warn("Unable to load template location " + path, e); + LOGGER.warn("Unable to load template location " + path, e); continue; } @@ -865,12 +905,12 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager loc.updateVirtualSize(vSize); loc.save(); } catch (Exception e) { - s_logger.error("Unable to get the virtual size of the template: " + tInfo.getInstallPath() + " due to " + e.getMessage()); + LOGGER.error("Unable to get the virtual size of the template: " + tInfo.getInstallPath() + " due to " + e.getMessage()); } } result.put(tInfo.getTemplateName(), tInfo); - s_logger.debug("Added template name: " + tInfo.getTemplateName() + ", path: " + tmplt); + LOGGER.debug("Added template name: " + tInfo.getTemplateName() + ", path: " + tmplt); } return result; } @@ -890,13 +930,13 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager TemplateLocation loc = new TemplateLocation(_storage, path); try { if (!loc.load()) { - s_logger.warn("Post download installation was not completed for " + path); + LOGGER.warn("Post download installation was not completed for " + path); // loc.purge(); _storage.cleanup(path, volumeDir); continue; } } catch (IOException e) { - s_logger.warn("Unable to load volume location " + path, e); + LOGGER.warn("Unable to load volume location " + path, e); continue; } @@ -911,12 +951,12 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager loc.updateVirtualSize(vSize); loc.save(); } catch (Exception e) { - s_logger.error("Unable to get the virtual size of the volume: " + vInfo.getInstallPath() + " due to " + e.getMessage()); + LOGGER.error("Unable to get the virtual size of the volume: " + vInfo.getInstallPath() + " due to " + e.getMessage()); } } result.put(vInfo.getId(), vInfo); - s_logger.debug("Added volume name: " + vInfo.getTemplateName() + ", path: " + vol); + LOGGER.debug("Added volume name: " + vInfo.getTemplateName() + ", path: " + vol); } return result; } @@ -980,7 +1020,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager String inSystemVM = (String)params.get("secondary.storage.vm"); if (inSystemVM != null && "true".equalsIgnoreCase(inSystemVM)) { - s_logger.info("DownloadManager: starting additional services since we are inside system vm"); + LOGGER.info("DownloadManager: starting additional services since we are inside system vm"); _nfsVersion = NfsSecondaryStorageResource.retrieveNfsVersionFromParams(params); startAdditionalServices(); blockOutgoingOnPrivate(); @@ -1001,25 +1041,25 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager if (listTmpltScr == null) { throw new ConfigurationException("Unable to find the listvmtmplt.sh"); } - s_logger.info("listvmtmplt.sh found in " + listTmpltScr); + LOGGER.info("listvmtmplt.sh found in " + listTmpltScr); createTmpltScr = Script.findScript(scriptsDir, "createtmplt.sh"); if (createTmpltScr == null) { throw new ConfigurationException("Unable to find createtmplt.sh"); } - s_logger.info("createtmplt.sh found in " + createTmpltScr); + LOGGER.info("createtmplt.sh found in " + createTmpltScr); listVolScr = Script.findScript(scriptsDir, "listvolume.sh"); if (listVolScr == null) { throw new ConfigurationException("Unable to find the listvolume.sh"); } - s_logger.info("listvolume.sh found in " + listVolScr); + LOGGER.info("listvolume.sh found in " + listVolScr); createVolScr = Script.findScript(scriptsDir, "createvolume.sh"); if (createVolScr == null) { throw new ConfigurationException("Unable to find createvolume.sh"); } - s_logger.info("createvolume.sh found in " + createVolScr); + LOGGER.info("createvolume.sh found in " + createVolScr); _processors = new HashMap(); @@ -1063,7 +1103,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager } private void blockOutgoingOnPrivate() { - Script command = new Script("/bin/bash", s_logger); + Script command = new Script("/bin/bash", LOGGER); String intf = "eth1"; command.add("-c"); command.add("iptables -A OUTPUT -o " + intf + " -p tcp -m state --state NEW -m tcp --dport " + "80" + " -j REJECT;" + "iptables -A OUTPUT -o " + intf + @@ -1071,7 +1111,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager String result = command.execute(); if (result != null) { - s_logger.warn("Error in blocking outgoing to port 80/443 err=" + result); + LOGGER.warn("Error in blocking outgoing to port 80/443 err=" + result); return; } } @@ -1092,37 +1132,37 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager } private void startAdditionalServices() { - Script command = new Script("/bin/systemctl", s_logger); + Script command = new Script("/bin/systemctl", LOGGER); command.add("stop"); command.add("apache2"); String result = command.execute(); if (result != null) { - s_logger.warn("Error in stopping httpd service err=" + result); + LOGGER.warn("Error in stopping httpd service err=" + result); } String port = Integer.toString(TemplateConstants.DEFAULT_TMPLT_COPY_PORT); String intf = TemplateConstants.DEFAULT_TMPLT_COPY_INTF; - command = new Script("/bin/bash", s_logger); + command = new Script("/bin/bash", LOGGER); command.add("-c"); command.add("iptables -I INPUT -i " + intf + " -p tcp -m state --state NEW -m tcp --dport " + port + " -j ACCEPT;" + "iptables -I INPUT -i " + intf + " -p tcp -m state --state NEW -m tcp --dport " + "443" + " -j ACCEPT;"); result = command.execute(); if (result != null) { - s_logger.warn("Error in opening up apache2 port err=" + result); + LOGGER.warn("Error in opening up apache2 port err=" + result); return; } - command = new Script("/bin/systemctl", s_logger); + command = new Script("/bin/systemctl", LOGGER); command.add("start"); command.add("apache2"); result = command.execute(); if (result != null) { - s_logger.warn("Error in starting apache2 service err=" + result); + LOGGER.warn("Error in starting apache2 service err=" + result); return; } - command = new Script("/bin/su", s_logger); + command = new Script("/bin/su", LOGGER); command.add("-s"); command.add("/bin/bash"); command.add("-c"); @@ -1130,7 +1170,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager command.add("www-data"); result = command.execute(); if (result != null) { - s_logger.warn("Error in creating directory =" + result); + LOGGER.warn("Error in creating directory =" + result); return; } } diff --git a/utils/src/main/java/org/apache/cloudstack/utils/security/ChecksumValue.java b/utils/src/main/java/org/apache/cloudstack/utils/security/ChecksumValue.java index e47bf393db2..e7a7be46bad 100644 --- a/utils/src/main/java/org/apache/cloudstack/utils/security/ChecksumValue.java +++ b/utils/src/main/java/org/apache/cloudstack/utils/security/ChecksumValue.java @@ -80,7 +80,8 @@ public class ChecksumValue { if (s == 0 && e > s+1) { // we have an algorithm name of at least 1 char return digest.substring(s+1,e); } // else if no algoritm + return "MD5"; } // or if no digest at all - return "MD5"; + return "SHA-512"; } }