fluke/devops-service/providers/provider_factory.rb

41 lines
782 B
Ruby
Raw Normal View History

module Provider
class ProviderFactory
2014-05-08 15:34:26 +04:00
@@providers = nil
2014-05-08 15:34:26 +04:00
def self.providers
@@providers.keys
end
2014-05-08 15:34:26 +04:00
def self.get provider
p = @@providers[provider]
raise ::Sinatra::NotFound.new("Provider #{provider} not found") if p.nil?
p
end
2014-05-08 15:34:26 +04:00
def self.all
if @@providers.nil?
ProviderFactory.init
2014-05-08 15:34:26 +04:00
end
@@providers.values
end
2014-05-08 15:34:26 +04:00
def self.init
conf = DevopsService.config
@@providers = {}
["ec2", "openstack", "static"].each do |p|
begin
require "providers/#{p}"
o = Provider.const_get(p.capitalize).new(conf)
@@providers[p] = o if o.configured?
rescue => e
next
rescue LoadError
next
2014-05-08 15:34:26 +04:00
end
end
end
2014-05-08 15:34:26 +04:00
end
end