when 'tag'
ARGV.shift
exec `which arv-tag`.strip, *ARGV
+when 'ws'
+ ARGV.shift
+ exec `which arv-ws`.strip, *ARGV
end
ENV['ARVADOS_API_VERSION'] ||= 'v1'
--- /dev/null
+../../python/bin/arv-ws
\ No newline at end of file
def received_message(self, m):
self.on_event(json.loads(str(m)))
+ def close_connection(self):
+ try:
+ self.sock.shutdown(socket.SHUT_RDWR)
+ self.sock.close()
+ except:
+ pass
+
def subscribe(api, filters, on_event):
- url = "{}?api_token={}".format(api._rootDesc['websocketUrl'], config.get('ARVADOS_API_TOKEN'))
- ws = EventClient(url, filters, on_event)
- ws.connect()
- return ws
+ try:
+ url = "{}?api_token={}".format(api._rootDesc['websocketUrl'], config.get('ARVADOS_API_TOKEN'))
+ ws = EventClient(url, filters, on_event)
+ ws.connect()
+ return ws
+ except:
+ ws.close_connection()
--- /dev/null
+#!/usr/bin/env python
+
+import argparse
+import sys
+
+parser = argparse.ArgumentParser()
+parser.add_argument('-u', '--uuid', type=str, default="")
+args = parser.parse_args()
+
+def on_message(ev):
+ print "\n", ev
+
+filters = []
+if len(args.uuid)>0:
+ filter1 = []
+ filter1.append ('object_uuid')
+ filter1.append ('=')
+ filter1.append (args.uuid)
+ filters.append (filter1)
+
+import arvados
+from arvados.events import subscribe
+
+api = arvados.api('v1', cache=False)
+
+ws = None
+try:
+ ws = subscribe(api, filters, lambda ev: on_message(ev))
+ ws.run_forever()
+except:
+ if (ws):
+ ws.close_connection()
+ else:
+ sys.exc_info()
'bin/arv-ls',
'bin/arv-normalize',
'bin/arv-put',
+ 'bin/arv-ws',
],
install_requires=[
'python-gflags',