vantage6 5.0.0a34__py3-none-any.whl → 5.0.0a35__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 vantage6 might be problematic. Click here for more details.
- vantage6/cli/algostore/new.py +83 -2
- vantage6/cli/algostore/remove.py +18 -34
- vantage6/cli/algostore/start.py +10 -7
- vantage6/cli/algostore/stop.py +12 -50
- vantage6/cli/cli.py +31 -33
- vantage6/cli/common/new.py +28 -3
- vantage6/cli/common/remove.py +54 -0
- vantage6/cli/common/start.py +30 -1
- vantage6/cli/common/stop.py +79 -1
- vantage6/cli/common/utils.py +45 -4
- vantage6/cli/configuration_manager.py +26 -13
- vantage6/cli/configuration_wizard.py +13 -397
- vantage6/cli/context/node.py +10 -17
- vantage6/cli/globals.py +20 -0
- vantage6/cli/node/attach.py +1 -0
- vantage6/cli/node/files.py +12 -25
- vantage6/cli/node/new.py +348 -28
- vantage6/cli/node/remove.py +14 -90
- vantage6/cli/node/restart.py +30 -51
- vantage6/cli/node/start.py +81 -304
- vantage6/cli/node/stop.py +36 -96
- vantage6/cli/server/new.py +70 -2
- vantage6/cli/server/remove.py +12 -33
- vantage6/cli/server/start.py +8 -6
- vantage6/cli/server/stop.py +10 -39
- vantage6/cli/template/algo_store_config.j2 +1 -1
- vantage6/cli/template/node_config.j2 +336 -33
- vantage6/cli/utils.py +0 -2
- {vantage6-5.0.0a34.dist-info → vantage6-5.0.0a35.dist-info}/METADATA +3 -3
- {vantage6-5.0.0a34.dist-info → vantage6-5.0.0a35.dist-info}/RECORD +32 -32
- vantage6/cli/node/clean.py +0 -46
- {vantage6-5.0.0a34.dist-info → vantage6-5.0.0a35.dist-info}/WHEEL +0 -0
- {vantage6-5.0.0a34.dist-info → vantage6-5.0.0a35.dist-info}/entry_points.txt +0 -0
|
@@ -1,33 +1,336 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
port:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
1
|
+
# override the chart name
|
|
2
|
+
nameOverride: {{ nameOverride | default('vantage6-node') }}
|
|
3
|
+
# Optional, by default the Release.Namespace is used
|
|
4
|
+
# namespace: vantage6-node
|
|
5
|
+
node:
|
|
6
|
+
|
|
7
|
+
# Set to false to prevent creation of node secrets (useful when secrets are managed
|
|
8
|
+
# externally)
|
|
9
|
+
createSecrets: {{ node.createSecrets | default(true) }}
|
|
10
|
+
|
|
11
|
+
name: {{ node.name | default('put-your-node-name-here') }}
|
|
12
|
+
apiKey: {{ node.apiKey | default('put-your-api-key-here') }}
|
|
13
|
+
|
|
14
|
+
# Keycloak configuration
|
|
15
|
+
keycloakUrl: {{ node.keycloakUrl | default('http://vantage6-auth-keycloak.vantage6.svc.cluster.local') }}
|
|
16
|
+
keycloakRealm: {{ node.keycloakRealm | default('vantage6') }}
|
|
17
|
+
|
|
18
|
+
# TODO v5+ set the url/port directly on node-configmap.yaml using \{\{ .Release.Name \}\}-vantage6-server-service
|
|
19
|
+
{% if node.server is defined %}
|
|
20
|
+
server:
|
|
21
|
+
url: {{ node.server.url | default('http://vantage6-server-vantage6-server-service') }}
|
|
22
|
+
port: {{ node.server.port | default(7601) }}
|
|
23
|
+
path: {{ node.server.path | default('/server') }}
|
|
24
|
+
{% else %}
|
|
25
|
+
server:
|
|
26
|
+
url: http://vantage6-server-vantage6-server-service
|
|
27
|
+
port: 7601
|
|
28
|
+
path: /server
|
|
29
|
+
{% endif %}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
image: {{ node.image | default('harbor2.vantage6.ai/infrastructure/node:latest') }}
|
|
33
|
+
|
|
34
|
+
# Namespace in which the task kubernetes resources are created. This must be a
|
|
35
|
+
# namespace where the node has access to create pods.
|
|
36
|
+
taskNamespace: {{ node.taskNamespace | default('vantage6-tasks') }}
|
|
37
|
+
|
|
38
|
+
# Kubernetes node name, used for local persistent volumes
|
|
39
|
+
k8sNodeName: {{ node.k8sNodeName | default('docker-desktop') }}
|
|
40
|
+
|
|
41
|
+
logging:
|
|
42
|
+
# Controls the logging output level. Could be one of the following
|
|
43
|
+
# levels: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET
|
|
44
|
+
level: {{ node.logging.level | default('INFO') }}
|
|
45
|
+
|
|
46
|
+
# Location to the log file
|
|
47
|
+
file: {{ node.logging.file | default('node.log') }}
|
|
48
|
+
|
|
49
|
+
# Size in kb of a single log file
|
|
50
|
+
max_size: {{ node.logging.max_size | default(1024) }}
|
|
51
|
+
use_console: {{ node.logging.use_console | default(true) }}
|
|
52
|
+
|
|
53
|
+
# Date format for the log file
|
|
54
|
+
datefmt: "{{ node.logging.datefmt | default('%Y-%m-%d %H:%M:%S') }}"
|
|
55
|
+
|
|
56
|
+
# Format for the log file
|
|
57
|
+
format: "{{ node.logging.format | default('%(asctime)s - %(name)-14s - %(levelname)-8s - %(message)s') }}"
|
|
58
|
+
|
|
59
|
+
# Maximum number of log files to keep. Log files are rotated when the size of the
|
|
60
|
+
# current log file exceeds `max_size`.
|
|
61
|
+
backup_count: {{ node.logging.backup_count | default(5) }}
|
|
62
|
+
|
|
63
|
+
# Loggers to include in the log file
|
|
64
|
+
loggers:
|
|
65
|
+
{% if node.logging.loggers is defined %}
|
|
66
|
+
{% for logger in node.logging.loggers %}
|
|
67
|
+
- level: {{ logger.level }}
|
|
68
|
+
name: {{ logger.name }}
|
|
69
|
+
{% endfor %}
|
|
70
|
+
{% endif %}
|
|
71
|
+
{% if node.logging.loggers is not defined %}
|
|
72
|
+
- level: warning
|
|
73
|
+
name: urllib3
|
|
74
|
+
- level: warning
|
|
75
|
+
name: socketIO-client
|
|
76
|
+
- level: warning
|
|
77
|
+
name: socketio.server
|
|
78
|
+
- level: warning
|
|
79
|
+
name: engineio.server
|
|
80
|
+
- level: warning
|
|
81
|
+
name: sqlalchemy.engine
|
|
82
|
+
{% endif %}
|
|
83
|
+
|
|
84
|
+
{% if node.encryption is defined %}
|
|
85
|
+
encryption:
|
|
86
|
+
# Whether encryption is enabled or not. This should be the same as the `encrypted`
|
|
87
|
+
# setting of the collaboration to which this node belongs.
|
|
88
|
+
enabled: {{ node.encryption.enabled | default(false) }}
|
|
89
|
+
|
|
90
|
+
# Location to the private key file. Required if encryption is enabled.
|
|
91
|
+
{% if node.encryption.enabled | default(false) %}
|
|
92
|
+
private_key: {{ node.encryption.private_key | default('/path/to/private_key.pem') }}
|
|
93
|
+
{% else %}
|
|
94
|
+
# private_key: /path/to/private_key.pem
|
|
95
|
+
{% endif %}
|
|
96
|
+
{% else %}
|
|
97
|
+
encryption:
|
|
98
|
+
# Whether encryption is enabled or not. This should be the same as the `encrypted`
|
|
99
|
+
# setting of the collaboration to which this node belongs.
|
|
100
|
+
enabled: false
|
|
101
|
+
|
|
102
|
+
# Location to the private key file. Required if encryption is enabled.
|
|
103
|
+
# private_key: /path/to/private_key.pem
|
|
104
|
+
{% endif %}
|
|
105
|
+
|
|
106
|
+
# Port for the node proxy to run on
|
|
107
|
+
proxyPort: {{ node.proxyPort | default(7654) }}
|
|
108
|
+
|
|
109
|
+
# Storage settings on host of the node machine. This defines where the database is
|
|
110
|
+
# stored as well as the task directory (which will contain the input/output of the
|
|
111
|
+
# tasks).
|
|
112
|
+
{% if node.persistence is defined %}
|
|
113
|
+
persistence:
|
|
114
|
+
tasks:
|
|
115
|
+
storageClass: {{ node.persistence.tasks.storageClass | default('local-storage') }}
|
|
116
|
+
size: {{ node.persistence.tasks.size | default('10Gi') }}
|
|
117
|
+
hostPath: {{ node.persistence.tasks.hostPath | default('/path/to/where/task/files/are/stored') }}
|
|
118
|
+
database:
|
|
119
|
+
storageClass: {{ node.persistence.database.storageClass | default('local-storage') }}
|
|
120
|
+
size: {{ node.persistence.database.size | default('5Gi') }}
|
|
121
|
+
{% else %}
|
|
122
|
+
persistence:
|
|
123
|
+
tasks:
|
|
124
|
+
storageClass: local-storage
|
|
125
|
+
size: 10Gi
|
|
126
|
+
hostPath: /path/to/where/task/files/are/stored
|
|
127
|
+
database:
|
|
128
|
+
storageClass: local-storage
|
|
129
|
+
size: 5Gi
|
|
130
|
+
{% endif %}
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
# It is also possible not to specify the details of the service-based databases
|
|
134
|
+
# here. The node will then automatically detect the databases in the environment
|
|
135
|
+
# variables. This allows parent charts to specify the databases in their own
|
|
136
|
+
# values.yaml file or define them runtime using the CLI.
|
|
137
|
+
#
|
|
138
|
+
# In this case, the node expects the following environment variables to be set:
|
|
139
|
+
#
|
|
140
|
+
# DATABASE_LABELS: comma-separated list of database labels
|
|
141
|
+
# DATABASE_[LABEL]_URI: URI of the database
|
|
142
|
+
# DATABASE_[LABEL]_TYPE: type of the database
|
|
143
|
+
#
|
|
144
|
+
# Optionally, you can also specify additional environment variables for each
|
|
145
|
+
# database by setting the DATABASE_[LABEL]_SOME_OTHER_KEY variable.
|
|
146
|
+
#
|
|
147
|
+
# DATABASE_[LABEL]_SOME_OTHER_KEY: some_other_value
|
|
148
|
+
#
|
|
149
|
+
# It is recommended to do this through Kubernetes secrets. If you specify the
|
|
150
|
+
# details here, secrets will be used. File-based databases are automatically made
|
|
151
|
+
# available to your node.
|
|
152
|
+
{% if node.databases is defined %}
|
|
153
|
+
databases:
|
|
154
|
+
{% if node.databases.fileBased is defined %}
|
|
155
|
+
fileBased:
|
|
156
|
+
{% for db in node.databases.fileBased %}
|
|
157
|
+
- name: {{ db.name }}
|
|
158
|
+
uri: {{ db.uri }}
|
|
159
|
+
type: {{ db.type }}
|
|
160
|
+
volumePath: {{ db.volumePath }}
|
|
161
|
+
originalName: {{ db.originalName }}
|
|
162
|
+
{% endfor %}
|
|
163
|
+
{% endif %}
|
|
164
|
+
{% if node.databases.serviceBased is defined %}
|
|
165
|
+
serviceBased:
|
|
166
|
+
{% for db in node.databases.serviceBased %}
|
|
167
|
+
- name: {{ db.name }}
|
|
168
|
+
uri: {{ db.uri }}
|
|
169
|
+
type: {{ db.type }}
|
|
170
|
+
env:
|
|
171
|
+
{% for key, value in db.env.items() %}
|
|
172
|
+
{{ key }}: {{ value }}
|
|
173
|
+
{% endfor %}
|
|
174
|
+
{% endfor %}
|
|
175
|
+
{% endif %}
|
|
176
|
+
{% else %}
|
|
177
|
+
databases: []
|
|
178
|
+
{% endif %}
|
|
179
|
+
|
|
180
|
+
# Whether or not your node shares some configuration (e.g. which images are
|
|
181
|
+
# allowed to run on your node) with the central server. This can be useful
|
|
182
|
+
# for other organizations in your collaboration to understand why a task
|
|
183
|
+
# is not completed. Obviously, no sensitive data is shared. Default true
|
|
184
|
+
share_config: {{ node.share_config | default(true) }}
|
|
185
|
+
|
|
186
|
+
# Whether or not to share algorithm logs with the server. Otherwise they will
|
|
187
|
+
# only be displayed as part of the node logs. Default is true.
|
|
188
|
+
# NOTE: It's recommented to set this to false when using sensitive data
|
|
189
|
+
share_algorithm_logs: {{ node.share_algorithm_logs | default(true) }}
|
|
190
|
+
|
|
191
|
+
# Define who is allowed to run which algorithms on this node.
|
|
192
|
+
{% if node.policies is defined %}
|
|
193
|
+
policies:
|
|
194
|
+
# Control which algorithm images are allowed to run on this node. This is
|
|
195
|
+
# expected to be a valid regular expression. If you don't specify this, all algorithm
|
|
196
|
+
# images are allowed to run on this node (unless other policies restrict this).
|
|
197
|
+
{% if node.policies.allowed_algorithms is defined %}
|
|
198
|
+
allowed_algorithms:
|
|
199
|
+
{% for algo in node.policies.allowed_algorithms %}
|
|
200
|
+
- {{ algo }}
|
|
201
|
+
{% endfor %}
|
|
202
|
+
{% else %}
|
|
203
|
+
# allowed_algorithms:
|
|
204
|
+
# - ^harbor2\.vantage6\.ai/[a-zA-Z]+/[a-zA-Z]+
|
|
205
|
+
# - ^myalgorithm\.ai/some-algorithm
|
|
206
|
+
{% endif %}
|
|
207
|
+
|
|
208
|
+
# It is also possible to allow all algorithms from particular algorithm stores. Set
|
|
209
|
+
# these stores here. They may be strings or regular expressions. If you don't specify
|
|
210
|
+
# this, algorithms from any store are allowed (unless other policies prevent this).
|
|
211
|
+
{% if node.policies.allowed_algorithm_stores is defined %}
|
|
212
|
+
allowed_algorithm_stores:
|
|
213
|
+
{% for store in node.policies.allowed_algorithm_stores %}
|
|
214
|
+
- {{ store }}
|
|
215
|
+
{% endfor %}
|
|
216
|
+
{% else %}
|
|
217
|
+
# allowed_algorithm_stores:
|
|
218
|
+
# # allow all algorithms from the vantage6 community store
|
|
219
|
+
# - https://store.cotopaxi.vantage6.ai
|
|
220
|
+
# # allow any store that is a subdomain of vantage6.ai
|
|
221
|
+
# - ^https://[a-z]+\.vantage6\.ai$
|
|
222
|
+
{% endif %}
|
|
223
|
+
|
|
224
|
+
# If you define both `allowed_algorithm_stores` and `allowed_algorithms`, you can
|
|
225
|
+
# choose to only allow algorithms that both policies allow, or you can allow
|
|
226
|
+
# algorithms that either of them allows. By default, only algorithms that are given
|
|
227
|
+
# in *both* the `allowed_algorithms` and `allowed_algorithm_stores` are allowed by
|
|
228
|
+
# setting this to the default value `false`.
|
|
229
|
+
allow_either_whitelist_or_store: {{ node.policies.allow_either_whitelist_or_store | default(false) }}
|
|
230
|
+
|
|
231
|
+
# Define which users are allowed to run algorithms on your node by their ID
|
|
232
|
+
{% if node.policies.allowed_users is defined %}
|
|
233
|
+
allowed_users:
|
|
234
|
+
{% for user in node.policies.allowed_users %}
|
|
235
|
+
- {{ user }}
|
|
236
|
+
{% endfor %}
|
|
237
|
+
{% else %}
|
|
238
|
+
# allowed_users:
|
|
239
|
+
# - 2
|
|
240
|
+
{% endif %}
|
|
241
|
+
|
|
242
|
+
# Define which organizations are allowed to run images on your node by
|
|
243
|
+
# their ID or name
|
|
244
|
+
{% if node.policies.allowed_organizations is defined %}
|
|
245
|
+
allowed_organizations:
|
|
246
|
+
{% for org in node.policies.allowed_organizations %}
|
|
247
|
+
- {{ org }}
|
|
248
|
+
{% endfor %}
|
|
249
|
+
{% else %}
|
|
250
|
+
# allowed_organizations:
|
|
251
|
+
# - 6
|
|
252
|
+
# - root
|
|
253
|
+
{% endif %}
|
|
254
|
+
|
|
255
|
+
# Set to true to always require that the algorithm image is successfully pulled. This
|
|
256
|
+
# ensures that no potentially outdated local images are used if internet connection
|
|
257
|
+
# is not available. This option should be set to false if you are testing with local
|
|
258
|
+
# algorithm images. Default value is true.
|
|
259
|
+
require_algorithm_pull: {{ node.policies.require_algorithm_pull | default(true) }}
|
|
260
|
+
{% else %}
|
|
261
|
+
policies:
|
|
262
|
+
# Control which algorithm images are allowed to run on this node. This is
|
|
263
|
+
# expected to be a valid regular expression. If you don't specify this, all algorithm
|
|
264
|
+
# images are allowed to run on this node (unless other policies restrict this).
|
|
265
|
+
# allowed_algorithms:
|
|
266
|
+
# - ^harbor2\.vantage6\.ai/[a-zA-Z]+/[a-zA-Z]+
|
|
267
|
+
# - ^myalgorithm\.ai/some-algorithm
|
|
268
|
+
|
|
269
|
+
# It is also possible to allow all algorithms from particular algorithm stores. Set
|
|
270
|
+
# these stores here. They may be strings or regular expressions. If you don't specify
|
|
271
|
+
# this, algorithms from any store are allowed (unless other policies prevent this).
|
|
272
|
+
# allowed_algorithm_stores:
|
|
273
|
+
# # allow all algorithms from the vantage6 community store
|
|
274
|
+
# - https://store.cotopaxi.vantage6.ai
|
|
275
|
+
# # allow any store that is a subdomain of vantage6.ai
|
|
276
|
+
# - ^https://[a-z]+\.vantage6\.ai$
|
|
277
|
+
|
|
278
|
+
# If you define both `allowed_algorithm_stores` and `allowed_algorithms`, you can
|
|
279
|
+
# choose to only allow algorithms that both policies allow, or you can allow
|
|
280
|
+
# algorithms that either of them allows. By default, only algorithms that are given
|
|
281
|
+
# in *both* the `allowed_algorithms` and `allowed_algorithm_stores` are allowed by
|
|
282
|
+
# setting this to the default value `false`.
|
|
283
|
+
# allow_either_whitelist_or_store: false
|
|
284
|
+
|
|
285
|
+
# Define which users are allowed to run algorithms on your node by their ID
|
|
286
|
+
# allowed_users:
|
|
287
|
+
# - 2
|
|
288
|
+
# Define which organizations are allowed to run images on your node by
|
|
289
|
+
# their ID or name
|
|
290
|
+
# allowed_organizations:
|
|
291
|
+
# - 6
|
|
292
|
+
# - root
|
|
293
|
+
|
|
294
|
+
# Set to true to always require that the algorithm image is successfully pulled. This
|
|
295
|
+
# ensures that no potentially outdated local images are used if internet connection
|
|
296
|
+
# is not available. This option should be set to false if you are testing with local
|
|
297
|
+
# algorithm images. Default value is true.
|
|
298
|
+
require_algorithm_pull: true
|
|
299
|
+
{% endif %}
|
|
300
|
+
|
|
301
|
+
# Prometheus settings, for sending system metadata to the server.
|
|
302
|
+
{% if node.prometheus is defined %}
|
|
303
|
+
prometheus:
|
|
304
|
+
# Whether or not to enable Prometheus reporting. Default is false.
|
|
305
|
+
enabled: {{ node.prometheus.enabled | default(false) }}
|
|
306
|
+
|
|
307
|
+
# Interval (in seconds) at which the node sends system metadata to the server.
|
|
308
|
+
# This should align with the Prometheus scrape_interval to avoid stale data.
|
|
309
|
+
report_interval_seconds: {{ node.prometheus.report_interval_seconds | default(45) }}
|
|
310
|
+
{% else %}
|
|
311
|
+
prometheus:
|
|
312
|
+
# Whether or not to enable Prometheus reporting. Default is false.
|
|
313
|
+
enabled: false
|
|
314
|
+
|
|
315
|
+
# Interval (in seconds) at which the node sends system metadata to the server.
|
|
316
|
+
# This should align with the Prometheus scrape_interval to avoid stale data.
|
|
317
|
+
# report_interval_seconds: 45
|
|
318
|
+
{% endif %}
|
|
319
|
+
|
|
320
|
+
{% if node.debug is defined %}
|
|
321
|
+
# Debug settings
|
|
322
|
+
debug:
|
|
323
|
+
# Set to `true` to enable print debug messages from Flask/socketio.
|
|
324
|
+
socketio: {{ node.debug.socketio | default(false) }}
|
|
325
|
+
|
|
326
|
+
# Set to `true` to set the Flask app used for proxy service into debug mode.
|
|
327
|
+
proxy_server: {{ node.debug.proxy_server | default(false) }}
|
|
328
|
+
{% endif %}
|
|
329
|
+
|
|
330
|
+
{% if node.dev is defined %}
|
|
331
|
+
dev:
|
|
332
|
+
# Set extension for the task directory. In the development environment, the task
|
|
333
|
+
# directory is mounted as a volume. If multiple nodes are then running on the same
|
|
334
|
+
# machine, this extension is added to the task directory to avoid conflicts.
|
|
335
|
+
task_dir_extension: {{ node.dev.task_dir_extension }}
|
|
336
|
+
{% endif %}
|
vantage6/cli/utils.py
CHANGED
|
@@ -32,8 +32,6 @@ def check_config_name_allowed(name: str) -> None:
|
|
|
32
32
|
f"Name '{name}' is not allowed. Please use only the following "
|
|
33
33
|
"characters: a-zA-Z0-9_.-"
|
|
34
34
|
)
|
|
35
|
-
# FIXME: FM, 2023-01-03: I dont think this is a good side effect. This
|
|
36
|
-
# should be handled by the caller.
|
|
37
35
|
exit(1)
|
|
38
36
|
|
|
39
37
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vantage6
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.0a35
|
|
4
4
|
Summary: vantage6 command line interface
|
|
5
5
|
Author: Vantage6 Team
|
|
6
6
|
Maintainer-email: Frank Martin <f.martin@iknl.nl>, Bart van Beusekom <b.vanbeusekom@iknl.nl>
|
|
@@ -18,8 +18,8 @@ Requires-Dist: questionary==1.10.0
|
|
|
18
18
|
Requires-Dist: rich==13.5.2
|
|
19
19
|
Requires-Dist: schema==0.7.5
|
|
20
20
|
Requires-Dist: sqlalchemy==2.0.37
|
|
21
|
-
Requires-Dist: vantage6-client==5.0.
|
|
22
|
-
Requires-Dist: vantage6-common==5.0.
|
|
21
|
+
Requires-Dist: vantage6-client==5.0.0a35
|
|
22
|
+
Requires-Dist: vantage6-common==5.0.0a35
|
|
23
23
|
Provides-Extra: dev
|
|
24
24
|
Requires-Dist: black; extra == 'dev'
|
|
25
25
|
Requires-Dist: coverage==7.10.2; extra == 'dev'
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
vantage6/cli/__init__.py,sha256=8KIgMPbZTNdkYlUrB8irpsUA7KdkFdLbNbMKixOP2dE,277
|
|
2
|
-
vantage6/cli/cli.py,sha256=
|
|
2
|
+
vantage6/cli/cli.py,sha256=1Se1g-qEeC3NrPyTosIT4EPbl-WAnqCwL1mTZyEL5Pc,6552
|
|
3
3
|
vantage6/cli/config.py,sha256=Jqe3VcvoxPrFlvw7cuKt4-5oyL0YTZXvpNsqPybSAYk,7973
|
|
4
|
-
vantage6/cli/configuration_manager.py,sha256=
|
|
5
|
-
vantage6/cli/configuration_wizard.py,sha256=
|
|
6
|
-
vantage6/cli/globals.py,sha256=
|
|
7
|
-
vantage6/cli/utils.py,sha256=
|
|
4
|
+
vantage6/cli/configuration_manager.py,sha256=TtD4PdFrKCuN_zeSAouEgi_htlhBqmiNGqI7yui6EmE,5466
|
|
5
|
+
vantage6/cli/configuration_wizard.py,sha256=JFGeBagW5D4R-sGCXzqU9WpUInq0w7h0MVlbxYC7Q8Q,6634
|
|
6
|
+
vantage6/cli/globals.py,sha256=kbxRcpCFmyIKOma3rWfrcPnV7k5H7MHG9-yY2orzauY,2627
|
|
7
|
+
vantage6/cli/utils.py,sha256=9ZNHtTnOH2RqgYgnoyMR5EJpBE-_kYXEbuHtfrG3ul0,4275
|
|
8
8
|
vantage6/cli/algorithm/create.py,sha256=kRT1BlBcb0fDaB2Q988WxtA6EyAZmOW5QoU2uhbwBIo,2075
|
|
9
9
|
vantage6/cli/algorithm/generate_algorithm_json.py,sha256=huaqoadhz-2-Sy6SON9zFe_cAatvE7dtTQazvmNOgMA,19558
|
|
10
10
|
vantage6/cli/algorithm/update.py,sha256=WwAfTnq0kTOgePUsBzGoo1AJQqGMn82E9Bjk1wf61CQ,1338
|
|
11
11
|
vantage6/cli/algostore/attach.py,sha256=0WzLnKigJAelPpL5EaWcnRuUyQzMSofrrZfEzwDIvSw,311
|
|
12
12
|
vantage6/cli/algostore/files.py,sha256=r89VRixK_K-c44qseq58Aa2Dqf1wEf8yompQRN5AVu4,580
|
|
13
13
|
vantage6/cli/algostore/list.py,sha256=xBCnwGbuWY_rrx6jrFX8JVAEFXh8GwqwicqpxMiaSa8,418
|
|
14
|
-
vantage6/cli/algostore/new.py,sha256=
|
|
15
|
-
vantage6/cli/algostore/remove.py,sha256=
|
|
16
|
-
vantage6/cli/algostore/start.py,sha256=
|
|
17
|
-
vantage6/cli/algostore/stop.py,sha256=
|
|
14
|
+
vantage6/cli/algostore/new.py,sha256=7eVovSdNBO_Yj-FQmlV0TTl13Vv4qKP5zA_HuHZMglk,3454
|
|
15
|
+
vantage6/cli/algostore/remove.py,sha256=JsZ1L3qH2k_G3Zei-fhb_dApah91gdJKKv2vfsWK6Os,1006
|
|
16
|
+
vantage6/cli/algostore/start.py,sha256=15ZebThxgw4H1G8CswRNNoU1bYNflhQ-dWIkzEkwUi0,2137
|
|
17
|
+
vantage6/cli/algostore/stop.py,sha256=AF6ay7y6dlCvjPa3ctFOESAfHEA74eK4dKT4o-iFTLE,1814
|
|
18
18
|
vantage6/cli/common/decorator.py,sha256=KF3uFjmn00qtTSD90BLczaX-gqvlt2Kud4PJGm7P4jU,3627
|
|
19
|
-
vantage6/cli/common/new.py,sha256=
|
|
20
|
-
vantage6/cli/common/
|
|
21
|
-
vantage6/cli/common/
|
|
22
|
-
vantage6/cli/common/
|
|
19
|
+
vantage6/cli/common/new.py,sha256=WBGGYknLUMz4iPAzFanG57ioM9bTqFf2ANQRzYg6Ibo,2612
|
|
20
|
+
vantage6/cli/common/remove.py,sha256=sJaPF5y1Gd14I4Xg5QRBq3d1x4j2KF4Ys6wVDuqE6HQ,1697
|
|
21
|
+
vantage6/cli/common/start.py,sha256=jErssa0-E4tl3RI2BMND4PFmLQm3uZzhUJ45cuZEHw8,9784
|
|
22
|
+
vantage6/cli/common/stop.py,sha256=S3IeV_myD01CdSUvl6hkf4qWlWQZ_oUgIkbJoGsQK-Q,4989
|
|
23
|
+
vantage6/cli/common/utils.py,sha256=P1Wp1mKG8Z36IqeE7nyXnrAO_jhIVwnMYBDnJ1ltFPc,11767
|
|
23
24
|
vantage6/cli/context/__init__.py,sha256=88LSA3h_v-t8PzjCrzl0vw1jkOdNUNr3nPo-L2e9onc,2684
|
|
24
25
|
vantage6/cli/context/algorithm_store.py,sha256=qTNRrCo_EWVAfSC4eg_MohSf_Ra4U3tZvB8EwZZREEw,4044
|
|
25
26
|
vantage6/cli/context/base_server.py,sha256=i0op_9mifKjJIP4I1Z-V3HRFf_WPOrBQGFvTL6pJZL8,2450
|
|
26
|
-
vantage6/cli/context/node.py,sha256=
|
|
27
|
+
vantage6/cli/context/node.py,sha256=GaU52z4dMnZMDMj3MZACL0VeWZLeeM3lRNvMKlqA1J4,7304
|
|
27
28
|
vantage6/cli/context/server.py,sha256=o2HMlDEg7RbU44AfwNPln8K64FX4SQ_IgULFY_GBhEI,4837
|
|
28
29
|
vantage6/cli/dev/create.py,sha256=WBBPG9jyNvPQVb1koHX9y3VKQmlijlq-QBsYYzqqojg,21207
|
|
29
30
|
vantage6/cli/dev/remove.py,sha256=kjmOqkMO0ZU5F-3KgQ05VlfQQCS5Ta6yLY32DU0rH7k,3917
|
|
30
31
|
vantage6/cli/dev/data/km_dataset.csv,sha256=OrYF2ympb2QndiUOX_nTFGGB1HbAp2eOvZzrQ_PqJs4,31283
|
|
31
|
-
vantage6/cli/node/attach.py,sha256=
|
|
32
|
-
vantage6/cli/node/clean.py,sha256=uCty2GNuwoTybs1nIOygQLxtbleQ-rnnS6_4ieWVmCw,1199
|
|
32
|
+
vantage6/cli/node/attach.py,sha256=5wB6vjp-m44cQx-C20QBo5WhbHqjxrfWWFzTa5YCyww,277
|
|
33
33
|
vantage6/cli/node/create_private_key.py,sha256=gmgI9Gtcx3z0esxyLw-96HcrfmAJFOjjXbVvA9ZGN3g,5129
|
|
34
|
-
vantage6/cli/node/files.py,sha256=
|
|
34
|
+
vantage6/cli/node/files.py,sha256=y7WOGHCTE3DnmxgbweLcu51t0YLS9Jvl24zgCHKkQTQ,1003
|
|
35
35
|
vantage6/cli/node/list.py,sha256=_WZ8EBIEUlzFhVp3cR2MK5FUuQicMEZHhD8npMwKSpM,1664
|
|
36
|
-
vantage6/cli/node/new.py,sha256=
|
|
37
|
-
vantage6/cli/node/remove.py,sha256=
|
|
38
|
-
vantage6/cli/node/restart.py,sha256=
|
|
36
|
+
vantage6/cli/node/new.py,sha256=gs0okv4jnh3jPmENNH2RzXxG8Q-bbPmbjxioQOyjUH8,12395
|
|
37
|
+
vantage6/cli/node/remove.py,sha256=alInSH_3E-yJthQ8JrGaopvAZ7GgxuRBppnpC8BRTBU,1061
|
|
38
|
+
vantage6/cli/node/restart.py,sha256=hJWzyJjetfNe8YYkOt5ZEUE_t-LpvQOwUGcQH0pXfNQ,3122
|
|
39
39
|
vantage6/cli/node/set_api_key.py,sha256=OYCCJ8zrbc7uXyv0uLTejqD43xXELVvR01czzG46imo,1998
|
|
40
|
-
vantage6/cli/node/start.py,sha256=
|
|
41
|
-
vantage6/cli/node/stop.py,sha256=
|
|
40
|
+
vantage6/cli/node/start.py,sha256=wzSfN_H9PdorSjJr8dYJl7p0HJ0XuOz-gNDbuHAbWo4,3975
|
|
41
|
+
vantage6/cli/node/stop.py,sha256=pQ4auPeGbipBRlgFsuqqsMBlNAbgaowxeFpH-HpikkM,1950
|
|
42
42
|
vantage6/cli/node/version.py,sha256=X921xyIvIPYObPac2Si5msZ2tay5ySidnPWmGj1ilZw,1959
|
|
43
43
|
vantage6/cli/node/common/__init__.py,sha256=gYbdDajTz5Sh-buChejB8-lkMXalL85mMsMbM0OlR1Q,2868
|
|
44
44
|
vantage6/cli/prometheus/monitoring_manager.py,sha256=tNvguLonbVILqCDnHRizef5NwKnEOV0DuzTx0Bhd2HU,4906
|
|
@@ -51,15 +51,15 @@ vantage6/cli/server/attach.py,sha256=q1E40nGCBEFUF1p94sZoU-Ud3OXAUy4-FJqcP7Gqa7U
|
|
|
51
51
|
vantage6/cli/server/files.py,sha256=MsnLaY91F2m49mm_FpVboFrSsZiEsu175KioN1alZfk,568
|
|
52
52
|
vantage6/cli/server/import_.py,sha256=VDzEdEBtCtyF_ofzb6sSkXTNwhzBcq1-ByaHb1jfdes,4523
|
|
53
53
|
vantage6/cli/server/list.py,sha256=ioHQeBq5_SE6zNcyg9C7lqvcPwyHOyGPZ4SisFgq5-E,314
|
|
54
|
-
vantage6/cli/server/new.py,sha256=
|
|
55
|
-
vantage6/cli/server/remove.py,sha256=
|
|
54
|
+
vantage6/cli/server/new.py,sha256=rXq643DOqladIgGBNTDKSk3p1sUma8AwTIQDEknzCYg,3032
|
|
55
|
+
vantage6/cli/server/remove.py,sha256=dwylIP5uEUPTRP9bd6_7rWhyUoCJuYoe1Kon9WUV4tY,891
|
|
56
56
|
vantage6/cli/server/shell.py,sha256=47uGPupdG-2b8yhWvJoht-VJL29CodemcgXuo04CMBU,1601
|
|
57
|
-
vantage6/cli/server/start.py,sha256=
|
|
58
|
-
vantage6/cli/server/stop.py,sha256=
|
|
57
|
+
vantage6/cli/server/start.py,sha256=fO4A7D0aiSVKN4zhX5I1Z6UzQj57Ih4KD8PGuDgQoic,2606
|
|
58
|
+
vantage6/cli/server/stop.py,sha256=MwJqGh_9a0RCBQ7ZCDCO3975NyzKzGVz3AKRbghsJnc,2016
|
|
59
59
|
vantage6/cli/server/version.py,sha256=lqrPNKMbFO22W-NarJ2TjLd7fZT43hV-sFRbzMlBniw,1307
|
|
60
60
|
vantage6/cli/server/common/__init__.py,sha256=htv0mFYa4GhIHdzA2xqUUgKhHcMh09UQERlIjIgrwOM,2062
|
|
61
|
-
vantage6/cli/template/algo_store_config.j2,sha256=
|
|
62
|
-
vantage6/cli/template/node_config.j2,sha256=
|
|
61
|
+
vantage6/cli/template/algo_store_config.j2,sha256=eA79CEXGPTO3kWX5SDhuO4VY2t_shjOHIvGIC6ANrro,7377
|
|
62
|
+
vantage6/cli/template/node_config.j2,sha256=tmpTzD62WPTlth3wl_B9VHfk5j9aw1Rlf5BhrxZf65k,13742
|
|
63
63
|
vantage6/cli/template/server_config.j2,sha256=tCgceSajZ-GVG8yEufFBPWkEJKKg3BfECQmO5TzTrgw,10036
|
|
64
64
|
vantage6/cli/test/client_script.py,sha256=AHQ4fhzbtD-VcJAm0rxUDteepXNa4Bef9SKWnzobTd0,4825
|
|
65
65
|
vantage6/cli/test/feature_tester.py,sha256=AsZam91KqaAo_yIFxyZ5Hmy1ZPw83d02BDyO4TzKFQo,2631
|
|
@@ -69,7 +69,7 @@ vantage6/cli/test/algo_test_scripts/algo_test_script.py,sha256=jfzXPmpL0HlE_eq1j
|
|
|
69
69
|
vantage6/cli/test/common/diagnostic_runner.py,sha256=5-KgspYW0PncO_t_TrQzd_GSOXVwH-7bIVv-IHOxwQM,6598
|
|
70
70
|
vantage6/cli/use/context.py,sha256=mEtOfbuLtYQlRh-ypif24WtOwgpcvXObX310mmXIkWY,1362
|
|
71
71
|
vantage6/cli/use/namespace.py,sha256=MOd9H3GJwZ0cho0mmlHTRlGPLoQEiSnZIFDsFsvYw4Q,1643
|
|
72
|
-
vantage6-5.0.
|
|
73
|
-
vantage6-5.0.
|
|
74
|
-
vantage6-5.0.
|
|
75
|
-
vantage6-5.0.
|
|
72
|
+
vantage6-5.0.0a35.dist-info/METADATA,sha256=U1-XFn_RjriLgoqwYEkwb_DTjROM-1Y0_YTIw9Rqcfo,1779
|
|
73
|
+
vantage6-5.0.0a35.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
74
|
+
vantage6-5.0.0a35.dist-info/entry_points.txt,sha256=RKVCMsD70s_Gp6If89uDlCphsZ9uLIOMt1gciv8EMDQ,53
|
|
75
|
+
vantage6-5.0.0a35.dist-info/RECORD,,
|
vantage6/cli/node/clean.py
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import click
|
|
2
|
-
import questionary as q
|
|
3
|
-
import docker
|
|
4
|
-
|
|
5
|
-
from colorama import Fore, Style
|
|
6
|
-
|
|
7
|
-
from vantage6.common import error, info, debug
|
|
8
|
-
from vantage6.common.docker.addons import check_docker_running
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
@click.command()
|
|
12
|
-
def cli_node_clean() -> None:
|
|
13
|
-
"""
|
|
14
|
-
Erase temporary Docker volumes.
|
|
15
|
-
"""
|
|
16
|
-
check_docker_running()
|
|
17
|
-
client = docker.from_env()
|
|
18
|
-
|
|
19
|
-
# retrieve all volumes
|
|
20
|
-
volumes = client.volumes.list()
|
|
21
|
-
candidates = []
|
|
22
|
-
msg = "This would remove the following volumes: "
|
|
23
|
-
for volume in volumes:
|
|
24
|
-
if volume.name[-6:] == "tmpvol":
|
|
25
|
-
candidates.append(volume)
|
|
26
|
-
msg += volume.name + ","
|
|
27
|
-
info(msg)
|
|
28
|
-
|
|
29
|
-
try:
|
|
30
|
-
confirm = q.confirm("Are you sure?").unsafe_ask()
|
|
31
|
-
except KeyboardInterrupt:
|
|
32
|
-
confirm = False
|
|
33
|
-
|
|
34
|
-
if confirm:
|
|
35
|
-
for volume in candidates:
|
|
36
|
-
try:
|
|
37
|
-
volume.remove()
|
|
38
|
-
# info(volume.name)
|
|
39
|
-
except docker.errors.APIError as e:
|
|
40
|
-
error(
|
|
41
|
-
f"Failed to remove volume {Fore.RED}'{volume.name}'"
|
|
42
|
-
f"{Style.RESET_ALL}. Is it still in use?"
|
|
43
|
-
)
|
|
44
|
-
debug(e)
|
|
45
|
-
exit(1)
|
|
46
|
-
info("Done!")
|
|
File without changes
|
|
File without changes
|