CAMEL-8910 Camel-JClouds: Add new operations to JClouds Compute Service Producer, add rebootNode test
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/422536bc Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/422536bc Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/422536bc Branch: refs/heads/master Commit: 422536bc9a3ea2c0a9a4cb983c881f7a19220596 Parents: 727d8b8 Author: Andrea Cosentino <anco...@gmail.com> Authored: Sun Jun 28 14:36:44 2015 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Sun Jun 28 15:09:46 2015 +0200 ---------------------------------------------------------------------- .../jclouds/JcloudsComputeProducer.java | 2 +- .../jclouds/JcloudsSpringComputeTest.java | 59 ++++++++++++++++++++ .../src/test/resources/compute-test.xml | 6 ++ 3 files changed, 66 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/422536bc/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java index 4d96c37..e25cbbd 100644 --- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java +++ b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java @@ -68,7 +68,7 @@ public class JcloudsComputeProducer extends JcloudsProducer { } else if (JcloudsConstants.DESTROY_NODE.equals(operation)) { destroyNode(exchange); } else if (JcloudsConstants.REBOOT_NODE.equals(operation)) { - destroyNode(exchange); + rebootNode(exchange); } } http://git-wip-us.apache.org/repos/asf/camel/blob/422536bc/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringComputeTest.java ---------------------------------------------------------------------- diff --git a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringComputeTest.java b/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringComputeTest.java index cbd1910..18fa1cc 100644 --- a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringComputeTest.java +++ b/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringComputeTest.java @@ -37,6 +37,9 @@ public class JcloudsSpringComputeTest extends CamelSpringTestSupport { @EndpointInject(uri = "mock:result") protected MockEndpoint result; + + @EndpointInject(uri = "mock:resultlist") + protected MockEndpoint resultlist; @After public void tearDown() throws Exception { @@ -153,6 +156,44 @@ public class JcloudsSpringComputeTest extends CamelSpringTestSupport { } } } + + @Test + public void testCreateAndRebootNode() throws InterruptedException { + result.expectedMessageCount(1); + template.sendBodyAndHeaders("direct:start", null, createHeaders("1", "default")); + result.assertIsSatisfied(); + + List<Exchange> exchanges = result.getExchanges(); + if (exchanges != null && !exchanges.isEmpty()) { + for (Exchange exchange : exchanges) { + Set<?> nodeMetadatas = exchange.getIn().getBody(Set.class); + assertEquals("There should be one node running", 1, nodeMetadatas.size()); + + for (Object obj : nodeMetadatas) { + NodeMetadata nodeMetadata = (NodeMetadata) obj; + template.sendBodyAndHeaders("direct:start", null, rebootHeaders(nodeMetadata.getId(), null)); + } + } + } + + resultlist.expectedMessageCount(1); + template.sendBodyAndHeaders("direct:nodelist",null, listNodeHeaders("1", "default", "RUNNING")); + resultlist.assertIsSatisfied(); + + List<Exchange> exchangesNodeList = resultlist.getExchanges(); + if (exchangesNodeList != null && !exchangesNodeList.isEmpty()) { + for (Exchange exchange : exchangesNodeList) { + Set<?> nodeMetadatas = exchange.getIn().getBody(Set.class); + assertEquals("There should be one node running", 1, nodeMetadatas.size()); + + for (Object obj : nodeMetadatas) { + NodeMetadata nodeMetadata = (NodeMetadata) obj; + assertEquals(nodeMetadata.getId(), "1"); + } + } + } + } + @SuppressWarnings("unchecked") @Ignore("For now not possible to combine stub provider with ssh module, required for runScript") @@ -227,4 +268,22 @@ public class JcloudsSpringComputeTest extends CamelSpringTestSupport { return listHeaders; } + + /** + * Returns a {@Map} with the reboot headers. + * + * @param nodeId The id of the node to reboot. + * @param group The group of the node to reboot. + */ + protected Map<String, Object> rebootHeaders(String nodeId, String group) { + Map<String, Object> rebootHeaders = new HashMap<String, Object>(); + rebootHeaders.put(JcloudsConstants.OPERATION, JcloudsConstants.REBOOT_NODE); + if (nodeId != null) { + rebootHeaders.put(JcloudsConstants.NODE_ID, nodeId); + } + if (group != null) { + rebootHeaders.put(JcloudsConstants.GROUP, group); + } + return rebootHeaders; + } } http://git-wip-us.apache.org/repos/asf/camel/blob/422536bc/components/camel-jclouds/src/test/resources/compute-test.xml ---------------------------------------------------------------------- diff --git a/components/camel-jclouds/src/test/resources/compute-test.xml b/components/camel-jclouds/src/test/resources/compute-test.xml index e8c1997..a71ffad 100644 --- a/components/camel-jclouds/src/test/resources/compute-test.xml +++ b/components/camel-jclouds/src/test/resources/compute-test.xml @@ -28,6 +28,12 @@ <to uri="jclouds:compute:stub?operation=CamelJcloudsListImages&nodeState=RUNNING"/> <to uri="mock:result"/> </route> + + <route> + <from uri="direct:nodelist"/> + <to uri="jclouds:compute:stub?operation=CamelJcloudsListImage"/> + <to uri="mock:resultlist"/> + </route> <route> <from uri="direct:in-out"/>