assemblyline-core 4.7.3.dev16__tar.gz → 4.7.3.dev19__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 (80) hide show
  1. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/PKG-INFO +1 -1
  2. assemblyline_core-4.7.3.dev19/assemblyline_core/VERSION +1 -0
  3. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/scaler/scaler_server.py +2 -2
  4. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/updater/run_updater.py +34 -5
  5. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core.egg-info/PKG-INFO +1 -1
  6. assemblyline_core-4.7.3.dev16/assemblyline_core/VERSION +0 -1
  7. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/LICENCE.md +0 -0
  8. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/README.md +0 -0
  9. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/__init__.py +0 -0
  10. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/alerter/__init__.py +0 -0
  11. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/alerter/processing.py +0 -0
  12. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/alerter/run_alerter.py +0 -0
  13. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/archiver/__init__.py +0 -0
  14. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/archiver/run_archiver.py +0 -0
  15. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/badlist_client.py +0 -0
  16. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/dispatching/__init__.py +0 -0
  17. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/dispatching/client.py +0 -0
  18. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/dispatching/dispatcher.py +0 -0
  19. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/dispatching/schedules.py +0 -0
  20. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/expiry/__init__.py +0 -0
  21. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/expiry/run_expiry.py +0 -0
  22. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/ingester/__init__.py +0 -0
  23. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/ingester/constants.py +0 -0
  24. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/ingester/ingester.py +0 -0
  25. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/metrics/__init__.py +0 -0
  26. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/metrics/es_metrics.py +0 -0
  27. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
  28. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/metrics/helper.py +0 -0
  29. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/metrics/metrics_server.py +0 -0
  30. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
  31. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
  32. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
  33. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/replay/__init__.py +0 -0
  34. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/replay/client.py +0 -0
  35. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/replay/creator/__init__.py +0 -0
  36. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/replay/creator/run.py +0 -0
  37. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/replay/creator/run_worker.py +0 -0
  38. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/replay/loader/__init__.py +0 -0
  39. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/replay/loader/run.py +0 -0
  40. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/replay/loader/run_worker.py +0 -0
  41. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/replay/replay.py +0 -0
  42. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/safelist_client.py +0 -0
  43. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/scaler/__init__.py +0 -0
  44. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/scaler/collection.py +0 -0
  45. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/scaler/controllers/__init__.py +0 -0
  46. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
  47. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/scaler/controllers/interface.py +0 -0
  48. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
  49. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/scaler/run_scaler.py +0 -0
  50. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/server_base.py +0 -0
  51. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/signature_client.py +0 -0
  52. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/submission_client.py +0 -0
  53. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/tasking_client.py +0 -0
  54. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/updater/__init__.py +0 -0
  55. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/updater/helper.py +0 -0
  56. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/vacuum/__init__.py +0 -0
  57. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/vacuum/crawler.py +0 -0
  58. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/vacuum/department_map.py +0 -0
  59. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/vacuum/safelist.py +0 -0
  60. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/vacuum/stream_map.py +0 -0
  61. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/vacuum/worker.py +0 -0
  62. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/workflow/__init__.py +0 -0
  63. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core/workflow/run_workflow.py +0 -0
  64. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core.egg-info/SOURCES.txt +0 -0
  65. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core.egg-info/dependency_links.txt +0 -0
  66. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core.egg-info/requires.txt +0 -0
  67. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/assemblyline_core.egg-info/top_level.txt +0 -0
  68. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/setup.cfg +0 -0
  69. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/setup.py +0 -0
  70. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/test/test_alerter.py +0 -0
  71. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/test/test_badlist_client.py +0 -0
  72. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/test/test_expiry.py +0 -0
  73. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/test/test_replay.py +0 -0
  74. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/test/test_safelist_client.py +0 -0
  75. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/test/test_scaler.py +0 -0
  76. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/test/test_scheduler.py +0 -0
  77. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/test/test_signature_client.py +0 -0
  78. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/test/test_tasking_client.py +0 -0
  79. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/test/test_vacuum.py +0 -0
  80. {assemblyline_core-4.7.3.dev16 → assemblyline_core-4.7.3.dev19}/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.3.dev16
3
+ Version: 4.7.3.dev19
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.3.dev19
@@ -743,7 +743,7 @@ class ScalerServer(ThreadedCoreBase):
743
743
  return 1
744
744
  return self.config.core.scaler.memory_overallocation
745
745
 
746
- def update_scaling(self):
746
+ def update_scaling(self) -> None:
747
747
  """Check if we need to scale any services up or down."""
748
748
  pool = Pool()
749
749
  while self.sleep(SCALE_INTERVAL):
@@ -811,7 +811,7 @@ class ScalerServer(ThreadedCoreBase):
811
811
  drop = [_p for _p in prof if _p.cpu > free_cpu or _p.ram > free_memory]
812
812
  if drop:
813
813
  summary = {_p.name: (_p.cpu, _p.ram) for _p in drop}
814
- self.log.debug(f"Can't make more because not enough resources {summary}")
814
+ self.log.debug("Can't make more because not enough resources %s", summary)
815
815
  prof = [_p for _p in prof if _p.cpu <= free_cpu and _p.ram <= free_memory]
816
816
  return prof
817
817
 
@@ -12,6 +12,7 @@ from typing import Any, Dict, List, Optional
12
12
 
13
13
  import docker
14
14
  from assemblyline.common import isotime
15
+ from assemblyline.common.constants import SERVICE_API_KEY_HASH
15
16
  from assemblyline.common.version import FRAMEWORK_VERSION, SYSTEM_VERSION
16
17
  from assemblyline.odm.messages.changes import Operation, ServiceChange
17
18
  from assemblyline.odm.models.config import Mount, Selector
@@ -57,13 +58,13 @@ CONTAINER_CHECK_INTERVAL = int(os.getenv("CONTAINER_CHECK_INTERVAL", "300"))
57
58
  API_TIMEOUT = 90
58
59
  NAMESPACE = os.getenv('NAMESPACE', None)
59
60
  INHERITED_VARIABLES: list[str] = ['HTTP_PROXY', 'HTTPS_PROXY', 'NO_PROXY', 'http_proxy',
60
- 'https_proxy', 'no_proxy', 'SERVICE_API_HOST', 'SERVICE_API_KEY']
61
+ 'https_proxy', 'no_proxy', 'SERVICE_API_HOST']
61
62
 
62
63
  AL_REGISTRATION_NETWORK = os.environ.get("AL_REGISTRATION_NETWORK", 'al_registration')
63
64
  CONFIGURATION_HOST_PATH = os.getenv('CONFIGURATION_HOST_PATH', 'service_config')
64
65
  CONFIGURATION_CONFIGMAP = os.getenv('KUBERNETES_AL_CONFIG', None)
65
66
  SERVICE_API_HOST = os.environ.get('SERVICE_API_HOST', "http://service_server:5003")
66
- SERVICE_API_KEY = os.environ.get('SERVICE_API_KEY', 'ThisIsARandomAuthKey...ChangeMe!')
67
+ API_KEY_TIMEOUT = 60 * 60
67
68
 
68
69
  RESTRICTED_POD_SECUTITY_CONTEXT = V1SecurityContext(
69
70
  run_as_user=1000,
@@ -440,7 +441,7 @@ class KubernetesUpdateInterface:
440
441
 
441
442
 
442
443
  class ServiceUpdater(ThreadedCoreBase):
443
- def __init__(self, redis_persist=None, redis=None, logger=None, datastore=None):
444
+ def __init__(self, redis_persist=None, redis=None, logger=None, datastore=None) -> None:
444
445
  super().__init__('assemblyline.service.updater', logger=logger, datastore=datastore,
445
446
  redis_persist=redis_persist, redis=redis)
446
447
 
@@ -448,6 +449,7 @@ class ServiceUpdater(ThreadedCoreBase):
448
449
  self.container_install: Hash[dict[str, Any]] = Hash('container-install', self.redis_persist)
449
450
  self.latest_service_tags: Hash[dict[str, str]] = Hash('service-tags', self.redis_persist)
450
451
  self.service_events = EventSender('changes.services', host=self.redis)
452
+ self.container_keys: Hash[dict[str, Any]] = Hash(SERVICE_API_KEY_HASH, self.redis_persist)
451
453
 
452
454
  self.incompatible_services = set()
453
455
  self.service_change_watcher = EventWatcher(self.redis, deserializer=ServiceChange.deserialize)
@@ -503,6 +505,9 @@ class ServiceUpdater(ThreadedCoreBase):
503
505
  tag = f'{FRAMEWORK_VERSION}.{SYSTEM_VERSION}.stable'
504
506
  else:
505
507
  tag = f'{FRAMEWORK_VERSION}.{SYSTEM_VERSION}.latest'
508
+
509
+ api_key = uuid.uuid4().hex + uuid.uuid4().hex
510
+
506
511
  try:
507
512
  service = Service(
508
513
  {'name': service_name,
@@ -520,6 +525,13 @@ class ServiceUpdater(ThreadedCoreBase):
520
525
  f"Defaulting to '{tag}' tag...")
521
526
  tag_name = tag
522
527
 
528
+ # Install the api key
529
+ self.container_keys.add(api_key, {
530
+ 'key': api_key,
531
+ 'allow_registry_writing': True,
532
+ 'expiry': isotime.now_as_iso(API_KEY_TIMEOUT)
533
+ })
534
+
523
535
  docker_config = dict(image=f"{image_name}:{tag_name}")
524
536
  if auth:
525
537
  docker_config.update(dict(registry_username=auth['username'],
@@ -534,6 +546,7 @@ class ServiceUpdater(ThreadedCoreBase):
534
546
  env = {
535
547
  "SERVICE_TAG": tag_name,
536
548
  "REGISTER_ONLY": 'true',
549
+ "SERVICE_API_KEY": api_key,
537
550
  }
538
551
 
539
552
  # Update environment with service defaults
@@ -550,6 +563,9 @@ class ServiceUpdater(ThreadedCoreBase):
550
563
  except Exception as e:
551
564
  self.log.error(
552
565
  f"[CI] Service {service_name} has failed to install. Install procedure cancelled... [{str(e)}]")
566
+ finally:
567
+ self.container_keys.pop(api_key)
568
+
553
569
  return f"{service_name}_{str(tag_name).replace('stable', '')}"
554
570
 
555
571
  # Start up installs for services in parallel
@@ -612,8 +628,18 @@ class ServiceUpdater(ThreadedCoreBase):
612
628
 
613
629
  # Update function for services
614
630
  def update_service(service_name: str, update_data: dict) -> str:
615
- self.log.info(f"[CU] Service {service_name} is being updated to version {update_data['latest_tag']}...")
616
-
631
+ self.log.info("[CU] Service %s is being updated to version %s...",
632
+ service_name, update_data['latest_tag'])
633
+
634
+ # Create an api key
635
+ api_key = uuid.uuid4().hex + uuid.uuid4().hex
636
+ self.container_keys.add(api_key, {
637
+ 'key': api_key,
638
+ 'allow_registry_writing': True,
639
+ 'expiry': isotime.now_as_iso(API_KEY_TIMEOUT)
640
+ })
641
+
642
+ # Initailize the conatiner configuration
617
643
  docker_config = dict(image=update_data['image'])
618
644
 
619
645
  # Load authentication params
@@ -632,6 +658,7 @@ class ServiceUpdater(ThreadedCoreBase):
632
658
  env = {
633
659
  "SERVICE_TAG": update_data['latest_tag'],
634
660
  "REGISTER_ONLY": 'true',
661
+ "SERVICE_API_KEY": api_key,
635
662
  }
636
663
 
637
664
  # Update environment with service defaults
@@ -648,6 +675,8 @@ class ServiceUpdater(ThreadedCoreBase):
648
675
  except Exception as e:
649
676
  self.log.error(
650
677
  f"[CU] Service {service_name} has failed to update. Update procedure cancelled... [{str(e)}]")
678
+ finally:
679
+ self.container_keys.pop(api_key)
651
680
  return service_key
652
681
 
653
682
  # Start up updates for services in parallel
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: assemblyline-core
3
- Version: 4.7.3.dev16
3
+ Version: 4.7.3.dev19
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.3.dev16