use of com.cloud.storage.DiskOfferingVO in project cloudstack by apache.
the class DeploymentPlanningManagerImpl method getVolumeDiskProfilePairs.
private List<Pair<Volume, DiskProfile>> getVolumeDiskProfilePairs(List<Volume> volumes) {
List<Pair<Volume, DiskProfile>> volumeDiskProfilePairs = new ArrayList<>();
for (Volume volume : volumes) {
DiskOfferingVO diskOffering = _diskOfferingDao.findById(volume.getDiskOfferingId());
DiskProfile diskProfile = new DiskProfile(volume, diskOffering, _volsDao.getHypervisorType(volume.getId()));
volumeDiskProfilePairs.add(new Pair<>(volume, diskProfile));
}
return volumeDiskProfilePairs;
}
use of com.cloud.storage.DiskOfferingVO in project cloudstack by apache.
the class DefaultVMSnapshotStrategy method publishUsageEvent.
private void publishUsageEvent(String type, VMSnapshot vmSnapshot, UserVm userVm, VolumeObjectTO volumeTo) {
VolumeVO volume = volumeDao.findById(volumeTo.getId());
Long diskOfferingId = volume.getDiskOfferingId();
Long offeringId = null;
if (diskOfferingId != null) {
DiskOfferingVO offering = diskOfferingDao.findById(diskOfferingId);
if (offering != null && !offering.isComputeOnly()) {
offeringId = offering.getId();
}
}
Map<String, String> details = new HashMap<>();
if (vmSnapshot != null) {
details.put(UsageEventVO.DynamicParameters.vmSnapshotId.name(), String.valueOf(vmSnapshot.getId()));
}
// save volume's id into templateId field
UsageEventUtils.publishUsageEvent(// save volume's id into templateId field
type, // save volume's id into templateId field
vmSnapshot.getAccountId(), // save volume's id into templateId field
userVm.getDataCenterId(), // save volume's id into templateId field
userVm.getId(), // save volume's id into templateId field
vmSnapshot.getName(), // save volume's id into templateId field
offeringId, // save volume's id into templateId field
volume.getId(), volumeTo.getSize(), VMSnapshot.class.getName(), vmSnapshot.getUuid(), details);
}
use of com.cloud.storage.DiskOfferingVO in project cloudstack by apache.
the class ApiResponseHelper method createUsageResponse.
@Override
public UsageRecordResponse createUsageResponse(Usage usageRecord, Map<String, Set<ResourceTagResponse>> resourceTagResponseMap, boolean oldFormat) {
UsageRecordResponse usageRecResponse = new UsageRecordResponse();
Account account = ApiDBUtils.findAccountById(usageRecord.getAccountId());
if (account.getType() == Account.ACCOUNT_TYPE_PROJECT) {
// find the project
Project project = ApiDBUtils.findProjectByProjectAccountIdIncludingRemoved(account.getId());
if (project != null) {
usageRecResponse.setProjectId(project.getUuid());
usageRecResponse.setProjectName(project.getName());
}
} else {
usageRecResponse.setAccountId(account.getUuid());
usageRecResponse.setAccountName(account.getAccountName());
}
Domain domain = ApiDBUtils.findDomainById(usageRecord.getDomainId());
if (domain != null) {
usageRecResponse.setDomainId(domain.getUuid());
usageRecResponse.setDomainName(domain.getName());
}
if (usageRecord.getZoneId() != null) {
DataCenter zone = ApiDBUtils.findZoneById(usageRecord.getZoneId());
if (zone != null) {
usageRecResponse.setZoneId(zone.getUuid());
}
}
usageRecResponse.setDescription(usageRecord.getDescription());
usageRecResponse.setUsage(usageRecord.getUsageDisplay());
usageRecResponse.setUsageType(usageRecord.getUsageType());
VMInstanceVO vmInstance = null;
if (usageRecord.getVmInstanceId() != null) {
vmInstance = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getVmInstanceId());
if (vmInstance != null) {
usageRecResponse.setVirtualMachineId(vmInstance.getUuid());
}
}
usageRecResponse.setResourceName(usageRecord.getVmName());
VMTemplateVO template = null;
if (usageRecord.getTemplateId() != null) {
template = ApiDBUtils.findTemplateById(usageRecord.getTemplateId());
if (template != null) {
usageRecResponse.setTemplateId(template.getUuid());
}
}
ResourceTag.ResourceObjectType resourceType = null;
Long resourceId = null;
if (usageRecord.getUsageType() == UsageTypes.RUNNING_VM || usageRecord.getUsageType() == UsageTypes.ALLOCATED_VM) {
ServiceOfferingVO svcOffering = _entityMgr.findByIdIncludingRemoved(ServiceOfferingVO.class, usageRecord.getOfferingId().toString());
// Service Offering Id
if (svcOffering != null) {
usageRecResponse.setOfferingId(svcOffering.getUuid());
}
// VM Instance ID
VMInstanceVO vm = null;
if (usageRecord.getUsageId() != null && usageRecord.getUsageId().equals(usageRecord.getVmInstanceId())) {
vm = vmInstance;
} else {
vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getUsageId().toString());
}
if (vm != null) {
resourceType = ResourceTag.ResourceObjectType.UserVm;
usageRecResponse.setUsageId(vm.getUuid());
resourceId = vm.getId();
final GuestOS guestOS = _guestOsDao.findById(vm.getGuestOSId());
if (guestOS != null) {
usageRecResponse.setOsTypeId(guestOS.getUuid());
usageRecResponse.setOsDisplayName(guestOS.getDisplayName());
final GuestOsCategory guestOsCategory = _guestOsCategoryDao.findById(guestOS.getCategoryId());
if (guestOsCategory != null) {
usageRecResponse.setOsCategoryId(guestOsCategory.getUuid());
usageRecResponse.setOsCategoryName(guestOsCategory.getName());
}
}
}
// Hypervisor Type
usageRecResponse.setType(usageRecord.getType());
// Dynamic compute offerings details
if (usageRecord.getCpuCores() != null) {
usageRecResponse.setCpuNumber(usageRecord.getCpuCores());
} else if (svcOffering.getCpu() != null) {
usageRecResponse.setCpuNumber(svcOffering.getCpu().longValue());
}
if (usageRecord.getCpuSpeed() != null) {
usageRecResponse.setCpuSpeed(usageRecord.getCpuSpeed());
} else if (svcOffering.getSpeed() != null) {
usageRecResponse.setCpuSpeed(svcOffering.getSpeed().longValue());
}
if (usageRecord.getMemory() != null) {
usageRecResponse.setMemory(usageRecord.getMemory());
} else if (svcOffering.getRamSize() != null) {
usageRecResponse.setMemory(svcOffering.getRamSize().longValue());
}
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
if (usageRecord.getUsageType() == UsageTypes.RUNNING_VM) {
builder.append("Running VM usage ");
} else if (usageRecord.getUsageType() == UsageTypes.ALLOCATED_VM) {
builder.append("Allocated VM usage ");
}
if (vm != null) {
builder.append("for ").append(vm.getHostName()).append(" (").append(vm.getInstanceName()).append(") (").append(vm.getUuid()).append(") ");
}
if (svcOffering != null) {
builder.append("using service offering ").append(svcOffering.getName()).append(" (").append(svcOffering.getUuid()).append(") ");
}
if (template != null) {
builder.append("and template ").append(template.getName()).append(" (").append(template.getUuid()).append(")");
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.IP_ADDRESS) {
// IP Address ID
IPAddressVO ip = _entityMgr.findByIdIncludingRemoved(IPAddressVO.class, usageRecord.getUsageId().toString());
if (ip != null) {
Long networkId = ip.getAssociatedWithNetworkId();
if (networkId == null) {
networkId = ip.getSourceNetworkId();
}
resourceType = ResourceObjectType.PublicIpAddress;
resourceId = ip.getId();
usageRecResponse.setUsageId(ip.getUuid());
}
// isSourceNAT
usageRecResponse.setSourceNat((usageRecord.getType().equals("SourceNat")) ? true : false);
// isSystem
usageRecResponse.setSystem((usageRecord.getSize() == 1) ? true : false);
} else if (usageRecord.getUsageType() == UsageTypes.NETWORK_BYTES_SENT || usageRecord.getUsageType() == UsageTypes.NETWORK_BYTES_RECEIVED) {
// Device Type
resourceType = ResourceObjectType.UserVm;
usageRecResponse.setType(usageRecord.getType());
VMInstanceVO vm = null;
HostVO host = null;
if (usageRecord.getType().equals("DomainRouter") || usageRecord.getType().equals("UserVm")) {
// Domain Router Id
vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getUsageId().toString());
if (vm != null) {
resourceId = vm.getId();
usageRecResponse.setUsageId(vm.getUuid());
}
} else {
// External Device Host Id
host = _entityMgr.findByIdIncludingRemoved(HostVO.class, usageRecord.getUsageId().toString());
if (host != null) {
usageRecResponse.setUsageId(host.getUuid());
}
}
// Network ID
NetworkVO network = null;
if ((usageRecord.getNetworkId() != null) && (usageRecord.getNetworkId() != 0)) {
network = _entityMgr.findByIdIncludingRemoved(NetworkVO.class, usageRecord.getNetworkId().toString());
if (network != null) {
resourceType = ResourceObjectType.Network;
if (network.getTrafficType() == TrafficType.Public) {
VirtualRouter router = ApiDBUtils.findDomainRouterById(usageRecord.getUsageId());
Vpc vpc = ApiDBUtils.findVpcByIdIncludingRemoved(router.getVpcId());
usageRecResponse.setVpcId(vpc.getUuid());
resourceId = vpc.getId();
} else {
usageRecResponse.setNetworkId(network.getUuid());
resourceId = network.getId();
}
usageRecResponse.setResourceName(network.getName());
}
}
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
if (usageRecord.getUsageType() == UsageTypes.NETWORK_BYTES_SENT) {
builder.append("Bytes sent by network ");
} else if (usageRecord.getUsageType() == UsageTypes.NETWORK_BYTES_RECEIVED) {
builder.append("Bytes received by network ");
}
if (network != null) {
if (network.getName() != null) {
builder.append(network.getName());
}
if (network.getUuid() != null) {
builder.append(" (").append(network.getUuid()).append(") ");
}
builder.append(" " + toHumanReadableSize(usageRecord.getRawUsage().longValue()) + " ");
}
if (vm != null) {
builder.append("using router ").append(vm.getInstanceName()).append(" (").append(vm.getUuid()).append(")");
} else if (host != null) {
builder.append("using host ").append(host.getName()).append(" (").append(host.getUuid()).append(")");
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.VM_DISK_IO_READ || usageRecord.getUsageType() == UsageTypes.VM_DISK_IO_WRITE || usageRecord.getUsageType() == UsageTypes.VM_DISK_BYTES_READ || usageRecord.getUsageType() == UsageTypes.VM_DISK_BYTES_WRITE) {
// Device Type
usageRecResponse.setType(usageRecord.getType());
resourceType = ResourceObjectType.Volume;
// Volume ID
VolumeVO volume = _entityMgr.findByIdIncludingRemoved(VolumeVO.class, usageRecord.getUsageId().toString());
if (volume != null) {
usageRecResponse.setUsageId(volume.getUuid());
resourceId = volume.getId();
}
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
if (usageRecord.getUsageType() == UsageTypes.VM_DISK_IO_READ) {
builder.append("Disk I/O read requests");
} else if (usageRecord.getUsageType() == UsageTypes.VM_DISK_IO_WRITE) {
builder.append("Disk I/O write requests");
} else if (usageRecord.getUsageType() == UsageTypes.VM_DISK_BYTES_READ) {
builder.append("Disk I/O read bytes");
} else if (usageRecord.getUsageType() == UsageTypes.VM_DISK_BYTES_WRITE) {
builder.append("Disk I/O write bytes");
}
if (vmInstance != null) {
builder.append(" for VM ").append(vmInstance.getHostName()).append(" (").append(vmInstance.getUuid()).append(")");
}
if (volume != null) {
builder.append(" and volume ").append(volume.getName()).append(" (").append(volume.getUuid()).append(")");
}
if (usageRecord.getRawUsage() != null) {
builder.append(" " + toHumanReadableSize(usageRecord.getRawUsage().longValue()));
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.VOLUME) {
// Volume ID
VolumeVO volume = _entityMgr.findByIdIncludingRemoved(VolumeVO.class, usageRecord.getUsageId().toString());
resourceType = ResourceObjectType.Volume;
if (volume != null) {
usageRecResponse.setUsageId(volume.getUuid());
resourceId = volume.getId();
}
// Volume Size
usageRecResponse.setSize(usageRecord.getSize());
// Disk Offering Id
DiskOfferingVO diskOff = null;
if (usageRecord.getOfferingId() != null) {
diskOff = _entityMgr.findByIdIncludingRemoved(DiskOfferingVO.class, usageRecord.getOfferingId().toString());
usageRecResponse.setOfferingId(diskOff.getUuid());
}
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
builder.append("Volume usage ");
if (volume != null) {
builder.append("for ").append(volume.getName()).append(" (").append(volume.getUuid()).append(")");
}
if (diskOff != null) {
builder.append(" with disk offering ").append(diskOff.getName()).append(" (").append(diskOff.getUuid()).append(")");
}
if (template != null) {
builder.append(" and template ").append(template.getName()).append(" (").append(template.getUuid()).append(")");
}
if (usageRecord.getSize() != null) {
builder.append(" and size " + toHumanReadableSize(usageRecord.getSize()));
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.TEMPLATE || usageRecord.getUsageType() == UsageTypes.ISO) {
// Template/ISO ID
VMTemplateVO tmpl = _entityMgr.findByIdIncludingRemoved(VMTemplateVO.class, usageRecord.getUsageId().toString());
if (tmpl != null) {
usageRecResponse.setUsageId(tmpl.getUuid());
resourceId = tmpl.getId();
}
// Template/ISO Size
usageRecResponse.setSize(usageRecord.getSize());
if (usageRecord.getUsageType() == UsageTypes.ISO) {
usageRecResponse.setVirtualSize(usageRecord.getSize());
resourceType = ResourceObjectType.ISO;
} else {
usageRecResponse.setVirtualSize(usageRecord.getVirtualSize());
resourceType = ResourceObjectType.Template;
}
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
if (usageRecord.getUsageType() == UsageTypes.TEMPLATE) {
builder.append("Template usage");
} else if (usageRecord.getUsageType() == UsageTypes.ISO) {
builder.append("ISO usage");
}
if (tmpl != null) {
builder.append(" for ").append(tmpl.getName()).append(" (").append(tmpl.getUuid()).append(") ").append("with size ").append(toHumanReadableSize(usageRecord.getSize())).append(" and virtual size ").append(toHumanReadableSize(usageRecord.getVirtualSize()));
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.SNAPSHOT) {
// Snapshot ID
SnapshotVO snap = _entityMgr.findByIdIncludingRemoved(SnapshotVO.class, usageRecord.getUsageId().toString());
resourceType = ResourceObjectType.Snapshot;
if (snap != null) {
usageRecResponse.setUsageId(snap.getUuid());
resourceId = snap.getId();
}
// Snapshot Size
usageRecResponse.setSize(usageRecord.getSize());
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
builder.append("Snapshot usage ");
if (snap != null) {
builder.append("for ").append(snap.getName()).append(" (").append(snap.getUuid()).append(") ").append("with size ").append(toHumanReadableSize(usageRecord.getSize()));
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.LOAD_BALANCER_POLICY) {
// Load Balancer Policy ID
LoadBalancerVO lb = _entityMgr.findByIdIncludingRemoved(LoadBalancerVO.class, usageRecord.getUsageId().toString());
resourceType = ResourceObjectType.LoadBalancer;
if (lb != null) {
usageRecResponse.setUsageId(lb.getUuid());
resourceId = lb.getId();
}
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
builder.append("Loadbalancer policy usage ");
if (lb != null) {
builder.append(lb.getName()).append(" (").append(lb.getUuid()).append(")");
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.PORT_FORWARDING_RULE) {
// Port Forwarding Rule ID
PortForwardingRuleVO pf = _entityMgr.findByIdIncludingRemoved(PortForwardingRuleVO.class, usageRecord.getUsageId().toString());
resourceType = ResourceObjectType.PortForwardingRule;
if (pf != null) {
usageRecResponse.setUsageId(pf.getUuid());
resourceId = pf.getId();
}
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
builder.append("Port forwarding rule usage");
if (pf != null) {
builder.append(" (").append(pf.getUuid()).append(")");
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.NETWORK_OFFERING) {
// Network Offering Id
NetworkOfferingVO netOff = _entityMgr.findByIdIncludingRemoved(NetworkOfferingVO.class, usageRecord.getOfferingId().toString());
usageRecResponse.setOfferingId(netOff.getUuid());
// is Default
usageRecResponse.setDefault(usageRecord.getUsageId() == 1);
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
builder.append("Network offering ");
if (netOff != null) {
builder.append(netOff.getName()).append(" (").append(netOff.getUuid()).append(") usage ");
}
if (vmInstance != null) {
builder.append("for VM ").append(vmInstance.getHostName()).append(" (").append(vmInstance.getUuid()).append(") ");
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.VPN_USERS) {
// VPN User ID
VpnUserVO vpnUser = _entityMgr.findByIdIncludingRemoved(VpnUserVO.class, usageRecord.getUsageId().toString());
if (vpnUser != null) {
usageRecResponse.setUsageId(vpnUser.getUuid());
}
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
builder.append("VPN usage ");
if (vpnUser != null) {
builder.append("for user ").append(vpnUser.getUsername()).append(" (").append(vpnUser.getUuid()).append(")");
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.SECURITY_GROUP) {
// Security Group Id
SecurityGroupVO sg = _entityMgr.findByIdIncludingRemoved(SecurityGroupVO.class, usageRecord.getUsageId().toString());
resourceType = ResourceObjectType.SecurityGroup;
if (sg != null) {
resourceId = sg.getId();
usageRecResponse.setUsageId(sg.getUuid());
}
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
builder.append("Security group");
if (sg != null) {
builder.append(" ").append(sg.getName()).append(" (").append(sg.getUuid()).append(") usage");
}
if (vmInstance != null) {
builder.append(" for VM ").append(vmInstance.getHostName()).append(" (").append(vmInstance.getUuid()).append(")");
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.BACKUP) {
resourceType = ResourceObjectType.Backup;
final StringBuilder builder = new StringBuilder();
builder.append("Backup usage of size ").append(usageRecord.getUsageDisplay());
if (vmInstance != null) {
resourceId = vmInstance.getId();
usageRecResponse.setResourceName(vmInstance.getInstanceName());
usageRecResponse.setUsageId(vmInstance.getUuid());
builder.append(" for VM ").append(vmInstance.getHostName()).append(" (").append(vmInstance.getUuid()).append(")");
final BackupOffering backupOffering = backupOfferingDao.findByIdIncludingRemoved(usageRecord.getOfferingId());
if (backupOffering != null) {
builder.append(" and backup offering ").append(backupOffering.getName()).append(" (").append(backupOffering.getUuid()).append(", user ad-hoc/scheduled backup allowed: ").append(backupOffering.isUserDrivenBackupAllowed()).append(")");
}
}
usageRecResponse.setDescription(builder.toString());
} else if (usageRecord.getUsageType() == UsageTypes.VM_SNAPSHOT) {
resourceType = ResourceObjectType.VMSnapshot;
VMSnapshotVO vmSnapshotVO = null;
if (usageRecord.getUsageId() != null) {
vmSnapshotVO = vmSnapshotDao.findByIdIncludingRemoved(usageRecord.getUsageId());
if (vmSnapshotVO != null) {
resourceId = vmSnapshotVO.getId();
usageRecResponse.setResourceName(vmSnapshotVO.getDisplayName());
usageRecResponse.setUsageId(vmSnapshotVO.getUuid());
}
}
usageRecResponse.setSize(usageRecord.getSize());
if (usageRecord.getVirtualSize() != null) {
usageRecResponse.setVirtualSize(usageRecord.getVirtualSize());
}
if (usageRecord.getOfferingId() != null) {
usageRecResponse.setOfferingId(usageRecord.getOfferingId().toString());
}
if (!oldFormat) {
VolumeVO volume = null;
if (vmSnapshotVO == null && usageRecord.getUsageId() != null) {
volume = _entityMgr.findByIdIncludingRemoved(VolumeVO.class, usageRecord.getUsageId().toString());
}
DiskOfferingVO diskOff = null;
if (usageRecord.getOfferingId() != null) {
diskOff = _entityMgr.findByIdIncludingRemoved(DiskOfferingVO.class, usageRecord.getOfferingId());
}
final StringBuilder builder = new StringBuilder();
builder.append("VMSnapshot usage");
if (vmSnapshotVO != null) {
builder.append(" Id: ").append(vmSnapshotVO.getUuid());
}
if (vmInstance != null) {
builder.append(" for VM ").append(vmInstance.getHostName()).append(" (").append(vmInstance.getUuid()).append(")");
}
if (volume != null) {
builder.append(" with volume ").append(volume.getName()).append(" (").append(volume.getUuid()).append(")");
}
if (diskOff != null) {
builder.append(" using disk offering ").append(diskOff.getName()).append(" (").append(diskOff.getUuid()).append(")");
}
if (usageRecord.getSize() != null) {
builder.append(" and size " + toHumanReadableSize(usageRecord.getSize()));
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.VOLUME_SECONDARY) {
VolumeVO volume = _entityMgr.findByIdIncludingRemoved(VolumeVO.class, usageRecord.getUsageId().toString());
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
builder.append("Volume on secondary storage usage");
if (volume != null) {
builder.append(" for ").append(volume.getName()).append(" (").append(volume.getUuid()).append(") ").append("with size ").append(toHumanReadableSize(usageRecord.getSize()));
}
usageRecResponse.setDescription(builder.toString());
}
} else if (usageRecord.getUsageType() == UsageTypes.VM_SNAPSHOT_ON_PRIMARY) {
resourceType = ResourceObjectType.VMSnapshot;
VMSnapshotVO vmSnapshotVO = null;
if (usageRecord.getUsageId() != null) {
vmSnapshotVO = vmSnapshotDao.findByIdIncludingRemoved(usageRecord.getUsageId());
if (vmSnapshotVO != null) {
resourceId = vmSnapshotVO.getId();
usageRecResponse.setResourceName(vmSnapshotVO.getDisplayName());
usageRecResponse.setUsageId(vmSnapshotVO.getUuid());
}
}
usageRecResponse.setSize(usageRecord.getVirtualSize());
if (!oldFormat) {
final StringBuilder builder = new StringBuilder();
builder.append("VMSnapshot on primary storage usage");
if (vmSnapshotVO != null) {
builder.append(" Id: ").append(vmSnapshotVO.getUuid());
}
if (vmInstance != null) {
builder.append(" for VM ").append(vmInstance.getHostName()).append(" (").append(vmInstance.getUuid()).append(") ").append("with size ").append(toHumanReadableSize(usageRecord.getVirtualSize()));
}
usageRecResponse.setDescription(builder.toString());
}
}
if (resourceTagResponseMap != null && resourceTagResponseMap.get(resourceId + ":" + resourceType) != null) {
usageRecResponse.setTags(resourceTagResponseMap.get(resourceId + ":" + resourceType));
}
if (usageRecord.getRawUsage() != null) {
DecimalFormat decimalFormat = new DecimalFormat("###########.######");
usageRecResponse.setRawUsage(decimalFormat.format(usageRecord.getRawUsage()));
}
if (usageRecord.getStartDate() != null) {
usageRecResponse.setStartDate(getDateStringInternal(usageRecord.getStartDate()));
}
if (usageRecord.getEndDate() != null) {
usageRecResponse.setEndDate(getDateStringInternal(usageRecord.getEndDate()));
}
return usageRecResponse;
}
use of com.cloud.storage.DiskOfferingVO in project cloudstack by apache.
the class ManagementServerImpl method findAllSuitableStoragePoolsForVm.
/**
* Looks for all suitable storage pools to allocate the given volume.
* We take into account the service offering of the VM and volume to find suitable storage pools. It is also excluded from the search the current storage pool used by the volume.
* We use {@link StoragePoolAllocator} to look for possible storage pools to allocate the given volume. We will look for possible local storage poosl even if the volume is using a shared storage disk offering.
*
* Side note: the idea behind this method is to provide power for administrators of manually overriding deployments defined by CloudStack.
*/
private List<StoragePool> findAllSuitableStoragePoolsForVm(final VolumeVO volume, Long diskOfferingId, Long newSize, Long newMinIops, Long newMaxIops, VMInstanceVO vm, Host vmHost, ExcludeList avoid, Cluster srcCluster, HypervisorType hypervisorType) {
List<StoragePool> suitablePools = new ArrayList<>();
Long clusterId = null;
Long podId = null;
if (srcCluster != null) {
clusterId = srcCluster.getId();
podId = srcCluster.getPodId();
}
DataCenterDeployment plan = new DataCenterDeployment(volume.getDataCenterId(), podId, clusterId, null, null, null, null);
VirtualMachineProfile profile = new VirtualMachineProfileImpl(vm);
// OfflineVmwareMigration: vm might be null here; deal!
DiskOfferingVO diskOffering = _diskOfferingDao.findById(diskOfferingId);
DiskProfile diskProfile = new DiskProfile(volume, diskOffering, hypervisorType);
if (!Objects.equals(volume.getDiskOfferingId(), diskOfferingId)) {
diskProfile.setSize(newSize);
diskProfile.setMinIops(newMinIops);
diskProfile.setMaxIops(newMaxIops);
}
for (StoragePoolAllocator allocator : _storagePoolAllocators) {
List<StoragePool> pools = allocator.allocateToPool(diskProfile, profile, plan, avoid, StoragePoolAllocator.RETURN_UPTO_ALL, true);
if (CollectionUtils.isEmpty(pools)) {
continue;
}
for (StoragePool pool : pools) {
boolean isLocalPoolSameHostAsVmHost = pool.isLocal() && (vmHost == null || StringUtils.equals(vmHost.getPrivateIpAddress(), pool.getHostAddress()));
if (isLocalPoolSameHostAsVmHost || pool.isShared()) {
suitablePools.add(pool);
}
}
}
return suitablePools;
}
use of com.cloud.storage.DiskOfferingVO in project cloudstack by apache.
the class ManagementServerImpl method findAllSuitableStoragePoolsForDetachedVolume.
private List<StoragePool> findAllSuitableStoragePoolsForDetachedVolume(Volume volume, Long diskOfferingId, List<? extends StoragePool> allPools) {
List<StoragePool> suitablePools = new ArrayList<>();
if (CollectionUtils.isEmpty(allPools)) {
return suitablePools;
}
DiskOfferingVO diskOffering = _diskOfferingDao.findById(diskOfferingId);
List<String> tags = new ArrayList<>();
String[] tagsArray = diskOffering.getTagsArray();
if (tagsArray != null && tagsArray.length > 0) {
tags = Arrays.asList(tagsArray);
}
Long[] poolIds = allPools.stream().map(StoragePool::getId).toArray(Long[]::new);
List<StoragePoolJoinVO> pools = _poolJoinDao.searchByIds(poolIds);
for (StoragePoolJoinVO storagePool : pools) {
if (StoragePoolStatus.Up.equals(storagePool.getStatus()) && (CollectionUtils.isEmpty(tags) || tags.contains(storagePool.getTag()))) {
Optional<? extends StoragePool> match = allPools.stream().filter(x -> x.getId() == storagePool.getId()).findFirst();
match.ifPresent(suitablePools::add);
}
}
return suitablePools;
}
Aggregations