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"
                 }
 
             ]

Reply via email to