From: Michal Fojtik <[email protected]>

Signed-off-by: Michal fojtik <[email protected]>
---
 client/lib/base_object.rb |   13 +++++++++++++
 client/lib/deltacloud.rb  |    8 ++++++--
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/client/lib/base_object.rb b/client/lib/base_object.rb
index f6ef149..dd2b64a 100644
--- a/client/lib/base_object.rb
+++ b/client/lib/base_object.rb
@@ -84,6 +84,19 @@ module DeltaCloud
       #               <address>127.0.0.1</address>
       #               <address>127.0.0.2</address>
       #             </addresses>
+      def add_addresses!(collection_name, values=[])
+        @objects << {
+          :type => :collection,
+          :method_name => collection_name.sanitize,
+          :values => values.collect { |v| { :address => v.text.strip, :type => 
v[:type] }}
+        }
+      end
+
+      # This method define collection of text elements inside REST model
+      # XML syntax: <addresses>
+      #               <address>127.0.0.1</address>
+      #               <address>127.0.0.2</address>
+      #             </addresses>
       def add_collection!(collection_name, values=[])
         @objects << {
           :type => :collection,
diff --git a/client/lib/deltacloud.rb b/client/lib/deltacloud.rb
index e2db0ba..bfe25a2 100644
--- a/client/lib/deltacloud.rb
+++ b/client/lib/deltacloud.rb
@@ -23,7 +23,7 @@ require 'logger'
 require 'hwp_properties'
 require 'instance_state'
 require 'documentation'
-require 'base_object'
+require 'lib/base_object'
 require 'client_bucket_methods'
 
 module DeltaCloud
@@ -225,7 +225,7 @@ module DeltaCloud
         end
 
         #deal with blob metadata
-        if(attribute.name == 'user_metadata')
+        if (attribute.name == 'user_metadata')
           meta = {}
           attribute.children.select {|x| x.name=="entry" }.each  do |element|
             value = element.content.gsub!(/(\n) +/,'')
@@ -234,6 +234,10 @@ module DeltaCloud
           obj.add_collection!(attribute.name, meta.inspect) && next
         end
 
+        if (['public_addresses', 'private_addresses'].include? attribute.name)
+          obj.add_addresses!(attribute.name, (attribute/'*')) && next
+        end
+
         # Deal with collections like public-addresses, private-addresses
         if (attribute/'./*').length > 0
           obj.add_collection!(attribute.name, (attribute/'*').collect { 
|value| value.text }) && next
-- 
1.7.4.1

Reply via email to