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 c79286ae64970b77ccb2c12736275dc8b447f54f Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Wed Mar 21 15:21:34 2018 +0100 CAMEL-12388 - Camel AWS-KMS: Add describeKey operation --- .../camel/component/aws/kms/KMSOperations.java | 3 ++- .../camel/component/aws/kms/KMSProducer.java | 24 ++++++++++++++++++++++ .../component/aws/kms/AmazonKMSClientMock.java | 8 +++++++- .../camel/component/aws/kms/KMSProducerTest.java | 24 ++++++++++++++++++++++ 4 files changed, 57 insertions(+), 2 deletions(-) diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSOperations.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSOperations.java index 5fefc06..bd5d1db 100644 --- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSOperations.java +++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSOperations.java @@ -21,5 +21,6 @@ public enum KMSOperations { listKeys, createKey, disableKey, - scheduleKeyDeletion + scheduleKeyDeletion, + describeKey } diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java index 47dc859..fe80ed4 100644 --- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java +++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSProducer.java @@ -20,6 +20,8 @@ import com.amazonaws.AmazonServiceException; import com.amazonaws.services.kms.AWSKMS; import com.amazonaws.services.kms.model.CreateKeyRequest; import com.amazonaws.services.kms.model.CreateKeyResult; +import com.amazonaws.services.kms.model.DescribeKeyRequest; +import com.amazonaws.services.kms.model.DescribeKeyResult; import com.amazonaws.services.kms.model.DisableKeyRequest; import com.amazonaws.services.kms.model.DisableKeyResult; import com.amazonaws.services.kms.model.ListKeysRequest; @@ -66,6 +68,9 @@ public class KMSProducer extends DefaultProducer { case scheduleKeyDeletion: scheduleKeyDeletion(getEndpoint().getKmsClient(), exchange); break; + case describeKey: + describeKey(getEndpoint().getKmsClient(), exchange); + break; default: throw new IllegalArgumentException("Unsupported operation"); } @@ -171,4 +176,23 @@ public class KMSProducer extends DefaultProducer { Message message = getMessageForResponse(exchange); message.setBody(result); } + + private void describeKey(AWSKMS kmsClient, Exchange exchange) { + DescribeKeyRequest request = new DescribeKeyRequest(); + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(KMSConstants.KEY_ID))) { + String keyId = exchange.getIn().getHeader(KMSConstants.KEY_ID, String.class); + request.withKeyId(keyId); + } else { + throw new IllegalArgumentException("Key Id must be specified"); + } + DescribeKeyResult result; + try { + result = kmsClient.describeKey(request); + } catch (AmazonServiceException ase) { + LOG.trace("Describe Key command returned the error code {}", ase.getErrorCode()); + throw ase; + } + Message message = getMessageForResponse(exchange); + message.setBody(result); + } } \ No newline at end of file diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/AmazonKMSClientMock.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/AmazonKMSClientMock.java index 7aea19d..b50acf9 100644 --- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/AmazonKMSClientMock.java +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/AmazonKMSClientMock.java @@ -158,7 +158,13 @@ public class AmazonKMSClientMock implements AWSKMS { @Override public DescribeKeyResult describeKey(DescribeKeyRequest describeKeyRequest) { - throw new UnsupportedOperationException(); + DescribeKeyResult res = new DescribeKeyResult(); + KeyMetadata metadata = new KeyMetadata(); + metadata.setEnabled(false); + metadata.setDescription("MyCamelKey"); + metadata.setKeyId("test"); + res.setKeyMetadata(metadata); + return res; } @Override diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/KMSProducerTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/KMSProducerTest.java index df8b0b9..3a4e690 100644 --- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/KMSProducerTest.java +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/kms/KMSProducerTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.aws.kms; import com.amazonaws.services.kms.model.CreateKeyResult; +import com.amazonaws.services.kms.model.DescribeKeyResult; import com.amazonaws.services.kms.model.ListKeysResult; import com.amazonaws.services.kms.model.ScheduleKeyDeletionResult; @@ -104,6 +105,26 @@ public class KMSProducerTest extends CamelTestSupport { assertEquals("test", resultGet.getKeyId()); } + @Test + public void kmsDescribeKeyTest() throws Exception { + + mock.expectedMessageCount(1); + Exchange exchange = template.request("direct:describeKey", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(KMSConstants.OPERATION, KMSOperations.describeKey); + exchange.getIn().setHeader(KMSConstants.KEY_ID, "test"); + } + }); + + assertMockEndpointsSatisfied(); + + DescribeKeyResult resultGet = exchange.getIn().getBody(DescribeKeyResult.class); + assertEquals("test", resultGet.getKeyMetadata().getKeyId()); + assertEquals("MyCamelKey", resultGet.getKeyMetadata().getDescription()); + assertFalse(resultGet.getKeyMetadata().isEnabled()); + } + @Override protected JndiRegistry createRegistry() throws Exception { JndiRegistry registry = super.createRegistry(); @@ -132,6 +153,9 @@ public class KMSProducerTest extends CamelTestSupport { from("direct:scheduleDelete") .to("aws-kms://test?kmsClient=#amazonKmsClient&operation=scheduleKeyDeletion") .to("mock:result"); + from("direct:describeKey") + .to("aws-kms://test?kmsClient=#amazonKmsClient&operation=describeKey") + .to("mock:result"); } }; } -- To stop receiving notification emails like this one, please contact acosent...@apache.org.