com.cloud.storage.Volume类的使用及代码示例

x33g5p2x  于2022-02-01 转载在 其他  
字(12.1k)|赞(0)|评价(0)|浏览(118)

本文整理了Java中com.cloud.storage.Volume类的一些代码示例,展示了Volume类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Volume类的具体详情如下:
包路径:com.cloud.storage.Volume
类名称:Volume

Volume介绍

暂无

代码示例

代码示例来源:origin: apache/cloudstack

public VolumeVO(Volume that) {
  this(that.getName(),
    that.getDataCenterId(),
    that.getPodId(),
    that.getAccountId(),
    that.getDomainId(),
    that.getInstanceId(),
    that.getFolder(),
    that.getPath(),
    that.getProvisioningType(),
    that.getSize(),
    that.getMinIops(),
    that.getMaxIops(),
    that.get_iScsiName(),
    that.getVolumeType());
  recreatable = that.isRecreatable();
  size = that.getSize();
  minIops = that.getMinIops();
  maxIops = that.getMaxIops();
  _iScsiName = that.get_iScsiName();
  diskOfferingId = that.getDiskOfferingId();
  poolId = that.getPoolId();
  attached = that.getAttached();
  chainInfo = that.getChainInfo();
  templateId = that.getTemplateId();
  deviceId = that.getDeviceId();
  format = that.getFormat();
  provisioningType = that.getProvisioningType();
  uuid = UUID.randomUUID().toString();

代码示例来源:origin: apache/cloudstack

private void saveUsageEvent(Volume volume, Boolean displayVolume) {
  // Update only when the flag has changed  &&  only when volume in a non-destroyed state.
  if ((displayVolume != null && displayVolume != volume.isDisplayVolume()) && !isVolumeDestroyed(volume)) {
    if (displayVolume) {
      // flag turned 1 equivalent to freshly created volume
      UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), volume.getDiskOfferingId(),
          volume.getTemplateId(), volume.getSize(), Volume.class.getName(), volume.getUuid());
    } else {
      // flag turned 0 equivalent to deleting a volume
      UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), Volume.class.getName(),
          volume.getUuid());
    }
  }
}

代码示例来源:origin: apache/cloudstack

public VolumeTO(Volume volume, StoragePool pool) {
  this.id = volume.getId();
  this.name = volume.getName();
  this.path = volume.getPath();
  this.size = volume.getSize();
  this.type = volume.getVolumeType();
  this.storagePoolType = pool.getPoolType();
  this.storagePoolUuid = pool.getUuid();
  this.mountPoint = volume.getFolder();
  this.chainInfo = volume.getChainInfo();
  this.chainSize = volume.getVmSnapshotChainSize();
  if (volume.getDeviceId() != null)
    this.deviceId = volume.getDeviceId();
}

代码示例来源:origin: apache/cloudstack

public VolumeVO allocateDuplicateVolumeVO(Volume oldVol, Long templateId) {
  VolumeVO newVol = new VolumeVO(oldVol.getVolumeType(), oldVol.getName(), oldVol.getDataCenterId(), oldVol.getDomainId(), oldVol.getAccountId(), oldVol.getDiskOfferingId(),
      oldVol.getProvisioningType(), oldVol.getSize(), oldVol.getMinIops(), oldVol.getMaxIops(), oldVol.get_iScsiName());
  if (templateId != null) {
    newVol.setTemplateId(templateId);
  } else {
    newVol.setTemplateId(oldVol.getTemplateId());
  }
  newVol.setDeviceId(oldVol.getDeviceId());
  newVol.setInstanceId(oldVol.getInstanceId());
  newVol.setRecreatable(oldVol.isRecreatable());
  newVol.setFormat(oldVol.getFormat());
  return _volsDao.persist(newVol);
}

代码示例来源:origin: apache/cloudstack

@Override
public void destroyVolume(Volume volume) {
  try {
    // Mark volume as removed if volume has not been created on primary
    if (volume.getState() == Volume.State.Allocated) {
      _volsDao.remove(volume.getId());
      stateTransitTo(volume, Volume.Event.DestroyRequested);
    } else {
      volService.destroyVolume(volume.getId());
    }
    // FIXME - All this is boiler plate code and should be done as part of state transition. This shouldn't be part of orchestrator.
    // publish usage event for the volume
    UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), Volume.class.getName(),
        volume.getUuid(), volume.isDisplayVolume());
    _resourceLimitMgr.decrementResourceCount(volume.getAccountId(), ResourceType.volume, volume.isDisplay());
    _resourceLimitMgr.decrementResourceCount(volume.getAccountId(), ResourceType.primary_storage, volume.isDisplay(), new Long(volume.getSize()));
  } catch (Exception e) {
    s_logger.debug("Failed to destroy volume" + volume.getId(), e);
    throw new CloudRuntimeException("Failed to destroy volume" + volume.getId(), e);
  }
}

代码示例来源:origin: apache/cloudstack

Long instanceId = volume.getInstanceId();
  StoragePoolVO storagePool = _storagePoolDao.findById(volume.getPoolId());
      HostVO host = _hostDao.findById(lastHostId);
      ClusterVO cluster = _clusterDao.findById(host.getClusterId());
      VolumeInfo volumeInfo = volFactory.getVolume(volume.getId());
        DataTO volTO = volFactory.getVolume(volume.getId()).getTO();
        DiskTO disk = new DiskTO(volTO, volume.getDeviceId(), volume.getPath(), volume.getVolumeType());
        cmd.setStoragePort(storagePool.getPort());
        cmd.set_iScsiName(volume.get_iScsiName());
          volService.revokeAccess(volumeInfo, host, volumeInfo.getDataStore());
        } else {
          s_logger.warn("Unable to remove host-side clustered file system for the following volume: " + volume.getUuid());

代码示例来源:origin: apache/cloudstack

VMInstanceVO vm = _vmInstanceDao.findById(vmId);
String errorMsg = "Failed to detach volume " + volume.getName() + " from VM " + vm.getHostName();
boolean sendCommand = vm.getState() == State.Running;
StoragePoolVO volumePool = _storagePoolDao.findByIdIncludingRemoved(volume.getPoolId());
  DataTO volTO = volFactory.getVolume(volume.getId()).getTO();
  DiskTO disk = new DiskTO(volTO, volume.getDeviceId(), volume.getPath(), volume.getVolumeType());
  cmd.setStoragePort(volumePool.getPort());
  cmd.set_iScsiName(volume.get_iScsiName());
  _volsDao.detachVolume(volume.getId());
  DataStore dataStore = volume.getPoolId() != null ? dataStoreMgr.getDataStore(volume.getPoolId(), DataStoreRole.Primary) : null;
  volService.revokeAccess(volFactory.getVolume(volume.getId()), host, dataStore);
  handleTargetsForVMware(hostId, volumePool.getHostAddress(), volumePool.getPort(), volume.get_iScsiName());

代码示例来源:origin: apache/cloudstack

storageMgr.removeStoragePoolFromCluster(lastHost.getId(), vol.get_iScsiName(), pool);
        volService.revokeAccess(volFactory.getVolume(vol.getId()), lastHost, storagePool);
      volService.grantAccess(volFactory.getVolume(vol.getId()), host, (DataStore)pool);
VolumeInfo volumeInfo = volFactory.getVolume(vol.getId());
DataTO volTO = volumeInfo.getTO();
DiskTO disk = storageMgr.getDiskWithThrottling(volTO, vol.getVolumeType(), vol.getDeviceId(), vol.getPath(), vm.getServiceOfferingId(), vol.getDiskOfferingId());
DataStore dataStore = dataStoreMgr.getDataStore(vol.getPoolId(), DataStoreRole.Primary);
  Boolean value = CapacityManager.VmwareCreateCloneFull.valueIn(vol.getPoolId());
  if (value != null && value) {
    cloneType = UserVmCloneType.full;

代码示例来源:origin: apache/cloudstack

_resourceLimitMgr.incrementResourceCount(newVol.getAccountId(), ResourceType.volume, newVol.isDisplay());
_resourceLimitMgr.incrementResourceCount(newVol.getAccountId(), ResourceType.primary_storage, newVol.isDisplay(), new Long(newVol.getSize()));
UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, newVol.getAccountId(), newVol.getDataCenterId(), newVol.getId(), newVol.getName(), newVol.getDiskOfferingId(), template.getId(), newVol.getSize());
_usageEventDao.persist(usageEvent);
_volsDao.attachVolume(newVol.getId(), vmId, newVol.getDeviceId());

代码示例来源:origin: apache/cloudstack

protected DiskProfile toDiskProfile(Volume vol, DiskOffering offering) {
  return new DiskProfile(vol.getId(), vol.getVolumeType(), vol.getName(), offering.getId(), vol.getSize(), offering.getTagsArray(), offering.isUseLocalStorage(), offering.isRecreatable(),
      vol.getTemplateId());
}

代码示例来源:origin: apache/cloudstack

private DataStore pickDataStoreFromVolumes(List<VolumeVO> volumes) {
  DataStore dataStore = null;
  for (Volume vol : volumes) {
    if (doesVolumeStateCheckout(vol)) {
      dataStore = _dataStoreMgr.getDataStore(vol.getPoolId(), DataStoreRole.Primary);
      if (dataStore != null) {
        return dataStore;
      }
    }
  }
  return dataStore;
}

代码示例来源:origin: apache/cloudstack

@DB
@Override
public VolumeInfo createVolumeFromSnapshot(Volume volume, Snapshot snapshot, UserVm vm) throws StorageUnavailableException {
  Account account = _entityMgr.findById(Account.class, volume.getAccountId());
  Pair<Pod, Long> pod = null;
  DiskOffering diskOffering = _entityMgr.findById(DiskOffering.class, volume.getDiskOfferingId());
  DataCenter dc = _entityMgr.findById(DataCenter.class, volume.getDataCenterId());
  DiskProfile dskCh = new DiskProfile(volume, diskOffering, snapshot.getHypervisorType());
  VolumeInfo vol = volFactory.getVolume(volume.getId());
  DataStore store = dataStoreMgr.getDataStore(pool.getId(), DataStoreRole.Primary);
  DataStoreRole dataStoreRole = getDataStoreRole(snapshot);

代码示例来源:origin: apache/cloudstack

@Override
public boolean canOperateOnVolume(Volume volume) {
  List<SnapshotVO> snapshots = _snapshotDao.listByStatus(volume.getId(), Snapshot.State.Creating, Snapshot.State.CreatedOnPrimary, Snapshot.State.BackingUp);
  if (snapshots.size() > 0) {
    return false;
  }
  return true;
}

代码示例来源:origin: apache/cloudstack

private void updateResourceCount(Volume volume, Boolean displayVolume) {
  // Update only when the flag has changed.
  if (displayVolume != null && displayVolume != volume.isDisplayVolume()) {
    _resourceLimitMgr.changeResourceCount(volume.getAccountId(), ResourceType.volume, displayVolume);
    _resourceLimitMgr.changeResourceCount(volume.getAccountId(), ResourceType.primary_storage, displayVolume, new Long(volume.getSize()));
  }
}

代码示例来源:origin: apache/cloudstack

@Override
public long getEntityOwnerId() {
  Volume volume = _entityMgr.findById(Volume.class, getId());
  if (volume != null) {
    return volume.getAccountId();
  }
  return Account.ACCOUNT_ID_SYSTEM; // no account info given, parent this command to SYSTEM so ERROR events are tracked
}

代码示例来源:origin: apache/cloudstack

public CheckVMActivityOnStoragePoolCommand(final Host host, final StoragePool pool, final List<Volume> volumeList, final DateTime suspectTime) {
  this.host = new HostTO(host);
  this.pool = new StorageFilerTO(pool);
  this.suspectTimeSeconds = suspectTime.getMillis()/1000L;
  final StringBuilder stringBuilder = new StringBuilder();
  for (final Volume v : volumeList) {
    stringBuilder.append(v.getUuid()).append(",");
  }
  this.volumeList = stringBuilder.deleteCharAt(stringBuilder.length() - 1).toString();
}

代码示例来源:origin: apache/cloudstack

/**
 * We use {@link StoragePoolAllocator} objects to find storage pools connected to the targetHost where we would be able to allocate the given volume.
 */
protected List<StoragePool> getCandidateStoragePoolsToMigrateLocalVolume(VirtualMachineProfile profile, Host targetHost, Volume volume) {
  List<StoragePool> poolList = new ArrayList<>();
  DiskOfferingVO diskOffering = _diskOfferingDao.findById(volume.getDiskOfferingId());
  DiskProfile diskProfile = new DiskProfile(volume, diskOffering, profile.getHypervisorType());
  DataCenterDeployment plan = new DataCenterDeployment(targetHost.getDataCenterId(), targetHost.getPodId(), targetHost.getClusterId(), targetHost.getId(), null, null);
  ExcludeList avoid = new ExcludeList();
  StoragePoolVO volumeStoragePool = _storagePoolDao.findById(volume.getPoolId());
  if (volumeStoragePool.isLocal()) {
    diskProfile.setUseLocalStorage(true);
  }
  for (StoragePoolAllocator allocator : _storagePoolAllocators) {
    List<StoragePool> poolListFromAllocator = allocator.allocateToPool(diskProfile, profile, plan, avoid, StoragePoolAllocator.RETURN_UPTO_ALL);
    if (CollectionUtils.isEmpty(poolListFromAllocator)) {
      continue;
    }
    for (StoragePool pool : poolListFromAllocator) {
      if (pool.isLocal() || isStorageCrossClusterMigration(targetHost, volumeStoragePool)) {
        poolList.add(pool);
      }
    }
  }
  return poolList;
}

代码示例来源:origin: apache/cloudstack

@Override
public void create() throws ResourceAllocationException {
  Volume volume = _volumeService.allocVolume(this);
  if (volume != null) {
    setEntityId(volume.getId());
    setEntityUuid(volume.getUuid());
  } else {
    throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to create volume");
  }
}

代码示例来源:origin: apache/cloudstack

private long getDataObjectSizeIncludingHypervisorSnapshotReserve(Volume volume, StoragePool pool) {
  DataStoreProvider storeProvider = _dataStoreProviderMgr.getDataStoreProvider(pool.getStorageProviderName());
  DataStoreDriver storeDriver = storeProvider.getDataStoreDriver();
  if (storeDriver instanceof PrimaryDataStoreDriver) {
    PrimaryDataStoreDriver primaryStoreDriver = (PrimaryDataStoreDriver)storeDriver;
    VolumeInfo volumeInfo = volFactory.getVolume(volume.getId());
    return primaryStoreDriver.getDataObjectSizeIncludingHypervisorSnapshotReserve(volumeInfo, pool);
  }
  return volume.getSize();
}

代码示例来源:origin: apache/cloudstack

storageBuf.append(vol.getId());
storageBuf.append("|");
storageBuf.append(vol.getVolumeType().name());
storageBuf.append("-->Pool(");
storageBuf.append(_storage.get(vol).getId());

相关文章