package com.sequenceiq.cloudbreak.cloud.gcp.context;
import java.util.List;
import org.springframework.stereotype.Service;
import com.google.api.services.compute.Compute;
import com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext;
import com.sequenceiq.cloudbreak.cloud.context.CloudContext;
import com.sequenceiq.cloudbreak.cloud.gcp.GcpConstants;
import com.sequenceiq.cloudbreak.cloud.gcp.util.GcpStackUtil;
import com.sequenceiq.cloudbreak.cloud.model.CloudCredential;
import com.sequenceiq.cloudbreak.cloud.model.CloudResource;
import com.sequenceiq.cloudbreak.cloud.model.Location;
import com.sequenceiq.cloudbreak.cloud.model.Network;
import com.sequenceiq.cloudbreak.cloud.model.Platform;
import com.sequenceiq.cloudbreak.cloud.model.Variant;
import com.sequenceiq.cloudbreak.cloud.template.ResourceContextBuilder;
@Service
public class GcpContextBuilder implements ResourceContextBuilder<GcpContext> {
public static final int PARALLEL_RESOURCE_REQUEST = 30;
@Override
public GcpContext contextInit(CloudContext context, AuthenticatedContext auth, Network network, List<CloudResource> resources, boolean build) {
CloudCredential credential = auth.getCloudCredential();
String projectId = GcpStackUtil.getProjectId(credential);
Compute compute = GcpStackUtil.buildCompute(credential);
Location location = context.getLocation();
boolean noPublicIp = network != null ? GcpStackUtil.noPublicIp(network) : false;
return new GcpContext(context.getName(), location, projectId, compute, noPublicIp, PARALLEL_RESOURCE_REQUEST, build);
}
@Override
public Platform platform() {
return GcpConstants.GCP_PLATFORM;
}
@Override
public Variant variant() {
return GcpConstants.GCP_VARIANT;
}
}