Updated Branches: refs/heads/master cd56d135c -> 1804f2b6b
JCLOUDS-381. Allow explicit naming of nodes, decouple group identity from node name Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/1804f2b6 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/1804f2b6 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/1804f2b6 Branch: refs/heads/master Commit: 1804f2b6b4c2672135ecc349ed97f52cffc5267c Parents: cd56d13 Author: Andrew Bayer <[email protected]> Authored: Fri Nov 22 10:45:46 2013 -0800 Committer: Andrew Bayer <[email protected]> Committed: Sun Nov 24 14:17:08 2013 -0800 ---------------------------------------------------------------------- .../functions/MachineInDatacenterToNodeMetadata.java | 10 +++++++--- ...nsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java | 3 +++ .../v6_5/compute/JoyentCloudComputeServiceExpectTest.java | 2 +- joyent-cloudapi/src/test/resources/new_machine.json | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1804f2b6/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/compute/functions/MachineInDatacenterToNodeMetadata.java ---------------------------------------------------------------------- diff --git a/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/compute/functions/MachineInDatacenterToNodeMetadata.java b/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/compute/functions/MachineInDatacenterToNodeMetadata.java index f3bacb6..1192e73 100644 --- a/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/compute/functions/MachineInDatacenterToNodeMetadata.java +++ b/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/compute/functions/MachineInDatacenterToNodeMetadata.java @@ -23,6 +23,7 @@ import static com.google.common.collect.Iterables.tryFind; import static com.google.common.collect.Maps.filterKeys; import static org.jclouds.compute.util.ComputeServiceUtils.addMetadataAndParseTagsFromCommaDelimitedValue; import static org.jclouds.compute.util.ComputeServiceUtils.getSpace; +import static org.jclouds.compute.util.ComputeServiceUtils.groupFromMapOrName; import java.util.Map; import java.util.Set; @@ -94,7 +95,7 @@ public class MachineInDatacenterToNodeMetadata implements Function<MachineInData builder.name(from.getName()); builder.hostname(from.getId()); builder.location(zone); - addMetadataAndParseTagsFromCommaDelimitedValue(builder, filterKeys(from.getMetadata(), new Predicate<String>() { + Map<String, String> metadataMap = filterKeys(from.getMetadata(), new Predicate<String>() { @Override public boolean apply(String input) { @@ -105,8 +106,11 @@ public class MachineInDatacenterToNodeMetadata implements Function<MachineInData return true; } - })); - builder.group(nodeNamingConvention.groupInUniqueNameOrNull(from.getName())); + }); + addMetadataAndParseTagsFromCommaDelimitedValue(builder, metadataMap); + + builder.group(groupFromMapOrName(metadataMap, from.getName(), nodeNamingConvention)); + builder.imageId(DatacenterAndName.fromDatacenterAndName(machineInDatacenter.getDatacenter(), from.getDatasetURN()) .slashEncode()); builder.operatingSystem(findOperatingSystemForMachineOrNull(machineInDatacenter)); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1804f2b6/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/compute/strategy/ApplyJoyentCloudTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java ---------------------------------------------------------------------- diff --git a/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/compute/strategy/ApplyJoyentCloudTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java b/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/compute/strategy/ApplyJoyentCloudTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java index 0147eaf..82d8c13 100644 --- a/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/compute/strategy/ApplyJoyentCloudTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java +++ b/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/compute/strategy/ApplyJoyentCloudTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java @@ -32,6 +32,7 @@ import org.jclouds.compute.config.CustomizationResponse; import org.jclouds.compute.domain.NodeMetadata; import org.jclouds.compute.domain.Template; import org.jclouds.compute.functions.GroupNamingConvention; +import org.jclouds.compute.reference.ComputeServiceConstants; import org.jclouds.compute.strategy.CreateNodeWithGroupEncodedIntoName; import org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap; import org.jclouds.compute.strategy.ListNodesStrategy; @@ -81,6 +82,8 @@ public class ApplyJoyentCloudTemplateOptionsCreateNodesWithGroupEncodedIntoNameT assert template.getOptions().equals(templateOptions) : "options didn't clone properly"; + templateOptions.userMetadata(ComputeServiceConstants.NODE_GROUP_KEY, group); + String datacenter = mutableTemplate.getLocation().getId(); if (!templateOptions.shouldGenerateKey().isPresent()) http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1804f2b6/joyent-cloudapi/src/test/java/org/jclouds/joyent/cloudapi/v6_5/compute/JoyentCloudComputeServiceExpectTest.java ---------------------------------------------------------------------- diff --git a/joyent-cloudapi/src/test/java/org/jclouds/joyent/cloudapi/v6_5/compute/JoyentCloudComputeServiceExpectTest.java b/joyent-cloudapi/src/test/java/org/jclouds/joyent/cloudapi/v6_5/compute/JoyentCloudComputeServiceExpectTest.java index c6343d1..ee257f3 100644 --- a/joyent-cloudapi/src/test/java/org/jclouds/joyent/cloudapi/v6_5/compute/JoyentCloudComputeServiceExpectTest.java +++ b/joyent-cloudapi/src/test/java/org/jclouds/joyent/cloudapi/v6_5/compute/JoyentCloudComputeServiceExpectTest.java @@ -89,7 +89,7 @@ public class JoyentCloudComputeServiceExpectTest extends BaseJoyentCloudComputeS requestResponseMap.put(machines.list, machines.listResponse); HttpRequest createMachine = HttpRequest.builder().method("POST") - .endpoint("https://us-sw-1.api.joyentcloud.com/my/machines?dataset=sdc%3Asdc%3Aubuntu-10.04%3A1.0.1&name=test-1&package=Small%201GB") + .endpoint("https://us-sw-1.api.joyentcloud.com/my/machines?dataset=sdc%3Asdc%3Aubuntu-10.04%3A1.0.1&name=test-1&package=Small%201GB&metadata.jclouds-group=test") .addHeader("X-Api-Version", "~6.5") .addHeader("Accept", "application/json") .addHeader("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build(); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1804f2b6/joyent-cloudapi/src/test/resources/new_machine.json ---------------------------------------------------------------------- diff --git a/joyent-cloudapi/src/test/resources/new_machine.json b/joyent-cloudapi/src/test/resources/new_machine.json index 4815124..bc1bdf2 100644 --- a/joyent-cloudapi/src/test/resources/new_machine.json +++ b/joyent-cloudapi/src/test/resources/new_machine.json @@ -1 +1 @@ -{"id":"94eba336-ecb7-49f5-8a27-52f5e4dd57a1","name":"sample-e92","type":"virtualmachine","state":"stopped","dataset":"sdc:sdc:centos-5.7:1.2.1","ips":["37.153.96.62","10.224.0.63"],"memory":1024,"disk":61440,"metadata":{"root_authorized_keys":"ssh-rsa XXXXXX== [email protected]"},"created":"2012-05-09T13:32:46+00:00","updated":"2012-05-11T08:44:53+00:00"} +{"id":"94eba336-ecb7-49f5-8a27-52f5e4dd57a1","name":"sample-e92","type":"virtualmachine","state":"stopped","dataset":"sdc:sdc:centos-5.7:1.2.1","ips":["37.153.96.62","10.224.0.63"],"memory":1024,"disk":61440,"metadata":{"root_authorized_keys":"ssh-rsa XXXXXX== [email protected]","jclouds-group":"test"},"created":"2012-05-09T13:32:46+00:00","updated":"2012-05-11T08:44:53+00:00"}
