Search in sources :

Example 11 with LoadBalancerState

use of com.vmware.photon.controller.model.resources.LoadBalancerService.LoadBalancerState in project photon-model by vmware.

the class AzureLoadBalancerServiceTest method testCreateLoadBalancerWithNICTarget.

@Test
public void testCreateLoadBalancerWithNICTarget() throws Throwable {
    LoadBalancerState loadBalancerState = provisionLoadBalancer(TaskStage.FINISHED, LoadBalancerTargetType.NIC);
    assertNotNull(loadBalancerState.id);
    assertNotEquals(loadBalancerState.id, this.loadBalancerName);
    if (!this.isMock) {
        // Verify that the load balancer was created.
        LoadBalancerInner lbResponse = this.loadBalancerClient.getByResourceGroup(this.rgName, this.loadBalancerName);
        assertEquals(this.loadBalancerName, lbResponse.name());
        assertEquals(loadBalancerState.id, lbResponse.id());
        // delete the load balancer
        startLoadBalancerProvisioning(LoadBalancerInstanceRequest.InstanceRequestType.DELETE, loadBalancerState, TaskStage.FINISHED);
    }
}
Also used : LoadBalancerInner(com.microsoft.azure.management.network.implementation.LoadBalancerInner) LoadBalancerState(com.vmware.photon.controller.model.resources.LoadBalancerService.LoadBalancerState) AzureBaseTest(com.vmware.photon.controller.model.adapters.azure.base.AzureBaseTest) Test(org.junit.Test)

Example 12 with LoadBalancerState

use of com.vmware.photon.controller.model.resources.LoadBalancerService.LoadBalancerState in project photon-model by vmware.

the class AzureLoadBalancerServiceTest method testDeleteLoadBalancer.

@Test
public void testDeleteLoadBalancer() throws Throwable {
    LoadBalancerState loadBalancerState = provisionLoadBalancer(TaskStage.FINISHED, null);
    startLoadBalancerProvisioning(LoadBalancerInstanceRequest.InstanceRequestType.DELETE, loadBalancerState, TaskStage.FINISHED);
    // verify load balancer state was deleted
    try {
        getLoadBalancerState(this.host, loadBalancerState.documentSelfLink);
    } catch (Throwable e) {
        assertTrue(e instanceof ServiceHost.ServiceNotFoundException);
    }
    if (!this.isMock) {
        // Verify that the load balancer was deleted from Azure.
        LoadBalancerInner sgResponse = this.loadBalancerClient.getByResourceGroup(this.rgName, this.loadBalancerName);
        if (sgResponse != null) {
            fail("Load Balancer should not exist in Azure.");
        }
    }
}
Also used : LoadBalancerInner(com.microsoft.azure.management.network.implementation.LoadBalancerInner) LoadBalancerState(com.vmware.photon.controller.model.resources.LoadBalancerService.LoadBalancerState) AzureBaseTest(com.vmware.photon.controller.model.adapters.azure.base.AzureBaseTest) Test(org.junit.Test)

Example 13 with LoadBalancerState

use of com.vmware.photon.controller.model.resources.LoadBalancerService.LoadBalancerState in project photon-model by vmware.

the class AzureLoadBalancerServiceTest method createLoadBalancerState.

private LoadBalancerState createLoadBalancerState(String name, LoadBalancerTargetType loadBalancerTargetType) throws Throwable {
    LoadBalancerState loadBalancerState = new LoadBalancerState();
    loadBalancerState.id = name;
    loadBalancerState.name = name;
    loadBalancerState.instanceAdapterReference = UriUtils.buildUri(this.host, AzureLoadBalancerService.SELF_LINK);
    loadBalancerState.endpointLink = endpointState.documentSelfLink;
    loadBalancerState.tenantLinks = endpointState.tenantLinks;
    loadBalancerState.regionId = this.regionId;
    loadBalancerState.internetFacing = true;
    loadBalancerState.subnetLinks = Stream.of(subnetState.documentSelfLink).collect(Collectors.toSet());
    RouteConfiguration route = createRouteConfiguration();
    loadBalancerState.routes = Stream.of(route).collect(Collectors.toList());
    loadBalancerState.computeLinks = vmStates.stream().map(cs -> cs.documentSelfLink).collect(Collectors.toSet());
    if (loadBalancerTargetType != null) {
        switch(loadBalancerTargetType) {
            case COMPUTE:
                loadBalancerState.targetLinks = vmStates.stream().map(cs -> cs.documentSelfLink).collect(Collectors.toSet());
                break;
            case NIC:
                loadBalancerState.targetLinks = vmStates.stream().map(cs -> cs.networkInterfaceLinks.stream().findFirst().get()).collect(Collectors.toSet());
                break;
            case BOTH:
                // use boolean to toggle between compute link and NIC link
                AtomicBoolean typeToggle = new AtomicBoolean(true);
                loadBalancerState.targetLinks = vmStates.stream().map(cs -> {
                    typeToggle.set(!typeToggle.get());
                    if (typeToggle.get()) {
                        return cs.documentSelfLink;
                    } else {
                        return cs.networkInterfaceLinks.stream().findFirst().get();
                    }
                }).collect(Collectors.toSet());
                break;
            case INVALID:
                loadBalancerState.targetLinks = new HashSet<>();
                loadBalancerState.targetLinks.add("123");
                break;
            default:
                break;
        }
    }
    if (securityGroupState != null) {
        loadBalancerState.securityGroupLinks = Stream.of(securityGroupState.documentSelfLink).collect(Collectors.toList());
    }
    loadBalancerState.address = "1.1.1.1";
    return postServiceSynchronously(LoadBalancerService.FACTORY_LINK, loadBalancerState, LoadBalancerState.class);
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) RouteConfiguration(com.vmware.photon.controller.model.resources.LoadBalancerDescriptionService.LoadBalancerDescription.RouteConfiguration) LoadBalancerState(com.vmware.photon.controller.model.resources.LoadBalancerService.LoadBalancerState)

Example 14 with LoadBalancerState

use of com.vmware.photon.controller.model.resources.LoadBalancerService.LoadBalancerState in project photon-model by vmware.

the class LoadBalancerServiceTest method buildValidStartState.

public static LoadBalancerState buildValidStartState() {
    LoadBalancerState loadBalancerState = new LoadBalancerState();
    loadBalancerState.descriptionLink = LoadBalancerDescriptionService.FACTORY_LINK + "/lb-desc";
    loadBalancerState.id = UUID.randomUUID().toString();
    loadBalancerState.name = "lbName";
    loadBalancerState.endpointLink = EndpointService.FACTORY_LINK + "/my-endpoint";
    loadBalancerState.computeLinks = new HashSet<>();
    loadBalancerState.computeLinks.add(ComputeService.FACTORY_LINK + "/a-compute");
    loadBalancerState.targetLinks = new HashSet<>();
    loadBalancerState.targetLinks.add(ComputeService.FACTORY_LINK + "/a-compute");
    loadBalancerState.targetLinks.add(NetworkInterfaceService.FACTORY_LINK + "/a-nic");
    loadBalancerState.subnetLinks = new HashSet<>();
    loadBalancerState.subnetLinks.add(SubnetService.FACTORY_LINK + "/a-subnet");
    loadBalancerState.securityGroupLinks = new ArrayList<>();
    loadBalancerState.securityGroupLinks.add(SecurityGroupService.FACTORY_LINK + "/a-sg");
    loadBalancerState.regionId = "regionId";
    loadBalancerState.tenantLinks = new ArrayList<>();
    loadBalancerState.tenantLinks.add("tenant-linkA");
    RouteConfiguration route1 = new RouteConfiguration();
    route1.protocol = Protocol.HTTP.name();
    route1.port = "80";
    route1.instanceProtocol = Protocol.HTTP.name();
    route1.instancePort = "80";
    route1.healthCheckConfiguration = new HealthCheckConfiguration();
    route1.healthCheckConfiguration.protocol = Protocol.HTTP.name();
    route1.healthCheckConfiguration.port = "80";
    RouteConfiguration route2 = new RouteConfiguration();
    route2.protocol = Protocol.HTTPS.name();
    route2.port = "443";
    route2.instanceProtocol = Protocol.HTTP.name();
    route2.instancePort = "443";
    loadBalancerState.routes = Arrays.asList(route1, route2);
    return loadBalancerState;
}
Also used : HealthCheckConfiguration(com.vmware.photon.controller.model.resources.LoadBalancerDescriptionService.LoadBalancerDescription.HealthCheckConfiguration) RouteConfiguration(com.vmware.photon.controller.model.resources.LoadBalancerDescriptionService.LoadBalancerDescription.RouteConfiguration) LoadBalancerState(com.vmware.photon.controller.model.resources.LoadBalancerService.LoadBalancerState)

Aggregations

LoadBalancerState (com.vmware.photon.controller.model.resources.LoadBalancerService.LoadBalancerState)14 Test (org.junit.Test)6 AzureBaseTest (com.vmware.photon.controller.model.adapters.azure.base.AzureBaseTest)5 LoadBalancerInner (com.microsoft.azure.management.network.implementation.LoadBalancerInner)4 RouteConfiguration (com.vmware.photon.controller.model.resources.LoadBalancerDescriptionService.LoadBalancerDescription.RouteConfiguration)4 HealthCheckConfiguration (com.vmware.photon.controller.model.resources.LoadBalancerDescriptionService.LoadBalancerDescription.HealthCheckConfiguration)2 SecurityGroupState (com.vmware.photon.controller.model.resources.SecurityGroupService.SecurityGroupState)2 SecurityGroup (com.amazonaws.services.ec2.model.SecurityGroup)1 ListenerDescription (com.amazonaws.services.elasticloadbalancing.model.ListenerDescription)1 LoadBalancerDescription (com.amazonaws.services.elasticloadbalancing.model.LoadBalancerDescription)1 BaseModelTest (com.vmware.photon.controller.model.helpers.BaseModelTest)1 ComputeDescription (com.vmware.photon.controller.model.resources.ComputeDescriptionService.ComputeDescription)1 ComputeState (com.vmware.photon.controller.model.resources.ComputeService.ComputeState)1 DiskState (com.vmware.photon.controller.model.resources.DiskService.DiskState)1 ImageState (com.vmware.photon.controller.model.resources.ImageService.ImageState)1 NetworkInterfaceState (com.vmware.photon.controller.model.resources.NetworkInterfaceService.NetworkInterfaceState)1 NetworkState (com.vmware.photon.controller.model.resources.NetworkService.NetworkState)1 ResourceGroupState (com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState)1 RouterState (com.vmware.photon.controller.model.resources.RouterService.RouterState)1 StorageDescription (com.vmware.photon.controller.model.resources.StorageDescriptionService.StorageDescription)1