Ejemplo n.º 1
0
  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);
    }
  }
Ejemplo n.º 2
0
  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;
  }