Search in sources :

Example 1 with GpuResponse

use of com.cloud.api.response.GpuResponse in project cosmic by MissionCriticalCloud.

the class HostJoinDaoImpl method newHostResponse.

@Override
public HostResponse newHostResponse(final HostJoinVO host, final EnumSet<HostDetails> details) {
    final 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()));
    hostResponse.setManagementServerId(host.getManagementServerId());
    hostResponse.setName(host.getName());
    hostResponse.setPodId(host.getPodUuid());
    hostResponse.setRemoved(host.getRemoved());
    hostResponse.setState(host.getStatus());
    hostResponse.setIpAddress(host.getPrivateIpAddress());
    hostResponse.setVersion(host.getVersion());
    hostResponse.setCreated(host.getCreated());
    final DedicatedResourceVO dedicatedResourceVO = dedicatedResourceDao.findByHostId(host.getId());
    if (dedicatedResourceVO != null) {
        hostResponse.setDedicated(true);
        final DomainVO domainVO = domainDao.findById(dedicatedResourceVO.getDomainId());
        if (domainVO != null) {
            hostResponse.setDomainId(domainVO.getUuid());
            hostResponse.setDomainName(domainVO.getName());
        }
        final AccountVO accountVO = accountDao.findById(dedicatedResourceVO.getAccountId());
        if (accountVO != null) {
            hostResponse.setAccountId(accountVO.getUuid());
            hostResponse.setAccountName(accountVO.getAccountName());
        }
        final AffinityGroupVO affinityGroupVO = affinityGroupDao.findById(dedicatedResourceVO.getAffinityGroupId());
        if (affinityGroupVO != null) {
            hostResponse.setAffinityGroupId(affinityGroupVO.getUuid());
            hostResponse.setAffinityGroupName(affinityGroupVO.getName());
        }
    }
    final List<HostGpuGroupsVO> gpuGroups = ApiDBUtils.getGpuGroups(host.getId());
    if (gpuGroups != null && !gpuGroups.isEmpty()) {
        final List<GpuResponse> gpus = new ArrayList<>();
        for (final HostGpuGroupsVO entry : gpuGroups) {
            final GpuResponse gpuResponse = new GpuResponse();
            gpuResponse.setGpuGroupName(entry.getGroupName());
            final List<VGPUTypesVO> vgpuTypes = ApiDBUtils.getVgpus(entry.getId());
            if (vgpuTypes != null && !vgpuTypes.isEmpty()) {
                final List<VgpuResponse> vgpus = new ArrayList<>();
                for (final VGPUTypesVO vgpuType : vgpuTypes) {
                    final 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.setGpuGroups(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());
        }
    }
    final DecimalFormat decimalFormat = new DecimalFormat("#.##");
    if (host.getType() == Host.Type.Routing) {
        if (details.contains(HostDetails.all) || details.contains(HostDetails.capacity)) {
            // set allocated capacities
            final Long mem = host.getMemReservedCapacity() + host.getMemUsedCapacity();
            final Long cpu = host.getCpuReservedCapacity() + host.getCpuUsedCapacity();
            hostResponse.setMemoryAllocated(mem);
            hostResponse.setMemoryTotal(host.getTotalMemory());
            final String hostTags = host.getTag();
            hostResponse.setHostTags(host.getTag());
            final String haTag = ApiDBUtils.getHaTag();
            if (haTag != null && !haTag.isEmpty() && hostTags != null && !hostTags.isEmpty()) {
                if (haTag.equalsIgnoreCase(hostTags)) {
                    hostResponse.setHaHost(true);
                } else {
                    hostResponse.setHaHost(false);
                }
            } else {
                hostResponse.setHaHost(false);
            }
            hostResponse.setHypervisorVersion(host.getHypervisorVersion());
            final String cpuAlloc = Float.toString(((float) cpu / (host.getCpus() * CapacityManager.CpuOverprovisioningFactor.valueIn(host.getClusterId()))) * 100f) + "%";
            hostResponse.setCpuAllocated(cpuAlloc);
            final String cpuWithOverprovisioning = Float.toString(host.getCpus() * CapacityManager.CpuOverprovisioningFactor.valueIn(host.getClusterId()));
            hostResponse.setCpuWithOverprovisioning(cpuWithOverprovisioning);
        }
        if (details.contains(HostDetails.all) || details.contains(HostDetails.stats)) {
            // set CPU/RAM/Network stats
            final String cpuUsed;
            final HostStats hostStats = ApiDBUtils.getHostStatistics(host.getId());
            if (hostStats != null) {
                final float cpuUtil = (float) hostStats.getCpuUtilization();
                cpuUsed = decimalFormat.format(cpuUtil) + "%";
                hostResponse.setCpuUsed(cpuUsed);
                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 {
                final HostVO h = hostDao.findById(host.getId());
                hostDao.loadDetails(h);
                final Map<String, String> hostVoDetails;
                hostVoDetails = h.getDetails();
                hostResponse.setDetails(hostVoDetails);
                hostResponse.setHypervisorVersion(h.getDetail("Host.OS") + " " + h.getDetail("Host.OS.Version") + " with kernel " + h.getDetail("Host.OS.Kernel.Version"));
            } catch (final Exception e) {
                s_logger.debug("failed to get host details", e);
            }
        }
    } else if (host.getType() == Host.Type.SecondaryStorage) {
        final 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)) {
        final Set<com.cloud.host.Status.Event> possibleEvents = host.getStatus().getPossibleEvents();
        if ((possibleEvents != null) && !possibleEvents.isEmpty()) {
            String events = "";
            final Iterator<com.cloud.host.Status.Event> iter = possibleEvents.iterator();
            while (iter.hasNext()) {
                final com.cloud.host.Status.Event event = iter.next();
                events += event.toString();
                if (iter.hasNext()) {
                    events += "; ";
                }
            }
            hostResponse.setEvents(events);
        }
    }
    hostResponse.setResourceState(host.getResourceState().toString());
    // set async job
    if (host.getJobId() != null) {
        hostResponse.setJobId(host.getJobUuid());
        hostResponse.setJobStatus(host.getJobStatus());
    }
    hostResponse.setObjectName("host");
    return hostResponse;
}
Also used : DecimalFormat(java.text.DecimalFormat) ArrayList(java.util.ArrayList) GpuResponse(com.cloud.api.response.GpuResponse) AccountVO(com.cloud.user.AccountVO) HostResponse(com.cloud.api.response.HostResponse) VgpuResponse(com.cloud.api.response.VgpuResponse) AffinityGroupVO(com.cloud.affinity.AffinityGroupVO) VGPUTypesVO(com.cloud.gpu.VGPUTypesVO) StorageStats(com.cloud.storage.StorageStats) HostGpuGroupsVO(com.cloud.gpu.HostGpuGroupsVO) Date(java.util.Date) HostVO(com.cloud.host.HostVO) DomainVO(com.cloud.domain.DomainVO) DedicatedResourceVO(com.cloud.dc.DedicatedResourceVO) HostStats(com.cloud.host.HostStats)

Aggregations

AffinityGroupVO (com.cloud.affinity.AffinityGroupVO)1 GpuResponse (com.cloud.api.response.GpuResponse)1 HostResponse (com.cloud.api.response.HostResponse)1 VgpuResponse (com.cloud.api.response.VgpuResponse)1 DedicatedResourceVO (com.cloud.dc.DedicatedResourceVO)1 DomainVO (com.cloud.domain.DomainVO)1 HostGpuGroupsVO (com.cloud.gpu.HostGpuGroupsVO)1 VGPUTypesVO (com.cloud.gpu.VGPUTypesVO)1 HostStats (com.cloud.host.HostStats)1 HostVO (com.cloud.host.HostVO)1 StorageStats (com.cloud.storage.StorageStats)1 AccountVO (com.cloud.user.AccountVO)1 DecimalFormat (java.text.DecimalFormat)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1