Class: Wakame::Monitor::Service

Inherits:
Object
  • Object
show all
Includes:
Wakame::Monitor
Defined in:
lib/wakame/monitor/service.rb

Defined Under Namespace

Classes: CommandChecker, PidFileChecker, ServiceChecker

Constant Summary

Constants included from Wakame::Monitor

STATUS_FAIL, STATUS_OFFLINE, STATUS_ONLINE

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Wakame::Monitor

#disable, #enable, included, #publish_to

Constructor Details

#initializeService

Returns a new instance of Service.



124
125
126
127
# File 'lib/wakame/monitor/service.rb', line 124

def initialize
  @status = Wakame::Service::STATUS_ONLINE
  @checkers = {}
end

Instance Attribute Details

#checkersObject (readonly)

Returns the value of attribute checkers.



122
123
124
# File 'lib/wakame/monitor/service.rb', line 122

def checkers
  @checkers
end

Instance Method Details

#dump_attrsObject



147
148
149
# File 'lib/wakame/monitor/service.rb', line 147

def dump_attrs
  
end

#find_checker(svc_id) ⇒ Object



151
152
153
# File 'lib/wakame/monitor/service.rb', line 151

def find_checker(svc_id)
  @checkers[svc_id]
end

#handle_request(request) ⇒ Object



132
133
134
135
136
137
138
139
140
# File 'lib/wakame/monitor/service.rb', line 132

def handle_request(request)
  svc_id = request[:svc_id]
  case request[:command]
  when :start
    register(svc_id, request[:cmdstr])
  when :stop
    unregister(svc_id)
  end
end

#register(svc_id, checker_type, *args) ⇒ Object



155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/wakame/monitor/service.rb', line 155

def register(svc_id, checker_type, *args)
  chk = @checkers[svc_id]
  if chk
    Wakame.log.error("#{self.class}: Service registory duplication. #{svc_id}")
    raise "Service registory duplication. #{svc_id}"
  end
  case checker_type.to_sym
  when :pidfile
    chk = PidFileChecker.new(svc_id, self, args[0])
  when :command
    chk = CommandChecker.new(svc_id, self, args[0])
  else
    raise "Unsupported checker type: #{checker_type}"
  end
  chk.start
  @checkers[svc_id]=chk
  Wakame.log.info("#{self.class}: Registered service checker for #{svc_id}")
end

#send_event(a) ⇒ Object



142
143
144
145
# File 'lib/wakame/monitor/service.rb', line 142

def send_event(a)
  Wakame.log.debug("Sending back a event: #{a.class}")
  publish_to('agent_event', a.marshal)
end

#setup(path) ⇒ Object



129
130
# File 'lib/wakame/monitor/service.rb', line 129

def setup(path)
end

#unregister(svc_id) ⇒ Object



174
175
176
177
178
179
180
181
# File 'lib/wakame/monitor/service.rb', line 174

def unregister(svc_id)
  chk = @checkers[svc_id]
  if chk
    chk.timer.stop
    @checkers.delete(svc_id)
    Wakame.log.info("#{self.class}: Unregistered service checker for #{svc_id}")
  end
end