class Procodile::ControlSession
Public Class Methods
new(supervisor, client)
click to toggle source
# File lib/procodile/control_session.rb, line 7 def initialize(supervisor, client) @supervisor = supervisor @client = client end
Public Instance Methods
check_concurrency(options)
click to toggle source
# File lib/procodile/control_session.rb, line 54 def check_concurrency(options) result = @supervisor.check_concurrency(:reload => options['reload']) result = result.each_with_object({}) { |(type, instances), hash| hash[type] = instances.map(&:to_hash) } "200 #{result.to_json}" end
receive_data(data)
click to toggle source
# File lib/procodile/control_session.rb, line 12 def receive_data(data) command, options = data.split(/\s+/, 2) options = JSON.parse(options) if self.class.instance_methods(false).include?(command.to_sym) && command != 'receive_data' begin public_send(command, options) rescue Procodile::Error => e Procodile.log nil, 'control', "Error: #{e.message}".color(31) "500 #{e.message}" end else "404 Invaid command" end end
reload_config(options)
click to toggle source
# File lib/procodile/control_session.rb, line 49 def reload_config(options) @supervisor.reload_config "200" end
restart(options)
click to toggle source
# File lib/procodile/control_session.rb, line 44 def restart(options) instances = @supervisor.restart(:processes => options['processes'], :tag => options['tag']) "200 " + instances.map { |a| a.map { |i| i ? i.to_hash : nil } }.to_json end
start_processes(options)
click to toggle source
# File lib/procodile/control_session.rb, line 27 def start_processes(options) if options['port_allocations'] if @supervisor.run_options[:port_allocations] @supervisor.run_options[:port_allocations].merge!(options['port_allocations']) else @supervisor.run_options[:port_allocations] = options['port_allocations'] end end instances = @supervisor.start_processes(options['processes'], :tag => options['tag']) "200 " + instances.map(&:to_hash).to_json end
status(options)
click to toggle source
# File lib/procodile/control_session.rb, line 60 def status(options) instances = {} @supervisor.processes.each do |process, process_instances| instances[process.name] = [] for instance in process_instances instances[process.name] << instance.to_hash end end processes = @supervisor.processes.keys.map(&:to_hash) result = { :version => Procodile::VERSION, :messages => @supervisor.messages, :root => @supervisor.config.root, :app_name => @supervisor.config.app_name, :supervisor => @supervisor.to_hash, :instances => instances, :processes => processes, :environment_variables => @supervisor.config.environment_variables, :procfile_path => @supervisor.config.procfile_path, :options_path => @supervisor.config.options_path, :local_options_path => @supervisor.config.local_options_path, :sock_path => @supervisor.config.sock_path, :log_root => @supervisor.config.log_root, :supervisor_pid_path => @supervisor.config.supervisor_pid_path, :pid_root => @supervisor.config.pid_root, :loaded_at => @supervisor.config.loaded_at.to_i, } "200 #{result.to_json}" end
stop(options)
click to toggle source
# File lib/procodile/control_session.rb, line 39 def stop(options) instances = @supervisor.stop(:processes => options['processes'], :stop_supervisor => options['stop_supervisor']) "200 " + instances.map(&:to_hash).to_json end