This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit c7b7acfe69017270df9064d97af52328e6338e21 Author: Andrea Cosentino <[email protected]> AuthorDate: Fri Jan 3 13:45:43 2020 +0100 CAMEL-14348 - Camel-AWS Lambda: Add alias operations, getAlias operation --- .../component/aws/lambda/LambdaOperations.java | 1 + .../camel/component/aws/lambda/LambdaProducer.java | 23 ++++++++++++++++++++++ .../aws/lambda/AmazonLambdaClientMock.java | 6 +++++- .../component/aws/lambda/LambdaProducerTest.java | 21 ++++++++++++++++++++ .../endpoint/dsl/LambdaEndpointBuilderFactory.java | 1 + 5 files changed, 51 insertions(+), 1 deletion(-) diff --git a/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaOperations.java b/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaOperations.java index 071436e..e693dc5 100644 --- a/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaOperations.java +++ b/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaOperations.java @@ -22,6 +22,7 @@ public enum LambdaOperations { getFunction, createAlias, deleteAlias, + getAlias, createFunction, deleteFunction, invokeFunction, diff --git a/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java b/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java index 674ee5d..d26ced4 100644 --- a/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java +++ b/components/camel-aws-lambda/src/main/java/org/apache/camel/component/aws/lambda/LambdaProducer.java @@ -40,6 +40,8 @@ import com.amazonaws.services.lambda.model.DeleteFunctionRequest; import com.amazonaws.services.lambda.model.DeleteFunctionResult; import com.amazonaws.services.lambda.model.Environment; import com.amazonaws.services.lambda.model.FunctionCode; +import com.amazonaws.services.lambda.model.GetAliasRequest; +import com.amazonaws.services.lambda.model.GetAliasResult; import com.amazonaws.services.lambda.model.GetFunctionRequest; import com.amazonaws.services.lambda.model.GetFunctionResult; import com.amazonaws.services.lambda.model.InvokeRequest; @@ -130,6 +132,9 @@ public class LambdaProducer extends DefaultProducer { case deleteAlias: deleteAlias(getEndpoint().getAwsLambdaClient(), exchange); break; + case getAlias: + getAlias(getEndpoint().getAwsLambdaClient(), exchange); + break; default: throw new IllegalArgumentException("Unsupported operation"); } @@ -612,6 +617,24 @@ public class LambdaProducer extends DefaultProducer { message.setBody(result); } + private void getAlias(AWSLambda lambdaClient, Exchange exchange) { + GetAliasResult result; + try { + GetAliasRequest request = new GetAliasRequest().withFunctionName(getEndpoint().getFunction()); + String aliasName = exchange.getIn().getHeader(LambdaConstants.FUNCTION_ALIAS_NAME, String.class); + if (ObjectHelper.isEmpty(aliasName)) { + throw new IllegalArgumentException("Function alias must be specified to get an alias"); + } + request.setName(aliasName); + result = lambdaClient.getAlias(request); + } catch (AmazonServiceException ase) { + log.trace("getAlias command returned the error code {}", ase.getErrorCode()); + throw ase; + } + Message message = getMessageForResponse(exchange); + message.setBody(result); + } + private LambdaOperations determineOperation(Exchange exchange) { LambdaOperations operation = exchange.getIn().getHeader(LambdaConstants.OPERATION, LambdaOperations.class); if (operation == null) { diff --git a/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/AmazonLambdaClientMock.java b/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/AmazonLambdaClientMock.java index 4644ade..d57fae2 100644 --- a/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/AmazonLambdaClientMock.java +++ b/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/AmazonLambdaClientMock.java @@ -181,7 +181,11 @@ public class AmazonLambdaClientMock extends AbstractAWSLambda { @Override public GetAliasResult getAlias(GetAliasRequest getAliasRequest) { - throw new UnsupportedOperationException(); + GetAliasResult result = new GetAliasResult(); + result.setName("alias"); + result.setDescription("an alias"); + result.setFunctionVersion("1"); + return result; } @Override diff --git a/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/LambdaProducerTest.java b/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/LambdaProducerTest.java index f7eb568..d8580e3 100644 --- a/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/LambdaProducerTest.java +++ b/components/camel-aws-lambda/src/test/java/org/apache/camel/component/aws/lambda/LambdaProducerTest.java @@ -29,6 +29,7 @@ import com.amazonaws.services.lambda.model.CreateFunctionResult; import com.amazonaws.services.lambda.model.DeleteAliasResult; import com.amazonaws.services.lambda.model.DeleteEventSourceMappingResult; import com.amazonaws.services.lambda.model.DeleteFunctionResult; +import com.amazonaws.services.lambda.model.GetAliasResult; import com.amazonaws.services.lambda.model.GetFunctionResult; import com.amazonaws.services.lambda.model.ListEventSourceMappingsResult; import com.amazonaws.services.lambda.model.ListFunctionsResult; @@ -330,6 +331,24 @@ public class LambdaProducerTest extends CamelTestSupport { DeleteAliasResult result = (DeleteAliasResult)exchange.getOut().getBody(); assertNotNull(result); } + + @Test + public void getAliasTest() throws Exception { + + Exchange exchange = template.send("direct:getAlias", ExchangePattern.InOut, new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(LambdaConstants.FUNCTION_ALIAS_NAME, "alias"); + } + }); + assertMockEndpointsSatisfied(); + + GetAliasResult result = (GetAliasResult)exchange.getOut().getBody(); + assertNotNull(result); + assertEquals("an alias", result.getDescription()); + assertEquals("alias", result.getName()); + assertEquals("1", result.getFunctionVersion()); + } @Override protected RouteBuilder createRouteBuilder() throws Exception { @@ -367,6 +386,8 @@ public class LambdaProducerTest extends CamelTestSupport { from("direct:createAlias").to("aws-lambda://GetHelloWithName?awsLambdaClient=#awsLambdaClient&operation=createAlias").to("mock:result"); from("direct:deleteAlias").to("aws-lambda://GetHelloWithName?awsLambdaClient=#awsLambdaClient&operation=deleteAlias").to("mock:result"); + + from("direct:getAlias").to("aws-lambda://GetHelloWithName?awsLambdaClient=#awsLambdaClient&operation=getAlias").to("mock:result"); } }; } diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/LambdaEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/LambdaEndpointBuilderFactory.java index d3730d2..9433153 100644 --- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/LambdaEndpointBuilderFactory.java +++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/LambdaEndpointBuilderFactory.java @@ -295,6 +295,7 @@ public interface LambdaEndpointBuilderFactory { getFunction, createAlias, deleteAlias, + getAlias, createFunction, deleteFunction, invokeFunction,
