assemblyline-core 4.4.1.dev5__tar.gz → 4.4.1.dev7__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.4.1.dev5 → assemblyline-core-4.4.1.dev7}/PKG-INFO +1 -1
  2. assemblyline-core-4.4.1.dev7/assemblyline_core/VERSION +1 -0
  3. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/scaler/scaler_server.py +25 -18
  4. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core.egg-info/PKG-INFO +1 -1
  5. assemblyline-core-4.4.1.dev5/assemblyline_core/VERSION +0 -1
  6. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/LICENCE.md +0 -0
  7. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/README.md +0 -0
  8. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/__init__.py +0 -0
  9. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/alerter/__init__.py +0 -0
  10. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/alerter/processing.py +0 -0
  11. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/alerter/run_alerter.py +0 -0
  12. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/archiver/__init__.py +0 -0
  13. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/archiver/run_archiver.py +0 -0
  14. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/dispatching/__init__.py +0 -0
  15. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/dispatching/__main__.py +0 -0
  16. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/dispatching/client.py +0 -0
  17. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/dispatching/dispatcher.py +0 -0
  18. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/dispatching/schedules.py +0 -0
  19. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/dispatching/timeout.py +0 -0
  20. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/expiry/__init__.py +0 -0
  21. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/expiry/run_expiry.py +0 -0
  22. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/ingester/__init__.py +0 -0
  23. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/ingester/__main__.py +0 -0
  24. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/ingester/constants.py +0 -0
  25. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/ingester/ingester.py +0 -0
  26. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/metrics/__init__.py +0 -0
  27. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/metrics/es_metrics.py +0 -0
  28. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
  29. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/metrics/helper.py +0 -0
  30. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/metrics/metrics_server.py +0 -0
  31. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
  32. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
  33. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
  34. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/plumber/__init__.py +0 -0
  35. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/plumber/run_plumber.py +0 -0
  36. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/replay/__init__.py +0 -0
  37. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/replay/client.py +0 -0
  38. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/replay/creator/__init__.py +0 -0
  39. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/replay/creator/run.py +0 -0
  40. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/replay/creator/run_worker.py +0 -0
  41. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/replay/loader/__init__.py +0 -0
  42. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/replay/loader/run.py +0 -0
  43. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/replay/loader/run_worker.py +0 -0
  44. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/replay/replay.py +0 -0
  45. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/safelist_client.py +0 -0
  46. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/scaler/__init__.py +0 -0
  47. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/scaler/collection.py +0 -0
  48. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/scaler/controllers/__init__.py +0 -0
  49. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
  50. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/scaler/controllers/interface.py +0 -0
  51. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
  52. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/scaler/run_scaler.py +0 -0
  53. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/server_base.py +0 -0
  54. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/submission_client.py +0 -0
  55. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/tasking_client.py +0 -0
  56. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/updater/__init__.py +0 -0
  57. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/updater/helper.py +0 -0
  58. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/updater/run_updater.py +0 -0
  59. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/vacuum/__init__.py +0 -0
  60. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/vacuum/crawler.py +0 -0
  61. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/vacuum/department_map.py +0 -0
  62. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/vacuum/safelist.py +0 -0
  63. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/vacuum/stream_map.py +0 -0
  64. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/vacuum/worker.py +0 -0
  65. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/workflow/__init__.py +0 -0
  66. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core/workflow/run_workflow.py +0 -0
  67. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core.egg-info/SOURCES.txt +0 -0
  68. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core.egg-info/dependency_links.txt +0 -0
  69. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core.egg-info/requires.txt +0 -0
  70. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/assemblyline_core.egg-info/top_level.txt +0 -0
  71. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/setup.cfg +0 -0
  72. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/setup.py +0 -0
  73. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/test/test_alerter.py +0 -0
  74. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/test/test_dispatcher.py +0 -0
  75. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/test/test_expiry.py +0 -0
  76. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/test/test_plumber.py +0 -0
  77. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/test/test_replay.py +0 -0
  78. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/test/test_scaler.py +0 -0
  79. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/test/test_scheduler.py +0 -0
  80. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/test/test_simulation.py +0 -0
  81. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/test/test_vacuum.py +0 -0
  82. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/test/test_worker_ingest.py +0 -0
  83. {assemblyline-core-4.4.1.dev5 → assemblyline-core-4.4.1.dev7}/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.4.1.dev5
3
+ Version: 4.4.1.dev7
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.1.dev7
@@ -518,25 +518,23 @@ class ScalerServer(ThreadedCoreBase):
518
518
  dependency_blobs[_n] = f"dh={dep_hash}v={service.version}p={service.privileged}ssl={INTERNAL_ENCRYPT}"
519
519
 
520
520
  # Check if the service dependencies have been deployed.
521
- dependency_keys = []
522
- updater_ready = stage == ServiceStage.Running
521
+ dependency_keys = dict()
523
522
  if service.update_config:
524
523
  for _n, dependency in dependency_config.items():
525
524
  key = self.controller.stateful_container_key(service.name, _n, dependency,
526
525
  dependency_blobs.get(_n, ''))
527
526
  if key:
528
- dependency_keys.append(_n + key)
529
- else:
530
- updater_ready = False
531
-
532
- # If stage is not set to running or a dependency container is missing start the setup process
533
- if not updater_ready:
527
+ dependency_keys[_n] = _n + key
528
+ else:
529
+ # Services without an update configuration are born ready
530
+ self._service_stage_hash.set(name, ServiceStage.Running)
531
+ stage = ServiceStage.Running
532
+
533
+ # If dependency container(s) are missing, start the setup process
534
+ if set(dependency_keys.keys()) != set(dependency_config.keys()):
534
535
  self.log.info(f'Preparing environment for {service.name}')
535
- # Move to the next service stage (do this first because the container we are starting may care)
536
- if service.update_config and service.update_config.wait_for_update:
537
- self._service_stage_hash.set(name, ServiceStage.Update)
538
- stage = ServiceStage.Update
539
- else:
536
+ # Services that don't need to wait for an update can be declared ready
537
+ if service.update_config and not service.update_config.wait_for_update:
540
538
  self._service_stage_hash.set(name, ServiceStage.Running)
541
539
  stage = ServiceStage.Running
542
540
 
@@ -544,9 +542,12 @@ class ScalerServer(ThreadedCoreBase):
544
542
  dependency_internet = [(name, dependency.container.allow_internet_access)
545
543
  for name, dependency in dependency_config.items()]
546
544
 
547
- self.controller.prepare_network(
548
- service.name, service.docker_config.allow_internet_access, dependency_internet)
545
+ self.controller.prepare_network(service.name, service.docker_config.allow_internet_access,
546
+ dependency_internet)
549
547
  for _n, dependency in dependency_config.items():
548
+ if dependency_keys.get(_n):
549
+ # Dependency already exists, skip
550
+ continue
550
551
  self.log.info(f'Launching {service.name} dependency {_n}')
551
552
  self.controller.start_stateful_container(
552
553
  service_name=service.name,
@@ -565,7 +566,7 @@ class ScalerServer(ThreadedCoreBase):
565
566
  # Compute a blob of service properties not include in the docker config, that
566
567
  # should still result in a service being restarted when changed
567
568
  cfg_items = get_recursive_sorted_tuples(service.config)
568
- dep_keys = ''.join(sorted(dependency_keys))
569
+ dep_keys = ''.join(sorted(dependency_keys.values()))
569
570
  config_blob = (f"c={cfg_items}sp={service.submission_params}"
570
571
  f"dk={dep_keys}p={service.privileged}d={docker_config}ssl={INTERNAL_ENCRYPT}")
571
572
 
@@ -615,7 +616,10 @@ class ScalerServer(ThreadedCoreBase):
615
616
  profile.config_blob = config_blob
616
617
  self.controller.restart(profile)
617
618
  self.log.info(f"Deployment information for {name} replaced")
618
-
619
+ # If service has already been scaled but is not running, scale down until ready
620
+ elif name in self.profiles:
621
+ self.log.info(f"System has deemed {name} not ready/running. Scaling down..")
622
+ self.controller.set_target(name, 0)
619
623
  except Exception:
620
624
  self.log.exception(f"Error applying service settings from: {service.name}")
621
625
  self.handle_service_error(service.name)
@@ -661,7 +665,10 @@ class ScalerServer(ThreadedCoreBase):
661
665
  # Figure out what services are expected to be running and how many
662
666
  with elasticapm.capture_span('read_profiles'):
663
667
  with self.profiles_lock:
664
- all_profiles: dict[str, ServiceProfile] = copy.deepcopy(self.profiles)
668
+ # We want to evaluate 'active' service profiles
669
+ all_profiles: dict[str, ServiceProfile] = {_n: copy.deepcopy(_v)
670
+ for _n, _v in self.profiles.items()
671
+ if self.get_service_stage(_n) == ServiceStage.Running}
665
672
  raw_targets = self.controller.get_targets()
666
673
  # This is the list of targets we will adjust
667
674
  targets = {_p.name: raw_targets.get(_p.name, 0) for _p in all_profiles.values()}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.4.1.dev5
3
+ Version: 4.4.1.dev7
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.4.1.dev5