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 2015/06/08 17:48:47 UTC
camel git commit: CAMEL-8843 Camel-AWS EC2: Add
DescribeInstancesStatus operation to available set
Repository: camel
Updated Branches:
refs/heads/master 0c2e5df10 -> 43b79533d
CAMEL-8843 Camel-AWS EC2: Add DescribeInstancesStatus operation to available set
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/43b79533
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/43b79533
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/43b79533
Branch: refs/heads/master
Commit: 43b79533d96129919aadef2cca00db3987700e3a
Parents: 0c2e5df
Author: Andrea Cosentino <an...@gmail.com>
Authored: Mon Jun 8 11:18:19 2015 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Mon Jun 8 17:48:05 2015 +0200
----------------------------------------------------------------------
.../camel/component/aws/ec2/EC2Operations.java | 3 +-
.../camel/component/aws/ec2/EC2Producer.java | 22 ++++++++++
.../component/aws/ec2/AmazonEC2ClientMock.java | 33 +++++++++++++++
.../aws/ec2/EC2ComponentSpringTest.java | 21 ++++++++++
.../component/aws/ec2/EC2OperationsTest.java | 4 +-
.../component/aws/ec2/EC2ProducerTest.java | 44 ++++++++++++++++++++
.../aws/ec2/EC2ComponentSpringTest-context.xml | 4 ++
7 files changed, 129 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/43b79533/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Operations.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Operations.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Operations.java
index ef3fb2a..8a25692 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Operations.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Operations.java
@@ -22,5 +22,6 @@ public enum EC2Operations {
startInstances,
stopInstances,
terminateInstances,
- describeInstances
+ describeInstances,
+ describeInstancesStatus
}
http://git-wip-us.apache.org/repos/asf/camel/blob/43b79533/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Producer.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Producer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Producer.java
index 1a0f913..e2edacd 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Producer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Producer.java
@@ -20,6 +20,8 @@ import java.util.Collection;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.ec2.AmazonEC2Client;
+import com.amazonaws.services.ec2.model.DescribeInstanceStatusRequest;
+import com.amazonaws.services.ec2.model.DescribeInstanceStatusResult;
import com.amazonaws.services.ec2.model.DescribeInstancesRequest;
import com.amazonaws.services.ec2.model.DescribeInstancesResult;
import com.amazonaws.services.ec2.model.InstanceType;
@@ -70,6 +72,9 @@ public class EC2Producer extends DefaultProducer {
case describeInstances:
describeInstances(getEndpoint().getEc2Client(), exchange);
break;
+ case describeInstancesStatus:
+ describeInstancesStatus(getEndpoint().getEc2Client(), exchange);
+ break;
default:
throw new IllegalArgumentException("Unsupported operation");
}
@@ -230,4 +235,21 @@ public class EC2Producer extends DefaultProducer {
}
exchange.getIn().setBody(result);
}
+
+ private void describeInstancesStatus(AmazonEC2Client ec2Client, Exchange exchange) {
+ Collection instanceIds;
+ DescribeInstanceStatusRequest request = new DescribeInstanceStatusRequest();
+ if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(EC2Constants.INSTANCES_IDS))) {
+ instanceIds = exchange.getIn().getHeader(EC2Constants.INSTANCES_IDS, Collection.class);
+ request.withInstanceIds(instanceIds);
+ }
+ DescribeInstanceStatusResult result;
+ try {
+ result = ec2Client.describeInstanceStatus(request);
+ } catch (AmazonServiceException ase) {
+ LOG.trace("Describe Instances Status command returned the error code {}", ase.getErrorCode());
+ throw ase;
+ }
+ exchange.getIn().setBody(result);
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/43b79533/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/AmazonEC2ClientMock.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/AmazonEC2ClientMock.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/AmazonEC2ClientMock.java
index ec65ad0..a5bf479 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/AmazonEC2ClientMock.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/AmazonEC2ClientMock.java
@@ -22,6 +22,8 @@ import java.util.Collection;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.ec2.AmazonEC2Client;
+import com.amazonaws.services.ec2.model.DescribeInstanceStatusRequest;
+import com.amazonaws.services.ec2.model.DescribeInstanceStatusResult;
import com.amazonaws.services.ec2.model.DescribeInstancesRequest;
import com.amazonaws.services.ec2.model.DescribeInstancesResult;
import com.amazonaws.services.ec2.model.GroupIdentifier;
@@ -29,6 +31,7 @@ import com.amazonaws.services.ec2.model.Instance;
import com.amazonaws.services.ec2.model.InstanceState;
import com.amazonaws.services.ec2.model.InstanceStateChange;
import com.amazonaws.services.ec2.model.InstanceStateName;
+import com.amazonaws.services.ec2.model.InstanceStatus;
import com.amazonaws.services.ec2.model.InstanceType;
import com.amazonaws.services.ec2.model.Reservation;
import com.amazonaws.services.ec2.model.RunInstancesRequest;
@@ -193,4 +196,34 @@ public class AmazonEC2ClientMock extends AmazonEC2Client {
}
return result;
}
+
+ @Override
+ public DescribeInstanceStatusResult describeInstanceStatus(DescribeInstanceStatusRequest describeInstanceStatusRequest) {
+ DescribeInstanceStatusResult result = new DescribeInstanceStatusResult();
+ Collection<InstanceStatus> instanceStatuses = new ArrayList();
+ if (describeInstanceStatusRequest.getInstanceIds().isEmpty()) {
+ InstanceStatus status = new InstanceStatus();
+ status.setInstanceId("test-1");
+ status.setInstanceState(new InstanceState().withName(InstanceStateName.Running));
+ instanceStatuses.add(status);
+ status.setInstanceId("test-2");
+ status.setInstanceState(new InstanceState().withName(InstanceStateName.Stopped));
+ instanceStatuses.add(status);
+ } else {
+ if (describeInstanceStatusRequest.getInstanceIds().contains("test-1")) {
+ InstanceStatus status = new InstanceStatus();
+ status.setInstanceId("test-1");
+ status.setInstanceState(new InstanceState().withName(InstanceStateName.Running));
+ instanceStatuses.add(status);
+ }
+ if (describeInstanceStatusRequest.getInstanceIds().contains("test-2")) {
+ InstanceStatus status = new InstanceStatus();
+ status.setInstanceId("test-2");
+ status.setInstanceState(new InstanceState().withName(InstanceStateName.Stopped));
+ instanceStatuses.add(status);
+ }
+ }
+ result.setInstanceStatuses(instanceStatuses);
+ return result;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/43b79533/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2ComponentSpringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2ComponentSpringTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2ComponentSpringTest.java
index 2754c58..c9fe401 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2ComponentSpringTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2ComponentSpringTest.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.List;
+import com.amazonaws.services.ec2.model.DescribeInstanceStatusResult;
import com.amazonaws.services.ec2.model.DescribeInstancesResult;
import com.amazonaws.services.ec2.model.InstanceStateName;
import com.amazonaws.services.ec2.model.InstanceType;
@@ -147,6 +148,26 @@ public class EC2ComponentSpringTest extends CamelSpringTestSupport {
assertEquals(resultGet.getReservations().get(0).getInstances().size(), 1);
}
+ @Test
+ public void ec2DescribeStatusSpecificInstancesTest() throws Exception {
+
+ Exchange exchange = template.request("direct:describeStatus", new Processor() {
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ Collection l = new ArrayList();
+ l.add("test-1");
+ exchange.getIn().setHeader(EC2Constants.INSTANCES_IDS, l);
+ }
+ });
+
+ assertMockEndpointsSatisfied();
+
+ DescribeInstanceStatusResult resultGet = (DescribeInstanceStatusResult) exchange.getIn().getBody();
+ assertEquals(resultGet.getInstanceStatuses().size(), 1);
+ assertEquals(resultGet.getInstanceStatuses().get(0).getInstanceState().getName(), InstanceStateName.Running.toString());
+ }
+
@Override
protected AbstractApplicationContext createApplicationContext() {
return new ClassPathXmlApplicationContext(
http://git-wip-us.apache.org/repos/asf/camel/blob/43b79533/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2OperationsTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2OperationsTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2OperationsTest.java
index ce18e1f..920b84b 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2OperationsTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2OperationsTest.java
@@ -24,7 +24,7 @@ public class EC2OperationsTest {
@Test
public void supportedOperationCount() {
- assertEquals(5, EC2Operations.values().length);
+ assertEquals(6, EC2Operations.values().length);
}
@Test
@@ -34,6 +34,7 @@ public class EC2OperationsTest {
assertEquals(EC2Operations.stopInstances, EC2Operations.valueOf("stopInstances"));
assertEquals(EC2Operations.terminateInstances, EC2Operations.valueOf("terminateInstances"));
assertEquals(EC2Operations.describeInstances, EC2Operations.valueOf("describeInstances"));
+ assertEquals(EC2Operations.describeInstancesStatus, EC2Operations.valueOf("describeInstancesStatus"));
}
@Test
@@ -43,5 +44,6 @@ public class EC2OperationsTest {
assertEquals(EC2Operations.stopInstances.toString(), "stopInstances");
assertEquals(EC2Operations.terminateInstances.toString(), "terminateInstances");
assertEquals(EC2Operations.describeInstances.toString(), "describeInstances");
+ assertEquals(EC2Operations.describeInstancesStatus.toString(), "describeInstancesStatus");
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/43b79533/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2ProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2ProducerTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2ProducerTest.java
index 794a80d..32c724b 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2ProducerTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ec2/EC2ProducerTest.java
@@ -19,7 +19,9 @@ package org.apache.camel.component.aws.ec2;
import java.util.ArrayList;
import java.util.Collection;
+import com.amazonaws.services.ec2.model.DescribeInstanceStatusResult;
import com.amazonaws.services.ec2.model.DescribeInstancesResult;
+import com.amazonaws.services.ec2.model.InstanceState;
import com.amazonaws.services.ec2.model.InstanceStateName;
import com.amazonaws.services.ec2.model.InstanceType;
import com.amazonaws.services.ec2.model.RunInstancesResult;
@@ -217,6 +219,45 @@ public class EC2ProducerTest extends CamelTestSupport {
assertEquals(resultGet.getReservations().get(0).getInstances().size(), 1);
}
+ @Test
+ public void ec2DescribeInstancesStatusTest() throws Exception {
+
+ mock.expectedMessageCount(1);
+ Exchange exchange = template.request("direct:describeStatus", new Processor() {
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+
+ }
+ });
+
+ assertMockEndpointsSatisfied();
+
+ DescribeInstanceStatusResult resultGet = (DescribeInstanceStatusResult) exchange.getIn().getBody();
+ assertEquals(resultGet.getInstanceStatuses().size(), 2);
+ }
+
+ @Test
+ public void ec2DescribeStatusSpecificInstancesTest() throws Exception {
+
+ mock.expectedMessageCount(1);
+ Exchange exchange = template.request("direct:describeStatus", new Processor() {
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ Collection l = new ArrayList();
+ l.add("test-1");
+ exchange.getIn().setHeader(EC2Constants.INSTANCES_IDS, l);
+ }
+ });
+
+ assertMockEndpointsSatisfied();
+
+ DescribeInstanceStatusResult resultGet = (DescribeInstanceStatusResult) exchange.getIn().getBody();
+ assertEquals(resultGet.getInstanceStatuses().size(), 1);
+ assertEquals(resultGet.getInstanceStatuses().get(0).getInstanceState().getName(), InstanceStateName.Running.toString());
+ }
+
@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry registry = super.createRegistry();
@@ -248,6 +289,9 @@ public class EC2ProducerTest extends CamelTestSupport {
from("direct:describe")
.to("aws-ec2://test?amazonEc2Client=#amazonEc2Client&operation=describeInstances")
.to("mock:result");
+ from("direct:describeStatus")
+ .to("aws-ec2://test?amazonEc2Client=#amazonEc2Client&operation=describeInstancesStatus")
+ .to("mock:result");
}
};
}
http://git-wip-us.apache.org/repos/asf/camel/blob/43b79533/components/camel-aws/src/test/resources/org/apache/camel/component/aws/ec2/EC2ComponentSpringTest-context.xml
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/resources/org/apache/camel/component/aws/ec2/EC2ComponentSpringTest-context.xml b/components/camel-aws/src/test/resources/org/apache/camel/component/aws/ec2/EC2ComponentSpringTest-context.xml
index 5791f88..6600925 100644
--- a/components/camel-aws/src/test/resources/org/apache/camel/component/aws/ec2/EC2ComponentSpringTest-context.xml
+++ b/components/camel-aws/src/test/resources/org/apache/camel/component/aws/ec2/EC2ComponentSpringTest-context.xml
@@ -41,6 +41,10 @@
<from uri="direct:describe"/>
<to uri="aws-ec2://Test?amazonEc2Client=#amazonEc2Client&operation=describeInstances"/>
</route>
+ <route>
+ <from uri="direct:describeStatus"/>
+ <to uri="aws-ec2://Test?amazonEc2Client=#amazonEc2Client&operation=describeInstancesStatus"/>
+ </route>
</camelContext>
<bean id="amazonEc2Client" class="org.apache.camel.component.aws.ec2.AmazonEC2ClientMock"/>