assemblyline-core 4.5.1.dev108__tar.gz → 4.5.1.dev109__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 (88) hide show
  1. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/PKG-INFO +1 -1
  2. assemblyline-core-4.5.1.dev109/assemblyline_core/VERSION +1 -0
  3. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/scaler/controllers/docker_ctl.py +12 -6
  4. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/scaler/scaler_server.py +19 -0
  5. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/updater/run_updater.py +22 -3
  6. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core.egg-info/PKG-INFO +1 -1
  7. assemblyline-core-4.5.1.dev108/assemblyline_core/VERSION +0 -1
  8. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/LICENCE.md +0 -0
  9. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/README.md +0 -0
  10. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/__init__.py +0 -0
  11. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/alerter/__init__.py +0 -0
  12. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/alerter/processing.py +0 -0
  13. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/alerter/run_alerter.py +0 -0
  14. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/archiver/__init__.py +0 -0
  15. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/archiver/run_archiver.py +0 -0
  16. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/badlist_client.py +0 -0
  17. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/dispatching/__init__.py +0 -0
  18. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/dispatching/__main__.py +0 -0
  19. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/dispatching/client.py +0 -0
  20. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/dispatching/dispatcher.py +0 -0
  21. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/dispatching/schedules.py +0 -0
  22. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/dispatching/timeout.py +0 -0
  23. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/expiry/__init__.py +0 -0
  24. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/expiry/run_expiry.py +0 -0
  25. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/ingester/__init__.py +0 -0
  26. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/ingester/__main__.py +0 -0
  27. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/ingester/constants.py +0 -0
  28. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/ingester/ingester.py +0 -0
  29. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/metrics/__init__.py +0 -0
  30. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/metrics/es_metrics.py +0 -0
  31. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
  32. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/metrics/helper.py +0 -0
  33. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/metrics/metrics_server.py +0 -0
  34. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
  35. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
  36. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
  37. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/plumber/__init__.py +0 -0
  38. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/plumber/run_plumber.py +0 -0
  39. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/replay/__init__.py +0 -0
  40. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/replay/client.py +0 -0
  41. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/replay/creator/__init__.py +0 -0
  42. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/replay/creator/run.py +0 -0
  43. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/replay/creator/run_worker.py +0 -0
  44. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/replay/loader/__init__.py +0 -0
  45. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/replay/loader/run.py +0 -0
  46. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/replay/loader/run_worker.py +0 -0
  47. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/replay/replay.py +0 -0
  48. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/safelist_client.py +0 -0
  49. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/scaler/__init__.py +0 -0
  50. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/scaler/collection.py +0 -0
  51. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/scaler/controllers/__init__.py +0 -0
  52. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/scaler/controllers/interface.py +0 -0
  53. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
  54. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/scaler/run_scaler.py +0 -0
  55. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/server_base.py +0 -0
  56. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/signature_client.py +0 -0
  57. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/submission_client.py +0 -0
  58. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/tasking_client.py +0 -0
  59. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/updater/__init__.py +0 -0
  60. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/updater/helper.py +0 -0
  61. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/vacuum/__init__.py +0 -0
  62. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/vacuum/crawler.py +0 -0
  63. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/vacuum/department_map.py +0 -0
  64. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/vacuum/safelist.py +0 -0
  65. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/vacuum/stream_map.py +0 -0
  66. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/vacuum/worker.py +0 -0
  67. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/workflow/__init__.py +0 -0
  68. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core/workflow/run_workflow.py +0 -0
  69. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core.egg-info/SOURCES.txt +0 -0
  70. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core.egg-info/dependency_links.txt +0 -0
  71. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core.egg-info/requires.txt +0 -0
  72. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/assemblyline_core.egg-info/top_level.txt +0 -0
  73. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/setup.cfg +0 -0
  74. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/setup.py +0 -0
  75. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_alerter.py +0 -0
  76. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_badlist_client.py +0 -0
  77. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_dispatcher.py +0 -0
  78. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_expiry.py +0 -0
  79. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_plumber.py +0 -0
  80. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_replay.py +0 -0
  81. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_safelist_client.py +0 -0
  82. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_scaler.py +0 -0
  83. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_scheduler.py +0 -0
  84. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_signature_client.py +0 -0
  85. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_simulation.py +0 -0
  86. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_vacuum.py +0 -0
  87. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_worker_ingest.py +0 -0
  88. {assemblyline-core-4.5.1.dev108 → assemblyline-core-4.5.1.dev109}/test/test_worker_submit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.5.1.dev108
3
+ Version: 4.5.1.dev109
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.5.1.dev109
@@ -191,7 +191,7 @@ class DockerController(ControllerInterface):
191
191
  # Define environment variables
192
192
  env = [f'{_e.name}={_e.value}' for _e in cfg.environment]
193
193
  env += [f'{name}={os.environ[name]}' for name in INHERITED_VARIABLES if name in os.environ]
194
- env += [f'LOG_LEVEL={self.log_level}']
194
+ env += [f'LOG_LEVEL={self.log_level}', f'AL_SERVICE_NAME={service_name}']
195
195
  env += [f'{_n}={_v}' for _n, _v in self._service_limited_env[service_name].items()]
196
196
  if prof.privileged:
197
197
  env.append('PRIVILEGED=true')
@@ -259,6 +259,15 @@ class DockerController(ControllerInterface):
259
259
  env += [f'{name}={os.environ[name]}' for name in INHERITED_VARIABLES if name in os.environ]
260
260
  env += [f'LOG_LEVEL={self.log_level}', f'AL_SERVICE_NAME={service_name}']
261
261
 
262
+ healthcheck = {
263
+ 'test': ["CMD", "python3", "-m", "assemblyline_v4_service.healthz"],
264
+ 'interval': SERVICE_LIVENESS_PERIOD,
265
+ 'timeout': SERVICE_LIVENESS_TIMEOUT
266
+ }
267
+
268
+ if 'assemblyline' not in cfg.image:
269
+ healthcheck = None
270
+
262
271
  container = self.client.containers.run(
263
272
  image=cfg.image,
264
273
  name=name,
@@ -274,12 +283,9 @@ class DockerController(ControllerInterface):
274
283
  environment=env,
275
284
  detach=True,
276
285
  # ports=ports,
277
- healthcheck={
278
- 'test': ["CMD", "python3", "-m", "assemblyline_v4_service.healthz"],
279
- 'interval': SERVICE_LIVENESS_PERIOD,
280
- 'timeout': SERVICE_LIVENESS_TIMEOUT
281
- }
286
+ healthcheck=healthcheck
282
287
  )
288
+
283
289
  if core_container:
284
290
  self._connect_to_network(container, self.core_network, aliases=[hostname])
285
291
 
@@ -452,11 +452,30 @@ class ScalerServer(ThreadedCoreBase):
452
452
  self._sync_service(service)
453
453
 
454
454
  def sync_services(self):
455
+ last_synced_profiles = None
455
456
  while self.running:
456
457
  with apm_span(self.apm_client, 'sync_services'):
457
458
  self.log.info('Synchronizing service configuration')
458
459
  with self.profiles_lock:
459
460
  current_services = set(self.profiles.keys())
461
+
462
+ # Check to see if the service is progressing since it's last sync
463
+ if last_synced_profiles:
464
+ for service, profile in self.profiles.items():
465
+ # Assume there was no backlog initially if the service is new since last sync
466
+ last_synced_backlog = 0
467
+ if last_synced_profiles.get(service):
468
+ last_synced_backlog = last_synced_profiles[service].backlog
469
+
470
+ # Check to see if the backlog has increased and if the service has been running since
471
+ if profile.backlog and profile.backlog >= last_synced_backlog and \
472
+ profile.running_instances == 0 and profile.target_instances > 0:
473
+ # Restart the service in an attempt to resolve intermittent issues with container/pod
474
+ self.controller.restart(profile)
475
+
476
+ # Update the last synced profiles for next time
477
+ last_synced_profiles = self.profiles
478
+
460
479
  discovered_services: list[str] = []
461
480
 
462
481
  # Get all the service data
@@ -357,10 +357,24 @@ class KubernetesUpdateInterface:
357
357
 
358
358
  if blocking:
359
359
  try:
360
+ # Obtain the name of the pod that spawned from the Job
361
+ pod_name = self.api.list_namespaced_pod(namespace=self.namespace,
362
+ label_selector=",".join([f"{k}={v}"
363
+ for k, v in labels.items()]),
364
+ limit=1).items[0].metadata.name
360
365
  while not (status.failed or status.succeeded):
361
366
  time.sleep(3)
362
367
  status = self.batch_api.read_namespaced_job(namespace=self.namespace, name=name,
363
368
  _request_timeout=API_TIMEOUT).status
369
+ # Monitor container's waiting status state
370
+ pod_waiting_state = self.api.read_namespaced_pod(name=pod_name, namespace=self.namespace,
371
+ _request_timeout=API_TIMEOUT).status.container_statuses[0].state.waiting
372
+ # Check to see if we've encountered an issue before the container starts
373
+ if pod_waiting_state and pod_waiting_state.reason == "ImagePullBackOff":
374
+ # Delete job and raise exception
375
+ self.batch_api.delete_namespaced_job(name=name, namespace=self.namespace,
376
+ propagation_policy='Background', _request_timeout=API_TIMEOUT)
377
+ raise Exception(pod_waiting_state.message)
364
378
 
365
379
  self.batch_api.delete_namespaced_job(name=name, namespace=self.namespace,
366
380
  propagation_policy='Background', _request_timeout=API_TIMEOUT)
@@ -479,6 +493,13 @@ class ServiceUpdater(ThreadedCoreBase):
479
493
  image_name, tag_name, auth = get_latest_tag_for_service(
480
494
  service, self.config, self.log, prefix="[CI] ")
481
495
 
496
+ if not tag_name:
497
+ # Fallback to tag alias if we can't find a suitable versioned tag
498
+ self.log.warning("Unable to find a versioned tag for "
499
+ f"{self.config.services.preferred_update_channel} channel. "
500
+ f"Defaulting to '{tag}' tag...")
501
+ tag_name = tag
502
+
482
503
  docker_config = dict(image=f"{image_name}:{tag_name}")
483
504
  if auth:
484
505
  docker_config.update(dict(registry_username=auth['username'],
@@ -507,12 +528,10 @@ class ServiceUpdater(ThreadedCoreBase):
507
528
  blocking=True
508
529
  )
509
530
 
510
- service_key = f"{service_name}_{tag_name.replace('stable', '')}"
511
-
512
531
  except Exception as e:
513
532
  self.log.error(
514
533
  f"[CI] Service {service_name} has failed to install. Install procedure cancelled... [{str(e)}]")
515
- return service_key
534
+ return f"{service_name}_{str(tag_name).replace('stable', '')}"
516
535
 
517
536
  # Start up installs for services in parallel
518
537
  install_threads = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.5.1.dev108
3
+ Version: 4.5.1.dev109
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.5.1.dev108