class Mamiya::Master
Constants
- MASTER_EVENTS
Attributes
agent_monitor[R]
Public Class Methods
new(*)
click to toggle source
Calls superclass method
Mamiya::Agent::new
# File lib/mamiya/master.rb, line 9 def initialize(*) super @agent_monitor = AgentMonitor.new(self) @events_only ||= [] @events_only << MASTER_EVENTS end
Public Instance Methods
applications()
click to toggle source
# File lib/mamiya/master.rb, line 49 def applications config.storage_class.find( config[:storage] ).keys end
labels()
click to toggle source
# File lib/mamiya/master.rb, line 59 def labels [] end
start()
click to toggle source
# File lib/mamiya/master.rb, line 29 def start # Override and stop starting task_queue web_start serf_start monitor_start end
status(packages: false)
click to toggle source
# File lib/mamiya/master.rb, line 55 def status(packages: false) {name: serf.name, master: true} end
storage(app)
click to toggle source
# File lib/mamiya/master.rb, line 41 def storage(app) config.storage_class.new( config[:storage].merge( application: app ) ) end
terminate()
click to toggle source
Calls superclass method
Mamiya::Agent#terminate
# File lib/mamiya/master.rb, line 36 def terminate @agent_monitor.stop! super end
web()
click to toggle source
# File lib/mamiya/master.rb, line 19 def web logger = self.logger this = self @web ||= Rack::Builder.new do use AppBridge, logger, this run Web end end
Private Instance Methods
init_serf()
click to toggle source
Calls superclass method
Mamiya::Agent#init_serf
# File lib/mamiya/master.rb, line 65 def init_serf super.tap do |serf| serf.on_user_event do |event| monitor_commit_event(event) end serf.on_member_join do |event| @agent_monitor.refresh(node: event.members.map { |_| _[:name] }) end end end
monitor_commit_event(event)
click to toggle source
# File lib/mamiya/master.rb, line 77 def monitor_commit_event(event) @agent_monitor.commit_event(event) rescue Exception => e logger.fatal("Error during commiting event: #{e.inspect}") e.backtrace.each do |line| logger.fatal "\t#{line}" end end
monitor_start()
click to toggle source
# File lib/mamiya/master.rb, line 105 def monitor_start logger.debug "Starting agent_monitor..." @agent_monitor.start! logger.debug "agent_monitor became ready" end
web_start()
click to toggle source
# File lib/mamiya/master.rb, line 86 def web_start @web_thread = Thread.new do options = config[:web] || {} rack_options = { app: self.web, Port: options[:port] ? options[:port].to_i : 7761, Host: options[:bind] || '0.0.0.0', # TODO: IPv6 environment: options[:environment] || 'development', server: options[:server], Logger: logger['web'] } server = Rack::Server.new(rack_options) # To disable trap(:INT) and trap(:TERM) server.define_singleton_method(:trap) { |*args| } server.start end @web_thread.abort_on_exception = true end