mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
34e6a1105c
distinctly styles deprecations for clarity gives better flexibility for redirecting logs reduces possibility of missing deprecations because warnings are ignored
60 lines
1.5 KiB
Ruby
60 lines
1.5 KiB
Ruby
module Vmfusion # deviates from other bin stuff to accomodate gem
|
|
class << self
|
|
|
|
def class_for(key)
|
|
case key
|
|
when :compute
|
|
Fog::Compute::Vmfusion
|
|
else
|
|
raise ArgumentError, "Unrecognized service: #{key}"
|
|
end
|
|
end
|
|
|
|
def [](service)
|
|
@@connections ||= Hash.new do |hash, key|
|
|
hash[key] = case key
|
|
when :compute
|
|
Fog::Logger.warning("Vmfusion[:compute] is not recommended, use Compute[:vmfusion] for portability")
|
|
Fog::Compute.new(:provider => 'Vmfusion')
|
|
else
|
|
raise ArgumentError, "Unrecognized service: #{key.inspect}"
|
|
end
|
|
end
|
|
@@connections[service]
|
|
end
|
|
|
|
def available?
|
|
begin
|
|
availability=true unless Gem::Specification::find_by_name("fission").nil?
|
|
rescue Gem::LoadError
|
|
availability=false
|
|
rescue
|
|
availability_gem=Gem.available?("fission")
|
|
end
|
|
|
|
if availability
|
|
for service in services
|
|
for collection in self.class_for(service).collections
|
|
unless self.respond_to?(collection)
|
|
self.class_eval <<-EOS, __FILE__, __LINE__
|
|
def self.#{collection}
|
|
self[:#{service}].#{collection}
|
|
end
|
|
EOS
|
|
end
|
|
end
|
|
end
|
|
end
|
|
availability
|
|
end
|
|
|
|
def collections
|
|
services.map {|service| self[service].collections}.flatten.sort_by {|service| service.to_s}
|
|
end
|
|
|
|
def services
|
|
Fog::Vmfusion.services
|
|
end
|
|
|
|
end
|
|
end
|