Skip to content

Commit

Permalink
{KeyVault} Expose resource name directly (#12523)
Browse files Browse the repository at this point in the history
  • Loading branch information
bim-msft authored Mar 24, 2020
1 parent fcef99d commit 31a9724
Show file tree
Hide file tree
Showing 18 changed files with 3,168 additions and 3,211 deletions.
29 changes: 29 additions & 0 deletions src/azure-cli/azure/cli/command_modules/keyvault/_transformers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,35 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------

from collections.abc import Iterable


def multi_transformers(*transformers):
def _multi_transformers(output):
for t in transformers:
output = t(output)
return output
return _multi_transformers


def filter_out_managed_resources(output):
return [_ for _ in output if not getattr(_, 'managed')] if output else output


def _extract_subresource_name_from_single_output(output, id_parameter):
if not getattr(output, id_parameter):
resource_name = None
else:
items = getattr(output, id_parameter).split('/')
resource_name = items[4] if len(items) > 4 else None

setattr(output, 'name', resource_name)
return output


def extract_subresource_name(id_parameter='id'):
def _extract_subresource_name(output):
if isinstance(output, Iterable):
return [_extract_subresource_name_from_single_output(item, id_parameter) for item in output]
return _extract_subresource_name_from_single_output(output, id_parameter)
return _extract_subresource_name
63 changes: 36 additions & 27 deletions src/azure-cli/azure/cli/command_modules/keyvault/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
keyvault_client_vaults_factory, keyvault_client_private_endpoint_connections_factory,
keyvault_client_private_link_resources_factory, keyvault_data_plane_factory)

from ._transformers import filter_out_managed_resources
from ._transformers import (
extract_subresource_name, filter_out_managed_resources,
multi_transformers)

from ._validators import (
process_secret_set_namespace, process_certificate_cancel_namespace,
Expand Down Expand Up @@ -103,9 +105,11 @@ def load_command_table(self, _):

# Data Plane Commands
with self.command_group('keyvault key', kv_data_sdk) as g:
g.keyvault_command('list', 'get_keys', transform=filter_out_managed_resources)
g.keyvault_command('list-versions', 'get_key_versions')
g.keyvault_command('list-deleted', 'get_deleted_keys')
g.keyvault_command('list', 'get_keys',
transform=multi_transformers(
filter_out_managed_resources, extract_subresource_name(id_parameter='kid')))
g.keyvault_command('list-versions', 'get_key_versions', transform=extract_subresource_name(id_parameter='kid'))
g.keyvault_command('list-deleted', 'get_deleted_keys', transform=extract_subresource_name(id_parameter='kid'))
g.keyvault_custom('create', 'create_key', doc_string_source=data_doc_string.format('create_key'))
g.keyvault_command('set-attributes', 'update_key')
g.keyvault_command('show', 'get_key')
Expand All @@ -119,41 +123,46 @@ def load_command_table(self, _):
g.keyvault_custom('download', 'download_key')

with self.command_group('keyvault secret', kv_data_sdk) as g:
g.keyvault_command('list', 'get_secrets', transform=filter_out_managed_resources)
g.keyvault_command('list-versions', 'get_secret_versions')
g.keyvault_command('list-deleted', 'get_deleted_secrets')
g.keyvault_command('set', 'set_secret', validator=process_secret_set_namespace)
g.keyvault_command('set-attributes', 'update_secret')
g.keyvault_command('show', 'get_secret')
g.keyvault_command('show-deleted', 'get_deleted_secret')
g.keyvault_command('delete', 'delete_secret')
g.keyvault_command('list', 'get_secrets',
transform=multi_transformers(filter_out_managed_resources, extract_subresource_name()))
g.keyvault_command('list-versions', 'get_secret_versions', transform=extract_subresource_name())
g.keyvault_command('list-deleted', 'get_deleted_secrets', transform=extract_subresource_name())
g.keyvault_command('set', 'set_secret', validator=process_secret_set_namespace,
transform=extract_subresource_name())
g.keyvault_command('set-attributes', 'update_secret', transform=extract_subresource_name())
g.keyvault_command('show', 'get_secret', transform=extract_subresource_name())
g.keyvault_command('show-deleted', 'get_deleted_secret', transform=extract_subresource_name())
g.keyvault_command('delete', 'delete_secret', transform=extract_subresource_name())
g.keyvault_command('purge', 'purge_deleted_secret')
g.keyvault_command('recover', 'recover_deleted_secret')
g.keyvault_command('recover', 'recover_deleted_secret', transform=extract_subresource_name())
g.keyvault_custom('download', 'download_secret')
g.keyvault_custom('backup', 'backup_secret', doc_string_source=data_doc_string.format('backup_secret'))
g.keyvault_custom('restore', 'restore_secret', doc_string_source=data_doc_string.format('restore_secret'))
g.keyvault_custom('restore', 'restore_secret', doc_string_source=data_doc_string.format('restore_secret'),
transform=extract_subresource_name())

with self.command_group('keyvault certificate', kv_data_sdk) as g:
g.keyvault_custom('create',
'create_certificate',
doc_string_source=data_doc_string.format('create_certificate'))
g.keyvault_command('list', 'get_certificates')
g.keyvault_command('list-versions', 'get_certificate_versions')
g.keyvault_command('list-deleted', 'get_deleted_certificates')
g.keyvault_command('show', 'get_certificate')
g.keyvault_command('show-deleted', 'get_deleted_certificate')
g.keyvault_command('delete', 'delete_certificate')
doc_string_source=data_doc_string.format('create_certificate'),
transform=extract_subresource_name())
g.keyvault_command('list', 'get_certificates', transform=extract_subresource_name())
g.keyvault_command('list-versions', 'get_certificate_versions', transform=extract_subresource_name())
g.keyvault_command('list-deleted', 'get_deleted_certificates', transform=extract_subresource_name())
g.keyvault_command('show', 'get_certificate', transform=extract_subresource_name())
g.keyvault_command('show-deleted', 'get_deleted_certificate', transform=extract_subresource_name())
g.keyvault_command('delete', 'delete_certificate', transform=extract_subresource_name())
g.keyvault_command('purge', 'purge_deleted_certificate')
g.keyvault_command('recover', 'recover_deleted_certificate')
g.keyvault_command('set-attributes', 'update_certificate')
g.keyvault_custom('import', 'import_certificate')
g.keyvault_command('recover', 'recover_deleted_certificate', transform=extract_subresource_name())
g.keyvault_command('set-attributes', 'update_certificate', transform=extract_subresource_name())
g.keyvault_custom('import', 'import_certificate', transform=extract_subresource_name())
g.keyvault_custom('download', 'download_certificate')
g.keyvault_custom('get-default-policy', 'get_default_policy')

with self.command_group('keyvault certificate pending', kv_data_sdk) as g:
g.keyvault_command('merge', 'merge_certificate')
g.keyvault_command('show', 'get_certificate_operation')
g.keyvault_command('delete', 'delete_certificate_operation', validator=process_certificate_cancel_namespace)
g.keyvault_command('merge', 'merge_certificate', transform=extract_subresource_name())
g.keyvault_command('show', 'get_certificate_operation', transform=extract_subresource_name())
g.keyvault_command('delete', 'delete_certificate_operation', validator=process_certificate_cancel_namespace,
transform=extract_subresource_name())

with self.command_group('keyvault certificate contact', kv_data_sdk) as g:
g.keyvault_command('list', 'get_certificate_contacts')
Expand Down
Loading

0 comments on commit 31a9724

Please sign in to comment.