lib/arborist/client.rb in arborist-0.0.1.pre20160829140603 vs lib/arborist/client.rb in arborist-0.0.1.pre20161005112841

- old
+ new

@@ -35,10 +35,51 @@ # The ZMQ URI required to speak to the Arborist event API. attr_accessor :event_api_url + # + # High-level methods + # + + ### Mark a node as 'acknowledged' if it's down, or 'disabled' if + ### it's up. (A pre-emptive acknowledgement.) Requires the node + ### +identifier+, an acknowledgement +message+, and +sender+. You + ### can optionally include a +via+ (source), and override the default + ### +time+ of now. + def acknowledge( node, message, sender, via=nil, time=Time.now ) + data = { + node => { + ack: { + message: message, + sender: sender, + via: via, + time: time.to_s + } + } + } + + return self.update( data ) + end + alias_method :ack, :acknowledge + + + ### Clear an acknowledged/disabled +node+. + def clear_acknowledgement( node ) + data = { node => { ack: nil } } + request = self.make_update_request( data ) + self.send_tree_api_request( request ) + return true + end + alias_method :clear_ack, :clear_acknowledgement + + + + # + # Protocol methods + # + ### Return the manager's current status as a hash. def status request = self.make_status_request return self.send_tree_api_request( request ) end @@ -83,44 +124,10 @@ return self.pack_message( :fetch, header, [ criteria, exclude ] ) end - ### Mark a node as 'acknowledged' if it's down, or 'disabled' if - ### it's up. (A pre-emptive acknowledgement.) Requires the node - ### +identifier+, an acknowledgement +message+, and +sender+. You - ### can optionally include a +via+ (source), and override the default - ### +time+ of now. - def acknowledge( node, message, sender, via=nil, time=Time.now ) - data = { - node => { - ack: { - message: message, - sender: sender, - via: via, - time: time.to_s - } - } - } - - request = self.make_update_request( data ) - self.send_tree_api_request( request ) - return true - end - alias_method :ack, :acknowledge - - - ### Clear an acknowledged/disabled +node+. - def clear_acknowledgement( node ) - data = { node => { ack: nil } } - request = self.make_update_request( data ) - self.send_tree_api_request( request ) - return true - end - alias_method :clear_ack, :clear_acknowledgement - - ### Update the identified nodes in the manager with the specified data. def update( *args ) request = self.make_update_request( *args ) self.send_tree_api_request( request ) return true @@ -140,18 +147,18 @@ return response.first end ### Make a subscription request for the specified +criteria+, +identifier+, and +event_type+. - def make_subscribe_request( criteria: {}, identifier: nil, event_type: nil ) + def make_subscribe_request( criteria: {}, identifier: nil, event_type: nil, exclude: {} ) self.log.debug "Making subscription request for identifier: %p, event_type: %p, criteria: %p" % [ identifier, event_type, criteria ] header = {} header[ :identifier ] = identifier if identifier header[ :event_type ] = event_type - return self.pack_message( :subscribe, header, criteria ) + return self.pack_message( :subscribe, header, [ criteria, exclude ] ) end ### Remove a subscription def unsubscribe( *args ) @@ -242,9 +249,12 @@ return body end + # + # Utility methods + # ### Format ruby +data+ for communicating with the Arborist manager. def pack_message( verb, *data ) header = data.shift || {} body = data.shift