Examples of VolumeHostVO


Examples of com.cloud.storage.VolumeHostVO

        return listIncludingRemovedBy(sc);
    }

    @Override
    public boolean updateState(State currentState, Event event, State nextState, DataObjectInStore vo, Object data) {
        VolumeHostVO volHost = (VolumeHostVO) vo;
        Long oldUpdated = volHost.getUpdatedCount();
        Date oldUpdatedTime = volHost.getUpdated();

        SearchCriteria<VolumeHostVO> sc = updateStateSearch.create();
        sc.setParameters("id", volHost.getId());
        sc.setParameters("state", currentState);
        sc.setParameters("updatedCount", volHost.getUpdatedCount());

        volHost.incrUpdatedCount();

        UpdateBuilder builder = getUpdateBuilder(vo);
        builder.set(vo, "state", nextState);
        builder.set(vo, "updated", new Date());

        int rows = update((VolumeHostVO) vo, sc);
        if (rows == 0 && s_logger.isDebugEnabled()) {
            VolumeHostVO dbVol = findByIdIncludingRemoved(volHost.getId());
            if (dbVol != null) {
                StringBuilder str = new StringBuilder("Unable to update ").append(vo.toString());
                str.append(": DB Data={id=").append(dbVol.getId()).append("; state=").append(dbVol.getState())
                        .append("; updatecount=").append(dbVol.getUpdatedCount()).append(";updatedTime=")
                        .append(dbVol.getUpdated());
                str.append(": New Data={id=").append(volHost.getId()).append("; state=").append(nextState)
                        .append("; event=").append(event).append("; updatecount=").append(volHost.getUpdatedCount())
                        .append("; updatedTime=").append(volHost.getUpdated());
                str.append(": stale Data={id=").append(volHost.getId()).append("; state=").append(currentState)
                        .append("; event=").append(event).append("; updatecount=").append(oldUpdated)
View Full Code Here

Examples of com.cloud.storage.VolumeHostVO

      return true;
  }
 
  private void downloadVolumeToStorage(VolumeVO volume, HostVO sserver, String url, String checkSum, ImageFormat format) {
    boolean downloadJobExists = false;
        VolumeHostVO volumeHost = null;

        volumeHost = _volumeHostDao.findByHostVolume(sserver.getId(), volume.getId());
        if (volumeHost == null) {
            volumeHost = new VolumeHostVO(sserver.getId(), volume.getId(), sserver.getDataCenterId(), new Date(), 0, VMTemplateStorageResourceAssoc.Status.NOT_DOWNLOADED, null, null,
                "jobid0000", null, url, checkSum, format);
            _volumeHostDao.persist(volumeHost);
        } else if ((volumeHost.getJobId() != null) && (volumeHost.getJobId().length() > 2)) {
            downloadJobExists = true;
        }
       

        Long maxVolumeSizeInBytes = getMaxVolumeSizeInBytes();
        String secUrl = sserver.getStorageUrl();
    if(volumeHost != null) {
        start();
      DownloadCommand dcmd = new DownloadCommand(secUrl, volume, maxVolumeSizeInBytes, checkSum, url, format);
      dcmd.setProxy(getHttpProxy());
          if (downloadJobExists) {
              dcmd = new DownloadProgressCommand(dcmd, volumeHost.getJobId(), RequestType.GET_OR_RESTART);
              dcmd.setResourceType(ResourceType.VOLUME);
          }
     
      HostVO ssvm = _ssvmMgr.pickSsvmHost(sserver);
      if( ssvm == null ) {
               s_logger.warn("There is no secondary storage VM for secondary storage host " + sserver.getName());
               return;
      }
      DownloadListener dl = new DownloadListener(ssvm, sserver, volume, _timer, _volumeHostDao, volumeHost.getId(),
          this, dcmd, _volumeDao, _storageMgr);
     
      if (downloadJobExists) {
        dl.setCurrState(volumeHost.getDownloadState());
       }
            DownloadListener old = null;
            synchronized (_listenerVolumeMap) {
                old = _listenerVolumeMap.put(volumeHost, dl);
            }
View Full Code Here

Examples of com.cloud.storage.VolumeHostVO

  }

  @DB
  public void handleDownloadEvent(HostVO host, VolumeVO volume, Status dnldStatus) {
    if ((dnldStatus == VMTemplateStorageResourceAssoc.Status.DOWNLOADED) || (dnldStatus==Status.ABANDONED)){
      VolumeHostVO volumeHost = new VolumeHostVO(host.getId(), volume.getId());
          synchronized (_listenerVolumeMap) {
            _listenerVolumeMap.remove(volumeHost);
          }
    }
   
    VolumeHostVO volumeHost = _volumeHostDao.findByHostVolume(host.getId(), volume.getId());
   
    Transaction txn = Transaction.currentTxn();
        txn.start();   

        if (dnldStatus == Status.DOWNLOADED) {
     
      //Create usage event
            long size = -1;
            if(volumeHost!=null){
                size = volumeHost.getPhysicalSize();
            }
            else{
                s_logger.warn("Failed to get size for volume" + volume.getName());
            }
            String eventType = EventTypes.EVENT_VOLUME_UPLOAD;           
View Full Code Here

Examples of com.cloud.storage.VolumeHostVO

      vo.setDownloadState(state);
      vo.setLastUpdated(new Date());
      vo.setErrorString(errorString);
      vmTemplateHostDao.update(getTemplateHostId(), vo);
    }else {
        VolumeHostVO vo = volumeHostDao.createForUpdate();
      vo.setDownloadState(state);
      vo.setLastUpdated(new Date());
      vo.setErrorString(errorString);
      volumeHostDao.update(getVolumeHostId(), vo);
    }
  }
View Full Code Here

Examples of com.cloud.storage.VolumeHostVO

    return templateHostId;
  }
 
  private Long getVolumeHostId() {
    if (volumeHostId == null){
      VolumeHostVO volHost = volumeHostDao.findByHostVolume(sserver.getId(), volume.getId());
      volumeHostId = volHost.getId();
    }
    return volumeHostId;
  }
View Full Code Here

Examples of com.cloud.storage.VolumeHostVO

        VMTemplateVO templateDaoBuilder = _vmTemplateDao.createForUpdate();
        templateDaoBuilder.setChecksum(answer.getCheckSum());
        _vmTemplateDao.update(template.getId(), templateDaoBuilder);
      }
    } else {
          VolumeHostVO updateBuilder = volumeHostDao.createForUpdate();
      updateBuilder.setDownloadPercent(answer.getDownloadPct());
      updateBuilder.setDownloadState(answer.getDownloadStatus());
      updateBuilder.setLastUpdated(new Date());
      updateBuilder.setErrorString(answer.getErrorString());
      updateBuilder.setJobId(answer.getJobId());
      updateBuilder.setLocalDownloadPath(answer.getDownloadPath());
      updateBuilder.setInstallPath(answer.getInstallPath());
      updateBuilder.setSize(answer.getTemplateSize());
      updateBuilder.setPhysicalSize(answer.getTemplatePhySicalSize());
     
      volumeHostDao.update(getVolumeHostId(), updateBuilder);
      /*if (answer.getCheckSum() != null) {
        VMTemplateVO templateDaoBuilder = _vmTemplateDao.createForUpdate();
        templateDaoBuilder.setChecksum(answer.getCheckSum());
View Full Code Here

Examples of com.cloud.storage.VolumeHostVO

      return true;
  }
 
  private void downloadVolumeToStorage(VolumeVO volume, HostVO sserver, String url, String checkSum, ImageFormat format) {
    boolean downloadJobExists = false;
        VolumeHostVO volumeHost = null;

        volumeHost = _volumeHostDao.findByHostVolume(sserver.getId(), volume.getId());
        if (volumeHost == null) {
            volumeHost = new VolumeHostVO(sserver.getId(), volume.getId(), sserver.getDataCenterId(), new Date(), 0, VMTemplateStorageResourceAssoc.Status.NOT_DOWNLOADED, null, null,
                "jobid0000", null, url, checkSum, format);
            _volumeHostDao.persist(volumeHost);
        } else if ((volumeHost.getJobId() != null) && (volumeHost.getJobId().length() > 2)) {
            downloadJobExists = true;
        }
       

        Long maxVolumeSizeInBytes = getMaxVolumeSizeInBytes();
        String secUrl = sserver.getStorageUrl();
    if(volumeHost != null) {
        start();
      DownloadCommand dcmd = new DownloadCommand(secUrl, volume, maxVolumeSizeInBytes, checkSum, url, format);
          if (downloadJobExists) {
              dcmd = new DownloadProgressCommand(dcmd, volumeHost.getJobId(), RequestType.GET_OR_RESTART);
              dcmd.setResourceType(ResourceType.VOLUME);
          }
      dcmd.setProxy(getHttpProxy());
      HostVO ssvm = _ssvmMgr.pickSsvmHost(sserver);
      if( ssvm == null ) {
               s_logger.warn("There is no secondary storage VM for secondary storage host " + sserver.getName());
               return;
      }
      DownloadListener dl = new DownloadListener(ssvm, sserver, volume, _timer, _volumeHostDao, volumeHost.getId(),
          this, dcmd, _volumeDao, _storageMgr);
     
      if (downloadJobExists) {
        dl.setCurrState(volumeHost.getDownloadState());
       }
            DownloadListener old = null;
            synchronized (_listenerVolumeMap) {
                old = _listenerVolumeMap.put(volumeHost, dl);
            }
View Full Code Here

Examples of com.cloud.storage.VolumeHostVO

  }

  @DB
  public void handleDownloadEvent(HostVO host, VolumeVO volume, Status dnldStatus) {
    if ((dnldStatus == VMTemplateStorageResourceAssoc.Status.DOWNLOADED) || (dnldStatus==Status.ABANDONED)){
      VolumeHostVO volumeHost = new VolumeHostVO(host.getId(), volume.getId());
          synchronized (_listenerVolumeMap) {
            _listenerVolumeMap.remove(volumeHost);
          }
    }
   
    VolumeHostVO volumeHost = _volumeHostDao.findByHostVolume(host.getId(), volume.getId());
   
    Transaction txn = Transaction.currentTxn();
        txn.start();   

        if (dnldStatus == Status.DOWNLOADED) {
     
      //Create usage event
            long size = -1;
            if(volumeHost!=null){
                size = volumeHost.getPhysicalSize();
            }
            else{
                s_logger.warn("Failed to get size for volume" + volume.getName());
            }
            String eventType = EventTypes.EVENT_VOLUME_UPLOAD;           
View Full Code Here

Examples of com.cloud.storage.VolumeHostVO

        // permission check
        _accountMgr.checkAccess(caller, null, true, volume, vm);

        // Check if volume is stored on secondary Storage.
        boolean isVolumeOnSec = false;
        VolumeHostVO  volHostVO = _volumeHostDao.findByVolumeId(volume.getId());
        if (volHostVO != null) {
            isVolumeOnSec = true;
            if (!(volHostVO.getDownloadState() == Status.DOWNLOADED)) {
                throw new InvalidParameterValueException(
                        "Volume is not uploaded yet. Please try this operation once the volume is uploaded");
            }
        }

        if (!(Volume.State.Allocated.equals(volume.getState())
                || Volume.State.Ready.equals(volume.getState()) || Volume.State.UploadOp
                .equals(volume.getState()))) {
            throw new InvalidParameterValueException(
                    "Volume state must be in Allocated, Ready or in Uploaded state");
        }

        VolumeVO rootVolumeOfVm = null;
        List<VolumeVO> rootVolumesOfVm = _volsDao.findByInstanceAndType(vmId,
                Volume.Type.ROOT);
        if (rootVolumesOfVm.size() != 1) {
            throw new CloudRuntimeException(
                    "The VM "
                            + vm.getHostName()
                            + " has more than one ROOT volume and is in an invalid state.");
        } else {
            rootVolumeOfVm = rootVolumesOfVm.get(0);
        }

        HypervisorType rootDiskHyperType = vm.getHypervisorType();

        HypervisorType dataDiskHyperType = _volsDao.getHypervisorType(volume
                .getId());
        if (dataDiskHyperType != HypervisorType.None
                && rootDiskHyperType != dataDiskHyperType) {
            throw new InvalidParameterValueException(
                    "Can't attach a volume created by: " + dataDiskHyperType
                    + " to a " + rootDiskHyperType + " vm");
        }

        // allocate deviceId
        List<VolumeVO> vols = _volsDao.findByInstance(vmId);
        if (deviceId != null) {
            if (deviceId.longValue() > 15 || deviceId.longValue() == 0
                    || deviceId.longValue() == 3) {
                throw new RuntimeException("deviceId should be 1,2,4-15");
            }
            for (VolumeVO vol : vols) {
                if (vol.getDeviceId().equals(deviceId)) {
                    throw new RuntimeException("deviceId " + deviceId
                            + " is used by VM " + vm.getHostName());
                }
            }
        } else {
            // allocate deviceId here
            List<String> devIds = new ArrayList<String>();
            for (int i = 1; i < 15; i++) {
                devIds.add(String.valueOf(i));
            }
            devIds.remove("3");
            for (VolumeVO vol : vols) {
                devIds.remove(vol.getDeviceId().toString().trim());
            }
            deviceId = Long.parseLong(devIds.iterator().next());
        }

        boolean createVolumeOnBackend = true;
        if (rootVolumeOfVm.getState() == Volume.State.Allocated) {
            createVolumeOnBackend = false;
            if (isVolumeOnSec) {
                throw new CloudRuntimeException(
                        "Cant attach uploaded volume to the vm which is not created. Please start it and then retry");
            }
        }

        // create volume on the backend only when vm's root volume is allocated
        if (createVolumeOnBackend) {
            if (volume.getState().equals(Volume.State.Allocated)
                    || isVolumeOnSec) {
                /* Need to create the volume */
                VMTemplateVO rootDiskTmplt = _templateDao.findById(vm
                        .getTemplateId());
                DataCenterVO dcVO = _dcDao.findById(vm
                        .getDataCenterId());
                HostPodVO pod = _podDao.findById(vm.getPodIdToDeployIn());
                StoragePoolVO rootDiskPool = _storagePoolDao
                        .findById(rootVolumeOfVm.getPoolId());
                ServiceOfferingVO svo = _serviceOfferingDao.findById(vm
                        .getServiceOfferingId());
                DiskOfferingVO diskVO = _diskOfferingDao.findById(volume
                        .getDiskOfferingId());
                Long clusterId = (rootDiskPool == null ? null : rootDiskPool
                        .getClusterId());

                if (!isVolumeOnSec) {
                    volume = _storageMgr.createVolume(volume, vm,
                            rootDiskTmplt, dcVO, pod, clusterId, svo, diskVO,
                            new ArrayList<StoragePoolVO>(), volume.getSize(),
                            rootDiskHyperType);
                } else {
                    try {
                        // Format of data disk should be the same as root disk
                        if (!volHostVO
                                .getFormat()
                                .getFileExtension()
                                .equals(_storageMgr
                                        .getSupportedImageFormatForCluster(rootDiskPool
                                                .getClusterId()))) {
                            throw new InvalidParameterValueException(
                                    "Failed to attach volume to VM since volumes format "
                                            + volHostVO.getFormat()
                                            .getFileExtension()
                                            + " is not compatible with the vm hypervisor type");
                        }

                        // Check that there is some shared storage.
View Full Code Here

Examples of com.cloud.storage.VolumeHostVO

      return true;
  }
 
  private void downloadVolumeToStorage(VolumeVO volume, HostVO sserver, String url, String checkSum, ImageFormat format) {
    boolean downloadJobExists = false;
        VolumeHostVO volumeHost = null;

        volumeHost = _volumeHostDao.findByHostVolume(sserver.getId(), volume.getId());
        if (volumeHost == null) {
            volumeHost = new VolumeHostVO(sserver.getId(), volume.getId(), sserver.getDataCenterId(), new Date(), 0, VMTemplateStorageResourceAssoc.Status.NOT_DOWNLOADED, null, null,
                "jobid0000", null, url, checkSum, format);
            _volumeHostDao.persist(volumeHost);
        } else if ((volumeHost.getJobId() != null) && (volumeHost.getJobId().length() > 2)) {
            downloadJobExists = true;
        }
       

        Long maxVolumeSizeInBytes = getMaxVolumeSizeInBytes();
        String secUrl = sserver.getStorageUrl();
    if(volumeHost != null) {
        start();
      DownloadCommand dcmd = new DownloadCommand(secUrl, volume, maxVolumeSizeInBytes, checkSum, url, format);
          if (downloadJobExists) {
              dcmd = new DownloadProgressCommand(dcmd, volumeHost.getJobId(), RequestType.GET_OR_RESTART);
              dcmd.setResourceType(ResourceType.VOLUME);
          }
            dcmd.setProxy(getHttpProxy());
      HostVO ssvm = _ssvmMgr.pickSsvmHost(sserver);
      if( ssvm == null ) {
               s_logger.warn("There is no secondary storage VM for secondary storage host " + sserver.getName());
               return;
      }
      DownloadListener dl = new DownloadListener(ssvm, sserver, volume, _timer, _volumeHostDao, volumeHost.getId(),
          this, dcmd, _volumeDao, _storageMgr);
     
      if (downloadJobExists) {
        dl.setCurrState(volumeHost.getDownloadState());
       }
            DownloadListener old = null;
            synchronized (_listenerVolumeMap) {
                old = _listenerVolumeMap.put(volumeHost, dl);
            }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.