vantage6 5.0.0a36__py3-none-any.whl → 5.0.0a38__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.

Files changed (80) hide show
  1. vantage6/cli/algorithm/generate_algorithm_json.py +0 -1
  2. vantage6/cli/algostore/attach.py +28 -3
  3. vantage6/cli/algostore/list.py +2 -2
  4. vantage6/cli/algostore/new.py +3 -2
  5. vantage6/cli/algostore/start.py +25 -6
  6. vantage6/cli/algostore/stop.py +3 -0
  7. vantage6/cli/algostore/version.py +62 -0
  8. vantage6/cli/auth/attach.py +1 -1
  9. vantage6/cli/auth/list.py +2 -2
  10. vantage6/cli/auth/new.py +3 -2
  11. vantage6/cli/auth/remove.py +58 -0
  12. vantage6/cli/auth/start.py +27 -9
  13. vantage6/cli/auth/stop.py +3 -0
  14. vantage6/cli/cli.py +21 -0
  15. vantage6/cli/common/attach.py +114 -0
  16. vantage6/cli/common/decorator.py +25 -4
  17. vantage6/cli/common/list.py +68 -0
  18. vantage6/cli/common/new.py +27 -7
  19. vantage6/cli/common/remove.py +18 -0
  20. vantage6/cli/common/start.py +48 -40
  21. vantage6/cli/common/stop.py +16 -4
  22. vantage6/cli/common/utils.py +65 -74
  23. vantage6/cli/common/version.py +82 -0
  24. vantage6/cli/config.py +10 -2
  25. vantage6/cli/{configuration_wizard.py → configuration_create.py} +22 -14
  26. vantage6/cli/configuration_manager.py +70 -21
  27. vantage6/cli/context/__init__.py +10 -5
  28. vantage6/cli/context/algorithm_store.py +13 -7
  29. vantage6/cli/context/auth.py +23 -5
  30. vantage6/cli/context/node.py +25 -8
  31. vantage6/cli/context/server.py +18 -6
  32. vantage6/cli/globals.py +1 -0
  33. vantage6/cli/node/attach.py +27 -3
  34. vantage6/cli/node/common/__init__.py +26 -10
  35. vantage6/cli/node/common/task_cleanup.py +153 -0
  36. vantage6/cli/node/list.py +3 -44
  37. vantage6/cli/node/new.py +13 -6
  38. vantage6/cli/node/set_api_key.py +1 -1
  39. vantage6/cli/node/start.py +30 -7
  40. vantage6/cli/node/stop.py +151 -7
  41. vantage6/cli/node/version.py +96 -33
  42. vantage6/cli/sandbox/config/base.py +109 -0
  43. vantage6/cli/sandbox/config/core.py +300 -0
  44. vantage6/cli/sandbox/config/node.py +311 -0
  45. vantage6/cli/sandbox/data/km_dataset.csv +2401 -0
  46. vantage6/cli/sandbox/data/olympic_athletes_2016.csv +2425 -0
  47. vantage6/cli/sandbox/new.py +207 -0
  48. vantage6/cli/sandbox/populate/__init__.py +173 -0
  49. vantage6/cli/sandbox/populate/helpers/connect_store.py +203 -0
  50. vantage6/cli/sandbox/populate/helpers/delete_fixtures.py +67 -0
  51. vantage6/cli/sandbox/populate/helpers/load_fixtures.py +476 -0
  52. vantage6/cli/sandbox/populate/helpers/utils.py +35 -0
  53. vantage6/cli/sandbox/remove.py +155 -0
  54. vantage6/cli/sandbox/start.py +349 -0
  55. vantage6/cli/sandbox/stop.py +106 -0
  56. vantage6/cli/server/attach.py +28 -3
  57. vantage6/cli/server/common/__init__.py +5 -6
  58. vantage6/cli/server/import_.py +137 -119
  59. vantage6/cli/server/list.py +2 -2
  60. vantage6/cli/server/new.py +5 -3
  61. vantage6/cli/server/start.py +21 -4
  62. vantage6/cli/server/stop.py +2 -0
  63. vantage6/cli/server/version.py +31 -18
  64. vantage6/cli/template/algo_store_config.j2 +3 -0
  65. vantage6/cli/template/auth_config.j2 +24 -1
  66. vantage6/cli/template/node_config.j2 +2 -0
  67. vantage6/cli/template/server_config.j2 +10 -7
  68. vantage6/cli/use/context.py +8 -1
  69. vantage6/cli/use/namespace.py +10 -7
  70. vantage6/cli/utils.py +33 -1
  71. vantage6/cli/utils_kubernetes.py +270 -0
  72. {vantage6-5.0.0a36.dist-info → vantage6-5.0.0a38.dist-info}/METADATA +4 -4
  73. vantage6-5.0.0a38.dist-info/RECORD +102 -0
  74. vantage6/cli/rabbitmq/__init__.py +0 -0
  75. vantage6/cli/rabbitmq/definitions.py +0 -26
  76. vantage6/cli/rabbitmq/queue_manager.py +0 -220
  77. vantage6/cli/rabbitmq/rabbitmq.config +0 -8
  78. vantage6-5.0.0a36.dist-info/RECORD +0 -86
  79. {vantage6-5.0.0a36.dist-info → vantage6-5.0.0a38.dist-info}/WHEEL +0 -0
  80. {vantage6-5.0.0a36.dist-info → vantage6-5.0.0a38.dist-info}/entry_points.txt +0 -0
@@ -1,11 +1,14 @@
1
1
  import click
2
2
  import questionary
3
- from kubernetes import client, config
3
+ from kubernetes import client
4
4
 
5
5
  from vantage6.common import error
6
6
 
7
7
  from vantage6.cli.config import CliConfig
8
8
  from vantage6.cli.utils import switch_context_and_namespace
9
+ from vantage6.cli.utils_kubernetes import (
10
+ get_core_api_with_ssl_handling,
11
+ )
9
12
 
10
13
 
11
14
  @click.command()
@@ -16,15 +19,15 @@ def cli_use_namespace(namespace: str):
16
19
 
17
20
  The namespace will be created if it does not exist.
18
21
  """
19
- # Load the active context configuration
20
- config.load_kube_config()
22
+ # Configure for MicroK8s if needed
23
+ core_api, _ = get_core_api_with_ssl_handling()
21
24
 
22
25
  try:
23
- v1 = client.CoreV1Api()
24
- namespace_list = v1.list_namespace()
26
+ namespace_list = core_api.list_namespace()
25
27
  except Exception:
26
28
  error(
27
- "Failed to connect to Kubernetes cluster. Check if the cluster is running and reachable."
29
+ "Failed to connect to Kubernetes cluster. Check if the cluster is running "
30
+ "and reachable."
28
31
  )
29
32
  return
30
33
 
@@ -46,7 +49,7 @@ def cli_use_namespace(namespace: str):
46
49
  namespace_body = client.V1Namespace(
47
50
  metadata=client.V1ObjectMeta(name=namespace)
48
51
  )
49
- v1.create_namespace(namespace_body)
52
+ core_api.create_namespace(namespace_body)
50
53
 
51
54
  # Switch to the selected namespace for current context
52
55
  switch_context_and_namespace(namespace=namespace)
vantage6/cli/utils.py CHANGED
@@ -15,6 +15,34 @@ import questionary as q
15
15
  from vantage6.common import error, info, warning
16
16
 
17
17
 
18
+ def _is_valid_k8s_dns_name(name: str) -> bool:
19
+ """
20
+ Validate a Kubernetes DNS-1035 label.
21
+
22
+ Rules:
23
+ - lower case alphanumeric or '-'
24
+ - start with a letter
25
+ - end with alphanumeric
26
+ - length 1-63
27
+ """
28
+ if len(name) == 0 or len(name) > 63:
29
+ return False
30
+ return re.match(r"^[a-z]([-a-z0-9]*[a-z0-9])?$", name) is not None
31
+
32
+
33
+ def _check_k8s_dns_name(name: str) -> None:
34
+ """
35
+ Exit with error if the provided name is not a valid DNS-1035 label.
36
+ """
37
+ if not _is_valid_k8s_dns_name(name):
38
+ error(
39
+ f"Invalid name: '{name}'. Name must comply with the following rules: "
40
+ "letters, numbers, or '-', start with a letter, end with letter or number, "
41
+ "and be at most 63 characters."
42
+ )
43
+ exit(1)
44
+
45
+
18
46
  def check_config_name_allowed(name: str) -> None:
19
47
  """
20
48
  Check if configuration name is allowed
@@ -73,7 +101,7 @@ def remove_file(file: str | Path, file_type: str) -> None:
73
101
  warning(f"Could not remove {file_type} file: {file} does not exist")
74
102
 
75
103
 
76
- def prompt_config_name(name: str | None) -> None:
104
+ def prompt_config_name(name: str | None) -> str:
77
105
  """
78
106
  Get a new configuration name from the user, or simply return the name if
79
107
  it is not None.
@@ -94,9 +122,13 @@ def prompt_config_name(name: str | None) -> None:
94
122
  except KeyboardInterrupt:
95
123
  error("Aborted by user!")
96
124
  exit(1)
125
+ if not name:
126
+ error("No configuration name provided!")
127
+ exit(1)
97
128
  if name.count(" ") > 0:
98
129
  name = name.replace(" ", "-")
99
130
  info(f"Replaced spaces from configuration name: {name}")
131
+ _check_k8s_dns_name(name)
100
132
  return name
101
133
 
102
134
 
@@ -0,0 +1,270 @@
1
+ """
2
+ Kubernetes utility functions for Vantage6 CLI.
3
+
4
+ This module provides utilities for handling Kubernetes client configuration,
5
+ especially for MicroK8s environments that may have SSL certificate issues.
6
+
7
+ The issue is that the python kubernetes client does not automatically use the
8
+ certificate from microk8s, so it is manually configured in this module. Note that this
9
+ is only an issue for the CLI and not for running nodes/servers/stores/etc., because
10
+ those are started using the `kubectl` command, which includes the microk8scertificate
11
+ automatically.
12
+ """
13
+
14
+ import base64
15
+ import ssl
16
+ from pathlib import Path
17
+
18
+ from kubernetes import client, config
19
+ from kubernetes.config.config_exception import ConfigException
20
+
21
+ from vantage6.common import warning
22
+
23
+
24
+ def configure_kubernetes_client_for_microk8s(cfg: client.Configuration) -> None:
25
+ """
26
+ Configure the Kubernetes client to handle MicroK8s SSL certificate issues.
27
+
28
+ This function detects if we're using MicroK8s and configures the client
29
+ to handle SSL certificates appropriately for both development and production.
30
+
31
+ Parameters
32
+ ----------
33
+ cfg : client.Configuration
34
+ The Kubernetes client configuration to configure
35
+ """
36
+ # Check if we're using MicroK8s by looking at the current context
37
+ if is_microk8s_context():
38
+ _configure_microk8s_ssl(cfg)
39
+
40
+
41
+ def _configure_microk8s_ssl(cfg: client.Configuration) -> None:
42
+ """
43
+ Configure SSL settings for MicroK8s.
44
+
45
+ This function handles MicroK8s SSL certificates in a secure way by:
46
+ 1. First trying to use the MicroK8s certificate directly
47
+ 2. If that fails, falling back to a more lenient but still secure approach
48
+ """
49
+ try:
50
+ # Try to get the MicroK8s certificate and use it properly
51
+ if cert_path := _get_microk8s_certificate_path():
52
+ _configure_with_certificate(cert_path, cfg)
53
+ else:
54
+ warning(
55
+ "MicroK8s certificate not found. You may run into errors when using "
56
+ "the CLI."
57
+ )
58
+
59
+ except Exception as e:
60
+ warning(f"Could not configure MicroK8s SSL settings: {e}")
61
+ warning("You may run into errors when using the CLI.")
62
+
63
+
64
+ def _get_microk8s_certificate_path() -> Path | None:
65
+ """
66
+ Get the path to the MicroK8s certificate.
67
+
68
+ Returns
69
+ -------
70
+ Path | None
71
+ Path to the MicroK8s certificate if found, None otherwise
72
+ """
73
+ # Common MicroK8s certificate locations
74
+ possible_paths = [
75
+ Path.home() / ".kube" / "microk8s.crt",
76
+ Path("/var/snap/microk8s/current/certs/ca.crt"),
77
+ Path("/var/snap/microk8s/current/certs/server.crt"),
78
+ ]
79
+
80
+ for cert_path in possible_paths:
81
+ if cert_path.exists():
82
+ return cert_path
83
+
84
+ return None
85
+
86
+
87
+ def _configure_with_certificate(cert_path: Path, cfg: client.Configuration) -> None:
88
+ """
89
+ Configure the Kubernetes client to use a specific certificate.
90
+
91
+ Parameters
92
+ ----------
93
+ cert_path : Path
94
+ Path to the certificate file
95
+ """
96
+ try:
97
+ # Validate the certificate before using it
98
+ if not _validate_certificate(cert_path):
99
+ warning(
100
+ f"Certificate {cert_path} appears to be invalid. You may run into "
101
+ "errors when using the CLI."
102
+ )
103
+ return
104
+
105
+ cfg.verify_ssl = True
106
+ cfg.ssl_ca_cert = str(cert_path)
107
+
108
+ # Apply the configuration to the default client
109
+ client.Configuration.set_default(cfg)
110
+
111
+ except Exception as e:
112
+ warning(f"Failed to configure with certificate {cert_path}: {e}")
113
+ warning("You may run into errors when using the CLI.")
114
+
115
+
116
+ def _validate_certificate(cert_path: Path) -> bool:
117
+ """
118
+ Validate that a certificate file is readable and appears to be a valid certificate.
119
+
120
+ Parameters
121
+ ----------
122
+ cert_path : Path
123
+ Path to the certificate file
124
+
125
+ Returns
126
+ -------
127
+ bool
128
+ True if the certificate appears valid, False otherwise
129
+ """
130
+ try:
131
+ # Check if the file exists and is readable
132
+ if not cert_path.exists() or not cert_path.is_file():
133
+ return False
134
+
135
+ # Try to read the certificate content
136
+ with open(cert_path, "rb") as f:
137
+ cert_data = f.read()
138
+
139
+ # Basic validation: check if it looks like a PEM certificate
140
+ if b"-----BEGIN CERTIFICATE-----" not in cert_data:
141
+ return False
142
+
143
+ # Try to parse the certificate with Python's ssl module
144
+ if _validate_certificate_with_ssl(cert_data):
145
+ return True
146
+
147
+ # If we can't parse it with ssl module, at least check it has the right
148
+ # structure
149
+ return (
150
+ b"-----BEGIN CERTIFICATE-----" in cert_data
151
+ and b"-----END CERTIFICATE-----" in cert_data
152
+ )
153
+
154
+ except Exception as e:
155
+ warning(f"Certificate validation failed: {e}")
156
+ return False
157
+
158
+
159
+ def _validate_certificate_with_ssl(cert_data: bytes) -> bool:
160
+ """
161
+ Validate a certificate with the ssl module.
162
+
163
+ Parameters
164
+ ----------
165
+ cert_data : bytes
166
+ The certificate data
167
+
168
+ Returns
169
+ -------
170
+ bool
171
+ True if the certificate appears valid, False otherwise
172
+ """
173
+ try:
174
+ # Extract the base64 part between BEGIN and END
175
+ start_text = b"-----BEGIN CERTIFICATE-----"
176
+ len_start_text = len(start_text)
177
+ start = cert_data.find(start_text)
178
+ end = cert_data.find(b"-----END CERTIFICATE-----")
179
+ if start != -1 and end != -1:
180
+ cert_b64 = (
181
+ cert_data[start + len_start_text : end]
182
+ .replace(b"\n", b"")
183
+ .replace(b"\r", b"")
184
+ )
185
+ cert_der = base64.b64decode(cert_b64)
186
+ ssl.DER_cert_to_PEM_cert(cert_der)
187
+ return True
188
+ except Exception:
189
+ pass
190
+ return False
191
+
192
+
193
+ def load_kubernetes_config_with_fallback() -> bool:
194
+ """
195
+ Load Kubernetes configuration with fallback for development environments.
196
+
197
+ This function tries to load the Kubernetes configuration and handles
198
+ common issues like SSL certificate problems in development environments.
199
+
200
+ Returns
201
+ -------
202
+ bool
203
+ True if configuration was loaded successfully, False otherwise
204
+ """
205
+ # Try to load in-cluster config first (for when running inside Kubernetes)
206
+ try:
207
+ config.load_incluster_config()
208
+ return True
209
+ except ConfigException:
210
+ pass
211
+
212
+ # Fallback to kubeconfig
213
+ try:
214
+ # Load kubeconfig into default config, then adjust CA if MicroK8s
215
+ config.load_kube_config()
216
+ cfg = client.Configuration.get_default_copy()
217
+ configure_kubernetes_client_for_microk8s(cfg)
218
+ client.Configuration.set_default(cfg)
219
+
220
+ return True
221
+ except ConfigException as exc:
222
+ warning(f"Failed to load Kubernetes configuration: {exc}")
223
+ return False
224
+
225
+
226
+ def create_kubernetes_apis_with_ssl_handling() -> tuple[
227
+ client.CoreV1Api, client.BatchV1Api
228
+ ]:
229
+ """
230
+ Create Kubernetes API clients with SSL handling for development environments.
231
+
232
+ Returns
233
+ -------
234
+ tuple[client.CoreV1Api, client.BatchV1Api]
235
+ Tuple of CoreV1Api and BatchV1Api clients
236
+ """
237
+ # Load configuration with fallback handling
238
+ if not load_kubernetes_config_with_fallback():
239
+ raise RuntimeError("Failed to load Kubernetes configuration")
240
+
241
+ # Create API clients
242
+ core_api = client.CoreV1Api()
243
+ batch_api = client.BatchV1Api()
244
+
245
+ return core_api, batch_api
246
+
247
+
248
+ def get_core_api_with_ssl_handling() -> client.CoreV1Api:
249
+ """
250
+ Get the CoreV1Api client with SSL handling for development environments.
251
+ """
252
+ core_api, _ = create_kubernetes_apis_with_ssl_handling()
253
+ return core_api
254
+
255
+
256
+ def is_microk8s_context() -> bool:
257
+ """
258
+ Check if the current Kubernetes context is MicroK8s.
259
+
260
+ Returns
261
+ -------
262
+ bool
263
+ True if using MicroK8s context, False otherwise
264
+ """
265
+ try:
266
+ _, active_context = config.list_kube_config_contexts()
267
+ current_context = active_context.get("name", "") if active_context else ""
268
+ return "microk8s" in current_context.lower()
269
+ except Exception:
270
+ return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vantage6
3
- Version: 5.0.0a36
3
+ Version: 5.0.0a38
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>
@@ -14,12 +14,12 @@ Requires-Dist: ipython==8.10.0
14
14
  Requires-Dist: jinja2==3.1.6
15
15
  Requires-Dist: kubernetes==28.1.0
16
16
  Requires-Dist: pandas>=2.2.3
17
- Requires-Dist: questionary==1.10.0
17
+ 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.0a36
22
- Requires-Dist: vantage6-common==5.0.0a36
21
+ Requires-Dist: vantage6-client==5.0.0a38
22
+ Requires-Dist: vantage6-common==5.0.0a38
23
23
  Provides-Extra: dev
24
24
  Requires-Dist: black; extra == 'dev'
25
25
  Requires-Dist: coverage==7.10.2; extra == 'dev'
@@ -0,0 +1,102 @@
1
+ vantage6/cli/__init__.py,sha256=8KIgMPbZTNdkYlUrB8irpsUA7KdkFdLbNbMKixOP2dE,277
2
+ vantage6/cli/cli.py,sha256=uEazjKFMpVWP3rQ0FtHNcOg70qYTymoqPqc8dF5saKg,8591
3
+ vantage6/cli/config.py,sha256=vaHNrgJTaAeYLpxfsXOHkYmsI1gLSipkKzyEOPXF1w4,8258
4
+ vantage6/cli/configuration_create.py,sha256=IehzaaLQtovlT9MnEjAQpEdXQNeFXwa1FvmPFmX0lLE,7317
5
+ vantage6/cli/configuration_manager.py,sha256=zsk6dkdUA9zggUeFSkzXrNZ_XkxmQf26_oZsmLYYsu8,8096
6
+ vantage6/cli/globals.py,sha256=VBa49tjuy9KjeF1eKtZre5QSohnWvlI1hsHeDZNMblA,2738
7
+ vantage6/cli/utils.py,sha256=kq1Nv8SJPG5STII9DAcTSR4yCsZcoOvM8rygA5cWa28,5199
8
+ vantage6/cli/utils_kubernetes.py,sha256=zMdarsuWeeZdrDBTczIjC920HadM_5BcOnhOFXBHk0Q,8200
9
+ vantage6/cli/algorithm/create.py,sha256=kRT1BlBcb0fDaB2Q988WxtA6EyAZmOW5QoU2uhbwBIo,2075
10
+ vantage6/cli/algorithm/generate_algorithm_json.py,sha256=WbSetOXr8XWh-tfvuQtIPeU0jZGQyAJEoAHH7NR9eQ4,19488
11
+ vantage6/cli/algorithm/update.py,sha256=oReCQaOQHfZe-o-zTLD2RyjzhwAaXRQkFHyZZ-JUb4s,1338
12
+ vantage6/cli/algostore/attach.py,sha256=GoB1pGLDndKGmzNt5jJCck3yH_cnXkNuPKxDNJ_MZz8,1299
13
+ vantage6/cli/algostore/files.py,sha256=oqjdGeoyUdCGfoSLbQA6r7GZtJtzSbXMyvojQ80xVCE,581
14
+ vantage6/cli/algostore/list.py,sha256=3DJ0HjdmZ8cPFVPmUgtXdzElHsa73o1ulwfy0FxmvNU,312
15
+ vantage6/cli/algostore/new.py,sha256=BZRJcaY6M84MOG7LPJsZWxbcJ3NCFnkTP3fwOkuyC_s,3497
16
+ vantage6/cli/algostore/remove.py,sha256=JsZ1L3qH2k_G3Zei-fhb_dApah91gdJKKv2vfsWK6Os,1006
17
+ vantage6/cli/algostore/start.py,sha256=EzReZVH5l4KT0Y0cpe_AFs9TzPaoS5t3VUM971cCImw,2818
18
+ vantage6/cli/algostore/stop.py,sha256=azqUa1gp7VqB1JxaeQKX4mhXACASubVN92VNR8vt3eU,1927
19
+ vantage6/cli/algostore/version.py,sha256=fxSSyS8LZ_Aiihcbi-zUek6Zg_3SAmmkSGLbapHr_GE,1958
20
+ vantage6/cli/auth/attach.py,sha256=d1NjuzcislTeOIKCNK2IbpKT0H8_6X-tI4ZtSvtaz1M,1780
21
+ vantage6/cli/auth/files.py,sha256=zxlZRZ17zpj8JoRIcxBwR7s8FEBO7ehOgw_Hz-qQkwo,448
22
+ vantage6/cli/auth/list.py,sha256=2MQhLXSuK6qanyFnr3y1duny4lDD6mx1B8YD752qfyI,293
23
+ vantage6/cli/auth/new.py,sha256=JFd3DUf-GK3zWHlCO_xl_syZfZ4GAkoGqxtkKyTpm8Y,2167
24
+ vantage6/cli/auth/remove.py,sha256=664X1gl77RrHpzJo1xYiAmZMw4K6muqhtytYk50iiWs,3105
25
+ vantage6/cli/auth/start.py,sha256=cH5bYvectyliobd6ybpGYf9wI7FyML5-5HS3jsjIyu8,2805
26
+ vantage6/cli/auth/stop.py,sha256=oWy7jDZ45zEyqSzwJr5-T14vp01D1TTcTYWxjXNtJ_U,1882
27
+ vantage6/cli/common/attach.py,sha256=bw9-Q1JjKa_f8Q7-xI5lpI2WoUmlGKZSvULlGoSmnH8,3423
28
+ vantage6/cli/common/decorator.py,sha256=7eyCbCk572__g0SfQl5Z9Uo1b0sSknFY7kn6UBYkSgg,4656
29
+ vantage6/cli/common/list.py,sha256=j2q6B4k7wX5UMJ0gkuMrkYPl5I3NmkVuV6eV70hM36I,2075
30
+ vantage6/cli/common/new.py,sha256=10I_8NRIMjJJw9SaEBIC0Xz7w0NWSeQ4yqLntFjYpR0,3241
31
+ vantage6/cli/common/remove.py,sha256=q8YOihk5aClvPuw2cADulHrxeXv_0JhqpaNUVH1zhlQ,2206
32
+ vantage6/cli/common/start.py,sha256=kMDjL_sObSkx4TqhnukyD9Jb7vOGXJ9Bo0pJBcxpbsg,10095
33
+ vantage6/cli/common/stop.py,sha256=7SB70N4Qwk5AQUz9LYtNF1D04oWRbVBrF7qzuZviSHY,5577
34
+ vantage6/cli/common/utils.py,sha256=-XP-JslNpnveR37v4vwiCgdj4kXOMlluoPJRmNECtFk,11473
35
+ vantage6/cli/common/version.py,sha256=2XPeZm5NMYSqTGjHLUFcRFZZRhtDVLwytQjoDad3utU,2489
36
+ vantage6/cli/context/__init__.py,sha256=umHNotzJjd2TQCela7V8MTUwN4iAKDy8AR4s7ask5Ic,3135
37
+ vantage6/cli/context/algorithm_store.py,sha256=4_lglDDUyIss_H8iKzNAB0qWzCIppua4q-IvPp_i7A0,4332
38
+ vantage6/cli/context/auth.py,sha256=CozmEzFtpL8K3Pq4rEiHl8MMPnCI7vKwmzsPAIF2Szc,3911
39
+ vantage6/cli/context/base_server.py,sha256=vln405k6b4z4L_VIfPCycy7gIfpJs0nqvJa8enl2HsA,2390
40
+ vantage6/cli/context/node.py,sha256=1jjDw3u1Vf0maycEA0lyiBkXrh_qcw2wGLd_b2tnX4k,7972
41
+ vantage6/cli/context/server.py,sha256=nuTUSfe08xnMMREhy8TN_PND9Ay3CASeUcgcCV6ti9A,5308
42
+ vantage6/cli/dev/clean.py,sha256=4fk5zNU7mi43YTPmgHwl6AC43_uZZyt1SUFy-JXGkRU,829
43
+ vantage6/cli/dev/common.py,sha256=fiERHE0o2-m0ZAgIbyaZnFhYdeVMddrHiUoiLjmAR8o,929
44
+ vantage6/cli/dev/rebuild.py,sha256=3iMIqAxiwdZkx4Q0xQyqcWHvXUzOQT-9cyRuOiulwR8,1290
45
+ vantage6/cli/dev/start.py,sha256=DzFtD_jQaVIIawfPdMwBLjY1E_YOokiWm27oanci8k4,1000
46
+ vantage6/cli/dev/stop.py,sha256=-yrLCadDfeLES9pFJz9yxm33XtzEXpdqvHvwakLQNEE,663
47
+ vantage6/cli/node/attach.py,sha256=xOTB_79pShvn6B4Ky1bZ3TI_F3gOkGS9huzbEE0DRYc,1217
48
+ vantage6/cli/node/create_private_key.py,sha256=gmgI9Gtcx3z0esxyLw-96HcrfmAJFOjjXbVvA9ZGN3g,5129
49
+ vantage6/cli/node/files.py,sha256=y7WOGHCTE3DnmxgbweLcu51t0YLS9Jvl24zgCHKkQTQ,1003
50
+ vantage6/cli/node/list.py,sha256=cydU5tByy0bHWCApcaZ8Pl_2SEbiqkK-mjVhWeChiCc,361
51
+ vantage6/cli/node/new.py,sha256=XEVsnkI1UBngWwE96-KIOcs4zdPCuq3coTGHPNQxepQ,12717
52
+ vantage6/cli/node/remove.py,sha256=alInSH_3E-yJthQ8JrGaopvAZ7GgxuRBppnpC8BRTBU,1061
53
+ vantage6/cli/node/restart.py,sha256=hJWzyJjetfNe8YYkOt5ZEUE_t-LpvQOwUGcQH0pXfNQ,3122
54
+ vantage6/cli/node/set_api_key.py,sha256=Ou7VnyHpqNqmy0O53ogG7VX_-jWsN3hWR2_GIiYJVo0,1998
55
+ vantage6/cli/node/start.py,sha256=dn9wlDzq-XCV4ruMSTt0Nt01TOuJKZbXt3WJ3PPqZQY,4691
56
+ vantage6/cli/node/stop.py,sha256=9936hGZu8EuYFF2NZ2of8U33jc8hKRLc4bXFu1ImuLw,6814
57
+ vantage6/cli/node/version.py,sha256=vuQlq2SFWxHsA2_hqXtYK8c06mS2KqPCPU48F7-XXFU,4001
58
+ vantage6/cli/node/common/__init__.py,sha256=M7xJb_AL8vXgpTI_ZojgsVO1i8BovmZMJrF3NOq1PZ8,3165
59
+ vantage6/cli/node/common/task_cleanup.py,sha256=bNa72P_gmGeQ3Z-Vl6Q7tKG8-deSAqk_02gvG--eHIY,4515
60
+ vantage6/cli/prometheus/monitoring_manager.py,sha256=I4iR_2i6EgLMR2dM2e4bOVbTyGN4jPPRDPKHd8_CbRk,4908
61
+ vantage6/cli/prometheus/prometheus.yml,sha256=Q4i9lVknITBodHUMgarRnEsXfXTNuSdI6a-9pW4YCoI,98
62
+ vantage6/cli/sandbox/new.py,sha256=bsHHd7nVVOcoIpl0yhM15LxG_6adOvnIkh8e4h4HwPA,6077
63
+ vantage6/cli/sandbox/remove.py,sha256=xCLE1ayjaDimby9Out0XgyLZRY0wbwmVpuEBDCrcPkM,5228
64
+ vantage6/cli/sandbox/start.py,sha256=5qJawSH4HBO23RZgaPQd3UUYIJ0tVMcGdzNaKIUE6PU,10256
65
+ vantage6/cli/sandbox/stop.py,sha256=gjNfcoXfB4pVy7x3CvdiJ1yC2x36UO17rBlAaKS_-QE,2782
66
+ vantage6/cli/sandbox/config/base.py,sha256=24Ebo9mVa6KjqZllGkFvzjiD29o1gAVz0KQn6tZCHZU,3948
67
+ vantage6/cli/sandbox/config/core.py,sha256=mScKMiaxpxR9rkuHr8mxjTtk2Dgoh4B4ZlxMrx60f1A,10004
68
+ vantage6/cli/sandbox/config/node.py,sha256=qyxAotGwJStTpO91J0plvgUZsyB_GyRBFNHuCHO0uQ4,10239
69
+ vantage6/cli/sandbox/data/km_dataset.csv,sha256=OrYF2ympb2QndiUOX_nTFGGB1HbAp2eOvZzrQ_PqJs4,31283
70
+ vantage6/cli/sandbox/data/olympic_athletes_2016.csv,sha256=WGycwcwMKEyOyJc3aEo4EhrnBJiTSE0kZAr50j2qzGk,77699
71
+ vantage6/cli/sandbox/populate/__init__.py,sha256=xzrDMnmX60kuuDA7u-E-aABdMO1rZKNwmxOo4cL68L4,4706
72
+ vantage6/cli/sandbox/populate/helpers/connect_store.py,sha256=Wb4shAbrNU7AARK7KZw4RPjryjMKPExjgRp-WuqFfcg,7592
73
+ vantage6/cli/sandbox/populate/helpers/delete_fixtures.py,sha256=fIAgzxvJqTfB1BCC-Nsdt1ltBL-o4Afl08zx6ZITb6I,2101
74
+ vantage6/cli/sandbox/populate/helpers/load_fixtures.py,sha256=PQpEo0Q5PyWwYDaenAMqPrgRG6DF_SiFGK1V0BFNY3g,16225
75
+ vantage6/cli/sandbox/populate/helpers/utils.py,sha256=5LSGZ-h7QtMB51IDzawXPIQFF7i2CIm6oYzEsdVKG4Y,1213
76
+ vantage6/cli/server/attach.py,sha256=FrSdpRLJeRKWt0VBifj8oPKZsLNDaKJaI2Hy0D2m3kY,1282
77
+ vantage6/cli/server/files.py,sha256=MsnLaY91F2m49mm_FpVboFrSsZiEsu175KioN1alZfk,568
78
+ vantage6/cli/server/import_.py,sha256=nCnODyuMoDXxpKakCJnasGRdPcxL6gJJorGoZTWEEas,5984
79
+ vantage6/cli/server/list.py,sha256=m-g1k8pmScK_CdhKiVFrLIUZsPnPsHr5CrfHmmI6KJk,299
80
+ vantage6/cli/server/new.py,sha256=6KF07KMmdSQTSbXCxfAztVFb2M10uQdQjLmzCXnnfUo,3802
81
+ vantage6/cli/server/remove.py,sha256=dwylIP5uEUPTRP9bd6_7rWhyUoCJuYoe1Kon9WUV4tY,891
82
+ vantage6/cli/server/start.py,sha256=eaQHDoa8ttSK_ZiZPzlYM_EMCqaOG3qFtUPrOnNCJf8,3206
83
+ vantage6/cli/server/stop.py,sha256=4pp9NGh-DWPkJ-pXtyxbu9J-liB8l6uiODCkFKoLbC4,2077
84
+ vantage6/cli/server/version.py,sha256=iVYem8Gye4dCChC70s_FTqiWi1AF4VQfvhebnh0jurU,1744
85
+ vantage6/cli/server/common/__init__.py,sha256=Frh_4V8ssoGy8rO3o7mRnlKkpOlNSjA5J6eReN1Yluo,1386
86
+ vantage6/cli/template/algo_store_config.j2,sha256=dlKiUzZ-zYGdFCBArMMRpXvoQFG7rYz4vmv6rCwp6fM,7470
87
+ vantage6/cli/template/auth_config.j2,sha256=mFNL7H3plnqN7kpptk2WPXPsnuGddCP_ktbzBZHi5ic,10866
88
+ vantage6/cli/template/node_config.j2,sha256=DvqZ5KnMZXJkyu4v25N6po3ieEURpteGZtl6Pj2gjYo,13927
89
+ vantage6/cli/template/node_config_nonk8s.j2,sha256=mrS-YQwg_9i7zBKuEFG5pe3ZbHCLtl5hGgzk2etXTvo,783
90
+ vantage6/cli/template/server_config.j2,sha256=0uksEkCf4lRcBD39brOGdwoF_vCtieA-FjTiSUxNvo0,10195
91
+ vantage6/cli/test/client_script.py,sha256=AHQ4fhzbtD-VcJAm0rxUDteepXNa4Bef9SKWnzobTd0,4825
92
+ vantage6/cli/test/feature_tester.py,sha256=AsZam91KqaAo_yIFxyZ5Hmy1ZPw83d02BDyO4TzKFQo,2631
93
+ vantage6/cli/test/integration_test.py,sha256=MctR_t-WEyxzFpMdc6ByTcX1BQglZiT5-CIOQXTBBWo,4034
94
+ vantage6/cli/test/algo_test_scripts/algo_test_arguments.py,sha256=HIKAhJ5zKkWMGXpCb_KLukbcwbyeMK5j3wcqubalbyM,791
95
+ vantage6/cli/test/algo_test_scripts/algo_test_script.py,sha256=jfzXPmpL0HlE_eq1jXLV3HuZgh_aV-ZOaawHcYIuwQE,2741
96
+ vantage6/cli/test/common/diagnostic_runner.py,sha256=jFFHqlj3v0WRpVEBa7Ovek3DL6RX6W5cQd9w5hWHtZA,6597
97
+ vantage6/cli/use/context.py,sha256=cTp9kwC4hhq4FkPz1wYAeYWUGK4054S19FxpZYLF7lM,1665
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,,
File without changes
@@ -1,26 +0,0 @@
1
- RABBITMQ_DEFINITIONS = {
2
- "rabbit_version": "3.6.6",
3
- "users": [
4
- {
5
- "name": "{{username}}",
6
- "password_hash": "{{password}}",
7
- "hashing_algorithm": "rabbit_password_hashing_sha256",
8
- "tags": "administrator",
9
- }
10
- ],
11
- "vhosts": [{"name": "{{vhost_name}}"}],
12
- "permissions": [
13
- {
14
- "user": "{{username}}",
15
- "vhost": "{{vhost_name}}",
16
- "configure": ".*",
17
- "write": ".*",
18
- "read": ".*",
19
- }
20
- ],
21
- "parameters": [],
22
- "policies": [],
23
- "queues": [],
24
- "exchanges": [],
25
- "bindings": [],
26
- }