Search in sources :

Example 1 with VgpuResponse

use of org.apache.cloudstack.api.response.VgpuResponse in project cloudstack by apache.

the class HostJoinDaoImpl method newHostResponse.

@Override
public HostResponse newHostResponse(HostJoinVO host, EnumSet<HostDetails> details) {
    HostResponse hostResponse = new HostResponse();
    hostResponse.setId(host.getUuid());
    hostResponse.setCapabilities(host.getCapabilities());
    hostResponse.setClusterId(host.getClusterUuid());
    hostResponse.setCpuSockets(host.getCpuSockets());
    hostResponse.setCpuNumber(host.getCpus());
    hostResponse.setZoneId(host.getZoneUuid());
    hostResponse.setDisconnectedOn(host.getDisconnectedOn());
    hostResponse.setHypervisor(host.getHypervisorType());
    hostResponse.setHostType(host.getType());
    hostResponse.setLastPinged(new Date(host.getLastPinged()));
    Long mshostId = host.getManagementServerId();
    if (mshostId != null) {
        ManagementServerHostVO managementServer = managementServerHostDao.findByMsid(host.getManagementServerId());
        if (managementServer != null) {
            hostResponse.setManagementServerId(managementServer.getUuid());
        }
    }
    hostResponse.setName(host.getName());
    hostResponse.setPodId(host.getPodUuid());
    hostResponse.setRemoved(host.getRemoved());
    hostResponse.setCpuSpeed(host.getSpeed());
    hostResponse.setState(host.getStatus());
    hostResponse.setIpAddress(host.getPrivateIpAddress());
    hostResponse.setVersion(host.getVersion());
    hostResponse.setCreated(host.getCreated());
    List<HostGpuGroupsVO> gpuGroups = ApiDBUtils.getGpuGroups(host.getId());
    if (gpuGroups != null && !gpuGroups.isEmpty()) {
        List<GpuResponse> gpus = new ArrayList<GpuResponse>();
        for (HostGpuGroupsVO entry : gpuGroups) {
            GpuResponse gpuResponse = new GpuResponse();
            gpuResponse.setGpuGroupName(entry.getGroupName());
            List<VGPUTypesVO> vgpuTypes = ApiDBUtils.getVgpus(entry.getId());
            if (vgpuTypes != null && !vgpuTypes.isEmpty()) {
                List<VgpuResponse> vgpus = new ArrayList<VgpuResponse>();
                for (VGPUTypesVO vgpuType : vgpuTypes) {
                    VgpuResponse vgpuResponse = new VgpuResponse();
                    vgpuResponse.setName(vgpuType.getVgpuType());
                    vgpuResponse.setVideoRam(vgpuType.getVideoRam());
                    vgpuResponse.setMaxHeads(vgpuType.getMaxHeads());
                    vgpuResponse.setMaxResolutionX(vgpuType.getMaxResolutionX());
                    vgpuResponse.setMaxResolutionY(vgpuType.getMaxResolutionY());
                    vgpuResponse.setMaxVgpuPerPgpu(vgpuType.getMaxVgpuPerPgpu());
                    vgpuResponse.setRemainingCapacity(vgpuType.getRemainingCapacity());
                    vgpuResponse.setmaxCapacity(vgpuType.getMaxCapacity());
                    vgpus.add(vgpuResponse);
                }
                gpuResponse.setVgpu(vgpus);
            }
            gpus.add(gpuResponse);
        }
        hostResponse.setGpuGroup(gpus);
    }
    if (details.contains(HostDetails.all) || details.contains(HostDetails.capacity) || details.contains(HostDetails.stats) || details.contains(HostDetails.events)) {
        hostResponse.setOsCategoryId(host.getOsCategoryUuid());
        hostResponse.setOsCategoryName(host.getOsCategoryName());
        hostResponse.setZoneName(host.getZoneName());
        hostResponse.setPodName(host.getPodName());
        if (host.getClusterId() > 0) {
            hostResponse.setClusterName(host.getClusterName());
            hostResponse.setClusterType(host.getClusterType().toString());
        }
    }
    DecimalFormat decimalFormat = new DecimalFormat("#.##");
    if (host.getType() == Host.Type.Routing) {
        float cpuOverprovisioningFactor = ApiDBUtils.getCpuOverprovisioningFactor(host.getClusterId());
        hostResponse.setCpuNumber((int) (host.getCpus() * cpuOverprovisioningFactor));
        if (details.contains(HostDetails.all) || details.contains(HostDetails.capacity)) {
            // set allocated capacities
            Long mem = host.getMemReservedCapacity() + host.getMemUsedCapacity();
            Long cpu = host.getCpuReservedCapacity() + host.getCpuUsedCapacity();
            Float memWithOverprovisioning = host.getTotalMemory() * ApiDBUtils.getMemOverprovisioningFactor(host.getClusterId());
            hostResponse.setMemoryTotal(memWithOverprovisioning.longValue());
            hostResponse.setMemWithOverprovisioning(decimalFormat.format(memWithOverprovisioning));
            hostResponse.setMemoryAllocated(mem);
            hostResponse.setMemoryAllocatedBytes(mem);
            String memoryAllocatedPercentage = decimalFormat.format((float) mem / memWithOverprovisioning * 100.0f) + "%";
            hostResponse.setMemoryAllocatedPercentage(memoryAllocatedPercentage);
            String hostTags = host.getTag();
            hostResponse.setHostTags(hostTags);
            hostResponse.setHaHost(containsHostHATag(hostTags));
            hostResponse.setHypervisorVersion(host.getHypervisorVersion());
            float cpuWithOverprovisioning = host.getCpus() * host.getSpeed() * cpuOverprovisioningFactor;
            hostResponse.setCpuAllocatedValue(cpu);
            String cpuAllocated = calculateResourceAllocatedPercentage(cpu, cpuWithOverprovisioning);
            hostResponse.setCpuAllocated(cpuAllocated);
            hostResponse.setCpuAllocatedPercentage(cpuAllocated);
            hostResponse.setCpuAllocatedWithOverprovisioning(cpuAllocated);
            hostResponse.setCpuWithOverprovisioning(decimalFormat.format(cpuWithOverprovisioning));
        }
        if (details.contains(HostDetails.all) || details.contains(HostDetails.stats)) {
            // set CPU/RAM/Network stats
            String cpuUsed = null;
            HostStats hostStats = ApiDBUtils.getHostStatistics(host.getId());
            if (hostStats != null) {
                float cpuUtil = (float) hostStats.getCpuUtilization();
                cpuUsed = decimalFormat.format(cpuUtil) + "%";
                hostResponse.setCpuUsed(cpuUsed);
                hostResponse.setCpuAverageLoad(hostStats.getLoadAverage());
                hostResponse.setMemoryUsed((new Double(hostStats.getUsedMemory())).longValue());
                hostResponse.setNetworkKbsRead((new Double(hostStats.getNetworkReadKBs())).longValue());
                hostResponse.setNetworkKbsWrite((new Double(hostStats.getNetworkWriteKBs())).longValue());
            }
        }
        if (details.contains(HostDetails.all) && host.getHypervisorType() == Hypervisor.HypervisorType.KVM) {
            // only kvm has the requirement to return host details
            try {
                hostResponse.setDetails(hostDetailsDao.findDetails(host.getId()));
            } catch (Exception e) {
                s_logger.debug("failed to get host details", e);
            }
        }
    } else if (host.getType() == Host.Type.SecondaryStorage) {
        StorageStats secStorageStats = ApiDBUtils.getSecondaryStorageStatistics(host.getId());
        if (secStorageStats != null) {
            hostResponse.setDiskSizeTotal(secStorageStats.getCapacityBytes());
            hostResponse.setDiskSizeAllocated(secStorageStats.getByteUsed());
        }
    }
    hostResponse.setLocalStorageActive(ApiDBUtils.isLocalStorageActiveOnHost(host.getId()));
    if (details.contains(HostDetails.all) || details.contains(HostDetails.events)) {
        Set<com.cloud.host.Status.Event> possibleEvents = host.getStatus().getPossibleEvents();
        if ((possibleEvents != null) && !possibleEvents.isEmpty()) {
            String events = "";
            Iterator<com.cloud.host.Status.Event> iter = possibleEvents.iterator();
            while (iter.hasNext()) {
                com.cloud.host.Status.Event event = iter.next();
                events += event.toString();
                if (iter.hasNext()) {
                    events += "; ";
                }
            }
            hostResponse.setEvents(events);
        }
    }
    hostResponse.setHostHAResponse(haConfigDao.findHAResource(host.getId(), HAResource.ResourceType.Host));
    hostResponse.setOutOfBandManagementResponse(outOfBandManagementDao.findByHost(host.getId()));
    hostResponse.setResourceState(host.getResourceState().toString());
    // set async job
    if (host.getJobId() != null) {
        hostResponse.setJobId(host.getJobUuid());
        hostResponse.setJobStatus(host.getJobStatus());
    }
    hostResponse.setHasAnnotation(annotationDao.hasAnnotations(host.getUuid(), AnnotationService.EntityType.HOST.name(), accountManager.isRootAdmin(CallContext.current().getCallingAccount().getId())));
    hostResponse.setAnnotation(host.getAnnotation());
    hostResponse.setLastAnnotated(host.getLastAnnotated());
    hostResponse.setUsername(host.getUsername());
    hostResponse.setObjectName("host");
    return hostResponse;
}
Also used : DecimalFormat(java.text.DecimalFormat) ArrayList(java.util.ArrayList) GpuResponse(org.apache.cloudstack.api.response.GpuResponse) HostResponse(org.apache.cloudstack.api.response.HostResponse) VgpuResponse(org.apache.cloudstack.api.response.VgpuResponse) VGPUTypesVO(com.cloud.gpu.VGPUTypesVO) StorageStats(com.cloud.storage.StorageStats) HostGpuGroupsVO(com.cloud.gpu.HostGpuGroupsVO) Date(java.util.Date) ManagementServerHostVO(com.cloud.cluster.ManagementServerHostVO) HostStats(com.cloud.host.HostStats)

Aggregations

ManagementServerHostVO (com.cloud.cluster.ManagementServerHostVO)1 HostGpuGroupsVO (com.cloud.gpu.HostGpuGroupsVO)1 VGPUTypesVO (com.cloud.gpu.VGPUTypesVO)1 HostStats (com.cloud.host.HostStats)1 StorageStats (com.cloud.storage.StorageStats)1 DecimalFormat (java.text.DecimalFormat)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 GpuResponse (org.apache.cloudstack.api.response.GpuResponse)1 HostResponse (org.apache.cloudstack.api.response.HostResponse)1 VgpuResponse (org.apache.cloudstack.api.response.VgpuResponse)1