validio-cli 8.0.0__tar.gz → 8.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {validio_cli-8.0.0 → validio_cli-8.2.1}/PKG-INFO +1 -1
- {validio_cli-8.0.0 → validio_cli-8.2.1}/pyproject.toml +1 -1
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/namespaces.py +28 -4
- {validio_cli-8.0.0 → validio_cli-8.2.1}/LICENSE +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/README_PUBLIC.md +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/__init__.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/channels.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/code.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/config.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/credentials.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/dbt.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/filters.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/incidents.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/metrics.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/notification_rules.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/resources.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/segmentations.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/segments.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/sources.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/users.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/validators.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/entities/windows.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/bin/main.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/components.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/metadata.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/namespace.py +0 -0
- {validio_cli-8.0.0 → validio_cli-8.2.1}/validio_cli/schema.py +0 -0
|
@@ -3,7 +3,7 @@ name = "validio-cli"
|
|
|
3
3
|
# This version does not represent the released version or any tag. For each
|
|
4
4
|
# release we automatically bump this before building and publishing so this
|
|
5
5
|
# should be kept at 0.0.1dev1
|
|
6
|
-
version = "8.
|
|
6
|
+
version = "8.2.1"
|
|
7
7
|
description = "CLI tool to interact with the Validio platform"
|
|
8
8
|
authors = ["Validio <support@validio.io>"]
|
|
9
9
|
license = "Apache-2.0"
|
|
@@ -64,7 +64,7 @@ async def create(
|
|
|
64
64
|
role: str = typer.Option(
|
|
65
65
|
None,
|
|
66
66
|
click_type=RoleSuggestion(),
|
|
67
|
-
help="The role to assign --api-key and --member",
|
|
67
|
+
help="The role (name or id) to assign --api-key and --member",
|
|
68
68
|
),
|
|
69
69
|
api_key: list[str] = typer.Option(
|
|
70
70
|
[],
|
|
@@ -113,6 +113,8 @@ async def create(
|
|
|
113
113
|
api_keys=ns_api_keys,
|
|
114
114
|
)
|
|
115
115
|
|
|
116
|
+
_raise_on_errors(namespaces)
|
|
117
|
+
|
|
116
118
|
if output_format == OutputFormat.JSON:
|
|
117
119
|
return output_json(namespaces, identifier)
|
|
118
120
|
|
|
@@ -133,7 +135,7 @@ async def update(
|
|
|
133
135
|
role: str = typer.Option(
|
|
134
136
|
None,
|
|
135
137
|
click_type=RoleSuggestion(),
|
|
136
|
-
help="The role to assign --api-key and --member",
|
|
138
|
+
help="The role (name or id) to assign --api-key and --member",
|
|
137
139
|
),
|
|
138
140
|
api_key: list[str] = typer.Option(
|
|
139
141
|
[],
|
|
@@ -198,6 +200,8 @@ async def update(
|
|
|
198
200
|
api_keys=api_keys,
|
|
199
201
|
)
|
|
200
202
|
|
|
203
|
+
_raise_on_errors(namespaces)
|
|
204
|
+
|
|
201
205
|
if output_format == OutputFormat.JSON:
|
|
202
206
|
return output_json(namespaces, identifier)
|
|
203
207
|
|
|
@@ -234,11 +238,16 @@ async def remove(
|
|
|
234
238
|
|
|
235
239
|
|
|
236
240
|
def _find_role_id(role_configs: list[dict[str, Any]], role_name: str) -> str:
|
|
241
|
+
# Accept either the role id or a case-insensitive role name — the server
|
|
242
|
+
# returns `role` as a scalar on existing members/apiKeys and the format is
|
|
243
|
+
# not guaranteed, so we tolerate both.
|
|
237
244
|
for rc in role_configs:
|
|
238
|
-
if rc["name"].
|
|
245
|
+
if rc["id"] == role_name or rc["name"].casefold() == role_name.casefold():
|
|
239
246
|
return rc["id"]
|
|
240
247
|
|
|
241
|
-
|
|
248
|
+
available = ", ".join(sorted(rc["name"] for rc in role_configs))
|
|
249
|
+
|
|
250
|
+
raise ValidioError(f"role '{role_name}' not found. Available roles: {available}")
|
|
242
251
|
|
|
243
252
|
|
|
244
253
|
def _find_admin_role_id(role_configs: list[dict[str, Any]]) -> str:
|
|
@@ -247,3 +256,18 @@ def _find_admin_role_id(role_configs: list[dict[str, Any]]) -> str:
|
|
|
247
256
|
return rc["id"]
|
|
248
257
|
|
|
249
258
|
raise ValidioError("could not find system Admin role for namespace")
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
def _raise_on_errors(response: Any) -> None:
|
|
262
|
+
if not isinstance(response, dict):
|
|
263
|
+
return
|
|
264
|
+
|
|
265
|
+
errors = response.get("errors") or []
|
|
266
|
+
if not errors:
|
|
267
|
+
return
|
|
268
|
+
|
|
269
|
+
messages = "; ".join(
|
|
270
|
+
f"{e.get('code', 'UNKNOWN')}: {e.get('message', '')}" for e in errors
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
raise ValidioError(f"server returned errors: {messages}")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|