module Devops module API2_0 module Routes module ScriptRoutes def self.registered(app) # Get scripts names # # * *Request* # - method : GET # - headers : # - Accept: application/json # # * *Returns* : # [ # "script_1" # ] app.get_with_headers "/scripts", :headers => [:accept] do check_privileges("script", "r") json Devops::API2_0::Handler::Script.new(request).scripts end # Run command on node :node_name # # * *Request* # - method : POST # - body : # command to run # # * *Returns* : text stream app.post_with_statistic "/script/command/:node_name" do |node_name| check_privileges("script", "x") stream() do |out| begin Devops::API2_0::Handler::Script.new(request).execute_command(out, node_name) rescue IOError => e logger.error e.message end end end # Run script :script_name on nodes # # * *Request* # - method : POST # - headers : # - Content-Type: application/json # - body : # { # "nodes": [], -> array of nodes names # "params": [] -> array of script arguments # } # # * *Returns* : text stream app.post_with_headers "/script/run/:script_name", :headers => [:content_type] do |script_name| check_privileges("script", "x") stream() do |out| begin status = Devops::API2_0::Handler::Script.new(request).run_script out, script_name out << create_status(status) rescue IOError => e logger.error e.message end end end hash = {} # Create script :script_name # # * *Request* # - method : PUT # - headers : # - Accept: application/json # - body : script content # # * *Returns* : # 201 - Created hash["PUT"] = lambda { |script_name| check_privileges("script", "w") Devops::API2_0::Handler::Script.new(request).create_script(script_name) create_response("File '#{script_name}' created", nil, 201) } # Delete script :script_name # # * *Request* # - method : Delete # - headers : # - Accept: application/json # # * *Returns* : # 200 - Deleted hash["DELETE"] = lambda { |script_name| check_privileges("script", "w") Devops::API2_0::Handler::Script.new(request).delete_script script_name create_response("File '#{script_name}' deleted") } app.multi_routes "/script/:script_name", {:headers => [:accept]}, hash puts "Script routes initialized" end end end end end