synapse 2.215.0__py311-none-any.whl → 2.217.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 (64) 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/stormtypes.py +6 -0
  9. synapse/lib/types.py +3 -0
  10. synapse/lib/version.py +2 -2
  11. synapse/lib/view.py +16 -7
  12. synapse/models/inet.py +24 -4
  13. synapse/models/orgs.py +4 -2
  14. synapse/models/risk.py +2 -0
  15. synapse/tests/test_cortex.py +262 -0
  16. synapse/tests/test_lib_auth.py +2 -0
  17. synapse/tests/test_lib_storm.py +52 -1
  18. synapse/tests/test_lib_stormsvc.py +2 -2
  19. synapse/tests/test_lib_types.py +6 -0
  20. synapse/tests/test_model_inet.py +23 -0
  21. synapse/tests/test_tools_cryo_cat.py +3 -8
  22. synapse/tests/test_tools_storm.py +3 -2
  23. synapse/tests/utils.py +2 -0
  24. synapse/tools/aha/clone.py +3 -13
  25. synapse/tools/aha/easycert.py +5 -18
  26. synapse/tools/aha/enroll.py +3 -12
  27. synapse/tools/aha/list.py +2 -15
  28. synapse/tools/aha/mirror.py +3 -14
  29. synapse/tools/aha/provision/service.py +3 -13
  30. synapse/tools/aha/provision/user.py +3 -12
  31. synapse/tools/apikey.py +3 -13
  32. synapse/tools/autodoc.py +7 -19
  33. synapse/tools/axon2axon.py +1 -9
  34. synapse/tools/cellauth.py +5 -14
  35. synapse/tools/changelog.py +12 -16
  36. synapse/tools/cmdr.py +2 -6
  37. synapse/tools/cryo/cat.py +5 -15
  38. synapse/tools/cryo/list.py +3 -10
  39. synapse/tools/csvtool.py +40 -49
  40. synapse/tools/demote.py +1 -6
  41. synapse/tools/docker/validate.py +0 -1
  42. synapse/tools/easycert.py +3 -8
  43. synapse/tools/feed.py +7 -18
  44. synapse/tools/genpkg.py +3 -12
  45. synapse/tools/guid.py +4 -6
  46. synapse/tools/healthcheck.py +4 -11
  47. synapse/tools/json2mpk.py +1 -5
  48. synapse/tools/livebackup.py +3 -13
  49. synapse/tools/modrole.py +3 -12
  50. synapse/tools/moduser.py +3 -12
  51. synapse/tools/pkgs/gendocs.py +1 -1
  52. synapse/tools/promote.py +3 -13
  53. synapse/tools/pullfile.py +6 -18
  54. synapse/tools/pushfile.py +6 -18
  55. synapse/tools/reload.py +5 -14
  56. synapse/tools/rstorm.py +4 -12
  57. synapse/tools/shutdown.py +1 -2
  58. synapse/tools/snapshot.py +3 -14
  59. synapse/tools/storm.py +4 -12
  60. {synapse-2.215.0.dist-info → synapse-2.217.0.dist-info}/METADATA +1 -1
  61. {synapse-2.215.0.dist-info → synapse-2.217.0.dist-info}/RECORD +64 -64
  62. {synapse-2.215.0.dist-info → synapse-2.217.0.dist-info}/WHEEL +0 -0
  63. {synapse-2.215.0.dist-info → synapse-2.217.0.dist-info}/licenses/LICENSE +0 -0
  64. {synapse-2.215.0.dist-info → synapse-2.217.0.dist-info}/top_level.txt +0 -0
synapse/tools/genpkg.py CHANGED
@@ -1,10 +1,7 @@
1
1
  import io
2
2
  import os
3
- import sys
4
3
  import base64
5
- import asyncio
6
4
  import logging
7
- import argparse
8
5
 
9
6
  import regex
10
7
 
@@ -12,7 +9,7 @@ import synapse.exc as s_exc
12
9
  import synapse.common as s_common
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.output as s_output
18
15
  import synapse.lib.certdir as s_certdir
@@ -238,12 +235,11 @@ def loadPkgProto(path, opticdir=None, no_docs=False, readonly=False):
238
235
  return pkgdef
239
236
 
240
237
 
241
- prog = 'synapse.tools.genpkg'
242
238
  desc = 'A tool for generating/pushing storm packages from YAML prototypes.'
243
239
 
244
240
  async def main(argv, outp=s_output.stdout):
245
241
 
246
- pars = argparse.ArgumentParser()
242
+ pars = s_cmd.Parser(prog='synapse.tools.genpkg', outp=outp, description=desc)
247
243
  pars.add_argument('--push', metavar='<url>', help='A telepath URL of a Cortex or PkgRepo.')
248
244
  pars.add_argument('--push-verify', default=False, action='store_true',
249
245
  help='Tell the Cortex to verify the package signature.')
@@ -306,10 +302,5 @@ async def main(argv, outp=s_output.stdout):
306
302
 
307
303
  return 0
308
304
 
309
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
310
- ret = await main(argv, outp=outp)
311
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
312
- return ret
313
-
314
305
  if __name__ == '__main__': # pragma: no cover
315
- sys.exit(asyncio.run(_main(sys.argv[1:])))
306
+ s_cmd.exitmain(main)
synapse/tools/guid.py CHANGED
@@ -1,12 +1,10 @@
1
+ import sys
2
+
1
3
  import synapse.common as s_common
2
4
  import synapse.lib.output as s_output
3
5
 
4
- def main(argv, outp=None):
5
- if outp is None: # pragma: no cover
6
- outp = s_output.OutPut()
7
-
6
+ def main(argv, outp=s_output.stdout):
8
7
  outp.printf(s_common.guid())
9
8
 
10
9
  if __name__ == '__main__': # pragma: no cover
11
- import sys
12
- sys.exit(main(sys.argv))
10
+ sys.exit(main(sys.argv[1:]))
@@ -1,4 +1,3 @@
1
- import sys
2
1
  import socket
3
2
  import asyncio
4
3
 
@@ -7,7 +6,6 @@ import synapse.common as s_common
7
6
  import synapse.telepath as s_telepath
8
7
 
9
8
  import synapse.lib.cmd as s_cmd
10
- import synapse.lib.coro as s_coro
11
9
  import synapse.lib.json as s_json
12
10
  import synapse.lib.output as s_output
13
11
  import synapse.lib.health as s_health
@@ -30,7 +28,7 @@ def format_component(e, mesg: str) -> dict:
30
28
  return d
31
29
 
32
30
  async def main(argv, outp=s_output.stdout):
33
- pars = makeargparser()
31
+ pars = getArgParser(outp)
34
32
  try:
35
33
  opts = pars.parse_args(argv)
36
34
  except s_exc.ParserExit as e: # pragma: no cover
@@ -96,21 +94,16 @@ async def main(argv, outp=s_output.stdout):
96
94
  outp.printf(serialize(ret))
97
95
  return retval
98
96
 
99
- def makeargparser():
97
+ def getArgParser(outp):
100
98
  desc = '''
101
99
  synapse healthcheck tool
102
100
  '''
103
- pars = s_cmd.Parser('healthcheck', description=desc)
101
+ pars = s_cmd.Parser(prog='synapse.tools.healthcheck', outp=outp, description=desc)
104
102
  pars.add_argument('--cell', '-c', required=True, type=str,
105
103
  help='Telepath path to the cell to check.')
106
104
  pars.add_argument('--timeout', '-t', default=10, type=float,
107
105
  help='Connection and call timeout')
108
106
  return pars
109
107
 
110
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
111
- ret = await main(argv, outp=outp)
112
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
113
- return ret
114
-
115
108
  if __name__ == '__main__': # pragma: no cover
116
- sys.exit(asyncio.run(_main(sys.argv[1:])))
109
+ s_cmd.exitmain(main)
synapse/tools/json2mpk.py CHANGED
@@ -12,11 +12,7 @@ def getArgParser():
12
12
  pars.add_argument('paths', nargs='+', help='json files or directories full of json files')
13
13
  return pars
14
14
 
15
- def main(argv, outp=None):
16
-
17
- if outp is None: # pragma: no cover
18
- outp = s_output.OutPut()
19
-
15
+ def main(argv, outp=s_output.stdout):
20
16
  pars = getArgParser()
21
17
  opts = pars.parse_args(argv)
22
18
 
@@ -1,10 +1,6 @@
1
- import sys
2
- import asyncio
3
- import argparse
4
-
5
1
  import synapse.telepath as s_telepath
6
2
 
7
- import synapse.lib.coro as s_coro
3
+ import synapse.lib.cmd as s_cmd
8
4
  import synapse.lib.output as s_output
9
5
 
10
6
  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.livebackup', description=descr,
23
- formatter_class=argparse.RawDescriptionHelpFormatter)
18
+ pars = s_cmd.Parser(prog='synapse.tools.livebackup', outp=outp, description=descr)
24
19
 
25
20
  pars.add_argument('--url', default='cell:///vertex/storage', help='The telepath URL of the Synapse service.')
26
21
  pars.add_argument('--name', default=None, help='Specify a name for the backup. Defaults to an automatically generated timestamp.')
@@ -35,10 +30,5 @@ async def main(argv, outp=s_output.stdout):
35
30
  outp.printf(f'...backup created: {name}')
36
31
  return 0
37
32
 
38
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
39
- ret = await main(argv, outp=outp)
40
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
41
- return ret
42
-
43
33
  if __name__ == '__main__': # pragma: no cover
44
- sys.exit(asyncio.run(_main(sys.argv[1:])))
34
+ s_cmd.exitmain(main)
synapse/tools/modrole.py CHANGED
@@ -1,11 +1,7 @@
1
- import sys
2
- import asyncio
3
- import argparse
4
-
5
1
  import synapse.common as s_common
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 = '''
@@ -30,7 +26,7 @@ def printrole(role, outp):
30
26
 
31
27
  async def main(argv, outp=s_output.stdout):
32
28
 
33
- pars = argparse.ArgumentParser(prog='modrole', description=descr)
29
+ pars = s_cmd.Parser(prog='synapse.tools.modrole', outp=outp, description=descr)
34
30
  pars.add_argument('--svcurl', default='cell:///vertex/storage', help='The telepath URL of the Synapse service.')
35
31
  pars.add_argument('--add', default=False, action='store_true', help='Add the role if they do not already exist.')
36
32
  pars.add_argument('--del', dest='delete', default=False, action='store_true', help='Delete the role if it exists.')
@@ -116,10 +112,5 @@ async def main(argv, outp=s_output.stdout):
116
112
  await cell.addRoleRule(roleiden, (False, perm), indx=0, gateiden=opts.gate)
117
113
  return 0
118
114
 
119
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
120
- ret = await main(argv, outp=outp)
121
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
122
- return ret
123
-
124
115
  if __name__ == '__main__': # pragma: no cover
125
- sys.exit(asyncio.run(_main(sys.argv[1:])))
116
+ s_cmd.exitmain(main)
synapse/tools/moduser.py CHANGED
@@ -1,11 +1,7 @@
1
- import sys
2
- import asyncio
3
- import argparse
4
-
5
1
  import synapse.common as s_common
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 = '''
@@ -41,7 +37,7 @@ def printuser(user, outp):
41
37
 
42
38
  async def main(argv, outp=s_output.stdout):
43
39
 
44
- pars = argparse.ArgumentParser(prog='moduser', description=descr)
40
+ pars = s_cmd.Parser(prog='synapse.tools.moduser', outp=outp, description=descr)
45
41
  pars.add_argument('--svcurl', default='cell:///vertex/storage', help='The telepath URL of the Synapse service.')
46
42
  pars.add_argument('--add', default=False, action='store_true', help='Add the user if they do not already exist.')
47
43
  pars.add_argument('--del', dest='delete', default=False, action='store_true', help='Delete the user if they exist.')
@@ -187,10 +183,5 @@ async def main(argv, outp=s_output.stdout):
187
183
  await cell.addUserRule(useriden, (False, perm), indx=0, gateiden=opts.gate)
188
184
  return 0
189
185
 
190
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
191
- ret = await main(argv, outp=outp)
192
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
193
- return ret
194
-
195
186
  if __name__ == '__main__': # pragma: no cover
196
- sys.exit(asyncio.run(_main(sys.argv[1:])))
187
+ s_cmd.exitmain(main)
@@ -28,7 +28,7 @@ def hasPandoc():
28
28
  return True
29
29
  return False
30
30
 
31
- async def buildPkgDocs(outp: s_output.OutPut, pkgpath: str, rst_only: bool =False):
31
+ async def buildPkgDocs(outp, pkgpath: str, rst_only: bool =False):
32
32
 
33
33
  logger.info(f'Building pkg for {pkgpath}')
34
34
  pkgdef = s_common.yamlload(pkgpath)
synapse/tools/promote.py CHANGED
@@ -1,12 +1,8 @@
1
- import sys
2
- import asyncio
3
- import argparse
4
-
5
1
  import synapse.exc as s_exc
6
2
 
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
  import synapse.lib.urlhelp as s_urlhelp
12
8
 
@@ -19,8 +15,7 @@ Example (being run from a Cortex mirror docker container):
19
15
 
20
16
  async def main(argv, outp=s_output.stdout):
21
17
 
22
- pars = argparse.ArgumentParser(prog='synapse.tools.promote', description=descr,
23
- formatter_class=argparse.RawDescriptionHelpFormatter)
18
+ pars = s_cmd.Parser(prog='synapse.tools.promote', outp=outp, description=descr)
24
19
 
25
20
  pars.add_argument('--svcurl', default='cell:///vertex/storage',
26
21
  help='The telepath URL of the Synapse service.')
@@ -49,10 +44,5 @@ async def main(argv, outp=s_output.stdout):
49
44
 
50
45
  return 0
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)
synapse/tools/pullfile.py CHANGED
@@ -1,23 +1,16 @@
1
- import sys
2
- import asyncio
3
1
  import pathlib
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
 
12
9
 
13
- async def main(argv, outp=None):
14
-
15
- pars = setup()
10
+ async def main(argv, outp=s_output.stdout):
11
+ pars = getArgParser(outp)
16
12
  opts = pars.parse_args(argv)
17
13
 
18
- if outp is None: # pragma: no cover
19
- outp = s_output.OutPut()
20
-
21
14
  if opts.output is None:
22
15
  opts.output = '.'
23
16
 
@@ -55,9 +48,9 @@ async def main(argv, outp=None):
55
48
  return 0
56
49
 
57
50
 
58
- def setup():
51
+ def getArgParser(outp):
59
52
  desc = 'Fetches file from the given axon'
60
- pars = argparse.ArgumentParser('synapse.tools.pullfile', description=desc)
53
+ pars = s_cmd.Parser(prog='synapse.tools.pullfile', outp=outp, description=desc)
61
54
  pars.add_argument('-a', '--axon', type=str, dest='axon', required=True,
62
55
  help='URL to the axon blob store')
63
56
  pars.add_argument('-o', '--output', type=str, dest='output',
@@ -67,10 +60,5 @@ def setup():
67
60
 
68
61
  return pars
69
62
 
70
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
71
- ret = await main(argv, outp=outp)
72
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
73
- return ret
74
-
75
63
  if __name__ == '__main__': # pragma: no cover
76
- sys.exit(asyncio.run(_main(sys.argv[1:])))
64
+ s_cmd.exitmain(main)
synapse/tools/pushfile.py CHANGED
@@ -1,27 +1,20 @@
1
1
  import os
2
- import sys
3
2
  import glob
4
- import asyncio
5
3
  import logging
6
- import argparse
7
4
 
8
5
  import synapse.exc as s_exc
9
6
  import synapse.common as s_common
10
7
  import synapse.telepath as s_telepath
11
8
 
12
- import synapse.lib.coro as s_coro
9
+ import synapse.lib.cmd as s_cmd
13
10
  import synapse.lib.output as s_output
14
11
  import synapse.lib.hashset as s_hashset
15
12
 
16
13
  logger = logging.getLogger(__name__)
17
14
 
18
15
 
19
- async def main(argv, outp=None):
20
-
21
- if outp is None: # pragma: no cover
22
- outp = s_output.OutPut()
23
-
24
- pars = makeargparser()
16
+ async def main(argv, outp=s_output.stdout):
17
+ pars = getArgParser(outp)
25
18
  opts = pars.parse_args(argv)
26
19
 
27
20
  async with s_telepath.withTeleEnv():
@@ -111,10 +104,10 @@ async def main(argv, outp=None):
111
104
 
112
105
  return 0
113
106
 
114
- def makeargparser():
107
+ def getArgParser(outp):
115
108
  desc = 'Command line tool for uploading files to an Axon and making ' \
116
109
  'file:bytes in a Cortex.'
117
- pars = argparse.ArgumentParser('synapse.tools.pushfile', description=desc)
110
+ pars = s_cmd.Parser(prog='synapse.tools.pushfile', outp=outp, description=desc)
118
111
  pars.add_argument('-a', '--axon', required=True, type=str, dest='axon',
119
112
  help='URL for a target Axon to store files at.')
120
113
  pars.add_argument('-c', '--cortex', default=None, type=str, dest='cortex',
@@ -125,10 +118,5 @@ def makeargparser():
125
118
  pars.add_argument('-t', '--tags', help='comma separated list of tags to add to the nodes')
126
119
  return pars
127
120
 
128
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
129
- ret = await main(argv, outp=outp)
130
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
131
- return ret
132
-
133
121
  if __name__ == '__main__': # pragma: no cover
134
- sys.exit(asyncio.run(_main(sys.argv[1:])))
122
+ s_cmd.exitmain(main)
synapse/tools/reload.py CHANGED
@@ -1,10 +1,6 @@
1
- import sys
2
- import asyncio
3
- import argparse
4
-
5
1
  import synapse.telepath as s_telepath
6
2
 
7
- import synapse.lib.coro as s_coro
3
+ import synapse.lib.cmd as s_cmd
8
4
  import synapse.lib.output as s_output
9
5
  import synapse.lib.urlhelp as s_urlhelp
10
6
 
@@ -14,7 +10,7 @@ List or execute reload subsystems on a Synapse service.
14
10
 
15
11
  async def main(argv, outp=s_output.stdout):
16
12
 
17
- pars = getArgParser()
13
+ pars = getArgParser(outp)
18
14
  opts = pars.parse_args(argv)
19
15
 
20
16
  async with s_telepath.withTeleEnv():
@@ -55,8 +51,8 @@ async def main(argv, outp=s_output.stdout):
55
51
  outp.printf(f'{name.ljust(40)}{result.ljust(10)}{mesg}')
56
52
  return 0
57
53
 
58
- def getArgParser():
59
- pars = argparse.ArgumentParser(prog='reload', description=descr)
54
+ def getArgParser(outp):
55
+ pars = s_cmd.Parser(prog='synapse.tools.reload', outp=outp, description=descr)
60
56
  pars.add_argument('--svcurl', default='cell:///vertex/storage', help='The telepath URL of the Synapse service.')
61
57
 
62
58
  subpars = pars.add_subparsers(required=True,
@@ -68,10 +64,5 @@ def getArgParser():
68
64
 
69
65
  return pars
70
66
 
71
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
72
- ret = await main(argv, outp=outp)
73
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
74
- return ret
75
-
76
67
  if __name__ == '__main__': # pragma: no cover
77
- sys.exit(asyncio.run(_main(sys.argv[1:])))
68
+ s_cmd.exitmain(main)
synapse/tools/rstorm.py CHANGED
@@ -1,11 +1,8 @@
1
- import sys
2
- import asyncio
3
1
  import logging
4
- import argparse
5
2
 
6
3
  import synapse.common as s_common
7
4
 
8
- import synapse.lib.coro as s_coro
5
+ import synapse.lib.cmd as s_cmd
9
6
  import synapse.lib.output as s_output
10
7
  import synapse.lib.rstorm as s_rstorm
11
8
 
@@ -16,7 +13,7 @@ descr = 'An RST pre-processor that allows you to embed storm directives.'
16
13
 
17
14
  async def main(argv, outp=s_output.stdout):
18
15
 
19
- pars = argparse.ArgumentParser(prog=prog, description=descr)
16
+ pars = s_cmd.Parser(prog=prog, outp=outp, description=descr)
20
17
  pars.add_argument('rstfile', help='Input RST file with storm directives.')
21
18
  pars.add_argument('--save', help='Output file to save (default: stdout)')
22
19
 
@@ -33,11 +30,6 @@ async def main(argv, outp=s_output.stdout):
33
30
  for line in lines:
34
31
  outp.printf(line, addnl=False)
35
32
 
36
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
33
+ if __name__ == '__main__': # pragma: no cover
37
34
  s_common.setlogging(logger)
38
- ret = await main(argv, outp=outp)
39
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
40
- return ret
41
-
42
- if __name__ == '__main__':
43
- sys.exit(asyncio.run(_main(sys.argv[1:])))
35
+ s_cmd.exitmain(main)
synapse/tools/shutdown.py CHANGED
@@ -1,5 +1,4 @@
1
1
  import synapse.exc as s_exc
2
- import synapse.common as s_common
3
2
  import synapse.telepath as s_telepath
4
3
 
5
4
  import synapse.lib.cmd as s_cmd
@@ -22,7 +21,7 @@ NOTE: This will also demote the service if run on a leader with mirrors.
22
21
 
23
22
  async def main(argv, outp=s_output.stdout):
24
23
 
25
- pars = s_cmd.Parser('synapse.tools.shutdown', outp=outp, description=desc)
24
+ pars = s_cmd.Parser(prog='synapse.tools.shutdown', outp=outp, description=desc)
26
25
 
27
26
  pars.add_argument('--url', default='cell:///vertex/storage',
28
27
  help='The telepath URL to connect to the service.')
synapse/tools/snapshot.py CHANGED
@@ -1,12 +1,8 @@
1
- import sys
2
- import asyncio
3
1
  import logging
4
- import argparse
5
-
6
2
  import synapse.exc as s_exc
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
  logger = logging.getLogger(__name__)
@@ -29,9 +25,7 @@ The tool will set the process exit code to 0 on success.
29
25
 
30
26
  async def main(argv, outp=s_output.stdout):
31
27
 
32
- pars = argparse.ArgumentParser('synapse.tools.snapshot',
33
- description=desc,
34
- formatter_class=argparse.RawDescriptionHelpFormatter)
28
+ pars = s_cmd.Parser(prog='synapse.tools.snapshot', outp=outp, description=desc)
35
29
 
36
30
  subs = pars.add_subparsers(required=True, title='commands', dest='cmd')
37
31
 
@@ -66,10 +60,5 @@ async def main(argv, outp=s_output.stdout):
66
60
  outp.printf(f'ERROR {e.__class__.__name__}: {mesg}')
67
61
  return 1
68
62
 
69
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
70
- ret = await main(argv, outp=outp)
71
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
72
- return ret
73
-
74
63
  if __name__ == '__main__': # pragma: no cover
75
- sys.exit(asyncio.run(_main(sys.argv[1:])))
64
+ s_cmd.exitmain(main)
synapse/tools/storm.py CHANGED
@@ -1,9 +1,7 @@
1
1
  import os
2
- import sys
3
2
  import copy
4
3
  import asyncio
5
4
  import logging
6
- import argparse
7
5
 
8
6
  import regex
9
7
  import prompt_toolkit
@@ -14,7 +12,6 @@ import synapse.telepath as s_telepath
14
12
 
15
13
  import synapse.lib.cli as s_cli
16
14
  import synapse.lib.cmd as s_cmd
17
- import synapse.lib.coro as s_coro
18
15
  import synapse.lib.node as s_node
19
16
  import synapse.lib.output as s_output
20
17
  import synapse.lib.parser as s_parser
@@ -613,8 +610,8 @@ class StormCli(s_cli.Cli):
613
610
 
614
611
  return ret
615
612
 
616
- def getArgParser():
617
- pars = argparse.ArgumentParser(prog='synapse.tools.storm')
613
+ def getArgParser(outp):
614
+ pars = s_cmd.Parser(prog='synapse.tools.storm', outp=outp)
618
615
  pars.add_argument('cortex', help='A telepath URL for the Cortex.')
619
616
  pars.add_argument('onecmd', nargs='?', help='A single storm command to run and exit.')
620
617
  pars.add_argument('--view', default=None, help='The view iden to work in.')
@@ -623,7 +620,7 @@ def getArgParser():
623
620
 
624
621
  async def main(argv, outp=s_output.stdout):
625
622
 
626
- pars = getArgParser()
623
+ pars = getArgParser(outp=outp)
627
624
  opts = pars.parse_args(argv)
628
625
 
629
626
  async with s_telepath.withTeleEnv():
@@ -649,10 +646,5 @@ async def main(argv, outp=s_output.stdout):
649
646
  await cli.addSignalHandlers()
650
647
  await cli.runCmdLoop()
651
648
 
652
- async def _main(argv, outp=s_output.stdout): # pragma: no cover
653
- ret = await main(argv, outp=outp)
654
- await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
655
- return ret
656
-
657
649
  if __name__ == '__main__': # pragma: no cover
658
- sys.exit(asyncio.run(_main(sys.argv[1:])))
650
+ s_cmd.exitmain(main)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse
3
- Version: 2.215.0
3
+ Version: 2.217.0
4
4
  Summary: Synapse Intelligence Analysis Framework
5
5
  Author-email: The Vertex Project LLC <root@vertex.link>
6
6
  License-Expression: Apache-2.0