assemblyline-core 4.6.1.dev222__tar.gz → 4.6.1.dev225__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 (90) hide show
  1. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/PKG-INFO +1 -1
  2. assemblyline_core-4.6.1.dev225/assemblyline_core/VERSION +1 -0
  3. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +24 -7
  4. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/scaler/scaler_server.py +17 -7
  5. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/updater/helper.py +7 -9
  6. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core.egg-info/PKG-INFO +1 -1
  7. assemblyline_core-4.6.1.dev222/assemblyline_core/VERSION +0 -1
  8. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/LICENCE.md +0 -0
  9. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/README.md +0 -0
  10. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/__init__.py +0 -0
  11. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/alerter/__init__.py +0 -0
  12. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/alerter/processing.py +0 -0
  13. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/alerter/run_alerter.py +0 -0
  14. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/archiver/__init__.py +0 -0
  15. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/archiver/run_archiver.py +0 -0
  16. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/badlist_client.py +0 -0
  17. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/dispatching/__init__.py +0 -0
  18. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/dispatching/__main__.py +0 -0
  19. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/dispatching/client.py +0 -0
  20. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/dispatching/dispatcher.py +0 -0
  21. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/dispatching/schedules.py +0 -0
  22. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/dispatching/timeout.py +0 -0
  23. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/expiry/__init__.py +0 -0
  24. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/expiry/run_expiry.py +0 -0
  25. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/ingester/__init__.py +0 -0
  26. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/ingester/__main__.py +0 -0
  27. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/ingester/constants.py +0 -0
  28. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/ingester/ingester.py +0 -0
  29. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/metrics/__init__.py +0 -0
  30. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/metrics/es_metrics.py +0 -0
  31. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
  32. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/metrics/helper.py +0 -0
  33. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/metrics/metrics_server.py +0 -0
  34. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
  35. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
  36. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
  37. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/plumber/__init__.py +0 -0
  38. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/plumber/run_plumber.py +0 -0
  39. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/replay/__init__.py +0 -0
  40. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/replay/client.py +0 -0
  41. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/replay/creator/__init__.py +0 -0
  42. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/replay/creator/run.py +0 -0
  43. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/replay/creator/run_worker.py +0 -0
  44. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/replay/loader/__init__.py +0 -0
  45. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/replay/loader/run.py +0 -0
  46. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/replay/loader/run_worker.py +0 -0
  47. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/replay/replay.py +0 -0
  48. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/safelist_client.py +0 -0
  49. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/scaler/__init__.py +0 -0
  50. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/scaler/collection.py +0 -0
  51. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/scaler/controllers/__init__.py +0 -0
  52. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
  53. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/scaler/controllers/interface.py +0 -0
  54. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/scaler/run_scaler.py +0 -0
  55. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/server_base.py +0 -0
  56. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/signature_client.py +0 -0
  57. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/submission_client.py +0 -0
  58. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/tasking_client.py +0 -0
  59. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/updater/__init__.py +0 -0
  60. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/updater/run_updater.py +0 -0
  61. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/vacuum/__init__.py +0 -0
  62. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/vacuum/crawler.py +0 -0
  63. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/vacuum/department_map.py +0 -0
  64. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/vacuum/safelist.py +0 -0
  65. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/vacuum/stream_map.py +0 -0
  66. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/vacuum/worker.py +0 -0
  67. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/workflow/__init__.py +0 -0
  68. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core/workflow/run_workflow.py +0 -0
  69. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core.egg-info/SOURCES.txt +0 -0
  70. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core.egg-info/dependency_links.txt +0 -0
  71. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core.egg-info/requires.txt +0 -0
  72. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/assemblyline_core.egg-info/top_level.txt +0 -0
  73. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/setup.cfg +0 -0
  74. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/setup.py +0 -0
  75. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_alerter.py +0 -0
  76. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_badlist_client.py +0 -0
  77. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_dispatcher.py +0 -0
  78. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_expiry.py +0 -0
  79. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_plumber.py +0 -0
  80. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_replay.py +0 -0
  81. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_safelist_client.py +0 -0
  82. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_scaler.py +0 -0
  83. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_scheduler.py +0 -0
  84. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_signature_client.py +0 -0
  85. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_simulation.py +0 -0
  86. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_tasking_client.py +0 -0
  87. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_vacuum.py +0 -0
  88. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_worker_ingest.py +0 -0
  89. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_worker_submit.py +0 -0
  90. {assemblyline_core-4.6.1.dev222 → assemblyline_core-4.6.1.dev225}/test/test_workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: assemblyline-core
3
- Version: 4.6.1.dev222
3
+ Version: 4.6.1.dev225
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.6.1.dev225
@@ -14,6 +14,12 @@ from time import sleep
14
14
  from typing import List, Optional, Tuple
15
15
 
16
16
  import urllib3
17
+ from assemblyline.odm.models.config import Selector
18
+ from assemblyline.odm.models.service import (
19
+ DependencyConfig,
20
+ DockerConfig,
21
+ PersistentVolume,
22
+ )
17
23
  from cryptography import x509
18
24
  from cryptography.hazmat.primitives import hashes, serialization
19
25
  from cryptography.hazmat.primitives.asymmetric import rsa
@@ -22,6 +28,7 @@ from kubernetes import client, config, watch
22
28
  from kubernetes.client import (
23
29
  V1Affinity,
24
30
  V1Capabilities,
31
+ V1ConfigMap,
25
32
  V1ConfigMapVolumeSource,
26
33
  V1Container,
27
34
  V1Deployment,
@@ -62,12 +69,6 @@ from kubernetes.client import (
62
69
  )
63
70
  from kubernetes.client.rest import ApiException
64
71
 
65
- from assemblyline.odm.models.config import Selector
66
- from assemblyline.odm.models.service import (
67
- DependencyConfig,
68
- DockerConfig,
69
- PersistentVolume,
70
- )
71
72
  from assemblyline_core.scaler.controllers.interface import ControllerInterface
72
73
 
73
74
  # RESERVE_MEMORY_PER_NODE = os.environ.get('RESERVE_MEMORY_PER_NODE')
@@ -390,7 +391,7 @@ class KubernetesController(ControllerInterface):
390
391
  def _dependency_name(self, service_name: str, container_name: str):
391
392
  return f"{self._deployment_name(service_name)}-{container_name}".lower()
392
393
 
393
- def add_config_mount(self, name: str, config_map: str, key: str, target_path: str, read_only=True, core=False):
394
+ def add_config_mount(self, name: str, config_map: str, key: Optional[str], target_path: str, read_only=True, core=False):
394
395
  volumes, mounts = self.volumes, self.mounts
395
396
  if core:
396
397
  volumes, mounts = self.core_volumes, self.core_mounts
@@ -1379,3 +1380,19 @@ class KubernetesController(ControllerInterface):
1379
1380
  for np in (existing_netpol - {np.metadata.name for np in network_policies}):
1380
1381
  self.net_api.delete_namespaced_network_policy(namespace=self.namespace, name=np,
1381
1382
  _request_timeout=API_TIMEOUT)
1383
+
1384
+ def update_config_map(self, data: dict, name: str):
1385
+ """Update or create a ConfigMap in Kubernetes."""
1386
+ config_map = V1ConfigMap(
1387
+ metadata=V1ObjectMeta(name=name, namespace=self.namespace),
1388
+ data=data
1389
+ )
1390
+ try:
1391
+ self.api.patch_namespaced_config_map(name=name, namespace=self.namespace, body=config_map,
1392
+ _request_timeout=API_TIMEOUT)
1393
+ except ApiException as error:
1394
+ if error.status == 404:
1395
+ self.api.create_namespaced_config_map(namespace=self.namespace, body=config_map,
1396
+ _request_timeout=API_TIMEOUT)
1397
+ else:
1398
+ raise
@@ -19,7 +19,6 @@ from typing import Any, Dict, Optional
19
19
 
20
20
  import elasticapm
21
21
  import yaml
22
-
23
22
  from assemblyline.common.constants import (
24
23
  SCALER_TIMEOUT_QUEUE,
25
24
  SERVICE_STATE_HASH,
@@ -44,14 +43,13 @@ from assemblyline.remote.datatypes.hash import ExpiringHash, Hash
44
43
  from assemblyline.remote.datatypes.queues.named import NamedQueue
45
44
  from assemblyline.remote.datatypes.queues.priority import PriorityQueue
46
45
  from assemblyline.remote.datatypes.queues.priority import length as pq_length
47
- from assemblyline_core.scaler.controllers import KubernetesController
46
+
47
+ from assemblyline_core.scaler import collection
48
+ from assemblyline_core.scaler.controllers import DockerController, KubernetesController
48
49
  from assemblyline_core.scaler.controllers.interface import ServiceControlError
49
50
  from assemblyline_core.server_base import ServiceStage, ThreadedCoreBase
50
51
  from assemblyline_core.updater.helper import get_registry_config
51
52
 
52
- from . import collection
53
- from .controllers import DockerController
54
-
55
53
  APM_SPAN_TYPE = 'scaler'
56
54
 
57
55
  # How often (in seconds) to download new service data, try to scale managed services,
@@ -298,6 +296,16 @@ class ScalerServer(ThreadedCoreBase):
298
296
  # be shared with privileged services.
299
297
  pass
300
298
 
299
+ # Create a configuration file specifically meant for privileged services to consume
300
+ # This should only contain the relevant information to connect to the databases
301
+ privileged_config = yaml.dump({
302
+ 'datastore': self.config.datastore.as_primitives(),
303
+ 'filestore': self.config.filestore.as_primitives(),
304
+ 'core': {
305
+ 'redis': self.config.core.redis.as_primitives()
306
+ }
307
+ })
308
+
301
309
  labels = {
302
310
  'app': 'assemblyline',
303
311
  'section': 'service',
@@ -340,7 +348,9 @@ class ScalerServer(ThreadedCoreBase):
340
348
  )
341
349
 
342
350
  # Add global configuration for privileged services
343
- self.controller.add_config_mount(KUBERNETES_AL_CONFIG, config_map=KUBERNETES_AL_CONFIG, key="config",
351
+ # Check if the ConfigMap already exists, if it does, update it
352
+ self.controller.update_config_map(data={'config': privileged_config}, name='privileged-service-config')
353
+ self.controller.add_config_mount(KUBERNETES_AL_CONFIG, config_map='privileged-service-config', key="config",
344
354
  target_path="/etc/assemblyline/config.yml", read_only=True, core=True)
345
355
 
346
356
  # If we're passed an override for server-server and it's defining an HTTPS connection, then add a global
@@ -382,7 +392,7 @@ class ScalerServer(ThreadedCoreBase):
382
392
 
383
393
  with open(os.path.join(DOCKER_CONFIGURATION_PATH, 'config.yml'), 'w') as handle:
384
394
  # Convert to JSON before converting to YAML to account for direct ODM representation errors
385
- yaml.dump(json.loads(self.config.json()), handle)
395
+ handle.write(privileged_config)
386
396
 
387
397
  with open(os.path.join(DOCKER_CONFIGURATION_PATH, 'classification.yml'), 'w') as handle:
388
398
  yaml.dump(get_classification().original_definition, handle)
@@ -1,23 +1,21 @@
1
- import os
2
- import requests
3
1
  import re
4
2
  import socket
5
3
  import string
6
4
  import time
7
-
8
- from assemblyline.common.version import FRAMEWORK_VERSION, SYSTEM_VERSION
9
- from assemblyline.odm.models.config import Config as SystemConfig, ServiceRegistry
10
- from assemblyline.odm.models.service import Service as ServiceConfig, DockerConfig
11
-
12
5
  from base64 import b64encode
13
6
  from collections import defaultdict
14
7
  from logging import Logger
15
8
  from typing import Dict, List
16
- from packaging.version import parse, Version
17
9
  from urllib.parse import urlencode
18
10
 
11
+ import requests
12
+ from assemblyline.common.version import FRAMEWORK_VERSION, SYSTEM_VERSION
13
+ from assemblyline.odm.models.config import Config as SystemConfig
14
+ from assemblyline.odm.models.config import ServiceRegistry
15
+ from assemblyline.odm.models.service import DockerConfig
16
+ from assemblyline.odm.models.service import Service as ServiceConfig
19
17
  from azure.identity import DefaultAzureCredential
20
-
18
+ from packaging.version import Version, parse
21
19
 
22
20
  DEFAULT_DOCKER_REGISTRY = "hub.docker.com"
23
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: assemblyline-core
3
- Version: 4.6.1.dev222
3
+ Version: 4.6.1.dev225
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.6.1.dev222