You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2020/01/02 14:24:27 UTC
[camel] 01/05: CAMEL-14348 - Camel-AWS Lambda: Add alias operations,
deleteAlias operation
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 509c218c305cb84934aabfcce5a2caebdba2d57f
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Jan 2 15:04:13 2020 +0100
CAMEL-14348 - Camel-AWS Lambda: Add alias operations, deleteAlias operation
---
.../component/aws/lambda/LambdaOperations.java | 1 +
.../camel/component/aws/lambda/LambdaProducer.java | 23 ++++++++++++++++++++++
.../aws/lambda/AmazonLambdaClientMock.java | 3 ++-
.../component/aws/lambda/LambdaProducerTest.java | 18 +++++++++++++++++
.../endpoint/dsl/LambdaEndpointBuilderFactory.java | 1 +
5 files changed, 45 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 dfbf340..071436e 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
@@ -21,6 +21,7 @@ public enum LambdaOperations {
listFunctions,
getFunction,
createAlias,
+ deleteAlias,
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 764fedd..674ee5d 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
@@ -32,6 +32,8 @@ import com.amazonaws.services.lambda.model.CreateEventSourceMappingResult;
import com.amazonaws.services.lambda.model.CreateFunctionRequest;
import com.amazonaws.services.lambda.model.CreateFunctionResult;
import com.amazonaws.services.lambda.model.DeadLetterConfig;
+import com.amazonaws.services.lambda.model.DeleteAliasRequest;
+import com.amazonaws.services.lambda.model.DeleteAliasResult;
import com.amazonaws.services.lambda.model.DeleteEventSourceMappingRequest;
import com.amazonaws.services.lambda.model.DeleteEventSourceMappingResult;
import com.amazonaws.services.lambda.model.DeleteFunctionRequest;
@@ -125,6 +127,9 @@ public class LambdaProducer extends DefaultProducer {
case createAlias:
createAlias(getEndpoint().getAwsLambdaClient(), exchange);
break;
+ case deleteAlias:
+ deleteAlias(getEndpoint().getAwsLambdaClient(), exchange);
+ break;
default:
throw new IllegalArgumentException("Unsupported operation");
}
@@ -589,6 +594,24 @@ public class LambdaProducer extends DefaultProducer {
message.setBody(result);
}
+ private void deleteAlias(AWSLambda lambdaClient, Exchange exchange) {
+ DeleteAliasResult result;
+ try {
+ DeleteAliasRequest request = new DeleteAliasRequest().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 delete an alias");
+ }
+ request.setName(aliasName);
+ result = lambdaClient.deleteAlias(request);
+ } catch (AmazonServiceException ase) {
+ log.trace("deleteAlias 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 dfcddbe..4644ade 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
@@ -157,7 +157,8 @@ public class AmazonLambdaClientMock extends AbstractAWSLambda {
@Override
public DeleteAliasResult deleteAlias(DeleteAliasRequest deleteAliasRequest) {
- throw new UnsupportedOperationException();
+ DeleteAliasResult res = new DeleteAliasResult();
+ return res;
}
@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 503f86e..ece0b0e 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
@@ -26,6 +26,7 @@ import java.util.Map;
import com.amazonaws.services.lambda.model.CreateAliasResult;
import com.amazonaws.services.lambda.model.CreateEventSourceMappingResult;
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.GetFunctionResult;
@@ -314,6 +315,21 @@ public class LambdaProducerTest extends CamelTestSupport {
assertEquals("alias", result.getName());
assertEquals("1", result.getFunctionVersion());
}
+
+ @Test
+ public void deleteAliasTest() throws Exception {
+
+ Exchange exchange = template.send("direct:createAlias", ExchangePattern.InOut, new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(LambdaConstants.FUNCTION_ALIAS_NAME, "alias");
+ }
+ });
+ assertMockEndpointsSatisfied();
+
+ DeleteAliasResult result = (DeleteAliasResult)exchange.getOut().getBody();
+ assertNotNull(result);
+ }
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
@@ -349,6 +365,8 @@ public class LambdaProducerTest extends CamelTestSupport {
from("direct:listEventSourceMapping").to("aws-lambda://GetHelloWithName?awsLambdaClient=#awsLambdaClient&operation=listEventSourceMapping").to("mock:result");
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");
}
};
}
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 b647323..d3730d2 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
@@ -294,6 +294,7 @@ public interface LambdaEndpointBuilderFactory {
listFunctions,
getFunction,
createAlias,
+ deleteAlias,
createFunction,
deleteFunction,
invokeFunction,