assemblyline-core 4.7.5.dev121__tar.gz → 4.7.5.dev123__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.dev121 → assemblyline_core-4.7.5.dev123}/PKG-INFO +1 -1
- assemblyline_core-4.7.5.dev123/assemblyline_core/VERSION +1 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +52 -28
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core.egg-info/PKG-INFO +1 -1
- assemblyline_core-4.7.5.dev121/assemblyline_core/VERSION +0 -1
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/LICENCE.md +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/README.md +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/alerter/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/alerter/processing.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/alerter/run_alerter.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/archiver/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/archiver/run_archiver.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/badlist_client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/dispatching/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/dispatching/client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/dispatching/dispatcher.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/dispatching/schedules.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/expiry/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/expiry/run_expiry.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/ingester/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/ingester/constants.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/ingester/ingester.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/metrics/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/metrics/es_metrics.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/metrics/helper.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/metrics/metrics_server.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/replay/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/replay/client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/replay/creator/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/replay/creator/run.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/replay/creator/run_worker.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/replay/loader/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/replay/loader/run.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/replay/loader/run_worker.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/replay/replay.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/safelist_client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/scaler/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/scaler/collection.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/scaler/controllers/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/scaler/controllers/interface.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/scaler/run_scaler.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/scaler/scaler_server.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/server_base.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/signature_client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/submission_client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/tasking_client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/updater/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/updater/helper.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/updater/run_updater.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/vacuum/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/vacuum/crawler.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/vacuum/department_map.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/vacuum/safelist.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/vacuum/stream_map.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/vacuum/worker.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/workflow/__init__.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core/workflow/run_workflow.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core.egg-info/SOURCES.txt +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core.egg-info/dependency_links.txt +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core.egg-info/requires.txt +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/assemblyline_core.egg-info/top_level.txt +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/setup.cfg +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/setup.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_alerter.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_badlist_client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_expiry.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_replay.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_safelist_client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_scaler.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_scheduler.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_signature_client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_tasking_client.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_updater_helper.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_vacuum.py +0 -0
- {assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_workflow.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.7.5.dev123
|
|
@@ -356,10 +356,11 @@ class KubernetesController(ControllerInterface):
|
|
|
356
356
|
node_background = threading.Thread(target=self._loop_forever(self._monitor_node_pool), daemon=True)
|
|
357
357
|
node_background.start()
|
|
358
358
|
|
|
359
|
-
self._pod_used_ram: dict[str, float] = defaultdict(float)
|
|
360
|
-
self._pod_used_cpu: dict[str, float] = defaultdict(float)
|
|
361
|
-
self._pod_used_namespace_ram: dict[str, float] = defaultdict(float)
|
|
362
|
-
self._pod_used_namespace_cpu: dict[str, float] = defaultdict(float)
|
|
359
|
+
self._pod_used_ram: dict[str | None, float] = defaultdict(float)
|
|
360
|
+
self._pod_used_cpu: dict[str | None, float] = defaultdict(float)
|
|
361
|
+
self._pod_used_namespace_ram: dict[str | None, float] = defaultdict(float)
|
|
362
|
+
self._pod_used_namespace_cpu: dict[str | None, float] = defaultdict(float)
|
|
363
|
+
self.node_count = 0
|
|
363
364
|
pod_background = threading.Thread(target=self._loop_forever(self._monitor_pods), daemon=True)
|
|
364
365
|
pod_background.start()
|
|
365
366
|
|
|
@@ -440,7 +441,7 @@ class KubernetesController(ControllerInterface):
|
|
|
440
441
|
self._create_deployment(profile.name, self._deployment_name(profile.name),
|
|
441
442
|
profile.container_config, profile.shutdown_seconds, scale,
|
|
442
443
|
change_key=profile.config_blob, core_mounts=profile.privileged,
|
|
443
|
-
security_context=self.security_policy)
|
|
444
|
+
security_context=self.security_policy)
|
|
444
445
|
self._external_profiles[profile.name] = profile
|
|
445
446
|
|
|
446
447
|
def _loop_forever(self, function):
|
|
@@ -459,7 +460,7 @@ class KubernetesController(ControllerInterface):
|
|
|
459
460
|
self.logger.exception(f"Error in {function.__name__}")
|
|
460
461
|
return _function
|
|
461
462
|
|
|
462
|
-
def _monitor_node_pool(self):
|
|
463
|
+
def _monitor_node_pool(self) -> None:
|
|
463
464
|
self._node_pool_max_cpu = 0
|
|
464
465
|
self._node_pool_max_ram = 0
|
|
465
466
|
self.node_count = 0
|
|
@@ -497,19 +498,19 @@ class KubernetesController(ControllerInterface):
|
|
|
497
498
|
|
|
498
499
|
# Update the totals
|
|
499
500
|
self.node_count = len(self.ready_nodes)
|
|
500
|
-
max_cpu = 0
|
|
501
|
-
max_ram = 0
|
|
501
|
+
max_cpu = 0.0
|
|
502
|
+
max_ram = 0.0
|
|
502
503
|
for cpu, ram in self.ready_nodes.values():
|
|
503
504
|
max_cpu += cpu
|
|
504
505
|
max_ram += ram
|
|
505
506
|
self._node_pool_max_cpu = max_cpu
|
|
506
507
|
self._node_pool_max_ram = max_ram
|
|
507
508
|
|
|
508
|
-
def _monitor_pods(self):
|
|
509
|
+
def _monitor_pods(self) -> None:
|
|
509
510
|
watch = Watch()
|
|
510
511
|
log_cache = CacheDict(cache_len=8000)
|
|
511
|
-
per_node_containers: dict[str, dict[str, tuple[float, float]]] = defaultdict(dict)
|
|
512
|
-
per_node_namespaced_containers: dict[str, dict[str, tuple[float, float]]] = defaultdict(dict)
|
|
512
|
+
per_node_containers: dict[str | None, dict[str, tuple[float, float]]] = defaultdict(dict)
|
|
513
|
+
per_node_namespaced_containers: dict[str | None, dict[str, tuple[float, float]]] = defaultdict(dict)
|
|
513
514
|
self._pod_used_cpu = defaultdict(float)
|
|
514
515
|
self._pod_used_ram = defaultdict(float)
|
|
515
516
|
self._pod_used_namespace_cpu = defaultdict(float)
|
|
@@ -529,19 +530,34 @@ class KubernetesController(ControllerInterface):
|
|
|
529
530
|
continue
|
|
530
531
|
|
|
531
532
|
pod_name = "Unknown Pod"
|
|
533
|
+
changed_nodes: list[str | None] = []
|
|
532
534
|
try:
|
|
535
|
+
# Read some basic information about the pod we are looking at
|
|
533
536
|
pod_name = event['raw_object']['metadata']['name']
|
|
534
537
|
uid = event['raw_object']['metadata']['uid']
|
|
535
538
|
namespace = event['raw_object']['metadata']['namespace']
|
|
536
|
-
node = event['raw_object']['spec']
|
|
539
|
+
node = event['raw_object']['spec'].get('nodeName', None)
|
|
540
|
+
changed_nodes.append(node)
|
|
541
|
+
|
|
537
542
|
containers = per_node_containers[node]
|
|
538
543
|
namespaced_containers = per_node_namespaced_containers[node]
|
|
539
544
|
|
|
540
545
|
if event['type'] in ['ADDED', 'MODIFIED']:
|
|
541
546
|
for container in event['raw_object']['spec']['containers']:
|
|
542
|
-
|
|
547
|
+
key = f"{uid}-{container['name']}"
|
|
548
|
+
|
|
549
|
+
# If the pod has already been seen without a node assigned we will have records
|
|
550
|
+
# for it under the None node, if we see it again with a non-null node we need to
|
|
551
|
+
# clean up those duplicate records.
|
|
552
|
+
if node is not None:
|
|
553
|
+
per_node_namespaced_containers[None].pop(key, None)
|
|
554
|
+
if per_node_containers[None].pop(key, None) is not None:
|
|
555
|
+
changed_nodes.append(None)
|
|
556
|
+
|
|
557
|
+
# Write resource records under the current node's container -> resource map
|
|
558
|
+
containers[key] = get_resources(container)
|
|
543
559
|
if namespace == self.namespace:
|
|
544
|
-
namespaced_containers[
|
|
560
|
+
namespaced_containers[key] = get_resources(container)
|
|
545
561
|
for status in event['raw_object']['status'].get('containerStatuses', []):
|
|
546
562
|
restarts = status['restartCount']
|
|
547
563
|
if restarts > CONTAINER_RESTART_THRESHOLD and log_cache.get(pod_name, 0) <= restarts:
|
|
@@ -553,8 +569,12 @@ class KubernetesController(ControllerInterface):
|
|
|
553
569
|
f"with reason {detail.get('reason', 'UNKNOWN')}")
|
|
554
570
|
elif event['type'] == 'DELETED':
|
|
555
571
|
for container in event['raw_object']['spec']['containers']:
|
|
556
|
-
|
|
557
|
-
|
|
572
|
+
key = f"{uid}-{container['name']}"
|
|
573
|
+
containers.pop(key, None)
|
|
574
|
+
namespaced_containers.pop(key, None)
|
|
575
|
+
per_node_namespaced_containers[None].pop(key, None)
|
|
576
|
+
if per_node_containers[None].pop(key, None) is not None:
|
|
577
|
+
changed_nodes.append(None)
|
|
558
578
|
else:
|
|
559
579
|
continue
|
|
560
580
|
except KeyError as e:
|
|
@@ -566,23 +586,27 @@ class KubernetesController(ControllerInterface):
|
|
|
566
586
|
self.logger.exception(f"Couldn't parse container information for {pod_name}: {e}")
|
|
567
587
|
continue
|
|
568
588
|
|
|
569
|
-
|
|
570
|
-
|
|
589
|
+
for node in changed_nodes:
|
|
590
|
+
containers = per_node_containers[node]
|
|
591
|
+
namespaced_containers = per_node_namespaced_containers[node]
|
|
592
|
+
|
|
593
|
+
memory_unrestricted = sum(1 for _, mem in containers.values() if mem is None)
|
|
594
|
+
cpu_unrestricted = sum(1 for cpu, _ in containers.values() if cpu is None)
|
|
571
595
|
|
|
572
|
-
|
|
573
|
-
|
|
596
|
+
memory_used = [mem for _, mem in containers.values() if mem is not None]
|
|
597
|
+
cpu_used = [cpu for cpu, _ in containers.values() if cpu is not None]
|
|
574
598
|
|
|
575
|
-
|
|
576
|
-
|
|
599
|
+
self._pod_used_cpu[node] = sum(cpu_used) + cpu_unrestricted * mean(cpu_used)
|
|
600
|
+
self._pod_used_ram[node] = sum(memory_used) + memory_unrestricted * mean(memory_used)
|
|
577
601
|
|
|
578
|
-
|
|
579
|
-
|
|
602
|
+
memory_unrestricted = sum(1 for _, mem in namespaced_containers.values() if mem is None)
|
|
603
|
+
cpu_unrestricted = sum(1 for cpu, _ in namespaced_containers.values() if cpu is None)
|
|
580
604
|
|
|
581
|
-
|
|
582
|
-
|
|
605
|
+
memory_used = [mem for _, mem in namespaced_containers.values() if mem is not None]
|
|
606
|
+
cpu_used = [cpu for cpu, _ in namespaced_containers.values() if cpu is not None]
|
|
583
607
|
|
|
584
|
-
|
|
585
|
-
|
|
608
|
+
self._pod_used_namespace_cpu[node] = sum(cpu_used) + cpu_unrestricted * mean(cpu_used)
|
|
609
|
+
self._pod_used_namespace_ram[node] = sum(memory_used) + memory_unrestricted * mean(memory_used)
|
|
586
610
|
|
|
587
611
|
def _monitor_quotas(self):
|
|
588
612
|
watch = Watch()
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.7.5.dev121
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/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.dev121 → assemblyline_core-4.7.5.dev123}/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.dev121 → assemblyline_core-4.7.5.dev123}/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.dev121 → assemblyline_core-4.7.5.dev123}/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.dev121 → assemblyline_core-4.7.5.dev123}/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.dev121 → assemblyline_core-4.7.5.dev123}/test/test_badlist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_safelist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_signature_client.py
RENAMED
|
File without changes
|
{assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_tasking_client.py
RENAMED
|
File without changes
|
{assemblyline_core-4.7.5.dev121 → assemblyline_core-4.7.5.dev123}/test/test_updater_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|