84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'db/mongo/models/stack/stack_factory'
 | |
| require "app/api2/parsers/stack"
 | |
| require_relative "request_handler"
 | |
| 
 | |
| module Devops
 | |
|   module API2_0
 | |
|     module Handler
 | |
|       class Stack < RequestHandler
 | |
| 
 | |
|         set_parser Devops::API2_0::Parser::StackParser
 | |
| 
 | |
|         def stacks
 | |
|           Devops::Db.connector.stacks
 | |
|         end
 | |
| 
 | |
|         def stacks_for_provider provider
 | |
|           Devops::Db.connector.stacks(provider)
 | |
|         end
 | |
| 
 | |
|         def create_stack object
 | |
|           object[:owner] = owner_from_request
 | |
|           file = JobStarter.start_job(:worker, :stack_bootstrap,
 | |
|             provider: object['provider'],
 | |
|             stack_attributes: object,
 | |
|             request: @request
 | |
|           )
 | |
|           puts "Syncing report is located here: #{file}"
 | |
| 
 | |
|           stack
 | |
|         end
 | |
| 
 | |
|         def create_stack
 | |
|           object = parser.create
 | |
|           stack_model = Model::StackFactory.create(object['provider'], object)
 | |
|           stack_model.owner = owner_from_request
 | |
|           Devops::Db.connector.stack_insert(stack_model)
 | |
| 
 | |
|           file = JobStarter.start_job(:worker, :stack_bootstrap,
 | |
|             provider: stack_model.provider,
 | |
|             stack_id: stack_model.id,
 | |
|             request: @request
 | |
|           )
 | |
|           puts "Syncing report is located here: #{file}"
 | |
| 
 | |
|           stack_model
 | |
|         end
 | |
| 
 | |
|         def stack id
 | |
|           Devops::Db.connector.stack(id)
 | |
|         end
 | |
| 
 | |
|         def delete_stack id
 | |
|           stack = self.stack(id)
 | |
|           stack.delete_stack_in_cloud!
 | |
|           Devops::Db.connector.stack_servers_delete(id)
 | |
|           Devops::Db.connector.stack_delete(id)
 | |
|         end
 | |
| 
 | |
|         def sync_details id
 | |
|           stack = self.stack(id)
 | |
|           stack.sync_details!
 | |
|           Devops::Db.connector.stack_update(stack)
 | |
| 
 | |
|           stack
 | |
|         end
 | |
| 
 | |
|         def resources id
 | |
|           stack = Devops::Db.connector.stack(id)
 | |
|           stack.resources
 | |
|         end
 | |
| 
 | |
|         def resource id, resource_id
 | |
|           stack = Devops::Db.connector.stack(id)
 | |
|           stack.resource(resource_id)
 | |
|         end
 | |
| 
 | |
|         def set_run_list id
 | |
|           Devops::Db.connector.set_stack_run_list(id, parser.run_list)
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | 
