Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.spotinst.sdkjava.enums.gcp;

import java.util.logging.Logger;

public enum GcpElastigroupHealthCheckTypeEnum {

K8S_NODE("K8S_NODE"),
BACKEND_SERVICE("BACKEND_SERVICE");

private String name;

GcpElastigroupHealthCheckTypeEnum(String name) {
this.name = name;
}

private static final Logger LOGGER = LoggerFactory.getLogger(GcpElastigroupHealthCheckTypeEnum.class);

public static GcpElastigroupHealthCheckTypeEnum fromName(String name) {
GcpElastigroupHealthCheckTypeEnum retVal = null;

for (GcpElastigroupHealthCheckTypeEnum instanceStateEnum : GcpElastigroupHealthCheckTypeEnum.values()) {
if (StringUtils.equalsIgnoreCase(name, instanceStateEnum.name)) {
retVal = instanceStateEnum;
break;
}
}

if (retVal == null) {
LOGGER.error(String.format("Tried to create Health Check Type Enum for: %s, but we don't support such type",
name));
}
return retVal;
}

public String getName() {
return name;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.spotinst.sdkjava.enums.gcp;

import java.util.logging.Logger;

public enum GcpElastigroupProvisioningModelEnum {

PREEMPTIBLE("PREEMPTIBLE"),
SPOT("SPOT");

private String name;

GcpElastigroupProvisioningModelEnum(String name) {
this.name = name;
}

private static final Logger LOGGER = LoggerFactory.getLogger(GcpElastigroupProvisioningModelEnum.class);

public static GcpElastigroupProvisioningModelEnum fromName(String name) {
GcpElastigroupProvisioningModelEnum retVal = null;

for (GcpElastigroupProvisioningModelEnum provisioningModelEnum : GcpElastigroupProvisioningModelEnum.values()) {
if (StringUtils.equalsIgnoreCase(name, provisioningModelEnum.name)) {
retVal = provisioningModelEnum;
break;
}
}

if (retVal == null) {
LOGGER.error(String.format("Tried to create Health Check Type Enum for: %s, but we don't support such type",
name));
}
return retVal;
}

public String getName() {
return name;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.spotinst.sdkjava.SpotinstClient;
import com.spotinst.sdkjava.enums.GroupActiveInstanceStatusEnumGcp;
import com.spotinst.sdkjava.enums.PerformAtEnumGcp;
import com.spotinst.sdkjava.enums.gcp.GcpElastigroupHealthCheckTypeEnum;
import com.spotinst.sdkjava.model.*;
import com.spotinst.sdkjava.model.bl.elastigroup.gcp.*;
import com.spotinst.sdkjava.model.requests.elastigroup.gcp.ElastigroupCreationRequestGcp;
Expand Down Expand Up @@ -119,6 +120,11 @@ private static String createElastigroup(SpotinstElastigroupClientGcp client) {
List<ElastigroupSubnetsGcp> subnetsGcpList = new ArrayList<>();
subnetsGcpList.add(subnetsGcp);

//build health
ElastigroupHealthGcp.Builder elastigroupHealthBuilder = ElastigroupHealthGcp.Builder.get();
ElastigroupHealthGcp healthGcp = elastigroupHealthBuilder.setHealthCheckType(GcpElastigroupHealthCheckTypeEnum.BACKEND_SERVICE)
.setAutoHealing(false).setGracePeriod(300).setUnhealthyDuration(160).build();

//build launch specification
ElastigroupLaunchSpecificationGcp.Builder ElastigroupLaunchSpecificationGcpBuilder =
ElastigroupLaunchSpecificationGcp.Builder.get();
Expand All @@ -135,7 +141,8 @@ private static String createElastigroup(SpotinstElastigroupClientGcp client) {

ElastigroupComputeGcp computeConfigurationGcp = ElastigroupComputeConfigurationGcpBuilder
.setAvailabilityZones(AvailabilityZonesList).setInstanceTypes(instanceTypesGcp)
.setLaunchSpecification(launchSpecificationGcp).setSubnets(subnetsGcpList).build();
.setLaunchSpecification(launchSpecificationGcp).setSubnets(subnetsGcpList)
.setHealth(healthGcp).build();

//Build group capacity
ElastigroupCapacityGcp.Builder capacityBuilder =
Expand Down Expand Up @@ -166,14 +173,32 @@ private static String createElastigroup(SpotinstElastigroupClientGcp client) {
.setPreemptiblePercentage(100)
.setRevertToPreemptible(revertToPreemptibleGcp).build();

//build schedulingTasks
ElastigroupScheduleTasksConfigurationGcp.Builder taskBuilder = ElastigroupScheduleTasksConfigurationGcp.Builder.get();

ElastigroupScheduleTasksConfigurationGcp tasksGcp = taskBuilder.setCronExpression("8 10 * * *")
.setIsEnabled(true).setMaxCapacity(10).setMinCapacity(1).setTargetCapacity(5).setTaskType("setCapacity")
.build();

List<ElastigroupScheduleTasksConfigurationGcp> tasksGcpList = new ArrayList<>();
tasksGcpList.add(tasksGcp);

//build scheduling
ElastigroupSchedulingGcp.Builder schedulingBuilder =
ElastigroupSchedulingGcp.Builder.get();

ElastigroupSchedulingGcp schedulingGcp=
schedulingBuilder.setTasks(tasksGcpList).build();

//build elastigroup gcp
ElastigroupGcp.Builder ElastigroupGcpBuilder = ElastigroupGcp.Builder.get();
ElastigroupGcp elastigroupGcp =
ElastigroupGcpBuilder.setName(SPOTINST_GROUP_NAME)
.setDescription("spotinst-automation")
.setCapacity(capacity)
.setCompute(computeConfigurationGcp)
.setStrategy(strategyConfigurationGcp).build();
.setStrategy(strategyConfigurationGcp)
.setScheduling(schedulingGcp).build();

// Build gcp elastigroup creation request
ElastigroupCreationRequestGcp.Builder ElastigroupCreationRequestGcpBuilder =
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package com.spotinst.sdkjava.model.api.gcp;


import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.spotinst.sdkjava.client.rest.IPartialUpdateEntity;

import java.util.HashSet;
import java.util.Set;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonFilter("PartialUpdateEntityFilter")
public class ApiElastigroupAutoscaleConfigurationGcp implements IPartialUpdateEntity {

@JsonIgnore
private Set<String> isSet;
private Integer cooldown;
private ApiElastigroupDownSpecificationGcp down;
private ApiElastigroupHeadroomSpecificationGcp headroom;
private Boolean isAutoConfig;
private Boolean isEnabled;

public ApiElastigroupAutoscaleConfigurationGcp() {
isSet = new HashSet<>();
}

public Set<String> getIsSet() {
return isSet;
}

public void setIsSet(Set<String> isSet) {
this.isSet = isSet;
}

public Integer getCooldown() {
return cooldown;
}

public ApiElastigroupDownSpecificationGcp getDown() {
return down;
}

public void setDown(ApiElastigroupDownSpecificationGcp down) {
isSet.add("down");
this.down = down;
}

public ApiElastigroupHeadroomSpecificationGcp getHeadroom() {
return headroom;
}

public void setHeadroom(ApiElastigroupHeadroomSpecificationGcp headroom) {
isSet.add("headroom");
this.headroom = headroom;
}

public void setCooldown(Integer cooldown) {
isSet.add("cooldown");
this.cooldown = cooldown;
}

public Boolean getIsAutoConfig() {
return isAutoConfig;
}

public void setIsAutoConfig(Boolean isAutoConfig) {
isSet.add("isAutoConfig");
this.isAutoConfig = isAutoConfig;
}

public Boolean getIsEnabled() {
return isEnabled;
}

public void setIsEnabled(Boolean isEnabled) {
isSet.add("isEnabled");
this.isEnabled = isEnabled;
}

@JsonIgnore
public boolean isIsEnabledSet() {
return isSet.contains("isEnabled");
}

@JsonIgnore
public boolean isCooldownSet() {
return isSet.contains("cooldown");
}

@JsonIgnore
public boolean isDownSet() {
return isSet.contains("down");
}

@JsonIgnore
public boolean isHeadroomSet() {
return isSet.contains("headroom");
}

@JsonIgnore
public boolean isIsAutoConfigSet() {
return isSet.contains("isAutoConfig");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.spotinst.sdkjava.model.api.gcp;

import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.spotinst.sdkjava.client.rest.IPartialUpdateEntity;

import java.util.HashSet;
import java.util.List;
import java.util.Set;


@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonFilter("PartialUpdateEntityFilter")
public class ApiElastigroupBackendServiceConfigGcp implements IPartialUpdateEntity {

@JsonIgnore
private Set<String> isSet;
private List<ApiElastigroupBackendServicesGcp> backendServices;

public ApiElastigroupBackendServiceConfigGcp() {
isSet = new HashSet<>();
}

public Set<String> getIsSet() {
return isSet;
}

public void setIsSet(Set<String> isSet) {
this.isSet = isSet;
}

public List<ApiElastigroupBackendServicesGcp> getBackendServices() {
return backendServices;
}

public void setBackendServices(List<ApiElastigroupBackendServicesGcp> backendServices) {
isSet.add("backendServices");
this.backendServices = backendServices;
}

@JsonIgnore
public boolean isBackendServicesSet() { return isSet.contains("backendServices"); }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package com.spotinst.sdkjava.model.api.gcp;

import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.spotinst.sdkjava.client.rest.IPartialUpdateEntity;

import java.util.HashSet;
import java.util.Set;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonFilter("PartialUpdateEntityFilter")
public class ApiElastigroupBackendServicesGcp implements IPartialUpdateEntity {

@JsonIgnore
private Set<String> isSet;
private String backendServiceName;
private String locationType;
private ApiElastigroupNamedPortsGcp namedPorts;
private String scheme;

public ApiElastigroupBackendServicesGcp() {
isSet = new HashSet<>();
}

public Set<String> getIsSet() {
return isSet;
}

public void setIsSet(Set<String> isSet) {
this.isSet = isSet;
}

public String getBackendServiceName() {
return backendServiceName;
}

public void setBackendServiceName(String backendServiceName) {
isSet.add("backendServiceName");
this.backendServiceName = backendServiceName;
}

public String getLocationType() {
return locationType;
}

public void setLocationType(String locationType) {
isSet.add("locationType");
this.locationType = locationType;
}

public ApiElastigroupNamedPortsGcp getNamedPorts() {
return namedPorts;
}

public void setNamedPorts(ApiElastigroupNamedPortsGcp namedPorts) {
isSet.add("namedPorts");
this.namedPorts = namedPorts;
}

public String getScheme() {
return scheme;
}

public void setScheme(String scheme) {
isSet.add("scheme");
this.scheme = scheme;
}

@JsonIgnore
public boolean isBackendServiceNameSet() { return isSet.contains("backendServiceName"); }

@JsonIgnore
public boolean isLocationTypeSet() { return isSet.contains("locationType"); }

@JsonIgnore
public boolean isNamedPortsSet() { return isSet.contains("namedPorts"); }

@JsonIgnore
public boolean isSchemeSet() { return isSet.contains("scheme"); }
}
Loading