use of com.google.api.services.compute.Compute.RegionBackendServices.Insert 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;
}
Aggregations