pybiolib 1.2.223__tar.gz → 1.2.243__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.
- {pybiolib-1.2.223 → pybiolib-1.2.243}/PKG-INFO +1 -1
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_runtime/runtime.py +11 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_api_client/biolib_app_api.py +21 -5
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_api_client/job_types.py +2 -1
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_errors.py +3 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/executors/docker_executor.py +27 -15
- {pybiolib-1.2.223 → pybiolib-1.2.243}/pyproject.toml +1 -1
- {pybiolib-1.2.223 → pybiolib-1.2.243}/LICENSE +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/PYPI_README.md +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_data_record/data_record.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/data_record/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/data_record/data_record.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/data_record/push_data.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/file_utils.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/fuse_mount/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/http_client.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/lfs/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/lfs/cache.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/libs/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/libs/fusepy/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/push_application.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/runtime.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/types/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/types/app.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/types/data_record.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/types/experiment.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/types/file_node.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/types/resource.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/types/resource_version.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/types/typing.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/utils/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/utils/multinode.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/api/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/api/client.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/app/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/app/app.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/app/search_apps.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_api_client/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_api_client/api_client.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_api_client/app_types.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_api_client/auth.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_api_client/biolib_job_api.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_api_client/common_types.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_api_client/lfs_types.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_api_client/user_state.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/file_in_container.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/module_input.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/module_output_v2.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/saved_job.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/system_exception.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/system_status_update.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_binary_format/utils.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_docker_client/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_download_container.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/biolib_logging.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/cli/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/cli/auth.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/cli/data_record.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/cli/download_container.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/cli/init.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/cli/lfs.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/cli/push.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/cli/run.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/cli/runtime.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/cli/start.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/.gitignore +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/cloud_utils/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/cache_state.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/cache_types.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/executors/types.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/job_storage.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/job_worker.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/large_file_system.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/mappings.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/utils.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/remote_host_proxy.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/socker_listener_thread.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/socket_sender_thread.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/utils.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/webserver/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/webserver/webserver.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/webserver/webserver_types.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/webserver/webserver_utils.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/webserver/worker_thread.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/experiments/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/experiments/experiment.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/jobs/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/jobs/job.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/jobs/job_result.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/jobs/types.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/runtime/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/sdk/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/tables.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/templates/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/templates/example_app.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/typing_utils.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/user/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/user/sign_in.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/utils/__init__.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/utils/app_uri.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/utils/cache_state.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/utils/multipart_uploader.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/utils/seq_util.py +0 -0
- {pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/utils/zip/remote_zip.py +0 -0
@@ -48,6 +48,17 @@ class Runtime:
|
|
48
48
|
except BaseException as error:
|
49
49
|
raise BioLibRuntimeError(f'Unable to get system secret: {secret_name}') from error
|
50
50
|
|
51
|
+
@staticmethod
|
52
|
+
def get_temporary_client_secret(secret_name: str) -> bytes:
|
53
|
+
assert re.match(
|
54
|
+
'^[a-zA-Z0-9_-]*$', secret_name
|
55
|
+
), 'Secret name can only contain alphanumeric characters and dashes or underscores '
|
56
|
+
try:
|
57
|
+
with open(f'/biolib/temporary-client-secrets/{secret_name}', 'rb') as file:
|
58
|
+
return file.read()
|
59
|
+
except BaseException as error:
|
60
|
+
raise BioLibRuntimeError(f'Unable to get secret: {secret_name}') from error
|
61
|
+
|
51
62
|
@staticmethod
|
52
63
|
def set_main_result_prefix(result_prefix: str) -> None:
|
53
64
|
job_data = Runtime._get_job_data()
|
@@ -3,6 +3,7 @@ import os
|
|
3
3
|
import random
|
4
4
|
import re
|
5
5
|
import subprocess
|
6
|
+
import urllib.parse
|
6
7
|
|
7
8
|
import biolib.api
|
8
9
|
from biolib import biolib_errors
|
@@ -10,6 +11,7 @@ from biolib._internal.http_client import HttpError
|
|
10
11
|
from biolib.biolib_api_client import AppGetResponse
|
11
12
|
from biolib.biolib_logging import logger
|
12
13
|
from biolib.typing_utils import Optional
|
14
|
+
from biolib.utils import load_base_url_from_env
|
13
15
|
|
14
16
|
|
15
17
|
def encode_multipart(data, files):
|
@@ -61,15 +63,29 @@ def _get_git_repository_url() -> str:
|
|
61
63
|
except BaseException:
|
62
64
|
return ''
|
63
65
|
|
66
|
+
def _get_app_uri_from_str(input_str: str) -> str:
|
67
|
+
parsed_base_url = urllib.parse.urlparse(load_base_url_from_env())
|
68
|
+
parsed_uri = urllib.parse.urlparse(input_str)
|
69
|
+
if parsed_uri.netloc != '' and parsed_base_url.netloc != parsed_uri.netloc:
|
70
|
+
raise biolib_errors.ValidationError(
|
71
|
+
f'Invalid URI. The hostname "{parsed_base_url.netloc}" is not recognized.'
|
72
|
+
)
|
73
|
+
elif parsed_uri.netloc != '' and parsed_uri.path[1] != '@':
|
74
|
+
uri = f'@{parsed_uri.netloc}{parsed_uri.path}'
|
75
|
+
elif parsed_uri.netloc == '' and parsed_uri.path.startswith (parsed_base_url.netloc):
|
76
|
+
uri = f'@{parsed_uri.path}'
|
77
|
+
else:
|
78
|
+
uri = parsed_uri.path
|
79
|
+
uri = uri.strip('/')
|
80
|
+
# Replace frontend version path with app_uri compatible version (if supplied)
|
81
|
+
uri = re.sub(r'/version/(?P<version>(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*))(/)?$', r':\g<version>', uri)
|
82
|
+
return uri
|
83
|
+
|
64
84
|
|
65
85
|
class BiolibAppApi:
|
66
86
|
@staticmethod
|
67
87
|
def get_by_uri(uri: str) -> AppGetResponse:
|
68
|
-
|
69
|
-
uri = re.sub(r'^http(s)?://', '@', uri)
|
70
|
-
# Replace frontend version path with app_uri compatible version (if supplied)
|
71
|
-
uri = re.sub(r'/version/(?P<version>(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*))(/)?$', r':\g<version>', uri)
|
72
|
-
|
88
|
+
uri = _get_app_uri_from_str(uri)
|
73
89
|
try:
|
74
90
|
response = biolib.api.client.get(path='/app/', params={'uri': uri})
|
75
91
|
app_response: AppGetResponse = response.json()
|
@@ -2,7 +2,7 @@ from enum import Enum
|
|
2
2
|
|
3
3
|
from biolib.biolib_api_client.app_types import AppVersionOnJob, RemoteHost
|
4
4
|
from biolib.compute_node.webserver.webserver_types import ComputeNodeInfo
|
5
|
-
from biolib.typing_utils import List, Optional, TypedDict
|
5
|
+
from biolib.typing_utils import Dict, List, Optional, TypedDict
|
6
6
|
|
7
7
|
|
8
8
|
class JobState(Enum):
|
@@ -31,6 +31,7 @@ class _Job(TypedDict):
|
|
31
31
|
# type optional keys with total=False
|
32
32
|
class CreatedJobDict(_Job, total=False):
|
33
33
|
custom_compute_node_url: str
|
34
|
+
temporary_client_secrets: Dict[str, str]
|
34
35
|
|
35
36
|
|
36
37
|
class CloudJob(TypedDict):
|
@@ -7,6 +7,9 @@ class BioLibError(Exception):
|
|
7
7
|
super().__init__(message)
|
8
8
|
self.message = message
|
9
9
|
|
10
|
+
class ValidationError(BioLibError):
|
11
|
+
def __init__(self, message: Optional[str] = None):
|
12
|
+
super().__init__(message=message or 'Invalid input.')
|
10
13
|
|
11
14
|
class NotFound(BioLibError):
|
12
15
|
|
{pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/executors/docker_executor.py
RENAMED
@@ -69,7 +69,9 @@ class DockerExecutor:
|
|
69
69
|
|
70
70
|
# If BIOLIB_SECRETS_TMPFS_PATH is set create the temporary directory there
|
71
71
|
self._tmp_secrets_dir = tempfile.TemporaryDirectory(dir=utils.BIOLIB_SECRETS_TMPFS_PATH or None)
|
72
|
+
self._tmp_client_secrets_dir = tempfile.TemporaryDirectory(dir=utils.BIOLIB_SECRETS_TMPFS_PATH or None)
|
72
73
|
os.chmod(self._tmp_secrets_dir.name, 0o755)
|
74
|
+
os.chmod(self._tmp_client_secrets_dir.name, 0o755)
|
73
75
|
|
74
76
|
@property
|
75
77
|
def _container(self) -> Container:
|
@@ -263,6 +265,7 @@ class DockerExecutor:
|
|
263
265
|
|
264
266
|
logger_no_user_data.debug(f'Deleted compute container in: {time.time() - container_time}')
|
265
267
|
self._tmp_secrets_dir.cleanup()
|
268
|
+
self._tmp_client_secrets_dir.cleanup()
|
266
269
|
|
267
270
|
# TODO: type this method
|
268
271
|
def _initialize_docker_container(self, module_input):
|
@@ -285,11 +288,23 @@ class DockerExecutor:
|
|
285
288
|
app_uri=self._options['job']['app_uri'],
|
286
289
|
is_environment_biolib_cloud=bool(utils.IS_RUNNING_IN_CLOUD),
|
287
290
|
)
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
+
docker_volume_mounts.append(
|
292
|
+
self._create_secrets_mount(
|
293
|
+
source_dir=self._tmp_secrets_dir.name + '/',
|
294
|
+
target_dir='/biolib/secrets/',
|
295
|
+
secrets=dict(
|
296
|
+
**module.get('secrets', {}),
|
297
|
+
biolib_system_secret=json.dumps(biolib_system_secret, indent=4),
|
298
|
+
),
|
299
|
+
)
|
300
|
+
)
|
301
|
+
docker_volume_mounts.append(
|
302
|
+
self._create_secrets_mount(
|
303
|
+
source_dir=self._tmp_client_secrets_dir.name + '/',
|
304
|
+
target_dir='/biolib/temporary-client-secrets/',
|
305
|
+
secrets=self._options['job'].get('temporary_client_secrets', {}),
|
306
|
+
)
|
291
307
|
)
|
292
|
-
docker_volume_mounts.append(self._create_secrets_mount(secrets))
|
293
308
|
|
294
309
|
environment_vars = {}
|
295
310
|
|
@@ -498,8 +513,8 @@ class DockerExecutor:
|
|
498
513
|
stdout=stdout,
|
499
514
|
)
|
500
515
|
except Exception as exception:
|
501
|
-
logger.error(
|
502
|
-
logger.exception(
|
516
|
+
logger.error('Hit Error 23')
|
517
|
+
logger.exception('Error')
|
503
518
|
logger.error(str(exception))
|
504
519
|
time.sleep(3)
|
505
520
|
raise ComputeProcessException(
|
@@ -586,19 +601,16 @@ class DockerExecutor:
|
|
586
601
|
|
587
602
|
return files_and_empty_dirs
|
588
603
|
|
589
|
-
def _create_secrets_mount(self, secrets: Dict[str, str]) -> docker.types.Mount:
|
590
|
-
|
604
|
+
def _create_secrets_mount(self, source_dir: str, target_dir: str, secrets: Dict[str, str]) -> docker.types.Mount:
|
605
|
+
assert source_dir.startswith('/') and source_dir.endswith('/'), 'source_dir must start and end with slash'
|
606
|
+
assert target_dir.startswith('/') and target_dir.endswith('/'), 'target_dir must start and end with slash'
|
591
607
|
|
608
|
+
job_uuid = self._options['job']['public_id']
|
592
609
|
for key, value in secrets.items():
|
593
610
|
if re.match(r'^[a-zA-Z0-9-_]+$', key):
|
594
|
-
with open(f'{
|
611
|
+
with open(f'{source_dir}{key}', 'w') as secret_file:
|
595
612
|
secret_file.write(value)
|
596
613
|
else:
|
597
614
|
logger_no_user_data.warning(f'Job {job_uuid} uses secret with a key not matching validation regex')
|
598
615
|
|
599
|
-
return docker.types.Mount(
|
600
|
-
read_only=True,
|
601
|
-
source=f'{self._tmp_secrets_dir.name}/',
|
602
|
-
target='/biolib/secrets/',
|
603
|
-
type='bind',
|
604
|
-
)
|
616
|
+
return docker.types.Mount(read_only=True, source=source_dir, target=target_dir, type='bind')
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/_internal/data_record/remote_storage_endpoint.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
|
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
|
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
|
{pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/executors/docker_types.py
RENAMED
File without changes
|
{pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/executors/tars/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/job_worker/utilization_reporter_thread.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.2.223 → pybiolib-1.2.243}/biolib/compute_node/webserver/gunicorn_flask_application.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
|