assemblyline-core 4.7.5.dev109__tar.gz → 4.7.5.dev111__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.dev111}/PKG-INFO +1 -1
- assemblyline_core-4.7.5.dev111/assemblyline_core/VERSION +1 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +27 -23
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/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.dev111}/LICENCE.md +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/README.md +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/alerter/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/alerter/processing.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/alerter/run_alerter.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/archiver/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/archiver/run_archiver.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/badlist_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/dispatching/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/dispatching/client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/dispatching/dispatcher.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/dispatching/schedules.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/expiry/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/expiry/run_expiry.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/ingester/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/ingester/constants.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/ingester/ingester.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/metrics/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/metrics/es_metrics.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/metrics/helper.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/metrics/metrics_server.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/replay/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/replay/client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/replay/creator/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/replay/creator/run.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/replay/creator/run_worker.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/replay/loader/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/replay/loader/run.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/replay/loader/run_worker.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/replay/replay.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/safelist_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/scaler/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/scaler/collection.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/scaler/controllers/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/scaler/controllers/interface.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/scaler/run_scaler.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/scaler/scaler_server.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/server_base.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/signature_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/submission_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/tasking_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/updater/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/updater/helper.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/updater/run_updater.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/vacuum/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/vacuum/crawler.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/vacuum/department_map.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/vacuum/safelist.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/vacuum/stream_map.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/vacuum/worker.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/workflow/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core/workflow/run_workflow.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core.egg-info/SOURCES.txt +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core.egg-info/dependency_links.txt +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core.egg-info/requires.txt +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/assemblyline_core.egg-info/top_level.txt +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/setup.cfg +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/setup.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_alerter.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_badlist_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_expiry.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_replay.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_safelist_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_scaler.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_scheduler.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_signature_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_tasking_client.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_updater_helper.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_vacuum.py +0 -0
- {assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_workflow.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.7.5.dev111
|
|
@@ -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,15 +463,16 @@ 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
|
|
474
|
+
if not isinstance(event, dict) or event['type'] == 'BOOKMARK':
|
|
475
|
+
continue
|
|
480
476
|
|
|
481
477
|
name: str = event['raw_object']['metadata']['name']
|
|
482
478
|
|
|
@@ -510,7 +506,7 @@ class KubernetesController(ControllerInterface):
|
|
|
510
506
|
self._node_pool_max_ram = max_ram
|
|
511
507
|
|
|
512
508
|
def _monitor_pods(self):
|
|
513
|
-
watch =
|
|
509
|
+
watch = Watch()
|
|
514
510
|
log_cache = CacheDict(cache_len=8000)
|
|
515
511
|
per_node_containers: dict[str, dict[str, tuple[float, float]]] = defaultdict(dict)
|
|
516
512
|
per_node_namespaced_containers: dict[str, dict[str, tuple[float, float]]] = defaultdict(dict)
|
|
@@ -519,17 +515,18 @@ class KubernetesController(ControllerInterface):
|
|
|
519
515
|
self._pod_used_namespace_cpu = defaultdict(float)
|
|
520
516
|
self._pod_used_namespace_ram = defaultdict(float)
|
|
521
517
|
|
|
518
|
+
kwargs = dict(WATCH_ARGS)
|
|
522
519
|
if self.cluster_pod_list:
|
|
523
520
|
list_pods = self.api.list_pod_for_all_namespaces
|
|
524
|
-
kwargs = dict()
|
|
525
521
|
else:
|
|
526
522
|
list_pods = self.api.list_namespaced_pod
|
|
527
|
-
kwargs =
|
|
523
|
+
kwargs['namespace'] = self.namespace
|
|
528
524
|
|
|
529
|
-
for event in watch.stream(func=list_pods,
|
|
530
|
-
_request_timeout=WATCH_API_TIMEOUT, **kwargs):
|
|
525
|
+
for event in watch.stream(func=list_pods, **kwargs):
|
|
531
526
|
if not self.running:
|
|
532
527
|
break
|
|
528
|
+
if not isinstance(event, dict) or event['type'] == 'BOOKMARK':
|
|
529
|
+
continue
|
|
533
530
|
|
|
534
531
|
pod_name = "Unknown Pod"
|
|
535
532
|
try:
|
|
@@ -588,7 +585,7 @@ class KubernetesController(ControllerInterface):
|
|
|
588
585
|
self._pod_used_namespace_ram[node] = sum(memory_used) + memory_unrestricted * mean(memory_used)
|
|
589
586
|
|
|
590
587
|
def _monitor_quotas(self):
|
|
591
|
-
watch =
|
|
588
|
+
watch = Watch()
|
|
592
589
|
cpu_limits = {}
|
|
593
590
|
cpu_used = {}
|
|
594
591
|
mem_limits = {}
|
|
@@ -600,9 +597,11 @@ class KubernetesController(ControllerInterface):
|
|
|
600
597
|
self._quota_mem_used = None
|
|
601
598
|
|
|
602
599
|
for event in watch.stream(func=self.api.list_namespaced_resource_quota, namespace=self.namespace,
|
|
603
|
-
|
|
600
|
+
**WATCH_ARGS):
|
|
604
601
|
if not self.running:
|
|
605
602
|
break
|
|
603
|
+
if not isinstance(event, dict) or event['type'] == 'BOOKMARK':
|
|
604
|
+
continue
|
|
606
605
|
|
|
607
606
|
name = event['raw_object']['metadata']['name']
|
|
608
607
|
if 'scope_selector' in event['raw_object']['spec'] or 'scopes' in event['raw_object']['spec']:
|
|
@@ -668,7 +667,7 @@ class KubernetesController(ControllerInterface):
|
|
|
668
667
|
self._quota_mem_used = None
|
|
669
668
|
|
|
670
669
|
def _monitor_deployments(self):
|
|
671
|
-
watch =
|
|
670
|
+
watch = Watch()
|
|
672
671
|
|
|
673
672
|
self._deployment_targets = {}
|
|
674
673
|
self._deployment_unavailable = {}
|
|
@@ -676,7 +675,12 @@ class KubernetesController(ControllerInterface):
|
|
|
676
675
|
|
|
677
676
|
for event in watch.stream(func=self.apps_api.list_namespaced_deployment,
|
|
678
677
|
namespace=self.namespace, label_selector=label_selector,
|
|
679
|
-
|
|
678
|
+
**WATCH_ARGS):
|
|
679
|
+
if not self.running:
|
|
680
|
+
break
|
|
681
|
+
if not isinstance(event, dict) or event['type'] == 'BOOKMARK':
|
|
682
|
+
continue
|
|
683
|
+
|
|
680
684
|
if 'dependency_for' in event['raw_object']['metadata']['labels']:
|
|
681
685
|
continue
|
|
682
686
|
|
|
@@ -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.dev111}/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.dev111}/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.dev111}/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.dev111}/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.dev111}/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.dev111}/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.dev111}/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.dev111}/test/test_signature_client.py
RENAMED
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_tasking_client.py
RENAMED
|
File without changes
|
{assemblyline_core-4.7.5.dev109 → assemblyline_core-4.7.5.dev111}/test/test_updater_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|