assemblyline-core 4.7.5.dev109__tar.gz → 4.7.5.dev110__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.
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/PKG-INFO +1 -1
- assemblyline_core-4.7.5.dev110/assemblyline_core/VERSION +1 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +18 -23
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core.egg-info/PKG-INFO +1 -1
- assemblyline_core-4.7.5.dev109/assemblyline_core/VERSION +0 -1
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/LICENCE.md +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/README.md +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/alerter/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/alerter/processing.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/alerter/run_alerter.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/archiver/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/archiver/run_archiver.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/badlist_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/dispatching/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/dispatching/client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/dispatching/dispatcher.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/dispatching/schedules.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/expiry/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/expiry/run_expiry.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/ingester/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/ingester/constants.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/ingester/ingester.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/metrics/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/metrics/es_metrics.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/metrics/helper.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/metrics/metrics_server.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/creator/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/creator/run.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/creator/run_worker.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/loader/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/loader/run.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/loader/run_worker.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/replay.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/safelist_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/scaler/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/scaler/collection.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/scaler/controllers/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/scaler/controllers/interface.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/scaler/run_scaler.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/scaler/scaler_server.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/server_base.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/signature_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/submission_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/tasking_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/updater/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/updater/helper.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/updater/run_updater.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/vacuum/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/vacuum/crawler.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/vacuum/department_map.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/vacuum/safelist.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/vacuum/stream_map.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/vacuum/worker.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/workflow/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/workflow/run_workflow.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core.egg-info/SOURCES.txt +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core.egg-info/dependency_links.txt +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core.egg-info/requires.txt +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core.egg-info/top_level.txt +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/setup.cfg +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/setup.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_alerter.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_badlist_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_expiry.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_replay.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_safelist_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_scaler.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_scheduler.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_signature_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_tasking_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_updater_helper.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_vacuum.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_workflow.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.7.5.dev110
|
|
@@ -24,7 +24,8 @@ from cryptography import x509
|
|
|
24
24
|
from cryptography.hazmat.primitives import hashes, serialization
|
|
25
25
|
from cryptography.hazmat.primitives.asymmetric import rsa
|
|
26
26
|
from dateutil.tz import tzlocal
|
|
27
|
-
from kubernetes import client, config
|
|
27
|
+
from kubernetes import client, config
|
|
28
|
+
from kubernetes.watch import Watch
|
|
28
29
|
from kubernetes.client import (
|
|
29
30
|
V1Affinity,
|
|
30
31
|
V1Capabilities,
|
|
@@ -74,8 +75,6 @@ from assemblyline_core.scaler.controllers.interface import ControllerInterface
|
|
|
74
75
|
# RESERVE_MEMORY_PER_NODE = os.environ.get('RESERVE_MEMORY_PER_NODE')
|
|
75
76
|
|
|
76
77
|
API_TIMEOUT = 90
|
|
77
|
-
WATCH_TIMEOUT = 10 * 60
|
|
78
|
-
WATCH_API_TIMEOUT = WATCH_TIMEOUT + 10
|
|
79
78
|
CHANGE_KEY_NAME = 'al_change_key'
|
|
80
79
|
DEV_MODE = os.environ.get('DEV_MODE', 'false').lower() == 'true'
|
|
81
80
|
CONTAINER_RESTART_THRESHOLD = int(os.environ.get('CONTAINER_RESTART_THRESHOLD', 1))
|
|
@@ -92,6 +91,9 @@ RESTRICTED_POD_SECURITY_CONTEXT = V1SecurityContext(
|
|
|
92
91
|
allow_privilege_escalation=False,
|
|
93
92
|
seccomp_profile=V1SeccompProfile(type="RuntimeDefault")
|
|
94
93
|
)
|
|
94
|
+
WATCH_ARGS: dict[str, bool | str] = {
|
|
95
|
+
'allow_watch_bookmarks': True,
|
|
96
|
+
}
|
|
95
97
|
|
|
96
98
|
AL_ROOT_CA = os.environ.get('AL_ROOT_CA', '/etc/assemblyline/ssl/al_root-ca.crt')
|
|
97
99
|
AL_ROOT_CA_PK = os.environ.get('AL_ROOT_CA_PK', '/etc/assemblyline/ssl/al_root-ca.key')
|
|
@@ -134,13 +136,6 @@ class CacheDict(OrderedDict):
|
|
|
134
136
|
return val
|
|
135
137
|
|
|
136
138
|
|
|
137
|
-
class TypelessWatch(watch.Watch):
|
|
138
|
-
"""A kubernetes watch object that doesn't marshal the response."""
|
|
139
|
-
|
|
140
|
-
def get_return_type(self, func):
|
|
141
|
-
return None
|
|
142
|
-
|
|
143
|
-
|
|
144
139
|
def median(values: list[float]) -> float:
|
|
145
140
|
if len(values) == 0:
|
|
146
141
|
return 0
|
|
@@ -468,13 +463,12 @@ class KubernetesController(ControllerInterface):
|
|
|
468
463
|
self._node_pool_max_cpu = 0
|
|
469
464
|
self._node_pool_max_ram = 0
|
|
470
465
|
self.node_count = 0
|
|
471
|
-
watch =
|
|
466
|
+
watch = Watch()
|
|
472
467
|
self.ready_nodes: dict[str, tuple[float, float]] = {}
|
|
473
468
|
field_selector, label_selector = selector_to_list_filters(self.linux_node_selector)
|
|
474
469
|
|
|
475
|
-
for event in watch.stream(func=self.api.list_node,
|
|
476
|
-
|
|
477
|
-
_request_timeout=WATCH_API_TIMEOUT):
|
|
470
|
+
for event in watch.stream(func=self.api.list_node, field_selector=field_selector,
|
|
471
|
+
label_selector=label_selector, **WATCH_ARGS):
|
|
478
472
|
if not self.running:
|
|
479
473
|
break
|
|
480
474
|
|
|
@@ -510,7 +504,7 @@ class KubernetesController(ControllerInterface):
|
|
|
510
504
|
self._node_pool_max_ram = max_ram
|
|
511
505
|
|
|
512
506
|
def _monitor_pods(self):
|
|
513
|
-
watch =
|
|
507
|
+
watch = Watch()
|
|
514
508
|
log_cache = CacheDict(cache_len=8000)
|
|
515
509
|
per_node_containers: dict[str, dict[str, tuple[float, float]]] = defaultdict(dict)
|
|
516
510
|
per_node_namespaced_containers: dict[str, dict[str, tuple[float, float]]] = defaultdict(dict)
|
|
@@ -519,15 +513,14 @@ class KubernetesController(ControllerInterface):
|
|
|
519
513
|
self._pod_used_namespace_cpu = defaultdict(float)
|
|
520
514
|
self._pod_used_namespace_ram = defaultdict(float)
|
|
521
515
|
|
|
516
|
+
kwargs = dict(WATCH_ARGS)
|
|
522
517
|
if self.cluster_pod_list:
|
|
523
518
|
list_pods = self.api.list_pod_for_all_namespaces
|
|
524
|
-
kwargs = dict()
|
|
525
519
|
else:
|
|
526
520
|
list_pods = self.api.list_namespaced_pod
|
|
527
|
-
kwargs =
|
|
521
|
+
kwargs['namespace'] = self.namespace
|
|
528
522
|
|
|
529
|
-
for event in watch.stream(func=list_pods,
|
|
530
|
-
_request_timeout=WATCH_API_TIMEOUT, **kwargs):
|
|
523
|
+
for event in watch.stream(func=list_pods, **kwargs):
|
|
531
524
|
if not self.running:
|
|
532
525
|
break
|
|
533
526
|
|
|
@@ -588,7 +581,7 @@ class KubernetesController(ControllerInterface):
|
|
|
588
581
|
self._pod_used_namespace_ram[node] = sum(memory_used) + memory_unrestricted * mean(memory_used)
|
|
589
582
|
|
|
590
583
|
def _monitor_quotas(self):
|
|
591
|
-
watch =
|
|
584
|
+
watch = Watch()
|
|
592
585
|
cpu_limits = {}
|
|
593
586
|
cpu_used = {}
|
|
594
587
|
mem_limits = {}
|
|
@@ -600,9 +593,11 @@ class KubernetesController(ControllerInterface):
|
|
|
600
593
|
self._quota_mem_used = None
|
|
601
594
|
|
|
602
595
|
for event in watch.stream(func=self.api.list_namespaced_resource_quota, namespace=self.namespace,
|
|
603
|
-
|
|
596
|
+
**WATCH_ARGS):
|
|
604
597
|
if not self.running:
|
|
605
598
|
break
|
|
599
|
+
if not isinstance(event, dict):
|
|
600
|
+
continue
|
|
606
601
|
|
|
607
602
|
name = event['raw_object']['metadata']['name']
|
|
608
603
|
if 'scope_selector' in event['raw_object']['spec'] or 'scopes' in event['raw_object']['spec']:
|
|
@@ -668,7 +663,7 @@ class KubernetesController(ControllerInterface):
|
|
|
668
663
|
self._quota_mem_used = None
|
|
669
664
|
|
|
670
665
|
def _monitor_deployments(self):
|
|
671
|
-
watch =
|
|
666
|
+
watch = Watch()
|
|
672
667
|
|
|
673
668
|
self._deployment_targets = {}
|
|
674
669
|
self._deployment_unavailable = {}
|
|
@@ -676,7 +671,7 @@ class KubernetesController(ControllerInterface):
|
|
|
676
671
|
|
|
677
672
|
for event in watch.stream(func=self.apps_api.list_namespaced_deployment,
|
|
678
673
|
namespace=self.namespace, label_selector=label_selector,
|
|
679
|
-
|
|
674
|
+
**WATCH_ARGS):
|
|
680
675
|
if 'dependency_for' in event['raw_object']['metadata']['labels']:
|
|
681
676
|
continue
|
|
682
677
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.7.5.dev109
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/replay/replay.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/server_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/assemblyline_core/vacuum/worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_badlist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_safelist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_signature_client.py
RENAMED
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_tasking_client.py
RENAMED
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev110}/test/test_updater_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|