module Devops module Version2_0 module Routes module ScriptRoutes def self.registered(app) app.before "/script/:script_name" do check_headers :accept check_privileges("script", "w") file_name = params[:script_name] @file = File.join(DevopsService.config[:scripts_dir], check_filename(file_name, "Parameter 'script_name' must be a not empty string")) if request.put? halt_response("File '#{file_name}' already exist") if File.exists?(@file) elsif request.delete? halt_response("File '#{file_name}' does not exist", 404) unless File.exists?(@file) end end app.after %r{\A/script/((command|run)/)?[\w]+\z} do statistic end # Get scripts names # # * *Request* # - method : GET # - headers : # - Accept: application/json # # * *Returns* : # [ # "script_1" # ] app.before "/scripts" do check_headers :accept check_privileges("script", "r") end app.get "/scripts", &Devops::Version2_0::Handler::Script.get_scripts # Run command on node :node_name # # * *Request* # - method : POST # - body : # command to run # # * *Returns* : text stream app.before "/script/command/:node_name" do check_privileges("script", "x") end app.post "/script/command/:node_name", &Devops::Version2_0::Handler::Script.execute_command # 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.before "/script/run/:script_name" do check_headers :content_type check_privileges("script", "x") end app.post "/script/run/:script_name", &Devops::Version2_0::Handler::Script.run_script # Create script :script_name # # * *Request* # - method : PUT # - headers : # - Accept: application/json # - body : script content # # * *Returns* : # 201 - Created app.put "/script/:script_name", &Devops::Version2_0::Handler::Script.create_script # Delete script :script_name # # * *Request* # - method : Delete # - headers : # - Accept: application/json # # * *Returns* : # 200 - Deleted app.delete "/script/:script_name", &Devops::Version2_0::Handler::Script.delete_script puts "Script routes initialized" end end end end end