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,