class XymonClient::Service
Manage a Service
, can contains multiple items to monitor
Constants
- DEFAULT_DETAILS_TEMPLATE
Attributes
enabled[RW]
items[R]
lifetime[RW]
name[R]
status[R]
Public Class Methods
new(servers, config)
click to toggle source
Calls superclass method
XymonClient::Client::new
# File lib/xymonclient/service.rb, line 22 def initialize(servers, config) super(servers) @items = {} @current_state = 'purple' update_config(config) end
Public Instance Methods
ack(duration, message)
click to toggle source
Calls superclass method
XymonClient::Client#ack
# File lib/xymonclient/service.rb, line 91 def ack(duration, message) super(@host, @name, duration, message) end
board(fields = [])
click to toggle source
Calls superclass method
XymonClient::Client#board
# File lib/xymonclient/service.rb, line 87 def board(fields = []) super(@host, @name, fields) end
disable(duration, message)
click to toggle source
Calls superclass method
XymonClient::Client#disable
# File lib/xymonclient/service.rb, line 83 def disable(duration, message) super(@host, @name, duration, message) end
enable()
click to toggle source
Calls superclass method
XymonClient::Client#enable
# File lib/xymonclient/service.rb, line 79 def enable super(@host, @name) end
update_config(config)
click to toggle source
# File lib/xymonclient/service.rb, line 29 def update_config(config) raise InvalidService if config.fetch('name', '') == '' raise InvalidService if config.fetch('host', '') == '' @name = config['name'] @host = config['host'] @details_template = config.fetch( 'details_template', DEFAULT_DETAILS_TEMPLATE ) @lifetime = config.fetch('lifetime', '30m') @enabled = config.fetch('enabled', true) if config.fetch('items', {}).empty? @items = {} else _update_items_config(config['items']) end @purple_item_status = config.fetch('purple_item_status', 'red') end
update_item(name, value, attrs = {})
click to toggle source
# File lib/xymonclient/service.rb, line 48 def update_item(name, value, attrs = {}) raise InvalidServiceItem unless @items.include?(name) @items[name].value = value @items[name].attributes.merge!(attrs) end
Private Instance Methods
_create_serviceitem(config)
click to toggle source
# File lib/xymonclient/service.rb, line 113 def _create_serviceitem(config) case config.fetch('type', '') when 'gauge' ServiceItemGauge.new(config) when 'string' ServiceItemString.new(config) else ServiceItem.new(config) end end
_details()
click to toggle source
# File lib/xymonclient/service.rb, line 97 def _details context = { 'name' => @name, 'host' => @host, 'status' => @current_state, 'items' => {}, 'enabled' => @enabled, 'lifetime' => @lifetime, 'timestamp' => @timestamp } context['items'] = @items.map { |_name, item| item.context } ERB.new(@details_template).result( XymonClient::ERBContext.new(context).context ) end
_update_items_config(items)
click to toggle source
# File lib/xymonclient/service.rb, line 124 def _update_items_config(items) # cleanup old items and update old items @items.keep_if { |key, _value| items.key?(key) } @items.each do |item_name, item_value| item_value.update_config(items[item_name]) end # add new items items.each do |item_name, item_config| @items[item_name] = _create_serviceitem(item_config) \ unless @items.keys.include?(item_name) end end