[terremark_ecloud] setup login to also work like get_organizations would

This commit is contained in:
geemus 2011-02-14 15:28:27 -08:00
parent 54f4e8f235
commit a406dc6c3f
4 changed files with 15 additions and 9 deletions

View File

@ -11,7 +11,13 @@ module Fog
:expects => 200, :expects => 200,
:method => 'GET', :method => 'GET',
:parser => Fog::Parsers::TerremarkEcloud::Compute::GetVersions.new :parser => Fog::Parsers::TerremarkEcloud::Compute::GetVersions.new
}); })
version_info = response.body['SupportedVersions'].detect {|version_info| version_info['Version'] == @version}
unless @login_url = version_info && version_info['LoginUrl']
# no LoginUrl matches specified version
raise "TerremarkEcloud does not support version #{@version}"
end
response
end end
end end

View File

@ -6,6 +6,9 @@ module Fog
require 'fog/compute/parsers/terremark_ecloud/login' require 'fog/compute/parsers/terremark_ecloud/login'
def login def login
unless @login_url
get_versions
end
connection = Fog::Connection.new(@login_url) connection = Fog::Connection.new(@login_url)
response = connection.request({ response = connection.request({
:expects => 200, :expects => 200,

View File

@ -80,14 +80,6 @@ module Fog
private private
def get_token_and_organization def get_token_and_organization
# lookup LoginUrl for specified version
response = self.get_versions
version_info = response.body['SupportedVersions'].detect {|version_info| version_info['Version'] == @version}
unless @login_url = version_info && version_info['LoginUrl']
# no LoginUrl matches specified version
raise "TerremarkEcloud does not support version #{@version}"
end
response = self.login response = self.login
# if there is only one organization we will note it as a starting point # if there is only one organization we will note it as a starting point
if (response.body['OrgList'].length == 1) && (organization = response.body['OrgList'].first) if (response.body['OrgList'].length == 1) && (organization = response.body['OrgList'].first)

View File

@ -13,6 +13,11 @@ Shindo.tests('TerremarkEcloud::Compute | organization requests', ['terremarkeclo
tests('success') do tests('success') do
tests("#login (get_organizations)").formats({'OrgList' => [{'href' => String, 'name' => String, 'type' => String}]}) do
pending if Fog.mocking?
TerremarkEcloud[:compute].login.body
end
tests("#get_organization").formats(@organization_format) do tests("#get_organization").formats(@organization_format) do
pending if Fog.mocking? pending if Fog.mocking?
TerremarkEcloud[:compute].get_organization.body TerremarkEcloud[:compute].get_organization.body