vgs-cli 1.30.2.dev3__tar.gz → 1.30.2.dev4__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.
Files changed (51) hide show
  1. {vgs-cli-1.30.2.dev3/vgs_cli.egg-info → vgs-cli-1.30.2.dev4}/PKG-INFO +1 -1
  2. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/requirements.txt +1 -1
  3. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4/vgs_cli.egg-info}/PKG-INFO +1 -1
  4. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgs_cli.egg-info/requires.txt +1 -1
  5. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/_version.py +1 -1
  6. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/cli/commands/apply.py +20 -11
  7. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/cli_utils.py +11 -6
  8. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/LICENSE +0 -0
  9. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/MANIFEST.in +0 -0
  10. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/README.md +0 -0
  11. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/setup.cfg +0 -0
  12. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/setup.py +0 -0
  13. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/test-requirements.txt +0 -0
  14. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgs_cli.egg-info/SOURCES.txt +0 -0
  15. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgs_cli.egg-info/dependency_links.txt +0 -0
  16. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgs_cli.egg-info/entry_points.txt +0 -0
  17. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgs_cli.egg-info/not-zip-safe +0 -0
  18. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgs_cli.egg-info/top_level.txt +0 -0
  19. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/__init__.py +0 -0
  20. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/access_logs.py +0 -0
  21. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/audits_api.py +0 -0
  22. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/auth.py +0 -0
  23. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/auth_server.py +0 -0
  24. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/auth_utils.py +0 -0
  25. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/callback_server.py +0 -0
  26. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/cli/__init__.py +0 -0
  27. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/cli/commands/__init__.py +0 -0
  28. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/cli/commands/generate.py +0 -0
  29. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/cli/commands/get.py +0 -0
  30. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/cli/types/__init__.py +0 -0
  31. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/cli/types/resource_id.py +0 -0
  32. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/cli/types/variable.py +0 -0
  33. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/click_extensions.py +0 -0
  34. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/config_file.py +0 -0
  35. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/errors.py +0 -0
  36. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/file_token_util.py +0 -0
  37. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/id_generator.py +0 -0
  38. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/keyring_token_util.py +0 -0
  39. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/resource-templates/service-account/calm.yaml +0 -0
  40. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/resource-templates/service-account/checkout.yaml +0 -0
  41. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/resource-templates/service-account/payments-admin.yaml +0 -0
  42. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/resource-templates/service-account/sub-account-checkout.yaml +0 -0
  43. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/resource-templates/service-account/vgs-cli.yaml +0 -0
  44. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/resource-templates/vault-template.yaml +0 -0
  45. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/testing.py +0 -0
  46. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/text.py +0 -0
  47. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/token_handler.py +0 -0
  48. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/validation-schemas/service-account-schema.yaml +0 -0
  49. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/validation-schemas/vault-resources.yaml +0 -0
  50. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/validation-schemas/vault-schema.yaml +0 -0
  51. {vgs-cli-1.30.2.dev3 → vgs-cli-1.30.2.dev4}/vgscli/vgs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vgs-cli
3
- Version: 1.30.2.dev3
3
+ Version: 1.30.2.dev4
4
4
  Summary: VGS Client
5
5
  Home-page: https://github.com/verygoodsecurity/vgs-cli
6
6
  Author: Very Good Security
@@ -12,6 +12,6 @@ pyhumps
12
12
  semver>=3,<4
13
13
  termcolor>=2,<3
14
14
  Jinja2>=2.10
15
- vgs-api-client>=0.0.46,<1
15
+ vgs-api-client>=0.0.48,<1
16
16
  async-timeout
17
17
  # cython>=3.0.5,<4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vgs-cli
3
- Version: 1.30.2.dev3
3
+ Version: 1.30.2.dev4
4
4
  Summary: VGS Client
5
5
  Home-page: https://github.com/verygoodsecurity/vgs-cli
6
6
  Author: Very Good Security
@@ -10,5 +10,5 @@ pyhumps
10
10
  semver<4,>=3
11
11
  termcolor<3,>=2
12
12
  Jinja2>=2.10
13
- vgs-api-client<1,>=0.0.46
13
+ vgs-api-client<1,>=0.0.48
14
14
  async-timeout
@@ -6,7 +6,7 @@ from semver import VersionInfo
6
6
 
7
7
  from vgscli.text import bold, green
8
8
 
9
- __version__ = "1.30.2.dev3"
9
+ __version__ = "1.30.2.dev4"
10
10
 
11
11
 
12
12
  # noinspection PyBroadException
@@ -5,6 +5,7 @@ from typing import Optional
5
5
  import click
6
6
  from click_plugins import with_plugins
7
7
  from pkg_resources import iter_entry_points
8
+ from simple_rest_client import exceptions
8
9
  from simple_rest_client.exceptions import ClientError
9
10
  from vgscli.auth import handshake, token_util
10
11
  from vgscli.cli import create_account_mgmt_api, create_vault_mgmt_api
@@ -12,11 +13,13 @@ from vgscli.cli.types import ResourceId, ResourceIdParamType
12
13
  from vgscli.cli_utils import dump_camelized_yaml, validate_multi_yaml, validate_yaml
13
14
  from vgscli.errors import ServiceClientCreationError, VgsCliError, handle_errors
14
15
 
15
- from vgs.sdk.routes import sync_all_routes
16
+ from vgs.sdk.errors import RouteNotValidError
17
+ from vgs.sdk.routes import dump_yaml, normalize
16
18
  from vgs.sdk.vaults_api import create_api as create_vaults_api
17
19
 
18
20
  logger = logging.getLogger()
19
21
 
22
+
20
23
  @with_plugins(iter_entry_points("vgs.apply.plugins"))
21
24
  @click.group("apply")
22
25
  def apply() -> None:
@@ -181,15 +184,18 @@ def apply_vault(ctx: click.Context, org_id: Optional[ResourceId], file) -> None:
181
184
  def sync_http_route(payload, ctx, vault_id):
182
185
  handshake(ctx, ctx.obj.env)
183
186
 
184
- route_data = payload["spec"]
185
187
  vault_management_api = create_vaults_api(
186
188
  ctx, vault_id, ctx.obj.env, token_util.get_access_token()
187
189
  )
188
- sync_all_routes(
189
- vault_management_api,
190
- route_data,
191
- lambda route_id: click.echo(f"Route {route_id} processed"),
192
- )
190
+ route_id = payload["spec"]["id"]
191
+ try:
192
+ result = vault_management_api.routes.update(route_id, body=payload["spec"])
193
+ result = normalize(result)
194
+ click.echo(f"Route {route_id} processed")
195
+ except exceptions.ClientError as e:
196
+ error_msg = "\n".join([error["detail"] for error in e.response.body["errors"]])
197
+ raise RouteNotValidError(error_msg)
198
+ return result
193
199
 
194
200
 
195
201
  def sync_mft_route(payload, ctx, vault_id):
@@ -221,8 +227,6 @@ def all_vault_resources(
221
227
  """
222
228
  Apply all vault resources (routes, preferences, certificates) to a single vault.
223
229
  """
224
- # print(f"{vault} {file} uscker")
225
- # print(file)
226
230
  parsed_resources = validate_multi_yaml(
227
231
  file, "validation-schemas/vault-resources.yaml"
228
232
  )
@@ -233,5 +237,10 @@ def all_vault_resources(
233
237
  )
234
238
  else:
235
239
  # for each resource find handler.
236
- logger.info(f"Processing {resource['apiVersion']} {resource['kind']} {resource['metadata']['name']} to server")
237
- HANDLERS[(resource["apiVersion"], resource["kind"])](resource, ctx, vault)
240
+ logger.info(
241
+ f"Processing {resource['apiVersion']} {resource['kind']} {resource['metadata']['name']} to server"
242
+ )
243
+ response_payload = HANDLERS[(resource["apiVersion"], resource["kind"])](
244
+ resource, ctx, vault
245
+ )
246
+ print(dump_yaml(response_payload))
@@ -51,24 +51,29 @@ def validate_multi_yaml(file_to_validate, path_to_schema):
51
51
  if not file:
52
52
  logger.debug("Skipping blank file")
53
53
  continue
54
- valid = any(try_validate(file, schema) for schema in schemas)
55
- if not valid:
54
+ failures = [
55
+ x for x in [fails_validation(file, schema) for schema in schemas] if x
56
+ ]
57
+ if len(failures) == len(schemas):
58
+ for failure in failures:
59
+ logger.exception(failure)
56
60
  raise SchemaValidationError(
57
61
  f"Failed to validate {file['apiVersion']} {file['kind']} {file['metadata']['name']} against any known schema."
58
62
  )
59
- logger.debug(f"Validated {valid}")
63
+ logger.debug(
64
+ f"Validated {file['apiVersion']} {file['kind']} {file['metadata']['name']}"
65
+ )
60
66
  yield file
61
67
 
62
68
 
63
- def try_validate(file, schema):
69
+ def fails_validation(file, schema):
64
70
  logger.info(
65
71
  f"Validating version={file['apiVersion']} kind={file['kind']} name={file['metadata']['name']}\nagainst\n\t{schema}"
66
72
  )
67
73
  try:
68
74
  jsonschema.validate(file, schema)
69
- return file["apiVersion"], file["kind"], file["metadata"]["name"]
70
75
  except jsonschema.exceptions.ValidationError as ex:
71
- logger.exception(ex)
76
+ return ex
72
77
  return None
73
78
 
74
79
 
File without changes
File without changes
File without changes
File without changes
File without changes