You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2011/08/03 14:20:40 UTC

[PATCH core 3/5] Client: Added authentication method for an instance

From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 client/lib/base_object.rb |   15 +++++++++++++++
 client/lib/deltacloud.rb  |    4 ++++
 2 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/client/lib/base_object.rb b/client/lib/base_object.rb
index 8aec05b..22a0865 100644
--- a/client/lib/base_object.rb
+++ b/client/lib/base_object.rb
@@ -79,6 +79,21 @@ module DeltaCloud
         }
       end
 
+      def add_authentication!(auth_type, values=[])
+        value = { :key => (values/'login/keyname').text.strip } if auth_type == 'key'
+        if auth_type == 'password'
+          value = {
+            :username => (values/'login/username').text.strip,
+            :username => (values/'login/password').text.strip
+          }
+        end
+        @objects << {
+          :type => :collection,
+          :method_name => 'authentication',
+          :values => value
+        }
+      end
+
       # This method define collection of text elements inside REST model
       # XML syntax: <addresses>
       #               <address>127.0.0.1</address>
diff --git a/client/lib/deltacloud.rb b/client/lib/deltacloud.rb
index 70189aa..6c9c92a 100644
--- a/client/lib/deltacloud.rb
+++ b/client/lib/deltacloud.rb
@@ -238,6 +238,10 @@ module DeltaCloud
           obj.add_addresses!(attribute.name, (attribute/'*')) && next
         end
 
+        if ('authentication'.include? attribute.name)
+          obj.add_authentication!(attribute[:type], (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