vgs-cli 1.36.0.dev1__py3-none-any.whl → 1.36.0.dev2__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.
Files changed (30) hide show
  1. {vgs_cli-1.36.0.dev1.dist-info → vgs_cli-1.36.0.dev2.dist-info}/METADATA +1 -1
  2. {vgs_cli-1.36.0.dev1.dist-info → vgs_cli-1.36.0.dev2.dist-info}/RECORD +30 -30
  3. vgscli/_version.py +1 -1
  4. vgscli/console/backend.py +12 -2
  5. vgscli/errors.py +5 -1
  6. vgscli/vgs.py +2 -0
  7. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/collect-form-api-schema.yaml +0 -0
  8. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/collect-form-schema.yaml +0 -0
  9. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/console-route-schema.yaml +0 -0
  10. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/credentials-admin.yaml +0 -0
  11. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/form-template.yaml +0 -0
  12. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/http-route-template.yaml +0 -0
  13. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/notification-integration-schema.yaml +0 -0
  14. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/notification-template.yaml +0 -0
  15. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/public-credential-collect.yaml +0 -0
  16. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/read-credentials-no-pci.yaml +0 -0
  17. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/read-credentials-with-pci.yaml +0 -0
  18. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/service-account-schema.yaml +0 -0
  19. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/sftp-route-template.yaml +0 -0
  20. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/tenant-schema.yaml +0 -0
  21. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/tenant-template.yaml +0 -0
  22. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/theme.tcss +0 -0
  23. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/vault-resources.yaml +0 -0
  24. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/vault-schema.yaml +0 -0
  25. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/vault-template.yaml +0 -0
  26. {vgs_cli-1.36.0.dev1.data → vgs_cli-1.36.0.dev2.data}/data/vgscli/vgs-cli.yaml +0 -0
  27. {vgs_cli-1.36.0.dev1.dist-info → vgs_cli-1.36.0.dev2.dist-info}/WHEEL +0 -0
  28. {vgs_cli-1.36.0.dev1.dist-info → vgs_cli-1.36.0.dev2.dist-info}/entry_points.txt +0 -0
  29. {vgs_cli-1.36.0.dev1.dist-info → vgs_cli-1.36.0.dev2.dist-info}/licenses/LICENSE +0 -0
  30. {vgs_cli-1.36.0.dev1.dist-info → vgs_cli-1.36.0.dev2.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vgs-cli
3
- Version: 1.36.0.dev1
3
+ Version: 1.36.0.dev2
4
4
  Summary: VGS Client
5
5
  Home-page: https://github.com/verygoodsecurity/vgs-cli
6
6
  Author: Very Good Security
@@ -1,26 +1,26 @@
1
- vgs_cli-1.36.0.dev1.data/data/vgscli/collect-form-api-schema.yaml,sha256=THuJbLUo7LOr0c1JUo3FPJEc9Jvde59K4JjdlkVF3hw,1246
2
- vgs_cli-1.36.0.dev1.data/data/vgscli/collect-form-schema.yaml,sha256=vHAN6_Gsg14CeSL41sHEQgboYF-CHF2RaNw72aJ3W8o,1337
3
- vgs_cli-1.36.0.dev1.data/data/vgscli/console-route-schema.yaml,sha256=hKME9kKILXFWkf-zwbAAWwMoXZWnzFHG37_51SqPKKw,1305
4
- vgs_cli-1.36.0.dev1.data/data/vgscli/credentials-admin.yaml,sha256=acyLd54Cp7l2fpugfjVfYh07-MIE0BX-JVq4lHraE1s,869
5
- vgs_cli-1.36.0.dev1.data/data/vgscli/form-template.yaml,sha256=pY4gOd8jXJRohcpJYijBt4m5cPyHvEVlCBtHgs2AL8M,927
6
- vgs_cli-1.36.0.dev1.data/data/vgscli/http-route-template.yaml,sha256=vGHvBXA_6pwFtH1vVRWKiwxb4sahzuLvpqGAlavrStc,1085
7
- vgs_cli-1.36.0.dev1.data/data/vgscli/notification-integration-schema.yaml,sha256=1qHzS5ZxlhTdrDab6-qJhszwu7cpith2HleX3uAO_4E,1837
8
- vgs_cli-1.36.0.dev1.data/data/vgscli/notification-template.yaml,sha256=hr36msbrgiTjWligLHVDHMmO49QDzjTwBSLYoBw3WQE,1288
9
- vgs_cli-1.36.0.dev1.data/data/vgscli/public-credential-collect.yaml,sha256=CiorC-6TMx7M0TI8DHmoRSfVKDpOom2wIr_ilwmHQNA,696
10
- vgs_cli-1.36.0.dev1.data/data/vgscli/read-credentials-no-pci.yaml,sha256=_kWRne_ARh8v7A_jHG08gwgPG6NqZhrDRyq6L-ULs2M,769
11
- vgs_cli-1.36.0.dev1.data/data/vgscli/read-credentials-with-pci.yaml,sha256=jWXgFdcqZYisakAt9COM6cjf2-x_Q4eidDLaUh8CZOk,796
12
- vgs_cli-1.36.0.dev1.data/data/vgscli/service-account-schema.yaml,sha256=L1pjNXgnks15N1wNgf_1GmGcOvxn0nu49v7ersUjFno,1090
13
- vgs_cli-1.36.0.dev1.data/data/vgscli/sftp-route-template.yaml,sha256=zkT6lIVDgVyzLKgZ8QnyJJooy2egZk1cQthdjan_JrM,853
14
- vgs_cli-1.36.0.dev1.data/data/vgscli/tenant-schema.yaml,sha256=gBO7xVe2qXSymG0B_45hC11X5nm_jCCAH4Yjs-sbC8g,1457
15
- vgs_cli-1.36.0.dev1.data/data/vgscli/tenant-template.yaml,sha256=F0wIBkC2dFJUNeJet-FzPX3qrLMHcGIaJvhsDzzAOCc,765
16
- vgs_cli-1.36.0.dev1.data/data/vgscli/theme.tcss,sha256=01k7tUJrLaAxfdkFGvlh20JrUCaFE3IZOJU1Wxmr4io,7523
17
- vgs_cli-1.36.0.dev1.data/data/vgscli/vault-resources.yaml,sha256=95CCxQher3MBQq96bvjZviNgo1rgv_NhCtI8X-oxIpA,26335
18
- vgs_cli-1.36.0.dev1.data/data/vgscli/vault-schema.yaml,sha256=a-wW7X8RyHr-669wtOZrlxlIfeQVtx8EUfA-3vpYytk,637
19
- vgs_cli-1.36.0.dev1.data/data/vgscli/vault-template.yaml,sha256=IlDisL3H5LXUDMkhUaouKMarRdu0-pJxpTz8ij_lp_M,383
20
- vgs_cli-1.36.0.dev1.data/data/vgscli/vgs-cli.yaml,sha256=5gCjjloyepaKI6zZfDLeUEWxuRExI-dGJI9RO3omP2k,484
21
- vgs_cli-1.36.0.dev1.dist-info/licenses/LICENSE,sha256=NwSyzgDYdzv6O2ns2C6UODGI8LN1VnVe_FPTnWS4eXY,1082
1
+ vgs_cli-1.36.0.dev2.data/data/vgscli/collect-form-api-schema.yaml,sha256=THuJbLUo7LOr0c1JUo3FPJEc9Jvde59K4JjdlkVF3hw,1246
2
+ vgs_cli-1.36.0.dev2.data/data/vgscli/collect-form-schema.yaml,sha256=vHAN6_Gsg14CeSL41sHEQgboYF-CHF2RaNw72aJ3W8o,1337
3
+ vgs_cli-1.36.0.dev2.data/data/vgscli/console-route-schema.yaml,sha256=hKME9kKILXFWkf-zwbAAWwMoXZWnzFHG37_51SqPKKw,1305
4
+ vgs_cli-1.36.0.dev2.data/data/vgscli/credentials-admin.yaml,sha256=acyLd54Cp7l2fpugfjVfYh07-MIE0BX-JVq4lHraE1s,869
5
+ vgs_cli-1.36.0.dev2.data/data/vgscli/form-template.yaml,sha256=pY4gOd8jXJRohcpJYijBt4m5cPyHvEVlCBtHgs2AL8M,927
6
+ vgs_cli-1.36.0.dev2.data/data/vgscli/http-route-template.yaml,sha256=vGHvBXA_6pwFtH1vVRWKiwxb4sahzuLvpqGAlavrStc,1085
7
+ vgs_cli-1.36.0.dev2.data/data/vgscli/notification-integration-schema.yaml,sha256=1qHzS5ZxlhTdrDab6-qJhszwu7cpith2HleX3uAO_4E,1837
8
+ vgs_cli-1.36.0.dev2.data/data/vgscli/notification-template.yaml,sha256=hr36msbrgiTjWligLHVDHMmO49QDzjTwBSLYoBw3WQE,1288
9
+ vgs_cli-1.36.0.dev2.data/data/vgscli/public-credential-collect.yaml,sha256=CiorC-6TMx7M0TI8DHmoRSfVKDpOom2wIr_ilwmHQNA,696
10
+ vgs_cli-1.36.0.dev2.data/data/vgscli/read-credentials-no-pci.yaml,sha256=_kWRne_ARh8v7A_jHG08gwgPG6NqZhrDRyq6L-ULs2M,769
11
+ vgs_cli-1.36.0.dev2.data/data/vgscli/read-credentials-with-pci.yaml,sha256=jWXgFdcqZYisakAt9COM6cjf2-x_Q4eidDLaUh8CZOk,796
12
+ vgs_cli-1.36.0.dev2.data/data/vgscli/service-account-schema.yaml,sha256=L1pjNXgnks15N1wNgf_1GmGcOvxn0nu49v7ersUjFno,1090
13
+ vgs_cli-1.36.0.dev2.data/data/vgscli/sftp-route-template.yaml,sha256=zkT6lIVDgVyzLKgZ8QnyJJooy2egZk1cQthdjan_JrM,853
14
+ vgs_cli-1.36.0.dev2.data/data/vgscli/tenant-schema.yaml,sha256=gBO7xVe2qXSymG0B_45hC11X5nm_jCCAH4Yjs-sbC8g,1457
15
+ vgs_cli-1.36.0.dev2.data/data/vgscli/tenant-template.yaml,sha256=F0wIBkC2dFJUNeJet-FzPX3qrLMHcGIaJvhsDzzAOCc,765
16
+ vgs_cli-1.36.0.dev2.data/data/vgscli/theme.tcss,sha256=01k7tUJrLaAxfdkFGvlh20JrUCaFE3IZOJU1Wxmr4io,7523
17
+ vgs_cli-1.36.0.dev2.data/data/vgscli/vault-resources.yaml,sha256=95CCxQher3MBQq96bvjZviNgo1rgv_NhCtI8X-oxIpA,26335
18
+ vgs_cli-1.36.0.dev2.data/data/vgscli/vault-schema.yaml,sha256=a-wW7X8RyHr-669wtOZrlxlIfeQVtx8EUfA-3vpYytk,637
19
+ vgs_cli-1.36.0.dev2.data/data/vgscli/vault-template.yaml,sha256=IlDisL3H5LXUDMkhUaouKMarRdu0-pJxpTz8ij_lp_M,383
20
+ vgs_cli-1.36.0.dev2.data/data/vgscli/vgs-cli.yaml,sha256=5gCjjloyepaKI6zZfDLeUEWxuRExI-dGJI9RO3omP2k,484
21
+ vgs_cli-1.36.0.dev2.dist-info/licenses/LICENSE,sha256=NwSyzgDYdzv6O2ns2C6UODGI8LN1VnVe_FPTnWS4eXY,1082
22
22
  vgscli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- vgscli/_version.py,sha256=118bShYZRJrdvJYjFIJrDHFbdZrCR4YN8XGRrFHr-R0,1681
23
+ vgscli/_version.py,sha256=lf6GJiUCDciREhi6VBPysryXHiAF5NYv7g3PUPnROKE,1681
24
24
  vgscli/access_logs.py,sha256=G0GjlLjWiC-N6OzK6-RCvWddcVGQlLCLAcyO9pLWIOM,1928
25
25
  vgscli/audits_api.py,sha256=AaF5Go019TOerBlQzygwMeOxeW9vPPJPgxa95kttF-M,3215
26
26
  vgscli/auth.py,sha256=vdUZ12nqtefIuSHNmwCFvxoqwS3m6ZP5TqLZFNwKnSU,2104
@@ -37,7 +37,7 @@ vgscli/collect_forms_api.py,sha256=rORLu-jd5IMsiAoR7VkgIkpskWd9GfjZs6zeHKEoOPs,1
37
37
  vgscli/config_file.py,sha256=HB8lANU0qoO09Wnkf-QDzPh2qtrnFcqcetnCaQgtQ3U,1543
38
38
  vgscli/console_config.py,sha256=7gSMXarjlyczxBwkiS0jpFrfbU8pbJSD7VaHnjgy1Mw,1522
39
39
  vgscli/diagnostics.py,sha256=iWKFr_jNQSZt4H1CnoecNo7-wNjSNpzXV2nRyhDm9es,1385
40
- vgscli/errors.py,sha256=ckEDgedNCp9ITAw9_RAZIfx5cZ0mtbdsqEAqvAMw6y8,12614
40
+ vgscli/errors.py,sha256=1ppwh_AAvvEDIH_J7IZKecjsO_RDsOaaqdu7juEv6ps,12711
41
41
  vgscli/file_token_util.py,sha256=537b54paMGw0u5PL5VJgQqQ7awKa9lQP88n3tUc_lyw,771
42
42
  vgscli/id_generator.py,sha256=3CbvSOUSyLON76p6M8wUhVQVig8j75_rnWdpxLhBifM,1510
43
43
  vgscli/keyring_token_util.py,sha256=cnR72-0AInzujUsIwHoXwPbgprbkllgAXN-AAI3qsPM,4632
@@ -53,7 +53,7 @@ vgscli/tenant_provisioning_api.py,sha256=-mQcSECgWG23LKczu1B9J1d7Bb6ZA6lkpr9RegJ
53
53
  vgscli/testing.py,sha256=MLrsvy3mEwvjtqyuG0UjwEX-rDkbWUo52aXvu2H2sTk,1437
54
54
  vgscli/text.py,sha256=c2d1As7awq8PlEF9NiI6JrjsYYousj9YT0o1xOQ2MQM,172
55
55
  vgscli/token_handler.py,sha256=qTshP4i8Rdhpgk9YUu0i5YAqYiRK3PsZCZAtPVc9BUU,239
56
- vgscli/vgs.py,sha256=kSxMYn0SRh7MJ6E0YxaTHGqWW95Adqnq0w16zzCQ7gk,7338
56
+ vgscli/vgs.py,sha256=pciuwbJGV0i-4HhpirTfyqa8JTdM12Zrcm8ulHD-kN0,7395
57
57
  vgscli/cli/__init__.py,sha256=da9LPKYdnal26ntEP22PNn-dZYBbsNkP7tzOwzD6kY4,3915
58
58
  vgscli/cli/commands/__init__.py,sha256=8ptc9-Vzdx0HU3ZeMcKERYjmJyuB5IMjBSF3Igx5yQ4,206
59
59
  vgscli/cli/commands/apply.py,sha256=_BKC1cRLbDGF1T05UEnqTGLKllfGYY6Piw6qr0YJYTU,26193
@@ -67,7 +67,7 @@ vgscli/cli/types/variable.py,sha256=IVcszPoWmTjeo_evDsLN06LuUZGTLL-wcZCVfBNBP8I,
67
67
  vgscli/console/__init__.py,sha256=X48mjIkHuvVqtCrsN4vJ7CubJrL4xAE678jm1AFSm1o,44
68
68
  vgscli/console/app.py,sha256=z01FLQd6JWsoIF5ePynBKsq00RonslDO3PktMLF2WBw,90717
69
69
  vgscli/console/auth.py,sha256=xp2JmXgQGpa3sCrF49qA3tWvOrd-RvWVjkrOzCvABRk,1246
70
- vgscli/console/backend.py,sha256=ma-pr9JmbWm9mPnrnQh1RWkg98euPi7GAi7WenUqykA,10549
70
+ vgscli/console/backend.py,sha256=P_Oj72N6UDrI-YXZg9FSQp721tY11W4kObE4VzrgQW4,10904
71
71
  vgscli/console/bootstrap.py,sha256=TY5cz8zzEuSIEiocxitNBIGHQV_Ugdp2Z_6joSgtDP4,733
72
72
  vgscli/console/commands.py,sha256=0lunvZfyj--BUhGG78u1gNE63eQzxCZXckdVEI5MCk0,3864
73
73
  vgscli/console/context.py,sha256=TgDgsqt52pbSeLsTZ-VX6PHuQFJTSUSrl4y2I36tquk,1719
@@ -111,8 +111,8 @@ vgscli/validation-schemas/service-account-schema.yaml,sha256=L1pjNXgnks15N1wNgf_
111
111
  vgscli/validation-schemas/tenant-schema.yaml,sha256=gBO7xVe2qXSymG0B_45hC11X5nm_jCCAH4Yjs-sbC8g,1457
112
112
  vgscli/validation-schemas/vault-resources.yaml,sha256=95CCxQher3MBQq96bvjZviNgo1rgv_NhCtI8X-oxIpA,26335
113
113
  vgscli/validation-schemas/vault-schema.yaml,sha256=a-wW7X8RyHr-669wtOZrlxlIfeQVtx8EUfA-3vpYytk,637
114
- vgs_cli-1.36.0.dev1.dist-info/METADATA,sha256=S5tlW5YA7vMjWAybbJJ9akXBkpCTHzrbdvYF_ilnhy0,10681
115
- vgs_cli-1.36.0.dev1.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
116
- vgs_cli-1.36.0.dev1.dist-info/entry_points.txt,sha256=wCWhRQiMX4Ja6kkqJlYr8LbuiywpmXyyRAZPsau-_RY,39
117
- vgs_cli-1.36.0.dev1.dist-info/top_level.txt,sha256=gabTxCWMkl80q6ha_m-hs_1wQMfGntZcv5DEmkl8JEw,7
118
- vgs_cli-1.36.0.dev1.dist-info/RECORD,,
114
+ vgs_cli-1.36.0.dev2.dist-info/METADATA,sha256=vbDoPGhQ9Ef0L8QTvAClT3q6nGB_J5ly5YhpJVf1e4g,10681
115
+ vgs_cli-1.36.0.dev2.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
116
+ vgs_cli-1.36.0.dev2.dist-info/entry_points.txt,sha256=wCWhRQiMX4Ja6kkqJlYr8LbuiywpmXyyRAZPsau-_RY,39
117
+ vgs_cli-1.36.0.dev2.dist-info/top_level.txt,sha256=gabTxCWMkl80q6ha_m-hs_1wQMfGntZcv5DEmkl8JEw,7
118
+ vgs_cli-1.36.0.dev2.dist-info/RECORD,,
vgscli/_version.py CHANGED
@@ -6,7 +6,7 @@ from packaging.version import InvalidVersion, Version
6
6
 
7
7
  from vgscli.text import bold, green
8
8
 
9
- __version__ = "1.36.0.dev1"
9
+ __version__ = "1.36.0.dev2"
10
10
 
11
11
 
12
12
  # noinspection PyBroadException
vgscli/console/backend.py CHANGED
@@ -44,6 +44,16 @@ from vgscli.tenant_creation import (
44
44
  )
45
45
  from vgscli.tenant_provisioning_api import create_api as create_provisioning_api
46
46
 
47
+ ACCOUNT_API_TIMEOUT_SECONDS = 50
48
+
49
+
50
+ def _create_account_api(token: str, environment: str) -> AccountMgmtAPI:
51
+ api = AccountMgmtAPI(token, environment)
52
+ api.timeout = ACCOUNT_API_TIMEOUT_SECONDS
53
+ for resource in (api.organizations, api.service_accounts, api.vaults):
54
+ resource.timeout = ACCOUNT_API_TIMEOUT_SECONDS
55
+ return api
56
+
47
57
 
48
58
  @dataclass
49
59
  class ConsoleBackend:
@@ -53,7 +63,7 @@ class ConsoleBackend:
53
63
  session_authenticator: Callable[[str], str] | None = field(default=None, repr=False)
54
64
 
55
65
  def __post_init__(self):
56
- self.account_api = AccountMgmtAPI(self.token, self.environment)
66
+ self.account_api = _create_account_api(self.token, self.environment)
57
67
  self._tenant: Tenant | None = None
58
68
  self._routes_api = None
59
69
  self._forms_api = None
@@ -233,7 +243,7 @@ class ConsoleBackend:
233
243
  token = self.session_authenticator(self.token)
234
244
  if token != self.token:
235
245
  self.token = token
236
- self.account_api = AccountMgmtAPI(token, self.environment)
246
+ self.account_api = _create_account_api(token, self.environment)
237
247
  self._routes_api = self._forms_api = self._audits_api = None
238
248
  return self.token
239
249
 
vgscli/errors.py CHANGED
@@ -301,7 +301,11 @@ def handle_errors(**outer_kwargs):
301
301
  return f(*args, **kwargs)
302
302
  except (Abort, Exit):
303
303
  raise
304
- except (exceptions.ClientError, exceptions.ServerError) as e:
304
+ except (
305
+ exceptions.ClientError,
306
+ exceptions.ServerError,
307
+ exceptions.ClientConnectionError,
308
+ ) as e:
305
309
  ctx = args[0] if args and isinstance(args[0], Context) else None
306
310
  if ctx:
307
311
  status = getattr(getattr(e, "response", None), "status_code", None)
vgscli/vgs.py CHANGED
@@ -16,6 +16,7 @@ from vgscli.cli.commands import apply, certificate, delete, generate, get
16
16
  from vgscli.cli_utils import iter_entry_points
17
17
  from vgscli.click_extensions import Config, DateTimeDuration, tenant_option
18
18
  from vgscli.config_file import configuration_option
19
+ from vgscli.errors import handle_errors
19
20
  from vgscli.telemetry import TelemetryGroup, record_runtime
20
21
 
21
22
 
@@ -57,6 +58,7 @@ cli.add_command(certificate)
57
58
  )
58
59
  @click.pass_context
59
60
  @configuration_option(section="console")
61
+ @handle_errors()
60
62
  def console(ctx, diagnostics):
61
63
  """Open the interactive SANDBOX VGS Console."""
62
64
  if os.environ.get("VGS_CLIENT_ID") or os.environ.get("VGS_CLIENT_SECRET"):