From 85af6fd02644e7f86ad24842d2631a1dbf464252 Mon Sep 17 00:00:00 2001 From: bdorry Date: Tue, 2 Aug 2011 14:46:21 -0400 Subject: [PATCH] [compute|cloudstack] added user management support --- lib/fog/compute/cloudstack.rb | 8 ++++++++ .../requests/cloudstack/create_user.rb | 20 +++++++++++++++++++ .../requests/cloudstack/delete_user.rb | 20 +++++++++++++++++++ .../requests/cloudstack/disable_user.rb | 20 +++++++++++++++++++ .../requests/cloudstack/enable_user.rb | 20 +++++++++++++++++++ .../requests/cloudstack/update_user.rb | 20 +++++++++++++++++++ lib/fog/providers/cloudstack.rb | 2 +- 7 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 lib/fog/compute/requests/cloudstack/create_user.rb create mode 100644 lib/fog/compute/requests/cloudstack/delete_user.rb create mode 100644 lib/fog/compute/requests/cloudstack/disable_user.rb create mode 100644 lib/fog/compute/requests/cloudstack/enable_user.rb create mode 100644 lib/fog/compute/requests/cloudstack/update_user.rb diff --git a/lib/fog/compute/cloudstack.rb b/lib/fog/compute/cloudstack.rb index b378c43e5..f2487f80a 100644 --- a/lib/fog/compute/cloudstack.rb +++ b/lib/fog/compute/cloudstack.rb @@ -9,6 +9,13 @@ module Fog request_path 'fog/compute/requests/cloudstack' + request :create_user + + request :delete_user + + request :disable_user + request :enable_user + request :list_accounts request :list_alerts request :list_async_jobs @@ -39,6 +46,7 @@ module Fog request :list_volumes request :list_zones + request :update_user class Mock diff --git a/lib/fog/compute/requests/cloudstack/create_user.rb b/lib/fog/compute/requests/cloudstack/create_user.rb new file mode 100644 index 000000000..f37031200 --- /dev/null +++ b/lib/fog/compute/requests/cloudstack/create_user.rb @@ -0,0 +1,20 @@ +module Fog + module Compute + class Cloudstack + class Real + + # Creates a user for an account that already exists + # + # {CloudStack API Reference}[http://download.cloud.com/releases/2.2.0/api_2.2.4/global_admin/createUser.html] + def create_user(options={}) + options.merge!( + 'command' => 'createUser' + ) + + request(options) + end + + end + end + end +end diff --git a/lib/fog/compute/requests/cloudstack/delete_user.rb b/lib/fog/compute/requests/cloudstack/delete_user.rb new file mode 100644 index 000000000..6d5b2711c --- /dev/null +++ b/lib/fog/compute/requests/cloudstack/delete_user.rb @@ -0,0 +1,20 @@ +module Fog + module Compute + class Cloudstack + class Real + + # Creates a user for an account that already exists + # + # {CloudStack API Reference}[http://download.cloud.com/releases/2.2.0/api_2.2.4/global_admin/deleteUser.html] + def delete_user(options={}) + options.merge!( + 'command' => 'deleteUser' + ) + + request(options) + end + + end + end + end +end diff --git a/lib/fog/compute/requests/cloudstack/disable_user.rb b/lib/fog/compute/requests/cloudstack/disable_user.rb new file mode 100644 index 000000000..37caf5209 --- /dev/null +++ b/lib/fog/compute/requests/cloudstack/disable_user.rb @@ -0,0 +1,20 @@ +module Fog + module Compute + class Cloudstack + class Real + + # Creates a user for an account that already exists + # + # {CloudStack API Reference}[http://download.cloud.com/releases/2.2.0/api_2.2.4/global_admin/disableUser.html] + def disable_user(options={}) + options.merge!( + 'command' => 'disableUser' + ) + + request(options) + end + + end + end + end +end diff --git a/lib/fog/compute/requests/cloudstack/enable_user.rb b/lib/fog/compute/requests/cloudstack/enable_user.rb new file mode 100644 index 000000000..3345dd284 --- /dev/null +++ b/lib/fog/compute/requests/cloudstack/enable_user.rb @@ -0,0 +1,20 @@ +module Fog + module Compute + class Cloudstack + class Real + + # Creates a user for an account that already exists + # + # {CloudStack API Reference}[http://download.cloud.com/releases/2.2.0/api_2.2.4/global_admin/disableUser.html] + def enable_user(options={}) + options.merge!( + 'command' => 'enableUser' + ) + + request(options) + end + + end + end + end +end diff --git a/lib/fog/compute/requests/cloudstack/update_user.rb b/lib/fog/compute/requests/cloudstack/update_user.rb new file mode 100644 index 000000000..e68fca45d --- /dev/null +++ b/lib/fog/compute/requests/cloudstack/update_user.rb @@ -0,0 +1,20 @@ +module Fog + module Compute + class Cloudstack + class Real + + # Creates a user for an account that already exists + # + # {CloudStack API Reference}[http://download.cloud.com/releases/2.2.0/api_2.2.4/global_admin/updateUser.html] + def update_user(options={}) + options.merge!( + 'command' => 'updateUser' + ) + + request(options) + end + + end + end + end +end diff --git a/lib/fog/providers/cloudstack.rb b/lib/fog/providers/cloudstack.rb index e215befeb..b86d1b989 100644 --- a/lib/fog/providers/cloudstack.rb +++ b/lib/fog/providers/cloudstack.rb @@ -14,7 +14,7 @@ module Fog end def self.signed_params(key,params) - query = params.to_a.sort.collect{|c| "#{c[0]}=#{escape(c[1])}"}.join('&').downcase + query = params.to_a.sort.collect{|c| "#{c[0]}=#{escape(c[1].to_s)}"}.join('&').downcase signed_string = Base64.encode64(OpenSSL::HMAC.digest(DIGEST,key,query)).strip