synapse 2.176.0__py311-none-any.whl → 2.178.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 (95) hide show
  1. synapse/axon.py +24 -9
  2. synapse/cortex.py +337 -172
  3. synapse/cryotank.py +46 -37
  4. synapse/datamodel.py +17 -4
  5. synapse/exc.py +19 -0
  6. synapse/lib/agenda.py +7 -13
  7. synapse/lib/aha.py +361 -88
  8. synapse/lib/auth.py +1520 -0
  9. synapse/lib/base.py +27 -9
  10. synapse/lib/cell.py +422 -163
  11. synapse/lib/config.py +15 -11
  12. synapse/lib/coro.py +13 -0
  13. synapse/lib/grammar.py +5 -0
  14. synapse/lib/hive.py +24 -3
  15. synapse/lib/hiveauth.py +6 -32
  16. synapse/lib/layer.py +7 -9
  17. synapse/lib/link.py +22 -18
  18. synapse/lib/lmdbslab.py +152 -3
  19. synapse/lib/modelrev.py +1 -1
  20. synapse/lib/nexus.py +24 -12
  21. synapse/lib/schemas.py +136 -0
  22. synapse/lib/storm.py +61 -29
  23. synapse/lib/stormlib/aha.py +1 -1
  24. synapse/lib/stormlib/auth.py +185 -10
  25. synapse/lib/stormlib/cortex.py +16 -5
  26. synapse/lib/stormlib/gen.py +80 -0
  27. synapse/lib/stormlib/imap.py +6 -2
  28. synapse/lib/stormlib/model.py +55 -0
  29. synapse/lib/stormlib/modelext.py +60 -0
  30. synapse/lib/stormlib/smtp.py +12 -2
  31. synapse/lib/stormlib/tabular.py +212 -0
  32. synapse/lib/stormtypes.py +14 -1
  33. synapse/lib/trigger.py +1 -1
  34. synapse/lib/version.py +2 -2
  35. synapse/lib/view.py +55 -28
  36. synapse/models/base.py +7 -0
  37. synapse/models/biz.py +4 -0
  38. synapse/models/files.py +8 -1
  39. synapse/models/inet.py +8 -0
  40. synapse/telepath.py +32 -17
  41. synapse/tests/files/aha/certs/cas/synapse.crt +28 -0
  42. synapse/tests/files/aha/certs/cas/synapse.key +51 -0
  43. synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt +30 -0
  44. synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key +51 -0
  45. synapse/tests/files/aha/certs/users/root@synapse.crt +29 -0
  46. synapse/tests/files/aha/certs/users/root@synapse.key +51 -0
  47. synapse/tests/files/changelog/model_2.176.0_16ee721a6b7221344eaf946c3ab4602dda546b1a.yaml.gz +0 -0
  48. synapse/tests/files/changelog/model_2.176.0_2a25c58bbd344716cd7cbc3f4304d8925b0f4ef2.yaml.gz +0 -0
  49. synapse/tests/files/rstorm/testsvc.py +1 -1
  50. synapse/tests/test_axon.py +8 -5
  51. synapse/tests/test_cortex.py +149 -141
  52. synapse/tests/test_cryotank.py +4 -4
  53. synapse/tests/test_datamodel.py +7 -0
  54. synapse/tests/test_lib_agenda.py +10 -3
  55. synapse/tests/test_lib_aha.py +336 -490
  56. synapse/tests/{test_lib_hiveauth.py → test_lib_auth.py} +314 -11
  57. synapse/tests/test_lib_base.py +20 -0
  58. synapse/tests/test_lib_cell.py +210 -30
  59. synapse/tests/test_lib_config.py +4 -3
  60. synapse/tests/test_lib_httpapi.py +18 -14
  61. synapse/tests/test_lib_layer.py +33 -33
  62. synapse/tests/test_lib_link.py +42 -1
  63. synapse/tests/test_lib_lmdbslab.py +68 -0
  64. synapse/tests/test_lib_nexus.py +12 -4
  65. synapse/tests/test_lib_node.py +0 -7
  66. synapse/tests/test_lib_storm.py +45 -0
  67. synapse/tests/test_lib_stormlib_aha.py +35 -36
  68. synapse/tests/test_lib_stormlib_auth.py +21 -0
  69. synapse/tests/test_lib_stormlib_cell.py +4 -15
  70. synapse/tests/test_lib_stormlib_cortex.py +12 -12
  71. synapse/tests/test_lib_stormlib_gen.py +99 -0
  72. synapse/tests/test_lib_stormlib_imap.py +14 -3
  73. synapse/tests/test_lib_stormlib_model.py +108 -0
  74. synapse/tests/test_lib_stormlib_modelext.py +64 -0
  75. synapse/tests/test_lib_stormlib_smtp.py +51 -0
  76. synapse/tests/test_lib_stormlib_tabular.py +226 -0
  77. synapse/tests/test_lib_stormsvc.py +4 -1
  78. synapse/tests/test_lib_stormtypes.py +10 -0
  79. synapse/tests/test_model_base.py +3 -0
  80. synapse/tests/test_model_biz.py +3 -0
  81. synapse/tests/test_model_files.py +12 -2
  82. synapse/tests/test_model_inet.py +24 -0
  83. synapse/tests/test_tools_aha.py +78 -101
  84. synapse/tests/test_tools_changelog.py +196 -0
  85. synapse/tests/test_tools_healthcheck.py +4 -3
  86. synapse/tests/utils.py +87 -121
  87. synapse/tools/aha/clone.py +50 -0
  88. synapse/tools/aha/enroll.py +2 -1
  89. synapse/tools/backup.py +2 -2
  90. synapse/tools/changelog.py +776 -15
  91. {synapse-2.176.0.dist-info → synapse-2.178.0.dist-info}/METADATA +48 -48
  92. {synapse-2.176.0.dist-info → synapse-2.178.0.dist-info}/RECORD +95 -82
  93. {synapse-2.176.0.dist-info → synapse-2.178.0.dist-info}/WHEEL +1 -1
  94. {synapse-2.176.0.dist-info → synapse-2.178.0.dist-info}/LICENSE +0 -0
  95. {synapse-2.176.0.dist-info → synapse-2.178.0.dist-info}/top_level.txt +0 -0
synapse/axon.py CHANGED
@@ -792,10 +792,15 @@ class Axon(s_cell.Cell):
792
792
  self.axonhist = s_lmdbslab.Hist(self.axonslab, 'history')
793
793
  self.axonseqn = s_slabseqn.SlabSeqn(self.axonslab, 'axonseqn')
794
794
 
795
- node = await self.hive.open(('axon', 'metrics'))
796
- self.axonmetrics = await node.dict()
797
- self.axonmetrics.setdefault('size:bytes', 0)
798
- self.axonmetrics.setdefault('file:count', 0)
795
+ self.axonmetrics = await self.axonslab.getHotCount('metrics')
796
+
797
+ if self.inaugural:
798
+ self.axonmetrics.set('size:bytes', 0)
799
+ self.axonmetrics.set('file:count', 0)
800
+
801
+ await self._bumpCellVers('axon:metrics', (
802
+ (1, self._migrateAxonMetrics),
803
+ ), nexs=False)
799
804
 
800
805
  self.maxbytes = self.conf.get('max:bytes')
801
806
  self.maxcount = self.conf.get('max:count')
@@ -856,6 +861,16 @@ class Axon(s_cell.Cell):
856
861
  async def _axonHealth(self, health):
857
862
  health.update('axon', 'nominal', '', data=await self.metrics())
858
863
 
864
+ async def _migrateAxonMetrics(self):
865
+ logger.warning('migrating Axon metrics data out of hive')
866
+
867
+ async with await self.hive.open(('axon', 'metrics')) as hivenode:
868
+ axonmetrics = await hivenode.dict()
869
+ self.axonmetrics.set('size:bytes', axonmetrics.get('size:bytes', 0))
870
+ self.axonmetrics.set('file:count', axonmetrics.get('file:count', 0))
871
+
872
+ logger.warning('...Axon metrics migration complete!')
873
+
859
874
  async def _initBlobStor(self):
860
875
 
861
876
  self.byterange = True
@@ -1151,7 +1166,7 @@ class Axon(s_cell.Cell):
1151
1166
  Returns:
1152
1167
  dict: A dictionary of runtime data about the Axon.
1153
1168
  '''
1154
- return dict(self.axonmetrics.items())
1169
+ return self.axonmetrics.pack()
1155
1170
 
1156
1171
  async def save(self, sha256, genr, size):
1157
1172
  '''
@@ -1200,8 +1215,8 @@ class Axon(s_cell.Cell):
1200
1215
  tick = info.get('tick')
1201
1216
  self._addSyncItem((sha256, size), tick=tick)
1202
1217
 
1203
- await self.axonmetrics.set('file:count', self.axonmetrics.get('file:count') + 1)
1204
- await self.axonmetrics.set('size:bytes', self.axonmetrics.get('size:bytes') + size)
1218
+ self.axonmetrics.inc('file:count')
1219
+ self.axonmetrics.inc('size:bytes', valu=size)
1205
1220
 
1206
1221
  self.axonslab.put(sha256, size.to_bytes(8, 'big'), db=self.sizes)
1207
1222
  return True
@@ -1312,8 +1327,8 @@ class Axon(s_cell.Cell):
1312
1327
  logger.debug(f'Deleting blob [{fhash}].', extra=await self.getLogExtra(sha256=fhash))
1313
1328
 
1314
1329
  size = int.from_bytes(byts, 'big')
1315
- await self.axonmetrics.set('file:count', self.axonmetrics.get('file:count') - 1)
1316
- await self.axonmetrics.set('size:bytes', self.axonmetrics.get('size:bytes') - size)
1330
+ self.axonmetrics.inc('file:count', valu=-1)
1331
+ self.axonmetrics.inc('size:bytes', valu=-size)
1317
1332
 
1318
1333
  await self._delBlobByts(sha256)
1319
1334
  return True