1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

Use the eCloud version logic in vCloud proper

This commit is contained in:
freeformz 2010-07-23 10:56:29 +08:00 committed by Wesley Beary
parent dea8de443d
commit 21550d683b
4 changed files with 26 additions and 53 deletions

View file

@ -3,8 +3,9 @@ require 'fog/vcloud/model'
require 'fog/vcloud/collection' require 'fog/vcloud/collection'
require 'fog/vcloud/generators' require 'fog/vcloud/generators'
require 'fog/vcloud/extension' require 'fog/vcloud/extension'
require 'fog/vcloud/terremark/vcloud'
require 'fog/vcloud/terremark/ecloud' require 'fog/vcloud/terremark/ecloud'
require 'fog/vcloud/terremark/vcloud'
module URI module URI
class Generic class Generic
@ -46,6 +47,10 @@ module Fog
attr_accessor :login_uri attr_accessor :login_uri
attr_reader :versions_uri attr_reader :versions_uri
def supporting_versions
["v0.8"]
end
def initialize(options = {}) def initialize(options = {})
@connections = {} @connections = {}
@versions_uri = URI.parse(options[:versions_uri]) @versions_uri = URI.parse(options[:versions_uri])
@ -138,18 +143,21 @@ module Fog
end end
end end
# Load up @all_versions and supported_versions from the provided :versions_uri # If we don't support any versions the service does, then raise an error.
# If there are no supported versions raise an error # If the @version that super selected isn't in our supported list, then select one that is.
# And choose a default version is none is specified
def check_versions def check_versions
supported_versions = get_versions(@versions_uri).body[:VersionInfo] if @version
unless supported_version_numbers.include?(@version.to_s)
if supported_versions.empty? raise UnsupportedVersion.new("#{@version} is not supported by the server.")
raise UnsupportedVersion.new("No supported versions found @ #{@version_uri}") end
end unless supporting_versions.include?(@version.to_s)
raise UnsupportedVersion.new("#{@version} is not supported by #{self.class}")
unless @version end
@version = supported_version_numbers.first 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
end end

View file

@ -12,9 +12,6 @@ module Fog
end end
module #{other}::Mock module #{other}::Mock
end end
def self.supported_versions
@versions
end
def self.extended(klass) def self.extended(klass)
unless @required unless @required
models.each do |model| models.each do |model|
@ -35,10 +32,6 @@ module Fog
EOS EOS
end end
def versions(*args)
@versions = args
end
end end
end end
end end

View file

@ -63,8 +63,6 @@ module Fog
request :power_reset request :power_reset
request :power_shutdown request :power_shutdown
versions "v0.8b-ext2.3", "0.8b-ext2.3"
module Mock module Mock
def self.base_url def self.base_url
"https://fakey.com/api/v0.8b-ext2.3" "https://fakey.com/api/v0.8b-ext2.3"
@ -190,26 +188,11 @@ module Fog
end end
module Real module Real
private def supporting_versions
["v0.8b-ext2.3", "0.8b-ext2.3"]
# 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
end end
end end
end end
end end
end end

View file

@ -4,23 +4,12 @@ module Fog
module Vcloud module Vcloud
extend Fog::Vcloud::Extension extend Fog::Vcloud::Extension
versions "v0.8"
request_path 'fog/vcloud/terremark/vcloud/requests' request_path 'fog/vcloud/terremark/vcloud/requests'
request :get_vdc request :get_vdc
private module Real
def supporting_versions
# If we don't support any versions the service does, then raise an error. ["0.8", "0.8a-ext1.6"]
# 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
end end
end end
end end