Search in sources :

Example 1 with Backend

use of com.google.api.services.compute.model.Backend in project cloudbreak by hortonworks.

the class GCPLoadBalancerMetadataCollectorTest method createBackendService.

private BackendService createBackendService() {
    BackendService backendService = new BackendService();
    backendService.setName(BACKEND_SERVICE_NAME);
    Backend backend = new Backend();
    backend.setGroup(INSTANCE_GROUP_NAME);
    backendService.setBackends(List.of(backend));
    return backendService;
}
Also used : BackendService(com.google.api.services.compute.model.BackendService) Backend(com.google.api.services.compute.model.Backend)

Example 2 with Backend

use of com.google.api.services.compute.model.Backend in project cloudbreak by hortonworks.

the class GcpBackendServiceResourceBuilder method build.

@Override
public List<CloudResource> build(GcpContext context, AuthenticatedContext auth, List<CloudResource> buildableResources, CloudLoadBalancer loadBalancer, CloudStack cloudStack) throws Exception {
    List<CloudResource> results = new ArrayList<>();
    String projectId = context.getProjectId();
    String zone = context.getLocation().getAvailabilityZone().value();
    List<CloudResource> healthResources = filterResourcesByType(context.getLoadBalancerResources(loadBalancer.getType()), ResourceType.GCP_HEALTH_CHECK);
    for (CloudResource buildableResource : buildableResources) {
        LOGGER.info("Building backend service {} for {}", buildableResource.getName(), projectId);
        Optional<String> name = healthResources.stream().filter(healthResource -> buildableResource.getParameter(HCPORT, Integer.class).equals(healthResource.getParameter(HCPORT, Integer.class))).findFirst().map(CloudResource::getName);
        if (!name.isPresent()) {
            LOGGER.info("Health check resource not found for port {}", buildableResource.getParameter(HCPORT, Integer.class));
        }
        BackendService backendService = new BackendService();
        backendService.setHealthChecks(Collections.singletonList(String.format(GCP_HEALTH_CHECK_FORMAT, projectId, context.getLocation().getRegion().getRegionName(), name.get())));
        List<Backend> backends = new ArrayList<>();
        Map<String, Object> portMap = buildableResource.getParameters();
        Integer hcPort = buildableResource.getParameter(HCPORT, Integer.class);
        Set<Group> groups = new HashSet<>();
        if (portMap.containsKey(TRAFFICPORTS)) {
            for (Integer trafficPort : (List<Integer>) portMap.get(TRAFFICPORTS)) {
                TargetGroupPortPair targetGroupPortPair = new TargetGroupPortPair(trafficPort, hcPort);
                groups.addAll(loadBalancer.getPortToTargetGroupMapping().get(targetGroupPortPair));
            }
        } else {
            Integer trafficPort = buildableResource.getParameter(TRAFFICPORT, Integer.class);
            TargetGroupPortPair targetGroupPortPair = new TargetGroupPortPair(trafficPort, hcPort);
            groups.addAll(loadBalancer.getPortToTargetGroupMapping().get(targetGroupPortPair));
        }
        makeBackendForTargetGroup(context, loadBalancer, projectId, zone, groups, backends);
        backendService.setBackends(backends);
        backendService.setName(buildableResource.getName());
        backendService.setLoadBalancingScheme(gcpLoadBalancerTypeConverter.getScheme(loadBalancer).getGcpType());
        backendService.setProtocol("TCP");
        String regionName = context.getLocation().getRegion().getRegionName();
        Insert insert = context.getCompute().regionBackendServices().insert(projectId, regionName, backendService);
        results.add(doOperationalRequest(buildableResource, insert));
    }
    return results;
}
Also used : Group(com.sequenceiq.cloudbreak.cloud.model.Group) ArrayList(java.util.ArrayList) Insert(com.google.api.services.compute.Compute.RegionBackendServices.Insert) BackendService(com.google.api.services.compute.model.BackendService) Backend(com.google.api.services.compute.model.Backend) ArrayList(java.util.ArrayList) List(java.util.List) CloudResource(com.sequenceiq.cloudbreak.cloud.model.CloudResource) TargetGroupPortPair(com.sequenceiq.cloudbreak.cloud.model.TargetGroupPortPair) HashSet(java.util.HashSet)

Example 3 with Backend

use of com.google.api.services.compute.model.Backend in project cloudbreak by hortonworks.

the class GcpBackendServiceResourceBuilder method makeBackendForTargetGroup.

private void makeBackendForTargetGroup(GcpContext context, CloudLoadBalancer loadBalancer, String projectId, String zone, Set<Group> groups, List<Backend> backends) {
    for (Group group : groups) {
        Backend backend = new Backend();
        String groupname = getResourceNameService().resourceName(ResourceType.GCP_INSTANCE_GROUP, context.getName(), group.getName());
        backend.setGroup(String.format(GCP_INSTANCEGROUP_REFERENCE_FORMAT, projectId, zone, groupname));
        backend.setBalancingMode(CONNECTION);
        backends.add(backend);
    }
}
Also used : Group(com.sequenceiq.cloudbreak.cloud.model.Group) Backend(com.google.api.services.compute.model.Backend)

Aggregations

Backend (com.google.api.services.compute.model.Backend)3 BackendService (com.google.api.services.compute.model.BackendService)2 Group (com.sequenceiq.cloudbreak.cloud.model.Group)2 Insert (com.google.api.services.compute.Compute.RegionBackendServices.Insert)1 CloudResource (com.sequenceiq.cloudbreak.cloud.model.CloudResource)1 TargetGroupPortPair (com.sequenceiq.cloudbreak.cloud.model.TargetGroupPortPair)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 List (java.util.List)1