From 788d452df24ae97bf72754d73d46ef1407ed6084 Mon Sep 17 00:00:00 2001 From: Brad Gignac Date: Mon, 25 Jun 2012 19:08:25 -0400 Subject: [PATCH] [rackspace|identity] Handle non-array responses from list calls. --- lib/fog/rackspace/requests/identity/list_credentials.rb | 9 ++++++++- lib/fog/rackspace/requests/identity/list_tenants.rb | 9 ++++++++- lib/fog/rackspace/requests/identity/list_user_roles.rb | 9 ++++++++- lib/fog/rackspace/requests/identity/list_users.rb | 9 ++++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/lib/fog/rackspace/requests/identity/list_credentials.rb b/lib/fog/rackspace/requests/identity/list_credentials.rb index 888081286..1f8eac1fe 100644 --- a/lib/fog/rackspace/requests/identity/list_credentials.rb +++ b/lib/fog/rackspace/requests/identity/list_credentials.rb @@ -3,11 +3,18 @@ module Fog class Identity class Real def list_credentials(user_id) - request( + response = request( :expects => [200, 203], :method => 'GET', :path => "users/#{user_id}/OS-KSADM/credentials" ) + + if response.body.include? 'credential' + response.body['credentials'] = [response.body['credential']] + response.body.delete('credential') + end + + response end end end diff --git a/lib/fog/rackspace/requests/identity/list_tenants.rb b/lib/fog/rackspace/requests/identity/list_tenants.rb index 361ed35aa..2bc6000d6 100644 --- a/lib/fog/rackspace/requests/identity/list_tenants.rb +++ b/lib/fog/rackspace/requests/identity/list_tenants.rb @@ -3,11 +3,18 @@ module Fog class Identity class Real def list_tenants() - request( + response = request( :expects => [200, 203], :method => 'GET', :path => 'tenants' ) + + if response.body.include? 'tenant' + response.body['tenants'] = [response.body['tenant']] + response.body.delete('tenant') + end + + response end end end diff --git a/lib/fog/rackspace/requests/identity/list_user_roles.rb b/lib/fog/rackspace/requests/identity/list_user_roles.rb index 40e5cf051..c0f5dc3b4 100644 --- a/lib/fog/rackspace/requests/identity/list_user_roles.rb +++ b/lib/fog/rackspace/requests/identity/list_user_roles.rb @@ -3,11 +3,18 @@ module Fog class Identity class Real def list_user_roles(user_id) - request( + response = request( :expects => [200, 203], :method => 'GET', :path => "users/#{user_id}/roles" ) + + if response.body.include? 'role' + response.body['roles'] = [response.body['role']] + response.body.delete('role') + end + + response end end end diff --git a/lib/fog/rackspace/requests/identity/list_users.rb b/lib/fog/rackspace/requests/identity/list_users.rb index 8a7fbac3b..a581d9f0b 100644 --- a/lib/fog/rackspace/requests/identity/list_users.rb +++ b/lib/fog/rackspace/requests/identity/list_users.rb @@ -3,11 +3,18 @@ module Fog class Identity class Real def list_users() - request( + response = request( :expects => [200, 203], :method => 'GET', :path => 'users' ) + + if response.body.include? 'user' + response.body['users'] = [response.body['user']] + response.body.delete('user') + end + + response end end end