From 071a0f99a4c2bcd3d1e3d6852a8480df09120f5c Mon Sep 17 00:00:00 2001 From: jsaikuma Date: Fri, 4 Mar 2022 17:40:49 +0530 Subject: [PATCH 01/10] SDK changes --- .../aws/ElastigroupUsageExample.java | 47 +++++++ .../sdkjava/model/ElastigroupConverter.java | 130 ++++++++++++++++++ .../model/ISpotinstElastigroupRepo.java | 8 +- .../model/SpotinstElastigroupClient.java | 24 ++++ .../model/SpotinstElastigroupRepo.java | 23 ++++ .../model/SpotinstElastigroupService.java | 52 ++++++- .../ApiCodeDeployBGDeploymentResponse.java | 95 +++++++++++++ .../elastigroup/aws/ApiCodeDeployConfig.java | 80 +++++++++++ .../ApiElastigroupCodeDeployBGDeployment.java | 95 +++++++++++++ .../aws/ApiElastigroupDeploymentTags.java | 62 +++++++++ .../bl/elastigroup/aws/CodeDeployConfig.java | 115 ++++++++++++++++ .../ElastigroupCodeDeployBGDeployment.java | 130 ++++++++++++++++++ .../aws/ElastigroupDeploymentTags.java | 91 ++++++++++++ .../ElastigroupCreateCodeDeployRequest.java | 60 ++++++++ .../CodeDeployBGDeploymentApiResponse.java | 12 ++ .../aws/CodeDeployBGDeploymentResponse.java | 125 +++++++++++++++++ 16 files changed, 1139 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupDeploymentTags.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/CodeDeployConfig.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupDeploymentTags.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentApiResponse.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentResponse.java diff --git a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java index 1f42aec24..dfd76858b 100644 --- a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java +++ b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java @@ -8,6 +8,8 @@ import com.spotinst.sdkjava.model.requests.elastigroup.*; import com.spotinst.sdkjava.model.requests.elastigroup.aws.*; import com.spotinst.sdkjava.model.bl.elastigroup.aws.SuspendedScalingPolicy; +import com.spotinst.sdkjava.model.responses.elastigroup.aws.CodeDeployBGDeploymentApiResponse; +import com.spotinst.sdkjava.model.responses.elastigroup.aws.CodeDeployBGDeploymentResponse; import java.io.IOException; import java.text.ParseException; @@ -177,6 +179,10 @@ public static void main(String[] args) throws IOException { System.out.println("----------Get Instance Types by region--------------"); List getInstanceTypesByRegion = getInstanceTypesByRegion(elastigroupClient, "region"); + //Start deployment + System.out.println("----------Create CodeDeploy B/G Deployment--------------"); + String deploymentId = startDeployment(elastigroupClient, "elastigroup-id").getId(); + } @@ -1113,4 +1119,45 @@ private static List getInstanceTypesByRegion(S return getInstanceTypesByRegionResponse; } + private static CodeDeployBGDeploymentResponse createCodeDeployBGDeployment(SpotinstElastigroupClient elastigroupClient, + String elastigroupId) { + + // Build Onfailure + ElastigroupDeploymentStrategyOnFailure onfailure = + ElastigroupDeploymentStrategyOnFailure.Builder.get().setActionType(AwsElastigroupActionTypeEnum.DETACH_NEW) + .setDrainingTimeout(200) + .setShouldDecrementTargetCapacity(true) + .setShouldHandleAllBatches(false).build(); + + // Build Strategy + ElastigroupDeploymentStrategy strategy = + ElastigroupDeploymentStrategy.Builder.get().setAction(AwsElastigroupActionEnum.RESTART_SERVER).setBatchMinHealthyPercentage(50).setOnFailure(onfailure) + .build(); + + //Build Elastigroup Deployment + ElastigroupStartDeployment.Builder requestBuilder = ElastigroupStartDeployment.Builder.get(); + ElastigroupStartDeployment elastigroupStartDeployment = + requestBuilder.setBatchSizePercentage(100).setDrainingTimeout(240).setGracePeriod(10) + .setHealthCheckType(AwsElastigroupHealthCheckTypeEnum.NONE).setStrategy(strategy).build(); + + ElastigroupStartDeploymentRequest.Builder startDeploymentRequestBuilder = ElastigroupStartDeploymentRequest.Builder.get(); + ElastigroupStartDeploymentRequest startDeploymentRequest = + startDeploymentRequestBuilder.setElastigroupDeployment(elastigroupStartDeployment).build(); + + System.out.println("Start Deployment Request for elastigroup:" + elastigroupId); + System.out.println(startDeploymentRequest.toJson()); + + ElastigroupStartDeploymentResponse startDeploymentResponse = + elastigroupClient.createCodeDeployBGDeployment(startDeploymentRequest, elastigroupId); + + System.out.println("Start Deployment for elastigroup: " + elastigroupId + " with id " + startDeploymentResponse.getId() + + " and status " + startDeploymentResponse.getStatus() + " in current batch " + + startDeploymentResponse.getCurrentBatch() + " out of " + startDeploymentResponse.getNumOfBatches() + + " total batches"); + + return startDeploymentResponse; + + } + + } diff --git a/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java b/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java index 0e4676ea5..6f9a38754 100755 --- a/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java +++ b/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java @@ -3,6 +3,7 @@ import com.spotinst.sdkjava.enums.*; import com.spotinst.sdkjava.model.api.elastigroup.aws.*; import com.spotinst.sdkjava.model.bl.elastigroup.aws.*; +import com.spotinst.sdkjava.model.responses.elastigroup.aws.CodeDeployBGDeploymentResponse; import java.util.LinkedList; import java.util.List; @@ -3189,6 +3190,27 @@ public static ElastigroupImportEC2Instance toBl( return retVal; } + private static ElastigroupDeploymentTags toBl(ApiElastigroupDeploymentTags apiElastigroupDeploymentTags) { + ElastigroupDeploymentTags blDeploymentTags = null; + + if (apiElastigroupDeploymentTags != null) { + ElastigroupDeploymentTags.Builder blDeploymentTagsBuilder = ElastigroupDeploymentTags.Builder.get(); + + if (apiElastigroupDeploymentTags.isTagKeySet()) { + blDeploymentTagsBuilder.setTagKey(apiElastigroupDeploymentTags.getTagKey()); + } + + if (apiElastigroupDeploymentTags.isTagValueSet()) { + blDeploymentTagsBuilder.setTagValue(apiElastigroupDeploymentTags.getTagValue()); + } + + blDeploymentTags = blDeploymentTagsBuilder.build(); + } + + return blDeploymentTags; + } + + public static GetInstanceTypesByRegionResponse toBl( ApiGetInstanceTypesByRegionResponse getInstanceTypesByRegion) { GetInstanceTypesByRegionResponse retVal = null; @@ -3202,4 +3224,112 @@ public static GetInstanceTypesByRegionResponse toBl( } return retVal; } + + public static ApiElastigroupCodeDeployBGDeployment toDal(ElastigroupCodeDeployBGDeployment codeDeployBGDeployment) { + ApiElastigroupCodeDeployBGDeployment retVal = null; + + if (codeDeployBGDeployment != null) { + retVal = new ApiElastigroupCodeDeployBGDeployment(); + + if (codeDeployBGDeployment.isTimeoutSet()) { + retVal.setTimeout(codeDeployBGDeployment.getTimeout()); + } + + if (codeDeployBGDeployment.isDeploymentTagsSet()) { + if (codeDeployBGDeployment.getDeploymentTags() != null) { + List deploymentTags = + codeDeployBGDeployment.getDeploymentTags().stream().map(ElastigroupConverter::toDal) + .collect(Collectors.toList()); + retVal.setDeploymentTags(deploymentTags); + } + } + + if (codeDeployBGDeployment.isDeploymentGroupsSet()) { + if (codeDeployBGDeployment.getDeploymentGroups() != null) { + List deploymentGroups = + codeDeployBGDeployment.getDeploymentGroups().stream().map((ElastigroupConverter::toDal)) + .collect(Collectors.toList()); + retVal.setDeploymentGroups(deploymentGroups); + } + } + } + return retVal; + } + + private static ApiElastigroupDeploymentTags toDal(ElastigroupDeploymentTags deploymentTags) { + ApiElastigroupDeploymentTags retVal = null; + + if (deploymentTags != null) { + retVal = new ApiElastigroupDeploymentTags(); + + if (deploymentTags.isTagKeySet()) { + retVal.setTagKey(deploymentTags.getTagKey()); + } + + if (deploymentTags.isTagValueSet()) { + retVal.setTagValue(deploymentTags.getTagValue()); + } + + } + return retVal; + + } + + + public static CodeDeployBGDeploymentResponse toBl(ApiCodeDeployBGDeploymentResponse apiCodeDeployBGResponse) { + CodeDeployBGDeploymentResponse retVal = null; + + if (apiCodeDeployBGResponse != null) { + + retVal = new CodeDeployBGDeploymentResponse(); + + if (apiCodeDeployBGResponse.isIdSet()) { + retVal.setId(apiCodeDeployBGResponse.getId()); + } + + if (apiCodeDeployBGResponse.isGroupIdSet()) { + retVal.setGroupId(apiCodeDeployBGResponse.getGroupId()); + } + + if (apiCodeDeployBGResponse.isStateSet()) { + retVal.setState(apiCodeDeployBGResponse.getState()); + } + + if (apiCodeDeployBGResponse.isConfigSet()) { + retVal.setConfig(apiCodeDeployBGResponse.getConfig()); + } + + } + return retVal; + } + + private static CodeDeployConfig toBl(ApiCodeDeployConfig apiCodeDeployConfig) { + CodeDeployConfig retVal = null; + + if (apiCodeDeployConfig != null) { + + retVal = new CodeDeployConfig(); + + if (apiCodeDeployConfig.isTimeoutSet()) { + retVal.setTimeout(apiCodeDeployConfig.getTimeout()); + } + + if (apiCodeDeployConfig.isDeploymentTagsSet()) { + List deploymentTags = + apiCodeDeployConfig.getDeploymentTags().stream().map(ElastigroupConverter::toBl) + .collect(Collectors.toList()); + retVal.setDeploymentTags(deploymentTags); + } + + if (apiCodeDeployConfig.isDeploymentGroupsSet()) { + List deploymentGroups = + apiCodeDeployConfig.getDeploymentGroups().stream().map(ElastigroupConverter::toBl) + .collect(Collectors.toList()); + retVal.setDeploymentGroups(deploymentGroups); + } + + } + return retVal; + } + } diff --git a/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java b/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java index 2e88e2910..7d6878526 100755 --- a/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java @@ -4,10 +4,8 @@ import com.spotinst.sdkjava.model.bl.elastigroup.aws.*; import com.spotinst.sdkjava.model.requests.elastigroup.ElastigroupInstanceLockRequest; import com.spotinst.sdkjava.model.requests.elastigroup.ElastigroupInstanceUnLockRequest; -import com.spotinst.sdkjava.model.requests.elastigroup.aws.ElastigroupGetElastilogRequest; -import com.spotinst.sdkjava.model.requests.elastigroup.aws.ImportASGRequest; -import com.spotinst.sdkjava.model.requests.elastigroup.aws.RetryItfMigrationRequest; -import com.spotinst.sdkjava.model.requests.elastigroup.aws.ElastigroupStopDeploymentRequest; +import com.spotinst.sdkjava.model.requests.elastigroup.aws.*; +import com.spotinst.sdkjava.model.responses.elastigroup.aws.CodeDeployBGDeploymentResponse; import java.util.List; @@ -105,4 +103,6 @@ RepoGenericResponse deallocateStatefulInstance(String elastigroupId, St RepoGenericResponse importASG(ImportASGRequest importASGRequest, String authToken); RepoGenericResponse> getInstanceTypesByRegion(String region, String authToken, String account); + + RepoGenericResponse> createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId, String authToken, String account); } diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java index 8dcec2c51..f06d89251 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java @@ -10,6 +10,7 @@ import com.spotinst.sdkjava.model.requests.elastigroup.ElastigroupInstanceLockRequest; import com.spotinst.sdkjava.model.requests.elastigroup.ElastigroupInstanceUnLockRequest; import com.spotinst.sdkjava.model.requests.elastigroup.aws.*; +import com.spotinst.sdkjava.model.responses.elastigroup.aws.CodeDeployBGDeploymentResponse; import com.spotinst.sdkjava.utils.TimeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1089,4 +1090,27 @@ public List getInstanceTypesByRegion(String re } + public List createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId) { + + List codeDeployBGDeploymentResponses; + + RepoGenericResponse > getCodeDeployResponse = + getSpotinstElastigroupRepo().createCodeDeployBGDeployment(request, elastigroupId, authToken, account); + + if(getCodeDeployResponse.isRequestSucceed()){ + codeDeployBGDeploymentResponses = getCodeDeployResponse.getValue(); + } + else { + List httpExceptions = getCodeDeployResponse.getHttpExceptions(); + HttpError httpException = httpExceptions.get(0); + LOGGER.error(String.format( + "Error encountered while attempting to get the instance types by region. Code: %s. Message: %s.", + httpException.getCode(), httpException.getMessage())); + + throw new SpotinstHttpException(httpException.getMessage()); + } + + return codeDeployBGDeploymentResponses; + } + } \ No newline at end of file diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java index 06c0866b8..16e25767a 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java @@ -11,6 +11,7 @@ import com.spotinst.sdkjava.model.requests.elastigroup.ElastigroupInstanceLockRequest; import com.spotinst.sdkjava.model.requests.elastigroup.ElastigroupInstanceUnLockRequest; import com.spotinst.sdkjava.model.requests.elastigroup.aws.*; +import com.spotinst.sdkjava.model.responses.elastigroup.aws.CodeDeployBGDeploymentResponse; import java.util.List; import java.util.stream.Collectors; @@ -815,4 +816,26 @@ public RepoGenericResponse> getInstanceTy return retVal; } + + @Override + public RepoGenericResponse> createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId, String authToken, String account){ + RepoGenericResponse> retVal; + + try { + + List apiCodeDeployResponse = SpotinstElastigroupService + .createCodeDeployBGDeployment(request, elastigroupId, authToken, account); + List codeDeployResponse = apiCodeDeployResponse.stream().map(ElastigroupConverter::toBl) + .collect(Collectors.toList()); + + retVal = new RepoGenericResponse<>(codeDeployResponse); + } + + catch (SpotinstHttpException ex) { + retVal = ExceptionHelper.handleHttpException(ex); + } + + return retVal; + } + } \ No newline at end of file diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java index e75425606..be5086b32 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java @@ -1,6 +1,5 @@ package com.spotinst.sdkjava.model; - import com.spotinst.sdkjava.client.response.BaseServiceEmptyResponse; import com.spotinst.sdkjava.client.response.BaseSpotinstService; import com.spotinst.sdkjava.client.rest.*; @@ -9,14 +8,14 @@ import com.spotinst.sdkjava.model.bl.elastigroup.aws.*; import com.spotinst.sdkjava.model.requests.elastigroup.ElastigroupInstanceLockRequest; import com.spotinst.sdkjava.model.requests.elastigroup.ElastigroupInstanceUnLockRequest; -import com.spotinst.sdkjava.model.requests.elastigroup.aws.ApiRetryItfMigrationRequest; -import com.spotinst.sdkjava.model.requests.elastigroup.aws.ElastigroupGetElastilogRequest; -import com.spotinst.sdkjava.model.requests.elastigroup.aws.ElastigroupStopDeploymentRequest; -import com.spotinst.sdkjava.model.requests.elastigroup.aws.ImportASGRequest; +import com.spotinst.sdkjava.model.requests.elastigroup.aws.*; import com.spotinst.sdkjava.model.responses.elastigroup.aws.*; import org.apache.http.HttpStatus; -import java.util.*; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; /** * Created by aharontwizer on 7/27/15. @@ -1681,4 +1680,45 @@ public static ApiElastigroup importASG(ImportASGRequest importASGRequest, String return retVal; } + + public static List createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId, String authToken, String account) { + + List apiCodeDeployResponse = new LinkedList<>(); + + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + // Build query params + Map queryParams = new HashMap<>(); + + // Add account Id Query param + if (account != null) { + queryParams.put("accountId", account); + } + + // Get the headers + Map headers = buildHeaders(authToken); + + // Build URI + String uri = String.format("%s/aws/ec2/group/%s/codeDeploy/blueGreenDeployment", apiEndpoint,elastigroupId); + + // Write to json + Map deploymentRequest = new HashMap<>(); + deploymentRequest.put("deployment", request); + String body = JsonMapper.toJson(deploymentRequest); + + // Send the request. + RestResponse response = RestClient.sendPost(uri, body, headers, queryParams); + + // Handle the response. + CodeDeployBGDeploymentApiResponse + codeDeployResponse = getCastedResponse(response, CodeDeployBGDeploymentApiResponse.class); + + if (codeDeployResponse.getResponse().getCount() > 0) { + apiCodeDeployResponse = codeDeployResponse.getResponse().getItems(); + } + + return apiCodeDeployResponse; + } } diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java new file mode 100644 index 000000000..2a612e9be --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java @@ -0,0 +1,95 @@ +package com.spotinst.sdkjava.model.api.elastigroup.aws; + +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 com.spotinst.sdkjava.model.ElastigroupDeploymentGroup; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.CodeDeployConfig; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupCodeDeployBGDeployment; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupDeploymentTags; +import com.spotinst.sdkjava.model.responses.elastigroup.aws.CodeDeployBGDeploymentResponse; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonFilter("PartialUpdateEntityFilter") +public class ApiCodeDeployBGDeploymentResponse implements IPartialUpdateEntity { + + @JsonIgnore + private Set isSet; + private String id; + private String groupId; + private String state; + private CodeDeployConfig config; + + public ApiCodeDeployBGDeploymentResponse() { + isSet = new HashSet<>(); + } + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getId() { return id; } + + public void setId(String id) { + isSet.add("id"); + this.id = id; + } + + public String getGroupId() { return groupId; } + + public void setGroupId(String groupId) { + isSet.add("groupId"); + this.groupId = groupId; + } + + public String getState() { return state; } + + public void setState(String state) { + isSet.add("state"); + this.state = state; + } + + public CodeDeployConfig getConfig() { + return config; + } + + public void setConfig(CodeDeployConfig config) { + isSet.add("config"); + this.config = config; + } + + @JsonIgnore + public boolean isIdSet() { + return isSet.contains("id"); + } + + @JsonIgnore + public boolean isGroupIdSet() { + return isSet.contains("groupId"); + } + + @JsonIgnore + public boolean isStateSet() { + return isSet.contains("state"); + } + + @JsonIgnore + public boolean isConfigSet() { + return isSet.contains("config"); + } + +} \ No newline at end of file diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java new file mode 100644 index 000000000..1cd22431f --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java @@ -0,0 +1,80 @@ +package com.spotinst.sdkjava.model.api.elastigroup.aws; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.spotinst.sdkjava.model.ApiDeploymentGroup; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupDeploymentTags; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ApiCodeDeployConfig { + + @JsonIgnore + private Set isSet; + private String timeout; + private List deploymentTags; + private List deploymentGroups; + + public ApiCodeDeployConfig() { + isSet = new HashSet<>(); + } + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getTimeout() { + return timeout; + } + + public void setTimeout(String timeout) { + isSet.add("timeout"); + this.timeout = timeout; + } + + public List getDeploymentTags() { + return deploymentTags; + } + + public void setDeploymentTags(List deploymentTags) { + isSet.add("deploymentTags"); + this.deploymentTags = deploymentTags; + } + + public List getDeploymentGroups() { + return deploymentGroups; + } + + public void setDeploymentGroups(List deploymentGroups) { + isSet.add("deploymentGroups"); + this.deploymentGroups = deploymentGroups; + } + + @JsonIgnore + public boolean isTimeoutSet() { + return isSet.contains("timeout"); + } + + @JsonIgnore + public boolean isDeploymentTagsSet() { + return isSet.contains("deploymentTags"); + } + + @JsonIgnore + public boolean isDeploymentGroupsSet() { + return isSet.contains("deploymentGroups"); + } + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java new file mode 100644 index 000000000..ee520d874 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java @@ -0,0 +1,95 @@ +package com.spotinst.sdkjava.model.api.elastigroup.aws; + +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 com.spotinst.sdkjava.model.ApiDeploymentGroup; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonFilter("PartialUpdateEntityFilter") +public class ApiElastigroupCodeDeployBGDeployment implements IPartialUpdateEntity { + //region Members + @JsonIgnore + private Set isSet; + private String timeout; + private List deploymentTags; + private List deploymentGroups; + //endregion + + //region Constructor + + public ApiElastigroupCodeDeployBGDeployment() { + isSet = new HashSet<>(); + } + //endregion + + //region Getters & Setters + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getTimeout() { + return timeout; + } + + public void setTimeout(String timeout) { + this.timeout = timeout; + } + + public List getDeploymentTags() { + return deploymentTags; + } + + public void setDeploymentTags(List deploymentTags) { + isSet.add("deploymentTags"); + this.deploymentTags = deploymentTags; + } + + public List getDeploymentGroups() { + return deploymentGroups; + } + + public void setDeploymentGroups(List deploymentGroups) { + isSet.add("deploymentGroups"); + this.deploymentGroups = deploymentGroups; + } + + //endregion + + //region isSet methods + // Is timeout Set boolean method + @JsonIgnore + public boolean isTimeoutSet() { + return isSet.contains("timeout"); + } + + // Is deploymenttags Set boolean method + @JsonIgnore + public boolean isDeploymentTagsSet() { + return isSet.contains("deploymentTags"); + } + + // Is deploymentGroups Set boolean method + @JsonIgnore + public boolean isDeploymentGroupsSet() { + return isSet.contains("deploymentGroups"); + } + + //endregion +} diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupDeploymentTags.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupDeploymentTags.java new file mode 100644 index 000000000..7d81a29d8 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupDeploymentTags.java @@ -0,0 +1,62 @@ +package com.spotinst.sdkjava.model.api.elastigroup.aws; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.HashSet; +import java.util.Set; +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ApiElastigroupDeploymentTags { + + @JsonIgnore + private Set isSet; + private String tagKey; + private String tagValue; + + public ApiElastigroupDeploymentTags() { + isSet = new HashSet<>(); + } + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getTagKey() { + return tagKey; + } + + public void setTagKey(String tagKey) { + isSet.add("tagKey"); + this.tagKey = tagKey; + } + + public String getTagValue() { + return tagValue; + } + + public void setTagValue(String tagValue) { + isSet.add("tagValue"); + this.tagValue = tagValue; + } + + @JsonIgnore + public boolean isTagKeySet() { + return isSet.contains("tagKey"); + } + + @JsonIgnore + public boolean isTagValueSet() { + return isSet.contains("tagValue"); + } + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/CodeDeployConfig.java b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/CodeDeployConfig.java new file mode 100644 index 000000000..7bc9e85ce --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/CodeDeployConfig.java @@ -0,0 +1,115 @@ +package com.spotinst.sdkjava.model.bl.elastigroup.aws; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.spotinst.sdkjava.model.ElastigroupDeploymentGroup; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CodeDeployConfig { + + @JsonIgnore + private Set isSet; + private String timeout; + private List deploymentTags; + private List deploymentGroups; + + public CodeDeployConfig() { + isSet = new HashSet<>(); + } + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getTimeout() { + return timeout; + } + + public void setTimeout(String timeout) { + isSet.add("timeout"); + this.timeout = timeout; + } + + public List getDeploymentTags() { + return deploymentTags; + } + + public void setDeploymentTags(List deploymentTags) { + isSet.add("deploymentTags"); + this.deploymentTags = deploymentTags; + } + + public List getDeploymentGroups() { + return deploymentGroups; + } + + public void setDeploymentGroups(List deploymentGroups) { + isSet.add("deploymentGroups"); + this.deploymentGroups = deploymentGroups; + } + + + public static class Builder { + private CodeDeployConfig config; + + private Builder() { + this.config = new CodeDeployConfig(); + } + + public static Builder get() { + Builder builder = new Builder(); + return builder; + } + + public Builder setTimeout(final String timeout) { + config.setTimeout(timeout); + return this; + } + + public Builder setDeploymentTags(final List deploymentTags) { + config.setDeploymentTags(deploymentTags); + return this; + } + + public Builder setDeploymentGroups(final List deploymentGroups) { + config.setDeploymentGroups(deploymentGroups); + return this; + } + + public CodeDeployConfig build() { + return config; + } + + } + + @JsonIgnore + public boolean isTimeoutSet() { + return isSet.contains("timeout"); + } + + @JsonIgnore + public boolean isDeploymentTagsSet() { + return isSet.contains("deploymentTags"); + } + + @JsonIgnore + public boolean isDeploymentGroupsSet() { + return isSet.contains("deploymentGroups"); + } + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java new file mode 100644 index 000000000..a854e914d --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java @@ -0,0 +1,130 @@ +package com.spotinst.sdkjava.model.bl.elastigroup.aws; + +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 com.spotinst.sdkjava.model.ElastigroupDeploymentGroup; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonFilter("PartialUpdateEntityFilter") +public class ElastigroupCodeDeployBGDeployment implements IPartialUpdateEntity { + //region Members + @JsonIgnore + private Set isSet; + private String timeout; + private List deploymentTags; + private List deploymentGroups; + //endregion + + //region Constructor + + public ElastigroupCodeDeployBGDeployment() { + isSet = new HashSet<>(); + } + //endregion + + //region Getters & Setters + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getTimeout() { + return timeout; + } + + public void setTimeout(String timeout) { + this.timeout = timeout; + } + + public List getDeploymentTags() { + return deploymentTags; + } + + public void setDeploymentTags(List deploymentTags) { + isSet.add("deploymentTags"); + this.deploymentTags = deploymentTags; + } + + public List getDeploymentGroups() { + return deploymentGroups; + } + + public void setDeploymentGroups(List deploymentGroups) { + isSet.add("deploymentGroups"); + this.deploymentGroups = deploymentGroups; + } + + //endregion + + //region Builder class + public static class Builder { + //region Members + private ElastigroupCodeDeployBGDeployment codeDeployBGDeployment; + //endregion + + + private Builder() { + this.codeDeployBGDeployment = new ElastigroupCodeDeployBGDeployment(); + } + + public static Builder get() { + ElastigroupCodeDeployBGDeployment.Builder builder = new Builder(); + return builder; + } + + //region Build methods + public Builder setDeploymentTags(List deploymentTags) { + codeDeployBGDeployment.setDeploymentTags(deploymentTags); + return this; + } + + public Builder setDeploymentGroups(List deploymentGroups) { + codeDeployBGDeployment.setDeploymentGroups(deploymentGroups); + return this; + } + + public ElastigroupCodeDeployBGDeployment build() { + // Validations + return codeDeployBGDeployment; + } + //endregion + } + //endregion + + + //region isSet methods + // Is deploymenttags Set boolean method + @JsonIgnore + public boolean isTimeoutSet() { + return isSet.contains("timeout"); + } + + @JsonIgnore + public boolean isDeploymentTagsSet() { + return isSet.contains("deploymentTags"); + } + + // Is deploymentGroups Set boolean method + @JsonIgnore + public boolean isDeploymentGroupsSet() { + return isSet.contains("deploymentGroups"); + } + + //endregion +} diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupDeploymentTags.java b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupDeploymentTags.java new file mode 100644 index 000000000..898ef08c9 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupDeploymentTags.java @@ -0,0 +1,91 @@ +package com.spotinst.sdkjava.model.bl.elastigroup.aws; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.HashSet; +import java.util.Set; +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ElastigroupDeploymentTags { + + @JsonIgnore + private Set isSet; + private String tagKey; + private String tagValue; + + public ElastigroupDeploymentTags() { + isSet = new HashSet<>(); + } + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getTagKey() { + return tagKey; + } + + public void setTagKey(String tagKey) { + isSet.add("tagKey"); + this.tagKey = tagKey; + } + + public String getTagValue() { + return tagValue; + } + + public void setTagValue(String tagValue) { + isSet.add("tagValue"); + this.tagValue = tagValue; + } + + + public static class Builder { + private ElastigroupDeploymentTags configTags; + + private Builder() { + this.configTags = new ElastigroupDeploymentTags(); + } + + public static Builder get() { + Builder builder = new Builder(); + return builder; + } + + public Builder setTagKey(final String tagKey) { + configTags.setTagKey(tagKey); + return this; + } + + public Builder setTagValue(final String tagValue) { + configTags.setTagValue(tagValue); + return this; + } + + public ElastigroupDeploymentTags build() { + return configTags; + } + + } + + @JsonIgnore + public boolean isTagKeySet() { + return isSet.contains("tagKey"); + } + + @JsonIgnore + public boolean isTagValueSet() { + return isSet.contains("tagValue"); + } + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java b/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java new file mode 100644 index 000000000..3037bc08a --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java @@ -0,0 +1,60 @@ +package com.spotinst.sdkjava.model.requests.elastigroup.aws; + +import com.spotinst.sdkjava.client.rest.JsonMapper; +import com.spotinst.sdkjava.model.ElastigroupCodeDeploy; +import com.spotinst.sdkjava.model.ElastigroupConverter; +import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiElastigroupCodeDeployBGDeployment; +import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiElastigroupImportEC2Instance; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupCodeDeployBGDeployment; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupImportEC2Instance; +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ +public class ElastigroupCreateCodeDeployRequest { + + private ElastigroupCodeDeployBGDeployment codeDeployBGDeployment; + + private ElastigroupCreateCodeDeployRequest() { + } + + public ElastigroupCodeDeployBGDeployment getCodeDeployBGDeployment() { + return codeDeployBGDeployment; + } + + public void setCodeDeployBGDeployment(ElastigroupCodeDeployBGDeployment codeDeployBGDeployment) { + this.codeDeployBGDeployment = codeDeployBGDeployment; + } + + public static class Builder { + private ElastigroupCreateCodeDeployRequest createCodeDeployRequest; + + private Builder() { + this.createCodeDeployRequest = new ElastigroupCreateCodeDeployRequest(); + } + + public static Builder get() { + Builder builder = new Builder(); + return builder; + } + + public Builder setCodeDeployBGDeployment(ElastigroupCodeDeployBGDeployment codeDeployBGDeployment) { + createCodeDeployRequest.setCodeDeployBGDeployment(codeDeployBGDeployment); + return this; + } + + public ElastigroupCreateCodeDeployRequest build() { + return createCodeDeployRequest; + } + } + + //region Json methods + public String toJson() { + ApiElastigroupCodeDeployBGDeployment createCodeDeployRequest = ElastigroupConverter.toDal(codeDeployBGDeployment); + String codeDeploy = JsonMapper.toJson(createCodeDeployRequest); + return codeDeploy; + } + + //endregion + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentApiResponse.java b/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentApiResponse.java new file mode 100644 index 000000000..22a4b6ce4 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentApiResponse.java @@ -0,0 +1,12 @@ +package com.spotinst.sdkjava.model.responses.elastigroup.aws; + +import com.spotinst.sdkjava.client.response.BaseServiceItemsResponse; +import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiCodeDeployBGDeploymentResponse; +import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiGetInstanceTypesByRegionResponse; +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ +public class CodeDeployBGDeploymentApiResponse extends BaseServiceItemsResponse { + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentResponse.java b/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentResponse.java new file mode 100644 index 000000000..add0f92e7 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentResponse.java @@ -0,0 +1,125 @@ +package com.spotinst.sdkjava.model.responses.elastigroup.aws; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.CodeDeployConfig; + +import java.util.HashSet; +import java.util.Set; +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CodeDeployBGDeploymentResponse { + + @JsonIgnore + private Set isSet; + private String id; + private String groupId; + private String state; + private CodeDeployConfig config; + + public CodeDeployBGDeploymentResponse() { + isSet = new HashSet<>(); + } + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getId() { return id; } + + public void setId(String id) { + isSet.add("id"); + this.id = id; + } + + public String getGroupId() { return groupId; } + + public void setGroupId(String groupId) { + isSet.add("groupId"); + this.groupId = groupId; + } + + public String getState() { return state; } + + public void setState(String state) { + isSet.add("state"); + this.state = state; + } + + public CodeDeployConfig getConfig() { + return config; + } + + public void setConfig(CodeDeployConfig config) { + isSet.add("config"); + this.config = config; + } + + public static class Builder { + private CodeDeployBGDeploymentResponse getCodeDeployResponse; + + private Builder() { + this.getCodeDeployResponse = new CodeDeployBGDeploymentResponse(); + } + + public static Builder get() { + Builder builder = new Builder(); + return builder; + } + + public Builder setId(final String id) { + getCodeDeployResponse.setId(id); + return this; + } + + public Builder setGroupId(final String groupId) { + getCodeDeployResponse.setId(groupId); + return this; + } + + public Builder setState(final String state) { + getCodeDeployResponse.setState(state); + return this; + } + + public Builder setConfig(final CodeDeployConfig config) { + getCodeDeployResponse.setConfig(config); + return this; + } + + public CodeDeployBGDeploymentResponse build() { + return getCodeDeployResponse; + } + } + + @JsonIgnore + public boolean isIdSet() { + return isSet.contains("id"); + } + + @JsonIgnore + public boolean isGroupIdSet() { + return isSet.contains("groupId"); + } + + @JsonIgnore + public boolean isStateSet() { + return isSet.contains("state"); + } + + @JsonIgnore + public boolean isConfigSet() { + return isSet.contains("config"); + } + +} + From 81a7f69bb5689d197dcc6038d681103c6f61bcdd Mon Sep 17 00:00:00 2001 From: jsaikuma Date: Fri, 4 Mar 2022 18:19:52 +0530 Subject: [PATCH 02/10] conflicts are merged --- build.gradle | 4 +- gradle.properties | 2 +- pom.xml | 2 +- .../aws/ElastigroupUsageExample.java | 36 +++- .../sdkjava/model/ElastigroupConverter.java | 72 ++++++-- .../model/ISpotinstElastigroupRepo.java | 4 +- .../model/SpotinstElastigroupClient.java | 33 +++- .../model/SpotinstElastigroupRepo.java | 29 +++- .../model/SpotinstElastigroupService.java | 48 +++++- ....java => ApiGetInstanceTypesResponse.java} | 4 +- .../aws/ApiGetSuggestedInstanceType.java | 111 +++++++++++++ .../aws/ApiRequiredVCpuRequiredMemoryGib.java | 79 +++++++++ ...nse.java => GetInstanceTypesResponse.java} | 12 +- .../aws/GetSuggestedInstanceType.java | 157 ++++++++++++++++++ .../aws/RequiredVCpuRequiredMemoryGib.java | 115 +++++++++++++ .../aws/GetSuggestedInstanceTypeRequest.java | 56 +++++++ .../GetInstanceTypesByRegionApiResponse.java | 4 +- src/main/resources/project.properties | 2 +- 18 files changed, 724 insertions(+), 46 deletions(-) rename src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/{ApiGetInstanceTypesByRegionResponse.java => ApiGetInstanceTypesResponse.java} (89%) create mode 100644 src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiGetSuggestedInstanceType.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiRequiredVCpuRequiredMemoryGib.java rename src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/{GetInstanceTypesByRegionResponse.java => GetInstanceTypesResponse.java} (80%) create mode 100644 src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/GetSuggestedInstanceType.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/RequiredVCpuRequiredMemoryGib.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/GetSuggestedInstanceTypeRequest.java diff --git a/build.gradle b/build.gradle index 4cbdac279..b3794e633 100755 --- a/build.gradle +++ b/build.gradle @@ -35,8 +35,8 @@ dependencies { 'org.slf4j:slf4j-api:1.7.22', 'org.slf4j:slf4j-simple:1.7.22', 'org.apache.commons:commons-lang3:3.5', - 'org.apache.logging.log4j:log4j-core:2.17.0', - 'org.apache.logging.log4j:log4j-api:2.17.0') + 'org.apache.logging.log4j:log4j-core:2.17.1', + 'org.apache.logging.log4j:log4j-api:2.17.1') testCompile( 'junit:junit:4.13.1', 'org.mockito:mockito-all:1.10.19', diff --git a/gradle.properties b/gradle.properties index 1869afc5c..ad04d471b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -theVersion=1.0.78 \ No newline at end of file +theVersion=1.0.79 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 1aab4d0bd..ef28273d5 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.spotinst spotinst-sdk-java - 1.0.78-SNAPSHOT + 1.0.79-SNAPSHOT jar spotinst-sdk-java A Spotinst Java SDK diff --git a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java index dfd76858b..07559f688 100644 --- a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java +++ b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java @@ -8,7 +8,6 @@ import com.spotinst.sdkjava.model.requests.elastigroup.*; import com.spotinst.sdkjava.model.requests.elastigroup.aws.*; import com.spotinst.sdkjava.model.bl.elastigroup.aws.SuspendedScalingPolicy; -import com.spotinst.sdkjava.model.responses.elastigroup.aws.CodeDeployBGDeploymentApiResponse; import com.spotinst.sdkjava.model.responses.elastigroup.aws.CodeDeployBGDeploymentResponse; import java.io.IOException; @@ -177,7 +176,11 @@ public static void main(String[] args) throws IOException { //Get Instance types by region System.out.println("----------Get Instance Types by region--------------"); - List getInstanceTypesByRegion = getInstanceTypesByRegion(elastigroupClient, "region"); + List getInstanceTypesByRegion = getInstanceTypesByRegion(elastigroupClient, "region"); + + //Get suggested Instance types + System.out.println("----------Get Suggested Instance Types--------------"); + List getSuggestedInstanceTypes = getSuggestedInstanceTypes(elastigroupClient); //Start deployment System.out.println("----------Create CodeDeploy B/G Deployment--------------"); @@ -1106,21 +1109,42 @@ private static List getElastilog(SpotinstElasti return elastigroupGetLogsResponse; } - private static List getInstanceTypesByRegion(SpotinstElastigroupClient client, String region) { + private static List getInstanceTypesByRegion(SpotinstElastigroupClient client, String region) { - List getInstanceTypesByRegionResponse = + List getInstanceTypesByRegionResponse = client.getInstanceTypesByRegion(region); - for (GetInstanceTypesByRegionResponse instanceType : getInstanceTypesByRegionResponse) { + for (GetInstanceTypesResponse instanceType : getInstanceTypesByRegionResponse) { System.out.println(String.format("InstanceType: %s", instanceType.getInstanceType())); } return getInstanceTypesByRegionResponse; } + private static List getSuggestedInstanceTypes(SpotinstElastigroupClient elastigroupClient) { + + GetSuggestedInstanceType.Builder instanceTypeBuilder = GetSuggestedInstanceType.Builder.get(); + GetSuggestedInstanceType instanceType = instanceTypeBuilder.setRegion("us-west-2").setBaselineInstanceType("m5.large").build(); + + GetSuggestedInstanceTypeRequest.Builder requestBuilder = GetSuggestedInstanceTypeRequest.Builder.get(); + GetSuggestedInstanceTypeRequest instanceTypesReq = requestBuilder.setSuggestedInstanceType(instanceType).build(); + + List getInstanceTypesByRegionResponse = + elastigroupClient.getSuggestedInstanceTypes(instanceTypesReq); + + for (GetInstanceTypesResponse instances : getInstanceTypesByRegionResponse) { + System.out.println(String.format("InstanceType: %s", instances.getInstanceType())); + } + + return getInstanceTypesByRegionResponse; + + } + + + private static CodeDeployBGDeploymentResponse createCodeDeployBGDeployment(SpotinstElastigroupClient elastigroupClient, - String elastigroupId) { + String elastigroupId) { // Build Onfailure ElastigroupDeploymentStrategyOnFailure onfailure = diff --git a/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java b/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java index 6f9a38754..e08bb2d21 100755 --- a/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java +++ b/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java @@ -1494,6 +1494,48 @@ public static ApiImportASG toDal(ImportASG importASG) { return retVal; } + public static ApiGetSuggestedInstanceType toDal(GetSuggestedInstanceType suggestedInstanceType) { + ApiGetSuggestedInstanceType apisuggestedInstanceType = null; + + if (suggestedInstanceType != null) { + apisuggestedInstanceType = new ApiGetSuggestedInstanceType(); + + if (suggestedInstanceType.isRegionSet()) { + apisuggestedInstanceType.setRegion(suggestedInstanceType.getRegion()); + } + if (suggestedInstanceType.isBaselineInstanceTypeSet() && suggestedInstanceType.getBaselineInstanceType() != null) { + apisuggestedInstanceType.setBaselineInstanceType(suggestedInstanceType.getBaselineInstanceType()); + } + if (suggestedInstanceType.isRequiredVCpuSet() && suggestedInstanceType.getRequiredVCpu() != null) { + apisuggestedInstanceType.setRequiredVCpu(toDal(suggestedInstanceType.getRequiredVCpu())); + } + if (suggestedInstanceType.isRequiredMemoryGibSet() && suggestedInstanceType.getRequiredMemoryGib() != null) { + apisuggestedInstanceType.setRequiredMemoryGib(toDal(suggestedInstanceType.getRequiredMemoryGib())); + } + } + + return apisuggestedInstanceType; + } + + private static ApiRequiredVCpuRequiredMemoryGib toDal(RequiredVCpuRequiredMemoryGib requiredVCpuMemory) { + ApiRequiredVCpuRequiredMemoryGib retVal = null; + + if (requiredVCpuMemory != null) { + + retVal = new ApiRequiredVCpuRequiredMemoryGib(); + + if (requiredVCpuMemory.isMinimumSet()) { + retVal.setMinimum(requiredVCpuMemory.getMinimum()); + } + + if (requiredVCpuMemory.isMaximumSet()) { + retVal.setMaximum(requiredVCpuMemory.getMaximum()); + } + } + + return retVal; + } + //endregion //region DAL -> BL @@ -3190,6 +3232,21 @@ public static ElastigroupImportEC2Instance toBl( return retVal; } + public static GetInstanceTypesResponse toBl( + ApiGetInstanceTypesResponse getInstanceTypesByRegion) { + GetInstanceTypesResponse retVal = null; + + if (getInstanceTypesByRegion != null) { + retVal = new GetInstanceTypesResponse(); + + if (getInstanceTypesByRegion.isInstanceTypeSet()) { + retVal.setInstanceType(getInstanceTypesByRegion.getInstanceType()); + } + } + return retVal; + } + + private static ElastigroupDeploymentTags toBl(ApiElastigroupDeploymentTags apiElastigroupDeploymentTags) { ElastigroupDeploymentTags blDeploymentTags = null; @@ -3210,21 +3267,6 @@ private static ElastigroupDeploymentTags toBl(ApiElastigroupDeploymentTags apiEl return blDeploymentTags; } - - public static GetInstanceTypesByRegionResponse toBl( - ApiGetInstanceTypesByRegionResponse getInstanceTypesByRegion) { - GetInstanceTypesByRegionResponse retVal = null; - - if (getInstanceTypesByRegion != null) { - retVal = new GetInstanceTypesByRegionResponse(); - - if (getInstanceTypesByRegion.isInstanceTypeSet()) { - retVal.setInstanceType(getInstanceTypesByRegion.getInstanceType()); - } - } - return retVal; - } - public static ApiElastigroupCodeDeployBGDeployment toDal(ElastigroupCodeDeployBGDeployment codeDeployBGDeployment) { ApiElastigroupCodeDeployBGDeployment retVal = null; diff --git a/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java b/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java index 7d6878526..3818d7a22 100755 --- a/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java @@ -102,7 +102,9 @@ RepoGenericResponse deallocateStatefulInstance(String elastigroupId, St RepoGenericResponse importASG(ImportASGRequest importASGRequest, String authToken); - RepoGenericResponse> getInstanceTypesByRegion(String region, String authToken, String account); + RepoGenericResponse> getInstanceTypesByRegion(String region, String authToken, String account); + + RepoGenericResponse> getSuggestedInstanceTypes(GetSuggestedInstanceTypeRequest suggestedInstanceType, String authToken, String account); RepoGenericResponse> createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId, String authToken, String account); } diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java index f06d89251..c7032ab49 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java @@ -1066,11 +1066,11 @@ public Elastigroup importASG(ImportASGRequest importASGRequest) { return elastigroup; } - public List getInstanceTypesByRegion(String region) { + public List getInstanceTypesByRegion(String region) { - List getInstanceTypesByRegionResponse; + List getInstanceTypesByRegionResponse; - RepoGenericResponse > getInstanceTypesResponse = + RepoGenericResponse > getInstanceTypesResponse = getSpotinstElastigroupRepo().getInstanceTypesByRegion(region, authToken, account); if(getInstanceTypesResponse.isRequestSucceed()){ @@ -1090,6 +1090,31 @@ public List getInstanceTypesByRegion(String re } + public List getSuggestedInstanceTypes(GetSuggestedInstanceTypeRequest suggestedInstanceTypeRequest) { + + List getInstanceTypesByRegionResponse; + + RepoGenericResponse > getInstanceTypesResponse = + getSpotinstElastigroupRepo().getSuggestedInstanceTypes(suggestedInstanceTypeRequest, authToken, account); + + if(getInstanceTypesResponse.isRequestSucceed()){ + getInstanceTypesByRegionResponse = getInstanceTypesResponse.getValue(); + } + else { + List httpExceptions = getInstanceTypesResponse.getHttpExceptions(); + HttpError httpException = httpExceptions.get(0); + LOGGER.error(String.format( + "Error encountered while attempting to get the suggested instance types. Code: %s. Message: %s.", + httpException.getCode(), httpException.getMessage())); + + throw new SpotinstHttpException(httpException.getMessage()); + } + + return getInstanceTypesByRegionResponse; + + } + + public List createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId) { List codeDeployBGDeploymentResponses; @@ -1105,12 +1130,14 @@ public List createCodeDeployBGDeployment(Elastig HttpError httpException = httpExceptions.get(0); LOGGER.error(String.format( "Error encountered while attempting to get the instance types by region. Code: %s. Message: %s.", + httpException.getCode(), httpException.getMessage())); throw new SpotinstHttpException(httpException.getMessage()); } return codeDeployBGDeploymentResponses; + } } \ No newline at end of file diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java index 16e25767a..b193af26d 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java @@ -797,14 +797,35 @@ public RepoGenericResponse importASG(ImportASGRequest importASGRequ } @Override - public RepoGenericResponse> getInstanceTypesByRegion(String region, String authToken, String account) { - RepoGenericResponse> retVal; + public RepoGenericResponse> getInstanceTypesByRegion(String region, String authToken, String account) { + RepoGenericResponse> retVal; try { - List getInstanceTypes = SpotinstElastigroupService + List getInstanceTypes = SpotinstElastigroupService .getInstanceTypesByRegion(region, authToken, account); - List getAllInstanceTypes = getInstanceTypes.stream().map(ElastigroupConverter::toBl) + List getAllInstanceTypes = getInstanceTypes.stream().map(ElastigroupConverter::toBl) + .collect(Collectors.toList()); + + retVal = new RepoGenericResponse<>(getAllInstanceTypes); + } + + catch (SpotinstHttpException ex) { + retVal = ExceptionHelper.handleHttpException(ex); + } + + return retVal; + } + + @Override + public RepoGenericResponse> getSuggestedInstanceTypes(GetSuggestedInstanceTypeRequest suggestedInstanceType, String authToken, String account) { + RepoGenericResponse> retVal; + + try { + + List getInstanceTypes = SpotinstElastigroupService + .getSuggestedInstanceTypes(suggestedInstanceType, authToken, account); + List getAllInstanceTypes = getInstanceTypes.stream().map(ElastigroupConverter::toBl) .collect(Collectors.toList()); retVal = new RepoGenericResponse<>(getAllInstanceTypes); diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java index be5086b32..99bac2104 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java @@ -1580,9 +1580,9 @@ public static List getElastilog(ElastigroupG } - public static List getInstanceTypesByRegion(String region, String authToken, String account) { + public static List getInstanceTypesByRegion(String region, String authToken, String account) { - List getInstanceTypesByRegionResponse = new LinkedList<>(); + List getInstanceTypesByRegionResponse = new LinkedList<>(); // Get endpoint SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); @@ -1681,6 +1681,50 @@ public static ApiElastigroup importASG(ImportASGRequest importASGRequest, String return retVal; } + public static List getSuggestedInstanceTypes(GetSuggestedInstanceTypeRequest suggestedInstanceTypeRequest, String authToken, String account) { + + List getInstanceTypesByRegionResponse = new LinkedList<>(); + GetSuggestedInstanceType suggestedInstanceTypeReq = suggestedInstanceTypeRequest.getSuggestedInstanceType(); + + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + // Build query params + Map queryParams = new HashMap<>(); + + // Add account Id Query param + if (account != null) { + queryParams.put("accountId", account); + } + + // Get the headers + Map headers = buildHeaders(authToken); + + // Build URI + String uri = String.format("%s/aws/ec2/instanceTypeRecommendation", apiEndpoint); + + // Write to json + Map suggestedInstanceType = new HashMap<>(); + suggestedInstanceType.put("requirements", suggestedInstanceTypeReq); + String body = JsonMapper.toJson(suggestedInstanceType); + + // Send the request. + RestResponse response = RestClient.sendPost(uri, body, headers, queryParams); + + // Handle the response. + + GetInstanceTypesByRegionApiResponse + instanceTypesResponse = getCastedResponse(response, GetInstanceTypesByRegionApiResponse.class); + + if (instanceTypesResponse.getResponse().getCount() > 0) { + getInstanceTypesByRegionResponse = instanceTypesResponse.getResponse().getItems(); + } + + return getInstanceTypesByRegionResponse; + } + + public static List createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId, String authToken, String account) { List apiCodeDeployResponse = new LinkedList<>(); diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiGetInstanceTypesByRegionResponse.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiGetInstanceTypesResponse.java similarity index 89% rename from src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiGetInstanceTypesByRegionResponse.java rename to src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiGetInstanceTypesResponse.java index 655cc375c..0991b9926 100644 --- a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiGetInstanceTypesByRegionResponse.java +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiGetInstanceTypesResponse.java @@ -12,13 +12,13 @@ @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL) @JsonFilter("PartialUpdateEntityFilter") -public class ApiGetInstanceTypesByRegionResponse implements IPartialUpdateEntity { +public class ApiGetInstanceTypesResponse implements IPartialUpdateEntity { @JsonIgnore private Set isSet; private String instanceType; - public ApiGetInstanceTypesByRegionResponse() { + public ApiGetInstanceTypesResponse() { isSet = new HashSet<>(); } diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiGetSuggestedInstanceType.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiGetSuggestedInstanceType.java new file mode 100644 index 000000000..570c6969a --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiGetSuggestedInstanceType.java @@ -0,0 +1,111 @@ +package com.spotinst.sdkjava.model.api.elastigroup.aws; + +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; + +/** + * @author: Janetlin Kiruba + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonFilter("PartialUpdateEntityFilter") +public class ApiGetSuggestedInstanceType implements IPartialUpdateEntity { + //region Members + @JsonIgnore + private Set isSet; + private String region; + private String baselineInstanceType; + private ApiRequiredVCpuRequiredMemoryGib requiredVCpu; + private ApiRequiredVCpuRequiredMemoryGib requiredMemoryGib; + //endregion + + //region Constructor + + public ApiGetSuggestedInstanceType() { + isSet = new HashSet<>(); + } + //endregion + + //region Getters & Setters + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getRegion() { + return region; + } + + public void setRegion(String region) { + isSet.add("region"); + this.region = region; + } + + public String getBaselineInstanceType() { + return baselineInstanceType; + } + + public void setBaselineInstanceType(String baselineInstanceType) { + isSet.add("baselineInstanceType"); + this.baselineInstanceType = baselineInstanceType; + } + + public ApiRequiredVCpuRequiredMemoryGib getRequiredVCpu() { + return requiredVCpu; + } + + public void setRequiredVCpu(ApiRequiredVCpuRequiredMemoryGib requiredVCpu) { + isSet.add("requiredVCpu"); + this.requiredVCpu = requiredVCpu; + } + + public ApiRequiredVCpuRequiredMemoryGib getRequiredMemoryGib() { + return requiredMemoryGib; + } + + public void setRequiredMemoryGib(ApiRequiredVCpuRequiredMemoryGib requiredMemoryGib) { + isSet.add("requiredMemoryGib"); + this.requiredMemoryGib = requiredMemoryGib; + } + + //endregion + + //region isSet methods + // Is name Set boolean method + @JsonIgnore + public boolean isRegionSet() { + return isSet.contains("region"); + } + + // Is baselineInstanceType Set boolean method + @JsonIgnore + public boolean isBaselineInstanceTypeSet() { + return isSet.contains("baselineInstanceType"); + } + + // Is requiredVCpu Set boolean method + @JsonIgnore + public boolean isRequiredVCpuSet() { + return isSet.contains("requiredVCpu"); + } + + // Is requiredMemoryGib Set boolean method + @JsonIgnore + public boolean isRequiredMemoryGibSet() { + return isSet.contains("requiredMemoryGib"); + } + + //endregion +} diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiRequiredVCpuRequiredMemoryGib.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiRequiredVCpuRequiredMemoryGib.java new file mode 100644 index 000000000..fd9facc3a --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiRequiredVCpuRequiredMemoryGib.java @@ -0,0 +1,79 @@ +package com.spotinst.sdkjava.model.api.elastigroup.aws; + +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; + +/** + * @author: Janetlin Kiruba + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonFilter("PartialUpdateEntityFilter") +public class ApiRequiredVCpuRequiredMemoryGib implements IPartialUpdateEntity { + //region Members + @JsonIgnore + private Set isSet; + private String minimum; + private String maximum; + //endregion + + //region Constructor + + public ApiRequiredVCpuRequiredMemoryGib() { + isSet = new HashSet<>(); + } + //endregion + + //region Getters & Setters + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getMinimum() { + return minimum; + } + + public void setMinimum(String minimum) { + isSet.add("minimum"); + this.minimum = minimum; + } + + public String getMaximum() { + return maximum; + } + + public void setMaximum(String maximum) { + isSet.add("maximum"); + this.maximum = maximum; + } + + //endregion + + //region isSet methods + // Is minimum Set boolean method + @JsonIgnore + public boolean isMinimumSet() { + return isSet.contains("minimum"); + } + + // Is maximum Set boolean method + @JsonIgnore + public boolean isMaximumSet() { + return isSet.contains("maximum"); + } + + //endregion +} diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/GetInstanceTypesByRegionResponse.java b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/GetInstanceTypesResponse.java similarity index 80% rename from src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/GetInstanceTypesByRegionResponse.java rename to src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/GetInstanceTypesResponse.java index d8a02145b..10ac9fe06 100644 --- a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/GetInstanceTypesByRegionResponse.java +++ b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/GetInstanceTypesResponse.java @@ -9,13 +9,13 @@ @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL) -public class GetInstanceTypesByRegionResponse { +public class GetInstanceTypesResponse { @JsonIgnore private Set isSet; private String instanceType; - public GetInstanceTypesByRegionResponse() { + public GetInstanceTypesResponse() { isSet = new HashSet<>(); } @@ -37,10 +37,10 @@ public void setInstanceType(String instanceType) { } public static class Builder { - private GetInstanceTypesByRegionResponse getInstanceTypesByRegion; + private GetInstanceTypesResponse getInstanceTypesByRegion; private Builder() { - this.getInstanceTypesByRegion = new GetInstanceTypesByRegionResponse(); + this.getInstanceTypesByRegion = new GetInstanceTypesResponse(); } public static Builder get() { @@ -48,12 +48,12 @@ public static Builder get() { return builder; } - public GetInstanceTypesByRegionResponse.Builder setInstanceType(final String instanceType) { + public GetInstanceTypesResponse.Builder setInstanceType(final String instanceType) { getInstanceTypesByRegion.setInstanceType(instanceType); return this; } - public GetInstanceTypesByRegionResponse build() { + public GetInstanceTypesResponse build() { return getInstanceTypesByRegion; } diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/GetSuggestedInstanceType.java b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/GetSuggestedInstanceType.java new file mode 100644 index 000000000..03a90f59d --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/GetSuggestedInstanceType.java @@ -0,0 +1,157 @@ +package com.spotinst.sdkjava.model.bl.elastigroup.aws; + +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 com.spotinst.sdkjava.model.api.elastigroup.aws.ApiRequiredVCpuRequiredMemoryGib; + +import java.util.HashSet; +import java.util.Set; + +/** + * @author: Janetlin Kiruba + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonFilter("PartialUpdateEntityFilter") +public class GetSuggestedInstanceType implements IPartialUpdateEntity { + //region Members + @JsonIgnore + private Set isSet; + private String region; + private String baselineInstanceType; + private RequiredVCpuRequiredMemoryGib requiredVCpu; + private RequiredVCpuRequiredMemoryGib requiredMemoryGib; + //endregion + + //region Constructor + + public GetSuggestedInstanceType() { + isSet = new HashSet<>(); + } + //endregion + + //region Getters & Setters + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getRegion() { + return region; + } + + public void setRegion(String region) { + isSet.add("region"); + this.region = region; + } + + public String getBaselineInstanceType() { + return baselineInstanceType; + } + + public void setBaselineInstanceType(String baselineInstanceType) { + isSet.add("baselineInstanceType"); + this.baselineInstanceType = baselineInstanceType; + } + + public RequiredVCpuRequiredMemoryGib getRequiredVCpu() { + return requiredVCpu; + } + + public void setRequiredVCpu(RequiredVCpuRequiredMemoryGib requiredVCpu) { + isSet.add("requiredVCpu"); + this.requiredVCpu = requiredVCpu; + } + + public RequiredVCpuRequiredMemoryGib getRequiredMemoryGib() { + return requiredMemoryGib; + } + + public void setRequiredMemoryGib(RequiredVCpuRequiredMemoryGib requiredMemoryGib) { + isSet.add("requiredMemoryGib"); + this.requiredMemoryGib = requiredMemoryGib; + } + + //endregion + + //region Builder class + public static class Builder { + //region Members + private GetSuggestedInstanceType suggestedInstanceType; + //endregion + + + private Builder() { + this.suggestedInstanceType = new GetSuggestedInstanceType(); + } + + public static Builder get() { + GetSuggestedInstanceType.Builder builder = new Builder(); + return builder; + } + + //region Build methods + public Builder setRegion(final String region) { + suggestedInstanceType.setRegion(region); + return this; + } + + public Builder setBaselineInstanceType(final String baselineInstanceType) { + suggestedInstanceType.setBaselineInstanceType(baselineInstanceType); + return this; + } + + public Builder setRequiredVCpu(final RequiredVCpuRequiredMemoryGib requiredVCpu) { + suggestedInstanceType.setRequiredVCpu(requiredVCpu); + return this; + } + + public Builder setRequiredMemoryGib(final RequiredVCpuRequiredMemoryGib requiredMemoryGib) { + suggestedInstanceType.setRequiredMemoryGib(requiredMemoryGib); + return this; + } + + public GetSuggestedInstanceType build() { + // Validations + return suggestedInstanceType; + } + //endregion + } + //endregion + + + //region isSet methods + // Is name Set boolean method + @JsonIgnore + public boolean isRegionSet() { + return isSet.contains("region"); + } + + // Is baselineInstanceType Set boolean method + @JsonIgnore + public boolean isBaselineInstanceTypeSet() { + return isSet.contains("baselineInstanceType"); + } + + // Is requiredVCpu Set boolean method + @JsonIgnore + public boolean isRequiredVCpuSet() { + return isSet.contains("requiredVCpu"); + } + + // Is requiredMemoryGib Set boolean method + @JsonIgnore + public boolean isRequiredMemoryGibSet() { + return isSet.contains("requiredMemoryGib"); + } + + //endregion +} diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/RequiredVCpuRequiredMemoryGib.java b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/RequiredVCpuRequiredMemoryGib.java new file mode 100644 index 000000000..a07d3d3be --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/RequiredVCpuRequiredMemoryGib.java @@ -0,0 +1,115 @@ +package com.spotinst.sdkjava.model.bl.elastigroup.aws; + +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; + +/** + * @author: Janetlin Kiruba + * @since: 01/03/2022 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonFilter("PartialUpdateEntityFilter") +public class RequiredVCpuRequiredMemoryGib implements IPartialUpdateEntity { + //region Members + @JsonIgnore + private Set isSet; + private String minimum; + private String maximum; + //endregion + + //region Constructor + + public RequiredVCpuRequiredMemoryGib() { + isSet = new HashSet<>(); + } + //endregion + + //region Getters & Setters + + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getMinimum() { + return minimum; + } + + public void setMinimum(String minimum) { + isSet.add("minimum"); + this.minimum = minimum; + } + + public String getMaximum() { + return maximum; + } + + public void setMaximum(String maximum) { + isSet.add("maximum"); + this.maximum = maximum; + } + + //endregion + + //region Builder class + public static class Builder { + //region Members + private RequiredVCpuRequiredMemoryGib requiredVCpuMemory; + //endregion + + + private Builder() { + this.requiredVCpuMemory = new RequiredVCpuRequiredMemoryGib(); + } + + public static Builder get() { + RequiredVCpuRequiredMemoryGib.Builder builder = new Builder(); + return builder; + } + + //region Build methods + public Builder setMinimum(final String minimum) { + requiredVCpuMemory.setMinimum(minimum); + return this; + } + + public Builder setMaximum(final String maximum) { + requiredVCpuMemory.setMaximum(maximum); + return this; + } + + public RequiredVCpuRequiredMemoryGib build() { + // Validations + return requiredVCpuMemory; + } + //endregion + } + //endregion + + + //region isSet methods + // Is minimum Set boolean method + @JsonIgnore + public boolean isMinimumSet() { + return isSet.contains("minimum"); + } + + // Is maximum Set boolean method + @JsonIgnore + public boolean isMaximumSet() { + return isSet.contains("maximum"); + } + + //endregion +} diff --git a/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/GetSuggestedInstanceTypeRequest.java b/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/GetSuggestedInstanceTypeRequest.java new file mode 100644 index 000000000..5e23c3e44 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/GetSuggestedInstanceTypeRequest.java @@ -0,0 +1,56 @@ +package com.spotinst.sdkjava.model.requests.elastigroup.aws; + +import com.spotinst.sdkjava.client.rest.JsonMapper; +import com.spotinst.sdkjava.model.ElastigroupConverter; +import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiElastigroupImportEC2Instance; +import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiGetSuggestedInstanceType; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupImportEC2Instance; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.GetSuggestedInstanceType; + +public class GetSuggestedInstanceTypeRequest { + + private GetSuggestedInstanceType suggestedInstanceType; + + private GetSuggestedInstanceTypeRequest() { + } + + public GetSuggestedInstanceType getSuggestedInstanceType() { + return suggestedInstanceType; + } + + public void setSuggestedInstanceType(GetSuggestedInstanceType suggestedInstanceType) { + this.suggestedInstanceType = suggestedInstanceType; + } + + public static class Builder { + private GetSuggestedInstanceTypeRequest getSuggestedInstanceTypeRequest; + + private Builder() { + this.getSuggestedInstanceTypeRequest = new GetSuggestedInstanceTypeRequest(); + } + + public static Builder get() { + Builder builder = new Builder(); + return builder; + } + + public Builder setSuggestedInstanceType(GetSuggestedInstanceType suggestedInstanceType) { + getSuggestedInstanceTypeRequest.setSuggestedInstanceType(suggestedInstanceType); + return this; + } + + public GetSuggestedInstanceTypeRequest build() { + return getSuggestedInstanceTypeRequest; + } + } + + //region Json methods + public String toJson() { + ApiGetSuggestedInstanceType suggestedInstanceTypeRequest = ElastigroupConverter.toDal(suggestedInstanceType); + String suggestedInstanceType = JsonMapper.toJson(suggestedInstanceTypeRequest); + return suggestedInstanceType; + } + + //endregion + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/GetInstanceTypesByRegionApiResponse.java b/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/GetInstanceTypesByRegionApiResponse.java index 56a4f7142..ecaada620 100644 --- a/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/GetInstanceTypesByRegionApiResponse.java +++ b/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/GetInstanceTypesByRegionApiResponse.java @@ -1,8 +1,8 @@ package com.spotinst.sdkjava.model.responses.elastigroup.aws; import com.spotinst.sdkjava.client.response.BaseServiceItemsResponse; -import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiGetInstanceTypesByRegionResponse; +import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiGetInstanceTypesResponse; -public class GetInstanceTypesByRegionApiResponse extends BaseServiceItemsResponse { +public class GetInstanceTypesByRegionApiResponse extends BaseServiceItemsResponse { } diff --git a/src/main/resources/project.properties b/src/main/resources/project.properties index d8554a10e..98794f4c3 100644 --- a/src/main/resources/project.properties +++ b/src/main/resources/project.properties @@ -1 +1 @@ -version=1.0.78 \ No newline at end of file +version=1.0.79 \ No newline at end of file From 8f7700e750a0c359996d1b96914928223916459c Mon Sep 17 00:00:00 2001 From: jsaikuma Date: Fri, 4 Mar 2022 18:28:53 +0530 Subject: [PATCH 03/10] RESOLVING CONFLICTS --- .../example/elastigroup/aws/ElastigroupUsageExample.java | 6 +----- .../spotinst/sdkjava/model/ISpotinstElastigroupRepo.java | 1 + .../spotinst/sdkjava/model/SpotinstElastigroupClient.java | 1 - .../spotinst/sdkjava/model/SpotinstElastigroupService.java | 2 +- 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java index 07559f688..3977b07fa 100644 --- a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java +++ b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java @@ -182,11 +182,10 @@ public static void main(String[] args) throws IOException { System.out.println("----------Get Suggested Instance Types--------------"); List getSuggestedInstanceTypes = getSuggestedInstanceTypes(elastigroupClient); - //Start deployment + //Create deployment System.out.println("----------Create CodeDeploy B/G Deployment--------------"); String deploymentId = startDeployment(elastigroupClient, "elastigroup-id").getId(); - } private static void getInstanceHealthiness(SpotinstElastigroupClient elastigroupClient, String elastigroupId) { @@ -1141,8 +1140,6 @@ private static List getSuggestedInstanceTypes(Spotinst } - - private static CodeDeployBGDeploymentResponse createCodeDeployBGDeployment(SpotinstElastigroupClient elastigroupClient, String elastigroupId) { @@ -1183,5 +1180,4 @@ private static CodeDeployBGDeploymentResponse createCodeDeployBGDeployment(Spoti } - } diff --git a/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java b/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java index 3818d7a22..f61d02094 100755 --- a/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java @@ -107,4 +107,5 @@ RepoGenericResponse deallocateStatefulInstance(String elastigroupId, St RepoGenericResponse> getSuggestedInstanceTypes(GetSuggestedInstanceTypeRequest suggestedInstanceType, String authToken, String account); RepoGenericResponse> createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId, String authToken, String account); + } diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java index c7032ab49..102d58d27 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java @@ -1114,7 +1114,6 @@ public List getSuggestedInstanceTypes(GetSuggestedInst } - public List createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId) { List codeDeployBGDeploymentResponses; diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java index 99bac2104..10bf70868 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java @@ -1724,7 +1724,6 @@ public static List getSuggestedInstanceTypes(GetSug return getInstanceTypesByRegionResponse; } - public static List createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId, String authToken, String account) { List apiCodeDeployResponse = new LinkedList<>(); @@ -1765,4 +1764,5 @@ public static List createCodeDeployBGDeployme return apiCodeDeployResponse; } + } From 44a2c159c2d44d65d1732f4baa9bae6a63d2185d Mon Sep 17 00:00:00 2001 From: jsaikuma Date: Sat, 5 Mar 2022 18:43:20 +0530 Subject: [PATCH 04/10] sdk changes for create code deploy --- .../aws/ElastigroupUsageExample.java | 62 ++++++++++--------- .../ElastigroupCodeDeployBGDeployment.java | 5 ++ .../aws/ElastigroupGetCodeDeployRequest.java | 58 +++++++++++++++++ .../CodeDeployBGDeploymentApiResponse.java | 1 - 4 files changed, 96 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupGetCodeDeployRequest.java diff --git a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java index 3977b07fa..2ee15110f 100644 --- a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java +++ b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java @@ -4,6 +4,7 @@ import com.spotinst.sdkjava.enums.*; import com.spotinst.sdkjava.model.*; import com.spotinst.sdkjava.model.RecurrenceFrequencyEnum; +import com.spotinst.sdkjava.model.bl.azure.elastiGroup.V3.SuspendGroupProcessesAzure; import com.spotinst.sdkjava.model.bl.elastigroup.aws.*; import com.spotinst.sdkjava.model.requests.elastigroup.*; import com.spotinst.sdkjava.model.requests.elastigroup.aws.*; @@ -184,7 +185,7 @@ public static void main(String[] args) throws IOException { //Create deployment System.out.println("----------Create CodeDeploy B/G Deployment--------------"); - String deploymentId = startDeployment(elastigroupClient, "elastigroup-id").getId(); + deploymentId = startDeployment(elastigroupClient, "elastigroup-id").getId(); } @@ -1140,43 +1141,46 @@ private static List getSuggestedInstanceTypes(Spotinst } - private static CodeDeployBGDeploymentResponse createCodeDeployBGDeployment(SpotinstElastigroupClient elastigroupClient, + private List createCodeDeployBGDeployment(SpotinstElastigroupClient elastigroupClient, String elastigroupId) { - // Build Onfailure - ElastigroupDeploymentStrategyOnFailure onfailure = - ElastigroupDeploymentStrategyOnFailure.Builder.get().setActionType(AwsElastigroupActionTypeEnum.DETACH_NEW) - .setDrainingTimeout(200) - .setShouldDecrementTargetCapacity(true) - .setShouldHandleAllBatches(false).build(); + //Build deploymentTags + ElastigroupDeploymentTags.Builder deploymentTagsBuilder = ElastigroupDeploymentTags.Builder.get(); + ElastigroupDeploymentTags deploymentTags = + deploymentTagsBuilder.setTagKey("ver").setTagValue("pink").build(); + List deploymentTagsArrayList = new ArrayList<>(); + deploymentTagsArrayList.add(deploymentTags); - // Build Strategy - ElastigroupDeploymentStrategy strategy = - ElastigroupDeploymentStrategy.Builder.get().setAction(AwsElastigroupActionEnum.RESTART_SERVER).setBatchMinHealthyPercentage(50).setOnFailure(onfailure) - .build(); + //Build deploymentGroup + ElastigroupDeploymentGroup.Builder deploymentGroupBuilder = ElastigroupDeploymentGroup.Builder.get(); + ElastigroupDeploymentGroup deploymentGroup = + deploymentGroupBuilder.setApplicationName("appTest").setDeploymentGroupName("deploymentGroupName").build(); + List deploymentGroupArrayList = new ArrayList<>(); + deploymentGroupArrayList.add(deploymentGroup); - //Build Elastigroup Deployment - ElastigroupStartDeployment.Builder requestBuilder = ElastigroupStartDeployment.Builder.get(); - ElastigroupStartDeployment elastigroupStartDeployment = - requestBuilder.setBatchSizePercentage(100).setDrainingTimeout(240).setGracePeriod(10) - .setHealthCheckType(AwsElastigroupHealthCheckTypeEnum.NONE).setStrategy(strategy).build(); + //Build CodeDeploy + ElastigroupCodeDeployBGDeployment.Builder codeDeployBuilder = ElastigroupCodeDeployBGDeployment.Builder.get(); + ElastigroupCodeDeployBGDeployment codeDeploy = + codeDeployBuilder.setTimeout("120").setDeploymentTags(deploymentTagsArrayList).setDeploymentGroups(deploymentGroupArrayList).build(); - ElastigroupStartDeploymentRequest.Builder startDeploymentRequestBuilder = ElastigroupStartDeploymentRequest.Builder.get(); - ElastigroupStartDeploymentRequest startDeploymentRequest = - startDeploymentRequestBuilder.setElastigroupDeployment(elastigroupStartDeployment).build(); + //Build Create CodeDeploy Deployment Request + ElastigroupCreateCodeDeployRequest.Builder createCodeDeployRequestBuilder = ElastigroupCreateCodeDeployRequest.Builder.get(); + ElastigroupCreateCodeDeployRequest createCodeDeployRequest = + createCodeDeployRequestBuilder.setCodeDeployBGDeployment(codeDeploy).build(); - System.out.println("Start Deployment Request for elastigroup:" + elastigroupId); - System.out.println(startDeploymentRequest.toJson()); + System.out.println("Create Deployment Request for elastigroup:" + elastigroupId); + System.out.println(createCodeDeployRequest.toJson()); - ElastigroupStartDeploymentResponse startDeploymentResponse = - elastigroupClient.createCodeDeployBGDeployment(startDeploymentRequest, elastigroupId); + List codeDeployBGDeploymentResponse = + elastigroupClient.createCodeDeployBGDeployment(createCodeDeployRequest, elastigroupId); + + System.out.println("Create deployment for elastigroup: " + elastigroupId + " with id " + codeDeployBGDeploymentResponse.get(0).getId() + + " with groupid " + codeDeployBGDeploymentResponse.get(0).getGroupId() + + " and state " + codeDeployBGDeploymentResponse.get(0).getState()); + + return codeDeployBGDeploymentResponse; - System.out.println("Start Deployment for elastigroup: " + elastigroupId + " with id " + startDeploymentResponse.getId() + - " and status " + startDeploymentResponse.getStatus() + " in current batch " + - startDeploymentResponse.getCurrentBatch() + " out of " + startDeploymentResponse.getNumOfBatches() + - " total batches"); - return startDeploymentResponse; } diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java index a854e914d..d44e72d75 100644 --- a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java +++ b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java @@ -89,6 +89,11 @@ public static Builder get() { } //region Build methods + public Builder setTimeout(String timeout) { + codeDeployBGDeployment.setTimeout(timeout); + return this; + } + public Builder setDeploymentTags(List deploymentTags) { codeDeployBGDeployment.setDeploymentTags(deploymentTags); return this; diff --git a/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupGetCodeDeployRequest.java b/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupGetCodeDeployRequest.java new file mode 100644 index 000000000..e9ce6f051 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupGetCodeDeployRequest.java @@ -0,0 +1,58 @@ +package com.spotinst.sdkjava.model.requests.elastigroup.aws; + +import com.spotinst.sdkjava.client.rest.JsonMapper; +import com.spotinst.sdkjava.model.ElastigroupConverter; +import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiElastigroupCodeDeployBGDeployment; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupCodeDeployBGDeployment; + +/** + * @author: Saikumar Jalda + * @since: 01/03/2022 + */ +public class ElastigroupGetCodeDeployRequest { + + private ElastigroupCodeDeployBGDeployment codeDeployBGDeployment; + + private ElastigroupGetCodeDeployRequest() { + } + + public ElastigroupCodeDeployBGDeployment getCodeDeployBGDeployment() { + return codeDeployBGDeployment; + } + + public void setCodeDeployBGDeployment(ElastigroupCodeDeployBGDeployment codeDeployBGDeployment) { + this.codeDeployBGDeployment = codeDeployBGDeployment; + } + + public static class Builder { + private ElastigroupGetCodeDeployRequest getCodeDeployRequest; + + private Builder() { + this.getCodeDeployRequest = new ElastigroupGetCodeDeployRequest(); + } + + public static Builder get() { + Builder builder = new Builder(); + return builder; + } + + public Builder setCodeDeployBGDeployment(ElastigroupCodeDeployBGDeployment codeDeployBGDeployment) { + getCodeDeployRequest.setCodeDeployBGDeployment(codeDeployBGDeployment); + return this; + } + + public ElastigroupGetCodeDeployRequest build() { + return getCodeDeployRequest; + } + } + + //region Json methods + public String toJson() { + ApiElastigroupCodeDeployBGDeployment getCodeDeployRequest = ElastigroupConverter.toDal(codeDeployBGDeployment); + String getCodeDeploy = JsonMapper.toJson(getCodeDeployRequest); + return getCodeDeploy; + } + + //endregion + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentApiResponse.java b/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentApiResponse.java index 22a4b6ce4..1bf7333f1 100644 --- a/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentApiResponse.java +++ b/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentApiResponse.java @@ -2,7 +2,6 @@ import com.spotinst.sdkjava.client.response.BaseServiceItemsResponse; import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiCodeDeployBGDeploymentResponse; -import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiGetInstanceTypesByRegionResponse; /** * @author: Saikumar Jalda * @since: 01/03/2022 From 84ed1c26c7f124583ddaab34b0d371ec9a82d855 Mon Sep 17 00:00:00 2001 From: jsaikuma Date: Sat, 5 Mar 2022 19:22:54 +0530 Subject: [PATCH 05/10] SDK changes removing unused imports --- .../aws/ElastigroupUsageExample.java | 50 +++++++++++++++++-- .../model/ISpotinstElastigroupRepo.java | 2 + .../model/SpotinstElastigroupClient.java | 25 ++++++++++ .../model/SpotinstElastigroupRepo.java | 22 ++++++++ .../model/SpotinstElastigroupService.java | 42 ++++++++++++++++ .../ApiCodeDeployBGDeploymentResponse.java | 5 -- .../elastigroup/aws/ApiCodeDeployConfig.java | 1 - .../ElastigroupCreateCodeDeployRequest.java | 4 +- 8 files changed, 138 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java index 2ee15110f..05d0546cc 100644 --- a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java +++ b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java @@ -4,7 +4,6 @@ import com.spotinst.sdkjava.enums.*; import com.spotinst.sdkjava.model.*; import com.spotinst.sdkjava.model.RecurrenceFrequencyEnum; -import com.spotinst.sdkjava.model.bl.azure.elastiGroup.V3.SuspendGroupProcessesAzure; import com.spotinst.sdkjava.model.bl.elastigroup.aws.*; import com.spotinst.sdkjava.model.requests.elastigroup.*; import com.spotinst.sdkjava.model.requests.elastigroup.aws.*; @@ -183,9 +182,13 @@ public static void main(String[] args) throws IOException { System.out.println("----------Get Suggested Instance Types--------------"); List getSuggestedInstanceTypes = getSuggestedInstanceTypes(elastigroupClient); - //Create deployment + //Create codeDeploy B/G deployment System.out.println("----------Create CodeDeploy B/G Deployment--------------"); - deploymentId = startDeployment(elastigroupClient, "elastigroup-id").getId(); + deploymentId = createCodeDeployBGDeployment(elastigroupClient, "elastigroup-id").get(0).getId(); + + //Get codeDeploy B/G deployment + System.out.println("----------Get CodeDeploy B/G Deployment--------------"); + String getDeploymentId = getCodeDeployBGDeployment(elastigroupClient, "elastigroup-id").get(0).getId(); } @@ -1141,7 +1144,7 @@ private static List getSuggestedInstanceTypes(Spotinst } - private List createCodeDeployBGDeployment(SpotinstElastigroupClient elastigroupClient, + private static List createCodeDeployBGDeployment(SpotinstElastigroupClient elastigroupClient, String elastigroupId) { //Build deploymentTags @@ -1180,7 +1183,46 @@ private List createCodeDeployBGDeployment(Spotin return codeDeployBGDeploymentResponse; + } + + private static List getCodeDeployBGDeployment(SpotinstElastigroupClient elastigroupClient, + String elastigroupId) { + + //Build deploymentTags + ElastigroupDeploymentTags.Builder deploymentTagsBuilder = ElastigroupDeploymentTags.Builder.get(); + ElastigroupDeploymentTags deploymentTags = + deploymentTagsBuilder.setTagKey("ver").setTagValue("pink").build(); + List deploymentTagsArrayList = new ArrayList<>(); + deploymentTagsArrayList.add(deploymentTags); + + //Build deploymentGroup + ElastigroupDeploymentGroup.Builder deploymentGroupBuilder = ElastigroupDeploymentGroup.Builder.get(); + ElastigroupDeploymentGroup deploymentGroup = + deploymentGroupBuilder.setApplicationName("appTest").setDeploymentGroupName("deploymentGroupName").build(); + List deploymentGroupArrayList = new ArrayList<>(); + deploymentGroupArrayList.add(deploymentGroup); + + //Build CodeDeploy + ElastigroupCodeDeployBGDeployment.Builder codeDeployBuilder = ElastigroupCodeDeployBGDeployment.Builder.get(); + ElastigroupCodeDeployBGDeployment codeDeploy = + codeDeployBuilder.setTimeout("120").setDeploymentTags(deploymentTagsArrayList).setDeploymentGroups(deploymentGroupArrayList).build(); + + //Build Get CodeDeploy Deployment Request + ElastigroupGetCodeDeployRequest.Builder getCodeDeployRequestBuilder = ElastigroupGetCodeDeployRequest.Builder.get(); + ElastigroupGetCodeDeployRequest getCodeDeployRequest = + getCodeDeployRequestBuilder.setCodeDeployBGDeployment(codeDeploy).build(); + System.out.println("Get Deployment Request for elastigroup:" + elastigroupId); + System.out.println(getCodeDeployRequest.toJson()); + + List codeDeployBGDeploymentResponse = + elastigroupClient.getCodeDeployBGDeployment(getCodeDeployRequest, elastigroupId); + + System.out.println("Get deployment for elastigroup: " + elastigroupId + " with id " + codeDeployBGDeploymentResponse.get(0).getId() + + " with groupid " + codeDeployBGDeploymentResponse.get(0).getGroupId() + + " and state " + codeDeployBGDeploymentResponse.get(0).getState()); + + return codeDeployBGDeploymentResponse; } diff --git a/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java b/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java index f61d02094..53d571a74 100755 --- a/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/ISpotinstElastigroupRepo.java @@ -108,4 +108,6 @@ RepoGenericResponse deallocateStatefulInstance(String elastigroupId, St RepoGenericResponse> createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId, String authToken, String account); + RepoGenericResponse> getCodeDeployBGDeployment(ElastigroupGetCodeDeployRequest request, String elastigroupId, String authToken, String account); + } diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java index 102d58d27..13c66c6b5 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupClient.java @@ -1139,4 +1139,29 @@ public List createCodeDeployBGDeployment(Elastig } + public List getCodeDeployBGDeployment(ElastigroupGetCodeDeployRequest request, String elastigroupId) { + + List codeDeployBGDeploymentResponses; + + RepoGenericResponse > getCodeDeployResponse = + getSpotinstElastigroupRepo().getCodeDeployBGDeployment(request, elastigroupId, authToken, account); + + if(getCodeDeployResponse.isRequestSucceed()){ + codeDeployBGDeploymentResponses = getCodeDeployResponse.getValue(); + } + else { + List httpExceptions = getCodeDeployResponse.getHttpExceptions(); + HttpError httpException = httpExceptions.get(0); + LOGGER.error(String.format( + "Error encountered while attempting to get the instance types by region. Code: %s. Message: %s.", + + httpException.getCode(), httpException.getMessage())); + + throw new SpotinstHttpException(httpException.getMessage()); + } + + return codeDeployBGDeploymentResponses; + + } + } \ No newline at end of file diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java index b193af26d..04c08c8a5 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupRepo.java @@ -859,4 +859,26 @@ public RepoGenericResponse> createCodeDeplo return retVal; } + @Override + public RepoGenericResponse> getCodeDeployBGDeployment(ElastigroupGetCodeDeployRequest request, String elastigroupId, String authToken, String account){ + RepoGenericResponse> retVal; + + try { + + List apiCodeDeployResponse = SpotinstElastigroupService + .getCodeDeployBGDeployment(request, elastigroupId, authToken, account); + List codeDeployResponse = apiCodeDeployResponse.stream().map(ElastigroupConverter::toBl) + .collect(Collectors.toList()); + + retVal = new RepoGenericResponse<>(codeDeployResponse); + } + + catch (SpotinstHttpException ex) { + retVal = ExceptionHelper.handleHttpException(ex); + } + + return retVal; + } + + } \ No newline at end of file diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java index 10bf70868..3eb27a934 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java @@ -1765,4 +1765,46 @@ public static List createCodeDeployBGDeployme return apiCodeDeployResponse; } + public static List getCodeDeployBGDeployment(ElastigroupGetCodeDeployRequest request, String elastigroupId, String authToken, String account) { + + List apiCodeDeployResponse = new LinkedList<>(); + + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + // Build query params + Map queryParams = new HashMap<>(); + + // Add account Id Query param + if (account != null) { + queryParams.put("accountId", account); + } + + // Get the headers + Map headers = buildHeaders(authToken); + + // Build URI + String uri = String.format("%s/aws/ec2/group/%s/codeDeploy/blueGreenDeployment", apiEndpoint,elastigroupId); + + // Write to json + Map getDeploymentRequest = new HashMap<>(); + getDeploymentRequest.put("deployment", request); + String body = JsonMapper.toJson(getDeploymentRequest); + + // Send the request. + RestResponse response = RestClient.sendPost(uri, body, headers, queryParams); + + // Handle the response. + CodeDeployBGDeploymentApiResponse + codeDeployResponse = getCastedResponse(response, CodeDeployBGDeploymentApiResponse.class); + + if (codeDeployResponse.getResponse().getCount() > 0) { + apiCodeDeployResponse = codeDeployResponse.getResponse().getItems(); + } + + return apiCodeDeployResponse; + } + + } diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java index 2a612e9be..8765d7bf7 100644 --- a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java @@ -5,14 +5,9 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.spotinst.sdkjava.client.rest.IPartialUpdateEntity; -import com.spotinst.sdkjava.model.ElastigroupDeploymentGroup; import com.spotinst.sdkjava.model.bl.elastigroup.aws.CodeDeployConfig; -import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupCodeDeployBGDeployment; -import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupDeploymentTags; -import com.spotinst.sdkjava.model.responses.elastigroup.aws.CodeDeployBGDeploymentResponse; import java.util.HashSet; -import java.util.List; import java.util.Set; /** * @author: Saikumar Jalda diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java index 1cd22431f..21267baf2 100644 --- a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.spotinst.sdkjava.model.ApiDeploymentGroup; -import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupDeploymentTags; import java.util.HashSet; import java.util.List; diff --git a/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java b/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java index 3037bc08a..504a52125 100644 --- a/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java +++ b/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java @@ -1,12 +1,10 @@ package com.spotinst.sdkjava.model.requests.elastigroup.aws; import com.spotinst.sdkjava.client.rest.JsonMapper; -import com.spotinst.sdkjava.model.ElastigroupCodeDeploy; import com.spotinst.sdkjava.model.ElastigroupConverter; import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiElastigroupCodeDeployBGDeployment; -import com.spotinst.sdkjava.model.api.elastigroup.aws.ApiElastigroupImportEC2Instance; import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupCodeDeployBGDeployment; -import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupImportEC2Instance; + /** * @author: Saikumar Jalda * @since: 01/03/2022 From 5052161e7ec7879ddc8fc4ae0518c11f6ba2af1b Mon Sep 17 00:00:00 2001 From: jsaikuma Date: Sun, 6 Mar 2022 08:07:54 +0530 Subject: [PATCH 06/10] GetMethodWithBody in SDK --- .../client/http/GetRequestWithBody.java | 23 ++++++++++++- .../sdkjava/client/rest/RestClient.java | 34 +++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/spotinst/sdkjava/client/http/GetRequestWithBody.java b/src/main/java/com/spotinst/sdkjava/client/http/GetRequestWithBody.java index 8271866e1..dd00e418e 100644 --- a/src/main/java/com/spotinst/sdkjava/client/http/GetRequestWithBody.java +++ b/src/main/java/com/spotinst/sdkjava/client/http/GetRequestWithBody.java @@ -1,4 +1,25 @@ package com.spotinst.sdkjava.client.http; -public class GetRequestWithBody { +import org.apache.http.annotation.Contract; +import org.apache.http.annotation.ThreadingBehavior; +import org.apache.http.client.methods.HttpPost; + +import java.net.URI; + +/** + * Created by Saikumar Jalda on 03 Mar 2022 + * + */ + +@Contract(threading = ThreadingBehavior.UNSAFE) +public class GetRequestWithBody extends HttpPost { + @Override + public String getMethod() { + return "GET"; + } + + public GetRequestWithBody(final String requestUri) { + super(); + setURI(URI.create(requestUri)); + } } diff --git a/src/main/java/com/spotinst/sdkjava/client/rest/RestClient.java b/src/main/java/com/spotinst/sdkjava/client/rest/RestClient.java index c8fbf49dd..67365fe3e 100755 --- a/src/main/java/com/spotinst/sdkjava/client/rest/RestClient.java +++ b/src/main/java/com/spotinst/sdkjava/client/rest/RestClient.java @@ -1,5 +1,6 @@ package com.spotinst.sdkjava.client.rest; +import com.spotinst.sdkjava.client.http.GetRequestWithBody; import com.spotinst.sdkjava.exception.SpotinstHttpException; import com.spotinst.sdkjava.client.http.DeleteRequestWithBody; import org.apache.http.HttpResponse; @@ -255,4 +256,37 @@ private static RestResponse buildRestResponse(HttpResponse response) throws Spot return retVal; } + + public static RestResponse sendGetWithBody( + String url, + String body, + Map headers, + Map queryParams) throws SpotinstHttpException { + + String encodedUrl = UrlEncoder.encode(url); + // Build the get request + GetRequestWithBody getRequest = new GetRequestWithBody(encodedUrl); + // Build the request body + if (body != null) { + StringEntity entity = null; + try { + entity = new StringEntity(body); + } catch (UnsupportedEncodingException e) { + + // TODO - Handle. + LOGGER.error("Exception when building put body", e); + } + getRequest.setEntity(entity); + } + + // Adding query params. + addQueryParams(getRequest, queryParams); + // Adding headers. + addHeaders(getRequest, headers); + // Sending the request. + RestResponse retVal = sendRequest(getRequest); + return retVal; + } + + } From 72a647f286569e09083fbb7eeed74afec76523fe Mon Sep 17 00:00:00 2001 From: jsaikuma Date: Wed, 23 Mar 2022 10:17:56 +0530 Subject: [PATCH 07/10] sdk changes for reusing existing Tag class --- .../aws/ElastigroupUsageExample.java | 28 ++++----- .../sdkjava/model/ElastigroupConverter.java | 59 +++---------------- .../ApiCodeDeployBGDeploymentResponse.java | 7 ++- .../elastigroup/aws/ApiCodeDeployConfig.java | 17 +++--- .../ApiElastigroupCodeDeployBGDeployment.java | 19 +++--- .../bl/elastigroup/aws/CodeDeployConfig.java | 21 +++---- .../ElastigroupCodeDeployBGDeployment.java | 21 +++---- .../aws/CodeDeployBGDeploymentResponse.java | 10 ++-- 8 files changed, 74 insertions(+), 108 deletions(-) diff --git a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java index 05d0546cc..e1dc58aee 100644 --- a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java +++ b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java @@ -1147,12 +1147,12 @@ private static List getSuggestedInstanceTypes(Spotinst private static List createCodeDeployBGDeployment(SpotinstElastigroupClient elastigroupClient, String elastigroupId) { - //Build deploymentTags - ElastigroupDeploymentTags.Builder deploymentTagsBuilder = ElastigroupDeploymentTags.Builder.get(); - ElastigroupDeploymentTags deploymentTags = - deploymentTagsBuilder.setTagKey("ver").setTagValue("pink").build(); - List deploymentTagsArrayList = new ArrayList<>(); - deploymentTagsArrayList.add(deploymentTags); + //Build Tags + Tag.Builder tagsBuilder = Tag.Builder.get(); + Tag tags = + tagsBuilder.setTagKey("ver").setTagValue("pink").build(); + List tagsArrayList = new ArrayList<>(); + tagsArrayList.add(tags); //Build deploymentGroup ElastigroupDeploymentGroup.Builder deploymentGroupBuilder = ElastigroupDeploymentGroup.Builder.get(); @@ -1164,7 +1164,7 @@ private static List createCodeDeployBGDeployment //Build CodeDeploy ElastigroupCodeDeployBGDeployment.Builder codeDeployBuilder = ElastigroupCodeDeployBGDeployment.Builder.get(); ElastigroupCodeDeployBGDeployment codeDeploy = - codeDeployBuilder.setTimeout("120").setDeploymentTags(deploymentTagsArrayList).setDeploymentGroups(deploymentGroupArrayList).build(); + codeDeployBuilder.setTimeout("120").setTags(tagsArrayList).setDeploymentGroups(deploymentGroupArrayList).build(); //Build Create CodeDeploy Deployment Request ElastigroupCreateCodeDeployRequest.Builder createCodeDeployRequestBuilder = ElastigroupCreateCodeDeployRequest.Builder.get(); @@ -1188,12 +1188,12 @@ private static List createCodeDeployBGDeployment private static List getCodeDeployBGDeployment(SpotinstElastigroupClient elastigroupClient, String elastigroupId) { - //Build deploymentTags - ElastigroupDeploymentTags.Builder deploymentTagsBuilder = ElastigroupDeploymentTags.Builder.get(); - ElastigroupDeploymentTags deploymentTags = - deploymentTagsBuilder.setTagKey("ver").setTagValue("pink").build(); - List deploymentTagsArrayList = new ArrayList<>(); - deploymentTagsArrayList.add(deploymentTags); + //Build Tag + Tag.Builder tagsBuilder = Tag.Builder.get(); + Tag tags = + tagsBuilder.setTagKey("ver").setTagValue("pink").build(); + List tagsArrayList = new ArrayList<>(); + tagsArrayList.add(tags); //Build deploymentGroup ElastigroupDeploymentGroup.Builder deploymentGroupBuilder = ElastigroupDeploymentGroup.Builder.get(); @@ -1205,7 +1205,7 @@ private static List getCodeDeployBGDeployment(Sp //Build CodeDeploy ElastigroupCodeDeployBGDeployment.Builder codeDeployBuilder = ElastigroupCodeDeployBGDeployment.Builder.get(); ElastigroupCodeDeployBGDeployment codeDeploy = - codeDeployBuilder.setTimeout("120").setDeploymentTags(deploymentTagsArrayList).setDeploymentGroups(deploymentGroupArrayList).build(); + codeDeployBuilder.setTimeout("120").setTags(tagsArrayList).setDeploymentGroups(deploymentGroupArrayList).build(); //Build Get CodeDeploy Deployment Request ElastigroupGetCodeDeployRequest.Builder getCodeDeployRequestBuilder = ElastigroupGetCodeDeployRequest.Builder.get(); diff --git a/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java b/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java index e08bb2d21..25f1198c2 100755 --- a/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java +++ b/src/main/java/com/spotinst/sdkjava/model/ElastigroupConverter.java @@ -3246,27 +3246,6 @@ public static GetInstanceTypesResponse toBl( return retVal; } - - private static ElastigroupDeploymentTags toBl(ApiElastigroupDeploymentTags apiElastigroupDeploymentTags) { - ElastigroupDeploymentTags blDeploymentTags = null; - - if (apiElastigroupDeploymentTags != null) { - ElastigroupDeploymentTags.Builder blDeploymentTagsBuilder = ElastigroupDeploymentTags.Builder.get(); - - if (apiElastigroupDeploymentTags.isTagKeySet()) { - blDeploymentTagsBuilder.setTagKey(apiElastigroupDeploymentTags.getTagKey()); - } - - if (apiElastigroupDeploymentTags.isTagValueSet()) { - blDeploymentTagsBuilder.setTagValue(apiElastigroupDeploymentTags.getTagValue()); - } - - blDeploymentTags = blDeploymentTagsBuilder.build(); - } - - return blDeploymentTags; - } - public static ApiElastigroupCodeDeployBGDeployment toDal(ElastigroupCodeDeployBGDeployment codeDeployBGDeployment) { ApiElastigroupCodeDeployBGDeployment retVal = null; @@ -3277,12 +3256,12 @@ public static ApiElastigroupCodeDeployBGDeployment toDal(ElastigroupCodeDeployBG retVal.setTimeout(codeDeployBGDeployment.getTimeout()); } - if (codeDeployBGDeployment.isDeploymentTagsSet()) { - if (codeDeployBGDeployment.getDeploymentTags() != null) { - List deploymentTags = - codeDeployBGDeployment.getDeploymentTags().stream().map(ElastigroupConverter::toDal) + if (codeDeployBGDeployment.isTagsSet()) { + if (codeDeployBGDeployment.getTags() != null) { + List tags = + codeDeployBGDeployment.getTags().stream().map(ElastigroupConverter::toDal) .collect(Collectors.toList()); - retVal.setDeploymentTags(deploymentTags); + retVal.setTags(tags); } } @@ -3298,26 +3277,6 @@ public static ApiElastigroupCodeDeployBGDeployment toDal(ElastigroupCodeDeployBG return retVal; } - private static ApiElastigroupDeploymentTags toDal(ElastigroupDeploymentTags deploymentTags) { - ApiElastigroupDeploymentTags retVal = null; - - if (deploymentTags != null) { - retVal = new ApiElastigroupDeploymentTags(); - - if (deploymentTags.isTagKeySet()) { - retVal.setTagKey(deploymentTags.getTagKey()); - } - - if (deploymentTags.isTagValueSet()) { - retVal.setTagValue(deploymentTags.getTagValue()); - } - - } - return retVal; - - } - - public static CodeDeployBGDeploymentResponse toBl(ApiCodeDeployBGDeploymentResponse apiCodeDeployBGResponse) { CodeDeployBGDeploymentResponse retVal = null; @@ -3356,11 +3315,11 @@ private static CodeDeployConfig toBl(ApiCodeDeployConfig apiCodeDeployConfig) { retVal.setTimeout(apiCodeDeployConfig.getTimeout()); } - if (apiCodeDeployConfig.isDeploymentTagsSet()) { - List deploymentTags = - apiCodeDeployConfig.getDeploymentTags().stream().map(ElastigroupConverter::toBl) + if (apiCodeDeployConfig.isTagsSet()) { + List tags = + apiCodeDeployConfig.getTag().stream().map(ElastigroupConverter::toBl) .collect(Collectors.toList()); - retVal.setDeploymentTags(deploymentTags); + retVal.setTags(tags); } if (apiCodeDeployConfig.isDeploymentGroupsSet()) { diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java index 8765d7bf7..02f59e0f4 100644 --- a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployBGDeploymentResponse.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.spotinst.sdkjava.client.rest.IPartialUpdateEntity; import com.spotinst.sdkjava.model.bl.elastigroup.aws.CodeDeployConfig; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupCodeDeployBGDeployment; import java.util.HashSet; import java.util.Set; @@ -23,7 +24,7 @@ public class ApiCodeDeployBGDeploymentResponse implements IPartialUpdateEntity { private String id; private String groupId; private String state; - private CodeDeployConfig config; + private ElastigroupCodeDeployBGDeployment config; public ApiCodeDeployBGDeploymentResponse() { isSet = new HashSet<>(); @@ -58,11 +59,11 @@ public void setState(String state) { this.state = state; } - public CodeDeployConfig getConfig() { + public ElastigroupCodeDeployBGDeployment getConfig() { return config; } - public void setConfig(CodeDeployConfig config) { + public void setConfig(ElastigroupCodeDeployBGDeployment config) { isSet.add("config"); this.config = config; } diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java index 21267baf2..7a29656ec 100644 --- a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiCodeDeployConfig.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.spotinst.sdkjava.model.ApiDeploymentGroup; +import com.spotinst.sdkjava.model.ApiTag; import java.util.HashSet; import java.util.List; @@ -19,7 +20,7 @@ public class ApiCodeDeployConfig { @JsonIgnore private Set isSet; private String timeout; - private List deploymentTags; + private List tags; private List deploymentGroups; public ApiCodeDeployConfig() { @@ -43,13 +44,13 @@ public void setTimeout(String timeout) { this.timeout = timeout; } - public List getDeploymentTags() { - return deploymentTags; + public List getTag() { + return tags; } - public void setDeploymentTags(List deploymentTags) { - isSet.add("deploymentTags"); - this.deploymentTags = deploymentTags; + public void setTags(List tags) { + isSet.add("tags"); + this.tags = tags; } public List getDeploymentGroups() { @@ -67,8 +68,8 @@ public boolean isTimeoutSet() { } @JsonIgnore - public boolean isDeploymentTagsSet() { - return isSet.contains("deploymentTags"); + public boolean isTagsSet() { + return isSet.contains("tags"); } @JsonIgnore diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java index ee520d874..b718ab28a 100644 --- a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.spotinst.sdkjava.client.rest.IPartialUpdateEntity; import com.spotinst.sdkjava.model.ApiDeploymentGroup; +import com.spotinst.sdkjava.model.ApiTag; import java.util.HashSet; import java.util.List; @@ -23,7 +24,7 @@ public class ApiElastigroupCodeDeployBGDeployment implements IPartialUpdateEntit @JsonIgnore private Set isSet; private String timeout; - private List deploymentTags; + private List tags; private List deploymentGroups; //endregion @@ -52,13 +53,13 @@ public void setTimeout(String timeout) { this.timeout = timeout; } - public List getDeploymentTags() { - return deploymentTags; + public List getTags() { + return tags; } - public void setDeploymentTags(List deploymentTags) { - isSet.add("deploymentTags"); - this.deploymentTags = deploymentTags; + public void setTags(List tags) { + isSet.add("tags"); + this.tags = tags; } public List getDeploymentGroups() { @@ -79,10 +80,10 @@ public boolean isTimeoutSet() { return isSet.contains("timeout"); } - // Is deploymenttags Set boolean method + // Is tags Set boolean method @JsonIgnore - public boolean isDeploymentTagsSet() { - return isSet.contains("deploymentTags"); + public boolean isTagsSet() { + return isSet.contains("tags"); } // Is deploymentGroups Set boolean method diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/CodeDeployConfig.java b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/CodeDeployConfig.java index 7bc9e85ce..16e7b3639 100644 --- a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/CodeDeployConfig.java +++ b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/CodeDeployConfig.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.spotinst.sdkjava.model.ElastigroupDeploymentGroup; +import com.spotinst.sdkjava.model.Tag; import java.util.HashSet; import java.util.List; @@ -21,7 +22,7 @@ public class CodeDeployConfig { @JsonIgnore private Set isSet; private String timeout; - private List deploymentTags; + private List tags; private List deploymentGroups; public CodeDeployConfig() { @@ -45,13 +46,13 @@ public void setTimeout(String timeout) { this.timeout = timeout; } - public List getDeploymentTags() { - return deploymentTags; + public List getTags() { + return tags; } - public void setDeploymentTags(List deploymentTags) { - isSet.add("deploymentTags"); - this.deploymentTags = deploymentTags; + public void setTags(List tags) { + isSet.add("tags"); + this.tags = tags; } public List getDeploymentGroups() { @@ -81,8 +82,8 @@ public Builder setTimeout(final String timeout) { return this; } - public Builder setDeploymentTags(final List deploymentTags) { - config.setDeploymentTags(deploymentTags); + public Builder setTags(final List tags) { + config.setTags(tags); return this; } @@ -103,8 +104,8 @@ public boolean isTimeoutSet() { } @JsonIgnore - public boolean isDeploymentTagsSet() { - return isSet.contains("deploymentTags"); + public boolean isTagsSet() { + return isSet.contains("tags"); } @JsonIgnore diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java index d44e72d75..c500f3b81 100644 --- a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java +++ b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.spotinst.sdkjava.client.rest.IPartialUpdateEntity; import com.spotinst.sdkjava.model.ElastigroupDeploymentGroup; +import com.spotinst.sdkjava.model.Tag; import java.util.HashSet; import java.util.List; @@ -23,7 +24,7 @@ public class ElastigroupCodeDeployBGDeployment implements IPartialUpdateEntity { @JsonIgnore private Set isSet; private String timeout; - private List deploymentTags; + private List tags; private List deploymentGroups; //endregion @@ -52,13 +53,13 @@ public void setTimeout(String timeout) { this.timeout = timeout; } - public List getDeploymentTags() { - return deploymentTags; + public List getTags() { + return tags; } - public void setDeploymentTags(List deploymentTags) { - isSet.add("deploymentTags"); - this.deploymentTags = deploymentTags; + public void setTags(List tags) { + isSet.add("tags"); + this.tags = tags; } public List getDeploymentGroups() { @@ -94,8 +95,8 @@ public Builder setTimeout(String timeout) { return this; } - public Builder setDeploymentTags(List deploymentTags) { - codeDeployBGDeployment.setDeploymentTags(deploymentTags); + public Builder setTags(List tags) { + codeDeployBGDeployment.setTags(tags); return this; } @@ -121,8 +122,8 @@ public boolean isTimeoutSet() { } @JsonIgnore - public boolean isDeploymentTagsSet() { - return isSet.contains("deploymentTags"); + public boolean isTagsSet() { + return isSet.contains("tags"); } // Is deploymentGroups Set boolean method diff --git a/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentResponse.java b/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentResponse.java index add0f92e7..84b54833a 100644 --- a/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentResponse.java +++ b/src/main/java/com/spotinst/sdkjava/model/responses/elastigroup/aws/CodeDeployBGDeploymentResponse.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.spotinst.sdkjava.model.bl.elastigroup.aws.CodeDeployConfig; +import com.spotinst.sdkjava.model.bl.elastigroup.aws.ElastigroupCodeDeployBGDeployment; import java.util.HashSet; import java.util.Set; @@ -20,7 +21,8 @@ public class CodeDeployBGDeploymentResponse { private String id; private String groupId; private String state; - private CodeDeployConfig config; + //private CodeDeployConfig config; + private ElastigroupCodeDeployBGDeployment config; public CodeDeployBGDeploymentResponse() { isSet = new HashSet<>(); @@ -55,11 +57,11 @@ public void setState(String state) { this.state = state; } - public CodeDeployConfig getConfig() { + public ElastigroupCodeDeployBGDeployment getConfig() { return config; } - public void setConfig(CodeDeployConfig config) { + public void setConfig(ElastigroupCodeDeployBGDeployment config) { isSet.add("config"); this.config = config; } @@ -91,7 +93,7 @@ public Builder setState(final String state) { return this; } - public Builder setConfig(final CodeDeployConfig config) { + public Builder setConfig(final ElastigroupCodeDeployBGDeployment config) { getCodeDeployResponse.setConfig(config); return this; } From 10ff864ec51ed3fc3ef645622905e0e371380a29 Mon Sep 17 00:00:00 2001 From: Amrutha Ramanathan <105342664+ramrutha497@users.noreply.github.com> Date: Thu, 1 Dec 2022 14:06:50 +0530 Subject: [PATCH 08/10] Rest client conflict --- .../sdkjava/client/rest/RestClient.java | 32 ------------------- 1 file changed, 32 deletions(-) diff --git a/src/main/java/com/spotinst/sdkjava/client/rest/RestClient.java b/src/main/java/com/spotinst/sdkjava/client/rest/RestClient.java index e664a554c..b4a14019b 100755 --- a/src/main/java/com/spotinst/sdkjava/client/rest/RestClient.java +++ b/src/main/java/com/spotinst/sdkjava/client/rest/RestClient.java @@ -324,36 +324,4 @@ private static RestResponse buildRestResponse(HttpResponse response) throws Spot return retVal; } - public static RestResponse sendGetWithBody( - String url, - String body, - Map headers, - Map queryParams) throws SpotinstHttpException { - - String encodedUrl = UrlEncoder.encode(url); - // Build the get request - GetRequestWithBody getRequest = new GetRequestWithBody(encodedUrl); - // Build the request body - if (body != null) { - StringEntity entity = null; - try { - entity = new StringEntity(body); - } catch (UnsupportedEncodingException e) { - - // TODO - Handle. - LOGGER.error("Exception when building put body", e); - } - getRequest.setEntity(entity); - } - - // Adding query params. - addQueryParams(getRequest, queryParams); - // Adding headers. - addHeaders(getRequest, headers); - // Sending the request. - RestResponse retVal = sendRequest(getRequest); - return retVal; - } - - } From f16643027fc37896483a0540d326b85fb574c1cc Mon Sep 17 00:00:00 2001 From: Amrutha Ramanathan <105342664+ramrutha497@users.noreply.github.com> Date: Thu, 1 Dec 2022 14:09:38 +0530 Subject: [PATCH 09/10] reordered --- .../model/SpotinstElastigroupService.java | 163 +++++++++--------- 1 file changed, 81 insertions(+), 82 deletions(-) diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java index 54aeedc8d..6e6c201ea 100644 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java @@ -1723,47 +1723,6 @@ public static List getSuggestedInstanceTypes(GetSug return getInstanceTypesByRegionResponse; } - - public static List createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId, String authToken, String account) { - - List apiCodeDeployResponse = new LinkedList<>(); - // Get endpoint - SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); - String apiEndpoint = config.getEndpoint(); - - // Build query params - Map queryParams = new HashMap<>(); - - // Add account Id Query param - if (account != null) { - queryParams.put("accountId", account); - } - - // Get the headers - Map headers = buildHeaders(authToken); - - // Build URI - String uri = String.format("%s/aws/ec2/group/%s/codeDeploy/blueGreenDeployment", apiEndpoint,elastigroupId); - - // Write to json - Map deploymentRequest = new HashMap<>(); - deploymentRequest.put("deployment", request); - String body = JsonMapper.toJson(deploymentRequest); - - // Send the request. - RestResponse response = RestClient.sendPost(uri, body, headers, queryParams); - - // Handle the response. - CodeDeployBGDeploymentApiResponse - codeDeployResponse = getCastedResponse(response, CodeDeployBGDeploymentApiResponse.class); - - if (codeDeployResponse.getResponse().getCount() > 0) { - apiCodeDeployResponse = codeDeployResponse.getResponse().getItems(); - } - - return apiCodeDeployResponse; - } - public static ApiElastigroupEcsClusterRollResponse initiateClusterRollInEGWithECS(ApiElastigroupEcsInitiateRoll initiateRollRequest, String groupId, String authToken, String account) throws SpotinstHttpException { // Init retVal @@ -1958,47 +1917,6 @@ public static ApiElastigroupImportStatefulInstanceResponse importStatefulInstanc return retVal; } - public static List getCodeDeployBGDeployment(ElastigroupGetCodeDeployRequest request, String elastigroupId, String authToken, String account) { - - List apiCodeDeployResponse = new LinkedList<>(); - - // Get endpoint - SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); - String apiEndpoint = config.getEndpoint(); - - // Build query params - Map queryParams = new HashMap<>(); - - // Add account Id Query param - if (account != null) { - queryParams.put("accountId", account); - } - - // Get the headers - Map headers = buildHeaders(authToken); - - // Build URI - String uri = String.format("%s/aws/ec2/group/%s/codeDeploy/blueGreenDeployment", apiEndpoint,elastigroupId); - - // Write to json - Map getDeploymentRequest = new HashMap<>(); - getDeploymentRequest.put("deployment", request); - String body = JsonMapper.toJson(getDeploymentRequest); - - // Send the request. - RestResponse response = RestClient.sendGetWithBody(uri, body, headers, queryParams); - - // Handle the response. - CodeDeployBGDeploymentApiResponse - codeDeployResponse = getCastedResponse(response, CodeDeployBGDeploymentApiResponse.class); - - if (codeDeployResponse.getResponse().getCount() > 0) { - apiCodeDeployResponse = codeDeployResponse.getResponse().getItems(); - } - - return apiCodeDeployResponse; - } - public static ApiElastigroupGetImportStatefulStatusResponse getStatefulImportStatus(String statefulMigrationGroupID, String authToken, String account) { ApiElastigroupGetImportStatefulStatusResponse statefulInstanceImportStatus = null; @@ -2190,4 +2108,85 @@ public static ApiElastigroupGetInstanceStatusResponse getInstanceStatus(String i return retVal; } + public static List createCodeDeployBGDeployment(ElastigroupCreateCodeDeployRequest request, String elastigroupId, String authToken, String account) { + + List apiCodeDeployResponse = new LinkedList<>(); + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + // Build query params + Map queryParams = new HashMap<>(); + + // Add account Id Query param + if (account != null) { + queryParams.put("accountId", account); + } + + // Get the headers + Map headers = buildHeaders(authToken); + + // Build URI + String uri = String.format("%s/aws/ec2/group/%s/codeDeploy/blueGreenDeployment", apiEndpoint,elastigroupId); + + // Write to json + Map deploymentRequest = new HashMap<>(); + deploymentRequest.put("deployment", request); + String body = JsonMapper.toJson(deploymentRequest); + + // Send the request. + RestResponse response = RestClient.sendPost(uri, body, headers, queryParams); + + // Handle the response. + CodeDeployBGDeploymentApiResponse + codeDeployResponse = getCastedResponse(response, CodeDeployBGDeploymentApiResponse.class); + + if (codeDeployResponse.getResponse().getCount() > 0) { + apiCodeDeployResponse = codeDeployResponse.getResponse().getItems(); + } + + return apiCodeDeployResponse; + } + + public static List getCodeDeployBGDeployment(ElastigroupGetCodeDeployRequest request, String elastigroupId, String authToken, String account) { + + List apiCodeDeployResponse = new LinkedList<>(); + + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + // Build query params + Map queryParams = new HashMap<>(); + + // Add account Id Query param + if (account != null) { + queryParams.put("accountId", account); + } + + // Get the headers + Map headers = buildHeaders(authToken); + + // Build URI + String uri = String.format("%s/aws/ec2/group/%s/codeDeploy/blueGreenDeployment", apiEndpoint,elastigroupId); + + // Write to json + Map getDeploymentRequest = new HashMap<>(); + getDeploymentRequest.put("deployment", request); + String body = JsonMapper.toJson(getDeploymentRequest); + + // Send the request. + RestResponse response = RestClient.sendGetWithBody(uri, body, headers, queryParams); + + // Handle the response. + CodeDeployBGDeploymentApiResponse + codeDeployResponse = getCastedResponse(response, CodeDeployBGDeploymentApiResponse.class); + + if (codeDeployResponse.getResponse().getCount() > 0) { + apiCodeDeployResponse = codeDeployResponse.getResponse().getItems(); + } + + return apiCodeDeployResponse; + } + } From 8de9b8adbf70fa743a10a329b34edbb14903973d Mon Sep 17 00:00:00 2001 From: Amrutha Ramanathan <105342664+ramrutha497@users.noreply.github.com> Date: Thu, 21 Sep 2023 16:06:26 +0530 Subject: [PATCH 10/10] code deploy script changes --- .../elastigroup/aws/ElastigroupUsageExample.java | 4 ++-- .../sdkjava/model/SpotinstElastigroupService.java | 4 ++-- .../aws/ApiElastigroupCodeDeployBGDeployment.java | 7 ++++--- .../aws/ElastigroupCodeDeployBGDeployment.java | 9 +++++---- .../aws/ElastigroupCreateCodeDeployRequest.java | 14 +++++++------- 5 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java index 759c9f34e..3e4cbdfa1 100644 --- a/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java +++ b/src/main/java/com/spotinst/sdkjava/example/elastigroup/aws/ElastigroupUsageExample.java @@ -1342,7 +1342,7 @@ private static List createCodeDeployBGDeployment //Build CodeDeploy ElastigroupCodeDeployBGDeployment.Builder codeDeployBuilder = ElastigroupCodeDeployBGDeployment.Builder.get(); ElastigroupCodeDeployBGDeployment codeDeploy = - codeDeployBuilder.setTimeout("120").setTags(tagsArrayList).setDeploymentGroups(deploymentGroupArrayList).build(); + codeDeployBuilder.setTimeout(20).setTags(tagsArrayList).setDeploymentGroups(deploymentGroupArrayList).build(); //Build Create CodeDeploy Deployment Request ElastigroupCreateCodeDeployRequest.Builder createCodeDeployRequestBuilder = ElastigroupCreateCodeDeployRequest.Builder.get(); @@ -1383,7 +1383,7 @@ private static List getCodeDeployBGDeployment(Sp //Build CodeDeploy ElastigroupCodeDeployBGDeployment.Builder codeDeployBuilder = ElastigroupCodeDeployBGDeployment.Builder.get(); ElastigroupCodeDeployBGDeployment codeDeploy = - codeDeployBuilder.setTimeout("120").setTags(tagsArrayList).setDeploymentGroups(deploymentGroupArrayList).build(); + codeDeployBuilder.setTimeout(120).setTags(tagsArrayList).setDeploymentGroups(deploymentGroupArrayList).build(); //Build Get CodeDeploy Deployment Request ElastigroupGetCodeDeployRequest.Builder getCodeDeployRequestBuilder = ElastigroupGetCodeDeployRequest.Builder.get(); diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java index 98f01059a..a7b03a1d8 100644 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstElastigroupService.java @@ -2349,8 +2349,8 @@ public static List createCodeDeployBGDeployme String uri = String.format("%s/aws/ec2/group/%s/codeDeploy/blueGreenDeployment", apiEndpoint,elastigroupId); // Write to json - Map deploymentRequest = new HashMap<>(); - deploymentRequest.put("deployment", request); + Map deploymentRequest = new HashMap<>(); + deploymentRequest.put("deployment", request.getCodeDeployBGDeployment()); String body = JsonMapper.toJson(deploymentRequest); // Send the request. diff --git a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java index b718ab28a..e4ada2fe6 100644 --- a/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java +++ b/src/main/java/com/spotinst/sdkjava/model/api/elastigroup/aws/ApiElastigroupCodeDeployBGDeployment.java @@ -23,7 +23,7 @@ public class ApiElastigroupCodeDeployBGDeployment implements IPartialUpdateEntit //region Members @JsonIgnore private Set isSet; - private String timeout; + private int timeout; private List tags; private List deploymentGroups; //endregion @@ -45,11 +45,12 @@ public void setIsSet(Set isSet) { this.isSet = isSet; } - public String getTimeout() { + public int getTimeout() { return timeout; } - public void setTimeout(String timeout) { + public void setTimeout(int timeout) { + isSet.add("timeout"); this.timeout = timeout; } diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java index c500f3b81..17715dfa1 100644 --- a/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java +++ b/src/main/java/com/spotinst/sdkjava/model/bl/elastigroup/aws/ElastigroupCodeDeployBGDeployment.java @@ -23,7 +23,7 @@ public class ElastigroupCodeDeployBGDeployment implements IPartialUpdateEntity { //region Members @JsonIgnore private Set isSet; - private String timeout; + private int timeout; private List tags; private List deploymentGroups; //endregion @@ -45,11 +45,12 @@ public void setIsSet(Set isSet) { this.isSet = isSet; } - public String getTimeout() { + public int getTimeout() { return timeout; } - public void setTimeout(String timeout) { + public void setTimeout(int timeout) { + isSet.add("timeout"); this.timeout = timeout; } @@ -90,7 +91,7 @@ public static Builder get() { } //region Build methods - public Builder setTimeout(String timeout) { + public Builder setTimeout(int timeout) { codeDeployBGDeployment.setTimeout(timeout); return this; } diff --git a/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java b/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java index 504a52125..0de746e41 100644 --- a/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java +++ b/src/main/java/com/spotinst/sdkjava/model/requests/elastigroup/aws/ElastigroupCreateCodeDeployRequest.java @@ -11,17 +11,17 @@ */ public class ElastigroupCreateCodeDeployRequest { - private ElastigroupCodeDeployBGDeployment codeDeployBGDeployment; + private ElastigroupCodeDeployBGDeployment deployment; private ElastigroupCreateCodeDeployRequest() { } public ElastigroupCodeDeployBGDeployment getCodeDeployBGDeployment() { - return codeDeployBGDeployment; + return deployment; } - public void setCodeDeployBGDeployment(ElastigroupCodeDeployBGDeployment codeDeployBGDeployment) { - this.codeDeployBGDeployment = codeDeployBGDeployment; + public void setCodeDeployBGDeployment(ElastigroupCodeDeployBGDeployment deployment) { + this.deployment = deployment; } public static class Builder { @@ -36,8 +36,8 @@ public static Builder get() { return builder; } - public Builder setCodeDeployBGDeployment(ElastigroupCodeDeployBGDeployment codeDeployBGDeployment) { - createCodeDeployRequest.setCodeDeployBGDeployment(codeDeployBGDeployment); + public Builder setCodeDeployBGDeployment(ElastigroupCodeDeployBGDeployment deployment) { + createCodeDeployRequest.setCodeDeployBGDeployment(deployment); return this; } @@ -48,7 +48,7 @@ public ElastigroupCreateCodeDeployRequest build() { //region Json methods public String toJson() { - ApiElastigroupCodeDeployBGDeployment createCodeDeployRequest = ElastigroupConverter.toDal(codeDeployBGDeployment); + ApiElastigroupCodeDeployBGDeployment createCodeDeployRequest = ElastigroupConverter.toDal(deployment); String codeDeploy = JsonMapper.toJson(createCodeDeployRequest); return codeDeploy; }