From 444efdb514de21d4143bbe8c9bd4d53d5c3592b6 Mon Sep 17 00:00:00 2001 From: Harish Mohan Date: Thu, 11 Sep 2025 11:50:47 -0700 Subject: [PATCH] Updated the cloudformation handlers to use AwsJavaSdk-Rds-2.0 --- aws-rds-dbproxy/pom.xml | 8 +- .../amazon/rds/dbproxy/CallbackContext.java | 5 +- .../amazon/rds/dbproxy/CreateHandler.java | 102 +++++----- .../amazon/rds/dbproxy/DeleteHandler.java | 33 ++- .../amazon/rds/dbproxy/ListHandler.java | 22 +- .../amazon/rds/dbproxy/ReadHandler.java | 45 ++-- .../amazon/rds/dbproxy/UpdateHandler.java | 99 ++++----- .../software/amazon/rds/dbproxy/Utility.java | 58 +++--- .../amazon/rds/dbproxy/CreateHandlerTest.java | 30 ++- .../amazon/rds/dbproxy/DeleteHandlerTest.java | 42 ++-- .../amazon/rds/dbproxy/ListHandlerTest.java | 18 +- .../software/amazon/rds/dbproxy/Matchers.java | 14 +- .../amazon/rds/dbproxy/ReadHandlerTest.java | 83 ++++---- .../amazon/rds/dbproxy/UpdateHandlerTest.java | 64 +++--- aws-rds-dbproxyendpoint/pom.xml | 8 +- .../rds/dbproxyendpoint/CallbackContext.java | 2 +- .../rds/dbproxyendpoint/CreateHandler.java | 71 ++++--- .../rds/dbproxyendpoint/DeleteHandler.java | 32 ++- .../rds/dbproxyendpoint/ListHandler.java | 17 +- .../rds/dbproxyendpoint/ReadHandler.java | 45 ++-- .../rds/dbproxyendpoint/UpdateHandler.java | 83 ++++---- .../amazon/rds/dbproxyendpoint/Utility.java | 21 +- .../dbproxyendpoint/CreateHandlerTest.java | 42 ++-- .../dbproxyendpoint/DeleteHandlerTest.java | 48 +++-- .../rds/dbproxyendpoint/ListHandlerTest.java | 18 +- .../amazon/rds/dbproxyendpoint/Matchers.java | 20 +- .../rds/dbproxyendpoint/ReadHandlerTest.java | 87 ++++---- .../dbproxyendpoint/UpdateHandlerTest.java | 76 +++---- aws-rds-dbproxytargetgroup/pom.xml | 8 +- .../dbproxytargetgroup/CallbackContext.java | 6 +- .../rds/dbproxytargetgroup/CreateHandler.java | 96 ++++----- .../rds/dbproxytargetgroup/DeleteHandler.java | 62 +++--- .../rds/dbproxytargetgroup/ListHandler.java | 24 +-- .../rds/dbproxytargetgroup/ReadHandler.java | 50 ++--- .../rds/dbproxytargetgroup/UpdateHandler.java | 107 +++++----- .../rds/dbproxytargetgroup/Utility.java | 45 ++-- .../dbproxytargetgroup/CreateHandlerTest.java | 192 +++++++++--------- .../dbproxytargetgroup/DeleteHandlerTest.java | 88 ++++---- .../dbproxytargetgroup/ListHandlerTest.java | 37 ++-- .../rds/dbproxytargetgroup/Matchers.java | 6 +- .../dbproxytargetgroup/ReadHandlerTest.java | 118 ++++++----- .../dbproxytargetgroup/UpdateHandlerTest.java | 106 +++++----- 42 files changed, 1076 insertions(+), 1062 deletions(-) diff --git a/aws-rds-dbproxy/pom.xml b/aws-rds-dbproxy/pom.xml index b3d8363..00bfbbf 100644 --- a/aws-rds-dbproxy/pom.xml +++ b/aws-rds-dbproxy/pom.xml @@ -68,11 +68,11 @@ 2.26.0 test - + - com.amazonaws - aws-java-sdk-rds - [1.12.364, 2.0.0) + software.amazon.awssdk + rds + 2.33.6 diff --git a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/CallbackContext.java b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/CallbackContext.java index f4fdd07..ebae5f9 100644 --- a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/CallbackContext.java +++ b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/CallbackContext.java @@ -1,9 +1,6 @@ package software.amazon.rds.dbproxy; -import java.util.List; - -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DBProxy; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/CreateHandler.java b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/CreateHandler.java index ceb408a..3e2234a 100644 --- a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/CreateHandler.java +++ b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/CreateHandler.java @@ -3,16 +3,15 @@ import java.util.ArrayList; import java.util.List; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.CreateDBProxyRequest; -import com.amazonaws.services.rds.model.CreateDBProxyResult; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyAlreadyExistsException; -import com.amazonaws.services.rds.model.DescribeDBProxiesRequest; -import com.amazonaws.services.rds.model.DescribeDBProxiesResult; -import com.amazonaws.services.rds.model.Tag; -import com.amazonaws.services.rds.model.UserAuthConfig; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.CreateDbProxyRequest; +import software.amazon.awssdk.services.rds.model.CreateDbProxyResponse; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.DbProxyAlreadyExistsException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesResponse; +import software.amazon.awssdk.services.rds.model.Tag; +import software.amazon.awssdk.services.rds.model.UserAuthConfig; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -24,7 +23,7 @@ public class CreateHandler extends BaseHandler { public static final String TIMED_OUT_MESSAGE = "Timed out waiting for proxy to become available."; private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; @Override public ProgressEvent handleRequest( @@ -36,8 +35,7 @@ public ProgressEvent handleRequest( final ResourceModel model = request.getDesiredResourceState(); clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); - + rdsClient = RdsClient.create(); final CallbackContext currentContext = callbackContext == null ? CallbackContext.builder().stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES).build() : callbackContext; @@ -65,33 +63,33 @@ private ProgressEvent createProxyAndUpdateProgre .stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES) .build()) .build(); - } catch (DBProxyAlreadyExistsException e) { + } catch (DbProxyAlreadyExistsException e) { return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.AlreadyExists); } - } else if (proxyStateSoFar.getStatus().equals(Constants.AVAILABLE_PROXY_STATE)) { - model.setDBProxyArn(proxyStateSoFar.getDBProxyArn()); - model.setEndpoint(proxyStateSoFar.getEndpoint()); - model.setVpcId(proxyStateSoFar.getVpcId()); - model.setDebugLogging(proxyStateSoFar.getDebugLogging()); - model.setIdleClientTimeout(proxyStateSoFar.getIdleClientTimeout()); - model.setRequireTLS(proxyStateSoFar.getRequireTLS()); + } else if (proxyStateSoFar.status().toString().equals(Constants.AVAILABLE_PROXY_STATE)) { + model.setDBProxyArn(proxyStateSoFar.dbProxyArn()); + model.setEndpoint(proxyStateSoFar.endpoint()); + model.setVpcId(proxyStateSoFar.vpcId()); + model.setDebugLogging(proxyStateSoFar.debugLogging()); + model.setIdleClientTimeout(proxyStateSoFar.idleClientTimeout()); + model.setRequireTLS(proxyStateSoFar.requireTLS()); return ProgressEvent.builder() .resourceModel(model) .status(OperationStatus.SUCCESS) .build(); - } else if (Constants.TERMINAL_FAILURE_STATES.contains(proxyStateSoFar.getStatus())) { + } else if (Constants.TERMINAL_FAILURE_STATES.contains(proxyStateSoFar.status().toString())) { return ProgressEvent.builder() .status(OperationStatus.FAILED) .errorCode(HandlerErrorCode.NotFound) .build(); } else { - model.setDBProxyArn(proxyStateSoFar.getDBProxyArn()); - model.setEndpoint(proxyStateSoFar.getEndpoint()); - model.setVpcId(proxyStateSoFar.getVpcId()); - model.setDebugLogging(proxyStateSoFar.getDebugLogging()); - model.setIdleClientTimeout(proxyStateSoFar.getIdleClientTimeout()); - model.setRequireTLS(proxyStateSoFar.getRequireTLS()); + model.setDBProxyArn(proxyStateSoFar.dbProxyArn()); + model.setEndpoint(proxyStateSoFar.endpoint()); + model.setVpcId(proxyStateSoFar.vpcId()); + model.setDebugLogging(proxyStateSoFar.debugLogging()); + model.setIdleClientTimeout(proxyStateSoFar.idleClientTimeout()); + model.setRequireTLS(proxyStateSoFar.requireTLS()); try { Thread.sleep(Constants.POLL_RETRY_DELAY_IN_MS); @@ -99,7 +97,7 @@ private ProgressEvent createProxyAndUpdateProgre throw new RuntimeException(e); } - DBProxy proxy = updatedProxyProgress(proxyStateSoFar.getDBProxyName()); + DBProxy proxy = updatedProxyProgress(proxyStateSoFar.dbProxyName()); return ProgressEvent.builder() .resourceModel(model) .status(OperationStatus.IN_PROGRESS) @@ -115,20 +113,21 @@ private DBProxy createProxy(ResourceModel model) { List userAuthConfig = Utility.getUserAuthConfigs(model); List tags = getTags(model); - CreateDBProxyRequest request = new CreateDBProxyRequest() - .withAuth(userAuthConfig) - .withDBProxyName(model.getDBProxyName()) - .withDebugLogging(model.getDebugLogging()) - .withEngineFamily(model.getEngineFamily()) - .withIdleClientTimeout(model.getIdleClientTimeout()) - .withRequireTLS(model.getRequireTLS()) - .withRoleArn(model.getRoleArn()) - .withVpcSecurityGroupIds(model.getVpcSecurityGroupIds()) - .withVpcSubnetIds(model.getVpcSubnetIds()) - .withTags(tags); - - CreateDBProxyResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::createDBProxy); - return result.getDBProxy(); + CreateDbProxyRequest request = CreateDbProxyRequest.builder() + .auth(userAuthConfig) + .dbProxyName(model.getDBProxyName()) + .debugLogging(model.getDebugLogging()) + .engineFamily(model.getEngineFamily()) + .idleClientTimeout(model.getIdleClientTimeout()) + .requireTLS(model.getRequireTLS()) + .roleArn(model.getRoleArn()) + .vpcSecurityGroupIds(model.getVpcSecurityGroupIds()) + .vpcSubnetIds(model.getVpcSubnetIds()) + .tags(tags) + .build(); + + CreateDbProxyResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::createDBProxy); + return response.dbProxy(); } private List getTags(ResourceModel model) { @@ -139,21 +138,24 @@ private List getTags(ResourceModel model) { } for(TagFormat tag : model.getTags()){ - Tag t = new Tag().withKey(tag.getKey()).withValue(tag.getValue()); + Tag t = Tag.builder() + .key(tag.getKey()) + .value(tag.getValue()) + .build(); tags.add(t); } return tags; } private DBProxy updatedProxyProgress(String proxyName) { - DescribeDBProxiesRequest describeDBProxiesRequest; - DescribeDBProxiesResult describeDBProxiesResult; + DescribeDbProxiesRequest describeDBProxiesRequest = DescribeDbProxiesRequest.builder() + .dbProxyName(proxyName) + .build(); - describeDBProxiesRequest = new DescribeDBProxiesRequest().withDBProxyName(proxyName); - describeDBProxiesResult = clientProxy.injectCredentialsAndInvoke(describeDBProxiesRequest, rdsClient::describeDBProxies); - return describeDBProxiesResult.getDBProxies() + DescribeDbProxiesResponse describeDbProxiesResponse = clientProxy.injectCredentialsAndInvokeV2(describeDBProxiesRequest, rdsClient::describeDBProxies); + return describeDbProxiesResponse.dbProxies() .stream() .findFirst() - .orElse(new DBProxy()); + .orElse(DBProxy.builder().build()); } } diff --git a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/DeleteHandler.java b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/DeleteHandler.java index 079cef2..c0bcf46 100644 --- a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/DeleteHandler.java +++ b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/DeleteHandler.java @@ -1,12 +1,11 @@ package software.amazon.rds.dbproxy; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyNotFoundException; -import com.amazonaws.services.rds.model.DeleteDBProxyRequest; -import com.amazonaws.services.rds.model.DeleteDBProxyResult; -import com.amazonaws.services.rds.model.DescribeDBProxiesRequest; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.DbProxyNotFoundException; +import software.amazon.awssdk.services.rds.model.DeleteDbProxyRequest; +import software.amazon.awssdk.services.rds.model.DeleteDbProxyResponse; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -18,7 +17,7 @@ public class DeleteHandler extends BaseHandler { private static final String TIMED_OUT_MESSAGE = "Timed out waiting for proxy to terminate."; private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; @Override public ProgressEvent handleRequest( @@ -30,7 +29,7 @@ public ProgressEvent handleRequest( final ResourceModel model = request.getDesiredResourceState(); clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); final CallbackContext currentContext = callbackContext == null ? CallbackContext.builder().stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES).build() : @@ -56,7 +55,7 @@ private ProgressEvent deleteProxyAndUpdateProgre .stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES) .build()) .build(); - } catch (DBProxyNotFoundException e) { + } catch (DbProxyNotFoundException e) { return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.NotFound); } } else if (callbackContext.isDeleted()) { @@ -82,20 +81,18 @@ private ProgressEvent deleteProxyAndUpdateProgre } private DBProxy deleteProxy(String proxyName) { - DeleteDBProxyRequest request = new DeleteDBProxyRequest().withDBProxyName(proxyName); + DeleteDbProxyRequest request = DeleteDbProxyRequest.builder().dbProxyName(proxyName).build(); - DeleteDBProxyResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::deleteDBProxy); - return result.getDBProxy(); + DeleteDbProxyResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::deleteDBProxy); + return response.dbProxy(); } private boolean doesProxyExist(String proxyName) { - DescribeDBProxiesRequest describeDBProxiesRequest; - - describeDBProxiesRequest = new DescribeDBProxiesRequest().withDBProxyName(proxyName); + DescribeDbProxiesRequest describeDBProxiesRequest = DescribeDbProxiesRequest.builder().dbProxyName(proxyName).build(); try { - clientProxy.injectCredentialsAndInvoke(describeDBProxiesRequest, rdsClient::describeDBProxies); + clientProxy.injectCredentialsAndInvokeV2(describeDBProxiesRequest, rdsClient::describeDBProxies); return true; - } catch (DBProxyNotFoundException e) { + } catch (DbProxyNotFoundException e) { return false; } } diff --git a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/ListHandler.java b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/ListHandler.java index 420f7a2..79a252a 100644 --- a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/ListHandler.java +++ b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/ListHandler.java @@ -3,10 +3,9 @@ import java.util.List; import java.util.stream.Collectors; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.DescribeDBProxiesRequest; -import com.amazonaws.services.rds.model.DescribeDBProxiesResult; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; @@ -18,7 +17,7 @@ public class ListHandler extends BaseHandler { private static final int MAX_RESULTS = 100; private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; @Override public ProgressEvent handleRequest( @@ -28,7 +27,7 @@ public ProgressEvent handleRequest( final Logger logger) { clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); final List models = listProxies(request.getNextToken()); @@ -39,12 +38,13 @@ public ProgressEvent handleRequest( } private List listProxies(String nextToken) { - DescribeDBProxiesRequest request = new DescribeDBProxiesRequest().withMaxRecords(MAX_RESULTS).withMarker(nextToken); + DescribeDbProxiesRequest request = DescribeDbProxiesRequest.builder() + .maxRecords(MAX_RESULTS) + .marker(nextToken) + .build(); - DescribeDBProxiesResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::describeDBProxies); + DescribeDbProxiesResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::describeDBProxies); - List models = result.getDBProxies().stream().map(r -> Utility.resultToModel(r)).collect(Collectors.toList()); - - return models; + return response.dbProxies().stream().map(r -> Utility.resultToModel(r)).collect(Collectors.toList()); } } diff --git a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/ReadHandler.java b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/ReadHandler.java index 621447b..06eba41 100644 --- a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/ReadHandler.java +++ b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/ReadHandler.java @@ -3,15 +3,14 @@ import java.util.ArrayList; import java.util.List; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyNotFoundException; -import com.amazonaws.services.rds.model.DescribeDBProxiesRequest; -import com.amazonaws.services.rds.model.DescribeDBProxiesResult; -import com.amazonaws.services.rds.model.ListTagsForResourceRequest; -import com.amazonaws.services.rds.model.ListTagsForResourceResult; -import com.amazonaws.services.rds.model.Tag; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DbProxyNotFoundException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesResponse; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.ListTagsForResourceRequest; +import software.amazon.awssdk.services.rds.model.ListTagsForResourceResponse; +import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.cloudformation.exceptions.CfnNotFoundException; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; @@ -22,7 +21,7 @@ public class ReadHandler extends BaseHandler { private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; @Override public ProgressEvent handleRequest( @@ -32,12 +31,12 @@ public ProgressEvent handleRequest( final Logger logger) { clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); final ResourceModel model; try { model = describeDBProxy(request.getDesiredResourceState().getDBProxyName()); - } catch (DBProxyNotFoundException | CfnNotFoundException e) { + } catch (DbProxyNotFoundException | CfnNotFoundException e) { return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.NotFound); } @@ -48,18 +47,18 @@ public ProgressEvent handleRequest( } private ResourceModel describeDBProxy(final String proxyName) { - DescribeDBProxiesRequest request = new DescribeDBProxiesRequest().withDBProxyName(proxyName); + DescribeDbProxiesRequest request = DescribeDbProxiesRequest.builder().dbProxyName(proxyName).build(); - final DescribeDBProxiesResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::describeDBProxies); + final DescribeDbProxiesResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::describeDBProxies); - if (result != null && result.getDBProxies() != null && result.getDBProxies().size() == 1) { - DBProxy proxy = result.getDBProxies().get(0); + if (response != null && response.dbProxies() != null && response.dbProxies().size() == 1) { + DBProxy proxy = response.dbProxies().get(0); ResourceModel resourceModel = Utility.resultToModel(proxy); - ListTagsForResourceRequest tagRequest = new ListTagsForResourceRequest().withResourceName(proxy.getDBProxyArn()); + ListTagsForResourceRequest tagRequest = ListTagsForResourceRequest.builder().resourceName(proxy.dbProxyArn()).build(); - final ListTagsForResourceResult tagResult = clientProxy.injectCredentialsAndInvoke(tagRequest, rdsClient::listTagsForResource); - if (tagResult != null && tagResult.getTagList()!= null && tagResult.getTagList().size() > 0) { - resourceModel.setTags(convertTags(tagResult.getTagList())); + final ListTagsForResourceResponse tagsResponse = clientProxy.injectCredentialsAndInvokeV2(tagRequest, rdsClient::listTagsForResource); + if (tagsResponse != null && tagsResponse.tagList()!= null && !tagsResponse.tagList().isEmpty()) { + resourceModel.setTags(convertTags(tagsResponse.tagList())); } return resourceModel; } else { @@ -70,14 +69,14 @@ private ResourceModel describeDBProxy(final String proxyName) { private List convertTags(List tags) { List convertedTags = new ArrayList<>(); - if (tags == null || tags.size() == 0) { + if (tags == null || tags.isEmpty()) { return convertedTags; } for(Tag tag : tags){ convertedTags.add(TagFormat.builder() - .key(tag.getKey()) - .value(tag.getValue()) + .key(tag.key()) + .value(tag.value()) .build()); } diff --git a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/UpdateHandler.java b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/UpdateHandler.java index dceb4aa..55b8476 100644 --- a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/UpdateHandler.java +++ b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/UpdateHandler.java @@ -5,18 +5,18 @@ import java.util.Optional; import java.util.stream.Collectors; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.AddTagsToResourceRequest; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyNotFoundException; -import com.amazonaws.services.rds.model.DescribeDBProxiesRequest; -import com.amazonaws.services.rds.model.DescribeDBProxiesResult; -import com.amazonaws.services.rds.model.ModifyDBProxyRequest; -import com.amazonaws.services.rds.model.ModifyDBProxyResult; -import com.amazonaws.services.rds.model.RemoveTagsFromResourceRequest; -import com.amazonaws.services.rds.model.Tag; -import com.amazonaws.services.rds.model.UserAuthConfig; + +import software.amazon.awssdk.services.rds.model.AddTagsToResourceRequest; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DbProxyNotFoundException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesResponse; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyRequest; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyResponse; +import software.amazon.awssdk.services.rds.model.RemoveTagsFromResourceRequest; +import software.amazon.awssdk.services.rds.model.Tag; +import software.amazon.awssdk.services.rds.model.UserAuthConfig; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -26,7 +26,7 @@ public class UpdateHandler extends BaseHandler { private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; private Logger log; private static final String TIMED_OUT_MESSAGE = "Timed out waiting for proxy to finish modification."; @@ -41,7 +41,7 @@ public ProgressEvent handleRequest( final ResourceModel oldModel = request.getPreviousResourceState(); clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); log = logger; final CallbackContext currentContext = callbackContext == null ? @@ -73,7 +73,7 @@ private ProgressEvent updateProxyAndUpdateProgre .stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES) .build()) .build(); - } catch (DBProxyNotFoundException e) { + } catch (DbProxyNotFoundException e) { return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.NotFound); } } @@ -104,17 +104,17 @@ private ProgressEvent updateProxyAndUpdateProgre .build(); } - if (proxyStateSoFar.getStatus().equals(Constants.AVAILABLE_PROXY_STATE)) { - newModel.setVpcId(proxyStateSoFar.getVpcId()); - newModel.setDebugLogging(proxyStateSoFar.getDebugLogging()); - newModel.setIdleClientTimeout(proxyStateSoFar.getIdleClientTimeout()); - newModel.setRequireTLS(proxyStateSoFar.getRequireTLS()); + if (proxyStateSoFar.status().toString().equals(Constants.AVAILABLE_PROXY_STATE)) { + newModel.setVpcId(proxyStateSoFar.vpcId()); + newModel.setDebugLogging(proxyStateSoFar.debugLogging()); + newModel.setIdleClientTimeout(proxyStateSoFar.idleClientTimeout()); + newModel.setRequireTLS(proxyStateSoFar.requireTLS()); return ProgressEvent.builder() .resourceModel(newModel) .status(OperationStatus.SUCCESS) .build(); - } else if (Constants.TERMINAL_FAILURE_STATES.contains(proxyStateSoFar.getStatus())) { + } else if (Constants.TERMINAL_FAILURE_STATES.contains(proxyStateSoFar.status().toString())) { return ProgressEvent.builder() .status(OperationStatus.FAILED) .errorCode(HandlerErrorCode.NotFound) @@ -126,7 +126,7 @@ private ProgressEvent updateProxyAndUpdateProgre throw new RuntimeException(e); } - DBProxy proxy = updatedProxyProgress(proxyStateSoFar.getDBProxyName()); + DBProxy proxy = updatedProxyProgress(proxyStateSoFar.dbProxyName()); return ProgressEvent.builder() .resourceModel(newModel) .status(OperationStatus.IN_PROGRESS) @@ -152,7 +152,7 @@ private List listNewTags(List list1, List list2 } private List toRDSTags(List tagList) { - return tagList.stream().map(t -> new Tag().withKey(t.getKey()).withValue(t.getValue())).collect(Collectors.toList()); + return tagList.stream().map(t -> Tag.builder().key(t.getKey()).value(t.getValue()).build()).collect(Collectors.toList()); } private boolean deregisterOldTags(ResourceModel oldModel, ResourceModel newModel, DBProxy proxy) { @@ -162,10 +162,11 @@ private boolean deregisterOldTags(ResourceModel oldModel, ResourceModel newModel List tagKeyList = tagsToRemove.stream().map(t -> t.getKey()).collect(Collectors.toList()); if (tagKeyList.size() > 0) { - RemoveTagsFromResourceRequest removeTagsRequest = new RemoveTagsFromResourceRequest() - .withResourceName(proxy.getDBProxyArn()) - .withTagKeys(tagKeyList); - clientProxy.injectCredentialsAndInvoke(removeTagsRequest, rdsClient::removeTagsFromResource); + RemoveTagsFromResourceRequest removeTagsRequest = RemoveTagsFromResourceRequest.builder() + .resourceName(proxy.dbProxyArn()) + .tagKeys(tagKeyList) + .build(); + clientProxy.injectCredentialsAndInvokeV2(removeTagsRequest, rdsClient::removeTagsFromResource); } return true; } @@ -175,38 +176,40 @@ private boolean registerNewTags(ResourceModel oldModel, ResourceModel newModel, List newTags = getTagKeys(newModel); List tagsToAdd = listNewTags(newTags, oldTags); if (tagsToAdd.size() > 0 ) { - AddTagsToResourceRequest addTagsRequest = new AddTagsToResourceRequest() - .withResourceName(proxy.getDBProxyArn()) - .withTags(toRDSTags(tagsToAdd)); - clientProxy.injectCredentialsAndInvoke(addTagsRequest, rdsClient::addTagsToResource); + AddTagsToResourceRequest addTagsRequest = AddTagsToResourceRequest.builder() + .resourceName(proxy.dbProxyArn()) + .tags(toRDSTags(tagsToAdd)) + .build(); + clientProxy.injectCredentialsAndInvokeV2(addTagsRequest, rdsClient::addTagsToResource); } return true; } private DBProxy updateProxySettings(ResourceModel oldModel, ResourceModel newModel) { List userAuthConfig = Utility.getUserAuthConfigs(newModel); - ModifyDBProxyRequest request = new ModifyDBProxyRequest() - .withAuth(userAuthConfig) - .withDBProxyName(oldModel.getDBProxyName()) - .withDebugLogging(newModel.getDebugLogging()) - .withIdleClientTimeout(newModel.getIdleClientTimeout()) - .withRequireTLS(newModel.getRequireTLS()) - .withRoleArn(newModel.getRoleArn()) - .withSecurityGroups(newModel.getVpcSecurityGroupIds()); - - ModifyDBProxyResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::modifyDBProxy); - return result.getDBProxy(); + ModifyDbProxyRequest request = ModifyDbProxyRequest.builder() + .auth(userAuthConfig) + .dbProxyName(oldModel.getDBProxyName()) + .debugLogging(newModel.getDebugLogging()) + .idleClientTimeout(newModel.getIdleClientTimeout()) + .requireTLS(newModel.getRequireTLS()) + .roleArn(newModel.getRoleArn()) + .securityGroups(newModel.getVpcSecurityGroupIds()) + .build(); + + ModifyDbProxyResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::modifyDBProxy); + return response.dbProxy(); } private DBProxy updatedProxyProgress(String proxyName) { - DescribeDBProxiesRequest describeDBProxiesRequest; - DescribeDBProxiesResult describeDBProxiesResult; + DescribeDbProxiesRequest describeDBProxiesRequest = DescribeDbProxiesRequest.builder() + .dbProxyName(proxyName) + .build(); - describeDBProxiesRequest = new DescribeDBProxiesRequest().withDBProxyName(proxyName); - describeDBProxiesResult = clientProxy.injectCredentialsAndInvoke(describeDBProxiesRequest, rdsClient::describeDBProxies); - return describeDBProxiesResult.getDBProxies() + DescribeDbProxiesResponse describeDbProxiesResponse = clientProxy.injectCredentialsAndInvokeV2(describeDBProxiesRequest, rdsClient::describeDBProxies); + return describeDbProxiesResponse.dbProxies() .stream() .findFirst() - .orElse(new DBProxy()); + .orElse(DBProxy.builder().build()); } } diff --git a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/Utility.java b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/Utility.java index 57f4143..ea605c8 100644 --- a/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/Utility.java +++ b/aws-rds-dbproxy/src/main/java/software/amazon/rds/dbproxy/Utility.java @@ -8,9 +8,10 @@ import java.util.function.Function; import java.util.stream.Collectors; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.UserAuthConfig; -import com.amazonaws.services.rds.model.UserAuthConfigInfo; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.UserAuthConfig; +import software.amazon.awssdk.services.rds.model.UserAuthConfigInfo; + public class Utility { static List map(Collection xs, Function f) { @@ -18,32 +19,32 @@ static List map(Collection xs, Function f) { .collect(Collectors.toList()); } - public static ResourceModel resultToModel(DBProxy proxy){ - List authModels = proxy.getAuth().stream().map(a -> resultToModel(a)).collect(Collectors.toList()); + public static ResourceModel resultToModel(DBProxy proxy) { + List authModels = proxy.auth().stream().map(a -> resultToModel(a)).collect(Collectors.toList()); return ResourceModel .builder() .auth(authModels) - .dBProxyArn(proxy.getDBProxyArn()) - .dBProxyName(proxy.getDBProxyName()) - .debugLogging(proxy.getDebugLogging()) - .endpoint(proxy.getEndpoint()) - .engineFamily(proxy.getEngineFamily()) - .idleClientTimeout(proxy.getIdleClientTimeout()) - .requireTLS(proxy.getRequireTLS()) - .roleArn(proxy.getRoleArn()) - .vpcId(proxy.getVpcId()) - .vpcSecurityGroupIds(proxy.getVpcSecurityGroupIds()) - .vpcSubnetIds(proxy.getVpcSubnetIds()) + .dBProxyArn(proxy.dbProxyArn()) + .dBProxyName(proxy.dbProxyName()) + .debugLogging(proxy.debugLogging()) + .endpoint(proxy.endpoint()) + .engineFamily(proxy.engineFamily()) + .idleClientTimeout(proxy.idleClientTimeout()) + .requireTLS(proxy.requireTLS()) + .roleArn(proxy.roleArn()) + .vpcId(proxy.vpcId()) + .vpcSecurityGroupIds(proxy.vpcSecurityGroupIds()) + .vpcSubnetIds(proxy.vpcSubnetIds()) .build(); } public static AuthFormat resultToModel(UserAuthConfigInfo auth) { return AuthFormat.builder() - .authScheme(auth.getAuthScheme()) - .description(auth.getDescription()) - .iAMAuth(auth.getIAMAuth()) - .secretArn(auth.getSecretArn()) - .clientPasswordAuthType(auth.getClientPasswordAuthType()) + .authScheme(auth.authScheme() != null ? auth.authScheme().toString() : null) + .description(auth.description()) + .iAMAuth(auth.iamAuth() != null ? auth.iamAuth().toString() : null) + .secretArn(auth.secretArn()) + .clientPasswordAuthType(auth.clientPasswordAuthType() != null ? auth.clientPasswordAuthType().toString() : null) .build(); } @@ -54,13 +55,14 @@ public static List getUserAuthConfigs(ResourceModel model) { return userAuthConfigList; } - for(AuthFormat auth : model.getAuth()){ - UserAuthConfig uac = new UserAuthConfig() - .withAuthScheme(auth.getAuthScheme()) - .withDescription(auth.getDescription()) - .withIAMAuth(auth.getIAMAuth()) - .withSecretArn(auth.getSecretArn()) - .withClientPasswordAuthType(auth.getClientPasswordAuthType()); + for (AuthFormat auth : model.getAuth()) { + UserAuthConfig uac = UserAuthConfig.builder() + .authScheme(auth.getAuthScheme()) + .description(auth.getDescription()) + .iamAuth(auth.getIAMAuth()) + .secretArn(auth.getSecretArn()) + .clientPasswordAuthType(auth.getClientPasswordAuthType()) + .build(); userAuthConfigList.add(uac); } return userAuthConfigList; diff --git a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/CreateHandlerTest.java b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/CreateHandlerTest.java index 6ee3bf5..e56ff09 100644 --- a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/CreateHandlerTest.java +++ b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/CreateHandlerTest.java @@ -14,13 +14,11 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.CreateDBProxyRequest; -import com.amazonaws.services.rds.model.CreateDBProxyResult; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DescribeDBProxiesRequest; -import com.amazonaws.services.rds.model.DescribeDBProxiesResult; +import software.amazon.awssdk.services.rds.model.CreateDbProxyRequest; +import software.amazon.awssdk.services.rds.model.CreateDbProxyResponse; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -45,9 +43,9 @@ public void setup() { @Test public void handleRequest_InitialRunCreateProxy() { - DBProxy dbProxy = new DBProxy().withStatus("creating"); - doReturn(new CreateDBProxyResult().withDBProxy(dbProxy)).when(proxy).injectCredentialsAndInvoke(any(CreateDBProxyRequest.class), - ArgumentMatchers.>>any()); + DBProxy dbProxy = DBProxy.builder().status("creating").build(); + doReturn(CreateDbProxyResponse.builder().dbProxy(dbProxy).build()).when(proxy).injectCredentialsAndInvokeV2(any(CreateDbProxyRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); @@ -80,9 +78,9 @@ public void handleRequest_InitialRunCreateProxy() { @Test public void handleRequest_Creating() { - DBProxy dbProxy = new DBProxy().withStatus("creating"); - doReturn(new DescribeDBProxiesResult().withDBProxies(dbProxy)).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxiesRequest.class), - ArgumentMatchers.>>any()); + DBProxy dbProxy = DBProxy.builder().status("creating").build(); + doReturn(DescribeDbProxiesResponse.builder().dbProxies(dbProxy).build()).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxiesRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); @@ -111,7 +109,7 @@ public void handleRequest_Creating() { @Test public void handleRequest_Available() { - DBProxy dbProxy = new DBProxy().withStatus("available"); + DBProxy dbProxy = DBProxy.builder().status("available").build(); final CreateHandler handler = new CreateHandler(); @@ -151,7 +149,7 @@ public void handleRequest_terminalState() { final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(60) - .proxy(new DBProxy().withStatus("incompatible-network")) + .proxy(DBProxy.builder().status("incompatible-network").build()) .build(); final ProgressEvent response @@ -179,7 +177,7 @@ public void testStabilizationTimeout() { final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(0) - .proxy(new DBProxy().withStatus("creating")) + .proxy(DBProxy.builder().status("creating").build()) .build(); try { diff --git a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/DeleteHandlerTest.java b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/DeleteHandlerTest.java index 979905d..cc71ea6 100644 --- a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/DeleteHandlerTest.java +++ b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/DeleteHandlerTest.java @@ -15,14 +15,12 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyNotFoundException; -import com.amazonaws.services.rds.model.DeleteDBProxyRequest; -import com.amazonaws.services.rds.model.DeleteDBProxyResult; -import com.amazonaws.services.rds.model.DescribeDBProxiesRequest; -import com.amazonaws.services.rds.model.DescribeDBProxiesResult; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.DbProxyNotFoundException; +import software.amazon.awssdk.services.rds.model.DeleteDbProxyRequest; +import software.amazon.awssdk.services.rds.model.DeleteDbProxyResponse; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -47,7 +45,7 @@ public void setup() { @Test public void handleRequest_SimpleSuccess() { - DBProxy dbProxy = new DBProxy().withStatus("deleting"); + DBProxy dbProxy = DBProxy.builder().status("deleting").build(); final DeleteHandler handler = new DeleteHandler(); @@ -78,10 +76,10 @@ public void handleRequest_SimpleSuccess() { @Test public void handleRequest_alreadyDeletedTest() { - DBProxyNotFoundException exception = new DBProxyNotFoundException(TestConstants.NOT_FOUND_ERROR_MESSAGE); + DbProxyNotFoundException exception = DbProxyNotFoundException.builder().message(TestConstants.NOT_FOUND_ERROR_MESSAGE).build(); - doThrow(exception).when(proxy).injectCredentialsAndInvoke(any(DeleteDBProxyRequest.class), - ArgumentMatchers.>>any()); + doThrow(exception).when(proxy).injectCredentialsAndInvokeV2(any(DeleteDbProxyRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); @@ -100,7 +98,7 @@ public void handleRequest_alreadyDeletedTest() { final CallbackContext desiredOutputContext = CallbackContext.builder() .stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES) - .proxy(new DBProxy()) + .proxy(DBProxy.builder().build()) .build(); assertThat(response).isNotNull(); assertThat(response.getStatus()).isEqualTo(OperationStatus.FAILED); @@ -114,9 +112,9 @@ public void handleRequest_alreadyDeletedTest() { @Test public void handleRequest_deleteTest() { - DBProxy dbProxy = new DBProxy().withStatus("deleting"); - doReturn(new DeleteDBProxyResult().withDBProxy(dbProxy)).when(proxy).injectCredentialsAndInvoke(any(DeleteDBProxyRequest.class), - ArgumentMatchers.>>any()); + DBProxy dbProxy = DBProxy.builder().status("deleting").build(); + doReturn(DeleteDbProxyResponse.builder().dbProxy(dbProxy).build()).when(proxy).injectCredentialsAndInvokeV2(any(DeleteDbProxyRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); @@ -149,9 +147,9 @@ public void handleRequest_deleteTest() { @Test public void handleRequest_deletingTest() { - DBProxy dbProxy = new DBProxy().withStatus("deleting"); - doReturn(new DescribeDBProxiesResult().withDBProxies(dbProxy)).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxiesRequest.class), - ArgumentMatchers.>>any()); + DBProxy dbProxy = DBProxy.builder().status("deleting").build(); + doReturn(DescribeDbProxiesResponse.builder().dbProxies(dbProxy).build()).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxiesRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); @@ -185,9 +183,9 @@ public void handleRequest_deletingTest() { @Test public void handleRequest_deletedTest() { - DBProxy dbProxy = new DBProxy().withStatus("deleting"); - doThrow(new DBProxyNotFoundException("")).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxiesRequest.class), - ArgumentMatchers.>>any()); + DBProxy dbProxy = DBProxy.builder().status("deleting").build(); + doThrow(DbProxyNotFoundException.builder().message("").build()).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxiesRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); diff --git a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/ListHandlerTest.java b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/ListHandlerTest.java index 7a39f05..c82973d 100644 --- a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/ListHandlerTest.java +++ b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/ListHandlerTest.java @@ -16,12 +16,10 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DescribeDBProxiesRequest; -import com.amazonaws.services.rds.model.DescribeDBProxiesResult; +import software.amazon.awssdk.services.rds.model.DBProxy; import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; @@ -49,14 +47,14 @@ public void handleRequest_SimpleSuccess() { final ResourceModel model = ResourceModel.builder().build(); - DBProxy proxy1 = new DBProxy().withDBProxyName("proxy1"); - DBProxy proxy2 = new DBProxy().withDBProxyName("proxy2"); + DBProxy proxy1 = DBProxy.builder().dbProxyName("proxy1").build(); + DBProxy proxy2 = DBProxy.builder().dbProxyName("proxy2").build(); final List existingProxies = ImmutableList.of(proxy1, proxy2); - doReturn(new DescribeDBProxiesResult().withDBProxies(existingProxies)) + doReturn(DescribeDbProxiesResponse.builder().dbProxies(existingProxies).build()) .when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxiesRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(DescribeDbProxiesRequest.class), + ArgumentMatchers.>any()); final ResourceHandlerRequest request = ResourceHandlerRequest.builder() diff --git a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/Matchers.java b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/Matchers.java index d83ce86..0f444ea 100644 --- a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/Matchers.java +++ b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/Matchers.java @@ -2,18 +2,18 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.amazonaws.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.DBProxy; public class Matchers { public static void assertThatModelsAreEqual(final Object rawModel, final DBProxy sdkModel) { assertThat(rawModel).isInstanceOf(ResourceModel.class); ResourceModel model = (ResourceModel)rawModel; - assertThat(model.getDBProxyName()).isEqualTo(sdkModel.getDBProxyName()); - assertThat(model.getDBProxyArn()).isEqualTo(sdkModel.getDBProxyArn()); - assertThat(model.getRoleArn()).isEqualTo(sdkModel.getRoleArn()); - assertThat(model.getVpcId()).isEqualTo(sdkModel.getVpcId()); - assertThat(model.getVpcSubnetIds()).isEqualTo(sdkModel.getVpcSubnetIds()); - assertThat(model.getVpcSecurityGroupIds()).isEqualTo(sdkModel.getVpcSecurityGroupIds()); + assertThat(model.getDBProxyName()).isEqualTo(sdkModel.dbProxyName()); + assertThat(model.getDBProxyArn()).isEqualTo(sdkModel.dbProxyArn()); + assertThat(model.getRoleArn()).isEqualTo(sdkModel.roleArn()); + assertThat(model.getVpcId()).isEqualTo(sdkModel.vpcId()); + assertThat(model.getVpcSubnetIds()).isEqualTo(sdkModel.vpcSubnetIds()); + assertThat(model.getVpcSecurityGroupIds()).isEqualTo(sdkModel.vpcSecurityGroupIds()); } } diff --git a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/ReadHandlerTest.java b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/ReadHandlerTest.java index 6748fbb..93dcd88 100644 --- a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/ReadHandlerTest.java +++ b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/ReadHandlerTest.java @@ -17,16 +17,15 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyNotFoundException; -import com.amazonaws.services.rds.model.DescribeDBProxiesRequest; -import com.amazonaws.services.rds.model.DescribeDBProxiesResult; -import com.amazonaws.services.rds.model.ListTagsForResourceRequest; -import com.amazonaws.services.rds.model.ListTagsForResourceResult; -import com.amazonaws.services.rds.model.Tag; +import software.amazon.awssdk.services.rds.model.DBProxy; + import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.DbProxyNotFoundException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxiesResponse; +import software.amazon.awssdk.services.rds.model.ListTagsForResourceRequest; +import software.amazon.awssdk.services.rds.model.ListTagsForResourceResponse; +import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -53,21 +52,23 @@ public void setup() { public void handleRequest_SimpleSuccess() { final ReadHandler handler = new ReadHandler(); - DBProxy proxy1 = new DBProxy().withDBProxyName("proxy1") - .withDBProxyArn("arn") - .withRoleArn("rolearn") - .withVpcId("vpcId") - .withVpcSubnetIds("vpcsubnet1", "vpcsubnet2") - .withVpcSecurityGroupIds("sg1", "sg2"); + DBProxy proxy1 = DBProxy.builder() + .dbProxyName("proxy1") + .dbProxyArn("arn") + .roleArn("rolearn") + .vpcId("vpcId") + .vpcSubnetIds("vpcsubnet1", "vpcsubnet2") + .vpcSecurityGroupIds("sg1", "sg2") + .build(); final List existingProxies = ImmutableList.of(proxy1); - doReturn(new DescribeDBProxiesResult().withDBProxies(existingProxies)) + doReturn(DescribeDbProxiesResponse.builder().dbProxies(existingProxies).build()) .when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxiesRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(DescribeDbProxiesRequest.class), + ArgumentMatchers.>any()); - doReturn(new ListTagsForResourceResult()).when(proxy).injectCredentialsAndInvoke(any(ListTagsForResourceRequest.class), - ArgumentMatchers.>>any()); + doReturn(ListTagsForResourceResponse.builder().build()).when(proxy).injectCredentialsAndInvokeV2(any(ListTagsForResourceRequest.class), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyName("proxy1").build(); @@ -92,29 +93,31 @@ public void handleRequest_SimpleSuccess() { public void handleRequest_WithTags() { final ReadHandler handler = new ReadHandler(); - DBProxy proxy1 = new DBProxy().withDBProxyName("proxy1") - .withDBProxyArn("arn") - .withRoleArn("rolearn") - .withVpcId("vpcId") - .withVpcSubnetIds("vpcsubnet1", "vpcsubnet2") - .withVpcSecurityGroupIds("sg1", "sg2"); + DBProxy proxy1 = DBProxy.builder() + .dbProxyName("proxy1") + .dbProxyArn("arn") + .roleArn("rolearn") + .vpcId("vpcId") + .vpcSubnetIds("vpcsubnet1", "vpcsubnet2") + .vpcSecurityGroupIds("sg1", "sg2") + .build(); final List existingProxies = ImmutableList.of(proxy1); - doReturn(new DescribeDBProxiesResult().withDBProxies(existingProxies)) + doReturn(DescribeDbProxiesResponse.builder().dbProxies(existingProxies).build()) .when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxiesRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(DescribeDbProxiesRequest.class), + ArgumentMatchers.>any()); String tagKey = "tagKey"; String tagValue = "tagValue"; String tagKey2 = "tagKey2"; String tagValue2 = "tagValue2"; - List tagList = ImmutableList.of(new Tag().withKey(tagKey).withValue(tagValue), - new Tag().withKey(tagKey2).withValue(tagValue2)); - doReturn(new ListTagsForResourceResult().withTagList(tagList)) + List tagList = ImmutableList.of(Tag.builder().key(tagKey).value(tagValue).build(), + Tag.builder().key(tagKey2).value(tagValue2).build()); + doReturn(ListTagsForResourceResponse.builder().tagList(tagList).build()) .when(proxy) - .injectCredentialsAndInvoke(any(ListTagsForResourceRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(ListTagsForResourceRequest.class), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyName("proxy1").build(); @@ -144,10 +147,10 @@ public void handleRequest_WithTags() { public void handleRequest_ResourceNotFound() { final ReadHandler handler = new ReadHandler(); - doReturn(new DescribeDBProxiesResult()) + doReturn(DescribeDbProxiesResponse.builder().build()) .when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxiesRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(DescribeDbProxiesRequest.class), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyName("proxy1").build(); @@ -171,11 +174,11 @@ public void handleRequest_ResourceNotFound() { public void handleRequest_ResourceNotFoundExceptionFromRDS() { final ReadHandler handler = new ReadHandler(); - DBProxyNotFoundException exception = new DBProxyNotFoundException(TestConstants.NOT_FOUND_ERROR_MESSAGE); + DbProxyNotFoundException exception = DbProxyNotFoundException.builder().message(TestConstants.NOT_FOUND_ERROR_MESSAGE).build(); doThrow(exception) .when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxiesRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(DescribeDbProxiesRequest.class), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyName("proxy1").build(); diff --git a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/UpdateHandlerTest.java b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/UpdateHandlerTest.java index 4c9b940..30f3638 100644 --- a/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/UpdateHandlerTest.java +++ b/aws-rds-dbproxy/src/test/java/software/amazon/rds/dbproxy/UpdateHandlerTest.java @@ -17,15 +17,15 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.AddTagsToResourceRequest; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.ModifyDBProxyRequest; -import com.amazonaws.services.rds.model.ModifyDBProxyResult; -import com.amazonaws.services.rds.model.RemoveTagsFromResourceRequest; -import com.amazonaws.services.rds.model.Tag; +import software.amazon.awssdk.services.rds.model.AddTagsToResourceRequest; +import software.amazon.awssdk.services.rds.model.AddTagsToResourceResponse; +import software.amazon.awssdk.services.rds.model.DBProxy; import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyRequest; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyResponse; +import software.amazon.awssdk.services.rds.model.RemoveTagsFromResourceRequest; +import software.amazon.awssdk.services.rds.model.RemoveTagsFromResourceResponse; +import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; @@ -49,7 +49,7 @@ public void setup() { @Test public void handleRequest_SimpleSuccess() { - DBProxy dbProxy = new DBProxy().withStatus(AVAILABLE_PROXY_STATE); + DBProxy dbProxy = DBProxy.builder().status(AVAILABLE_PROXY_STATE).build(); final CallbackContext context = CallbackContext.builder() .proxy(dbProxy) .stabilizationRetriesRemaining(1) @@ -81,9 +81,9 @@ public void handleRequest_SimpleSuccess() { @Test public void testModifyProxy() { - DBProxy dbProxy = new DBProxy().withStatus(AVAILABLE_PROXY_STATE); - doReturn(new ModifyDBProxyResult().withDBProxy(dbProxy)).when(proxy).injectCredentialsAndInvoke(any(ModifyDBProxyRequest.class), - ArgumentMatchers.>>any()); + DBProxy dbProxy = DBProxy.builder().status(AVAILABLE_PROXY_STATE).build(); + doReturn(ModifyDbProxyResponse.builder().dbProxy(dbProxy).build()).when(proxy).injectCredentialsAndInvokeV2(any(ModifyDbProxyRequest.class), + ArgumentMatchers.>any()); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) @@ -118,7 +118,7 @@ public void testModifyProxy() { @Test public void testDeregisterTags() { - DBProxy dbProxy = new DBProxy().withStatus(AVAILABLE_PROXY_STATE); + DBProxy dbProxy = DBProxy.builder().status(AVAILABLE_PROXY_STATE).build(); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) .proxy(dbProxy) @@ -158,15 +158,15 @@ public void testDeregisterTags() { assertThat(response.getErrorCode()).isNull(); ArgumentCaptor captor = ArgumentCaptor.forClass(RemoveTagsFromResourceRequest.class); - verify(proxy).injectCredentialsAndInvoke(captor.capture(), - ArgumentMatchers.>>any()); + verify(proxy).injectCredentialsAndInvokeV2(captor.capture(), + ArgumentMatchers.>any()); RemoveTagsFromResourceRequest removeTagsRequest = captor.getValue(); - assertThat(removeTagsRequest.getTagKeys().size()).isEqualTo(2); + assertThat(removeTagsRequest.tagKeys().size()).isEqualTo(2); } @Test public void testRegisterTags() { - DBProxy dbProxy = new DBProxy().withStatus(AVAILABLE_PROXY_STATE); + DBProxy dbProxy = DBProxy.builder().status(AVAILABLE_PROXY_STATE).build(); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) .tagsDeregistered(true) @@ -209,15 +209,15 @@ public void testRegisterTags() { assertThat(response.getErrorCode()).isNull(); ArgumentCaptor captor = ArgumentCaptor.forClass(AddTagsToResourceRequest.class); - verify(proxy).injectCredentialsAndInvoke(captor.capture(), - ArgumentMatchers.>>any()); + verify(proxy).injectCredentialsAndInvokeV2(captor.capture(), + ArgumentMatchers.>any()); AddTagsToResourceRequest removeTagsRequest = captor.getValue(); - assertThat(removeTagsRequest.getTags().size()).isEqualTo(2); + assertThat(removeTagsRequest.tags().size()).isEqualTo(2); } @Test public void testChangedTagValue_deregister() { - DBProxy dbProxy = new DBProxy().withStatus(AVAILABLE_PROXY_STATE); + DBProxy dbProxy = DBProxy.builder().status(AVAILABLE_PROXY_STATE).build(); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) .proxy(dbProxy) @@ -262,16 +262,16 @@ public void testChangedTagValue_deregister() { assertThat(response.getErrorCode()).isNull(); ArgumentCaptor captor = ArgumentCaptor.forClass(RemoveTagsFromResourceRequest.class); - verify(proxy).injectCredentialsAndInvoke(captor.capture(), - ArgumentMatchers.>>any()); + verify(proxy).injectCredentialsAndInvokeV2(captor.capture(), + ArgumentMatchers.>any()); RemoveTagsFromResourceRequest removeTagsRequest = captor.getValue(); - assertThat(removeTagsRequest.getTagKeys().size()).isEqualTo(1); - assertThat(removeTagsRequest.getTagKeys().get(0)).isEqualTo(sharedKey); + assertThat(removeTagsRequest.tagKeys().size()).isEqualTo(1); + assertThat(removeTagsRequest.tagKeys().get(0)).isEqualTo(sharedKey); } @Test public void testChangedTagValue_Register() { - DBProxy dbProxy = new DBProxy().withStatus(AVAILABLE_PROXY_STATE); + DBProxy dbProxy = DBProxy.builder().status(AVAILABLE_PROXY_STATE).build(); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) .tagsDeregistered(true) @@ -319,12 +319,12 @@ public void testChangedTagValue_Register() { assertThat(response.getErrorCode()).isNull(); ArgumentCaptor captor = ArgumentCaptor.forClass(AddTagsToResourceRequest.class); - verify(proxy).injectCredentialsAndInvoke(captor.capture(), - ArgumentMatchers.>>any()); + verify(proxy).injectCredentialsAndInvokeV2(captor.capture(), + ArgumentMatchers.>any()); AddTagsToResourceRequest addTagRequest = captor.getValue(); - assertThat(addTagRequest.getTags().size()).isEqualTo(1); - Tag addedTag = addTagRequest.getTags().get(0); - assertThat(addedTag.getKey()).isEqualTo(sharedKey); - assertThat(addedTag.getValue()).isEqualTo(newValue); + assertThat(addTagRequest.tags().size()).isEqualTo(1); + Tag addedTag = addTagRequest.tags().get(0); + assertThat(addedTag.key()).isEqualTo(sharedKey); + assertThat(addedTag.value()).isEqualTo(newValue); } } diff --git a/aws-rds-dbproxyendpoint/pom.xml b/aws-rds-dbproxyendpoint/pom.xml index c843822..1857826 100644 --- a/aws-rds-dbproxyendpoint/pom.xml +++ b/aws-rds-dbproxyendpoint/pom.xml @@ -61,11 +61,11 @@ 2.26.0 test - + - com.amazonaws - aws-java-sdk-rds - [1.12.364, 2.0.0) + software.amazon.awssdk + rds + 2.33.6 diff --git a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/CallbackContext.java b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/CallbackContext.java index 78c291e..b759a96 100644 --- a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/CallbackContext.java +++ b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/CallbackContext.java @@ -1,10 +1,10 @@ package software.amazon.rds.dbproxyendpoint; -import com.amazonaws.services.rds.model.DBProxyEndpoint; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; @Builder(toBuilder = true) @Data diff --git a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/CreateHandler.java b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/CreateHandler.java index c2c6327..e1bc1cc 100644 --- a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/CreateHandler.java +++ b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/CreateHandler.java @@ -6,15 +6,14 @@ import org.apache.commons.lang3.StringUtils; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.CreateDBProxyEndpointRequest; -import com.amazonaws.services.rds.model.CreateDBProxyEndpointResult; -import com.amazonaws.services.rds.model.DBProxyEndpoint; -import com.amazonaws.services.rds.model.DBProxyEndpointAlreadyExistsException; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsResult; -import com.amazonaws.services.rds.model.Tag; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.CreateDbProxyEndpointRequest; +import software.amazon.awssdk.services.rds.model.CreateDbProxyEndpointResponse; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DbProxyEndpointAlreadyExistsException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsResponse; +import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.cloudformation.exceptions.CfnInvalidRequestException; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; @@ -31,7 +30,7 @@ public class CreateHandler extends BaseHandler { public static final String VPC_ID_READ_ONLY_MESSAGE = "VpcId is a read-only property."; private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; @Override public ProgressEvent handleRequest( @@ -43,7 +42,7 @@ public ProgressEvent handleRequest( final ResourceModel model = request.getDesiredResourceState(); clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); final CallbackContext currentContext = Optional.ofNullable(callbackContext) .orElse(CallbackContext.builder() @@ -75,25 +74,25 @@ private ProgressEvent createProxyEndpointAndUpda .stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES) .build()) .build()); - } catch (DBProxyEndpointAlreadyExistsException e) { + } catch (DbProxyEndpointAlreadyExistsException e) { return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.AlreadyExists); } - } else if (endpointStateSoFar.getStatus().equals(Constants.AVAILABLE_ENDPOINT_STATE)) { - model.setDBProxyEndpointArn(endpointStateSoFar.getDBProxyEndpointArn()); - model.setEndpoint(endpointStateSoFar.getEndpoint()); + } else if (endpointStateSoFar.status().toString().equals(Constants.AVAILABLE_ENDPOINT_STATE)) { + model.setDBProxyEndpointArn(endpointStateSoFar.dbProxyEndpointArn()); + model.setEndpoint(endpointStateSoFar.endpoint()); return ProgressEvent.builder() .resourceModel(model) .status(OperationStatus.SUCCESS) .build(); - } else if (Constants.TERMINAL_FAILURE_STATES.contains(endpointStateSoFar.getStatus())) { + } else if (Constants.TERMINAL_FAILURE_STATES.contains(endpointStateSoFar.status().toString())) { return ProgressEvent.builder() .status(OperationStatus.FAILED) .errorCode(HandlerErrorCode.NotFound) .build(); } else { - model.setDBProxyEndpointArn(endpointStateSoFar.getDBProxyEndpointArn()); - model.setEndpoint(endpointStateSoFar.getEndpoint()); + model.setDBProxyEndpointArn(endpointStateSoFar.dbProxyEndpointArn()); + model.setEndpoint(endpointStateSoFar.endpoint()); try { Thread.sleep(Constants.POLL_RETRY_DELAY_IN_MS); @@ -101,7 +100,7 @@ private ProgressEvent createProxyEndpointAndUpda throw new RuntimeException(e); } - DBProxyEndpoint proxyEndpoint = updatedProxyEndpointProgress(endpointStateSoFar.getDBProxyEndpointName()); + DBProxyEndpoint proxyEndpoint = updatedProxyEndpointProgress(endpointStateSoFar.dbProxyEndpointName()); return ProgressEvent.builder() .resourceModel(model) .status(OperationStatus.IN_PROGRESS) @@ -116,16 +115,17 @@ private ProgressEvent createProxyEndpointAndUpda private DBProxyEndpoint createProxyEndpoint(ResourceModel model) { List tags = getTags(model); - CreateDBProxyEndpointRequest request = new CreateDBProxyEndpointRequest() - .withDBProxyName(model.getDBProxyName()) - .withDBProxyEndpointName(model.getDBProxyEndpointName()) - .withVpcSubnetIds(model.getVpcSubnetIds()) - .withVpcSecurityGroupIds(model.getVpcSecurityGroupIds()) - .withTargetRole(model.getTargetRole()) - .withTags(tags); - - CreateDBProxyEndpointResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::createDBProxyEndpoint); - return result.getDBProxyEndpoint(); + CreateDbProxyEndpointRequest request = CreateDbProxyEndpointRequest.builder() + .dbProxyName(model.getDBProxyName()) + .dbProxyEndpointName(model.getDBProxyEndpointName()) + .vpcSubnetIds(model.getVpcSubnetIds()) + .vpcSecurityGroupIds(model.getVpcSecurityGroupIds()) + .targetRole(model.getTargetRole()) + .tags(tags) + .build(); + + CreateDbProxyEndpointResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::createDBProxyEndpoint); + return response.dbProxyEndpoint(); } private List getTags(ResourceModel model) { @@ -136,22 +136,19 @@ private List getTags(ResourceModel model) { } for(TagFormat tag : model.getTags()){ - Tag t = new Tag().withKey(tag.getKey()).withValue(tag.getValue()); + Tag t = Tag.builder().key(tag.getKey()).value(tag.getValue()).build(); tags.add(t); } return tags; } private DBProxyEndpoint updatedProxyEndpointProgress(String proxyEndpointName) { - DescribeDBProxyEndpointsRequest describeDBProxyEndpointsRequest; - DescribeDBProxyEndpointsResult describeDBProxyEndpointsResult; - - describeDBProxyEndpointsRequest = new DescribeDBProxyEndpointsRequest().withDBProxyEndpointName(proxyEndpointName); - describeDBProxyEndpointsResult = clientProxy.injectCredentialsAndInvoke(describeDBProxyEndpointsRequest, rdsClient::describeDBProxyEndpoints); - return describeDBProxyEndpointsResult.getDBProxyEndpoints() + DescribeDbProxyEndpointsRequest describeDBProxyEndpointsRequest = DescribeDbProxyEndpointsRequest.builder().dbProxyEndpointName(proxyEndpointName).build(); + DescribeDbProxyEndpointsResponse describeDbProxyEndpointsResponse = clientProxy.injectCredentialsAndInvokeV2(describeDBProxyEndpointsRequest, rdsClient::describeDBProxyEndpoints); + return describeDbProxyEndpointsResponse.dbProxyEndpoints() .stream() .findFirst() - .orElse(new DBProxyEndpoint()); + .orElse(DBProxyEndpoint.builder().build()); } /** diff --git a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/DeleteHandler.java b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/DeleteHandler.java index 9f8fa34..f2d2cb3 100644 --- a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/DeleteHandler.java +++ b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/DeleteHandler.java @@ -1,12 +1,11 @@ package software.amazon.rds.dbproxyendpoint; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.DBProxyEndpoint; -import com.amazonaws.services.rds.model.DBProxyEndpointNotFoundException; -import com.amazonaws.services.rds.model.DeleteDBProxyEndpointRequest; -import com.amazonaws.services.rds.model.DeleteDBProxyEndpointResult; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsRequest; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DbProxyEndpointNotFoundException; +import software.amazon.awssdk.services.rds.model.DeleteDbProxyEndpointRequest; +import software.amazon.awssdk.services.rds.model.DeleteDbProxyEndpointResponse; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsRequest; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -18,7 +17,7 @@ public class DeleteHandler extends BaseHandler { private static final String TIMED_OUT_MESSAGE = "Timed out waiting for proxyEndpoint to terminate."; private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; @Override public ProgressEvent handleRequest( @@ -30,7 +29,7 @@ public ProgressEvent handleRequest( final ResourceModel model = request.getDesiredResourceState(); clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); final CallbackContext currentContext = callbackContext == null ? CallbackContext.builder().stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES).build() : @@ -56,7 +55,7 @@ private ProgressEvent deleteProxyEndpointAndUpda .stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES) .build()) .build(); - } catch (DBProxyEndpointNotFoundException e) { + } catch (DbProxyEndpointNotFoundException e) { return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.NotFound); } } else if (callbackContext.isDeleted()) { @@ -82,20 +81,19 @@ private ProgressEvent deleteProxyEndpointAndUpda } private DBProxyEndpoint deleteProxyEndpoint(String proxyEndpointName) { - DeleteDBProxyEndpointRequest request = new DeleteDBProxyEndpointRequest().withDBProxyEndpointName(proxyEndpointName); + DeleteDbProxyEndpointRequest request = DeleteDbProxyEndpointRequest.builder().dbProxyEndpointName(proxyEndpointName).build(); - DeleteDBProxyEndpointResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::deleteDBProxyEndpoint); - return result.getDBProxyEndpoint(); + DeleteDbProxyEndpointResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::deleteDBProxyEndpoint); + return response.dbProxyEndpoint(); } private boolean doesProxyEndpointExist(String proxyEndpointName) { - DescribeDBProxyEndpointsRequest describeDBProxyEndpointsRequest; - describeDBProxyEndpointsRequest = new DescribeDBProxyEndpointsRequest().withDBProxyEndpointName(proxyEndpointName); + DescribeDbProxyEndpointsRequest describeDBProxyEndpointsRequest = DescribeDbProxyEndpointsRequest.builder().dbProxyEndpointName(proxyEndpointName).build(); try { - clientProxy.injectCredentialsAndInvoke(describeDBProxyEndpointsRequest, rdsClient::describeDBProxyEndpoints); + clientProxy.injectCredentialsAndInvokeV2(describeDBProxyEndpointsRequest, rdsClient::describeDBProxyEndpoints); return true; - } catch (DBProxyEndpointNotFoundException e) { + } catch (DbProxyEndpointNotFoundException e) { return false; } } diff --git a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/ListHandler.java b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/ListHandler.java index e2ee73b..75cb178 100644 --- a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/ListHandler.java +++ b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/ListHandler.java @@ -3,10 +3,9 @@ import java.util.List; import java.util.stream.Collectors; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsResult; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; @@ -18,7 +17,7 @@ public class ListHandler extends BaseHandler { private static final int MAX_RESULTS = 100; private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; @Override public ProgressEvent handleRequest( @@ -28,7 +27,7 @@ public ProgressEvent handleRequest( final Logger logger) { clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); final List models = listProxyEndpoints(request.getNextToken()); @@ -39,10 +38,10 @@ public ProgressEvent handleRequest( } private List listProxyEndpoints(String nextToken) { - DescribeDBProxyEndpointsRequest request = new DescribeDBProxyEndpointsRequest().withMaxRecords(MAX_RESULTS).withMarker(nextToken); + DescribeDbProxyEndpointsRequest request = DescribeDbProxyEndpointsRequest.builder().maxRecords(MAX_RESULTS).marker(nextToken).build(); - DescribeDBProxyEndpointsResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::describeDBProxyEndpoints); + DescribeDbProxyEndpointsResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::describeDBProxyEndpoints); - return result.getDBProxyEndpoints().stream().map(Utility::resultToModel).collect(Collectors.toList()); + return response.dbProxyEndpoints().stream().map(Utility::resultToModel).collect(Collectors.toList()); } } diff --git a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/ReadHandler.java b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/ReadHandler.java index 56d8400..dd5dd39 100644 --- a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/ReadHandler.java +++ b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/ReadHandler.java @@ -3,15 +3,14 @@ import java.util.ArrayList; import java.util.List; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.DBProxyEndpoint; -import com.amazonaws.services.rds.model.DBProxyEndpointNotFoundException; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsResult; -import com.amazonaws.services.rds.model.ListTagsForResourceRequest; -import com.amazonaws.services.rds.model.ListTagsForResourceResult; -import com.amazonaws.services.rds.model.Tag; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DbProxyEndpointNotFoundException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsResponse; +import software.amazon.awssdk.services.rds.model.ListTagsForResourceRequest; +import software.amazon.awssdk.services.rds.model.ListTagsForResourceResponse; +import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.cloudformation.exceptions.CfnNotFoundException; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; @@ -22,7 +21,7 @@ public class ReadHandler extends BaseHandler { private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; @Override public ProgressEvent handleRequest( @@ -32,12 +31,12 @@ public ProgressEvent handleRequest( final Logger logger) { clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); final ResourceModel model; try { model = describeDBProxyEndpoint(request.getDesiredResourceState().getDBProxyEndpointName()); - } catch (DBProxyEndpointNotFoundException | CfnNotFoundException e) { + } catch (DbProxyEndpointNotFoundException | CfnNotFoundException e) { return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.NotFound); } @@ -48,18 +47,18 @@ public ProgressEvent handleRequest( } private ResourceModel describeDBProxyEndpoint(final String proxyEndpointName) { - DescribeDBProxyEndpointsRequest request = new DescribeDBProxyEndpointsRequest().withDBProxyEndpointName(proxyEndpointName); + DescribeDbProxyEndpointsRequest request = DescribeDbProxyEndpointsRequest.builder().dbProxyEndpointName(proxyEndpointName).build(); - final DescribeDBProxyEndpointsResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::describeDBProxyEndpoints); + final DescribeDbProxyEndpointsResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::describeDBProxyEndpoints); - if (result != null && result.getDBProxyEndpoints() != null && result.getDBProxyEndpoints().size() == 1) { - DBProxyEndpoint proxyEndpoint = result.getDBProxyEndpoints().get(0); + if (response != null && response.dbProxyEndpoints() != null && response.dbProxyEndpoints().size() == 1) { + DBProxyEndpoint proxyEndpoint = response.dbProxyEndpoints().get(0); ResourceModel resourceModel = Utility.resultToModel(proxyEndpoint); - ListTagsForResourceRequest tagRequest = new ListTagsForResourceRequest().withResourceName(proxyEndpoint.getDBProxyEndpointArn()); + ListTagsForResourceRequest tagRequest = ListTagsForResourceRequest.builder().resourceName(proxyEndpoint.dbProxyEndpointArn()).build(); - final ListTagsForResourceResult tagResult = clientProxy.injectCredentialsAndInvoke(tagRequest, rdsClient::listTagsForResource); - if (tagResult != null && tagResult.getTagList()!= null && tagResult.getTagList().size() > 0) { - resourceModel.setTags(convertTags(tagResult.getTagList())); + final ListTagsForResourceResponse tagResponse = clientProxy.injectCredentialsAndInvokeV2(tagRequest, rdsClient::listTagsForResource); + if (tagResponse != null && tagResponse.tagList()!= null && !tagResponse.tagList().isEmpty()) { + resourceModel.setTags(convertTags(tagResponse.tagList())); } return resourceModel; } else { @@ -70,14 +69,14 @@ private ResourceModel describeDBProxyEndpoint(final String proxyEndpointName) { private List convertTags(List tags) { List convertedTags = new ArrayList<>(); - if (tags == null || tags.size() == 0) { + if (tags == null || tags.isEmpty()) { return convertedTags; } for(Tag tag : tags){ convertedTags.add(TagFormat.builder() - .key(tag.getKey()) - .value(tag.getValue()) + .key(tag.key()) + .value(tag.value()) .build()); } diff --git a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/UpdateHandler.java b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/UpdateHandler.java index eee6416..b951ea9 100644 --- a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/UpdateHandler.java +++ b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/UpdateHandler.java @@ -9,17 +9,16 @@ import org.apache.commons.lang3.StringUtils; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.AddTagsToResourceRequest; -import com.amazonaws.services.rds.model.DBProxyEndpoint; -import com.amazonaws.services.rds.model.DBProxyEndpointNotFoundException; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsResult; -import com.amazonaws.services.rds.model.ModifyDBProxyEndpointRequest; -import com.amazonaws.services.rds.model.ModifyDBProxyEndpointResult; -import com.amazonaws.services.rds.model.RemoveTagsFromResourceRequest; -import com.amazonaws.services.rds.model.Tag; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.AddTagsToResourceRequest; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DbProxyEndpointNotFoundException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsResponse; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyEndpointRequest; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyEndpointResponse; +import software.amazon.awssdk.services.rds.model.RemoveTagsFromResourceRequest; +import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.cloudformation.exceptions.CfnInvalidRequestException; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; @@ -35,7 +34,7 @@ public class UpdateHandler extends BaseHandler { public static final String TARGET_ROLE_CREATE_ONLY_MESSAGE = "TargetRole is a create-only property and cannot be updated."; private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; private Logger log; private static final String TIMED_OUT_MESSAGE = "Timed out waiting for proxyEndpoint to finish modification."; @@ -50,7 +49,7 @@ public ProgressEvent handleRequest( final ResourceModel oldModel = request.getPreviousResourceState(); clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); log = logger; final CallbackContext currentContext = callbackContext == null ? @@ -83,7 +82,7 @@ private ProgressEvent updateProxyEndpointAndUpda .stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES) .build()) .build()); - } catch (DBProxyEndpointNotFoundException e) { + } catch (DbProxyEndpointNotFoundException e) { return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.NotFound); } } @@ -114,12 +113,12 @@ private ProgressEvent updateProxyEndpointAndUpda .build(); } - if (proxyEndpointStateSoFar.getStatus().equals(Constants.AVAILABLE_ENDPOINT_STATE)) { + if (proxyEndpointStateSoFar.status().toString().equals(Constants.AVAILABLE_ENDPOINT_STATE)) { return ProgressEvent.builder() .resourceModel(newModel) .status(OperationStatus.SUCCESS) .build(); - } else if (Constants.TERMINAL_FAILURE_STATES.contains(proxyEndpointStateSoFar.getStatus())) { + } else if (Constants.TERMINAL_FAILURE_STATES.contains(proxyEndpointStateSoFar.status().toString())) { return ProgressEvent.builder() .status(OperationStatus.FAILED) .errorCode(HandlerErrorCode.NotFound) @@ -131,7 +130,7 @@ private ProgressEvent updateProxyEndpointAndUpda throw new RuntimeException(e); } - DBProxyEndpoint proxyEndpoint = updatedProxyEndpointProgress(proxyEndpointStateSoFar.getDBProxyEndpointName()); + DBProxyEndpoint proxyEndpoint = updatedProxyEndpointProgress(proxyEndpointStateSoFar.dbProxyEndpointName()); return ProgressEvent.builder() .resourceModel(newModel) .status(OperationStatus.IN_PROGRESS) @@ -150,14 +149,14 @@ private List getTagKeys(ResourceModel model) { } private List listNewTags(List list1, List list2) { - if (list1.size() > 0 && list2.size() > 0) { + if (!list1.isEmpty() && !list2.isEmpty()) { list1.removeAll(list2); } return list1; } private List toRDSTags(List tagList) { - return tagList.stream().map(t -> new Tag().withKey(t.getKey()).withValue(t.getValue())).collect(Collectors.toList()); + return tagList.stream().map(t -> Tag.builder().key(t.getKey()).value(t.getValue()).build()).collect(Collectors.toList()); } private boolean deregisterOldTags(ResourceModel oldModel, ResourceModel newModel, DBProxyEndpoint proxyEndpoint) { @@ -166,11 +165,12 @@ private boolean deregisterOldTags(ResourceModel oldModel, ResourceModel newModel List tagsToRemove = listNewTags(oldTags, newTags); List tagKeyList = tagsToRemove.stream().map(t -> t.getKey()).collect(Collectors.toList()); - if (tagKeyList.size() > 0) { - RemoveTagsFromResourceRequest removeTagsRequest = new RemoveTagsFromResourceRequest() - .withResourceName(proxyEndpoint.getDBProxyEndpointArn()) - .withTagKeys(tagKeyList); - clientProxy.injectCredentialsAndInvoke(removeTagsRequest, rdsClient::removeTagsFromResource); + if (!tagKeyList.isEmpty()) { + RemoveTagsFromResourceRequest removeTagsRequest = RemoveTagsFromResourceRequest.builder() + .resourceName(proxyEndpoint.dbProxyEndpointArn()) + .tagKeys(tagKeyList) + .build(); + clientProxy.injectCredentialsAndInvokeV2(removeTagsRequest, rdsClient::removeTagsFromResource); } return true; } @@ -179,34 +179,35 @@ private boolean registerNewTags(ResourceModel oldModel, ResourceModel newModel, List oldTags = getTagKeys(oldModel); List newTags = getTagKeys(newModel); List tagsToAdd = listNewTags(newTags, oldTags); - if (tagsToAdd.size() > 0 ) { - AddTagsToResourceRequest addTagsRequest = new AddTagsToResourceRequest() - .withResourceName(proxyEndpoint.getDBProxyEndpointArn()) - .withTags(toRDSTags(tagsToAdd)); - clientProxy.injectCredentialsAndInvoke(addTagsRequest, rdsClient::addTagsToResource); + if (!tagsToAdd.isEmpty()) { + AddTagsToResourceRequest addTagsRequest = AddTagsToResourceRequest.builder() + .resourceName(proxyEndpoint.dbProxyEndpointArn()) + .tags(toRDSTags(tagsToAdd)) + .build(); + clientProxy.injectCredentialsAndInvokeV2(addTagsRequest, rdsClient::addTagsToResource); } return true; } private DBProxyEndpoint updateProxyEndpointSettings(ResourceModel oldModel, ResourceModel newModel) { - ModifyDBProxyEndpointRequest request = new ModifyDBProxyEndpointRequest() - .withDBProxyEndpointName(oldModel.getDBProxyEndpointName()) - .withVpcSecurityGroupIds(newModel.getVpcSecurityGroupIds()); + ModifyDbProxyEndpointRequest request = ModifyDbProxyEndpointRequest.builder() + .dbProxyEndpointName(oldModel.getDBProxyEndpointName()) + .vpcSecurityGroupIds(newModel.getVpcSecurityGroupIds()) + .build(); - ModifyDBProxyEndpointResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::modifyDBProxyEndpoint); - return result.getDBProxyEndpoint(); + ModifyDbProxyEndpointResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::modifyDBProxyEndpoint); + return response.dbProxyEndpoint(); } private DBProxyEndpoint updatedProxyEndpointProgress(String proxyEndpointName) { - DescribeDBProxyEndpointsRequest describeDBProxyEndpointsRequest; - DescribeDBProxyEndpointsResult describeDBProxyEndpointsResult; - - describeDBProxyEndpointsRequest = new DescribeDBProxyEndpointsRequest().withDBProxyEndpointName(proxyEndpointName); - describeDBProxyEndpointsResult = clientProxy.injectCredentialsAndInvoke(describeDBProxyEndpointsRequest, rdsClient::describeDBProxyEndpoints); - return describeDBProxyEndpointsResult.getDBProxyEndpoints() + DescribeDbProxyEndpointsRequest describeDBProxyEndpointsRequest = DescribeDbProxyEndpointsRequest.builder() + .dbProxyEndpointName(proxyEndpointName) + .build(); + DescribeDbProxyEndpointsResponse describeDBProxyEndpointsResponse = clientProxy.injectCredentialsAndInvokeV2(describeDBProxyEndpointsRequest, rdsClient::describeDBProxyEndpoints); + return describeDBProxyEndpointsResponse.dbProxyEndpoints() .stream() .findFirst() - .orElse(new DBProxyEndpoint()); + .orElse(DBProxyEndpoint.builder().build()); } /** diff --git a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/Utility.java b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/Utility.java index a79ff12..2a26574 100644 --- a/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/Utility.java +++ b/aws-rds-dbproxyendpoint/src/main/java/software/amazon/rds/dbproxyendpoint/Utility.java @@ -3,22 +3,23 @@ import java.util.HashSet; import java.util.List; -import com.amazonaws.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; + public class Utility { public static ResourceModel resultToModel(DBProxyEndpoint proxyEndpoint){ return ResourceModel .builder() - .dBProxyEndpointArn(proxyEndpoint.getDBProxyEndpointArn()) - .dBProxyEndpointName(proxyEndpoint.getDBProxyEndpointName()) - .dBProxyName(proxyEndpoint.getDBProxyName()) - .vpcId(proxyEndpoint.getVpcId()) - .vpcSecurityGroupIds(proxyEndpoint.getVpcSecurityGroupIds()) - .vpcSubnetIds(proxyEndpoint.getVpcSubnetIds()) - .endpoint(proxyEndpoint.getEndpoint()) - .targetRole(proxyEndpoint.getTargetRole()) - .isDefault(proxyEndpoint.getIsDefault()) + .dBProxyEndpointArn(proxyEndpoint.dbProxyEndpointArn()) + .dBProxyEndpointName(proxyEndpoint.dbProxyEndpointName()) + .dBProxyName(proxyEndpoint.dbProxyName()) + .vpcId(proxyEndpoint.vpcId()) + .vpcSecurityGroupIds(proxyEndpoint.vpcSecurityGroupIds()) + .vpcSubnetIds(proxyEndpoint.vpcSubnetIds()) + .endpoint(proxyEndpoint.endpoint()) + .targetRole(proxyEndpoint.targetRole() != null ? proxyEndpoint.targetRole().toString() : null) + .isDefault(proxyEndpoint.isDefault()) .build(); } diff --git a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/CreateHandlerTest.java b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/CreateHandlerTest.java index e1287ea..b7f1e30 100644 --- a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/CreateHandlerTest.java +++ b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/CreateHandlerTest.java @@ -15,14 +15,12 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.CreateDBProxyEndpointRequest; -import com.amazonaws.services.rds.model.CreateDBProxyEndpointResult; -import com.amazonaws.services.rds.model.DBProxyEndpoint; -import com.amazonaws.services.rds.model.DBProxyEndpointAlreadyExistsException; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsResult; +import software.amazon.awssdk.services.rds.model.CreateDbProxyEndpointRequest; +import software.amazon.awssdk.services.rds.model.CreateDbProxyEndpointResponse; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DbProxyEndpointAlreadyExistsException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -47,10 +45,10 @@ public void setup() { @Test public void handleRequest_InitialRunCreateProxyEndpoint() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus("creating"); - doReturn(new CreateDBProxyEndpointResult().withDBProxyEndpoint(dbProxyEndpoint)).when(proxy) - .injectCredentialsAndInvoke(any(CreateDBProxyEndpointRequest.class), - ArgumentMatchers.>>any()); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status("creating").build(); + doReturn(CreateDbProxyEndpointResponse.builder().dbProxyEndpoint(dbProxyEndpoint).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(CreateDbProxyEndpointRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); @@ -83,9 +81,9 @@ public void handleRequest_InitialRunCreateProxyEndpoint() { @Test public void handleRequest_CreateProxyEndpointAlreadyExists() { - DBProxyEndpointAlreadyExistsException exception = new DBProxyEndpointAlreadyExistsException(TestConstants.ALREADY_EXIST_ERROR_MESSAGE); - doThrow(exception).when(proxy).injectCredentialsAndInvoke(any(CreateDBProxyEndpointRequest.class), - ArgumentMatchers.>>any()); + DbProxyEndpointAlreadyExistsException exception = DbProxyEndpointAlreadyExistsException.builder().message(TestConstants.ALREADY_EXIST_ERROR_MESSAGE).build(); + doThrow(exception).when(proxy).injectCredentialsAndInvokeV2(any(CreateDbProxyEndpointRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); @@ -222,10 +220,10 @@ public void handleRequest_CreateProxyEndpointWithIsDefaultProperty() { @Test public void handleRequest_Creating() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus("creating"); - doReturn(new DescribeDBProxyEndpointsResult().withDBProxyEndpoints(dbProxyEndpoint)).when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyEndpointsRequest.class), - ArgumentMatchers.>>any()); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status("creating").build(); + doReturn(DescribeDbProxyEndpointsResponse.builder().dbProxyEndpoints(dbProxyEndpoint).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(DescribeDbProxyEndpointsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); @@ -254,7 +252,7 @@ public void handleRequest_Creating() { @Test public void handleRequest_Available() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus("available"); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status("available").build(); final CreateHandler handler = new CreateHandler(); @@ -293,7 +291,7 @@ public void handleRequest_terminalState() { final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(60) - .proxyEndpoint(new DBProxyEndpoint().withStatus("incompatible-network")) + .proxyEndpoint(DBProxyEndpoint.builder().status("incompatible-network").build()) .build(); final ProgressEvent response @@ -321,7 +319,7 @@ public void testStabilizationTimeout() { final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(0) - .proxyEndpoint(new DBProxyEndpoint().withStatus("creating")) + .proxyEndpoint(DBProxyEndpoint.builder().status("creating").build()) .build(); try { diff --git a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/DeleteHandlerTest.java b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/DeleteHandlerTest.java index 506c203..e9cbae5 100644 --- a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/DeleteHandlerTest.java +++ b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/DeleteHandlerTest.java @@ -15,14 +15,12 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.DBProxyEndpoint; -import com.amazonaws.services.rds.model.DBProxyEndpointNotFoundException; -import com.amazonaws.services.rds.model.DeleteDBProxyEndpointRequest; -import com.amazonaws.services.rds.model.DeleteDBProxyEndpointResult; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsResult; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DbProxyEndpointNotFoundException; +import software.amazon.awssdk.services.rds.model.DeleteDbProxyEndpointRequest; +import software.amazon.awssdk.services.rds.model.DeleteDbProxyEndpointResponse; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -47,7 +45,7 @@ public void setup() { @Test public void handleRequest_SimpleSuccess() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus("deleting"); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status("deleting").build(); final DeleteHandler handler = new DeleteHandler(); @@ -78,9 +76,9 @@ public void handleRequest_SimpleSuccess() { @Test public void handleRequest_alreadyDeletedTest() { - DBProxyEndpointNotFoundException exception = new DBProxyEndpointNotFoundException(TestConstants.NOT_FOUND_ERROR_MESSAGE); - doThrow(exception).when(proxy).injectCredentialsAndInvoke(any(DeleteDBProxyEndpointRequest.class), - ArgumentMatchers.>>any()); + DbProxyEndpointNotFoundException exception = DbProxyEndpointNotFoundException.builder().message(TestConstants.NOT_FOUND_ERROR_MESSAGE).build(); + doThrow(exception).when(proxy).injectCredentialsAndInvokeV2(any(DeleteDbProxyEndpointRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); @@ -99,7 +97,7 @@ public void handleRequest_alreadyDeletedTest() { final CallbackContext desiredOutputContext = CallbackContext.builder() .stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES) - .proxyEndpoint(new DBProxyEndpoint()) + .proxyEndpoint(DBProxyEndpoint.builder().build()) .build(); assertThat(response).isNotNull(); assertThat(response.getStatus()).isEqualTo(OperationStatus.FAILED); @@ -113,10 +111,10 @@ public void handleRequest_alreadyDeletedTest() { @Test public void handleRequest_deleteTest() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus("deleting"); - doReturn(new DeleteDBProxyEndpointResult().withDBProxyEndpoint(dbProxyEndpoint)).when(proxy) - .injectCredentialsAndInvoke(any(DeleteDBProxyEndpointRequest.class), - ArgumentMatchers.>>any()); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status("deleting").build(); + doReturn(DeleteDbProxyEndpointResponse.builder().dbProxyEndpoint(dbProxyEndpoint).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(DeleteDbProxyEndpointRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); @@ -149,10 +147,10 @@ public void handleRequest_deleteTest() { @Test public void handleRequest_deletingTest() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus("deleting"); - doReturn(new DescribeDBProxyEndpointsResult().withDBProxyEndpoints(dbProxyEndpoint)).when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyEndpointsRequest.class), - ArgumentMatchers.>>any()); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status("deleting").build(); + doReturn(DescribeDbProxyEndpointsResponse.builder().dbProxyEndpoints(dbProxyEndpoint).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(DescribeDbProxyEndpointsRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); @@ -186,10 +184,10 @@ public void handleRequest_deletingTest() { @Test public void handleRequest_deletedTest() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus("deleting"); - doThrow(new DBProxyEndpointNotFoundException("")).when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyEndpointsRequest.class), - ArgumentMatchers.>>any()); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status("deleting").build(); + doThrow(DbProxyEndpointNotFoundException.builder().message("").build()).when(proxy) + .injectCredentialsAndInvokeV2(any(DescribeDbProxyEndpointsRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); diff --git a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/ListHandlerTest.java b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/ListHandlerTest.java index 8ca99ee..9d021ee 100644 --- a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/ListHandlerTest.java +++ b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/ListHandlerTest.java @@ -16,12 +16,10 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.DBProxyEndpoint; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsResult; import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; @@ -49,14 +47,14 @@ public void handleRequest_SimpleSuccess() { final ResourceModel model = ResourceModel.builder().build(); - DBProxyEndpoint proxyEndpoint1 = new DBProxyEndpoint().withDBProxyEndpointName("proxyEndpoint1"); - DBProxyEndpoint proxyEndpoint2 = new DBProxyEndpoint().withDBProxyEndpointName("proxyEndpoint2"); + DBProxyEndpoint proxyEndpoint1 = DBProxyEndpoint.builder().dbProxyEndpointName("proxyEndpoint1").build(); + DBProxyEndpoint proxyEndpoint2 = DBProxyEndpoint.builder().dbProxyEndpointName("proxyEndpoint2").build(); final List existingProxyEndpoints = ImmutableList.of(proxyEndpoint1, proxyEndpoint2); - doReturn(new DescribeDBProxyEndpointsResult().withDBProxyEndpoints(existingProxyEndpoints)) + doReturn(DescribeDbProxyEndpointsResponse.builder().dbProxyEndpoints(existingProxyEndpoints).build()) .when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyEndpointsRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(DescribeDbProxyEndpointsRequest.class), + ArgumentMatchers.>any()); final ResourceHandlerRequest request = ResourceHandlerRequest.builder() diff --git a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/Matchers.java b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/Matchers.java index 60e6e0b..fed2cc7 100644 --- a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/Matchers.java +++ b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/Matchers.java @@ -2,21 +2,21 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.amazonaws.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; public class Matchers { public static void assertThatModelsAreEqual(final Object rawModel, final DBProxyEndpoint sdkModel) { assertThat(rawModel).isInstanceOf(ResourceModel.class); ResourceModel model = (ResourceModel)rawModel; - assertThat(model.getDBProxyEndpointName()).isEqualTo(sdkModel.getDBProxyEndpointName()); - assertThat(model.getDBProxyEndpointArn()).isEqualTo(sdkModel.getDBProxyEndpointArn()); - assertThat(model.getDBProxyName()).isEqualTo(sdkModel.getDBProxyName()); - assertThat(model.getVpcId()).isEqualTo(sdkModel.getVpcId()); - assertThat(model.getVpcSecurityGroupIds()).isEqualTo(sdkModel.getVpcSecurityGroupIds()); - assertThat(model.getVpcSubnetIds()).isEqualTo(sdkModel.getVpcSubnetIds()); - assertThat(model.getEndpoint()).isEqualTo(sdkModel.getEndpoint()); - assertThat(model.getTargetRole()).isEqualTo(sdkModel.getTargetRole()); - assertThat(model.getIsDefault()).isEqualTo(sdkModel.getIsDefault()); + assertThat(model.getDBProxyEndpointName()).isEqualTo(sdkModel.dbProxyEndpointName()); + assertThat(model.getDBProxyEndpointArn()).isEqualTo(sdkModel.dbProxyEndpointArn()); + assertThat(model.getDBProxyName()).isEqualTo(sdkModel.dbProxyName()); + assertThat(model.getVpcId()).isEqualTo(sdkModel.vpcId()); + assertThat(model.getVpcSecurityGroupIds()).isEqualTo(sdkModel.vpcSecurityGroupIds()); + assertThat(model.getVpcSubnetIds()).isEqualTo(sdkModel.vpcSubnetIds()); + assertThat(model.getEndpoint()).isEqualTo(sdkModel.endpoint()); + assertThat(model.getTargetRole()).isEqualTo(sdkModel.targetRole()); + assertThat(model.getIsDefault()).isEqualTo(sdkModel.isDefault()); } } diff --git a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/ReadHandlerTest.java b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/ReadHandlerTest.java index ab01a1a..31c1085 100644 --- a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/ReadHandlerTest.java +++ b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/ReadHandlerTest.java @@ -17,16 +17,14 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.DBProxyEndpoint; -import com.amazonaws.services.rds.model.DBProxyEndpointNotFoundException; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyEndpointsResult; -import com.amazonaws.services.rds.model.ListTagsForResourceRequest; -import com.amazonaws.services.rds.model.ListTagsForResourceResult; -import com.amazonaws.services.rds.model.Tag; import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DbProxyEndpointNotFoundException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyEndpointsResponse; +import software.amazon.awssdk.services.rds.model.ListTagsForResourceRequest; +import software.amazon.awssdk.services.rds.model.ListTagsForResourceResponse; +import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -53,23 +51,24 @@ public void setup() { public void handleRequest_SimpleSuccess() { final ReadHandler handler = new ReadHandler(); - DBProxyEndpoint proxyEndpoint1 = new DBProxyEndpoint() - .withDBProxyEndpointName("proxyEndpoint1") - .withDBProxyEndpointArn("arn") - .withDBProxyName("proxy1") - .withVpcSubnetIds("vpcsubnet1", "vpcsubnet2") - .withVpcSecurityGroupIds("sg1", "sg2") - .withEndpoint("endpoint1"); + DBProxyEndpoint proxyEndpoint1 = DBProxyEndpoint.builder() + .dbProxyEndpointName("proxyEndpoint1") + .dbProxyEndpointArn("arn") + .dbProxyName("proxy1") + .vpcSubnetIds("vpcsubnet1", "vpcsubnet2") + .vpcSecurityGroupIds("sg1", "sg2") + .endpoint("endpoint1") + .build(); final List existingProxyEndpoints = ImmutableList.of(proxyEndpoint1); - doReturn(new DescribeDBProxyEndpointsResult().withDBProxyEndpoints(existingProxyEndpoints)) + doReturn(DescribeDbProxyEndpointsResponse.builder().dbProxyEndpoints(existingProxyEndpoints).build()) .when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyEndpointsRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(DescribeDbProxyEndpointsRequest.class), + ArgumentMatchers.>any()); - doReturn(new ListTagsForResourceResult()).when(proxy) - .injectCredentialsAndInvoke(any(ListTagsForResourceRequest.class), - ArgumentMatchers.>>any()); + doReturn(ListTagsForResourceResponse.builder().build()).when(proxy) + .injectCredentialsAndInvokeV2(any(ListTagsForResourceRequest.class), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyEndpointName("proxyEndpoint1").build(); @@ -94,30 +93,32 @@ public void handleRequest_SimpleSuccess() { public void handleRequest_WithTags() { final ReadHandler handler = new ReadHandler(); - DBProxyEndpoint proxyEndpoint1 = new DBProxyEndpoint() - .withDBProxyEndpointName("proxyEndpoint1") - .withDBProxyEndpointArn("arn") - .withDBProxyName("proxy1") - .withVpcSubnetIds("vpcsubnet1", "vpcsubnet2") - .withVpcSecurityGroupIds("sg1", "sg2") - .withEndpoint("endpoint1"); + DBProxyEndpoint proxyEndpoint1 = DBProxyEndpoint.builder() + .dbProxyEndpointName("proxyEndpoint1") + .dbProxyEndpointArn("arn") + .dbProxyName("proxy1") + .vpcSubnetIds("vpcsubnet1", "vpcsubnet2") + .vpcSecurityGroupIds("sg1", "sg2") + .endpoint("endpoint1") + .build(); + final List existingProxyEndpoints = ImmutableList.of(proxyEndpoint1); - doReturn(new DescribeDBProxyEndpointsResult().withDBProxyEndpoints(existingProxyEndpoints)) + doReturn(DescribeDbProxyEndpointsResponse.builder().dbProxyEndpoints(existingProxyEndpoints).build()) .when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyEndpointsRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(DescribeDbProxyEndpointsRequest.class), + ArgumentMatchers.>any()); String tagKey = "tagKey"; String tagValue = "tagValue"; String tagKey2 = "tagKey2"; String tagValue2 = "tagValue2"; - List tagList = ImmutableList.of(new Tag().withKey(tagKey).withValue(tagValue), - new Tag().withKey(tagKey2).withValue(tagValue2)); - doReturn(new ListTagsForResourceResult().withTagList(tagList)) + List tagList = ImmutableList.of(Tag.builder().key(tagKey).value(tagValue).build(), + Tag.builder().key(tagKey2).value(tagValue2).build()); + doReturn(ListTagsForResourceResponse.builder().tagList(tagList).build()) .when(proxy) - .injectCredentialsAndInvoke(any(ListTagsForResourceRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(ListTagsForResourceRequest.class), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyEndpointName("proxyEndpoint1").build(); @@ -147,10 +148,10 @@ public void handleRequest_WithTags() { public void handleRequest_ResourceNotFound() { final ReadHandler handler = new ReadHandler(); - doReturn(new DescribeDBProxyEndpointsResult()) + doReturn(DescribeDbProxyEndpointsResponse.builder().build()) .when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyEndpointsRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(DescribeDbProxyEndpointsRequest.class), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyEndpointName("proxyEndpoint1").build(); @@ -174,11 +175,11 @@ public void handleRequest_ResourceNotFound() { public void handleRequest_ResourceNotFoundExceptionFromRDS() { final ReadHandler handler = new ReadHandler(); - DBProxyEndpointNotFoundException exception = new DBProxyEndpointNotFoundException(TestConstants.NOT_FOUND_ERROR_MESSAGE); + DbProxyEndpointNotFoundException exception = DbProxyEndpointNotFoundException.builder().message(TestConstants.NOT_FOUND_ERROR_MESSAGE).build(); doThrow(exception) .when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyEndpointsRequest.class), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(any(DescribeDbProxyEndpointsRequest.class), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyEndpointName("proxyEndpoint1").build(); diff --git a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/UpdateHandlerTest.java b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/UpdateHandlerTest.java index 38b557f..4f0eefd 100644 --- a/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/UpdateHandlerTest.java +++ b/aws-rds-dbproxyendpoint/src/test/java/software/amazon/rds/dbproxyendpoint/UpdateHandlerTest.java @@ -18,16 +18,16 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.AddTagsToResourceRequest; -import com.amazonaws.services.rds.model.DBProxyEndpoint; -import com.amazonaws.services.rds.model.DBProxyEndpointNotFoundException; -import com.amazonaws.services.rds.model.ModifyDBProxyEndpointRequest; -import com.amazonaws.services.rds.model.ModifyDBProxyEndpointResult; -import com.amazonaws.services.rds.model.RemoveTagsFromResourceRequest; -import com.amazonaws.services.rds.model.Tag; import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.AddTagsToResourceRequest; +import software.amazon.awssdk.services.rds.model.AddTagsToResourceResponse; +import software.amazon.awssdk.services.rds.model.DBProxyEndpoint; +import software.amazon.awssdk.services.rds.model.DbProxyEndpointNotFoundException; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyEndpointRequest; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyEndpointResponse; +import software.amazon.awssdk.services.rds.model.RemoveTagsFromResourceRequest; +import software.amazon.awssdk.services.rds.model.RemoveTagsFromResourceResponse; +import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -52,7 +52,7 @@ public void setup() { @Test public void handleRequest_SimpleSuccess() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus(AVAILABLE_ENDPOINT_STATE); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status(AVAILABLE_ENDPOINT_STATE).build(); final CallbackContext context = CallbackContext.builder() .proxyEndpoint(dbProxyEndpoint) .stabilizationRetriesRemaining(1) @@ -84,9 +84,11 @@ public void handleRequest_SimpleSuccess() { @Test public void testModifyNonExistProxyEndpoint() { - DBProxyEndpointNotFoundException exception = new DBProxyEndpointNotFoundException(TestConstants.NOT_FOUND_ERROR_MESSAGE); - doThrow(exception).when(proxy).injectCredentialsAndInvoke(any(ModifyDBProxyEndpointRequest.class), - ArgumentMatchers.>>any()); + DbProxyEndpointNotFoundException exception = DbProxyEndpointNotFoundException.builder() + .message(TestConstants.NOT_FOUND_ERROR_MESSAGE) + .build(); + doThrow(exception).when(proxy).injectCredentialsAndInvokeV2(any(ModifyDbProxyEndpointRequest.class), + ArgumentMatchers.>any()); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) @@ -233,10 +235,10 @@ public void testModifyTargetRoleCreateOnlyProperty() { @Test public void testModifyProxyEndpoint() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus(AVAILABLE_ENDPOINT_STATE); - doReturn(new ModifyDBProxyEndpointResult().withDBProxyEndpoint(dbProxyEndpoint)) - .when(proxy).injectCredentialsAndInvoke(any(ModifyDBProxyEndpointRequest.class), - ArgumentMatchers.>>any()); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status(AVAILABLE_ENDPOINT_STATE).build(); + doReturn(ModifyDbProxyEndpointResponse.builder().dbProxyEndpoint(dbProxyEndpoint).build()) + .when(proxy).injectCredentialsAndInvokeV2(any(ModifyDbProxyEndpointRequest.class), + ArgumentMatchers.>any()); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) @@ -271,7 +273,7 @@ public void testModifyProxyEndpoint() { @Test public void testDeregisterTags() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus(AVAILABLE_ENDPOINT_STATE); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status(AVAILABLE_ENDPOINT_STATE).build(); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) .proxyEndpoint(dbProxyEndpoint) @@ -311,15 +313,15 @@ public void testDeregisterTags() { assertThat(response.getErrorCode()).isNull(); ArgumentCaptor captor = ArgumentCaptor.forClass(RemoveTagsFromResourceRequest.class); - verify(proxy).injectCredentialsAndInvoke(captor.capture(), - ArgumentMatchers.>>any()); + verify(proxy).injectCredentialsAndInvokeV2(captor.capture(), + ArgumentMatchers.>any()); RemoveTagsFromResourceRequest removeTagsRequest = captor.getValue(); - assertThat(removeTagsRequest.getTagKeys().size()).isEqualTo(2); + assertThat(removeTagsRequest.tagKeys().size()).isEqualTo(2); } @Test public void testRegisterTags() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus(AVAILABLE_ENDPOINT_STATE); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status(AVAILABLE_ENDPOINT_STATE).build(); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) .tagsDeregistered(true) @@ -362,15 +364,15 @@ public void testRegisterTags() { assertThat(response.getErrorCode()).isNull(); ArgumentCaptor captor = ArgumentCaptor.forClass(AddTagsToResourceRequest.class); - verify(proxy).injectCredentialsAndInvoke(captor.capture(), - ArgumentMatchers.>>any()); + verify(proxy).injectCredentialsAndInvokeV2(captor.capture(), + ArgumentMatchers.>any()); AddTagsToResourceRequest removeTagsRequest = captor.getValue(); - assertThat(removeTagsRequest.getTags().size()).isEqualTo(2); + assertThat(removeTagsRequest.tags().size()).isEqualTo(2); } @Test public void testChangedTagValue_deregister() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus(AVAILABLE_ENDPOINT_STATE); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status(AVAILABLE_ENDPOINT_STATE).build(); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) .proxyEndpoint(dbProxyEndpoint) @@ -415,16 +417,16 @@ public void testChangedTagValue_deregister() { assertThat(response.getErrorCode()).isNull(); ArgumentCaptor captor = ArgumentCaptor.forClass(RemoveTagsFromResourceRequest.class); - verify(proxy).injectCredentialsAndInvoke(captor.capture(), - ArgumentMatchers.>>any()); + verify(proxy).injectCredentialsAndInvokeV2(captor.capture(), + ArgumentMatchers.>any()); RemoveTagsFromResourceRequest removeTagsRequest = captor.getValue(); - assertThat(removeTagsRequest.getTagKeys().size()).isEqualTo(1); - assertThat(removeTagsRequest.getTagKeys().get(0)).isEqualTo(sharedKey); + assertThat(removeTagsRequest.tagKeys().size()).isEqualTo(1); + assertThat(removeTagsRequest.tagKeys().get(0)).isEqualTo(sharedKey); } @Test public void testChangedTagValue_Register() { - DBProxyEndpoint dbProxyEndpoint = new DBProxyEndpoint().withStatus(AVAILABLE_ENDPOINT_STATE); + DBProxyEndpoint dbProxyEndpoint = DBProxyEndpoint.builder().status(AVAILABLE_ENDPOINT_STATE).build(); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) .tagsDeregistered(true) @@ -472,12 +474,12 @@ public void testChangedTagValue_Register() { assertThat(response.getErrorCode()).isNull(); ArgumentCaptor captor = ArgumentCaptor.forClass(AddTagsToResourceRequest.class); - verify(proxy).injectCredentialsAndInvoke(captor.capture(), - ArgumentMatchers.>>any()); + verify(proxy).injectCredentialsAndInvokeV2(captor.capture(), + ArgumentMatchers.>any()); AddTagsToResourceRequest addTagRequest = captor.getValue(); - assertThat(addTagRequest.getTags().size()).isEqualTo(1); - Tag addedTag = addTagRequest.getTags().get(0); - assertThat(addedTag.getKey()).isEqualTo(sharedKey); - assertThat(addedTag.getValue()).isEqualTo(newValue); + assertThat(addTagRequest.tags().size()).isEqualTo(1); + Tag addedTag = addTagRequest.tags().get(0); + assertThat(addedTag.key()).isEqualTo(sharedKey); + assertThat(addedTag.value()).isEqualTo(newValue); } } diff --git a/aws-rds-dbproxytargetgroup/pom.xml b/aws-rds-dbproxytargetgroup/pom.xml index 1ad7dfa..00e9370 100644 --- a/aws-rds-dbproxytargetgroup/pom.xml +++ b/aws-rds-dbproxytargetgroup/pom.xml @@ -68,11 +68,11 @@ 2.26.0 test - + - com.amazonaws - aws-java-sdk-rds - [1.12.364, 2.0.0) + software.amazon.awssdk + rds + 2.33.6 diff --git a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/CallbackContext.java b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/CallbackContext.java index b10ad50..bfab201 100644 --- a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/CallbackContext.java +++ b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/CallbackContext.java @@ -2,13 +2,13 @@ import java.util.List; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyTarget; -import com.amazonaws.services.rds.model.DBProxyTargetGroup; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DBProxyTargetGroup; @Builder(toBuilder = true) @Data diff --git a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/CreateHandler.java b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/CreateHandler.java index a561d18..7d1629a 100644 --- a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/CreateHandler.java +++ b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/CreateHandler.java @@ -6,19 +6,18 @@ import java.util.List; import java.util.Optional; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.ConnectionPoolConfiguration; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyNotFoundException; -import com.amazonaws.services.rds.model.DBProxyTarget; -import com.amazonaws.services.rds.model.DBProxyTargetGroup; -import com.amazonaws.services.rds.model.DBProxyTargetGroupNotFoundException; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsResult; -import com.amazonaws.services.rds.model.ModifyDBProxyTargetGroupRequest; -import com.amazonaws.services.rds.model.RegisterDBProxyTargetsRequest; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.ConnectionPoolConfiguration; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DBProxyTargetGroup; +import software.amazon.awssdk.services.rds.model.DbProxyNotFoundException; +import software.amazon.awssdk.services.rds.model.DbProxyTargetGroupNotFoundException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyTargetGroupRequest; +import software.amazon.awssdk.services.rds.model.RegisterDbProxyTargetsRequest; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -30,7 +29,7 @@ public class CreateHandler extends BaseHandler { public static final String TIMED_OUT_MESSAGE = "Timed out waiting for target group to become available."; private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; private Logger log; @@ -43,7 +42,7 @@ public ProgressEvent handleRequest( final ResourceModel model = request.getDesiredResourceState(); clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); log = logger; final CallbackContext currentContext = Optional.ofNullable(callbackContext) @@ -54,7 +53,7 @@ public ProgressEvent handleRequest( // This Lambda will continually be re-invoked with the current state of the proxy, finally succeeding when state stabilizes. try { return createTargetGroupAndUpdateProgress(model, currentContext); - } catch (DBProxyNotFoundException | DBProxyTargetGroupNotFoundException e) { + } catch (DbProxyNotFoundException | DbProxyTargetGroupNotFoundException e) { return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.NotFound); } } @@ -70,7 +69,7 @@ private ProgressEvent createTargetGroupAndUpdate if (callbackContext.getTargetGroupStatus() == null) { DBProxyTargetGroup targetGroupSettings = modifyProxyTargetGroup(model); - model.setTargetGroupArn(targetGroupSettings.getTargetGroupArn()); + model.setTargetGroupArn(targetGroupSettings.targetGroupArn()); return ProgressEvent.builder() .resourceModel(model) .status(OperationStatus.IN_PROGRESS) @@ -154,51 +153,56 @@ private DBProxyTargetGroup modifyProxyTargetGroup(ResourceModel model) { ConnectionPoolConfigurationInfoFormat modelConnectionPoolConfig = model.getConnectionPoolConfigurationInfo(); if (modelConnectionPoolConfig == null) { - DescribeDBProxyTargetGroupsRequest describeRequest = new DescribeDBProxyTargetGroupsRequest() - .withDBProxyName(model.getDBProxyName()) - .withTargetGroupName(model.getTargetGroupName()); - return clientProxy.injectCredentialsAndInvoke(describeRequest, rdsClient::describeDBProxyTargetGroups).getTargetGroups().get(0); + DescribeDbProxyTargetGroupsRequest describeRequest = DescribeDbProxyTargetGroupsRequest.builder() + .dbProxyName(model.getDBProxyName()) + .targetGroupName(model.getTargetGroupName()) + .build(); + return clientProxy.injectCredentialsAndInvokeV2(describeRequest, rdsClient::describeDBProxyTargetGroups).targetGroups().get(0); } ConnectionPoolConfiguration connectionPoolConfiguration = - new ConnectionPoolConfiguration() - .withMaxConnectionsPercent(modelConnectionPoolConfig.getMaxConnectionsPercent()) - .withMaxIdleConnectionsPercent(modelConnectionPoolConfig.getMaxIdleConnectionsPercent()) - .withConnectionBorrowTimeout(modelConnectionPoolConfig.getConnectionBorrowTimeout()) - .withSessionPinningFilters(modelConnectionPoolConfig.getSessionPinningFilters()) - .withInitQuery(modelConnectionPoolConfig.getInitQuery()); - - ModifyDBProxyTargetGroupRequest request = new ModifyDBProxyTargetGroupRequest() - .withDBProxyName(model.getDBProxyName()) - .withTargetGroupName(model.getTargetGroupName()) - .withConnectionPoolConfig(connectionPoolConfiguration); - - return clientProxy.injectCredentialsAndInvoke(request, rdsClient::modifyDBProxyTargetGroup).getDBProxyTargetGroup(); + ConnectionPoolConfiguration.builder() + .maxConnectionsPercent(modelConnectionPoolConfig.getMaxConnectionsPercent()) + .maxIdleConnectionsPercent(modelConnectionPoolConfig.getMaxIdleConnectionsPercent()) + .connectionBorrowTimeout(modelConnectionPoolConfig.getConnectionBorrowTimeout()) + .sessionPinningFilters(modelConnectionPoolConfig.getSessionPinningFilters()) + .initQuery(modelConnectionPoolConfig.getInitQuery()) + .build(); + + ModifyDbProxyTargetGroupRequest request = ModifyDbProxyTargetGroupRequest.builder() + .dbProxyName(model.getDBProxyName()) + .targetGroupName(model.getTargetGroupName()) + .connectionPoolConfig(connectionPoolConfiguration) + .build(); + + return clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::modifyDBProxyTargetGroup).dbProxyTargetGroup(); } private List registerDefaultTarget(ResourceModel model) { List newClusters = Utility.getClusters(model); List newInstances = Utility.getInstances(model); - if (newClusters.size() == 0 && newInstances.size() == 0) { + if (newClusters.isEmpty() && newInstances.isEmpty()) { return new ArrayList<>(); } - RegisterDBProxyTargetsRequest registerRequest = new RegisterDBProxyTargetsRequest() - .withDBProxyName(model.getDBProxyName()) - .withTargetGroupName(model.getTargetGroupName()) - .withDBClusterIdentifiers(newClusters) - .withDBInstanceIdentifiers(newInstances); + RegisterDbProxyTargetsRequest registerRequest = RegisterDbProxyTargetsRequest.builder() + .dbProxyName(model.getDBProxyName()) + .targetGroupName(model.getTargetGroupName()) + .dbClusterIdentifiers(newClusters) + .dbInstanceIdentifiers(newInstances) + .build(); - return clientProxy.injectCredentialsAndInvoke(registerRequest, rdsClient::registerDBProxyTargets).getDBProxyTargets(); + return clientProxy.injectCredentialsAndInvokeV2(registerRequest, rdsClient::registerDBProxyTargets).dbProxyTargets(); } private boolean checkTargetHealth(ResourceModel model) { - DescribeDBProxyTargetsRequest describeDBProxyTargetsRequest = new DescribeDBProxyTargetsRequest() - .withDBProxyName(model.getDBProxyName()) - .withTargetGroupName(model.getTargetGroupName()); + DescribeDbProxyTargetsRequest describeDBProxyTargetsRequest = DescribeDbProxyTargetsRequest.builder() + .dbProxyName(model.getDBProxyName()) + .targetGroupName(model.getTargetGroupName()) + .build(); - DescribeDBProxyTargetsResult describeResult = clientProxy.injectCredentialsAndInvoke(describeDBProxyTargetsRequest, rdsClient::describeDBProxyTargets); - return validateHealth(describeResult); + DescribeDbProxyTargetsResponse describeResponse = clientProxy.injectCredentialsAndInvokeV2(describeDBProxyTargetsRequest, rdsClient::describeDBProxyTargets); + return validateHealth(describeResponse); } } diff --git a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/DeleteHandler.java b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/DeleteHandler.java index 47f66fb..3bc991e 100644 --- a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/DeleteHandler.java +++ b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/DeleteHandler.java @@ -4,14 +4,13 @@ import java.util.List; import java.util.Optional; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.DBProxyNotFoundException; -import com.amazonaws.services.rds.model.DBProxyTarget; -import com.amazonaws.services.rds.model.DeregisterDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsResult; -import com.amazonaws.services.rds.model.InvalidDBProxyStateException; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DbProxyNotFoundException; +import software.amazon.awssdk.services.rds.model.DeregisterDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.InvalidDbProxyStateException; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; @@ -21,7 +20,7 @@ public class DeleteHandler extends BaseHandler { private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; private Logger logger; @Override @@ -34,7 +33,7 @@ public ProgressEvent handleRequest( final ResourceModel model = request.getDesiredResourceState(); clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); this.logger = logger; final CallbackContext currentContext = Optional.ofNullable(callbackContext) @@ -69,10 +68,10 @@ private ProgressEvent deleteProxyTargetGroup(Res private boolean deregisterOldTargetsHelper(ResourceModel model) { try { return deregisterOldTargets(model); - } catch (DBProxyNotFoundException e) { + } catch (DbProxyNotFoundException e) { // Proxy is already deleted, no need to deregister return true; - } catch (InvalidDBProxyStateException e) { + } catch (InvalidDbProxyStateException e) { if (e.getMessage().contains("DELETING")) { // Proxy is deleting, no need to deregister return true; @@ -85,32 +84,35 @@ private boolean deregisterOldTargets(ResourceModel model) { String proxyName = model.getDBProxyName(); String targetGroupName = Optional.ofNullable(model.getTargetGroupName()).orElse("default"); - DescribeDBProxyTargetsRequest describeDBProxyTargetsRequest = new DescribeDBProxyTargetsRequest() - .withDBProxyName(proxyName) - .withTargetGroupName(targetGroupName); + DescribeDbProxyTargetsRequest describeDBProxyTargetsRequest = DescribeDbProxyTargetsRequest.builder() + .dbProxyName(proxyName) + .targetGroupName(targetGroupName) + .build(); - DescribeDBProxyTargetsResult describeResult = clientProxy.injectCredentialsAndInvoke(describeDBProxyTargetsRequest, rdsClient::describeDBProxyTargets); + DescribeDbProxyTargetsResponse describeResponse = clientProxy.injectCredentialsAndInvokeV2(describeDBProxyTargetsRequest, rdsClient::describeDBProxyTargets); List dbClusters = new ArrayList<>(); List dbInstances = new ArrayList<>(); - for (DBProxyTarget target: describeResult.getTargets()) { - if (target.getType().equals("TRACKED_CLUSTER")) { - dbClusters.add(target.getRdsResourceId()); + for (DBProxyTarget target: describeResponse.targets()) { + if (target.type().toString().equals("TRACKED_CLUSTER")) { + dbClusters.add(target.rdsResourceId()); } else { - dbInstances.add(target.getRdsResourceId()); + dbInstances.add(target.rdsResourceId()); } } - if (dbClusters.size() > 0) { - DeregisterDBProxyTargetsRequest deregisterRequest = new DeregisterDBProxyTargetsRequest() - .withDBProxyName(model.getDBProxyName()) - .withDBClusterIdentifiers(dbClusters); - clientProxy.injectCredentialsAndInvoke(deregisterRequest, rdsClient::deregisterDBProxyTargets); - } else if (dbInstances.size() > 0){ - DeregisterDBProxyTargetsRequest deregisterRequest = new DeregisterDBProxyTargetsRequest() - .withDBProxyName(model.getDBProxyName()) - .withDBInstanceIdentifiers(dbInstances); - clientProxy.injectCredentialsAndInvoke(deregisterRequest, rdsClient::deregisterDBProxyTargets); + if (!dbClusters.isEmpty()) { + DeregisterDbProxyTargetsRequest deregisterRequest = DeregisterDbProxyTargetsRequest.builder() + .dbProxyName(model.getDBProxyName()) + .dbClusterIdentifiers(dbClusters) + .build(); + clientProxy.injectCredentialsAndInvokeV2(deregisterRequest, rdsClient::deregisterDBProxyTargets); + } else if (!dbInstances.isEmpty()){ + DeregisterDbProxyTargetsRequest deregisterRequest = DeregisterDbProxyTargetsRequest.builder() + .dbProxyName(model.getDBProxyName()) + .dbInstanceIdentifiers(dbInstances) + .build(); + clientProxy.injectCredentialsAndInvokeV2(deregisterRequest, rdsClient::deregisterDBProxyTargets); } return true; diff --git a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/ListHandler.java b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/ListHandler.java index 691bd33..05817bb 100644 --- a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/ListHandler.java +++ b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/ListHandler.java @@ -3,10 +3,9 @@ import java.util.List; import java.util.stream.Collectors; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsResult; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; @@ -16,7 +15,7 @@ public class ListHandler extends BaseHandler { private static final int MAX_RESULTS = 100; private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; @Override public ProgressEvent handleRequest( @@ -26,7 +25,7 @@ public ProgressEvent handleRequest( final Logger logger) { clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); final List models = listProxyTargetGroups( request.getDesiredResourceState().getDBProxyName(), @@ -39,14 +38,15 @@ public ProgressEvent handleRequest( } private List listProxyTargetGroups(String dbProxyName, String nextToken) { - DescribeDBProxyTargetGroupsRequest request = new DescribeDBProxyTargetGroupsRequest() - .withDBProxyName(dbProxyName) - .withMaxRecords(MAX_RESULTS) - .withMarker(nextToken); + DescribeDbProxyTargetGroupsRequest request = DescribeDbProxyTargetGroupsRequest.builder() + .dbProxyName(dbProxyName) + .maxRecords(MAX_RESULTS) + .marker(nextToken) + .build(); - DescribeDBProxyTargetGroupsResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::describeDBProxyTargetGroups); + DescribeDbProxyTargetGroupsResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::describeDBProxyTargetGroups); - List models = result.getTargetGroups().stream().map(r -> Utility.resultToModel(r)).collect(Collectors.toList()); + List models = response.targetGroups().stream().map(r -> Utility.resultToModel(r)).collect(Collectors.toList()); return models; } diff --git a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/ReadHandler.java b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/ReadHandler.java index a09d9ed..853641b 100644 --- a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/ReadHandler.java +++ b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/ReadHandler.java @@ -4,14 +4,12 @@ import java.util.List; import java.util.Optional; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.DBProxyTarget; -import com.amazonaws.services.rds.model.DeregisterDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsResult; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsResult; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsResponse; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsResponse; import software.amazon.cloudformation.exceptions.CfnNotFoundException; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; @@ -21,7 +19,7 @@ public class ReadHandler extends BaseHandler { private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; @Override public ProgressEvent handleRequest( @@ -36,7 +34,7 @@ public ProgressEvent handleRequest( String targetGroupName = Optional.ofNullable(desiredResource.getTargetGroupName()).orElse("default"); clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); final ResourceModel model = describeDBProxyTargetGroup(proxyName, targetGroupName); @@ -48,27 +46,29 @@ public ProgressEvent handleRequest( private ResourceModel describeDBProxyTargetGroup(final String proxyName, final String targetGroupName) { - DescribeDBProxyTargetGroupsRequest request = new DescribeDBProxyTargetGroupsRequest() - .withDBProxyName(proxyName) - .withTargetGroupName(targetGroupName); + DescribeDbProxyTargetGroupsRequest request = DescribeDbProxyTargetGroupsRequest.builder() + .dbProxyName(proxyName) + .targetGroupName(targetGroupName) + .build(); - final DescribeDBProxyTargetGroupsResult result = clientProxy.injectCredentialsAndInvoke(request, rdsClient::describeDBProxyTargetGroups); + final DescribeDbProxyTargetGroupsResponse response = clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::describeDBProxyTargetGroups); - if (result != null && result.getTargetGroups() != null && result.getTargetGroups().size() == 1) { - ResourceModel resourceModel = Utility.resultToModel(result.getTargetGroups().get(0)); + if (response != null && response.targetGroups() != null && response.targetGroups().size() == 1) { + ResourceModel resourceModel = Utility.resultToModel(response.targetGroups().get(0)); - DescribeDBProxyTargetsRequest targetsRequest = new DescribeDBProxyTargetsRequest() - .withDBProxyName(proxyName) - .withTargetGroupName(targetGroupName); - final DescribeDBProxyTargetsResult targetsResult = clientProxy.injectCredentialsAndInvoke(targetsRequest, rdsClient::describeDBProxyTargets); - if (targetsResult != null) { + DescribeDbProxyTargetsRequest targetsRequest = DescribeDbProxyTargetsRequest.builder() + .dbProxyName(proxyName) + .targetGroupName(targetGroupName) + .build(); + final DescribeDbProxyTargetsResponse targetsResponse = clientProxy.injectCredentialsAndInvokeV2(targetsRequest, rdsClient::describeDBProxyTargets); + if (targetsResponse != null) { List dbClusters = new ArrayList<>(); List dbInstances = new ArrayList<>(); - for (DBProxyTarget target: targetsResult.getTargets()) { - if (target.getType().equals("TRACKED_CLUSTER")) { - dbClusters.add(target.getRdsResourceId()); + for (DBProxyTarget target: targetsResponse.targets()) { + if (target.type().toString().equals("TRACKED_CLUSTER")) { + dbClusters.add(target.rdsResourceId()); } else { - dbInstances.add(target.getRdsResourceId()); + dbInstances.add(target.rdsResourceId()); } } diff --git a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/UpdateHandler.java b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/UpdateHandler.java index 326675e..808cb50 100644 --- a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/UpdateHandler.java +++ b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/UpdateHandler.java @@ -6,18 +6,17 @@ import java.util.List; import java.util.Optional; -import com.amazonaws.services.rds.AmazonRDS; -import com.amazonaws.services.rds.AmazonRDSClientBuilder; -import com.amazonaws.services.rds.model.ConnectionPoolConfiguration; -import com.amazonaws.services.rds.model.DBProxyTarget; -import com.amazonaws.services.rds.model.DBProxyTargetGroup; -import com.amazonaws.services.rds.model.DBProxyTargetGroupNotFoundException; -import com.amazonaws.services.rds.model.DeregisterDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsResult; -import com.amazonaws.services.rds.model.ModifyDBProxyTargetGroupRequest; -import com.amazonaws.services.rds.model.RegisterDBProxyTargetsRequest; +import software.amazon.awssdk.services.rds.RdsClient; +import software.amazon.awssdk.services.rds.model.ConnectionPoolConfiguration; +import software.amazon.awssdk.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DBProxyTargetGroup; +import software.amazon.awssdk.services.rds.model.DbProxyTargetGroupNotFoundException; +import software.amazon.awssdk.services.rds.model.DeregisterDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyTargetGroupRequest; +import software.amazon.awssdk.services.rds.model.RegisterDbProxyTargetsRequest; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -27,7 +26,7 @@ public class UpdateHandler extends BaseHandler { private AmazonWebServicesClientProxy clientProxy; - private AmazonRDS rdsClient; + private RdsClient rdsClient; private static final String TIMED_OUT_MESSAGE = "Timed out waiting for ProxyTargetGroup to finish modification."; @@ -42,7 +41,7 @@ public ProgressEvent handleRequest( final ResourceModel oldModel = request.getPreviousResourceState(); clientProxy = proxy; - rdsClient = AmazonRDSClientBuilder.defaultClient(); + rdsClient = RdsClient.create(); final CallbackContext currentContext = Optional.ofNullable(callbackContext) .orElse(CallbackContext.builder() @@ -72,7 +71,7 @@ private ProgressEvent updateProxyAndUpdateProgre .stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES) .build()) .build(); - } catch (DBProxyTargetGroupNotFoundException e) { + } catch (DbProxyTargetGroupNotFoundException e) { return ProgressEvent.defaultFailureHandler(e, HandlerErrorCode.NotFound); } } @@ -133,31 +132,34 @@ private ProgressEvent updateProxyAndUpdateProgre private DBProxyTargetGroup modifyProxyTargetGroup(ResourceModel oldModel, ResourceModel newModel) { if (oldModel.equals(newModel)) { - return new DBProxyTargetGroup(); + return DBProxyTargetGroup.builder().build(); } ConnectionPoolConfigurationInfoFormat modelConnectionPoolConfig = newModel.getConnectionPoolConfigurationInfo(); if (modelConnectionPoolConfig == null) { - DescribeDBProxyTargetGroupsRequest describeRequest = new DescribeDBProxyTargetGroupsRequest() - .withDBProxyName(newModel.getDBProxyName()) - .withTargetGroupName(newModel.getTargetGroupName()); - return clientProxy.injectCredentialsAndInvoke(describeRequest, rdsClient::describeDBProxyTargetGroups).getTargetGroups().get(0); + DescribeDbProxyTargetGroupsRequest describeRequest = DescribeDbProxyTargetGroupsRequest.builder() + .dbProxyName(newModel.getDBProxyName()) + .targetGroupName(newModel.getTargetGroupName()) + .build(); + return clientProxy.injectCredentialsAndInvokeV2(describeRequest, rdsClient::describeDBProxyTargetGroups).targetGroups().get(0); } ConnectionPoolConfiguration connectionPoolConfiguration = - new ConnectionPoolConfiguration() - .withMaxConnectionsPercent(modelConnectionPoolConfig.getMaxConnectionsPercent()) - .withMaxIdleConnectionsPercent(modelConnectionPoolConfig.getMaxIdleConnectionsPercent()) - .withConnectionBorrowTimeout(modelConnectionPoolConfig.getConnectionBorrowTimeout()) - .withSessionPinningFilters(modelConnectionPoolConfig.getSessionPinningFilters()) - .withInitQuery(modelConnectionPoolConfig.getInitQuery()); - - ModifyDBProxyTargetGroupRequest request = new ModifyDBProxyTargetGroupRequest() - .withDBProxyName(newModel.getDBProxyName()) - .withTargetGroupName(newModel.getTargetGroupName()) - .withConnectionPoolConfig(connectionPoolConfiguration); - - return clientProxy.injectCredentialsAndInvoke(request, rdsClient::modifyDBProxyTargetGroup).getDBProxyTargetGroup(); + ConnectionPoolConfiguration.builder() + .maxConnectionsPercent(modelConnectionPoolConfig.getMaxConnectionsPercent()) + .maxIdleConnectionsPercent(modelConnectionPoolConfig.getMaxIdleConnectionsPercent()) + .connectionBorrowTimeout(modelConnectionPoolConfig.getConnectionBorrowTimeout()) + .sessionPinningFilters(modelConnectionPoolConfig.getSessionPinningFilters()) + .initQuery(modelConnectionPoolConfig.getInitQuery()) + .build(); + + ModifyDbProxyTargetGroupRequest request = ModifyDbProxyTargetGroupRequest.builder() + .dbProxyName(newModel.getDBProxyName()) + .targetGroupName(newModel.getTargetGroupName()) + .connectionPoolConfig(connectionPoolConfiguration) + .build(); + + return clientProxy.injectCredentialsAndInvokeV2(request, rdsClient::modifyDBProxyTargetGroup).dbProxyTargetGroup(); } private List registerNewTargets(ResourceModel oldModel, ResourceModel newModel) { @@ -173,12 +175,13 @@ private List registerNewTargets(ResourceModel oldModel, ResourceM return new ArrayList<>(); } - RegisterDBProxyTargetsRequest registerRequest = new RegisterDBProxyTargetsRequest() - .withDBProxyName(newModel.getDBProxyName()) - .withTargetGroupName(newModel.getTargetGroupName()) - .withDBClusterIdentifiers(clustersToAdd) - .withDBInstanceIdentifiers(instancesToAdd); - return clientProxy.injectCredentialsAndInvoke(registerRequest, rdsClient::registerDBProxyTargets).getDBProxyTargets(); + RegisterDbProxyTargetsRequest registerRequest = RegisterDbProxyTargetsRequest.builder() + .dbProxyName(newModel.getDBProxyName()) + .targetGroupName(newModel.getTargetGroupName()) + .dbClusterIdentifiers(clustersToAdd) + .dbInstanceIdentifiers(instancesToAdd) + .build(); + return clientProxy.injectCredentialsAndInvokeV2(registerRequest, rdsClient::registerDBProxyTargets).dbProxyTargets(); } private boolean deregisterOldTargets(ResourceModel oldModel, ResourceModel newModel) { @@ -194,17 +197,18 @@ private boolean deregisterOldTargets(ResourceModel oldModel, ResourceModel newMo return true; } - DeregisterDBProxyTargetsRequest deregisterRequest = new DeregisterDBProxyTargetsRequest() - .withDBProxyName(newModel.getDBProxyName()) - .withTargetGroupName(newModel.getTargetGroupName()) - .withDBClusterIdentifiers(clustersToRemove) - .withDBInstanceIdentifiers(instancesToRemove); - clientProxy.injectCredentialsAndInvoke(deregisterRequest, rdsClient::deregisterDBProxyTargets); + DeregisterDbProxyTargetsRequest deregisterRequest = DeregisterDbProxyTargetsRequest.builder() + .dbProxyName(newModel.getDBProxyName()) + .targetGroupName(newModel.getTargetGroupName()) + .dbClusterIdentifiers(clustersToRemove) + .dbInstanceIdentifiers(instancesToRemove) + .build(); + clientProxy.injectCredentialsAndInvokeV2(deregisterRequest, rdsClient::deregisterDBProxyTargets); return true; } private List listNewObjects(List list1, List list2) { - if (list1.size() > 0 && list2.size() > 0) { + if (!list1.isEmpty() && !list2.isEmpty()) { list1.removeAll(list2); } return list1; @@ -214,11 +218,12 @@ private boolean checkTargetHealth(ResourceModel model) { String proxyName = model.getDBProxyName(); String targetGroupName = Optional.ofNullable(model.getTargetGroupName()).orElse("default"); - DescribeDBProxyTargetsRequest describeDBProxyTargetsRequest = new DescribeDBProxyTargetsRequest() - .withDBProxyName(proxyName) - .withTargetGroupName(targetGroupName); + DescribeDbProxyTargetsRequest describeDBProxyTargetsRequest = DescribeDbProxyTargetsRequest.builder() + .dbProxyName(proxyName) + .targetGroupName(targetGroupName) + .build(); - DescribeDBProxyTargetsResult describeResult = clientProxy.injectCredentialsAndInvoke(describeDBProxyTargetsRequest, rdsClient::describeDBProxyTargets); - return validateHealth(describeResult); + DescribeDbProxyTargetsResponse targetsResponse = clientProxy.injectCredentialsAndInvokeV2(describeDBProxyTargetsRequest, rdsClient::describeDBProxyTargets); + return validateHealth(targetsResponse); } } diff --git a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/Utility.java b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/Utility.java index 77fa035..e443e36 100644 --- a/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/Utility.java +++ b/aws-rds-dbproxytargetgroup/src/main/java/software/amazon/rds/dbproxytargetgroup/Utility.java @@ -8,30 +8,31 @@ import java.util.List; import java.util.Optional; -import com.amazonaws.services.rds.model.ConnectionPoolConfigurationInfo; -import com.amazonaws.services.rds.model.DBProxyTarget; -import com.amazonaws.services.rds.model.DBProxyTargetGroup; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsResult; +import software.amazon.awssdk.services.rds.model.ConnectionPoolConfigurationInfo; +import software.amazon.awssdk.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DBProxyTargetGroup; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsResponse; + public class Utility { public static ResourceModel resultToModel(DBProxyTargetGroup targetGroup){ return ResourceModel .builder() - .dBProxyName(targetGroup.getDBProxyName()) - .targetGroupName(targetGroup.getTargetGroupName()) - .targetGroupArn(targetGroup.getTargetGroupArn()) - .connectionPoolConfigurationInfo(resultToModel(targetGroup.getConnectionPoolConfig())) + .dBProxyName(targetGroup.dbProxyName()) + .targetGroupName(targetGroup.targetGroupName()) + .targetGroupArn(targetGroup.targetGroupArn()) + .connectionPoolConfigurationInfo(resultToModel(targetGroup.connectionPoolConfig())) .build(); } public static ConnectionPoolConfigurationInfoFormat resultToModel(ConnectionPoolConfigurationInfo connectionPoolConfig) { return ConnectionPoolConfigurationInfoFormat .builder() - .maxConnectionsPercent(connectionPoolConfig.getMaxConnectionsPercent()) - .maxIdleConnectionsPercent(connectionPoolConfig.getMaxIdleConnectionsPercent()) - .connectionBorrowTimeout(connectionPoolConfig.getConnectionBorrowTimeout()) - .sessionPinningFilters(connectionPoolConfig.getSessionPinningFilters()) - .initQuery(connectionPoolConfig.getInitQuery()) + .maxConnectionsPercent(connectionPoolConfig.maxConnectionsPercent()) + .maxIdleConnectionsPercent(connectionPoolConfig.maxIdleConnectionsPercent()) + .connectionBorrowTimeout(connectionPoolConfig.connectionBorrowTimeout()) + .sessionPinningFilters(connectionPoolConfig.sessionPinningFilters()) + .initQuery(connectionPoolConfig.initQuery()) .build(); } @@ -43,21 +44,21 @@ static List getInstances(ResourceModel model) { return Optional.ofNullable(model.getDBInstanceIdentifiers()).orElse(new ArrayList<>()); } - static boolean validateHealth(DescribeDBProxyTargetsResult describeResult) { - for (DBProxyTarget target:describeResult.getTargets()) { + static boolean validateHealth(DescribeDbProxyTargetsResponse describeResponse) { + for (DBProxyTarget target:describeResponse.targets()) { // Tracked cluster do not currently have their own health state, adding optional // health checks for future proofing - if (target.getType().equalsIgnoreCase(TRACKED_CLUSTER)){ - if (target.getTargetHealth() != null - && target.getTargetHealth().getState() != null - && !target.getTargetHealth().getState().equalsIgnoreCase(AVAILABLE_STATE)) { + if (target.type().toString().equalsIgnoreCase(TRACKED_CLUSTER)){ + if (target.targetHealth() != null + && target.targetHealth().state() != null + && !target.targetHealth().state().toString().equalsIgnoreCase(AVAILABLE_STATE)) { return false; } } - if (target.getType().equalsIgnoreCase(RDS_INSTANCE)){ - if (target.getTargetHealth() == null || - !target.getTargetHealth().getState().equalsIgnoreCase(AVAILABLE_STATE)) { + if (target.type().toString().equalsIgnoreCase(RDS_INSTANCE)){ + if (target.targetHealth() == null || + !target.targetHealth().state().toString().equalsIgnoreCase(AVAILABLE_STATE)) { return false; } } diff --git a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/CreateHandlerTest.java b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/CreateHandlerTest.java index 90f40e8..fc44f28 100644 --- a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/CreateHandlerTest.java +++ b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/CreateHandlerTest.java @@ -18,24 +18,22 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.ConnectionPoolConfigurationInfo; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyNotFoundException; -import com.amazonaws.services.rds.model.DBProxyTarget; -import com.amazonaws.services.rds.model.DBProxyTargetGroup; -import com.amazonaws.services.rds.model.DBProxyTargetGroupNotFoundException; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsResult; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsResult; -import com.amazonaws.services.rds.model.ModifyDBProxyTargetGroupRequest; -import com.amazonaws.services.rds.model.ModifyDBProxyTargetGroupResult; -import com.amazonaws.services.rds.model.RegisterDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.RegisterDBProxyTargetsResult; -import com.amazonaws.services.rds.model.TargetHealth; import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.ConnectionPoolConfigurationInfo; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DBProxyTargetGroup; +import software.amazon.awssdk.services.rds.model.DbProxyNotFoundException; +import software.amazon.awssdk.services.rds.model.DbProxyTargetGroupNotFoundException; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsResponse; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyTargetGroupRequest; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyTargetGroupResponse; +import software.amazon.awssdk.services.rds.model.RegisterDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.RegisterDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.TargetHealth; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.HandlerErrorCode; import software.amazon.cloudformation.proxy.Logger; @@ -60,8 +58,8 @@ public void setup() { @Test public void handleRequest_SimpleSuccess() { - DBProxy dbProxy = new DBProxy().withStatus("available"); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); + DBProxy dbProxy = DBProxy.builder().status("available").build(); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); List proxyTargets = new ArrayList<>(); final CreateHandler handler = new CreateHandler(); @@ -95,12 +93,12 @@ public void handleRequest_SimpleSuccess() { @Test public void testModifyNoConnectionPoolConfig() { - DBProxy dbProxy = new DBProxy().withStatus("available"); + DBProxy dbProxy = DBProxy.builder().status("available").build(); ImmutableList clusterId = ImmutableList.of("clusterId"); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); - doReturn(new DescribeDBProxyTargetGroupsResult().withTargetGroups(dbProxyTargetGroup)).when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyTargetGroupsRequest.class), - ArgumentMatchers.>>any()); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); + doReturn(DescribeDbProxyTargetGroupsResponse.builder().targetGroups(dbProxyTargetGroup).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetGroupsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); final ResourceModel model = ResourceModel.builder().dBClusterIdentifiers(clusterId).build(); @@ -140,18 +138,19 @@ public void testModifyConnectionConfigProxy() { String initQuery = "initQuery"; String sessionPinningFilters = "sessionPinningFilters"; - DBProxy dbProxy = new DBProxy().withStatus("available"); - ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = new ConnectionPoolConfigurationInfo() - .withConnectionBorrowTimeout(connectionBorrowTimeout) - .withMaxConnectionsPercent(maxConnectionsPercent) - .withMaxIdleConnectionsPercent(maxIdleConnectionsPercent) - .withInitQuery(initQuery) - .withSessionPinningFilters(sessionPinningFilters); - - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup().withConnectionPoolConfig(connectionPoolConfigurationInfo); - doReturn(new ModifyDBProxyTargetGroupResult().withDBProxyTargetGroup(dbProxyTargetGroup)).when(proxy) - .injectCredentialsAndInvoke(any(ModifyDBProxyTargetGroupRequest.class), - ArgumentMatchers.>>any()); + DBProxy dbProxy = DBProxy.builder().status("available").build(); + ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = ConnectionPoolConfigurationInfo.builder() + .connectionBorrowTimeout(connectionBorrowTimeout) + .maxConnectionsPercent(maxConnectionsPercent) + .maxIdleConnectionsPercent(maxIdleConnectionsPercent) + .initQuery(initQuery) + .sessionPinningFilters(sessionPinningFilters) + .build(); + + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().connectionPoolConfig(connectionPoolConfigurationInfo).build(); + doReturn(ModifyDbProxyTargetGroupResponse.builder().dbProxyTargetGroup(dbProxyTargetGroup).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(ModifyDbProxyTargetGroupRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); ConnectionPoolConfigurationInfoFormat connectionPoolConfigurationInfo1 = @@ -195,16 +194,17 @@ public void testModifyConnectionConfigProxy() { @Test public void testCheckTargetHealth() { - DBProxy dbProxy = new DBProxy().withStatus("available"); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); + DBProxy dbProxy = DBProxy.builder().status("available").build(); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); List proxyTargets = new ArrayList<>(); - DBProxyTarget target = new DBProxyTarget() - .withRdsResourceId("resourceId") - .withType("RDS_INSTANCE") - .withTargetHealth(new TargetHealth().withState(Constants.AVAILABLE_STATE)); + DBProxyTarget target = DBProxyTarget.builder() + .rdsResourceId("resourceId") + .type("RDS_INSTANCE") + .targetHealth(TargetHealth.builder().state(Constants.AVAILABLE_STATE).build()) + .build(); - doReturn(new DescribeDBProxyTargetsResult().withTargets(target)).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + doReturn(DescribeDbProxyTargetsResponse.builder().targets(target).build()).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); @@ -245,15 +245,16 @@ public void testCheckTargetHealth() { @Test public void testCheckTargetHealth_nullInstanceHealth() { - DBProxy dbProxy = new DBProxy().withStatus("available"); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); + DBProxy dbProxy = DBProxy.builder().status("available").build(); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); List proxyTargets = new ArrayList<>(); - DBProxyTarget target = new DBProxyTarget() - .withRdsResourceId("resourceId") - .withType("RDS_INSTANCE"); + DBProxyTarget target = DBProxyTarget.builder() + .rdsResourceId("resourceId") + .type("RDS_INSTANCE") + .build(); - doReturn(new DescribeDBProxyTargetsResult().withTargets(target)).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + doReturn(DescribeDbProxyTargetsResponse.builder().targets(target).build()).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); @@ -294,16 +295,17 @@ public void testCheckTargetHealth_nullInstanceHealth() { @Test public void testCheckTargetHealth_unhealthy() { - DBProxy dbProxy = new DBProxy().withStatus("available"); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); + DBProxy dbProxy = DBProxy.builder().status("available").build(); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); List proxyTargets = new ArrayList<>(); - DBProxyTarget target = new DBProxyTarget() - .withRdsResourceId("resourceId") - .withType("RDS_INSTANCE") - .withTargetHealth(new TargetHealth().withState("unhealthy")); - - doReturn(new DescribeDBProxyTargetsResult().withTargets(target)).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), ArgumentMatchers.>>any()); + DBProxyTarget target = DBProxyTarget.builder() + .rdsResourceId("resourceId") + .type("RDS_INSTANCE") + .targetHealth(TargetHealth.builder().state("unhealthy").build()) + .build(); + doReturn(DescribeDbProxyTargetsResponse.builder().targets(target).build()).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); @@ -343,22 +345,22 @@ public void testCheckTargetHealth_unhealthy() { @Test public void testCheckTargetHealth_cluster() { - DBProxy dbProxy = new DBProxy().withStatus("available"); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); + DBProxy dbProxy = DBProxy.builder().status("available").build(); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); List proxyTargets = new ArrayList<>(); - DBProxyTarget target = new DBProxyTarget() - .withRdsResourceId("resourceId-c") - .withType("TRACKED_CLUSTER"); - - DBProxyTarget targetCluster = new DBProxyTarget() - .withRdsResourceId("resourceId-i") - .withType("RDS_INSTANCE") - .withTargetHealth(new TargetHealth().withState(Constants.AVAILABLE_STATE)); + DBProxyTarget target = DBProxyTarget.builder() + .rdsResourceId("resourceId-c") + .type("TRACKED_CLUSTER") + .build(); - doReturn(new DescribeDBProxyTargetsResult().withTargets(target, targetCluster)).when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + DBProxyTarget targetCluster = DBProxyTarget.builder() + .rdsResourceId("resourceId-i") + .type("RDS_INSTANCE") + .targetHealth(TargetHealth.builder().state(Constants.AVAILABLE_STATE).build()) + .build(); + doReturn(DescribeDbProxyTargetsResponse.builder().targets(target, targetCluster).build()).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); final ResourceModel model = ResourceModel.builder().build(); @@ -397,12 +399,11 @@ public void testCheckTargetHealth_cluster() { @Test public void testCheckTargetHealth_noTargets() { - DBProxy dbProxy = new DBProxy().withStatus("available"); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); + DBProxy dbProxy = DBProxy.builder().status("available").build(); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); List proxyTargets = new ArrayList<>(); - doReturn(new DescribeDBProxyTargetsResult()).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); - + doReturn(DescribeDbProxyTargetsResponse.builder().build()).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); final ResourceModel model = ResourceModel.builder().build(); @@ -441,13 +442,12 @@ public void testCheckTargetHealth_noTargets() { @Test public void testRegistration_Available(){ - DBProxy dbProxy = new DBProxy().withStatus("available"); - - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); - DBProxyTarget dbProxyTarget = new DBProxyTarget(); - doReturn(new RegisterDBProxyTargetsResult().withDBProxyTargets(dbProxyTarget)).when(proxy) - .injectCredentialsAndInvoke(any(RegisterDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + DBProxy dbProxy = DBProxy.builder().status("available").build(); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); + DBProxyTarget dbProxyTarget = DBProxyTarget.builder().build(); + doReturn(RegisterDbProxyTargetsResponse.builder().dbProxyTargets(dbProxyTarget).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(RegisterDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); ImmutableList clusterId = ImmutableList.of("clusterId"); @@ -485,13 +485,13 @@ public void testRegistration_Available(){ @Test public void testRegistration_Creating(){ - DBProxy dbProxy = new DBProxy().withStatus("creating"); + DBProxy dbProxy = DBProxy.builder().status("creating").build(); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); - DBProxyTarget dbProxyTarget = new DBProxyTarget(); - doReturn(new RegisterDBProxyTargetsResult().withDBProxyTargets(dbProxyTarget)).when(proxy) - .injectCredentialsAndInvoke(any(RegisterDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); + DBProxyTarget dbProxyTarget = DBProxyTarget.builder().build(); + doReturn(RegisterDbProxyTargetsResponse.builder().dbProxyTargets(dbProxyTarget).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(RegisterDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); ImmutableList clusterId = ImmutableList.of("clusterId"); @@ -529,8 +529,9 @@ public void testRegistration_Creating(){ @Test public void testProxyDoesNotExist() { - doThrow(new DBProxyNotFoundException("")).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetGroupsRequest.class), - ArgumentMatchers.>>any()); + doThrow(DbProxyNotFoundException.builder().message("").build()) + .when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetGroupsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); final ResourceModel model = ResourceModel.builder().build(); @@ -549,8 +550,9 @@ public void testProxyDoesNotExist() { @Test public void testProxyTargetGroupDoesNotExist() { - doThrow(new DBProxyTargetGroupNotFoundException("")).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetGroupsRequest.class), - ArgumentMatchers.>>any()); + doThrow(DbProxyTargetGroupNotFoundException.builder().message("").build()).when(proxy) + .injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetGroupsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); final ResourceModel model = ResourceModel.builder().build(); @@ -579,7 +581,7 @@ public void testStabilizationTimeout() { final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(0) - .proxy(new DBProxy().withStatus("creating")) + .proxy(DBProxy.builder().status("creating").build()) .build(); try { diff --git a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/DeleteHandlerTest.java b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/DeleteHandlerTest.java index 83f7b54..50ec591 100644 --- a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/DeleteHandlerTest.java +++ b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/DeleteHandlerTest.java @@ -19,15 +19,14 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.DBProxyNotFoundException; -import com.amazonaws.services.rds.model.DBProxyTarget; -import com.amazonaws.services.rds.model.DeregisterDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsResult; -import com.amazonaws.services.rds.model.InvalidDBProxyStateException; import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DbProxyNotFoundException; +import software.amazon.awssdk.services.rds.model.DeregisterDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DeregisterDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.InvalidDbProxyStateException; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; @@ -79,9 +78,9 @@ public void handleRequest_SimpleSuccess() { @Test public void handleRequest_DeregisterEmpty() { - DescribeDBProxyTargetsResult emptyResult = new DescribeDBProxyTargetsResult(); - doReturn(emptyResult).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + DescribeDbProxyTargetsResponse emptyResult = DescribeDbProxyTargetsResponse.builder().build(); + doReturn(emptyResult).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); @@ -115,12 +114,14 @@ public void handleRequest_DeregisterEmpty() { @Test public void handleRequest_DeregisterInstance() { String instanceId= "instanceID"; - DescribeDBProxyTargetsResult describeResult = new DescribeDBProxyTargetsResult() - .withTargets(new DBProxyTarget() - .withRdsResourceId(instanceId) - .withType("RDS_INSTANCE")); - doReturn(describeResult).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + DescribeDbProxyTargetsResponse describeResponse = DescribeDbProxyTargetsResponse.builder() + .targets(DBProxyTarget.builder() + .rdsResourceId(instanceId) + .type("RDS_INSTANCE") + .build()) + .build(); + doReturn(describeResponse).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); final ResourceModel oldModel = ResourceModel.builder().dBInstanceIdentifiers(ImmutableList.of("db1")).build(); @@ -149,25 +150,26 @@ public void handleRequest_DeregisterInstance() { assertThat(response.getMessage()).isNull(); assertThat(response.getErrorCode()).isNull(); - ArgumentCaptor captor = ArgumentCaptor.forClass(DeregisterDBProxyTargetsRequest.class); - verify(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), ArgumentMatchers.>>any()); - verify(proxy, times(2)).injectCredentialsAndInvoke(captor.capture(), - ArgumentMatchers.>>any()); - DeregisterDBProxyTargetsRequest deregisterDBProxyTargetsRequest = captor.getValue(); - assertThat(deregisterDBProxyTargetsRequest.getDBInstanceIdentifiers()).isEqualTo(ImmutableList.of(instanceId)); - assertThat(deregisterDBProxyTargetsRequest.getDBClusterIdentifiers().size()).isEqualTo(0); + ArgumentCaptor captor = ArgumentCaptor.forClass(DeregisterDbProxyTargetsRequest.class); + verify(proxy).injectCredentialsAndInvokeV2(any(DeregisterDbProxyTargetsRequest.class), ArgumentMatchers.>any()); + verify(proxy).injectCredentialsAndInvokeV2(captor.capture(), + ArgumentMatchers.>any()); + DeregisterDbProxyTargetsRequest deregisterDBProxyTargetsRequest = captor.getValue(); + assertThat(deregisterDBProxyTargetsRequest.dbInstanceIdentifiers()).isEqualTo(ImmutableList.of(instanceId)); + assertThat(deregisterDBProxyTargetsRequest.dbClusterIdentifiers().size()).isEqualTo(0); } @Test public void handleRequest_DeregisterCluster() { String instanceId= "instanceID"; String clusterName = "clusterName"; - DBProxyTarget instance = new DBProxyTarget().withRdsResourceId(instanceId).withType("RDS_INSTANCE"); - DBProxyTarget cluster = new DBProxyTarget().withRdsResourceId(clusterName).withType("TRACKED_CLUSTER"); - DescribeDBProxyTargetsResult describeResult = new DescribeDBProxyTargetsResult() - .withTargets(instance, cluster); - doReturn(describeResult).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + DBProxyTarget instance = DBProxyTarget.builder().rdsResourceId(instanceId).type("RDS_INSTANCE").build(); + DBProxyTarget cluster = DBProxyTarget.builder().rdsResourceId(clusterName).type("TRACKED_CLUSTER").build(); + DescribeDbProxyTargetsResponse describeResponse = DescribeDbProxyTargetsResponse.builder() + .targets(instance, cluster) + .build(); + doReturn(describeResponse).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); final ResourceModel oldModel = ResourceModel.builder().dBInstanceIdentifiers(ImmutableList.of("db1")).build(); @@ -196,20 +198,20 @@ public void handleRequest_DeregisterCluster() { assertThat(response.getMessage()).isNull(); assertThat(response.getErrorCode()).isNull(); - ArgumentCaptor captor = ArgumentCaptor.forClass(DeregisterDBProxyTargetsRequest.class); - verify(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); - verify(proxy, times(2)).injectCredentialsAndInvoke(captor.capture(), - ArgumentMatchers.>>any()); - DeregisterDBProxyTargetsRequest deregisterDBProxyTargetsRequest = captor.getValue(); - assertThat(deregisterDBProxyTargetsRequest.getDBClusterIdentifiers()).isEqualTo(ImmutableList.of(clusterName)); - assertThat(deregisterDBProxyTargetsRequest.getDBInstanceIdentifiers().size()).isEqualTo(0); + ArgumentCaptor captor = ArgumentCaptor.forClass(DeregisterDbProxyTargetsRequest.class); + verify(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); + verify(proxy).injectCredentialsAndInvokeV2(captor.capture(), + ArgumentMatchers.>any()); + DeregisterDbProxyTargetsRequest deregisterDBProxyTargetsRequest = captor.getValue(); + assertThat(deregisterDBProxyTargetsRequest.dbClusterIdentifiers()).isEqualTo(ImmutableList.of(clusterName)); + assertThat(deregisterDBProxyTargetsRequest.dbInstanceIdentifiers().size()).isEqualTo(0); } @Test public void handleRequest_DeregisterProxyDeleted() { - doThrow(new DBProxyNotFoundException("")).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + doThrow(DbProxyNotFoundException.builder().message("").build()).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); @@ -241,9 +243,9 @@ public void handleRequest_DeregisterProxyDeleted() { } @Test public void handleRequest_DeregisterProxyDeleting() { - doThrow(new InvalidDBProxyStateException("DB Proxy prx-123 is in an unsupported state - DELETING, needs to be in [ACTIVE]")).when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + doThrow(InvalidDbProxyStateException.builder().message("DB Proxy prx-123 is in an unsupported state - DELETING, needs to be in [ACTIVE]").build()).when(proxy) + .injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final DeleteHandler handler = new DeleteHandler(); diff --git a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/ListHandlerTest.java b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/ListHandlerTest.java index b5d24b0..1d085dc 100644 --- a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/ListHandlerTest.java +++ b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/ListHandlerTest.java @@ -16,13 +16,11 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.ConnectionPoolConfigurationInfo; -import com.amazonaws.services.rds.model.DBProxyTargetGroup; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsResult; import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.ConnectionPoolConfigurationInfo; +import software.amazon.awssdk.services.rds.model.DBProxyTargetGroup; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; @@ -50,20 +48,23 @@ public void handleRequest_SimpleSuccess() { final ResourceModel model = ResourceModel.builder().build(); - ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = new ConnectionPoolConfigurationInfo(); - - DBProxyTargetGroup dbProxyTargetGroup1 = new DBProxyTargetGroup().withConnectionPoolConfig(connectionPoolConfigurationInfo) - .withDBProxyName("proxy1") - .withTargetGroupName("default"); - DBProxyTargetGroup dbProxyTargetGroup2 = new DBProxyTargetGroup().withConnectionPoolConfig(connectionPoolConfigurationInfo) - .withDBProxyName("proxy2") - .withTargetGroupName("default"); + ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = ConnectionPoolConfigurationInfo.builder().build(); + + DBProxyTargetGroup dbProxyTargetGroup1 = DBProxyTargetGroup.builder() + .connectionPoolConfig(connectionPoolConfigurationInfo) + .dbProxyName("proxy1") + .targetGroupName("default") + .build(); + DBProxyTargetGroup dbProxyTargetGroup2 = DBProxyTargetGroup.builder() + .connectionPoolConfig(connectionPoolConfigurationInfo) + .dbProxyName("proxy2") + .targetGroupName("default") + .build(); final List existingProxies = ImmutableList.of(dbProxyTargetGroup1, dbProxyTargetGroup2); - doReturn(new DescribeDBProxyTargetGroupsResult().withTargetGroups(existingProxies)) - .when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetGroupsRequest.class), - ArgumentMatchers.>>any()); - + doReturn(DescribeDbProxyTargetGroupsResponse.builder().targetGroups(existingProxies).build()) + .when(proxy) .injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetGroupsRequest.class), + ArgumentMatchers.>any()); final ResourceHandlerRequest request = ResourceHandlerRequest.builder() .desiredResourceState(model) diff --git a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/Matchers.java b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/Matchers.java index e5ba30d..f6e0e6a 100644 --- a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/Matchers.java +++ b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/Matchers.java @@ -2,14 +2,14 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.amazonaws.services.rds.model.DBProxyTargetGroup; +import software.amazon.awssdk.services.rds.model.DBProxyTargetGroup; public class Matchers { public static void assertThatModelsAreEqual(final Object rawModel, final DBProxyTargetGroup sdkModel) { assertThat(rawModel).isInstanceOf(ResourceModel.class); ResourceModel model = (ResourceModel)rawModel; - assertThat(model.getDBProxyName()).isEqualTo(sdkModel.getDBProxyName()); - assertThat(model.getTargetGroupName()).isEqualTo(sdkModel.getTargetGroupName()); + assertThat(model.getDBProxyName()).isEqualTo(sdkModel.dbProxyName()); + assertThat(model.getTargetGroupName()).isEqualTo(sdkModel.targetGroupName()); } } diff --git a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/ReadHandlerTest.java b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/ReadHandlerTest.java index 39d4a74..e537801 100644 --- a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/ReadHandlerTest.java +++ b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/ReadHandlerTest.java @@ -18,17 +18,15 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.ConnectionPoolConfigurationInfo; -import com.amazonaws.services.rds.model.DBProxyTarget; -import com.amazonaws.services.rds.model.DBProxyTargetGroup; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsResult; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsResult; -import com.amazonaws.services.rds.model.TargetType; import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.ConnectionPoolConfigurationInfo; +import software.amazon.awssdk.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DBProxyTargetGroup; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsResponse; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.TargetType; import software.amazon.cloudformation.exceptions.CfnNotFoundException; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; @@ -57,27 +55,30 @@ public void setup() { @Test public void handleRequest_SimpleSuccess() { final ReadHandler handler = new ReadHandler(); - ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = new ConnectionPoolConfigurationInfo(); + ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = ConnectionPoolConfigurationInfo.builder().build(); - DBProxyTargetGroup dbProxyTargetGroup1 = new DBProxyTargetGroup().withConnectionPoolConfig(connectionPoolConfigurationInfo) - .withDBProxyName(PROXY_NAME) - .withTargetGroupName(DEFAULT_NAME); + DBProxyTargetGroup dbProxyTargetGroup1 = DBProxyTargetGroup.builder().connectionPoolConfig(connectionPoolConfigurationInfo) + .dbProxyName(PROXY_NAME) + .targetGroupName(DEFAULT_NAME) + .build(); final List existingProxies = ImmutableList.of(dbProxyTargetGroup1); - DescribeDBProxyTargetGroupsRequest describeRequest = new DescribeDBProxyTargetGroupsRequest() - .withDBProxyName(PROXY_NAME) - .withTargetGroupName(DEFAULT_NAME); - doReturn(new DescribeDBProxyTargetGroupsResult().withTargetGroups(existingProxies)) + DescribeDbProxyTargetGroupsRequest describeRequest = DescribeDbProxyTargetGroupsRequest.builder() + .dbProxyName(PROXY_NAME) + .targetGroupName(DEFAULT_NAME) + .build(); + doReturn(DescribeDbProxyTargetGroupsResponse.builder().targetGroups(existingProxies).build()) .when(proxy) - .injectCredentialsAndInvoke(eq(describeRequest), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(eq(describeRequest), + ArgumentMatchers.>any()); - DescribeDBProxyTargetsRequest targetRequest = new DescribeDBProxyTargetsRequest() - .withDBProxyName(PROXY_NAME) - .withTargetGroupName(DEFAULT_NAME); - doReturn(new DescribeDBProxyTargetsResult()).when(proxy).injectCredentialsAndInvoke(eq(targetRequest), - ArgumentMatchers.>>any()); + DescribeDbProxyTargetsRequest targetRequest = DescribeDbProxyTargetsRequest.builder() + .dbProxyName(PROXY_NAME) + .targetGroupName(DEFAULT_NAME) + .build(); + doReturn(DescribeDbProxyTargetsResponse.builder().build()).when(proxy).injectCredentialsAndInvokeV2(eq(targetRequest), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyName(PROXY_NAME).targetGroupName(DEFAULT_NAME).build(); @@ -103,30 +104,34 @@ public void handleRequest_SimpleSuccess() { @Test public void handleRequest_WithRegisteredCluster() { final ReadHandler handler = new ReadHandler(); - ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = new ConnectionPoolConfigurationInfo(); + ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = ConnectionPoolConfigurationInfo.builder().build(); - DBProxyTargetGroup dbProxyTargetGroup1 = new DBProxyTargetGroup().withConnectionPoolConfig(connectionPoolConfigurationInfo) - .withDBProxyName(PROXY_NAME) - .withTargetGroupName(DEFAULT_NAME); + DBProxyTargetGroup dbProxyTargetGroup1 = DBProxyTargetGroup.builder().connectionPoolConfig(connectionPoolConfigurationInfo) + .dbProxyName(PROXY_NAME) + .targetGroupName(DEFAULT_NAME) + .build(); final List existingProxies = ImmutableList.of(dbProxyTargetGroup1); - DescribeDBProxyTargetGroupsRequest describeRequest = new DescribeDBProxyTargetGroupsRequest() - .withDBProxyName(PROXY_NAME) - .withTargetGroupName(DEFAULT_NAME); - doReturn(new DescribeDBProxyTargetGroupsResult().withTargetGroups(existingProxies)) + DescribeDbProxyTargetGroupsRequest describeRequest = DescribeDbProxyTargetGroupsRequest.builder() + .dbProxyName(PROXY_NAME) + .targetGroupName(DEFAULT_NAME) + .build(); + doReturn(DescribeDbProxyTargetGroupsResponse.builder().targetGroups(existingProxies).build()) .when(proxy) - .injectCredentialsAndInvoke(eq(describeRequest), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(eq(describeRequest), + ArgumentMatchers.>any()); - DescribeDBProxyTargetsRequest targetRequest = new DescribeDBProxyTargetsRequest() - .withDBProxyName(PROXY_NAME) - .withTargetGroupName(DEFAULT_NAME); + DescribeDbProxyTargetsRequest targetRequest = DescribeDbProxyTargetsRequest.builder() + .dbProxyName(PROXY_NAME) + .targetGroupName(DEFAULT_NAME) + .build(); String clusterId = "clusterId"; - doReturn(new DescribeDBProxyTargetsResult() - .withTargets(new DBProxyTarget().withType(TargetType.TRACKED_CLUSTER).withRdsResourceId(clusterId), - new DBProxyTarget().withType(TargetType.RDS_INSTANCE).withRdsResourceId("instanceId"))) - .when(proxy).injectCredentialsAndInvoke(eq(targetRequest), ArgumentMatchers.>>any()); + doReturn(DescribeDbProxyTargetsResponse.builder() + .targets(DBProxyTarget.builder().type(TargetType.TRACKED_CLUSTER).rdsResourceId(clusterId).build(), + DBProxyTarget.builder().type(TargetType.RDS_INSTANCE).rdsResourceId("instanceId").build()) + .build()) + .when(proxy).injectCredentialsAndInvokeV2(eq(targetRequest), ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyName(PROXY_NAME).targetGroupName(DEFAULT_NAME).build(); @@ -154,21 +159,24 @@ public void handleRequest_WithRegisteredCluster() { public void handleRequest_defaultName() { final ReadHandler handler = new ReadHandler(); - ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = new ConnectionPoolConfigurationInfo(); + ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = ConnectionPoolConfigurationInfo.builder().build(); - DBProxyTargetGroup dbProxyTargetGroup1 = new DBProxyTargetGroup().withConnectionPoolConfig(connectionPoolConfigurationInfo) - .withDBProxyName(PROXY_NAME) - .withTargetGroupName(DEFAULT_NAME); + DBProxyTargetGroup dbProxyTargetGroup1 = DBProxyTargetGroup.builder() + .connectionPoolConfig(connectionPoolConfigurationInfo) + .dbProxyName(PROXY_NAME) + .targetGroupName(DEFAULT_NAME) + .build(); final List existingProxies = ImmutableList.of(dbProxyTargetGroup1); - DescribeDBProxyTargetGroupsRequest describeRequest = new DescribeDBProxyTargetGroupsRequest() - .withDBProxyName(PROXY_NAME) - .withTargetGroupName(DEFAULT_NAME); - doReturn(new DescribeDBProxyTargetGroupsResult().withTargetGroups(existingProxies)) + DescribeDbProxyTargetGroupsRequest describeRequest = DescribeDbProxyTargetGroupsRequest.builder() + .dbProxyName(PROXY_NAME) + .targetGroupName(DEFAULT_NAME) + .build(); + doReturn(DescribeDbProxyTargetGroupsResponse.builder().targetGroups(existingProxies).build()) .when(proxy) - .injectCredentialsAndInvoke(eq(describeRequest), - ArgumentMatchers.>>any()); + .injectCredentialsAndInvokeV2(eq(describeRequest), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyName(PROXY_NAME).build(); @@ -194,9 +202,9 @@ public void handleRequest_defaultName() { public void handleRequest_ResourceNotFound() { final ReadHandler handler = new ReadHandler(); - doReturn(new DescribeDBProxyTargetGroupsResult()) - .when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetGroupsRequest.class), - ArgumentMatchers.>>any()); + doReturn(DescribeDbProxyTargetGroupsResponse.builder().build()) + .when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetGroupsRequest.class), + ArgumentMatchers.>any()); final ResourceModel model = ResourceModel.builder().dBProxyName("proxy1").build(); diff --git a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/UpdateHandlerTest.java b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/UpdateHandlerTest.java index c30ce46..b4f298e 100644 --- a/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/UpdateHandlerTest.java +++ b/aws-rds-dbproxytargetgroup/src/test/java/software/amazon/rds/dbproxytargetgroup/UpdateHandlerTest.java @@ -16,24 +16,22 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import com.amazonaws.AmazonWebServiceResult; -import com.amazonaws.ResponseMetadata; -import com.amazonaws.services.rds.model.ConnectionPoolConfigurationInfo; -import com.amazonaws.services.rds.model.DBProxy; -import com.amazonaws.services.rds.model.DBProxyTarget; -import com.amazonaws.services.rds.model.DBProxyTargetGroup; -import com.amazonaws.services.rds.model.DeregisterDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DeregisterDBProxyTargetsResult; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetGroupsResult; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.DescribeDBProxyTargetsResult; -import com.amazonaws.services.rds.model.ModifyDBProxyTargetGroupRequest; -import com.amazonaws.services.rds.model.ModifyDBProxyTargetGroupResult; -import com.amazonaws.services.rds.model.RegisterDBProxyTargetsRequest; -import com.amazonaws.services.rds.model.RegisterDBProxyTargetsResult; -import com.amazonaws.services.rds.model.TargetHealth; import com.google.common.collect.ImmutableList; +import software.amazon.awssdk.services.rds.model.ConnectionPoolConfigurationInfo; +import software.amazon.awssdk.services.rds.model.DBProxy; +import software.amazon.awssdk.services.rds.model.DBProxyTarget; +import software.amazon.awssdk.services.rds.model.DBProxyTargetGroup; +import software.amazon.awssdk.services.rds.model.DeregisterDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DeregisterDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetGroupsResponse; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.DescribeDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyTargetGroupRequest; +import software.amazon.awssdk.services.rds.model.ModifyDbProxyTargetGroupResponse; +import software.amazon.awssdk.services.rds.model.RegisterDbProxyTargetsRequest; +import software.amazon.awssdk.services.rds.model.RegisterDbProxyTargetsResponse; +import software.amazon.awssdk.services.rds.model.TargetHealth; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; @@ -57,7 +55,7 @@ public void setup() { @Test public void handleRequest_SimpleSuccess() { - DBProxyTargetGroup defaultTargetGroup = new DBProxyTargetGroup(); + DBProxyTargetGroup defaultTargetGroup = DBProxyTargetGroup.builder().build(); List targetList = new ArrayList<>(); final CallbackContext context = CallbackContext.builder() .targetGroupStatus(defaultTargetGroup) @@ -98,18 +96,19 @@ public void testModifyTargetGroup() { String initQuery = "initQuery"; String sessionPinningFilters = "sessionPinningFilters"; - DBProxy dbProxy = new DBProxy().withStatus("available"); - com.amazonaws.services.rds.model.ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = new ConnectionPoolConfigurationInfo() - .withConnectionBorrowTimeout(connectionBorrowTimeout) - .withMaxConnectionsPercent(maxConnectionsPercent) - .withMaxIdleConnectionsPercent(newMaxIdleConnectionsPercent) - .withInitQuery(initQuery) - .withSessionPinningFilters(sessionPinningFilters); + DBProxy dbProxy = DBProxy.builder().status("available").build(); + ConnectionPoolConfigurationInfo connectionPoolConfigurationInfo = ConnectionPoolConfigurationInfo.builder() + .connectionBorrowTimeout(connectionBorrowTimeout) + .maxConnectionsPercent(maxConnectionsPercent) + .maxIdleConnectionsPercent(newMaxIdleConnectionsPercent) + .initQuery(initQuery) + .sessionPinningFilters(sessionPinningFilters) + .build(); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup().withConnectionPoolConfig(connectionPoolConfigurationInfo); - doReturn(new ModifyDBProxyTargetGroupResult().withDBProxyTargetGroup(dbProxyTargetGroup)).when(proxy) - .injectCredentialsAndInvoke(any(ModifyDBProxyTargetGroupRequest.class), - ArgumentMatchers.>>any()); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().connectionPoolConfig(connectionPoolConfigurationInfo).build(); + doReturn(ModifyDbProxyTargetGroupResponse.builder().dbProxyTargetGroup(dbProxyTargetGroup).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(ModifyDbProxyTargetGroupRequest.class), + ArgumentMatchers.>any()); final CallbackContext context = CallbackContext.builder() @@ -167,12 +166,12 @@ public void testModifyTargetGroup() { @Test public void testModifyNoConnectionPoolConfig() { - DBProxy dbProxy = new DBProxy().withStatus("available"); + DBProxy dbProxy = DBProxy.builder().status("available").build(); ImmutableList clusterId = ImmutableList.of("clusterId"); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); - doReturn(new DescribeDBProxyTargetGroupsResult().withTargetGroups(dbProxyTargetGroup)).when(proxy) - .injectCredentialsAndInvoke(any(DescribeDBProxyTargetGroupsRequest.class), - ArgumentMatchers.>>any()); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); + doReturn(DescribeDbProxyTargetGroupsResponse.builder().targetGroups(dbProxyTargetGroup).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetGroupsRequest.class), + ArgumentMatchers.>any()); final CreateHandler handler = new CreateHandler(); final ResourceModel model = ResourceModel.builder().dBClusterIdentifiers(clusterId).build(); @@ -212,7 +211,7 @@ public void testModifyTargetGroup_noChanges() { String initQuery = "initQuery"; String sessionPinningFilters = "sessionPinningFilters"; - DBProxy dbProxy = new DBProxy().withStatus("available"); + DBProxy dbProxy = DBProxy.builder().status("available").build(); final CallbackContext context = CallbackContext.builder() .stabilizationRetriesRemaining(1) @@ -241,7 +240,7 @@ public void testModifyTargetGroup_noChanges() { final CallbackContext desiredOutputContext = CallbackContext.builder() .stabilizationRetriesRemaining(Constants.NUMBER_OF_STATE_POLL_RETRIES) - .targetGroupStatus(new DBProxyTargetGroup()) + .targetGroupStatus(DBProxyTargetGroup.builder().build()) .build(); final ProgressEvent response @@ -258,12 +257,12 @@ public void testModifyTargetGroup_noChanges() { @Test public void testRegister() { - DBProxy dbProxy = new DBProxy().withStatus("available"); - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); - DBProxyTarget dbProxyTarget = new DBProxyTarget(); - doReturn(new RegisterDBProxyTargetsResult().withDBProxyTargets(dbProxyTarget)).when(proxy) - .injectCredentialsAndInvoke(any(RegisterDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + DBProxy dbProxy = DBProxy.builder().status("available").build(); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); + DBProxyTarget dbProxyTarget = DBProxyTarget.builder().build(); + doReturn(RegisterDbProxyTargetsResponse.builder().dbProxyTargets(dbProxyTarget).build()).when(proxy) + .injectCredentialsAndInvokeV2(any(RegisterDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final UpdateHandler handler = new UpdateHandler(); ImmutableList clusterId = ImmutableList.of("clusterId"); @@ -304,9 +303,9 @@ public void testRegister() { @Test public void testDeregister() { - DBProxyTargetGroup dbProxyTargetGroup = new DBProxyTargetGroup(); - doReturn(new DeregisterDBProxyTargetsResult()).when(proxy).injectCredentialsAndInvoke(any(DeregisterDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + DBProxyTargetGroup dbProxyTargetGroup = DBProxyTargetGroup.builder().build(); + doReturn(DeregisterDbProxyTargetsResponse.builder().build()).when(proxy).injectCredentialsAndInvokeV2(any(DeregisterDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final UpdateHandler handler = new UpdateHandler(); ImmutableList instanceId = ImmutableList.of("instanceId"); @@ -343,17 +342,18 @@ public void testDeregister() { @Test public void testTargetHealth() { - DBProxyTargetGroup defaultTargetGroup = new DBProxyTargetGroup(); - DBProxyTarget dbProxyTarget = new DBProxyTarget().withRdsResourceId("resourceId"); + DBProxyTargetGroup defaultTargetGroup = DBProxyTargetGroup.builder().build(); + DBProxyTarget dbProxyTarget = DBProxyTarget.builder().rdsResourceId("resourceId").build(); List targetList = ImmutableList.of(dbProxyTarget); - DBProxyTarget target = new DBProxyTarget() - .withRdsResourceId("resourceId") - .withType("RDS_INSTANCE") - .withTargetHealth(new TargetHealth().withState(Constants.AVAILABLE_STATE)); + DBProxyTarget target = DBProxyTarget.builder() + .rdsResourceId("resourceId") + .type("RDS_INSTANCE") + .targetHealth(TargetHealth.builder().state(Constants.AVAILABLE_STATE).build()) + .build(); - doReturn(new DescribeDBProxyTargetsResult().withTargets(target)).when(proxy).injectCredentialsAndInvoke(any(DescribeDBProxyTargetsRequest.class), - ArgumentMatchers.>>any()); + doReturn(DescribeDbProxyTargetsResponse.builder().targets(target).build()).when(proxy).injectCredentialsAndInvokeV2(any(DescribeDbProxyTargetsRequest.class), + ArgumentMatchers.>any()); final CallbackContext context = CallbackContext.builder() .targetGroupStatus(defaultTargetGroup) .targets(targetList)