digitalhub 0.11.0b7__py3-none-any.whl → 0.13.0__py3-none-any.whl
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 digitalhub might be problematic. Click here for more details.
- digitalhub/__init__.py +4 -1
- digitalhub/context/api.py +9 -5
- digitalhub/context/builder.py +7 -5
- digitalhub/context/context.py +13 -1
- digitalhub/entities/__init__.py +3 -0
- digitalhub/entities/_base/__init__.py +3 -0
- digitalhub/entities/_base/_base/__init__.py +3 -0
- digitalhub/entities/_base/_base/entity.py +4 -0
- digitalhub/entities/_base/context/__init__.py +3 -0
- digitalhub/entities/_base/context/entity.py +4 -0
- digitalhub/entities/_base/entity/__init__.py +3 -0
- digitalhub/entities/_base/entity/_constructors/__init__.py +3 -0
- digitalhub/entities/_base/entity/_constructors/metadata.py +4 -0
- digitalhub/entities/_base/entity/_constructors/name.py +4 -0
- digitalhub/entities/_base/entity/_constructors/spec.py +4 -0
- digitalhub/entities/_base/entity/_constructors/status.py +4 -0
- digitalhub/entities/_base/entity/_constructors/uuid.py +4 -0
- digitalhub/entities/_base/entity/builder.py +4 -0
- digitalhub/entities/_base/entity/entity.py +4 -0
- digitalhub/entities/_base/entity/metadata.py +4 -0
- digitalhub/entities/_base/entity/spec.py +4 -0
- digitalhub/entities/_base/entity/status.py +4 -0
- digitalhub/entities/_base/executable/__init__.py +3 -0
- digitalhub/entities/_base/executable/entity.py +109 -57
- digitalhub/entities/_base/material/__init__.py +3 -0
- digitalhub/entities/_base/material/entity.py +15 -18
- digitalhub/entities/_base/material/spec.py +4 -0
- digitalhub/entities/_base/material/status.py +4 -0
- digitalhub/entities/_base/material/utils.py +5 -1
- digitalhub/entities/_base/runtime_entity/__init__.py +3 -0
- digitalhub/entities/_base/runtime_entity/builder.py +4 -0
- digitalhub/entities/_base/unversioned/__init__.py +3 -0
- digitalhub/entities/_base/unversioned/builder.py +4 -0
- digitalhub/entities/_base/unversioned/entity.py +4 -0
- digitalhub/entities/_base/versioned/__init__.py +3 -0
- digitalhub/entities/_base/versioned/builder.py +4 -0
- digitalhub/entities/_base/versioned/entity.py +4 -0
- digitalhub/entities/_commons/__init__.py +3 -0
- digitalhub/entities/_commons/enums.py +4 -0
- digitalhub/entities/_commons/metrics.py +68 -30
- digitalhub/entities/_commons/utils.py +40 -9
- digitalhub/entities/_processors/__init__.py +3 -0
- digitalhub/entities/_processors/base.py +154 -79
- digitalhub/entities/_processors/context.py +370 -215
- digitalhub/entities/_processors/utils.py +78 -30
- digitalhub/entities/artifact/__init__.py +3 -0
- digitalhub/entities/artifact/_base/__init__.py +3 -0
- digitalhub/entities/artifact/_base/builder.py +4 -0
- digitalhub/entities/artifact/_base/entity.py +4 -0
- digitalhub/entities/artifact/_base/spec.py +4 -0
- digitalhub/entities/artifact/_base/status.py +4 -0
- digitalhub/entities/artifact/artifact/__init__.py +3 -0
- digitalhub/entities/artifact/artifact/builder.py +4 -0
- digitalhub/entities/artifact/artifact/entity.py +4 -0
- digitalhub/entities/artifact/artifact/spec.py +4 -0
- digitalhub/entities/artifact/artifact/status.py +4 -0
- digitalhub/entities/artifact/crud.py +8 -0
- digitalhub/entities/artifact/utils.py +32 -13
- digitalhub/entities/builders.py +4 -0
- digitalhub/entities/dataitem/__init__.py +3 -0
- digitalhub/entities/dataitem/_base/__init__.py +3 -0
- digitalhub/entities/dataitem/_base/builder.py +4 -0
- digitalhub/entities/dataitem/_base/entity.py +4 -0
- digitalhub/entities/dataitem/_base/spec.py +4 -0
- digitalhub/entities/dataitem/_base/status.py +4 -0
- digitalhub/entities/dataitem/crud.py +18 -2
- digitalhub/entities/dataitem/dataitem/__init__.py +3 -0
- digitalhub/entities/dataitem/dataitem/builder.py +4 -0
- digitalhub/entities/dataitem/dataitem/entity.py +4 -0
- digitalhub/entities/dataitem/dataitem/spec.py +4 -0
- digitalhub/entities/dataitem/dataitem/status.py +4 -0
- digitalhub/entities/dataitem/iceberg/__init__.py +3 -0
- digitalhub/entities/dataitem/iceberg/builder.py +4 -0
- digitalhub/entities/dataitem/iceberg/entity.py +4 -0
- digitalhub/entities/dataitem/iceberg/spec.py +4 -0
- digitalhub/entities/dataitem/iceberg/status.py +4 -0
- digitalhub/entities/dataitem/table/__init__.py +3 -0
- digitalhub/entities/dataitem/table/builder.py +4 -0
- digitalhub/entities/dataitem/table/entity.py +7 -3
- digitalhub/entities/dataitem/table/models.py +4 -0
- digitalhub/entities/dataitem/table/spec.py +4 -0
- digitalhub/entities/dataitem/table/status.py +4 -0
- digitalhub/entities/dataitem/table/utils.py +4 -0
- digitalhub/entities/dataitem/utils.py +88 -35
- digitalhub/entities/function/__init__.py +3 -0
- digitalhub/entities/function/_base/__init__.py +3 -0
- digitalhub/entities/function/_base/builder.py +4 -0
- digitalhub/entities/function/_base/entity.py +4 -0
- digitalhub/entities/function/_base/spec.py +4 -0
- digitalhub/entities/function/_base/status.py +4 -0
- digitalhub/entities/function/crud.py +4 -0
- digitalhub/entities/model/__init__.py +3 -0
- digitalhub/entities/model/_base/__init__.py +3 -0
- digitalhub/entities/model/_base/builder.py +4 -0
- digitalhub/entities/model/_base/entity.py +4 -0
- digitalhub/entities/model/_base/spec.py +4 -0
- digitalhub/entities/model/_base/status.py +4 -0
- digitalhub/entities/model/crud.py +8 -0
- digitalhub/entities/model/huggingface/__init__.py +3 -0
- digitalhub/entities/model/huggingface/builder.py +4 -0
- digitalhub/entities/model/huggingface/entity.py +4 -0
- digitalhub/entities/model/huggingface/spec.py +4 -0
- digitalhub/entities/model/huggingface/status.py +4 -0
- digitalhub/entities/model/mlflow/__init__.py +3 -0
- digitalhub/entities/model/mlflow/builder.py +4 -0
- digitalhub/entities/model/mlflow/entity.py +4 -0
- digitalhub/entities/model/mlflow/models.py +4 -0
- digitalhub/entities/model/mlflow/spec.py +4 -0
- digitalhub/entities/model/mlflow/status.py +4 -0
- digitalhub/entities/model/mlflow/utils.py +4 -0
- digitalhub/entities/model/model/__init__.py +3 -0
- digitalhub/entities/model/model/builder.py +4 -0
- digitalhub/entities/model/model/entity.py +4 -0
- digitalhub/entities/model/model/spec.py +4 -0
- digitalhub/entities/model/model/status.py +4 -0
- digitalhub/entities/model/sklearn/__init__.py +3 -0
- digitalhub/entities/model/sklearn/builder.py +4 -0
- digitalhub/entities/model/sklearn/entity.py +4 -0
- digitalhub/entities/model/sklearn/spec.py +4 -0
- digitalhub/entities/model/sklearn/status.py +4 -0
- digitalhub/entities/model/utils.py +32 -13
- digitalhub/entities/project/__init__.py +3 -0
- digitalhub/entities/project/_base/__init__.py +3 -0
- digitalhub/entities/project/_base/builder.py +4 -0
- digitalhub/entities/project/_base/entity.py +4 -2
- digitalhub/entities/project/_base/models.py +4 -0
- digitalhub/entities/project/_base/spec.py +4 -0
- digitalhub/entities/project/_base/status.py +4 -0
- digitalhub/entities/project/crud.py +4 -0
- digitalhub/entities/project/utils.py +4 -0
- digitalhub/entities/run/__init__.py +3 -0
- digitalhub/entities/run/_base/__init__.py +3 -0
- digitalhub/entities/run/_base/builder.py +4 -0
- digitalhub/entities/run/_base/entity.py +6 -2
- digitalhub/entities/run/_base/spec.py +4 -0
- digitalhub/entities/run/_base/status.py +4 -0
- digitalhub/entities/run/crud.py +4 -0
- digitalhub/entities/secret/__init__.py +3 -0
- digitalhub/entities/secret/_base/__init__.py +3 -0
- digitalhub/entities/secret/_base/builder.py +4 -0
- digitalhub/entities/secret/_base/entity.py +4 -0
- digitalhub/entities/secret/_base/spec.py +4 -0
- digitalhub/entities/secret/_base/status.py +4 -0
- digitalhub/entities/secret/crud.py +4 -0
- digitalhub/entities/task/__init__.py +3 -0
- digitalhub/entities/task/_base/__init__.py +3 -0
- digitalhub/entities/task/_base/builder.py +4 -0
- digitalhub/entities/task/_base/entity.py +4 -0
- digitalhub/entities/task/_base/models.py +16 -3
- digitalhub/entities/task/_base/spec.py +4 -0
- digitalhub/entities/task/_base/status.py +4 -0
- digitalhub/entities/task/_base/utils.py +4 -0
- digitalhub/entities/task/crud.py +4 -0
- digitalhub/entities/trigger/__init__.py +3 -0
- digitalhub/entities/trigger/_base/__init__.py +3 -0
- digitalhub/entities/trigger/_base/builder.py +4 -0
- digitalhub/entities/trigger/_base/entity.py +15 -0
- digitalhub/entities/trigger/_base/spec.py +4 -0
- digitalhub/entities/trigger/_base/status.py +4 -0
- digitalhub/entities/trigger/crud.py +4 -0
- digitalhub/entities/trigger/lifecycle/__init__.py +3 -0
- digitalhub/entities/trigger/lifecycle/builder.py +4 -0
- digitalhub/entities/trigger/lifecycle/entity.py +4 -0
- digitalhub/entities/trigger/lifecycle/spec.py +4 -0
- digitalhub/entities/trigger/lifecycle/status.py +4 -0
- digitalhub/entities/trigger/scheduler/__init__.py +3 -0
- digitalhub/entities/trigger/scheduler/builder.py +4 -0
- digitalhub/entities/trigger/scheduler/entity.py +4 -0
- digitalhub/entities/trigger/scheduler/spec.py +4 -0
- digitalhub/entities/trigger/scheduler/status.py +4 -0
- digitalhub/entities/workflow/__init__.py +3 -0
- digitalhub/entities/workflow/_base/__init__.py +3 -0
- digitalhub/entities/workflow/_base/builder.py +4 -0
- digitalhub/entities/workflow/_base/entity.py +4 -0
- digitalhub/entities/workflow/_base/spec.py +4 -0
- digitalhub/entities/workflow/_base/status.py +4 -0
- digitalhub/entities/workflow/crud.py +4 -0
- digitalhub/factory/__init__.py +3 -0
- digitalhub/factory/factory.py +29 -3
- digitalhub/factory/utils.py +15 -3
- digitalhub/runtimes/__init__.py +3 -0
- digitalhub/runtimes/_base.py +5 -1
- digitalhub/runtimes/builder.py +22 -1
- digitalhub/runtimes/enums.py +4 -0
- digitalhub/stores/__init__.py +3 -0
- digitalhub/stores/client/__init__.py +15 -0
- digitalhub/stores/client/_base/__init__.py +3 -0
- digitalhub/stores/client/_base/api_builder.py +18 -0
- digitalhub/stores/client/_base/client.py +97 -0
- digitalhub/stores/client/_base/key_builder.py +32 -0
- digitalhub/stores/client/_base/params_builder.py +18 -0
- digitalhub/stores/client/api.py +14 -5
- digitalhub/stores/client/builder.py +7 -1
- digitalhub/stores/client/dhcore/__init__.py +3 -0
- digitalhub/stores/client/dhcore/api_builder.py +21 -0
- digitalhub/stores/client/dhcore/client.py +329 -70
- digitalhub/stores/client/dhcore/configurator.py +489 -193
- digitalhub/stores/client/dhcore/enums.py +7 -0
- digitalhub/stores/client/dhcore/error_parser.py +39 -1
- digitalhub/stores/client/dhcore/key_builder.py +4 -0
- digitalhub/stores/client/dhcore/models.py +4 -0
- digitalhub/stores/client/dhcore/params_builder.py +117 -17
- digitalhub/stores/client/dhcore/utils.py +44 -22
- digitalhub/stores/client/local/__init__.py +3 -0
- digitalhub/stores/client/local/api_builder.py +21 -0
- digitalhub/stores/client/local/client.py +10 -8
- digitalhub/stores/client/local/enums.py +4 -0
- digitalhub/stores/client/local/key_builder.py +4 -0
- digitalhub/stores/client/local/params_builder.py +4 -0
- digitalhub/stores/credentials/__init__.py +3 -0
- digitalhub/stores/credentials/api.py +35 -0
- digitalhub/stores/credentials/configurator.py +210 -0
- digitalhub/stores/credentials/enums.py +68 -0
- digitalhub/stores/credentials/handler.py +176 -0
- digitalhub/stores/credentials/ini_module.py +164 -0
- digitalhub/stores/credentials/store.py +81 -0
- digitalhub/stores/data/__init__.py +3 -0
- digitalhub/stores/data/_base/__init__.py +3 -0
- digitalhub/stores/data/_base/store.py +31 -9
- digitalhub/stores/data/api.py +53 -9
- digitalhub/stores/data/builder.py +94 -41
- digitalhub/stores/data/enums.py +4 -0
- digitalhub/stores/data/local/__init__.py +3 -0
- digitalhub/stores/data/local/store.py +8 -7
- digitalhub/stores/data/remote/__init__.py +3 -0
- digitalhub/stores/data/remote/store.py +8 -7
- digitalhub/stores/data/s3/__init__.py +3 -0
- digitalhub/stores/data/s3/configurator.py +69 -80
- digitalhub/stores/data/s3/store.py +73 -81
- digitalhub/stores/data/s3/utils.py +14 -10
- digitalhub/stores/data/sql/__init__.py +3 -0
- digitalhub/stores/data/sql/configurator.py +80 -73
- digitalhub/stores/data/sql/store.py +195 -102
- digitalhub/stores/readers/__init__.py +3 -0
- digitalhub/stores/readers/data/__init__.py +3 -0
- digitalhub/stores/readers/data/_base/__init__.py +3 -0
- digitalhub/stores/readers/data/_base/builder.py +4 -0
- digitalhub/stores/readers/data/_base/reader.py +4 -0
- digitalhub/stores/readers/data/api.py +4 -0
- digitalhub/stores/readers/data/factory.py +4 -0
- digitalhub/stores/readers/data/pandas/__init__.py +3 -0
- digitalhub/stores/readers/data/pandas/builder.py +4 -0
- digitalhub/stores/readers/data/pandas/reader.py +4 -0
- digitalhub/stores/readers/query/__init__.py +3 -0
- digitalhub/utils/__init__.py +3 -0
- digitalhub/utils/enums.py +4 -0
- digitalhub/utils/exceptions.py +10 -0
- digitalhub/utils/file_utils.py +57 -30
- digitalhub/utils/generic_utils.py +45 -33
- digitalhub/utils/git_utils.py +28 -14
- digitalhub/utils/io_utils.py +23 -18
- digitalhub/utils/logger.py +4 -0
- digitalhub/utils/types.py +4 -0
- digitalhub/utils/uri_utils.py +35 -31
- digitalhub-0.13.0.dist-info/METADATA +301 -0
- digitalhub-0.13.0.dist-info/RECORD +259 -0
- digitalhub-0.13.0.dist-info/licenses/AUTHORS +5 -0
- digitalhub-0.13.0.dist-info/licenses/LICENSE +201 -0
- digitalhub/entities/_commons/types.py +0 -5
- digitalhub/stores/configurator/__init__.py +0 -0
- digitalhub/stores/configurator/api.py +0 -31
- digitalhub/stores/configurator/configurator.py +0 -198
- digitalhub/stores/configurator/credentials_store.py +0 -65
- digitalhub/stores/configurator/enums.py +0 -21
- digitalhub/stores/configurator/ini_module.py +0 -128
- digitalhub/stores/data/s3/enums.py +0 -16
- digitalhub/stores/data/sql/enums.py +0 -16
- digitalhub/stores/data/utils.py +0 -34
- digitalhub-0.11.0b7.dist-info/METADATA +0 -259
- digitalhub-0.11.0b7.dist-info/RECORD +0 -261
- digitalhub-0.11.0b7.dist-info/licenses/LICENSE.txt +0 -216
- {digitalhub-0.11.0b7.dist-info → digitalhub-0.13.0.dist-info}/WHEEL +0 -0
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import os
|
|
4
|
-
|
|
5
|
-
from digitalhub.stores.configurator.credentials_store import CredentialsStore
|
|
6
|
-
from digitalhub.stores.configurator.enums import SetCreds
|
|
7
|
-
from digitalhub.stores.configurator.ini_module import load_from_file, read_env_from_file, set_current_env, write_config
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class EnvConfigurator:
|
|
11
|
-
"""
|
|
12
|
-
Configurator object used to configure clients and store credentials.
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
def __init__(self) -> None:
|
|
16
|
-
# Store
|
|
17
|
-
self._creds_store = CredentialsStore()
|
|
18
|
-
|
|
19
|
-
# Current credentials set (__default by default)
|
|
20
|
-
self._environment = os.getenv(SetCreds.DH_ENV.value, SetCreds.DEFAULT.value)
|
|
21
|
-
|
|
22
|
-
##############################
|
|
23
|
-
# Public methods
|
|
24
|
-
##############################
|
|
25
|
-
|
|
26
|
-
def set_current_env(self, creds_set: str) -> None:
|
|
27
|
-
"""
|
|
28
|
-
Set the current credentials set.
|
|
29
|
-
|
|
30
|
-
Parameters
|
|
31
|
-
----------
|
|
32
|
-
creds_set : str
|
|
33
|
-
Credentials set name.
|
|
34
|
-
|
|
35
|
-
Returns
|
|
36
|
-
-------
|
|
37
|
-
None
|
|
38
|
-
"""
|
|
39
|
-
self._environment = creds_set
|
|
40
|
-
set_current_env(creds_set)
|
|
41
|
-
|
|
42
|
-
def get_current_env(self) -> str:
|
|
43
|
-
"""
|
|
44
|
-
Get the current credentials set.
|
|
45
|
-
|
|
46
|
-
Returns
|
|
47
|
-
-------
|
|
48
|
-
str
|
|
49
|
-
Credentials set name.
|
|
50
|
-
"""
|
|
51
|
-
return self._environment
|
|
52
|
-
|
|
53
|
-
##############################
|
|
54
|
-
# Private methods
|
|
55
|
-
##############################
|
|
56
|
-
|
|
57
|
-
def load_var(self, var_name: str) -> str | None:
|
|
58
|
-
"""
|
|
59
|
-
Get env variable from credentials store, env or file (in order).
|
|
60
|
-
|
|
61
|
-
Parameters
|
|
62
|
-
----------
|
|
63
|
-
var_name : str
|
|
64
|
-
Environment variable name.
|
|
65
|
-
|
|
66
|
-
Returns
|
|
67
|
-
-------
|
|
68
|
-
str | None
|
|
69
|
-
Environment variable value.
|
|
70
|
-
"""
|
|
71
|
-
var = self.get_credential(var_name)
|
|
72
|
-
if var is None:
|
|
73
|
-
var = self.load_from_env(var_name)
|
|
74
|
-
if var is None:
|
|
75
|
-
var = self.load_from_file(var_name)
|
|
76
|
-
return var
|
|
77
|
-
|
|
78
|
-
def load_from_env(self, var: str) -> str | None:
|
|
79
|
-
"""
|
|
80
|
-
Load variable from env.
|
|
81
|
-
|
|
82
|
-
Parameters
|
|
83
|
-
----------
|
|
84
|
-
var : str
|
|
85
|
-
Environment variable name.
|
|
86
|
-
|
|
87
|
-
Returns
|
|
88
|
-
-------
|
|
89
|
-
str | None
|
|
90
|
-
Environment variable value.
|
|
91
|
-
"""
|
|
92
|
-
env_var = os.getenv(var)
|
|
93
|
-
if env_var != "":
|
|
94
|
-
return env_var
|
|
95
|
-
|
|
96
|
-
def load_from_file(self, var: str) -> str | None:
|
|
97
|
-
"""
|
|
98
|
-
Load variable from config file.
|
|
99
|
-
|
|
100
|
-
Parameters
|
|
101
|
-
----------
|
|
102
|
-
var : str
|
|
103
|
-
Environment variable name.
|
|
104
|
-
|
|
105
|
-
Returns
|
|
106
|
-
-------
|
|
107
|
-
str | None
|
|
108
|
-
Environment variable value.
|
|
109
|
-
"""
|
|
110
|
-
self._environment = read_env_from_file()
|
|
111
|
-
return load_from_file(var)
|
|
112
|
-
|
|
113
|
-
def write_env(self, key_to_include: list[str] | None = None) -> None:
|
|
114
|
-
"""
|
|
115
|
-
Write the env variables to the .dhcore file.
|
|
116
|
-
It will overwrite any existing env variables.
|
|
117
|
-
|
|
118
|
-
Parameters
|
|
119
|
-
----------
|
|
120
|
-
key_to_include : list[str]
|
|
121
|
-
List of keys to include.
|
|
122
|
-
|
|
123
|
-
Returns
|
|
124
|
-
-------
|
|
125
|
-
None
|
|
126
|
-
"""
|
|
127
|
-
if key_to_include is None:
|
|
128
|
-
key_to_include = []
|
|
129
|
-
creds = self.get_credential_list(key_to_include)
|
|
130
|
-
write_config(creds, self._environment)
|
|
131
|
-
|
|
132
|
-
##############################
|
|
133
|
-
# Credentials store methods
|
|
134
|
-
##############################
|
|
135
|
-
|
|
136
|
-
def set_credential(self, key: str, value: str) -> None:
|
|
137
|
-
"""
|
|
138
|
-
Register a credential value.
|
|
139
|
-
|
|
140
|
-
Parameters
|
|
141
|
-
----------
|
|
142
|
-
key : str
|
|
143
|
-
The key.
|
|
144
|
-
value : str
|
|
145
|
-
The value.
|
|
146
|
-
|
|
147
|
-
Returns
|
|
148
|
-
-------
|
|
149
|
-
None
|
|
150
|
-
"""
|
|
151
|
-
self._creds_store.set(self._environment, key, value)
|
|
152
|
-
|
|
153
|
-
def get_credential(self, key: str) -> dict:
|
|
154
|
-
"""
|
|
155
|
-
Get single credential value from key.
|
|
156
|
-
|
|
157
|
-
Parameters
|
|
158
|
-
----------
|
|
159
|
-
key : str
|
|
160
|
-
The key.
|
|
161
|
-
|
|
162
|
-
Returns
|
|
163
|
-
-------
|
|
164
|
-
dict
|
|
165
|
-
The credential.
|
|
166
|
-
"""
|
|
167
|
-
return self._creds_store.get(self._environment, key)
|
|
168
|
-
|
|
169
|
-
def get_all_credentials(self) -> dict:
|
|
170
|
-
"""
|
|
171
|
-
Get all the credentials from the current credentials set.
|
|
172
|
-
|
|
173
|
-
Returns
|
|
174
|
-
-------
|
|
175
|
-
dict
|
|
176
|
-
The credentials.
|
|
177
|
-
"""
|
|
178
|
-
return self._creds_store.get_all(self._environment)
|
|
179
|
-
|
|
180
|
-
def get_credential_list(self, keys: list[str]) -> list[str]:
|
|
181
|
-
"""
|
|
182
|
-
Get the list of credentials.
|
|
183
|
-
|
|
184
|
-
Parameters
|
|
185
|
-
----------
|
|
186
|
-
keys : list[str]
|
|
187
|
-
The list of keys.
|
|
188
|
-
|
|
189
|
-
Returns
|
|
190
|
-
-------
|
|
191
|
-
list[str]
|
|
192
|
-
The list of credentials.
|
|
193
|
-
"""
|
|
194
|
-
return {k: v for k, v in self.get_all_credentials().items() if k in keys}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
# Define global configurator
|
|
198
|
-
configurator = EnvConfigurator()
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class CredentialsStore:
|
|
5
|
-
"""
|
|
6
|
-
Credentials store to store and retrieve credentials.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
def __init__(self) -> None:
|
|
10
|
-
self._credentials: dict[str, dict] = {}
|
|
11
|
-
|
|
12
|
-
def set(self, profile: str, key: str, value: str) -> None:
|
|
13
|
-
"""
|
|
14
|
-
Set credentials.
|
|
15
|
-
|
|
16
|
-
Parameters
|
|
17
|
-
----------
|
|
18
|
-
profile : str
|
|
19
|
-
The profile of the credentials.
|
|
20
|
-
key : str
|
|
21
|
-
The key of the credentials.
|
|
22
|
-
value : str
|
|
23
|
-
The value of the credentials.
|
|
24
|
-
|
|
25
|
-
Returns
|
|
26
|
-
-------
|
|
27
|
-
None
|
|
28
|
-
"""
|
|
29
|
-
if profile not in self._credentials:
|
|
30
|
-
self._credentials[profile] = {}
|
|
31
|
-
self._credentials[profile][key] = value
|
|
32
|
-
|
|
33
|
-
def get(self, profile: str, key: str) -> str | None:
|
|
34
|
-
"""
|
|
35
|
-
Get credentials.
|
|
36
|
-
|
|
37
|
-
Parameters
|
|
38
|
-
----------
|
|
39
|
-
profile : str
|
|
40
|
-
The profile of the credentials.
|
|
41
|
-
key : str
|
|
42
|
-
The key of the credentials.
|
|
43
|
-
|
|
44
|
-
Returns
|
|
45
|
-
-------
|
|
46
|
-
str | None
|
|
47
|
-
The value of the credentials.
|
|
48
|
-
"""
|
|
49
|
-
return self._credentials.get(profile, {}).get(key)
|
|
50
|
-
|
|
51
|
-
def get_all(self, profile: str) -> dict[str, str]:
|
|
52
|
-
"""
|
|
53
|
-
Get all credentials.
|
|
54
|
-
|
|
55
|
-
Parameters
|
|
56
|
-
----------
|
|
57
|
-
profile : str
|
|
58
|
-
The profile of the credentials.
|
|
59
|
-
|
|
60
|
-
Returns
|
|
61
|
-
-------
|
|
62
|
-
dict[str, str]
|
|
63
|
-
The credentials.
|
|
64
|
-
"""
|
|
65
|
-
return self._credentials.get(profile, {})
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from enum import Enum
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class CredsOrigin(Enum):
|
|
7
|
-
"""
|
|
8
|
-
List credential origins.
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
ENV = "env"
|
|
12
|
-
FILE = "file"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class SetCreds(Enum):
|
|
16
|
-
"""
|
|
17
|
-
List supported environments.
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
DEFAULT = "__default"
|
|
21
|
-
DH_ENV = "DH_NAME"
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from configparser import ConfigParser
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
|
|
6
|
-
from digitalhub.utils.exceptions import ClientError
|
|
7
|
-
|
|
8
|
-
# File where to write DHCORE_ACCESS_TOKEN and DHCORE_REFRESH_TOKEN
|
|
9
|
-
# It's used because we inject the variables in jupyter env,
|
|
10
|
-
# but refresh token is only available once. Is it's used, we cannot
|
|
11
|
-
# overwrite it with coder, so we need to store the new one in a file,
|
|
12
|
-
# preserved for jupyter restart
|
|
13
|
-
ENV_FILE = Path.home() / ".dhcore.ini"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def load_file() -> ConfigParser:
|
|
17
|
-
"""
|
|
18
|
-
Load current credentials set from the .dhcore.ini file.
|
|
19
|
-
|
|
20
|
-
Returns
|
|
21
|
-
-------
|
|
22
|
-
ConfigParser
|
|
23
|
-
Credentials set name.
|
|
24
|
-
"""
|
|
25
|
-
try:
|
|
26
|
-
file = ConfigParser()
|
|
27
|
-
file.read(ENV_FILE)
|
|
28
|
-
return file
|
|
29
|
-
except Exception as e:
|
|
30
|
-
raise ClientError(f"Failed to read env file: {e}")
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def load_from_file(var: str) -> str | None:
|
|
34
|
-
"""
|
|
35
|
-
Load variable from config file.
|
|
36
|
-
|
|
37
|
-
Parameters
|
|
38
|
-
----------
|
|
39
|
-
profile : str
|
|
40
|
-
Credentials set name.
|
|
41
|
-
var : str
|
|
42
|
-
Environment variable name.
|
|
43
|
-
|
|
44
|
-
Returns
|
|
45
|
-
-------
|
|
46
|
-
str | None
|
|
47
|
-
Environment variable value.
|
|
48
|
-
"""
|
|
49
|
-
try:
|
|
50
|
-
cfg = load_file()
|
|
51
|
-
profile = cfg["DEFAULT"]["current_environment"]
|
|
52
|
-
return cfg[profile].get(var)
|
|
53
|
-
except KeyError:
|
|
54
|
-
return
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def write_config(creds: dict, environment: str) -> None:
|
|
58
|
-
"""
|
|
59
|
-
Write the env variables to the .dhcore.ini file.
|
|
60
|
-
It will overwrite any existing env variables.
|
|
61
|
-
|
|
62
|
-
Parameters
|
|
63
|
-
----------
|
|
64
|
-
creds : dict
|
|
65
|
-
Credentials.
|
|
66
|
-
environment : str
|
|
67
|
-
Credentials set name.
|
|
68
|
-
|
|
69
|
-
Returns
|
|
70
|
-
-------
|
|
71
|
-
None
|
|
72
|
-
"""
|
|
73
|
-
try:
|
|
74
|
-
cfg = load_file()
|
|
75
|
-
|
|
76
|
-
sections = cfg.sections()
|
|
77
|
-
if environment not in sections:
|
|
78
|
-
cfg.add_section(environment)
|
|
79
|
-
|
|
80
|
-
cfg["DEFAULT"]["current_environment"] = environment
|
|
81
|
-
for k, v in creds.items():
|
|
82
|
-
cfg[environment][k] = v
|
|
83
|
-
|
|
84
|
-
ENV_FILE.touch(exist_ok=True)
|
|
85
|
-
with open(ENV_FILE, "w") as inifile:
|
|
86
|
-
cfg.write(inifile)
|
|
87
|
-
|
|
88
|
-
except Exception as e:
|
|
89
|
-
raise ClientError(f"Failed to write env file: {e}")
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
def set_current_env(environment: str) -> None:
|
|
93
|
-
"""
|
|
94
|
-
Set the current credentials set.
|
|
95
|
-
|
|
96
|
-
Parameters
|
|
97
|
-
----------
|
|
98
|
-
environment : str
|
|
99
|
-
Credentials set name.
|
|
100
|
-
|
|
101
|
-
Returns
|
|
102
|
-
-------
|
|
103
|
-
None
|
|
104
|
-
"""
|
|
105
|
-
try:
|
|
106
|
-
cfg = load_file()
|
|
107
|
-
cfg["DEFAULT"]["current_environment"] = environment
|
|
108
|
-
with open(ENV_FILE, "w") as inifile:
|
|
109
|
-
cfg.write(inifile)
|
|
110
|
-
|
|
111
|
-
except Exception as e:
|
|
112
|
-
raise ClientError(f"Failed to write env file: {e}")
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
def read_env_from_file() -> str | None:
|
|
116
|
-
"""
|
|
117
|
-
Read the current credentials set from the .dhcore.ini file.
|
|
118
|
-
|
|
119
|
-
Returns
|
|
120
|
-
-------
|
|
121
|
-
str
|
|
122
|
-
Credentials set name.
|
|
123
|
-
"""
|
|
124
|
-
try:
|
|
125
|
-
cfg = load_file()
|
|
126
|
-
return cfg["DEFAULT"]["current_environment"]
|
|
127
|
-
except Exception:
|
|
128
|
-
return None
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from enum import Enum
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class S3StoreEnv(Enum):
|
|
7
|
-
"""
|
|
8
|
-
S3Store environment
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
ENDPOINT_URL = "AWS_ENDPOINT_URL"
|
|
12
|
-
ACCESS_KEY_ID = "AWS_ACCESS_KEY_ID"
|
|
13
|
-
SECRET_ACCESS_KEY = "AWS_SECRET_ACCESS_KEY"
|
|
14
|
-
SESSION_TOKEN = "AWS_SESSION_TOKEN"
|
|
15
|
-
REGION = "AWS_REGION"
|
|
16
|
-
SIGNATURE_VERSION = "S3_SIGNATURE_VERSION"
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from enum import Enum
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class SqlStoreEnv(Enum):
|
|
7
|
-
"""
|
|
8
|
-
SqlStore environment
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
HOST = "DB_HOST"
|
|
12
|
-
PORT = "DB_PORT"
|
|
13
|
-
USERNAME = "DB_USERNAME"
|
|
14
|
-
PASSWORD = "DB_PASSWORD"
|
|
15
|
-
DATABASE = "DB_DATABASE"
|
|
16
|
-
PG_SCHEMA = "DB_SCHEMA"
|
digitalhub/stores/data/utils.py
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from digitalhub.context.api import get_context
|
|
4
|
-
from digitalhub.stores.configurator.configurator import configurator
|
|
5
|
-
from digitalhub.stores.data.enums import StoreEnv
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def get_default_store(project: str) -> str:
|
|
9
|
-
"""
|
|
10
|
-
Get default store URI.
|
|
11
|
-
|
|
12
|
-
Parameters
|
|
13
|
-
----------
|
|
14
|
-
project : str
|
|
15
|
-
Project name.
|
|
16
|
-
|
|
17
|
-
Returns
|
|
18
|
-
-------
|
|
19
|
-
str
|
|
20
|
-
Default store URI.
|
|
21
|
-
"""
|
|
22
|
-
context = get_context(project)
|
|
23
|
-
store = context.config.get(StoreEnv.DEFAULT_FILES_STORE.value.lower())
|
|
24
|
-
if store is not None:
|
|
25
|
-
return store
|
|
26
|
-
store = configurator.load_var(StoreEnv.DEFAULT_FILES_STORE.value)
|
|
27
|
-
if store is None or store == "":
|
|
28
|
-
raise ValueError(
|
|
29
|
-
"No default store found. "
|
|
30
|
-
"Please set a default store "
|
|
31
|
-
f"in your environment (e.g. export {StoreEnv.DEFAULT_FILES_STORE.value}=) "
|
|
32
|
-
"or set it in project config."
|
|
33
|
-
)
|
|
34
|
-
return store
|