assemblyline-core 4.5.1.dev181__tar.gz → 4.5.1.dev183__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.dev181 → assemblyline-core-4.5.1.dev183}/PKG-INFO +1 -1
  2. assemblyline-core-4.5.1.dev183/assemblyline_core/VERSION +1 -0
  3. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/updater/helper.py +57 -5
  4. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/updater/run_updater.py +1 -0
  5. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core.egg-info/PKG-INFO +1 -1
  6. assemblyline-core-4.5.1.dev181/assemblyline_core/VERSION +0 -1
  7. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/LICENCE.md +0 -0
  8. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/README.md +0 -0
  9. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/__init__.py +0 -0
  10. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/alerter/__init__.py +0 -0
  11. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/alerter/processing.py +0 -0
  12. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/alerter/run_alerter.py +0 -0
  13. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/archiver/__init__.py +0 -0
  14. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/archiver/run_archiver.py +0 -0
  15. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/badlist_client.py +0 -0
  16. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/dispatching/__init__.py +0 -0
  17. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/dispatching/__main__.py +0 -0
  18. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/dispatching/client.py +0 -0
  19. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/dispatching/dispatcher.py +0 -0
  20. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/dispatching/schedules.py +0 -0
  21. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/dispatching/timeout.py +0 -0
  22. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/expiry/__init__.py +0 -0
  23. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/expiry/run_expiry.py +0 -0
  24. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/ingester/__init__.py +0 -0
  25. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/ingester/__main__.py +0 -0
  26. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/ingester/constants.py +0 -0
  27. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/ingester/ingester.py +0 -0
  28. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/metrics/__init__.py +0 -0
  29. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/metrics/es_metrics.py +0 -0
  30. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
  31. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/metrics/helper.py +0 -0
  32. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/metrics/metrics_server.py +0 -0
  33. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
  34. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
  35. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
  36. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/plumber/__init__.py +0 -0
  37. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/plumber/run_plumber.py +0 -0
  38. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/replay/__init__.py +0 -0
  39. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/replay/client.py +0 -0
  40. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/replay/creator/__init__.py +0 -0
  41. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/replay/creator/run.py +0 -0
  42. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/replay/creator/run_worker.py +0 -0
  43. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/replay/loader/__init__.py +0 -0
  44. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/replay/loader/run.py +0 -0
  45. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/replay/loader/run_worker.py +0 -0
  46. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/replay/replay.py +0 -0
  47. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/safelist_client.py +0 -0
  48. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/scaler/__init__.py +0 -0
  49. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/scaler/collection.py +0 -0
  50. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/scaler/controllers/__init__.py +0 -0
  51. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
  52. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/scaler/controllers/interface.py +0 -0
  53. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
  54. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/scaler/run_scaler.py +0 -0
  55. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/scaler/scaler_server.py +0 -0
  56. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/server_base.py +0 -0
  57. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/signature_client.py +0 -0
  58. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/submission_client.py +0 -0
  59. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/tasking_client.py +0 -0
  60. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/updater/__init__.py +0 -0
  61. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/vacuum/__init__.py +0 -0
  62. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/vacuum/crawler.py +0 -0
  63. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/vacuum/department_map.py +0 -0
  64. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/vacuum/safelist.py +0 -0
  65. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/vacuum/stream_map.py +0 -0
  66. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/vacuum/worker.py +0 -0
  67. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/workflow/__init__.py +0 -0
  68. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core/workflow/run_workflow.py +0 -0
  69. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core.egg-info/SOURCES.txt +0 -0
  70. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core.egg-info/dependency_links.txt +0 -0
  71. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core.egg-info/requires.txt +0 -0
  72. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/assemblyline_core.egg-info/top_level.txt +0 -0
  73. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/setup.cfg +0 -0
  74. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/setup.py +0 -0
  75. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_alerter.py +0 -0
  76. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_badlist_client.py +0 -0
  77. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_dispatcher.py +0 -0
  78. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_expiry.py +0 -0
  79. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_plumber.py +0 -0
  80. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_replay.py +0 -0
  81. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_safelist_client.py +0 -0
  82. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_scaler.py +0 -0
  83. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_scheduler.py +0 -0
  84. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_signature_client.py +0 -0
  85. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_simulation.py +0 -0
  86. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_vacuum.py +0 -0
  87. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/test/test_worker_ingest.py +0 -0
  88. {assemblyline-core-4.5.1.dev181 → assemblyline-core-4.5.1.dev183}/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.dev181
3
+ Version: 4.5.1.dev183
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.dev183
@@ -62,6 +62,40 @@ class DockerRegistry(ContainerRegistry):
62
62
  return resp_data['tags'] or []
63
63
  return []
64
64
 
65
+ class AzureContainerRegistry(ContainerRegistry):
66
+ def _get_proprietary_registry_tags(self, server, image_name, auth, verify, proxies=None, token_server=None):
67
+ # Find latest tag for each types
68
+ url = f"https://{server}/v2/{image_name}/tags/list"
69
+
70
+ # Get tag list
71
+ headers = {}
72
+ if auth:
73
+ headers["Authorization"] = auth
74
+
75
+ # Attempt request with provided credentials alone
76
+ resp = self._perform_request(url, headers, verify, proxies)
77
+
78
+ if not resp:
79
+ # Authentication with just credentials failed, moving over to generating a bearer token
80
+
81
+ # Retrieve token for authentication: https://azure.github.io/acr/Token-BasicAuth.html#using-the-token-api
82
+ token_url = f"https://{server}/oauth2/token?scope=repository:{image_name}:metadata_read,pull&service={server}"
83
+ resp = self._perform_request(token_url, headers, verify, proxies)
84
+ if resp and resp.ok:
85
+ # Request to obtain token was successful, set Authorization header for registry API
86
+ token = resp.json().get('access_token')
87
+ headers["Authorization"] = f"Bearer {token}"
88
+
89
+ resp = self._perform_request(url, headers, verify, proxies)
90
+
91
+ # At this point, we should have a response from the API
92
+ if resp and resp.ok:
93
+ # Test for positive list of tags
94
+ resp_data = resp.json()
95
+ return resp_data['tags'] or []
96
+
97
+ return []
98
+
65
99
  class HarborRegistry(ContainerRegistry):
66
100
  def _get_proprietary_registry_tags(self, server, image_name, auth, verify, proxies=None, token_server=None):
67
101
  # Determine project/repo IDs from image name
@@ -158,7 +192,11 @@ def get_latest_tag_for_service(
158
192
  # We're assuming that if only a password is given, then this is a token
159
193
  auth = f"Bearer {service_config.docker_config.registry_password}"
160
194
 
161
- registry = REGISTRY_TYPE_MAPPING[service_config.docker_config.registry_type]
195
+ if server.endswith(".azurecr.io"):
196
+ # This is an Azure Container Registry based on the server name
197
+ registry = AzureContainerRegistry()
198
+ else:
199
+ registry = REGISTRY_TYPE_MAPPING[service_config.docker_config.registry_type]
162
200
  token_server = None
163
201
  proxies = None
164
202
  for reg_conf in system_config.core.updater.registry_configs:
@@ -177,7 +215,7 @@ def get_latest_tag_for_service(
177
215
 
178
216
  # Pre-filter tags to only consider 'compatible' tags relative to the running system
179
217
  tags = [t for t in tags
180
- if re.match(f"({FRAMEWORK_VERSION})[.]({SYSTEM_VERSION})[.]\\d+[.]({update_channel})\\d+", t)]
218
+ if re.match(f"({FRAMEWORK_VERSION})\.({SYSTEM_VERSION})\.\\d+\.({update_channel})\\d+", t)]
181
219
 
182
220
  if not tags:
183
221
  logger.warning(f"{prefix}Cannot fetch latest tag for service {service_name} - {image_name}"
@@ -212,14 +250,28 @@ def _get_dockerhub_tags(image_name, update_channel, proxies=None):
212
250
  # Find latest tag for each types
213
251
  rv = []
214
252
  namespace, repository = image_name.split('/', 1)
215
- url = f"https://{DEFAULT_DOCKER_REGISTRY}/v2/namespaces/{namespace}/repositories/{repository}/tags"
216
- f"?page_size=50&page=1&name={update_channel}"
253
+ url = f"https://{DEFAULT_DOCKER_REGISTRY}/v2/namespaces/{namespace}/repositories/{repository}/tags" \
254
+ f"?page_size=50&page=1&name={update_channel}&ordering=last_updated"
217
255
 
218
256
  while True:
219
257
  resp = requests.get(url, proxies=proxies)
220
258
  if resp.ok:
221
259
  resp_data = resp.json()
222
- rv.extend([x['name'] for x in resp_data['results']])
260
+ if namespace == "cccs":
261
+ # The tags are coming from a repository managed by the Assemblyline team
262
+ for x in resp_data['results']:
263
+ tag_name = x['name']
264
+ if tag_name == f"{FRAMEWORK_VERSION}.{SYSTEM_VERSION}.{update_channel}":
265
+ # Ignore tag aliases containing the update_channel
266
+ continue
267
+
268
+ if tag_name.startswith(f"{FRAMEWORK_VERSION}.{SYSTEM_VERSION}"):
269
+ # Because the order of paging is based on `last_updated`,
270
+ # we can return the first valid candidate
271
+ return [tag_name]
272
+ else:
273
+ # The tags are coming from another repository, so we're don't know the ordering of tags
274
+ rv.extend([x['name'] for x in resp_data['results']])
223
275
  # Page until there are no results left
224
276
  url = resp_data.get('next', None)
225
277
  if url is None:
@@ -337,6 +337,7 @@ class KubernetesUpdateInterface:
337
337
  priority_class_name=self.priority_class,
338
338
  service_account_name=docker_config.service_account or self.default_service_account or PRIVILEGED_SERVICE_ACCOUNT_NAME,
339
339
  affinity=selector_to_node_affinity(self.linux_node_selector),
340
+ tolerations=self.default_service_tolerations
340
341
  )
341
342
 
342
343
  if use_pull_secret:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.5.1.dev181
3
+ Version: 4.5.1.dev183
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.dev181