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 stack = Model::StackFactory.create(object['provider'], object) stack.owner = owner_from_request Devops::Db.connector.stack_insert(stack) file = JobStarter.start_job(:worker, :stack_bootstrap, provider: stack.provider, stack_id: stack.id, 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