assemblyline-core 4.3.2.dev73__tar.gz → 4.4.0.0__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.

Potentially problematic release.


This version of assemblyline-core might be problematic. Click here for more details.

Files changed (83) hide show
  1. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/PKG-INFO +1 -1
  2. assemblyline-core-4.4.0.0/assemblyline_core/VERSION +1 -0
  3. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/replay/loader/run.py +1 -1
  4. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +4 -0
  5. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/scaler/scaler_server.py +10 -6
  6. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core.egg-info/PKG-INFO +1 -1
  7. assemblyline-core-4.3.2.dev73/assemblyline_core/VERSION +0 -1
  8. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/LICENCE.md +0 -0
  9. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/README.md +0 -0
  10. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/__init__.py +0 -0
  11. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/alerter/__init__.py +0 -0
  12. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/alerter/processing.py +0 -0
  13. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/alerter/run_alerter.py +0 -0
  14. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/archiver/__init__.py +0 -0
  15. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/archiver/run_archiver.py +0 -0
  16. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/dispatching/__init__.py +0 -0
  17. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/dispatching/__main__.py +0 -0
  18. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/dispatching/client.py +0 -0
  19. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/dispatching/dispatcher.py +0 -0
  20. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/dispatching/schedules.py +0 -0
  21. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/dispatching/timeout.py +0 -0
  22. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/expiry/__init__.py +0 -0
  23. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/expiry/run_expiry.py +0 -0
  24. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/ingester/__init__.py +0 -0
  25. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/ingester/__main__.py +0 -0
  26. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/ingester/constants.py +0 -0
  27. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/ingester/ingester.py +0 -0
  28. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/metrics/__init__.py +0 -0
  29. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/metrics/es_metrics.py +0 -0
  30. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
  31. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/metrics/helper.py +0 -0
  32. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/metrics/metrics_server.py +0 -0
  33. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
  34. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
  35. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
  36. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/plumber/__init__.py +0 -0
  37. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/plumber/run_plumber.py +0 -0
  38. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/replay/__init__.py +0 -0
  39. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/replay/client.py +0 -0
  40. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/replay/creator/__init__.py +0 -0
  41. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/replay/creator/run.py +0 -0
  42. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/replay/creator/run_worker.py +0 -0
  43. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/replay/loader/__init__.py +0 -0
  44. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/replay/loader/run_worker.py +0 -0
  45. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/replay/replay.py +0 -0
  46. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/safelist_client.py +0 -0
  47. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/scaler/__init__.py +0 -0
  48. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/scaler/collection.py +0 -0
  49. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/scaler/controllers/__init__.py +0 -0
  50. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
  51. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/scaler/controllers/interface.py +0 -0
  52. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/scaler/run_scaler.py +0 -0
  53. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/server_base.py +0 -0
  54. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/submission_client.py +0 -0
  55. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/tasking_client.py +0 -0
  56. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/updater/__init__.py +0 -0
  57. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/updater/helper.py +0 -0
  58. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/updater/run_updater.py +0 -0
  59. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/vacuum/__init__.py +0 -0
  60. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/vacuum/crawler.py +0 -0
  61. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/vacuum/department_map.py +0 -0
  62. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/vacuum/safelist.py +0 -0
  63. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/vacuum/stream_map.py +0 -0
  64. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/vacuum/worker.py +0 -0
  65. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/workflow/__init__.py +0 -0
  66. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core/workflow/run_workflow.py +0 -0
  67. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core.egg-info/SOURCES.txt +0 -0
  68. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core.egg-info/dependency_links.txt +0 -0
  69. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core.egg-info/requires.txt +0 -0
  70. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/assemblyline_core.egg-info/top_level.txt +0 -0
  71. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/setup.cfg +0 -0
  72. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/setup.py +0 -0
  73. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_alerter.py +0 -0
  74. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_dispatcher.py +0 -0
  75. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_expiry.py +0 -0
  76. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_plumber.py +0 -0
  77. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_replay.py +0 -0
  78. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_scaler.py +0 -0
  79. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_scheduler.py +0 -0
  80. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_simulation.py +0 -0
  81. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_vacuum.py +0 -0
  82. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_worker_ingest.py +0 -0
  83. {assemblyline-core-4.3.2.dev73 → assemblyline-core-4.4.0.0}/test/test_worker_submit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.3.2.dev73
3
+ Version: 4.4.0.0
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.4.0.0
@@ -84,8 +84,8 @@ class ReplayLoader(ReplayBase):
84
84
  self.maintain_threads(threads)
85
85
 
86
86
  def stop(self):
87
- super().stop()
88
87
  self.cache.close()
88
+ return super().stop()
89
89
 
90
90
 
91
91
  if __name__ == '__main__':
@@ -507,6 +507,9 @@ class KubernetesController(ControllerInterface):
507
507
  for event in watch.stream(func=self.apps_api.list_namespaced_deployment,
508
508
  namespace=self.namespace, label_selector=label_selector,
509
509
  timeout_seconds=WATCH_TIMEOUT, _request_timeout=WATCH_API_TIMEOUT):
510
+ if 'dependency_for' in event['raw_object']['metadata']['labels']:
511
+ continue
512
+
510
513
  if event['type'] in ['ADDED', 'MODIFIED']:
511
514
  name = event['raw_object']['metadata']['labels'].get('component', None)
512
515
  if name is not None:
@@ -769,6 +772,7 @@ class KubernetesController(ControllerInterface):
769
772
  self.add_profile(profile, scale=target)
770
773
  return
771
774
  raise
775
+ self.logger.error(f"Repeated conflict scaling {service_name} will not retry.")
772
776
 
773
777
  def stop_container(self, service_name, container_id):
774
778
  try:
@@ -24,7 +24,7 @@ import yaml
24
24
  from assemblyline.remote.datatypes.queues.named import NamedQueue
25
25
  from assemblyline.remote.datatypes.queues.priority import PriorityQueue, length as pq_length
26
26
  from assemblyline.remote.datatypes.exporting_counter import export_metrics_once
27
- from assemblyline.remote.datatypes.hash import ExpiringHash
27
+ from assemblyline.remote.datatypes.hash import ExpiringHash, Hash
28
28
  from assemblyline.remote.datatypes.events import EventWatcher, EventSender
29
29
  from assemblyline.odm.models.service import Service, DockerConfig, EnvironmentVariable
30
30
  from assemblyline.odm.messages.scaler_heartbeat import Metrics
@@ -628,6 +628,9 @@ class ScalerServer(ThreadedCoreBase):
628
628
  'dependency_for': name
629
629
  })
630
630
 
631
+ # Clear related dependency caching from Redis
632
+ Hash(f'service-updates-{name}', self.redis_persist).delete()
633
+
631
634
  # Mark this service as not running in the shared record
632
635
  self._service_stage_hash.set(name, ServiceStage.Off)
633
636
 
@@ -660,7 +663,10 @@ class ScalerServer(ThreadedCoreBase):
660
663
  with self.profiles_lock:
661
664
  all_profiles: dict[str, ServiceProfile] = copy.deepcopy(self.profiles)
662
665
  raw_targets = self.controller.get_targets()
666
+ # This is the list of targets we will adjust
663
667
  targets = {_p.name: raw_targets.get(_p.name, 0) for _p in all_profiles.values()}
668
+ # This represents what the environment is currently running
669
+ old_targets = dict(targets)
664
670
 
665
671
  for name, profile in all_profiles.items():
666
672
  self.log.debug(f'{name}')
@@ -707,7 +713,8 @@ class ScalerServer(ThreadedCoreBase):
707
713
  used_memory = total_memory - free_memory
708
714
  free_memory = total_memory * self.get_memory_overallocation() - used_memory
709
715
 
710
- #
716
+ # Make adjustments to the targets until everything is satisified
717
+ # or we don't have the resouces to make more adjustments
711
718
  def trim(prof: list[ServiceProfile]):
712
719
  prof = [_p for _p in prof if _p.desired_instances > targets[_p.name]]
713
720
  drop = [_p for _p in prof if _p.cpu > free_cpu or _p.ram > free_memory]
@@ -718,10 +725,6 @@ class ScalerServer(ThreadedCoreBase):
718
725
  return prof
719
726
 
720
727
  remaining_profiles: list[ServiceProfile] = trim(list(all_profiles.values()))
721
- # The target values up until now should be in sync with the container orchestrator
722
- # create a copy, so we can track which ones change in the following loop
723
- old_targets = dict(targets)
724
-
725
728
  while remaining_profiles:
726
729
  # TODO do we need to add balancing metrics other than 'least running' for this? probably
727
730
  remaining_profiles.sort(key=lambda _p: targets[_p.name])
@@ -744,6 +747,7 @@ class ScalerServer(ThreadedCoreBase):
744
747
  continue
745
748
  self.profiles[name].target_instances = value
746
749
  old = old_targets[name]
750
+
747
751
  if value != old:
748
752
  self.log.info(f"Scaling service {name}: {old} -> {value}")
749
753
  pool.call(self.controller.set_target, name, value)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.3.2.dev73
3
+ Version: 4.4.0.0
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.3.2.dev73