module Devops module API2_0 module Routes module StackRoutes def self.registered(app) app.get_with_headers '/stacks', :headers => [:accept] do check_privileges("stack", "r") json Devops::API2_0::Handler::Stack.new(request).stacks.map(&:to_hash) end app.get_with_headers '/stacks/provider/:provider', :headers => [:accept] do |provider| check_privileges("stack", "r") check_provider(provider) json Devops::API2_0::Handler::Stack.new(request).stacks_for_provider(provider).map(&:to_hash) end app.post_with_headers "/stack", :headers => [:accept] do check_privileges("stack", "w") m = Devops::API2_0::Handler::Stack.new(request).create_stack object create_response "Created", m.to_hash, 201 end hash = {} hash['GET'] = lambda { |stack_id| check_privileges("stack", "r") json Devops::API2_0::Handler::Stack.new(request).stack(stack_id).to_hash } hash['DELETE'] = lambda { |stack_id| check_privileges("stack", "w") Devops::API2_0::Handler::Stack.new(request).delete_stack(stack_id) create_response("Stack '#{stack_id}' has been removed") } app.multi_routes '/stack/:stack_id', {:headers => [:accept]}, hash app.post_with_headers "/stack/:stack_id/sync_details", :headers => [:accept] do |stack_id| check_privileges("stack", "w") json Devops::API2_0::Handler::Stack.new(request).sync_details(stack_id).to_hash end app.get_with_headers "/stack/:stack_id/resources", :headers => [:accept] do |stack_id| check_privileges("stack", "r") json Devops::API2_0::Handler::Stack.new(request).resources(stack_id) end app.get_with_headers "/stack/:stack_id/resources/:resource_id", :headers => [:accept] do |stack_id, resource_id| check_privileges("stack", "r") json Devops::API2_0::Handler::Stack.new(request).resource(stack_id, resource_id) end puts "Stack routes initialized" end end end end end