43 lines
		
	
	
		
			874 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			874 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | module Version2_0 | ||
|  |   module Provider | ||
|  |     class ProviderFactory | ||
|  | 
 | ||
|  |       @@providers = nil | ||
|  | 
 | ||
|  |       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 | ||
|  |         if @@providers.nil? | ||
|  |           ProviderFactory.init | ||
|  |         end | ||
|  |         @@providers.values | ||
|  |       end | ||
|  | 
 | ||
|  |       def self.init | ||
|  |         conf = DevopsService.config | ||
|  |         @@providers = {} | ||
|  |         ["ec2", "openstack"].each do |p| | ||
|  |           begin | ||
|  |             require "providers/#{p}" | ||
|  |             o = Version2_0::Provider.const_get(p.capitalize).new(conf) | ||
|  |             @@providers[p] = o if o.configured? | ||
|  |           rescue => e | ||
|  |             next | ||
|  |           rescue LoadError | ||
|  |             next | ||
|  |           end | ||
|  |         end | ||
|  |       end | ||
|  | 
 | ||
|  |     end | ||
|  |   end | ||
|  | end |