private void checksumSync(long hostId) { SearchCriteria<VMTemplateHostVO> sc = ReadyTemplateStatesSearch.create(); sc.setParameters( "download_state", com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOADED); sc.setParameters("host_id", hostId); List<VMTemplateHostVO> templateHostRefList = _vmTemplateHostDao.search(sc, null); s_logger.debug( "Found " + templateHostRefList.size() + " templates with no checksum. Will ask for computation"); for (VMTemplateHostVO templateHostRef : templateHostRefList) { s_logger.debug("Getting checksum for template - " + templateHostRef.getTemplateId()); String checksum = this.templateMgr.getChecksum(hostId, templateHostRef.getInstallPath()); VMTemplateVO template = _templateDao.findById(templateHostRef.getTemplateId()); s_logger.debug("Setting checksum " + checksum + " for template - " + template.getName()); template.setChecksum(checksum); _templateDao.update(template.getId(), template); } }
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; }