require "sinatra" module Provider class ProviderFactory @@providers = {} def self.providers @@providers.keys end def self.get provider p = @@providers[provider] raise ::Sinatra::NotFound.new("Provider #{provider} not found") if p.nil? p end def self.all @@providers.values end def self.init conf ["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 end end end end end