From a406dc6c3f8242c6d441a6edb486fd7161448f8c Mon Sep 17 00:00:00 2001 From: geemus Date: Mon, 14 Feb 2011 15:28:27 -0800 Subject: [PATCH] [terremark_ecloud] setup login to also work like get_organizations would --- lib/fog/compute/requests/terremark_ecloud/get_versions.rb | 8 +++++++- lib/fog/compute/requests/terremark_ecloud/login.rb | 3 +++ lib/fog/compute/terremark_ecloud.rb | 8 -------- .../requests/terremark_ecloud/organization_tests.rb | 5 +++++ 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/lib/fog/compute/requests/terremark_ecloud/get_versions.rb b/lib/fog/compute/requests/terremark_ecloud/get_versions.rb index 88130e905..cd94306a7 100644 --- a/lib/fog/compute/requests/terremark_ecloud/get_versions.rb +++ b/lib/fog/compute/requests/terremark_ecloud/get_versions.rb @@ -11,7 +11,13 @@ module Fog :expects => 200, :method => 'GET', :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 diff --git a/lib/fog/compute/requests/terremark_ecloud/login.rb b/lib/fog/compute/requests/terremark_ecloud/login.rb index 01862dcca..77c5831f2 100644 --- a/lib/fog/compute/requests/terremark_ecloud/login.rb +++ b/lib/fog/compute/requests/terremark_ecloud/login.rb @@ -6,6 +6,9 @@ module Fog require 'fog/compute/parsers/terremark_ecloud/login' def login + unless @login_url + get_versions + end connection = Fog::Connection.new(@login_url) response = connection.request({ :expects => 200, diff --git a/lib/fog/compute/terremark_ecloud.rb b/lib/fog/compute/terremark_ecloud.rb index 64cadb8a3..77273c2b4 100644 --- a/lib/fog/compute/terremark_ecloud.rb +++ b/lib/fog/compute/terremark_ecloud.rb @@ -80,14 +80,6 @@ module Fog private 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 # 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) diff --git a/tests/compute/requests/terremark_ecloud/organization_tests.rb b/tests/compute/requests/terremark_ecloud/organization_tests.rb index d93abd4b8..5bb22de71 100644 --- a/tests/compute/requests/terremark_ecloud/organization_tests.rb +++ b/tests/compute/requests/terremark_ecloud/organization_tests.rb @@ -13,6 +13,11 @@ Shindo.tests('TerremarkEcloud::Compute | organization requests', ['terremarkeclo 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 pending if Fog.mocking? TerremarkEcloud[:compute].get_organization.body