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.



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

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

Instance Attribute Details

#checkersObject (readonly)

Returns the value of attribute checkers.



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

def checkers
  @checkers
end

Instance Method Details

#check_status(svc_id) ⇒ Object



187
188
189
190
191
192
193
194
# File 'lib/wakame/monitor/service.rb', line 187

def check_status(svc_id)
  chk = @checkers[svc_id]
  if chk
    chk.status
  else
    raise RuntimeError, "#{self.class}: Specified service id was not found: #{svc_id}"
  end
end

#dump_attrsObject



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

def dump_attrs
  
end

#find_checker(svc_id) ⇒ Object



156
157
158
# File 'lib/wakame/monitor/service.rb', line 156

def find_checker(svc_id)
  @checkers[svc_id]
end

#handle_request(request) ⇒ Object



137
138
139
140
141
142
143
144
145
# File 'lib/wakame/monitor/service.rb', line 137

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



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/wakame/monitor/service.rb', line 160

def register(svc_id, checker_type, *args)
  chk = @checkers[svc_id]
  if chk
    unregister(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



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

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

#setup(path) ⇒ Object



134
135
# File 'lib/wakame/monitor/service.rb', line 134

def setup(path)
end

#unregister(svc_id) ⇒ Object



178
179
180
181
182
183
184
185
# File 'lib/wakame/monitor/service.rb', line 178

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