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:
parent
dea8de443d
commit
21550d683b
4 changed files with 26 additions and 53 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue