Search in sources :

Example 76 with DomainRouterVO

use of com.cloud.vm.DomainRouterVO in project cloudstack by apache.

the class LoadBalanceRuleHandlerTest method testFindElbVmWithCapacityWhenThereAreUnusedElbVmsAndOneMatchesThePodId.

@Test
public void testFindElbVmWithCapacityWhenThereAreUnusedElbVmsAndOneMatchesThePodId() throws Exception {
    Long podId = 1L;
    IPAddressVO ipAddrMock = mock(IPAddressVO.class);
    when(ipAddrMock.getVlanId()).thenReturn(podId);
    PodVlanMapVO podVlanMapVoMock = mock(PodVlanMapVO.class);
    when(podVlanMapVoMock.getPodId()).thenReturn(podId);
    when(podVlanMapDao.listPodVlanMapsByVlan(podId)).thenReturn(podVlanMapVoMock);
    DomainRouterVO unusedElbVmThatMatchesPodId = mock(DomainRouterVO.class);
    when(unusedElbVmThatMatchesPodId.getPodIdToDeployIn()).thenReturn(podId);
    List<DomainRouterVO> unusedElbVms = Arrays.asList(new DomainRouterVO[] { unusedElbVmThatMatchesPodId, mock(DomainRouterVO.class) });
    when(this.elasticLbVmMapDao.listUnusedElbVms()).thenReturn(unusedElbVms);
    DomainRouterVO expected = unusedElbVmThatMatchesPodId;
    DomainRouterVO actual = loadBalanceRuleHandler.findElbVmWithCapacity(ipAddrMock);
    assertNotNull(actual);
    assertEquals(expected, actual);
}
Also used : PodVlanMapVO(com.cloud.dc.PodVlanMapVO) IPAddressVO(com.cloud.network.dao.IPAddressVO) DomainRouterVO(com.cloud.vm.DomainRouterVO) Test(org.junit.Test)

Example 77 with DomainRouterVO

use of com.cloud.vm.DomainRouterVO in project cloudstack by apache.

the class LoadBalanceRuleHandlerTest method testStartWhenParamsIsEmpty.

@Test
public void testStartWhenParamsIsEmpty() throws Exception {
    DomainRouterVO elbVmMock = mock(DomainRouterVO.class);
    String uuid = "uuid";
    when(elbVmMock.getUuid()).thenReturn(uuid);
    long id = 1L;
    when(elbVmMock.getId()).thenReturn(id);
    Map<Param, Object> params = new HashMap<Param, Object>();
    loadBalanceRuleHandler.start(elbVmMock, params);
    verify(virtualMachineManagerMock, times(1)).start(uuid, params);
    verify(domainRouterDaoMock, times(1)).findById(id);
}
Also used : HashMap(java.util.HashMap) Param(com.cloud.vm.VirtualMachineProfile.Param) DomainRouterVO(com.cloud.vm.DomainRouterVO) Test(org.junit.Test)

Example 78 with DomainRouterVO

use of com.cloud.vm.DomainRouterVO in project cloudstack by apache.

the class LoadBalanceRuleHandler method deployLoadBalancerVM.

private DomainRouterVO deployLoadBalancerVM(final Long networkId, final IPAddressVO ipAddr) {
    final NetworkVO network = _networkDao.findById(networkId);
    final DataCenter dc = _dcDao.findById(network.getDataCenterId());
    final Long podId = getPodIdForDirectIp(ipAddr);
    final Pod pod = podId == null ? null : _podDao.findById(podId);
    final Map<VirtualMachineProfile.Param, Object> params = new HashMap<VirtualMachineProfile.Param, Object>(1);
    params.put(VirtualMachineProfile.Param.ReProgramGuestNetworks, true);
    final Account owner = _accountService.getActiveAccountByName("system", new Long(1));
    final DeployDestination dest = new DeployDestination(dc, pod, null, null);
    s_logger.debug("About to deploy ELB vm ");
    try {
        final DomainRouterVO elbVm = deployELBVm(network, dest, owner, params);
        if (elbVm == null) {
            throw new InvalidParameterValueException("Could not deploy or find existing ELB VM");
        }
        s_logger.debug("Deployed ELB  vm = " + elbVm);
        return elbVm;
    } catch (final Throwable t) {
        s_logger.warn("Error while deploying ELB VM:  ", t);
        return null;
    }
}
Also used : Account(com.cloud.user.Account) NetworkVO(com.cloud.network.dao.NetworkVO) Pod(com.cloud.dc.Pod) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) DataCenter(com.cloud.dc.DataCenter) InvalidParameterValueException(com.cloud.exception.InvalidParameterValueException) DeployDestination(com.cloud.deploy.DeployDestination) Param(com.cloud.vm.VirtualMachineProfile.Param) VirtualMachineProfile(com.cloud.vm.VirtualMachineProfile) DomainRouterVO(com.cloud.vm.DomainRouterVO)

Example 79 with DomainRouterVO

use of com.cloud.vm.DomainRouterVO in project cloudstack by apache.

the class ElasticLoadBalancerManagerImpl method findElbVmForLb.

protected DomainRouterVO findElbVmForLb(LoadBalancingRule lb) {
    //TODO: use a table to lookup
    Network ntwk = _networkModel.getNetwork(lb.getNetworkId());
    long sourceIpId = _networkModel.getPublicIpAddress(lb.getSourceIp().addr(), ntwk.getDataCenterId()).getId();
    ElasticLbVmMapVO map = _elbVmMapDao.findOneByIp(sourceIpId);
    if (map == null) {
        return null;
    }
    DomainRouterVO elbVm = _routerDao.findById(map.getElbVmId());
    return elbVm;
}
Also used : ElasticLbVmMapVO(com.cloud.network.ElasticLbVmMapVO) Network(com.cloud.network.Network) DomainRouterVO(com.cloud.vm.DomainRouterVO)

Example 80 with DomainRouterVO

use of com.cloud.vm.DomainRouterVO in project cloudstack by apache.

the class ElasticLoadBalancerManagerImpl method finalizeDeployment.

@Override
public boolean finalizeDeployment(Commands cmds, VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) throws ResourceUnavailableException {
    DomainRouterVO elbVm = _routerDao.findById(profile.getVirtualMachine().getId());
    List<NicProfile> nics = profile.getNics();
    for (NicProfile nic : nics) {
        if (nic.getTrafficType() == TrafficType.Public) {
            elbVm.setPublicIpAddress(nic.getIPv4Address());
            elbVm.setPublicNetmask(nic.getIPv4Netmask());
            elbVm.setPublicMacAddress(nic.getMacAddress());
        } else if (nic.getTrafficType() == TrafficType.Control) {
            elbVm.setPrivateIpAddress(nic.getIPv4Address());
            elbVm.setPrivateMacAddress(nic.getMacAddress());
        }
    }
    _routerDao.update(elbVm.getId(), elbVm);
    finalizeCommandsOnStart(cmds, profile);
    return true;
}
Also used : NicProfile(com.cloud.vm.NicProfile) DomainRouterVO(com.cloud.vm.DomainRouterVO)

Aggregations

DomainRouterVO (com.cloud.vm.DomainRouterVO)148 ArrayList (java.util.ArrayList)39 DataCenterVO (com.cloud.dc.DataCenterVO)33 ResourceUnavailableException (com.cloud.exception.ResourceUnavailableException)33 NetworkTopology (org.apache.cloudstack.network.topology.NetworkTopology)27 Test (org.junit.Test)26 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)24 Network (com.cloud.network.Network)20 NicProfile (com.cloud.vm.NicProfile)17 Account (com.cloud.user.Account)12 NetworkVO (com.cloud.network.dao.NetworkVO)11 Answer (com.cloud.agent.api.Answer)10 ConcurrentOperationException (com.cloud.exception.ConcurrentOperationException)10 InvalidParameterValueException (com.cloud.exception.InvalidParameterValueException)10 VirtualMachineProfile (com.cloud.vm.VirtualMachineProfile)10 UserVmVO (com.cloud.vm.UserVmVO)9 Vpc (com.cloud.network.vpc.Vpc)8 ServiceOfferingVO (com.cloud.service.ServiceOfferingVO)8 UserVO (com.cloud.user.UserVO)8 HashMap (java.util.HashMap)8