| 
									
										
										
										
											2015-02-12 13:01:05 +03:00
										 |  |  | require_relative "stack_base" | 
					
						
							|  |  |  | require_relative "stack_openstack" | 
					
						
							|  |  |  | require_relative "stack_ec2" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class StackFactory | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def self.create(provider, attrs) | 
					
						
							|  |  |  |     get_class(provider).create(attrs) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-18 11:00:24 +03:00
										 |  |  |   def self.build_from_bson(provider, attrs) | 
					
						
							|  |  |  |     get_class(provider).build_from_bson(attrs) | 
					
						
							| 
									
										
										
										
											2015-02-12 13:01:05 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def self.get_class(provider) | 
					
						
							|  |  |  |     case provider | 
					
						
							|  |  |  |     when ::Provider::Openstack::PROVIDER | 
					
						
							|  |  |  |       StackOpenstack | 
					
						
							|  |  |  |     when ::Provider::Ec2::PROVIDER | 
					
						
							|  |  |  |       StackEc2 | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       raise InvalidRecord.new "Invalid provider: '#{provider}'" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | end |