diff --git a/lib/fog/vcloud.rb b/lib/fog/vcloud.rb index dabfcb348..5a0b76766 100644 --- a/lib/fog/vcloud.rb +++ b/lib/fog/vcloud.rb @@ -3,8 +3,9 @@ require 'fog/vcloud/model' require 'fog/vcloud/collection' require 'fog/vcloud/generators' require 'fog/vcloud/extension' -require 'fog/vcloud/terremark/vcloud' require 'fog/vcloud/terremark/ecloud' +require 'fog/vcloud/terremark/vcloud' + module URI class Generic @@ -46,6 +47,10 @@ module Fog attr_accessor :login_uri attr_reader :versions_uri + def supporting_versions + ["v0.8"] + end + def initialize(options = {}) @connections = {} @versions_uri = URI.parse(options[:versions_uri]) @@ -138,18 +143,21 @@ module Fog end end - # Load up @all_versions and supported_versions from the provided :versions_uri - # If there are no supported versions raise an error - # And choose a default version is none is specified + # If we don't support any versions the service does, then raise an error. + # If the @version that super selected isn't in our supported list, then select one that is. def check_versions - supported_versions = get_versions(@versions_uri).body[:VersionInfo] - - if supported_versions.empty? - raise UnsupportedVersion.new("No supported versions found @ #{@version_uri}") - end - - unless @version - @version = supported_version_numbers.first + if @version + unless supported_version_numbers.include?(@version.to_s) + raise UnsupportedVersion.new("#{@version} is not supported by the server.") + end + unless supporting_versions.include?(@version.to_s) + raise UnsupportedVersion.new("#{@version} is not supported by #{self.class}") + end + else + unless @version = (supported_version_numbers & supporting_versions).sort.first + raise UnsupportedVersion.new("\nService @ #{@versions_uri} supports: #{supported_version_numbers.join(', ')}\n" + + "#{self.class} supports: #{supporting_versions.join(', ')}") + end end end diff --git a/lib/fog/vcloud/extension.rb b/lib/fog/vcloud/extension.rb index 531e30e06..6c5443a03 100644 --- a/lib/fog/vcloud/extension.rb +++ b/lib/fog/vcloud/extension.rb @@ -12,9 +12,6 @@ module Fog end module #{other}::Mock end - def self.supported_versions - @versions - end def self.extended(klass) unless @required models.each do |model| @@ -35,10 +32,6 @@ module Fog EOS end - def versions(*args) - @versions = args - end - end end end diff --git a/lib/fog/vcloud/terremark/ecloud.rb b/lib/fog/vcloud/terremark/ecloud.rb index 8b0b47914..07ebec22b 100644 --- a/lib/fog/vcloud/terremark/ecloud.rb +++ b/lib/fog/vcloud/terremark/ecloud.rb @@ -63,8 +63,6 @@ module Fog request :power_reset request :power_shutdown - versions "v0.8b-ext2.3", "0.8b-ext2.3" - module Mock def self.base_url "https://fakey.com/api/v0.8b-ext2.3" @@ -190,26 +188,11 @@ module Fog end module Real - private - - # If we don't support any versions the service does, then raise an error. - # If the @version that super selected isn't in our supported list, then select one that is. - def check_versions - if @version - unless supported_version_numbers.include?(@version.to_s) - raise UnsupportedVersion.new("#{@version} is not supported by the server.") - end - unless Fog::Vcloud::Terremark::Ecloud.supported_versions.include?(@version.to_s) - raise UnsupportedVersion.new("#{@version} is not supported by Fog::Vcloud::Terremark::Ecloud") - end - else - unless @version = (supported_version_numbers & Fog::Vcloud::Terremark::Ecloud.supported_versions).sort.first - raise UnsupportedVersion.new("\nService @ #{@versions_uri} supports: #{supported_version_numbers.join(', ')}\n" + - "Fog::Vcloud::Terremark::Ecloud supports: #{Fog::Vcloud::Terremark::Ecloud.supported_versions.join(', ')}") - end - end + def supporting_versions + ["v0.8b-ext2.3", "0.8b-ext2.3"] end end + end end end diff --git a/lib/fog/vcloud/terremark/vcloud.rb b/lib/fog/vcloud/terremark/vcloud.rb index c7b499874..08c9b9b3b 100644 --- a/lib/fog/vcloud/terremark/vcloud.rb +++ b/lib/fog/vcloud/terremark/vcloud.rb @@ -4,23 +4,12 @@ module Fog module Vcloud extend Fog::Vcloud::Extension - versions "v0.8" - request_path 'fog/vcloud/terremark/vcloud/requests' request :get_vdc - private - - # If we don't support any versions the service does, then raise an error. - # If the @version that super selected isn't in our supported list, then select one that is. - def check_versions - super - unless (supported_version_ids & Versions::SUPPORTED).length > 0 - raise UnsupportedVersion.new("\nService @ #{@versions_uri} supports: #{supported_version_ids.join(', ')}\n" + - "Fog::Vcloud::Terremark::Vcloud supports: #{Versions::SUPPORTED.join(', ')}") - end - unless supported_version_ids.include?(@version) - @version = (supported_version_ids & Versions::SUPPORTED).sort.first + module Real + def supporting_versions + ["0.8", "0.8a-ext1.6"] end end end