2015-04-16 17:54:40 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								require  'db/mongo/models/stack_template/stack_template_factory'  
						 
					
						
							
								
									
										
										
										
											2015-07-30 15:37:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								require  " app/api2/parsers/stack_template "  
						 
					
						
							
								
									
										
										
										
											2015-07-27 11:14:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								require_relative  " request_handler "  
						 
					
						
							
								
									
										
										
										
											2015-04-16 17:54:40 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module  Devops  
						 
					
						
							
								
									
										
										
										
											2015-07-27 11:14:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  module  API2_0 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-16 17:54:40 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    module  Handler 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-27 11:14:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      class  StackTemplate  <  RequestHandler 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-16 17:54:40 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-30 15:37:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        set_parser  Devops :: API2_0 :: Parser :: StackTemplateParser 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-27 11:14:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  stack_templates 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Devops :: Db . connector . stack_templates 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-16 17:54:40 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-27 11:14:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  stack_templates_for_provider  provider 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Devops :: Db . connector . stack_templates ( provider ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-16 17:54:40 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-14 17:48:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  create_stack_template  provider 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-30 15:37:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          body  =  parser . create 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 17:00:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          template_model  =  Model :: StackTemplateFactory . create ( provider ,  body ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-14 10:22:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          template_model . owner  =  parser . current_user 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-27 11:14:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          Devops :: Db . connector . stack_template_insert ( template_model ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          template_model 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-16 17:54:40 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-27 11:14:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  get_stack_template  id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Devops :: Db . connector . stack_template ( id ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-16 17:54:40 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-27 11:14:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  delete_stack_template  id 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-16 14:51:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          envs_with_this_template  =  envs_using_stack_template ( id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  envs_with_this_template . empty? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Devops :: Db . connector . stack_template_delete  id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          else 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 16:12:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            raise  ConflictException . new ( " Stack template ' #{ id } ' is already in use in  #{ envs_with_this_template . map { | project ,  envs |  " #{ project } :  #{ envs . join ( ', ' ) } " } . join ( '; ' ) } " ,  { projects :  envs_with_this_template } ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-16 14:51:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-27 15:44:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # temp solution to update url on existing stacks 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        def  update_template_url ( id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          template  =  Devops :: Db . connector . stack_template ( id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          template . update_template_url 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Devops :: Db . connector . stack_template_update ( template ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          template 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-16 14:51:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 16:12:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # returns: 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        #   "project" => ["deploy_env"] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # } 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-16 14:51:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  envs_using_stack_template ( id ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-24 15:37:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          projects  =  Devops :: Db . connector . projects_and_deploy_envs_by_field ( 'stack_template' ,  id ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-16 14:51:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          envs_with_this_template  =  [ ] 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 16:12:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          res  =  { } 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-16 14:51:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          projects . each  do  | project | 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 16:12:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            array  =  [ ] 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-22 14:33:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            res [ project . id ]  =  array 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-16 14:51:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            project . deploy_envs . each  do  | env | 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 16:12:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              array  <<  env . identifier 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-16 14:51:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          end 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 16:12:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          res 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-16 17:54:40 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-27 11:14:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								end