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