synapse 2.215.0__py311-none-any.whl → 2.216.0__py311-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of synapse might be problematic. Click here for more details.

Files changed (62) hide show
  1. synapse/cortex.py +16 -1
  2. synapse/lib/cell.py +12 -0
  3. synapse/lib/cmd.py +6 -2
  4. synapse/lib/layer.py +10 -5
  5. synapse/lib/schemas.py +9 -2
  6. synapse/lib/snap.py +15 -5
  7. synapse/lib/storm.py +1 -1
  8. synapse/lib/types.py +3 -0
  9. synapse/lib/version.py +2 -2
  10. synapse/lib/view.py +16 -7
  11. synapse/models/inet.py +7 -1
  12. synapse/models/risk.py +2 -0
  13. synapse/tests/test_cortex.py +262 -0
  14. synapse/tests/test_lib_auth.py +2 -0
  15. synapse/tests/test_lib_storm.py +52 -1
  16. synapse/tests/test_lib_stormsvc.py +2 -2
  17. synapse/tests/test_lib_types.py +6 -0
  18. synapse/tests/test_model_inet.py +2 -0
  19. synapse/tests/test_tools_cryo_cat.py +3 -8
  20. synapse/tests/test_tools_storm.py +3 -2
  21. synapse/tests/utils.py +2 -0
  22. synapse/tools/aha/clone.py +3 -13
  23. synapse/tools/aha/easycert.py +5 -18
  24. synapse/tools/aha/enroll.py +3 -12
  25. synapse/tools/aha/list.py +2 -15
  26. synapse/tools/aha/mirror.py +3 -14
  27. synapse/tools/aha/provision/service.py +3 -13
  28. synapse/tools/aha/provision/user.py +3 -12
  29. synapse/tools/apikey.py +3 -13
  30. synapse/tools/autodoc.py +7 -19
  31. synapse/tools/axon2axon.py +1 -9
  32. synapse/tools/cellauth.py +5 -14
  33. synapse/tools/changelog.py +12 -16
  34. synapse/tools/cmdr.py +2 -6
  35. synapse/tools/cryo/cat.py +5 -15
  36. synapse/tools/cryo/list.py +3 -10
  37. synapse/tools/csvtool.py +40 -49
  38. synapse/tools/demote.py +1 -6
  39. synapse/tools/docker/validate.py +0 -1
  40. synapse/tools/easycert.py +3 -8
  41. synapse/tools/feed.py +7 -18
  42. synapse/tools/genpkg.py +3 -12
  43. synapse/tools/guid.py +4 -6
  44. synapse/tools/healthcheck.py +4 -11
  45. synapse/tools/json2mpk.py +1 -5
  46. synapse/tools/livebackup.py +3 -13
  47. synapse/tools/modrole.py +3 -12
  48. synapse/tools/moduser.py +3 -12
  49. synapse/tools/pkgs/gendocs.py +1 -1
  50. synapse/tools/promote.py +3 -13
  51. synapse/tools/pullfile.py +6 -18
  52. synapse/tools/pushfile.py +6 -18
  53. synapse/tools/reload.py +5 -14
  54. synapse/tools/rstorm.py +4 -12
  55. synapse/tools/shutdown.py +1 -2
  56. synapse/tools/snapshot.py +3 -14
  57. synapse/tools/storm.py +4 -12
  58. {synapse-2.215.0.dist-info → synapse-2.216.0.dist-info}/METADATA +1 -1
  59. {synapse-2.215.0.dist-info → synapse-2.216.0.dist-info}/RECORD +62 -62
  60. {synapse-2.215.0.dist-info → synapse-2.216.0.dist-info}/WHEEL +0 -0
  61. {synapse-2.215.0.dist-info → synapse-2.216.0.dist-info}/licenses/LICENSE +0 -0
  62. {synapse-2.215.0.dist-info → synapse-2.216.0.dist-info}/top_level.txt +0 -0
@@ -101,7 +101,8 @@ class StormTest(s_t_utils.SynTest):
101
101
  with self.raises(s_exc.BadTypeValu):
102
102
  await core.nodes('[ ou:org=({}) ]')
103
103
 
104
- self.len(1, await core.nodes('[ ou:org=() ]'))
104
+ with self.raises(s_exc.BadTypeValu):
105
+ await core.nodes('[ ou:org=() ]')
105
106
 
106
107
  with self.raises(s_exc.BadTypeValu):
107
108
  await core.nodes('[ ou:org=({}) ]')
@@ -293,6 +294,56 @@ class StormTest(s_t_utils.SynTest):
293
294
 
294
295
  self.len(0, await core.nodes('inet:service:platform:name=barplat'))
295
296
 
297
+ # Gutors work for props
298
+ nodes = await core.nodes('''[
299
+ test:str=guidprop
300
+ :gprop=({'name': 'someprop', '$props': {'size': 5}})
301
+ ]''')
302
+ self.len(1, nodes)
303
+ node = nodes[0]
304
+ self.eq(node.ndef, ('test:str', 'guidprop'))
305
+ self.nn(node.get('gprop'))
306
+
307
+ nodes = await core.nodes('test:str=guidprop -> test:guid')
308
+ self.len(1, nodes)
309
+ node = nodes[0]
310
+ self.eq(node.get('name'), 'someprop')
311
+ self.eq(node.get('size'), 5)
312
+
313
+ with self.raises(s_exc.BadTypeValu) as cm:
314
+ nodes = await core.nodes('''[
315
+ test:str=newpprop
316
+ :gprop=({'size': 'newp'})
317
+ ]''')
318
+
319
+ self.eq(cm.exception.get('form'), 'test:guid')
320
+ self.eq(cm.exception.get('prop'), 'size')
321
+ self.true(cm.exception.get('mesg').startswith('Bad value for prop test:guid:size: invalid literal'))
322
+
323
+ nodes = await core.nodes('''[
324
+ test:str=newpprop
325
+ :gprop?=({'size': 'newp'})
326
+ ]''')
327
+ self.len(1, nodes)
328
+ node = nodes[0]
329
+ self.eq(node.ndef, ('test:str', 'newpprop'))
330
+ self.none(node.get('gprop'))
331
+
332
+ nodes = await core.nodes('''
333
+ [ test:str=methset ]
334
+ $node.props.gprop = ({'name': 'someprop'})
335
+ ''')
336
+ self.len(1, nodes)
337
+ node = nodes[0]
338
+ self.eq(node.ndef, ('test:str', 'methset'))
339
+ self.nn(node.get('gprop'))
340
+
341
+ nodes = await core.nodes('test:str=methset -> test:guid')
342
+ self.len(1, nodes)
343
+ node = nodes[0]
344
+ self.eq(node.get('name'), 'someprop')
345
+ self.eq(node.get('size'), 5)
346
+
296
347
  async def test_lib_storm_jsonexpr(self):
297
348
  async with self.getTestCore() as core:
298
349
 
@@ -780,7 +780,7 @@ class StormSvcTest(s_test.SynTest):
780
780
  }
781
781
  with patchcore(core, 'setStormSvcEvents', badSetStormSvcEvents):
782
782
  svci = await core.addStormSvc(sdef)
783
- self.true(await core.waitStormSvc('dead', timeout=6))
783
+ self.true(await core.waitStormSvc('dead', timeout=12))
784
784
  await core.delStormSvc(svci.get('iden'))
785
785
 
786
786
  self.len(1, badiden)
@@ -792,7 +792,7 @@ class StormSvcTest(s_test.SynTest):
792
792
 
793
793
  with patchcore(core, '_runStormSvcAdd', badRunStormSvcAdd):
794
794
  svci = await core.addStormSvc(sdef)
795
- self.true(await core.waitStormSvc('dead', timeout=6))
795
+ self.true(await core.waitStormSvc('dead', timeout=12))
796
796
  await core.delStormSvc(svci.get('iden'))
797
797
  self.len(1, badiden)
798
798
  self.eq(svci.get('iden'), badiden[0])
@@ -316,6 +316,12 @@ class TypesTest(s_t_utils.SynTest):
316
316
  self.true(s_common.isguid(lnorm))
317
317
  self.eq(lnorm, tnorm)
318
318
 
319
+ with self.raises(s_exc.BadTypeValu) as exc:
320
+ model.type('guid').norm(())
321
+ self.eq(exc.exception.get('name'), 'guid')
322
+ self.eq(exc.exception.get('valu'), ())
323
+ self.eq(exc.exception.get('mesg'), 'Guid list values cannot be empty.')
324
+
319
325
  async def test_hex(self):
320
326
 
321
327
  async with self.getTestCore() as core:
@@ -3017,6 +3017,8 @@ class InetModelTest(s_t_utils.SynTest):
3017
3017
  platinst = nodes[0]
3018
3018
  app00 = nodes[0].get('app')
3019
3019
 
3020
+ self.len(1, await core.nodes('inet:service:instance:id=T2XK1223Y -> inet:service:app [ :provider=* :provider:name=vertex ] :provider -> ou:org'))
3021
+
3020
3022
  q = '''
3021
3023
  [
3022
3024
  (inet:service:account=(blackout, account, vertex, slack)
@@ -93,14 +93,9 @@ class CryoCatTest(s_t_utils.SynTest):
93
93
  stdout.buffer = io.BytesIO()
94
94
 
95
95
  with mock.patch('sys.stdout', stdout):
96
- with self.getLoggerStream('synapse.tools.cryo.cat') as stream:
97
- argv = ['--verbose', '--msgpack', '--size', '20', cryourl]
98
- retn, _ = await self.execToolMain(s_cryocat.main, argv)
99
- self.eq(0, retn)
100
-
101
- stream.seek(0)
102
- mesgs = stream.read()
103
- self.isin(f'connecting to: {cryourl}', mesgs)
96
+ argv = ['--msgpack', '--size', '20', cryourl]
97
+ retn, _ = await self.execToolMain(s_cryocat.main, argv)
98
+ self.eq(0, retn)
104
99
 
105
100
  stdout.buffer.seek(0)
106
101
  outdata = list(msgpack.Unpacker(stdout.buffer, raw=False, use_list=False))
@@ -62,7 +62,8 @@ class StormCliTest(s_test.SynTest):
62
62
 
63
63
  await core.addTagProp('foo', ('int', {}), {})
64
64
 
65
- pars = s_t_storm.getArgParser()
65
+ outp = self.getTestOutp()
66
+ pars = s_t_storm.getArgParser(outp)
66
67
  opts = pars.parse_args(('woot',))
67
68
  self.eq('woot', opts.cortex)
68
69
  self.none(opts.view)
@@ -263,7 +264,7 @@ class StormCliTest(s_test.SynTest):
263
264
 
264
265
  url = core.getLocalUrl()
265
266
 
266
- pars = s_t_storm.getArgParser()
267
+ pars = s_t_storm.getArgParser(self.getTestOutp())
267
268
  opts = pars.parse_args(('woot', '--view', '246e7d5dab883eb28d345a33abcdb577'))
268
269
  self.eq(opts.view, '246e7d5dab883eb28d345a33abcdb577')
269
270
 
synapse/tests/utils.py CHANGED
@@ -439,6 +439,7 @@ testmodel = {
439
439
 
440
440
  ('test:guid', {}, (
441
441
  ('size', ('test:int', {}), {}),
442
+ ('name', ('test:str', {}), {}),
442
443
  ('tick', ('test:time', {}), {}),
443
444
  ('posneg', ('test:sub', {}), {}),
444
445
  ('posneg:isbig', ('bool', {}), {}),
@@ -459,6 +460,7 @@ testmodel = {
459
460
  ('hehe', ('str', {}), {}),
460
461
  ('ndefs', ('array', {'type': 'ndef'}), {}),
461
462
  ('somestr', ('test:str', {}), {}),
463
+ ('gprop', ('test:guid', {}), {}),
462
464
  )),
463
465
  ('test:strregex', {}, ()),
464
466
 
@@ -1,11 +1,7 @@
1
- import sys
2
- import asyncio
3
- import argparse
4
-
5
1
  import synapse.exc as s_exc
6
2
  import synapse.telepath as s_telepath
7
3
 
8
- import synapse.lib.coro as s_coro
4
+ import synapse.lib.cmd as s_cmd
9
5
  import synapse.lib.output as s_output
10
6
 
11
7
  descr = '''
@@ -19,8 +15,7 @@ Examples:
19
15
 
20
16
  async def main(argv, outp=s_output.stdout):
21
17
 
22
- pars = argparse.ArgumentParser(prog='synapse.tools.aha.clone', description=descr,
23
- formatter_class=argparse.RawDescriptionHelpFormatter)
18
+ pars = s_cmd.Parser(prog='synapse.tools.aha.clone', outp=outp, description=descr)
24
19
 
25
20
  pars.add_argument('dnsname', help='The DNS name of the new AHA server.')
26
21
  pars.add_argument('--port', type=int, default=27492, help='The port that the new AHA server should listen on.')
@@ -49,10 +44,5 @@ async def main(argv, outp=s_output.stdout):
49
44
  outp.printf(f'ERROR: {mesg}')
50
45
  return 1
51
46
 
52
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
53
- ret = await main(argv, outp=outp)
54
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
55
- return ret
56
-
57
47
  if __name__ == '__main__': # pragma: no cover
58
- sys.exit(asyncio.run(_main(sys.argv[1:])))
48
+ s_cmd.exitmain(main)
@@ -1,22 +1,15 @@
1
- import sys
2
- import asyncio
3
- import logging
4
- import argparse
5
-
6
1
  import cryptography.x509 as c_x509
7
2
 
8
3
  import synapse.common as s_common
9
4
  import synapse.telepath as s_telepath
10
5
 
11
- import synapse.lib.coro as s_coro
6
+ import synapse.lib.cmd as s_cmd
12
7
  import synapse.lib.output as s_output
13
8
  import synapse.lib.certdir as s_certdir
14
9
 
15
10
 
16
- logger = logging.getLogger(__name__)
17
-
18
11
  async def main(argv, outp=s_output.stdout):
19
- pars = getArgParser()
12
+ pars = getArgParser(outp)
20
13
  opts = pars.parse_args(argv)
21
14
 
22
15
  if opts.network:
@@ -56,9 +49,9 @@ async def main(argv, outp=s_output.stdout):
56
49
  cdir.delUserCsr(name, outp=outp)
57
50
  return 0
58
51
 
59
- def getArgParser():
52
+ def getArgParser(outp):
60
53
  desc = 'CLI tool to generate simple x509 certificates from an Aha server.'
61
- pars = argparse.ArgumentParser(prog='synapse.tools.aha.easycert', description=desc)
54
+ pars = s_cmd.Parser(prog='synapse.tools.aha.easycert', outp=outp, description=desc)
62
55
 
63
56
  pars.add_argument('-a', '--aha', required=True, # type=str,
64
57
  help='Aha server to connect too.')
@@ -77,11 +70,5 @@ def getArgParser():
77
70
 
78
71
  return pars
79
72
 
80
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
81
- s_common.setlogging(logger, 'WARNING')
82
- ret = await main(argv, outp=outp)
83
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
84
- return ret
85
-
86
73
  if __name__ == '__main__': # pragma: no cover
87
- sys.exit(asyncio.run(_main(sys.argv[1:])))
74
+ s_cmd.exitmain(main)
@@ -1,12 +1,9 @@
1
1
  import os
2
- import sys
3
- import asyncio
4
- import argparse
5
2
 
6
3
  import synapse.common as s_common
7
4
  import synapse.telepath as s_telepath
8
5
 
9
- import synapse.lib.coro as s_coro
6
+ import synapse.lib.cmd as s_cmd
10
7
  import synapse.lib.output as s_output
11
8
  import synapse.lib.certdir as s_certdir
12
9
  import synapse.lib.msgpack as s_msgpack
@@ -22,9 +19,7 @@ Examples:
22
19
 
23
20
  async def main(argv, outp=s_output.stdout):
24
21
 
25
- pars = argparse.ArgumentParser(prog='synapse.tools.aha.enroll', description=descr,
26
- formatter_class=argparse.RawDescriptionHelpFormatter)
27
-
22
+ pars = s_cmd.Parser(prog='synapse.tools.aha.enroll', outp=outp, description=descr)
28
23
  pars.add_argument('onceurl', help='The one-time use AHA user enrollment URL.')
29
24
  opts = pars.parse_args(argv)
30
25
 
@@ -103,10 +98,6 @@ async def main(argv, outp=s_output.stdout):
103
98
 
104
99
  return 0
105
100
 
106
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
107
- ret = await main(argv, outp=outp)
108
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
109
- return ret
110
101
 
111
102
  if __name__ == '__main__': # pragma: no cover
112
- sys.exit(asyncio.run(_main(sys.argv[1:])))
103
+ s_cmd.exitmain(main)
synapse/tools/aha/list.py CHANGED
@@ -1,17 +1,10 @@
1
- import sys
2
- import asyncio
3
- import logging
4
-
5
1
  import synapse.exc as s_exc
6
- import synapse.common as s_common
7
2
  import synapse.telepath as s_telepath
8
3
 
9
- import synapse.lib.coro as s_coro
4
+ import synapse.lib.cmd as s_cmd
10
5
  import synapse.lib.output as s_output
11
6
  import synapse.lib.version as s_version
12
7
 
13
- logger = logging.getLogger(__name__)
14
-
15
8
  reqver = '>=2.11.0,<3.0.0'
16
9
 
17
10
  async def main(argv, outp=s_output.stdout):
@@ -74,11 +67,5 @@ async def main(argv, outp=s_output.stdout):
74
67
  outp.printf(mesg)
75
68
  return 0
76
69
 
77
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
78
- s_common.setlogging(logger, 'WARNING')
79
- ret = await main(argv, outp=outp)
80
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
81
- return ret
82
-
83
70
  if __name__ == '__main__': # pragma: no cover
84
- sys.exit(asyncio.run(_main(sys.argv[1:])))
71
+ s_cmd.exitmain(main)
@@ -1,14 +1,9 @@
1
- import sys
2
- import asyncio
3
- import argparse
4
-
5
1
  import synapse.exc as s_exc
6
2
  import synapse.common as s_common
7
3
  import synapse.telepath as s_telepath
8
4
 
9
- import synapse.lib.coro as s_coro
5
+ import synapse.lib.cmd as s_cmd
10
6
  import synapse.lib.output as s_output
11
- import synapse.lib.version as s_version
12
7
 
13
8
  descr = '''
14
9
  Query the Aha server for the service cluster status of mirrors.
@@ -87,8 +82,7 @@ def timeout_type(valu):
87
82
 
88
83
  async def main(argv, outp=s_output.stdout):
89
84
 
90
- pars = argparse.ArgumentParser(prog='synapse.tools.aha.mirror', description=descr,
91
- formatter_class=argparse.RawDescriptionHelpFormatter)
85
+ pars = s_cmd.Parser(prog='synapse.tools.aha.mirror', outp=outp, description=descr)
92
86
 
93
87
  pars.add_argument('--url', default='cell:///vertex/storage', help='The telepath URL to connect to the AHA service.')
94
88
  pars.add_argument('--timeout', type=timeout_type, default=10, help='The timeout in seconds for individual service API calls')
@@ -192,10 +186,5 @@ async def main(argv, outp=s_output.stdout):
192
186
  outp.printf(f'ERROR: {mesg}')
193
187
  return 1
194
188
 
195
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
196
- ret = await main(argv, outp=outp)
197
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
198
- return ret
199
-
200
189
  if __name__ == '__main__': # pragma: no cover
201
- sys.exit(asyncio.run(_main(sys.argv[1:])))
190
+ s_cmd.exitmain(main)
@@ -1,12 +1,8 @@
1
- import sys
2
- import asyncio
3
- import argparse
4
-
5
1
  import synapse.exc as s_exc
6
2
  import synapse.common as s_common
7
3
  import synapse.telepath as s_telepath
8
4
 
9
- import synapse.lib.coro as s_coro
5
+ import synapse.lib.cmd as s_cmd
10
6
  import synapse.lib.output as s_output
11
7
 
12
8
  descr = '''
@@ -24,8 +20,7 @@ Examples:
24
20
 
25
21
  async def main(argv, outp=s_output.stdout):
26
22
 
27
- pars = argparse.ArgumentParser(prog='synapse.tools.aha.provision.service', description=descr,
28
- formatter_class=argparse.RawDescriptionHelpFormatter)
23
+ pars = s_cmd.Parser(prog='synapse.tools.aha.provision.service', outp=outp, description=descr)
29
24
 
30
25
  pars.add_argument('--url', default='cell:///vertex/storage', help='The telepath URL to connect to the AHA service.')
31
26
  pars.add_argument('--user', help='Provision the new service with the username.')
@@ -79,10 +74,5 @@ async def main(argv, outp=s_output.stdout):
79
74
  outp.printf(f'ERROR: {mesg}')
80
75
  return 1
81
76
 
82
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
83
- ret = await main(argv, outp=outp)
84
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
85
- return ret
86
-
87
77
  if __name__ == '__main__': # pragma: no cover
88
- sys.exit(asyncio.run(_main(sys.argv[1:])))
78
+ s_cmd.exitmain(main)
@@ -1,11 +1,7 @@
1
- import sys
2
- import asyncio
3
- import argparse
4
-
5
1
  import synapse.exc as s_exc
6
2
  import synapse.telepath as s_telepath
7
3
 
8
- import synapse.lib.coro as s_coro
4
+ import synapse.lib.cmd as s_cmd
9
5
  import synapse.lib.output as s_output
10
6
 
11
7
  descr = '''
@@ -23,8 +19,7 @@ Examples:
23
19
 
24
20
  async def main(argv, outp=s_output.stdout):
25
21
 
26
- pars = argparse.ArgumentParser(prog='synapse.tools.aha.provision.user', description=descr,
27
- formatter_class=argparse.RawDescriptionHelpFormatter)
22
+ pars = s_cmd.Parser(prog='synapse.tools.aha.provision.user', outp=outp, description=descr)
28
23
 
29
24
  pars.add_argument('--url', default='cell:///vertex/storage', help='The telepath URL to connect to the AHA service.')
30
25
  pars.add_argument('--again', default=False, action='store_true', help='Generate a new enroll URL for an existing user.')
@@ -50,10 +45,6 @@ async def main(argv, outp=s_output.stdout):
50
45
  outp.printf(f'ERROR: {mesg}')
51
46
  return 1
52
47
 
53
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
54
- ret = await main(argv, outp=outp)
55
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
56
- return ret
57
48
 
58
49
  if __name__ == '__main__': # pragma: no cover
59
- sys.exit(asyncio.run(_main(sys.argv[1:])))
50
+ s_cmd.exitmain(main)
synapse/tools/apikey.py CHANGED
@@ -1,11 +1,7 @@
1
- import sys
2
- import asyncio
3
- import argparse
4
-
5
1
  import synapse.exc as s_exc
6
2
  import synapse.telepath as s_telepath
7
3
 
8
- import synapse.lib.coro as s_coro
4
+ import synapse.lib.cmd as s_cmd
9
5
  import synapse.lib.time as s_time
10
6
  import synapse.lib.output as s_output
11
7
 
@@ -33,7 +29,7 @@ def printkey(outp, info, apikey=None):
33
29
 
34
30
  async def main(argv, outp=s_output.stdout):
35
31
 
36
- pars = argparse.ArgumentParser(prog='apikey', description=descr)
32
+ pars = s_cmd.Parser(prog='synapse.tools.apikey', outp=outp, description=descr)
37
33
  pars.add_argument('--svcurl', default='cell:///vertex/storage', help='The telepath URL of the Synapse service.')
38
34
 
39
35
  subpars = pars.add_subparsers(dest='action', required=True)
@@ -90,11 +86,5 @@ async def main(argv, outp=s_output.stdout):
90
86
 
91
87
  return 0
92
88
 
93
-
94
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
95
- ret = await main(argv, outp=outp)
96
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
97
- return ret
98
-
99
89
  if __name__ == '__main__': # pragma: no cover
100
- sys.exit(asyncio.run(_main(sys.argv[1:])))
90
+ s_cmd.exitmain(main)
synapse/tools/autodoc.py CHANGED
@@ -1,8 +1,5 @@
1
- import sys
2
1
  import copy
3
- import asyncio
4
2
  import logging
5
- import argparse
6
3
  import collections
7
4
 
8
5
  from typing import List, Tuple, Dict, Union
@@ -12,7 +9,7 @@ import synapse.common as s_common
12
9
  import synapse.cortex as s_cortex
13
10
  import synapse.telepath as s_telepath
14
11
 
15
- import synapse.lib.coro as s_coro
12
+ import synapse.lib.cmd as s_cmd
16
13
  import synapse.lib.json as s_json
17
14
  import synapse.lib.storm as s_storm
18
15
  import synapse.lib.config as s_config
@@ -962,12 +959,8 @@ async def docStormTypes():
962
959
 
963
960
  return libspage, typespage
964
961
 
965
- async def main(argv, outp=None):
966
- if outp is None:
967
- outp = s_output.OutPut()
968
-
969
- pars = makeargparser()
970
-
962
+ async def main(argv, outp=s_output.stdout):
963
+ pars = getArgParser(outp)
971
964
  opts = pars.parse_args(argv)
972
965
 
973
966
  if opts.doc_model:
@@ -1018,9 +1011,9 @@ async def main(argv, outp=None):
1018
1011
 
1019
1012
  return 0
1020
1013
 
1021
- def makeargparser():
1014
+ def getArgParser(outp):
1022
1015
  desc = 'Command line tool to generate various synapse documentation.'
1023
- pars = argparse.ArgumentParser('synapse.tools.autodoc', description=desc)
1016
+ pars = s_cmd.Parser(prog='synapse.tools.autodoc', outp=outp, description=desc)
1024
1017
 
1025
1018
  pars.add_argument('--cortex', '-c', default=None,
1026
1019
  help='Cortex URL for model inspection')
@@ -1042,11 +1035,6 @@ def makeargparser():
1042
1035
 
1043
1036
  return pars
1044
1037
 
1045
- async def _main(argv, outp=None): # pragma: no cover
1046
- s_common.setlogging(logger, 'DEBUG')
1047
- ret = await main(argv, outp=outp)
1048
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
1049
- return ret
1050
-
1051
1038
  if __name__ == '__main__': # pragma: no cover
1052
- asyncio.run(_main(sys.argv[1:]))
1039
+ s_common.setlogging(logger, 'DEBUG')
1040
+ s_cmd.exitmain(main)
@@ -1,5 +1,3 @@
1
- import sys
2
- import asyncio
3
1
  import logging
4
2
 
5
3
  import synapse.common as s_common
@@ -8,7 +6,6 @@ import synapse.telepath as s_telepath
8
6
  import synapse.exc as s_exc
9
7
  import synapse.lib.cmd as s_cmd
10
8
  import synapse.lib.base as s_base
11
- import synapse.lib.coro as s_coro
12
9
  import synapse.lib.output as s_output
13
10
 
14
11
  logger = logging.getLogger(__name__)
@@ -43,10 +40,5 @@ async def main(argv, outp=s_output.stdout):
43
40
  await fd.save()
44
41
  return 0
45
42
 
46
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
47
- ret = await main(argv, outp=outp)
48
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
49
- return ret
50
-
51
43
  if __name__ == '__main__': # pragma: no cover
52
- sys.exit(asyncio.run(_main(sys.argv[1:])))
44
+ s_cmd.exitmain(main)
synapse/tools/cellauth.py CHANGED
@@ -1,4 +1,3 @@
1
- import sys
2
1
  import asyncio
3
2
  import logging
4
3
  import functools
@@ -9,7 +8,6 @@ import synapse.common as s_common
9
8
  import synapse.telepath as s_telepath
10
9
 
11
10
  import synapse.lib.cmd as s_cmd
12
- import synapse.lib.coro as s_coro
13
11
  import synapse.lib.output as s_output
14
12
  import synapse.lib.version as s_version
15
13
 
@@ -18,7 +16,7 @@ logger = logging.getLogger(__name__)
18
16
  desc = '''
19
17
  Manage permissions of users, roles, and objects in a remote cell.
20
18
  '''
21
- outp = None
19
+ outp = None # type: s_output.OutPut
22
20
 
23
21
  min_authgate_vers = (0, 1, 33)
24
22
  reqver = '>=0.2.0,<3.0.0'
@@ -266,9 +264,7 @@ async def handleList(opts):
266
264
  else:
267
265
  return 0
268
266
 
269
- async def main(argv, outprint=None):
270
- if outprint is None: # pragma: no cover
271
- outprint = s_output.OutPut()
267
+ async def main(argv, outprint=s_output.stdout):
272
268
  global outp
273
269
  outp = outprint
274
270
 
@@ -289,7 +285,7 @@ async def main(argv, outprint=None):
289
285
 
290
286
  def makeargparser():
291
287
  global outp
292
- pars = s_cmd.Parser('synapse.tools.cellauth', outp=outp, description=desc)
288
+ pars = s_cmd.Parser(prog='synapse.tools.cellauth', outp=outp, description=desc)
293
289
 
294
290
  pars.add_argument('--debug', action='store_true', help='Show debug traceback on error.')
295
291
  pars.add_argument('cellurl', help='The telepath URL to connect to a cell.')
@@ -337,11 +333,6 @@ def makeargparser():
337
333
  pars_mod.set_defaults(func=handleModify)
338
334
  return pars
339
335
 
340
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
341
- s_common.setlogging(logger, 'DEBUG')
342
- ret = await main(argv, outprint=outp)
343
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
344
- return ret
345
-
346
336
  if __name__ == '__main__': # pragma: no cover
347
- sys.exit(asyncio.run(_main(sys.argv[1:])))
337
+ s_common.setlogging(logger, 'DEBUG')
338
+ s_cmd.exitmain(main)