Search in sources :

Example 61 with Host

use of com.cloud.host.Host in project cloudstack by apache.

the class ApiDBUtils method findJobInstanceUuid.

public static String findJobInstanceUuid(AsyncJob job) {
    if (job == null) {
        return null;
    }
    String jobInstanceId = null;
    ApiCommandJobType jobInstanceType = EnumUtils.fromString(ApiCommandJobType.class, job.getInstanceType(), ApiCommandJobType.None);
    if (job.getInstanceId() == null) {
        // when assert is hit, implement 'getInstanceId' of BaseAsyncCmd and return appropriate instance id
        assert (false);
        return null;
    }
    if (jobInstanceType == ApiCommandJobType.Volume) {
        VolumeVO volume = ApiDBUtils.findVolumeById(job.getInstanceId());
        if (volume != null) {
            jobInstanceId = volume.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.Template || jobInstanceType == ApiCommandJobType.Iso) {
        VMTemplateVO template = ApiDBUtils.findTemplateById(job.getInstanceId());
        if (template != null) {
            jobInstanceId = template.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.VirtualMachine || jobInstanceType == ApiCommandJobType.ConsoleProxy || jobInstanceType == ApiCommandJobType.SystemVm || jobInstanceType == ApiCommandJobType.DomainRouter) {
        VMInstanceVO vm = ApiDBUtils.findVMInstanceById(job.getInstanceId());
        if (vm != null) {
            jobInstanceId = vm.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.Snapshot) {
        Snapshot snapshot = ApiDBUtils.findSnapshotById(job.getInstanceId());
        if (snapshot != null) {
            jobInstanceId = snapshot.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.Host) {
        Host host = ApiDBUtils.findHostById(job.getInstanceId());
        if (host != null) {
            jobInstanceId = host.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.StoragePool) {
        StoragePoolVO spool = ApiDBUtils.findStoragePoolById(job.getInstanceId());
        if (spool != null) {
            jobInstanceId = spool.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.IpAddress) {
        IPAddressVO ip = ApiDBUtils.findIpAddressById(job.getInstanceId());
        if (ip != null) {
            jobInstanceId = ip.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.SecurityGroup) {
        SecurityGroup sg = ApiDBUtils.findSecurityGroupById(job.getInstanceId());
        if (sg != null) {
            jobInstanceId = sg.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.PhysicalNetwork) {
        PhysicalNetworkVO pnet = ApiDBUtils.findPhysicalNetworkById(job.getInstanceId());
        if (pnet != null) {
            jobInstanceId = pnet.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.TrafficType) {
        PhysicalNetworkTrafficTypeVO trafficType = ApiDBUtils.findPhysicalNetworkTrafficTypeById(job.getInstanceId());
        if (trafficType != null) {
            jobInstanceId = trafficType.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.PhysicalNetworkServiceProvider) {
        PhysicalNetworkServiceProvider sp = ApiDBUtils.findPhysicalNetworkServiceProviderById(job.getInstanceId());
        if (sp != null) {
            jobInstanceId = sp.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.FirewallRule) {
        FirewallRuleVO fw = ApiDBUtils.findFirewallRuleById(job.getInstanceId());
        if (fw != null) {
            jobInstanceId = fw.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.Account) {
        Account acct = ApiDBUtils.findAccountById(job.getInstanceId());
        if (acct != null) {
            jobInstanceId = acct.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.User) {
        User usr = ApiDBUtils.findUserById(job.getInstanceId());
        if (usr != null) {
            jobInstanceId = usr.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.StaticRoute) {
        StaticRouteVO route = ApiDBUtils.findStaticRouteById(job.getInstanceId());
        if (route != null) {
            jobInstanceId = route.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.PrivateGateway) {
        VpcGatewayVO gateway = ApiDBUtils.findVpcGatewayById(job.getInstanceId());
        if (gateway != null) {
            jobInstanceId = gateway.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.Counter) {
        CounterVO counter = ApiDBUtils.getCounter(job.getInstanceId());
        if (counter != null) {
            jobInstanceId = counter.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.Condition) {
        ConditionVO condition = ApiDBUtils.findConditionById(job.getInstanceId());
        if (condition != null) {
            jobInstanceId = condition.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.AutoScalePolicy) {
        AutoScalePolicyVO policy = ApiDBUtils.findAutoScalePolicyById(job.getInstanceId());
        if (policy != null) {
            jobInstanceId = policy.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.AutoScaleVmProfile) {
        AutoScaleVmProfileVO profile = ApiDBUtils.findAutoScaleVmProfileById(job.getInstanceId());
        if (profile != null) {
            jobInstanceId = profile.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.AutoScaleVmGroup) {
        AutoScaleVmGroupVO group = ApiDBUtils.findAutoScaleVmGroupById(job.getInstanceId());
        if (group != null) {
            jobInstanceId = group.getUuid();
        }
    } else if (jobInstanceType == ApiCommandJobType.Network) {
        NetworkVO networkVO = ApiDBUtils.findNetworkById(job.getInstanceId());
        if (networkVO != null) {
            jobInstanceId = networkVO.getUuid();
        }
    } else if (jobInstanceType != ApiCommandJobType.None) {
        // entity table mapping
        assert (false);
    }
    return jobInstanceId;
}
Also used : ProjectAccount(com.cloud.projects.ProjectAccount) UserAccount(com.cloud.user.UserAccount) Account(com.cloud.user.Account) AutoScalePolicyVO(com.cloud.network.as.AutoScalePolicyVO) VpcGatewayVO(com.cloud.network.vpc.VpcGatewayVO) PhysicalNetworkVO(com.cloud.network.dao.PhysicalNetworkVO) NetworkVO(com.cloud.network.dao.NetworkVO) ApiCommandJobType(org.apache.cloudstack.api.ApiCommandJobType) User(com.cloud.user.User) VMTemplateVO(com.cloud.storage.VMTemplateVO) VMInstanceVO(com.cloud.vm.VMInstanceVO) Host(com.cloud.host.Host) PhysicalNetworkTrafficTypeVO(com.cloud.network.dao.PhysicalNetworkTrafficTypeVO) PhysicalNetworkServiceProvider(com.cloud.network.PhysicalNetworkServiceProvider) StaticRouteVO(com.cloud.network.vpc.StaticRouteVO) SecurityGroup(com.cloud.network.security.SecurityGroup) FirewallRuleVO(com.cloud.network.rules.FirewallRuleVO) VMSnapshot(com.cloud.vm.snapshot.VMSnapshot) Snapshot(com.cloud.storage.Snapshot) AutoScaleVmProfileVO(com.cloud.network.as.AutoScaleVmProfileVO) AutoScaleVmGroupVO(com.cloud.network.as.AutoScaleVmGroupVO) VolumeVO(com.cloud.storage.VolumeVO) StoragePoolVO(org.apache.cloudstack.storage.datastore.db.StoragePoolVO) PhysicalNetworkVO(com.cloud.network.dao.PhysicalNetworkVO) ConditionVO(com.cloud.network.as.ConditionVO) IPAddressVO(com.cloud.network.dao.IPAddressVO) CounterVO(com.cloud.network.as.CounterVO)

Example 62 with Host

use of com.cloud.host.Host in project cloudstack by apache.

the class FirstFitAllocator method reorderHostsByCapacity.

// Reorder hosts in the decreasing order of free capacity.
private List<? extends Host> reorderHostsByCapacity(DeploymentPlan plan, List<? extends Host> hosts) {
    Long clusterId = plan.getClusterId();
    //Get capacity by which we should reorder
    String capacityTypeToOrder = _configDao.getValue(Config.HostCapacityTypeToOrderClusters.key());
    short capacityType = CapacityVO.CAPACITY_TYPE_CPU;
    if ("RAM".equalsIgnoreCase(capacityTypeToOrder)) {
        capacityType = CapacityVO.CAPACITY_TYPE_MEMORY;
    }
    List<Long> hostIdsByFreeCapacity = _capacityDao.orderHostsByFreeCapacity(clusterId, capacityType);
    if (s_logger.isDebugEnabled()) {
        s_logger.debug("List of hosts in descending order of free capacity in the cluster: " + hostIdsByFreeCapacity);
    }
    //now filter the given list of Hosts by this ordered list
    Map<Long, Host> hostMap = new HashMap<Long, Host>();
    for (Host host : hosts) {
        hostMap.put(host.getId(), host);
    }
    List<Long> matchingHostIds = new ArrayList<Long>(hostMap.keySet());
    hostIdsByFreeCapacity.retainAll(matchingHostIds);
    List<Host> reorderedHosts = new ArrayList<Host>();
    for (Long id : hostIdsByFreeCapacity) {
        reorderedHosts.add(hostMap.get(id));
    }
    return reorderedHosts;
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Host(com.cloud.host.Host)

Example 63 with Host

use of com.cloud.host.Host in project cloudstack by apache.

the class FirstFitAllocator method prioritizeHosts.

protected List<? extends Host> prioritizeHosts(VMTemplateVO template, ServiceOffering offering, List<? extends Host> hosts) {
    if (template == null) {
        return hosts;
    }
    // Determine the guest OS category of the template
    String templateGuestOSCategory = getTemplateGuestOSCategory(template);
    List<Host> prioritizedHosts = new ArrayList<Host>();
    List<Host> noHvmHosts = new ArrayList<Host>();
    // If a template requires HVM and a host doesn't support HVM, remove it from consideration
    List<Host> hostsToCheck = new ArrayList<Host>();
    if (template.isRequiresHvm()) {
        for (Host host : hosts) {
            if (hostSupportsHVM(host)) {
                hostsToCheck.add(host);
            } else {
                noHvmHosts.add(host);
            }
        }
    } else {
        hostsToCheck.addAll(hosts);
    }
    if (s_logger.isDebugEnabled()) {
        if (noHvmHosts.size() > 0) {
            s_logger.debug("Not considering hosts: " + noHvmHosts + "  to deploy template: " + template + " as they are not HVM enabled");
        }
    }
    // If a host is tagged with the same guest OS category as the template, move it to a high priority list
    // If a host is tagged with a different guest OS category than the template, move it to a low priority list
    List<Host> highPriorityHosts = new ArrayList<Host>();
    List<Host> lowPriorityHosts = new ArrayList<Host>();
    for (Host host : hostsToCheck) {
        String hostGuestOSCategory = getHostGuestOSCategory(host);
        if (hostGuestOSCategory == null) {
            continue;
        } else if (templateGuestOSCategory.equals(hostGuestOSCategory)) {
            highPriorityHosts.add(host);
        } else {
            lowPriorityHosts.add(host);
        }
    }
    hostsToCheck.removeAll(highPriorityHosts);
    hostsToCheck.removeAll(lowPriorityHosts);
    // Prioritize the remaining hosts by HVM capability
    for (Host host : hostsToCheck) {
        if (!template.isRequiresHvm() && !hostSupportsHVM(host)) {
            // Host and template both do not support hvm, put it as first consideration
            prioritizedHosts.add(0, host);
        } else {
            // Template doesn't require hvm, but the machine supports it, make it last for consideration
            prioritizedHosts.add(host);
        }
    }
    // Merge the lists
    prioritizedHosts.addAll(0, highPriorityHosts);
    prioritizedHosts.addAll(lowPriorityHosts);
    // if service offering is not GPU enabled then move all the GPU enabled hosts to the end of priority list.
    if (_serviceOfferingDetailsDao.findDetail(offering.getId(), GPU.Keys.vgpuType.toString()) == null) {
        List<Host> gpuEnabledHosts = new ArrayList<Host>();
        // Check for GPU enabled hosts.
        for (Host host : prioritizedHosts) {
            if (_resourceMgr.isHostGpuEnabled(host.getId())) {
                gpuEnabledHosts.add(host);
            }
        }
        // Move GPU enabled hosts to the end of list
        if (!gpuEnabledHosts.isEmpty()) {
            prioritizedHosts.removeAll(gpuEnabledHosts);
            prioritizedHosts.addAll(gpuEnabledHosts);
        }
    }
    return prioritizedHosts;
}
Also used : ArrayList(java.util.ArrayList) Host(com.cloud.host.Host)

Example 64 with Host

use of com.cloud.host.Host in project cloudstack by apache.

the class NetscalerElement method createNetscalerLoadBalancerResponse.

@Override
public NetscalerLoadBalancerResponse createNetscalerLoadBalancerResponse(ExternalLoadBalancerDeviceVO lbDeviceVO) {
    NetscalerLoadBalancerResponse response = new NetscalerLoadBalancerResponse();
    Host lbHost = _hostDao.findById(lbDeviceVO.getHostId());
    Map<String, String> lbDetails = _detailsDao.findDetails(lbDeviceVO.getHostId());
    response.setId(lbDeviceVO.getUuid());
    response.setIpAddress(lbHost.getPrivateIpAddress());
    PhysicalNetwork pnw = ApiDBUtils.findPhysicalNetworkById(lbDeviceVO.getPhysicalNetworkId());
    if (pnw != null) {
        response.setPhysicalNetworkId(pnw.getUuid());
    }
    response.setPublicInterface(lbDetails.get("publicInterface"));
    response.setPrivateInterface(lbDetails.get("privateInterface"));
    response.setDeviceName(lbDeviceVO.getDeviceName());
    if (lbDeviceVO.getCapacity() == 0) {
        long defaultLbCapacity = NumbersUtil.parseLong(_configDao.getValue(Config.DefaultExternalLoadBalancerCapacity.key()), 50);
        response.setDeviceCapacity(defaultLbCapacity);
    } else {
        response.setDeviceCapacity(lbDeviceVO.getCapacity());
    }
    response.setDedicatedLoadBalancer(lbDeviceVO.getIsDedicatedDevice());
    response.setProvider(lbDeviceVO.getProviderName());
    response.setDeviceState(lbDeviceVO.getState().name());
    response.setObjectName("netscalerloadbalancer");
    response.setGslbProvider(lbDeviceVO.getGslbProvider());
    response.setExclusiveGslbProvider(lbDeviceVO.getExclusiveGslbProvider());
    response.setGslbSitePublicIp(lbDeviceVO.getGslbSitePublicIP());
    response.setGslbSitePrivateIp(lbDeviceVO.getGslbSitePrivateIP());
    List<Long> associatedPods = new ArrayList<Long>();
    List<NetScalerPodVO> currentPodVOs = _netscalerPodDao.listByNetScalerDeviceId(lbDeviceVO.getId());
    if (currentPodVOs != null && currentPodVOs.size() > 0) {
        for (NetScalerPodVO nsPodVo : currentPodVOs) {
            associatedPods.add(nsPodVo.getPodId());
        }
    }
    response.setAssociatedPods(associatedPods);
    return response;
}
Also used : PhysicalNetwork(com.cloud.network.PhysicalNetwork) NetscalerLoadBalancerResponse(com.cloud.api.response.NetscalerLoadBalancerResponse) ArrayList(java.util.ArrayList) Host(com.cloud.host.Host) NetScalerPodVO(com.cloud.network.NetScalerPodVO)

Example 65 with Host

use of com.cloud.host.Host in project cloudstack by apache.

the class ApiResponseHelper method createSystemVmResponse.

@Override
public SystemVmResponse createSystemVmResponse(VirtualMachine vm) {
    SystemVmResponse vmResponse = new SystemVmResponse();
    if (vm.getType() == Type.SecondaryStorageVm || vm.getType() == Type.ConsoleProxy || vm.getType() == Type.DomainRouter) {
        // SystemVm vm = (SystemVm) systemVM;
        vmResponse.setId(vm.getUuid());
        // vmResponse.setObjectId(vm.getId());
        vmResponse.setSystemVmType(vm.getType().toString().toLowerCase());
        vmResponse.setName(vm.getHostName());
        if (vm.getPodIdToDeployIn() != null) {
            HostPodVO pod = ApiDBUtils.findPodById(vm.getPodIdToDeployIn());
            if (pod != null) {
                vmResponse.setPodId(pod.getUuid());
            }
        }
        VMTemplateVO template = ApiDBUtils.findTemplateById(vm.getTemplateId());
        if (template != null) {
            vmResponse.setTemplateId(template.getUuid());
        }
        vmResponse.setCreated(vm.getCreated());
        if (vm.getHostId() != null) {
            Host host = ApiDBUtils.findHostById(vm.getHostId());
            if (host != null) {
                vmResponse.setHostId(host.getUuid());
                vmResponse.setHostName(host.getName());
                vmResponse.setHypervisor(host.getHypervisorType().toString());
            }
        }
        if (vm.getState() != null) {
            vmResponse.setState(vm.getState().toString());
        }
        // for console proxies, add the active sessions
        if (vm.getType() == Type.ConsoleProxy) {
            ConsoleProxyVO proxy = ApiDBUtils.findConsoleProxy(vm.getId());
            // proxy can be already destroyed
            if (proxy != null) {
                vmResponse.setActiveViewerSessions(proxy.getActiveSession());
            }
        }
        DataCenter zone = ApiDBUtils.findZoneById(vm.getDataCenterId());
        if (zone != null) {
            vmResponse.setZoneId(zone.getUuid());
            vmResponse.setZoneName(zone.getName());
            vmResponse.setDns1(zone.getDns1());
            vmResponse.setDns2(zone.getDns2());
        }
        List<NicProfile> nicProfiles = ApiDBUtils.getNics(vm);
        for (NicProfile singleNicProfile : nicProfiles) {
            Network network = ApiDBUtils.findNetworkById(singleNicProfile.getNetworkId());
            if (network != null) {
                if (network.getTrafficType() == TrafficType.Management) {
                    vmResponse.setPrivateIp(singleNicProfile.getIPv4Address());
                    vmResponse.setPrivateMacAddress(singleNicProfile.getMacAddress());
                    vmResponse.setPrivateNetmask(singleNicProfile.getIPv4Netmask());
                } else if (network.getTrafficType() == TrafficType.Control) {
                    vmResponse.setLinkLocalIp(singleNicProfile.getIPv4Address());
                    vmResponse.setLinkLocalMacAddress(singleNicProfile.getMacAddress());
                    vmResponse.setLinkLocalNetmask(singleNicProfile.getIPv4Netmask());
                } else if (network.getTrafficType() == TrafficType.Public) {
                    vmResponse.setPublicIp(singleNicProfile.getIPv4Address());
                    vmResponse.setPublicMacAddress(singleNicProfile.getMacAddress());
                    vmResponse.setPublicNetmask(singleNicProfile.getIPv4Netmask());
                    vmResponse.setGateway(singleNicProfile.getIPv4Gateway());
                } else if (network.getTrafficType() == TrafficType.Guest) {
                    /*
                          * In basic zone, public ip has TrafficType.Guest in case EIP service is not enabled.
                          * When EIP service is enabled in the basic zone, system VM by default get the public
                          * IP allocated for EIP. So return the guest/public IP accordingly.
                          * */
                    NetworkOffering networkOffering = ApiDBUtils.findNetworkOfferingById(network.getNetworkOfferingId());
                    if (networkOffering.getElasticIp()) {
                        IpAddress ip = ApiDBUtils.findIpByAssociatedVmId(vm.getId());
                        if (ip != null) {
                            Vlan vlan = ApiDBUtils.findVlanById(ip.getVlanId());
                            vmResponse.setPublicIp(ip.getAddress().addr());
                            vmResponse.setPublicNetmask(vlan.getVlanNetmask());
                            vmResponse.setGateway(vlan.getVlanGateway());
                        }
                    } else {
                        vmResponse.setPublicIp(singleNicProfile.getIPv4Address());
                        vmResponse.setPublicMacAddress(singleNicProfile.getMacAddress());
                        vmResponse.setPublicNetmask(singleNicProfile.getIPv4Netmask());
                        vmResponse.setGateway(singleNicProfile.getIPv4Gateway());
                    }
                }
            }
        }
    }
    vmResponse.setObjectName("systemvm");
    return vmResponse;
}
Also used : SystemVmResponse(org.apache.cloudstack.api.response.SystemVmResponse) DataCenter(com.cloud.dc.DataCenter) NetworkOffering(com.cloud.offering.NetworkOffering) Network(com.cloud.network.Network) PhysicalNetwork(com.cloud.network.PhysicalNetwork) VMTemplateVO(com.cloud.storage.VMTemplateVO) Host(com.cloud.host.Host) ConsoleProxyVO(com.cloud.vm.ConsoleProxyVO) IpAddress(com.cloud.network.IpAddress) Vlan(com.cloud.dc.Vlan) GuestVlan(com.cloud.network.GuestVlan) NicProfile(com.cloud.vm.NicProfile) HostPodVO(com.cloud.dc.HostPodVO)

Aggregations

Host (com.cloud.host.Host)112 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)37 InvalidParameterValueException (com.cloud.exception.InvalidParameterValueException)31 ArrayList (java.util.ArrayList)31 HashMap (java.util.HashMap)29 ServerApiException (org.apache.cloudstack.api.ServerApiException)20 ConfigurationException (javax.naming.ConfigurationException)17 ResourceUnavailableException (com.cloud.exception.ResourceUnavailableException)16 PhysicalNetworkVO (com.cloud.network.dao.PhysicalNetworkVO)16 DB (com.cloud.utils.db.DB)14 Map (java.util.Map)14 ConcurrentOperationException (com.cloud.exception.ConcurrentOperationException)13 PhysicalNetworkServiceProviderVO (com.cloud.network.dao.PhysicalNetworkServiceProviderVO)13 Answer (com.cloud.agent.api.Answer)11 TransactionStatus (com.cloud.utils.db.TransactionStatus)11 DataCenter (com.cloud.dc.DataCenter)10 AgentUnavailableException (com.cloud.exception.AgentUnavailableException)10 OperationTimedoutException (com.cloud.exception.OperationTimedoutException)10 HostVO (com.cloud.host.HostVO)9 StoragePool (com.cloud.storage.StoragePool)9