| 
									
										
										
										
											2014-06-24 13:40:52 +04:00
										 |  |  | require "db/mongo/models/mongo_model" | 
					
						
							|  |  |  | require "db/exceptions/invalid_record" | 
					
						
							|  |  |  | require "commands/deploy_env" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DeployEnvBase < MongoModel | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   include DeployEnvCommands | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   attr_accessor :identifier, :run_list, :expires, :provider, :users | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def initialize d={} | 
					
						
							|  |  |  |     self.identifier = d["identifier"] | 
					
						
							|  |  |  |     b = d["run_list"] || [] | 
					
						
							|  |  |  |     self.run_list = (b.is_a?(Array) ? b.uniq : b) | 
					
						
							|  |  |  |     self.expires = d["expires"] | 
					
						
							|  |  |  |     self.provider = d["provider"] | 
					
						
							|  |  |  |     b = d["users"] || [] | 
					
						
							|  |  |  |     self.users = (b.is_a?(Array) ? b.uniq : b) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def validate! | 
					
						
							|  |  |  |     super | 
					
						
							| 
									
										
										
										
											2014-11-28 15:12:07 +03:00
										 |  |  |     begin | 
					
						
							|  |  |  |       self.class.validators.each do |validator| | 
					
						
							|  |  |  |         validator.new(self).validate! | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |       true | 
					
						
							|  |  |  |     rescue InvalidRecord => e | 
					
						
							|  |  |  |       raise InvalidRecord.new "Deploy environment '#{self.identifier}'. " + e.message | 
					
						
							| 
									
										
										
										
											2014-11-26 18:46:04 +03:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2014-06-24 13:40:52 +04:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def to_hash | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       "identifier" => self.identifier, | 
					
						
							|  |  |  |       "run_list" => self.run_list, | 
					
						
							|  |  |  |       "expires" => self.expires, | 
					
						
							|  |  |  |       "provider" => self.provider, | 
					
						
							|  |  |  |       "users" => self.users | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-27 18:45:35 +03:00
										 |  |  |   def provider_instance | 
					
						
							|  |  |  |     @provider_instance ||= ::Provider::ProviderFactory.get(self.provider) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-26 18:46:04 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # class methods | 
					
						
							|  |  |  |   class << self | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def validators | 
					
						
							|  |  |  |       @validators | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def set_validators(*validators) | 
					
						
							|  |  |  |       @validators = validators | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-24 13:40:52 +04:00
										 |  |  | end |