Skip to content

Commit 47381ce

Browse files
author
Adrian Polanczyk
authored
RD-6061 Provide get, update and delete commands for Secrets Providers (#1448)
1 parent 960a7c3 commit 47381ce

3 files changed

Lines changed: 147 additions & 22 deletions

File tree

cloudify_cli/cli/cfy.py

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1871,22 +1871,6 @@ def __init__(self):
18711871
help=helptexts.SECRET_PROVIDER_NAME,
18721872
)
18731873

1874-
self.secret_provider_type = click.option(
1875-
'--type',
1876-
'secret_provider_type',
1877-
required=True,
1878-
callback=validate_value_not_empty,
1879-
help=helptexts.SECRET_PROVIDER_TYPE,
1880-
)
1881-
1882-
self.connection_parameters = click.option(
1883-
'--connection_parameters',
1884-
default={},
1885-
multiple=True,
1886-
callback=inputs_callback,
1887-
help=helptexts.SECRET_PROVIDER_CONNECTION_PARAMETERS,
1888-
)
1889-
18901874
def common_options(self, f):
18911875
"""A shorthand for applying commonly used arguments.
18921876
@@ -2450,6 +2434,35 @@ def blueprint_filter_rules(self, f):
24502434
def deployment_filter_rules(self, f):
24512435
return self._filter_rules(f, 'deployment')
24522436

2437+
@staticmethod
2438+
def secret_provider_type(required=True, _help=None):
2439+
args = [
2440+
'--type',
2441+
'secret_provider_type',
2442+
]
2443+
kwargs = {
2444+
'required': required,
2445+
'help': _help or helptexts.SECRET_PROVIDER_TYPE,
2446+
'callback': validate_value_not_empty,
2447+
}
2448+
2449+
return click.option(*args, **kwargs)
2450+
2451+
@staticmethod
2452+
def connection_parameters(required=True, _help=None, default=None):
2453+
args = [
2454+
'--connection-parameters',
2455+
]
2456+
kwargs = {
2457+
'required': required,
2458+
'help': _help or helptexts.SECRET_PROVIDER_CONNECTION_PARAMETERS,
2459+
'callback': inputs_callback,
2460+
'multiple': True,
2461+
'default': default,
2462+
}
2463+
2464+
return click.option(*args, **kwargs)
2465+
24532466

24542467
options = Options()
24552468

cloudify_cli/commands/secrets.py

Lines changed: 117 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ def secrets():
5858
@secrets.group(name='providers')
5959
@cfy.options.common_options
6060
def providers():
61+
"""Handle Cloudify Secrets Providers
62+
"""
6163
pass
6264

6365

@@ -359,9 +361,11 @@ def set_owner(key, username, tenant_name, logger, client):
359361
name='create',
360362
short_help='Create a new secrets provider',
361363
)
362-
@cfy.options.secret_provider_name
363-
@cfy.options.secret_provider_type
364-
@cfy.options.connection_parameters
364+
@cfy.argument('secret_provider_name')
365+
@cfy.options.secret_provider_type()
366+
@cfy.options.connection_parameters(
367+
required=False,
368+
)
365369
@cfy.options.tenant_name(
366370
required=False,
367371
resource_name_for_help='secret_provider',
@@ -375,7 +379,7 @@ def set_owner(key, username, tenant_name, logger, client):
375379
use_tenant_in_header=True,
376380
)
377381
@cfy.pass_logger
378-
def provider_create(
382+
def providers_create(
379383
secret_provider_name,
380384
secret_provider_type,
381385
connection_parameters,
@@ -397,6 +401,114 @@ def provider_create(
397401
)
398402

399403

404+
@providers.command(
405+
name='update',
406+
short_help='Update an existing Secrets Provider',
407+
)
408+
@cfy.argument('secret_provider_name')
409+
@cfy.options.secret_provider_type(
410+
required=False,
411+
)
412+
@cfy.options.connection_parameters(
413+
required=False,
414+
)
415+
@cfy.options.tenant_name(
416+
required=False,
417+
resource_name_for_help='secret_provider',
418+
)
419+
@cfy.options.visibility(
420+
mutually_exclusive_required=False,
421+
)
422+
@cfy.options.common_options
423+
@cfy.assert_manager_active()
424+
@cfy.pass_client(
425+
use_tenant_in_header=True,
426+
)
427+
@cfy.pass_logger
428+
def providers_update(
429+
secret_provider_name,
430+
secret_provider_type,
431+
connection_parameters,
432+
tenant_name,
433+
visibility,
434+
logger,
435+
client,
436+
):
437+
client.secrets_providers.update(
438+
secret_provider_name,
439+
secret_provider_type,
440+
connection_parameters,
441+
visibility,
442+
)
443+
444+
logger.info(
445+
'Secrets provider `%s` updated',
446+
secret_provider_name,
447+
)
448+
449+
450+
@providers.command(
451+
name='delete',
452+
short_help='Delete a secrets provider',
453+
)
454+
@cfy.argument('secret_provider_name')
455+
@cfy.options.tenant_name(
456+
required=False,
457+
resource_name_for_help='secret',
458+
)
459+
@cfy.options.common_options
460+
@cfy.assert_manager_active()
461+
@cfy.pass_client()
462+
@cfy.pass_logger
463+
def providers_delete(secret_provider_name, tenant_name, logger, client):
464+
"""Delete a secrets provider
465+
"""
466+
utils.explicit_tenant_name_message(tenant_name, logger)
467+
graceful_msg = 'Requested secrets provider with name `{0}` was not found' \
468+
.format(secret_provider_name)
469+
470+
with handle_client_error(404, graceful_msg, logger):
471+
logger.info(
472+
'Deleting secrets provider `%s`...',
473+
secret_provider_name
474+
)
475+
client.secrets_providers.delete(secret_provider_name)
476+
logger.info('Secrets provider removed')
477+
478+
479+
@providers.command(
480+
name='get',
481+
short_help='Get details for a single secrets provider',
482+
)
483+
@cfy.argument('secret_provider_name')
484+
@cfy.options.tenant_name(
485+
required=False,
486+
resource_name_for_help='secret',
487+
)
488+
@cfy.options.common_options
489+
@cfy.assert_manager_active()
490+
@cfy.pass_client(
491+
use_tenant_in_header=True,
492+
)
493+
@cfy.pass_logger
494+
def providers_get(secret_provider_name, tenant_name, logger, client):
495+
"""Get details for a single secrets provider
496+
"""
497+
utils.explicit_tenant_name_message(tenant_name, logger)
498+
graceful_msg = 'Requested secrets provider with name `{0}`' \
499+
' was not found in this tenant'.format(
500+
secret_provider_name
501+
)
502+
with handle_client_error(404, graceful_msg, logger):
503+
logger.info(
504+
'Getting info for secrets provider `%s`...',
505+
secret_provider_name,
506+
)
507+
details = client.secrets_providers.get(secret_provider_name)
508+
509+
print_details(details, 'Requested secrets provider info:')
510+
511+
400512
@providers.command(
401513
name='list',
402514
short_help="List all secret providers",
@@ -406,7 +518,7 @@ def provider_create(
406518
@cfy.pass_logger
407519
@cfy.options.extended_view
408520
@cfy.options.common_options
409-
def provider_list(
521+
def providers_list(
410522
logger,
411523
client,
412524
):

packaging/debian/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Description: Cloudify's Command Line Interface
3131
EOF
3232

3333
# Download and untar our python3.10 package
34-
curl https://cloudify-cicd.s3.amazonaws.com/python-build-packages/cfy-python3.10.tgz -o cfy-python3.10.tgz
34+
curl https://cloudify-cicd.s3.amazonaws.com/python-build-packages/cfy-python3.10-x86_64.tgz -o cfy-python3.10.tgz
3535
tar xf cfy-python3.10.tgz -C /
3636

3737
/opt/python3.10/bin/python3.10 -m venv /opt/cfy

0 commit comments

Comments
 (0)