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
 | 
