assemblyline-core 4.7.5.dev73__tar.gz → 4.7.5.dev75__tar.gz

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.
Files changed (85) hide show
  1. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/PKG-INFO +1 -1
  2. assemblyline_core-4.7.5.dev75/assemblyline_core/VERSION +1 -0
  3. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler/base.py +8 -39
  4. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler/controllers/interface.py +4 -0
  5. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler/scaler_server.py +37 -0
  6. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler_hpa/scaler_server.py +7 -0
  7. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core.egg-info/PKG-INFO +1 -1
  8. assemblyline_core-4.7.5.dev73/assemblyline_core/VERSION +0 -1
  9. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/LICENCE.md +0 -0
  10. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/README.md +0 -0
  11. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/__init__.py +0 -0
  12. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/alerter/__init__.py +0 -0
  13. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/alerter/processing.py +0 -0
  14. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/alerter/run_alerter.py +0 -0
  15. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/archiver/__init__.py +0 -0
  16. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/archiver/run_archiver.py +0 -0
  17. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/badlist_client.py +0 -0
  18. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/dispatching/__init__.py +0 -0
  19. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/dispatching/client.py +0 -0
  20. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/dispatching/dispatcher.py +0 -0
  21. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/dispatching/schedules.py +0 -0
  22. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/expiry/__init__.py +0 -0
  23. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/expiry/run_expiry.py +0 -0
  24. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/ingester/__init__.py +0 -0
  25. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/ingester/constants.py +0 -0
  26. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/ingester/ingester.py +0 -0
  27. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/metrics/__init__.py +0 -0
  28. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/metrics/es_metrics.py +0 -0
  29. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
  30. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/metrics/helper.py +0 -0
  31. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/metrics/metrics_server.py +0 -0
  32. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
  33. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
  34. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
  35. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/replay/__init__.py +0 -0
  36. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/replay/client.py +0 -0
  37. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/replay/creator/__init__.py +0 -0
  38. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/replay/creator/run.py +0 -0
  39. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/replay/creator/run_worker.py +0 -0
  40. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/replay/loader/__init__.py +0 -0
  41. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/replay/loader/run.py +0 -0
  42. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/replay/loader/run_worker.py +0 -0
  43. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/replay/replay.py +0 -0
  44. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/safelist_client.py +0 -0
  45. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler/__init__.py +0 -0
  46. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler/collection.py +0 -0
  47. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler/controllers/__init__.py +0 -0
  48. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
  49. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler/controllers/kubernetes.py +0 -0
  50. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
  51. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler/run_scaler.py +0 -0
  52. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler_hpa/__init__.py +0 -0
  53. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler_hpa/kubernetes.py +0 -0
  54. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/scaler_hpa/run_scaler.py +0 -0
  55. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/server_base.py +0 -0
  56. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/signature_client.py +0 -0
  57. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/submission_client.py +0 -0
  58. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/updater/__init__.py +0 -0
  59. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/updater/helper.py +0 -0
  60. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/updater/run_updater.py +0 -0
  61. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/vacuum/__init__.py +0 -0
  62. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/vacuum/crawler.py +0 -0
  63. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/vacuum/department_map.py +0 -0
  64. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/vacuum/safelist.py +0 -0
  65. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/vacuum/stream_map.py +0 -0
  66. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/vacuum/worker.py +0 -0
  67. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/workflow/__init__.py +0 -0
  68. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core/workflow/run_workflow.py +0 -0
  69. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core.egg-info/SOURCES.txt +0 -0
  70. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core.egg-info/dependency_links.txt +0 -0
  71. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core.egg-info/requires.txt +0 -0
  72. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/assemblyline_core.egg-info/top_level.txt +0 -0
  73. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/setup.cfg +0 -0
  74. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/setup.py +0 -0
  75. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_alerter.py +0 -0
  76. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_badlist_client.py +0 -0
  77. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_expiry.py +0 -0
  78. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_replay.py +0 -0
  79. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_safelist_client.py +0 -0
  80. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_scaler.py +0 -0
  81. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_scheduler.py +0 -0
  82. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_signature_client.py +0 -0
  83. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_updater_helper.py +0 -0
  84. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_vacuum.py +0 -0
  85. {assemblyline_core-4.7.5.dev73 → assemblyline_core-4.7.5.dev75}/test/test_workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: assemblyline-core
3
- Version: 4.7.5.dev73
3
+ Version: 4.7.5.dev75
4
4
  Summary: Assemblyline 4 - Core components
5
5
  Home-page: https://github.com/CybercentreCanada/assemblyline-core/
6
6
  Author: CCCS Assemblyline development team
@@ -0,0 +1 @@
1
+ 4.7.5.dev75
@@ -243,44 +243,6 @@ class ScalerBase(ThreadedCoreBase):
243
243
  return 1
244
244
  return self.config.core.scaler.memory_overallocation
245
245
 
246
- def get_cpu_info(self, overallocation: bool) -> tuple[float, float]:
247
- # Get the raw used resource numbers
248
- free_cpu, total_cpu = self.controller.cpu_info()
249
-
250
- # Recalculate the amount of free resources expanding the total quantity by the overallocation
251
- if overallocation:
252
- used_cpu = total_cpu - free_cpu
253
- free_cpu = total_cpu * self.get_cpu_overallocation() - used_cpu
254
-
255
- # Include the service containers not counted in the raw numbers because they are pending
256
- for name, pending in self.controller.get_unavailable().items():
257
- profile = self.profiles.get(name)
258
- if not profile or not pending:
259
- continue
260
-
261
- free_cpu = free_cpu - profile.container_config.cpu_cores * pending
262
-
263
- return (free_cpu, total_cpu)
264
-
265
- def get_memory_info(self, overallocation: bool) -> tuple[float, float]:
266
- # Get the raw used resource numbers
267
- free_memory, total_memory = self.controller.memory_info()
268
-
269
- # Recalculate the amount of free resources expanding the total quantity by the overallocation
270
- if overallocation:
271
- used_memory = total_memory - free_memory
272
- free_memory = total_memory * self.get_memory_overallocation() - used_memory
273
-
274
- # Include the service containers not counted in the raw numbers because they are pending
275
- for name, pending in self.controller.get_unavailable().items():
276
- profile = self.profiles.get(name)
277
- if not profile or not pending:
278
- continue
279
-
280
- free_memory = free_memory - profile.container_config.ram_mb * pending
281
-
282
- return (free_memory, total_memory)
283
-
284
246
  def log_container_events(self):
285
247
  """The service status table may have references to containers that have crashed. Try to remove them all."""
286
248
  while self.sleep(CONTAINER_EVENTS_LOG_INTERVAL):
@@ -315,7 +277,8 @@ class ScalerBase(ThreadedCoreBase):
315
277
  'memory_total': memory_total,
316
278
  'cpu_total': cpu_total,
317
279
  'memory_free': memory,
318
- 'cpu_free': cpu
280
+ 'cpu_free': cpu,
281
+ 'pending_containers': sum(self.controller.get_unavailable().values())
319
282
  }
320
283
  export_metrics_once('scaler', Metrics, metrics, host=HOSTNAME,
321
284
  counter_type='scaler', config=self.config, redis=self.redis)
@@ -325,3 +288,9 @@ class ScalerBase(ThreadedCoreBase):
325
288
 
326
289
  def sync_metrics(self):
327
290
  raise NotImplementedError()
291
+
292
+ def get_cpu_info(self, overallocation: bool) -> tuple[float, float]:
293
+ raise NotImplementedError()
294
+
295
+ def get_memory_info(self, overallocation: bool) -> tuple[float, float]:
296
+ raise NotImplementedError()
@@ -44,6 +44,10 @@ class ControllerInterface:
44
44
  """Set the target for running instances of a service."""
45
45
  raise NotImplementedError()
46
46
 
47
+ def get_unavailable(self) -> dict[str, int]:
48
+ """Report the number of pending containers from deployments monitored by the system."""
49
+ raise NotImplementedError()
50
+
47
51
  def restart(self, service: ServiceProfile):
48
52
  raise NotImplementedError()
49
53
 
@@ -729,3 +729,40 @@ class ScalerServer(ScalerBase):
729
729
  duty_cycle=profile.high_duty_cycle
730
730
  )
731
731
 
732
+ def get_cpu_info(self, overallocation: bool) -> tuple[float, float]:
733
+ # Get the raw used resource numbers
734
+ free_cpu, total_cpu = self.controller.cpu_info()
735
+
736
+ # Recalculate the amount of free resources expanding the total quantity by the overallocation
737
+ if overallocation:
738
+ used_cpu = total_cpu - free_cpu
739
+ free_cpu = total_cpu * self.get_cpu_overallocation() - used_cpu
740
+
741
+ # Include the service containers not counted in the raw numbers because they are pending
742
+ for name, pending in self.controller.get_unavailable().items():
743
+ profile = self.profiles.get(name)
744
+ if not profile or not pending:
745
+ continue
746
+
747
+ free_cpu = free_cpu - profile.container_config.cpu_cores * pending
748
+
749
+ return (free_cpu, total_cpu)
750
+
751
+ def get_memory_info(self, overallocation: bool) -> tuple[float, float]:
752
+ # Get the raw used resource numbers
753
+ free_memory, total_memory = self.controller.memory_info()
754
+
755
+ # Recalculate the amount of free resources expanding the total quantity by the overallocation
756
+ if overallocation:
757
+ used_memory = total_memory - free_memory
758
+ free_memory = total_memory * self.get_memory_overallocation() - used_memory
759
+
760
+ # Include the service containers not counted in the raw numbers because they are pending
761
+ for name, pending in self.controller.get_unavailable().items():
762
+ profile = self.profiles.get(name)
763
+ if not profile or not pending:
764
+ continue
765
+
766
+ free_memory = free_memory - profile.container_config.ram_mb * pending
767
+
768
+ return (free_memory, total_memory)
@@ -524,3 +524,10 @@ class ScalerServer(ScalerBase):
524
524
  profile.running_instances = 0
525
525
  profile.duty_cycle = 0.7
526
526
 
527
+ def get_cpu_info(self, overallocation: bool) -> tuple[float, float]:
528
+ # Get the raw used resource numbers
529
+ return self.controller.cpu_info()
530
+
531
+ def get_memory_info(self, overallocation: bool) -> tuple[float, float]:
532
+ # Get the raw used resource numbers
533
+ return self.controller.memory_info()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: assemblyline-core
3
- Version: 4.7.5.dev73
3
+ Version: 4.7.5.dev75
4
4
  Summary: Assemblyline 4 - Core components
5
5
  Home-page: https://github.com/CybercentreCanada/assemblyline-core/
6
6
  Author: CCCS Assemblyline development team
@@ -1 +0,0 @@
1
- 4.7.5.dev73