Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 29 additions & 16 deletions cloudify_cli/cli/cfy.py
Original file line number Diff line number Diff line change
Expand Up @@ -1871,22 +1871,6 @@ def __init__(self):
help=helptexts.SECRET_PROVIDER_NAME,
)

self.secret_provider_type = click.option(
'--type',
'secret_provider_type',
required=True,
callback=validate_value_not_empty,
help=helptexts.SECRET_PROVIDER_TYPE,
)

self.connection_parameters = click.option(
'--connection_parameters',
default={},
multiple=True,
callback=inputs_callback,
help=helptexts.SECRET_PROVIDER_CONNECTION_PARAMETERS,
)

def common_options(self, f):
"""A shorthand for applying commonly used arguments.

Expand Down Expand Up @@ -2450,6 +2434,35 @@ def blueprint_filter_rules(self, f):
def deployment_filter_rules(self, f):
return self._filter_rules(f, 'deployment')

@staticmethod
def secret_provider_type(required=True, _help=None):
args = [
'--type',
'secret_provider_type',
]
kwargs = {
'required': required,
'help': _help or helptexts.SECRET_PROVIDER_TYPE,
'callback': validate_value_not_empty,
}

return click.option(*args, **kwargs)

@staticmethod
def connection_parameters(required=True, _help=None, default=None):
args = [
'--connection-parameters',
]
kwargs = {
'required': required,
'help': _help or helptexts.SECRET_PROVIDER_CONNECTION_PARAMETERS,
'callback': inputs_callback,
'multiple': True,
'default': default,
}

return click.option(*args, **kwargs)


options = Options()

Expand Down
122 changes: 117 additions & 5 deletions cloudify_cli/commands/secrets.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ def secrets():
@secrets.group(name='providers')
@cfy.options.common_options
def providers():
"""Handle Cloudify Secrets Providers
"""
pass


Expand Down Expand Up @@ -359,9 +361,11 @@ def set_owner(key, username, tenant_name, logger, client):
name='create',
short_help='Create a new secrets provider',
)
@cfy.options.secret_provider_name
@cfy.options.secret_provider_type
@cfy.options.connection_parameters
@cfy.argument('secret_provider_name')
@cfy.options.secret_provider_type()
@cfy.options.connection_parameters(
required=False,
)
@cfy.options.tenant_name(
required=False,
resource_name_for_help='secret_provider',
Expand All @@ -375,7 +379,7 @@ def set_owner(key, username, tenant_name, logger, client):
use_tenant_in_header=True,
)
@cfy.pass_logger
def provider_create(
def providers_create(
secret_provider_name,
secret_provider_type,
connection_parameters,
Expand All @@ -397,6 +401,114 @@ def provider_create(
)


@providers.command(
name='update',
short_help='Update an existing Secrets Provider',
)
@cfy.argument('secret_provider_name')
@cfy.options.secret_provider_type(
required=False,
)
@cfy.options.connection_parameters(
required=False,
)
@cfy.options.tenant_name(
required=False,
resource_name_for_help='secret_provider',
)
@cfy.options.visibility(
mutually_exclusive_required=False,
)
@cfy.options.common_options
@cfy.assert_manager_active()
@cfy.pass_client(
use_tenant_in_header=True,
)
@cfy.pass_logger
def providers_update(
secret_provider_name,
secret_provider_type,
connection_parameters,
tenant_name,
visibility,
logger,
client,
):
client.secrets_providers.update(
secret_provider_name,
secret_provider_type,
connection_parameters,
visibility,
)

logger.info(
'Secrets provider `%s` updated',
secret_provider_name,
)


@providers.command(
name='delete',
short_help='Delete a secrets provider',
)
@cfy.argument('secret_provider_name')
@cfy.options.tenant_name(
required=False,
resource_name_for_help='secret',
)
@cfy.options.common_options
@cfy.assert_manager_active()
@cfy.pass_client()
@cfy.pass_logger
def providers_delete(secret_provider_name, tenant_name, logger, client):
"""Delete a secrets provider
"""
utils.explicit_tenant_name_message(tenant_name, logger)
graceful_msg = 'Requested secrets provider with name `{0}` was not found' \
.format(secret_provider_name)

with handle_client_error(404, graceful_msg, logger):
logger.info(
'Deleting secrets provider `%s`...',
secret_provider_name
)
client.secrets_providers.delete(secret_provider_name)
logger.info('Secrets provider removed')


@providers.command(
name='get',
short_help='Get details for a single secrets provider',
)
@cfy.argument('secret_provider_name')
@cfy.options.tenant_name(
required=False,
resource_name_for_help='secret',
)
@cfy.options.common_options
@cfy.assert_manager_active()
@cfy.pass_client(
use_tenant_in_header=True,
)
@cfy.pass_logger
def providers_get(secret_provider_name, tenant_name, logger, client):
"""Get details for a single secrets provider
"""
utils.explicit_tenant_name_message(tenant_name, logger)
graceful_msg = 'Requested secrets provider with name `{0}`' \
' was not found in this tenant'.format(
secret_provider_name
)
with handle_client_error(404, graceful_msg, logger):
logger.info(
'Getting info for secrets provider `%s`...',
secret_provider_name,
)
details = client.secrets_providers.get(secret_provider_name)

print_details(details, 'Requested secrets provider info:')


@providers.command(
name='list',
short_help="List all secret providers",
Expand All @@ -406,7 +518,7 @@ def provider_create(
@cfy.pass_logger
@cfy.options.extended_view
@cfy.options.common_options
def provider_list(
def providers_list(
logger,
client,
):
Expand Down
2 changes: 1 addition & 1 deletion packaging/debian/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Description: Cloudify's Command Line Interface
EOF

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

/opt/python3.10/bin/python3.10 -m venv /opt/cfy
Expand Down