Search in sources :

Example 1 with HostGpuGroupsVO

use of com.cloud.gpu.HostGpuGroupsVO 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)

Example 2 with HostGpuGroupsVO

use of com.cloud.gpu.HostGpuGroupsVO in project cloudstack by apache.

the class HostGpuGroupsDaoImpl method persist.

@Override
public void persist(long hostId, List<String> gpuGroups) {
    for (String groupName : gpuGroups) {
        if (findByHostIdGroupName(hostId, groupName) == null) {
            HostGpuGroupsVO record = new HostGpuGroupsVO(hostId, groupName);
            persist(record);
        }
    }
}
Also used : HostGpuGroupsVO(com.cloud.gpu.HostGpuGroupsVO)

Example 3 with HostGpuGroupsVO

use of com.cloud.gpu.HostGpuGroupsVO in project cloudstack by apache.

the class VGPUTypesDaoImpl method persist.

@Override
public void persist(long hostId, HashMap<String, HashMap<String, VgpuTypesInfo>> groupDetails) {
    Iterator<Entry<String, HashMap<String, VgpuTypesInfo>>> it1 = groupDetails.entrySet().iterator();
    while (it1.hasNext()) {
        Entry<String, HashMap<String, VgpuTypesInfo>> entry = it1.next();
        HostGpuGroupsVO gpuGroup = _hostGpuGroupsDao.findByHostIdGroupName(hostId, entry.getKey());
        HashMap<String, VgpuTypesInfo> values = entry.getValue();
        Iterator<Entry<String, VgpuTypesInfo>> it2 = values.entrySet().iterator();
        while (it2.hasNext()) {
            Entry<String, VgpuTypesInfo> record = it2.next();
            VgpuTypesInfo details = record.getValue();
            VGPUTypesVO vgpuType = null;
            if ((vgpuType = findByGroupIdVGPUType(gpuGroup.getId(), record.getKey())) == null) {
                persist(new VGPUTypesVO(gpuGroup.getId(), record.getKey(), details.getVideoRam(), details.getMaxHeads(), details.getMaxResolutionX(), details.getMaxResolutionY(), details.getMaxVpuPerGpu(), details.getRemainingCapacity(), details.getMaxCapacity()));
            } else {
                vgpuType.setRemainingCapacity(details.getRemainingCapacity());
                vgpuType.setMaxCapacity(details.getMaxCapacity());
                update(vgpuType.getId(), vgpuType);
            }
        }
    }
}
Also used : Entry(java.util.Map.Entry) VGPUTypesVO(com.cloud.gpu.VGPUTypesVO) HashMap(java.util.HashMap) VgpuTypesInfo(com.cloud.agent.api.VgpuTypesInfo) HostGpuGroupsVO(com.cloud.gpu.HostGpuGroupsVO)

Example 4 with HostGpuGroupsVO

use of com.cloud.gpu.HostGpuGroupsVO in project cosmic by MissionCriticalCloud.

the class VGPUTypesDaoImpl method persist.

@Override
public void persist(final long hostId, final HashMap<String, HashMap<String, VgpuTypesInfo>> groupDetails) {
    final Iterator<Entry<String, HashMap<String, VgpuTypesInfo>>> it1 = groupDetails.entrySet().iterator();
    while (it1.hasNext()) {
        final Entry<String, HashMap<String, VgpuTypesInfo>> entry = it1.next();
        final HostGpuGroupsVO gpuGroup = _hostGpuGroupsDao.findByHostIdGroupName(hostId, entry.getKey());
        final HashMap<String, VgpuTypesInfo> values = entry.getValue();
        final Iterator<Entry<String, VgpuTypesInfo>> it2 = values.entrySet().iterator();
        while (it2.hasNext()) {
            final Entry<String, VgpuTypesInfo> record = it2.next();
            final VgpuTypesInfo details = record.getValue();
            VGPUTypesVO vgpuType = null;
            if ((vgpuType = findByGroupIdVGPUType(gpuGroup.getId(), record.getKey())) == null) {
                persist(new VGPUTypesVO(gpuGroup.getId(), record.getKey(), details.getVideoRam(), details.getMaxHeads(), details.getMaxResolutionX(), details.getMaxResolutionY(), details.getMaxVpuPerGpu(), details.getRemainingCapacity(), details.getMaxCapacity()));
            } else {
                vgpuType.setRemainingCapacity(details.getRemainingCapacity());
                vgpuType.setMaxCapacity(details.getMaxCapacity());
                update(vgpuType.getId(), vgpuType);
            }
        }
    }
}
Also used : Entry(java.util.Map.Entry) VGPUTypesVO(com.cloud.gpu.VGPUTypesVO) HashMap(java.util.HashMap) VgpuTypesInfo(com.cloud.agent.api.VgpuTypesInfo) HostGpuGroupsVO(com.cloud.gpu.HostGpuGroupsVO)

Example 5 with HostGpuGroupsVO

use of com.cloud.gpu.HostGpuGroupsVO in project cosmic by MissionCriticalCloud.

the class HostGpuGroupsDaoImpl method persist.

@Override
public void persist(final long hostId, final List<String> gpuGroups) {
    for (final String groupName : gpuGroups) {
        if (findByHostIdGroupName(hostId, groupName) == null) {
            final HostGpuGroupsVO record = new HostGpuGroupsVO(hostId, groupName);
            persist(record);
        }
    }
}
Also used : HostGpuGroupsVO(com.cloud.gpu.HostGpuGroupsVO)

Aggregations

HostGpuGroupsVO (com.cloud.gpu.HostGpuGroupsVO)8 VGPUTypesVO (com.cloud.gpu.VGPUTypesVO)4 VgpuTypesInfo (com.cloud.agent.api.VgpuTypesInfo)2 HostStats (com.cloud.host.HostStats)2 StorageStats (com.cloud.storage.StorageStats)2 Filter (com.cloud.utils.db.Filter)2 DecimalFormat (java.text.DecimalFormat)2 ArrayList (java.util.ArrayList)2 Date (java.util.Date)2 HashMap (java.util.HashMap)2 Entry (java.util.Map.Entry)2 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 ManagementServerHostVO (com.cloud.cluster.ManagementServerHostVO)1 DedicatedResourceVO (com.cloud.dc.DedicatedResourceVO)1 DomainVO (com.cloud.domain.DomainVO)1 HostVO (com.cloud.host.HostVO)1 AccountVO (com.cloud.user.AccountVO)1