CloudStack doesn't do empty tag values
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/2ac80c09 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/2ac80c09 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/2ac80c09 Branch: refs/heads/jclouds-756 Commit: 2ac80c09495f24fe53be9449618c0d5fbaefd620 Parents: e3b78b7 Author: Andrew Bayer <[email protected]> Authored: Tue Oct 21 15:20:38 2014 -0700 Committer: Andrew Bayer <[email protected]> Committed: Tue Oct 21 15:20:38 2014 -0700 ---------------------------------------------------------------------- .../compute/functions/VirtualMachineToNodeMetadata.java | 8 ++++++-- .../compute/strategy/CloudStackComputeServiceAdapter.java | 8 +++++++- .../cloudstack/parse/ListVirtualMachinesResponseTest.java | 2 +- .../src/test/resources/listvirtualmachinesresponse.json | 2 +- 4 files changed, 15 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/2ac80c09/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/functions/VirtualMachineToNodeMetadata.java ---------------------------------------------------------------------- diff --git a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/functions/VirtualMachineToNodeMetadata.java b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/functions/VirtualMachineToNodeMetadata.java index 5421396..a9596e3 100644 --- a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/functions/VirtualMachineToNodeMetadata.java +++ b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/functions/VirtualMachineToNodeMetadata.java @@ -17,10 +17,12 @@ package org.jclouds.cloudstack.compute.functions; import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.base.Predicates.equalTo; +import static com.google.common.base.Predicates.not; import static com.google.common.collect.Iterables.filter; import static com.google.common.collect.Iterables.transform; +import static com.google.common.collect.Maps.filterValues; import static com.google.common.collect.Sets.newHashSet; -import static org.jclouds.compute.util.ComputeServiceUtils.addMetadataAndParseTagsFromValuesOfEmptyString; import static org.jclouds.location.predicates.LocationPredicates.idEquals; import static org.jclouds.util.InetAddresses2.isPrivateIPAddress; @@ -126,7 +128,9 @@ public class VirtualMachineToNodeMetadata implements Function<VirtualMachine, No tagsBuilder.put(tag.getKey(), tag.getValue()); } - addMetadataAndParseTagsFromValuesOfEmptyString(builder, tagsBuilder.build()); + Map<String, String> tagMap = tagsBuilder.build(); + builder.tags(filterValues(tagMap, equalTo("jclouds-empty-tag-placeholder")).keySet()) + .userMetadata(filterValues(tagMap, not(equalTo("jclouds-empty-tag-placeholder")))); } builder.hardware(new HardwareBuilder() http://git-wip-us.apache.org/repos/asf/jclouds/blob/2ac80c09/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/strategy/CloudStackComputeServiceAdapter.java ---------------------------------------------------------------------- diff --git a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/strategy/CloudStackComputeServiceAdapter.java b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/strategy/CloudStackComputeServiceAdapter.java index 3e666a7..9387844 100644 --- a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/strategy/CloudStackComputeServiceAdapter.java +++ b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/strategy/CloudStackComputeServiceAdapter.java @@ -40,6 +40,7 @@ import java.util.Set; import com.google.common.base.Predicate; import com.google.common.base.Supplier; import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet.Builder; import com.google.common.collect.Sets; @@ -244,7 +245,12 @@ public class CloudStackComputeServiceAdapter implements } try { - Map<String, String> common = metadataAndTagsAsValuesOfEmptyString(template.getOptions()); + ImmutableMap.Builder<String, String> builder = ImmutableMap.<String, String> builder(); + builder.putAll(template.getOptions().getUserMetadata()); + for (String tag : template.getOptions().getTags()) + builder.put(tag, "jclouds-empty-tag-placeholder"); + Map<String, String> common = builder.build(); + if (!common.isEmpty()) { logger.debug(">> adding tags %s to virtualmachine(%s)", common, vm.getId()); CreateTagsOptions tagOptions = CreateTagsOptions.Builder.resourceIds(vm.getId()) http://git-wip-us.apache.org/repos/asf/jclouds/blob/2ac80c09/apis/cloudstack/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponseTest.java ---------------------------------------------------------------------- diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponseTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponseTest.java index 4b0094b..8d2d8e6 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponseTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponseTest.java @@ -85,7 +85,7 @@ public class ListVirtualMachinesResponseTest extends BaseSetParserTest<VirtualMa .resourceId("54") .resourceType(Tag.ResourceType.USER_VM) .key("another-tag") - .value("") + .value("jclouds-empty-tag-placeholder") .domain("ROOT") .domainId("1") .build())) http://git-wip-us.apache.org/repos/asf/jclouds/blob/2ac80c09/apis/cloudstack/src/test/resources/listvirtualmachinesresponse.json ---------------------------------------------------------------------- diff --git a/apis/cloudstack/src/test/resources/listvirtualmachinesresponse.json b/apis/cloudstack/src/test/resources/listvirtualmachinesresponse.json index f5c0b04..a623589 100644 --- a/apis/cloudstack/src/test/resources/listvirtualmachinesresponse.json +++ b/apis/cloudstack/src/test/resources/listvirtualmachinesresponse.json @@ -57,7 +57,7 @@ "key": "another-tag", "resourceid": "54", "resourcetype": "UserVm", - "value": "" + "value": "jclouds-empty-tag-placeholder" } ]
