2010-05-03 00:46:43 -04:00
|
|
|
module Vcloud
|
|
|
|
class << self
|
|
|
|
|
|
|
|
def services
|
|
|
|
if Fog.credentials.has_key?(:vcloud)
|
|
|
|
Fog.credentials[:vcloud].keys.sort { |a,b| a.to_s <=> b.to_s }
|
|
|
|
else
|
|
|
|
[]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def registered_services
|
|
|
|
Vcloud.services.map { |service| ":" << service.to_s }.join(", ")
|
|
|
|
end
|
|
|
|
|
|
|
|
def complete_service_options?(service)
|
|
|
|
if Fog.credentials.has_key?(:vcloud)
|
|
|
|
if Fog.credentials[:vcloud].has_key?(service)
|
|
|
|
service = Fog.credentials[:vcloud][service]
|
2010-06-17 19:58:09 -04:00
|
|
|
if Fog::Vcloud.requirements.all? { |option| service.has_key?(option) }
|
2010-05-03 00:46:43 -04:00
|
|
|
return true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
2010-05-16 00:05:16 -04:00
|
|
|
if Vcloud.services.any? && Vcloud.services.all? { |service| Vcloud.complete_service_options?(service) }
|
2010-05-03 00:46:43 -04:00
|
|
|
|
|
|
|
def initialized?
|
|
|
|
true
|
|
|
|
end
|
|
|
|
|
|
|
|
def startup_notice
|
2010-09-21 14:11:15 -04:00
|
|
|
Formatador.display_line("You have access to the following Vcloud services: #{Vcloud.registered_services}.")
|
2010-05-03 00:46:43 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def [](service)
|
|
|
|
@@connections ||= Hash.new do |hash, key|
|
|
|
|
if credentials = Fog.credentials[:vcloud][key]
|
2010-12-17 19:49:55 -05:00
|
|
|
credentials = credentials.dup
|
|
|
|
_module_ = eval(credentials.delete(:module))
|
|
|
|
hash[key] = _module_.new(credentials)
|
2010-05-03 00:46:43 -04:00
|
|
|
else
|
|
|
|
raise ArgumentError.new("Unregistered service: :#{key}. Registered services are: #{Vcloud.registered_services}")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
@@connections[service]
|
|
|
|
end
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
def initialized?
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|