vantage6 5.0.0a38__py3-none-any.whl → 5.0.0a41__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.

@@ -3,6 +3,7 @@ import inspect
3
3
  import json
4
4
  import os
5
5
  import sys
6
+ from collections.abc import Callable
6
7
  from inspect import getmembers, isfunction, ismodule, signature
7
8
  from pathlib import Path
8
9
  from types import ModuleType, UnionType
@@ -62,7 +63,7 @@ class FunctionArgumentType(StrEnumBase):
62
63
  class Function:
63
64
  """Class to handle a function and its JSON representation"""
64
65
 
65
- def __init__(self, func: callable):
66
+ def __init__(self, func: Callable):
66
67
  self.func = func
67
68
  self.name = func.__name__
68
69
  self.signature = signature(func)
@@ -1,3 +1,4 @@
1
+ from collections.abc import Callable
1
2
  from functools import wraps
2
3
  from pathlib import Path
3
4
 
@@ -17,7 +18,7 @@ def click_insert_context(
17
18
  include_system_folders: bool = False,
18
19
  is_sandbox: bool = False,
19
20
  sandbox_param: str | None = None,
20
- ) -> callable:
21
+ ) -> Callable:
21
22
  """
22
23
  Supply the Click function with an additional context parameter. The context
23
24
  is passed to the function as the first argument.
@@ -49,7 +50,7 @@ def click_insert_context(
49
50
  >>> pass
50
51
  """
51
52
 
52
- def protection_decorator(func: callable) -> callable:
53
+ def protection_decorator(func: Callable) -> Callable:
53
54
  @click.option("-n", "--name", default=None, help="Name of the configuration.")
54
55
  @click.option(
55
56
  "-c",
@@ -73,7 +74,7 @@ def click_insert_context(
73
74
  @wraps(func)
74
75
  def decorator(
75
76
  name: str, config: str, system_folders: bool, *args, **kwargs
76
- ) -> callable:
77
+ ) -> Callable:
77
78
  """
78
79
  Decorator function that adds the context to the function.
79
80
 
@@ -1,3 +1,4 @@
1
+ from collections.abc import Callable
1
2
  from pathlib import Path
2
3
 
3
4
  from colorama import Fore, Style
@@ -13,7 +14,7 @@ from vantage6.cli.utils import check_config_name_allowed, prompt_config_name
13
14
 
14
15
 
15
16
  def new(
16
- config_producing_func: callable,
17
+ config_producing_func: Callable,
17
18
  config_producing_func_args: tuple,
18
19
  name: str,
19
20
  system_folders: bool,
@@ -27,7 +28,7 @@ def new(
27
28
 
28
29
  Parameters
29
30
  ----------
30
- config_producing_func : callable
31
+ config_producing_func : Callable
31
32
  Function to generate the configuration
32
33
  config_producing_func_args : tuple
33
34
  Arguments to pass to the config producing function
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import subprocess
4
+ from collections.abc import Callable
4
5
 
5
6
  from colorama import Fore, Style
6
7
 
@@ -19,7 +20,7 @@ from vantage6.cli.utils import validate_input_cmd_args
19
20
 
20
21
 
21
22
  def execute_stop(
22
- stop_function: callable,
23
+ stop_function: Callable,
23
24
  instance_type: InstanceType,
24
25
  infra_component: InfraComponentName,
25
26
  stop_all: bool,
@@ -35,7 +36,7 @@ def execute_stop(
35
36
 
36
37
  Parameters
37
38
  ----------
38
- stop_function : callable
39
+ stop_function : Callable
39
40
  The function to stop the service.
40
41
  instance_type : InstanceType
41
42
  The instance type of the service.
@@ -1,3 +1,4 @@
1
+ from collections.abc import Callable
1
2
  from pathlib import Path
2
3
 
3
4
  import questionary as q
@@ -127,7 +128,7 @@ def _add_production_server_config(config: dict) -> dict:
127
128
 
128
129
 
129
130
  def make_configuration(
130
- config_producing_func: callable,
131
+ config_producing_func: Callable,
131
132
  config_producing_func_args: tuple,
132
133
  type_: InstanceType,
133
134
  instance_name: str,
@@ -139,7 +140,7 @@ def make_configuration(
139
140
 
140
141
  Parameters
141
142
  ----------
142
- config_producing_func : callable
143
+ config_producing_func : Callable
143
144
  Function to generate the configuration
144
145
  config_producing_func_args : tuple
145
146
  Arguments to pass to the config producing function
@@ -12,6 +12,7 @@ from vantage6.common.globals import (
12
12
  APPNAME,
13
13
  HTTP_LOCALHOST,
14
14
  InstanceType,
15
+ Ports,
15
16
  RequiredNodeEnvVars,
16
17
  )
17
18
 
@@ -21,6 +22,16 @@ from vantage6.cli.configuration_create import select_configuration_questionnaire
21
22
  from vantage6.cli.context.node import NodeContext
22
23
 
23
24
 
25
+ def _convert_k8s_url_to_localhost(url: str) -> str:
26
+ """
27
+ Convert a Kubernetes URL to a localhost URL.
28
+ """
29
+ if "svc.cluster.local" in url:
30
+ port_and_api_path = url.split(":")[-1]
31
+ return f"{HTTP_LOCALHOST}:{port_and_api_path}"
32
+ return url
33
+
34
+
24
35
  def create_client(ctx: NodeContext) -> UserClient:
25
36
  """
26
37
  Create a client instance.
@@ -34,17 +45,31 @@ def create_client(ctx: NodeContext) -> UserClient:
34
45
  UserClient
35
46
  vantage6 client
36
47
  """
37
- host = ctx.config["server_url"]
48
+ host = ctx.config["node"]["server"]["url"]
49
+ port = ctx.config["node"]["server"]["port"]
50
+ api_path = ctx.config["node"]["server"]["path"]
38
51
  # if the server is run locally, we need to use localhost here instead of
39
52
  # the host address of docker
40
53
  if host in ["http://host.docker.internal", "http://172.17.0.1"]:
41
54
  host = HTTP_LOCALHOST
42
- port = ctx.config["port"]
43
- api_path = ctx.config["api_path"]
44
- info(f"Connecting to server at '{host}:{port}{api_path}'")
55
+
56
+ url = f"{host}:{port}{api_path}"
57
+
58
+ auth_url = ctx.config.get("node", {}).get("keycloakUrl", None) or os.environ.get(
59
+ RequiredNodeEnvVars.KEYCLOAK_URL.value
60
+ )
61
+ # append the port to the auth URL as it is not included in the config
62
+ auth_url = f"{auth_url}:{Ports.DEV_AUTH.value}"
63
+
64
+ # if the server is a Kubernetes address, we need to use localhost because here
65
+ # we are connecting from the CLI outside the cluster
66
+ url = _convert_k8s_url_to_localhost(url)
67
+ auth_url = _convert_k8s_url_to_localhost(auth_url)
68
+
69
+ info(f"Connecting to server at '{url}' using auth URL '{auth_url}'")
45
70
  return UserClient(
46
- server_url=f"{host}:{port}{api_path}",
47
- auth_url=os.environ.get(RequiredNodeEnvVars.KEYCLOAK_URL.value),
71
+ server_url=url,
72
+ auth_url=auth_url,
48
73
  log_level="warn",
49
74
  )
50
75
 
@@ -11,10 +11,12 @@ from vantage6.common import (
11
11
  warning,
12
12
  )
13
13
  from vantage6.common.encryption import RSACryptor
14
+ from vantage6.common.globals import InstanceType
14
15
 
16
+ from vantage6.cli.configuration_create import select_configuration_questionnaire
15
17
  from vantage6.cli.context.node import NodeContext
16
18
  from vantage6.cli.globals import DEFAULT_NODE_SYSTEM_FOLDERS as N_FOL
17
- from vantage6.cli.node.common import create_client_and_authenticate, select_node
19
+ from vantage6.cli.node.common import create_client_and_authenticate
18
20
 
19
21
 
20
22
  @click.command()
@@ -80,12 +82,13 @@ def cli_node_create_private_key(
80
82
  if config:
81
83
  name = Path(config).stem
82
84
  ctx = NodeContext(name, system_folders, config)
83
- else:
84
- # retrieve context
85
- name = select_node(name, system_folders)
86
-
87
- # Create node context
88
- ctx = NodeContext(name, system_folders)
85
+ elif not name:
86
+ try:
87
+ name = select_configuration_questionnaire(InstanceType.NODE, system_folders)
88
+ except Exception:
89
+ error("No configurations could be found!")
90
+ exit(1)
91
+ ctx = NodeContext(name, system_folders)
89
92
 
90
93
  # Authenticate with the server to obtain organization name if it wasn't
91
94
  # provided
@@ -138,9 +141,7 @@ def cli_node_create_private_key(
138
141
 
139
142
  # update config file
140
143
  info("Updating configuration")
141
- # TODO v5+ this probably messes up the current config as the template is used...
142
- # Fix when reimplementing this in v5
143
- ctx.config["encryption"]["private_key"] = str(file_)
144
+ ctx.config["node"]["encryption"]["private_key"] = str(file_)
144
145
  ctx.config_manager.put(ctx.config)
145
146
  ctx.config_manager.save(ctx.config_file)
146
147
 
@@ -2,11 +2,14 @@ import click
2
2
  import questionary as q
3
3
 
4
4
  from vantage6.common import ensure_config_dir_writable, error, info
5
+ from vantage6.common.globals import InstanceType
5
6
 
6
- from vantage6.cli.configuration_create import NodeConfigurationManager
7
+ from vantage6.cli.configuration_create import (
8
+ NodeConfigurationManager,
9
+ select_configuration_questionnaire,
10
+ )
7
11
  from vantage6.cli.context.node import NodeContext
8
12
  from vantage6.cli.globals import DEFAULT_NODE_SYSTEM_FOLDERS as N_FOL
9
- from vantage6.cli.node.common import select_node
10
13
 
11
14
 
12
15
  @click.command()
@@ -31,7 +34,12 @@ def cli_node_set_api_key(name: str, api_key: str, system_folders: bool) -> None:
31
34
  Put a new API key into the node configuration file
32
35
  """
33
36
  # select node name
34
- name = select_node(name, system_folders)
37
+ if not name:
38
+ try:
39
+ name = select_configuration_questionnaire(InstanceType.NODE, system_folders)
40
+ except Exception:
41
+ error("No configurations could be found!")
42
+ exit(1)
35
43
 
36
44
  # Check that we can write in the config folder
37
45
  if not ensure_config_dir_writable(system_folders):
@@ -50,9 +58,7 @@ def cli_node_set_api_key(name: str, api_key: str, system_folders: bool) -> None:
50
58
  conf_mgr = NodeConfigurationManager.from_file(ctx.config_file)
51
59
 
52
60
  # set new api key, and save the file
53
- ctx.config["api_key"] = api_key
54
- # TODO v5+ this probably messes up the current config as the template is used...
55
- # Fix when reimplementing this in v5
61
+ ctx.config["node"]["apiKey"] = api_key
56
62
  conf_mgr.put(ctx.config)
57
63
  conf_mgr.save(ctx.config_file)
58
64
  info(f"Your new API key has been uploaded to the config file {ctx.config_file}.")
@@ -1,6 +1,7 @@
1
1
  import click
2
2
  import requests
3
3
  import yaml
4
+ from marshmallow import Schema, ValidationError, fields, post_load
4
5
 
5
6
  from vantage6.common import error, info
6
7
  from vantage6.common.globals import (
@@ -64,7 +65,8 @@ def cli_server_import(ctx: ServerContext, file: str, drop_all: bool) -> None:
64
65
  info("Loading and validating import file")
65
66
  with open(file, "r") as f:
66
67
  import_data = yaml.safe_load(f)
67
- # TODO: validate import file
68
+
69
+ _check_import_file(import_data)
68
70
 
69
71
  client = UserClient(
70
72
  server_url=f"{ctx.config['server']['baseUrl']}{ctx.config['server']['apiPath']}",
@@ -77,7 +79,9 @@ def cli_server_import(ctx: ServerContext, file: str, drop_all: bool) -> None:
77
79
  info("Authenticate using admin credentials (opens browser for login)")
78
80
  client.authenticate()
79
81
 
80
- # TODO: validate that the user has the correct permissions to import data
82
+ # Note: we do not validate that the user has the correct permissions to import data.
83
+ # As the user has access to the `v6 server import` command, they already have
84
+ # access to the server+database.
81
85
 
82
86
  if drop_all:
83
87
  info("Dropping all existing data")
@@ -91,11 +95,12 @@ def cli_server_import(ctx: ServerContext, file: str, drop_all: bool) -> None:
91
95
  for organization in import_data["organizations"]:
92
96
  org = client.organization.create(
93
97
  name=organization["name"],
94
- address1=organization["address1"] or "",
95
- address2=organization["address2"] or "",
96
- zipcode=organization["zipcode"] or "",
97
- country=organization["country"] or "",
98
- domain=organization["domain"] or "",
98
+ address1=organization.get("address1", ""),
99
+ address2=organization.get("address2", ""),
100
+ zipcode=str(organization.get("zipcode", "")),
101
+ country=organization.get("country", ""),
102
+ domain=organization.get("domain", ""),
103
+ public_key=organization.get("public_key", ""),
99
104
  )
100
105
  organizations.append(org)
101
106
 
@@ -152,16 +157,79 @@ def _drop_all(client: UserClient) -> None:
152
157
  info(f"Deleting collaboration {collaboration['name']}")
153
158
  client.collaboration.delete(collaboration["id"], delete_dependents=True)
154
159
 
155
- # TODO: For some reason, the `delete_dependents` parameter is not working for users,
156
- # so we delete them here first.
157
- while users := [u for u in client.user.list()["data"] if u["username"] != "admin"]:
158
- for user in users:
159
- info(f"Deleting user {user['username']}")
160
- client.user.delete(user["id"])
161
-
162
- while orgs := [
163
- o for o in client.organization.list()["data"] if o["name"] != "root"
164
- ]:
160
+ # remove all organizations but keep the root organization
161
+ while orgs := [o for o in client.organization.list()["data"] if o["id"] != 1]:
165
162
  for org in orgs:
166
163
  info(f"Deleting organization {org['name']}")
167
164
  client.organization.delete(org["id"], delete_dependents=True)
165
+
166
+
167
+ class StrOrInt(fields.Field):
168
+ """Field that can be a string or an integer"""
169
+
170
+ def _serialize(self, value, attr, obj, **kwargs):
171
+ if isinstance(value, str):
172
+ return value
173
+ elif isinstance(value, int):
174
+ return str(value)
175
+ else:
176
+ raise ValidationError("Value must be a string or an integer")
177
+
178
+
179
+ class UserSchema(Schema):
180
+ username = fields.Str(required=True)
181
+ password = fields.Str(required=True)
182
+
183
+
184
+ class OrganizationSchema(Schema):
185
+ name = fields.Str(required=True)
186
+ address1 = fields.Str(missing="")
187
+ address2 = fields.Str(missing="")
188
+ zipcode = StrOrInt(missing="")
189
+ country = fields.Str(missing="")
190
+ domain = fields.Str(missing="")
191
+ public_key = fields.Str(missing="")
192
+ users = fields.List(fields.Nested(UserSchema), missing=[])
193
+
194
+
195
+ class ParticipantSchema(Schema):
196
+ name = fields.Str(required=True)
197
+
198
+
199
+ class CollaborationSchema(Schema):
200
+ name = fields.Str(required=True)
201
+ participants = fields.List(fields.Nested(ParticipantSchema), required=True)
202
+ encrypted = fields.Bool(missing=False)
203
+
204
+
205
+ class ImportDataSchema(Schema):
206
+ organizations = fields.List(fields.Nested(OrganizationSchema), missing=[])
207
+ collaborations = fields.List(fields.Nested(CollaborationSchema), missing=[])
208
+
209
+ @post_load
210
+ def validate_participants_exist(self, data, **kwargs):
211
+ """Validate that all participants exist in organizations"""
212
+ org_names = {org["name"] for org in data.get("organizations", [])}
213
+
214
+ for collaboration in data.get("collaborations", []):
215
+ for participant in collaboration.get("participants", []):
216
+ if participant["name"] not in org_names:
217
+ raise ValidationError(
218
+ f"Participant {participant['name']} not found in organizations",
219
+ field_name="collaborations",
220
+ )
221
+ return data
222
+
223
+
224
+ def _check_import_file(import_data: dict) -> dict:
225
+ """
226
+ Validate import file using Marshmallow schemas.
227
+ Returns the validated and cleaned data.
228
+ """
229
+ schema = ImportDataSchema()
230
+ try:
231
+ return schema.load(import_data)
232
+ except ValidationError as err:
233
+ # Handle validation errors gracefully
234
+ error(f"Validation error: {err.messages}")
235
+ exit(1)
@@ -90,7 +90,7 @@ node:
90
90
  enabled: {{ node.encryption.enabled | default(false) }}
91
91
 
92
92
  # Location to the private key file. Required if encryption is enabled.
93
- {% if node.encryption.enabled | default(false) %}
93
+ {% if node.encryption.private_key is defined and node.encryption.private_key != '' %}
94
94
  private_key: {{ node.encryption.private_key | default('/path/to/private_key.pem') }}
95
95
  {% else %}
96
96
  # private_key: /path/to/private_key.pem
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vantage6
3
- Version: 5.0.0a38
3
+ Version: 5.0.0a41
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==2.1.1
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.0a38
22
- Requires-Dist: vantage6-common==5.0.0a38
21
+ Requires-Dist: vantage6-client==5.0.0a41
22
+ Requires-Dist: vantage6-common==5.0.0a41
23
23
  Provides-Extra: dev
24
24
  Requires-Dist: black; extra == 'dev'
25
25
  Requires-Dist: coverage==7.10.2; extra == 'dev'
@@ -1,13 +1,13 @@
1
1
  vantage6/cli/__init__.py,sha256=8KIgMPbZTNdkYlUrB8irpsUA7KdkFdLbNbMKixOP2dE,277
2
2
  vantage6/cli/cli.py,sha256=uEazjKFMpVWP3rQ0FtHNcOg70qYTymoqPqc8dF5saKg,8591
3
3
  vantage6/cli/config.py,sha256=vaHNrgJTaAeYLpxfsXOHkYmsI1gLSipkKzyEOPXF1w4,8258
4
- vantage6/cli/configuration_create.py,sha256=IehzaaLQtovlT9MnEjAQpEdXQNeFXwa1FvmPFmX0lLE,7317
4
+ vantage6/cli/configuration_create.py,sha256=Q8qnfDZ7gVEPgIqZJNJl4nEqc13ZVJh9K3U-O4XRk_Y,7354
5
5
  vantage6/cli/configuration_manager.py,sha256=zsk6dkdUA9zggUeFSkzXrNZ_XkxmQf26_oZsmLYYsu8,8096
6
6
  vantage6/cli/globals.py,sha256=VBa49tjuy9KjeF1eKtZre5QSohnWvlI1hsHeDZNMblA,2738
7
7
  vantage6/cli/utils.py,sha256=kq1Nv8SJPG5STII9DAcTSR4yCsZcoOvM8rygA5cWa28,5199
8
8
  vantage6/cli/utils_kubernetes.py,sha256=zMdarsuWeeZdrDBTczIjC920HadM_5BcOnhOFXBHk0Q,8200
9
9
  vantage6/cli/algorithm/create.py,sha256=kRT1BlBcb0fDaB2Q988WxtA6EyAZmOW5QoU2uhbwBIo,2075
10
- vantage6/cli/algorithm/generate_algorithm_json.py,sha256=WbSetOXr8XWh-tfvuQtIPeU0jZGQyAJEoAHH7NR9eQ4,19488
10
+ vantage6/cli/algorithm/generate_algorithm_json.py,sha256=p22wKt3y3J6G8ZQZ7qy5aNe7KppXdY7au9MKsnRWwwU,19525
11
11
  vantage6/cli/algorithm/update.py,sha256=oReCQaOQHfZe-o-zTLD2RyjzhwAaXRQkFHyZZ-JUb4s,1338
12
12
  vantage6/cli/algostore/attach.py,sha256=GoB1pGLDndKGmzNt5jJCck3yH_cnXkNuPKxDNJ_MZz8,1299
13
13
  vantage6/cli/algostore/files.py,sha256=oqjdGeoyUdCGfoSLbQA6r7GZtJtzSbXMyvojQ80xVCE,581
@@ -25,12 +25,12 @@ vantage6/cli/auth/remove.py,sha256=664X1gl77RrHpzJo1xYiAmZMw4K6muqhtytYk50iiWs,3
25
25
  vantage6/cli/auth/start.py,sha256=cH5bYvectyliobd6ybpGYf9wI7FyML5-5HS3jsjIyu8,2805
26
26
  vantage6/cli/auth/stop.py,sha256=oWy7jDZ45zEyqSzwJr5-T14vp01D1TTcTYWxjXNtJ_U,1882
27
27
  vantage6/cli/common/attach.py,sha256=bw9-Q1JjKa_f8Q7-xI5lpI2WoUmlGKZSvULlGoSmnH8,3423
28
- vantage6/cli/common/decorator.py,sha256=7eyCbCk572__g0SfQl5Z9Uo1b0sSknFY7kn6UBYkSgg,4656
28
+ vantage6/cli/common/decorator.py,sha256=N08qVbEokkV-XYLwEgEYRzjvgauiUdhIygBQqxR-XoM,4693
29
29
  vantage6/cli/common/list.py,sha256=j2q6B4k7wX5UMJ0gkuMrkYPl5I3NmkVuV6eV70hM36I,2075
30
- vantage6/cli/common/new.py,sha256=10I_8NRIMjJJw9SaEBIC0Xz7w0NWSeQ4yqLntFjYpR0,3241
30
+ vantage6/cli/common/new.py,sha256=_srwNExvphy2SImbeFhGxuSsarkztPxxYXMwGMBy7g8,3278
31
31
  vantage6/cli/common/remove.py,sha256=q8YOihk5aClvPuw2cADulHrxeXv_0JhqpaNUVH1zhlQ,2206
32
32
  vantage6/cli/common/start.py,sha256=kMDjL_sObSkx4TqhnukyD9Jb7vOGXJ9Bo0pJBcxpbsg,10095
33
- vantage6/cli/common/stop.py,sha256=7SB70N4Qwk5AQUz9LYtNF1D04oWRbVBrF7qzuZviSHY,5577
33
+ vantage6/cli/common/stop.py,sha256=qIJ1COJWvQlbIpyMqh6ao2WKuXDqPBbU7-wF7IuOgQc,5614
34
34
  vantage6/cli/common/utils.py,sha256=-XP-JslNpnveR37v4vwiCgdj4kXOMlluoPJRmNECtFk,11473
35
35
  vantage6/cli/common/version.py,sha256=2XPeZm5NMYSqTGjHLUFcRFZZRhtDVLwytQjoDad3utU,2489
36
36
  vantage6/cli/context/__init__.py,sha256=umHNotzJjd2TQCela7V8MTUwN4iAKDy8AR4s7ask5Ic,3135
@@ -45,17 +45,17 @@ vantage6/cli/dev/rebuild.py,sha256=3iMIqAxiwdZkx4Q0xQyqcWHvXUzOQT-9cyRuOiulwR8,1
45
45
  vantage6/cli/dev/start.py,sha256=DzFtD_jQaVIIawfPdMwBLjY1E_YOokiWm27oanci8k4,1000
46
46
  vantage6/cli/dev/stop.py,sha256=-yrLCadDfeLES9pFJz9yxm33XtzEXpdqvHvwakLQNEE,663
47
47
  vantage6/cli/node/attach.py,sha256=xOTB_79pShvn6B4Ky1bZ3TI_F3gOkGS9huzbEE0DRYc,1217
48
- vantage6/cli/node/create_private_key.py,sha256=gmgI9Gtcx3z0esxyLw-96HcrfmAJFOjjXbVvA9ZGN3g,5129
48
+ vantage6/cli/node/create_private_key.py,sha256=UTsoJ04OCVjubC8b7AZhxrLzdwG-wQ_63ROw5uruxqs,5229
49
49
  vantage6/cli/node/files.py,sha256=y7WOGHCTE3DnmxgbweLcu51t0YLS9Jvl24zgCHKkQTQ,1003
50
50
  vantage6/cli/node/list.py,sha256=cydU5tByy0bHWCApcaZ8Pl_2SEbiqkK-mjVhWeChiCc,361
51
51
  vantage6/cli/node/new.py,sha256=XEVsnkI1UBngWwE96-KIOcs4zdPCuq3coTGHPNQxepQ,12717
52
52
  vantage6/cli/node/remove.py,sha256=alInSH_3E-yJthQ8JrGaopvAZ7GgxuRBppnpC8BRTBU,1061
53
53
  vantage6/cli/node/restart.py,sha256=hJWzyJjetfNe8YYkOt5ZEUE_t-LpvQOwUGcQH0pXfNQ,3122
54
- vantage6/cli/node/set_api_key.py,sha256=Ou7VnyHpqNqmy0O53ogG7VX_-jWsN3hWR2_GIiYJVo0,1998
54
+ vantage6/cli/node/set_api_key.py,sha256=eLB-NVpvXROlGKPAMua6vBAs5l08-AkENWiTfOB82FM,2103
55
55
  vantage6/cli/node/start.py,sha256=dn9wlDzq-XCV4ruMSTt0Nt01TOuJKZbXt3WJ3PPqZQY,4691
56
56
  vantage6/cli/node/stop.py,sha256=9936hGZu8EuYFF2NZ2of8U33jc8hKRLc4bXFu1ImuLw,6814
57
57
  vantage6/cli/node/version.py,sha256=vuQlq2SFWxHsA2_hqXtYK8c06mS2KqPCPU48F7-XXFU,4001
58
- vantage6/cli/node/common/__init__.py,sha256=M7xJb_AL8vXgpTI_ZojgsVO1i8BovmZMJrF3NOq1PZ8,3165
58
+ vantage6/cli/node/common/__init__.py,sha256=B05W_dhjzhbk056xgxoGDDWlOM0YYGM6ZMslalR-nyw,3977
59
59
  vantage6/cli/node/common/task_cleanup.py,sha256=bNa72P_gmGeQ3Z-Vl6Q7tKG8-deSAqk_02gvG--eHIY,4515
60
60
  vantage6/cli/prometheus/monitoring_manager.py,sha256=I4iR_2i6EgLMR2dM2e4bOVbTyGN4jPPRDPKHd8_CbRk,4908
61
61
  vantage6/cli/prometheus/prometheus.yml,sha256=Q4i9lVknITBodHUMgarRnEsXfXTNuSdI6a-9pW4YCoI,98
@@ -75,7 +75,7 @@ vantage6/cli/sandbox/populate/helpers/load_fixtures.py,sha256=PQpEo0Q5PyWwYDaenA
75
75
  vantage6/cli/sandbox/populate/helpers/utils.py,sha256=5LSGZ-h7QtMB51IDzawXPIQFF7i2CIm6oYzEsdVKG4Y,1213
76
76
  vantage6/cli/server/attach.py,sha256=FrSdpRLJeRKWt0VBifj8oPKZsLNDaKJaI2Hy0D2m3kY,1282
77
77
  vantage6/cli/server/files.py,sha256=MsnLaY91F2m49mm_FpVboFrSsZiEsu175KioN1alZfk,568
78
- vantage6/cli/server/import_.py,sha256=nCnODyuMoDXxpKakCJnasGRdPcxL6gJJorGoZTWEEas,5984
78
+ vantage6/cli/server/import_.py,sha256=m7yjhXhGvL3dJ-8pEN0NMrE3CjMTcf0A0hEhJ5kTBIk,8276
79
79
  vantage6/cli/server/list.py,sha256=m-g1k8pmScK_CdhKiVFrLIUZsPnPsHr5CrfHmmI6KJk,299
80
80
  vantage6/cli/server/new.py,sha256=6KF07KMmdSQTSbXCxfAztVFb2M10uQdQjLmzCXnnfUo,3802
81
81
  vantage6/cli/server/remove.py,sha256=dwylIP5uEUPTRP9bd6_7rWhyUoCJuYoe1Kon9WUV4tY,891
@@ -85,7 +85,7 @@ vantage6/cli/server/version.py,sha256=iVYem8Gye4dCChC70s_FTqiWi1AF4VQfvhebnh0jur
85
85
  vantage6/cli/server/common/__init__.py,sha256=Frh_4V8ssoGy8rO3o7mRnlKkpOlNSjA5J6eReN1Yluo,1386
86
86
  vantage6/cli/template/algo_store_config.j2,sha256=dlKiUzZ-zYGdFCBArMMRpXvoQFG7rYz4vmv6rCwp6fM,7470
87
87
  vantage6/cli/template/auth_config.j2,sha256=mFNL7H3plnqN7kpptk2WPXPsnuGddCP_ktbzBZHi5ic,10866
88
- vantage6/cli/template/node_config.j2,sha256=DvqZ5KnMZXJkyu4v25N6po3ieEURpteGZtl6Pj2gjYo,13927
88
+ vantage6/cli/template/node_config.j2,sha256=ZHx-PvjldyKLcE3e8V1K0k5LkDUaS1uZunvbQWfgA2E,13963
89
89
  vantage6/cli/template/node_config_nonk8s.j2,sha256=mrS-YQwg_9i7zBKuEFG5pe3ZbHCLtl5hGgzk2etXTvo,783
90
90
  vantage6/cli/template/server_config.j2,sha256=0uksEkCf4lRcBD39brOGdwoF_vCtieA-FjTiSUxNvo0,10195
91
91
  vantage6/cli/test/client_script.py,sha256=AHQ4fhzbtD-VcJAm0rxUDteepXNa4Bef9SKWnzobTd0,4825
@@ -96,7 +96,7 @@ vantage6/cli/test/algo_test_scripts/algo_test_script.py,sha256=jfzXPmpL0HlE_eq1j
96
96
  vantage6/cli/test/common/diagnostic_runner.py,sha256=jFFHqlj3v0WRpVEBa7Ovek3DL6RX6W5cQd9w5hWHtZA,6597
97
97
  vantage6/cli/use/context.py,sha256=cTp9kwC4hhq4FkPz1wYAeYWUGK4054S19FxpZYLF7lM,1665
98
98
  vantage6/cli/use/namespace.py,sha256=ev22EuixwW7ZWqhGo8SiSKgtGq4yy8gEXmMhR31khkE,1729
99
- vantage6-5.0.0a38.dist-info/METADATA,sha256=QPIrz4VCQuIpjB2_z94BzvC2jP6oR3NAP_lZsn0DotM,1778
100
- vantage6-5.0.0a38.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
101
- vantage6-5.0.0a38.dist-info/entry_points.txt,sha256=RKVCMsD70s_Gp6If89uDlCphsZ9uLIOMt1gciv8EMDQ,53
102
- vantage6-5.0.0a38.dist-info/RECORD,,
99
+ vantage6-5.0.0a41.dist-info/METADATA,sha256=4aR_JWhmZV4yqZ9JyQBrlRgziI_a-0CblbUxiOMMxXk,1778
100
+ vantage6-5.0.0a41.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
101
+ vantage6-5.0.0a41.dist-info/entry_points.txt,sha256=RKVCMsD70s_Gp6If89uDlCphsZ9uLIOMt1gciv8EMDQ,53
102
+ vantage6-5.0.0a41.dist-info/RECORD,,