diff --git a/azure-cli.pyproj b/azure-cli.pyproj index 642c94fb98a..4118216f5e3 100644 --- a/azure-cli.pyproj +++ b/azure-cli.pyproj @@ -495,6 +495,9 @@ + + Code + Code @@ -916,7 +919,6 @@ - diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_format.py b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_format.py new file mode 100644 index 00000000000..7c73aab9798 --- /dev/null +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_format.py @@ -0,0 +1,113 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +# pylint:disable=line-too-long + +from collections import OrderedDict + +def build_table_output(result, projection): + + if not isinstance(result, list): + result = [result] + + final_list = [] + + for item in result: + def _value_from_path(path): + obj = item # pylint: disable=cell-var-from-loop + try: + for part in path.split('.'): + obj = obj.get(part, None) + except AttributeError: + obj = None + return obj or ' ' + + item_dict = OrderedDict() + for element in projection: + item_dict[element[0]] = _value_from_path(element[1]) + final_list.append(item_dict) + return final_list + +def transform_container_list(result): + return build_table_output(result, [ + ('Name', 'name'), + ('Lease Status', 'properties.leaseStatus'), + ('Last Modified', 'properties.lastModified') + ]) + +def transform_container_show(result): + return build_table_output(result, [ + ('Name', 'name'), + ('Lease Status', 'properties.lease.status'), + ('Last Modified', 'properties.lastModified') + ]) + +def transform_blob_output(result): + return build_table_output(result, [ + ('Name', 'name'), + ('Blob Type', 'properties.blobType'), + ('Length', 'properties.contentLength'), + ('Content Type', 'properties.contentSettings.contentType'), + ('Last Modified', 'properties.lastModified') + ]) + +def transform_share_list(result): + return build_table_output(result, [ + ('Name', 'name'), + ('Quota', 'properties.quota'), + ('Last Modified', 'properties.lastModified') + ]) + +def transform_file_output(result): + """ Transform to convert SDK file/dir list output to something that + more clearly distinguishes between files and directories. """ + new_result = [] + + for item in result.get('items', [result]): + new_entry = OrderedDict() + item_name = item['name'] + try: + _ = item['properties']['contentLength'] + is_dir = False + except KeyError: + item_name = '{}/'.format(item_name) + is_dir = True + new_entry['Name'] = item_name + new_entry['Content Length'] = ' ' if is_dir else item['properties']['contentLength'] + new_entry['Type'] = 'dir' if is_dir else 'file' + new_entry['Last Modified'] = item['properties']['lastModified'] or ' ' + new_result.append(new_entry) + return sorted(new_result, key=lambda k: k['Name']) + +def transform_entity_show(result): + timestamp = result.pop('Timestamp') + result.pop('etag') + + # Reassemble the output + new_result = OrderedDict() + new_result['Partition'] = result.pop('PartitionKey') + new_result['Row'] = result.pop('RowKey') + for key in sorted(result.keys()): + new_result[key] = result[key] + new_result['Timestamp'] = timestamp + return new_result + +def transform_message_show(result): + ordered_result = [] + for item in result: + new_result = OrderedDict() + new_result['MessageId'] = item.pop('id') + new_result['Content'] = item.pop('content') + new_result['InsertionTime'] = item.pop('insertionTime') + new_result['ExpirationTime'] = item.pop('expirationTime') + for key in sorted(item.keys()): + new_result[key] = item[key] + ordered_result.append(new_result) + return ordered_result + +def transform_boolean_for_table(result): + for key in result: + result[key] = str(result[key]) + return result diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_help.py b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_help.py index 1f66b3291e3..e177f73c94e 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_help.py +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_help.py @@ -5,7 +5,7 @@ from azure.cli.core.help_files import helps #pylint: disable=unused-import -#pylint: disable=line-too-long +#pylint: disable=line-too-long, too-many-lines helps['storage entity insert'] = """ type: command @@ -29,119 +29,244 @@ type: group short-summary: Durable, highly available, and massively scalable cloud storage """ + helps['storage account'] = """ type: group - short-summary: Commands to manage your Storage accounts + short-summary: Manage storage accounts. """ + helps['storage account keys'] = """ type: group - short-summary: Commands to manage your Storage account keys + short-summary: Manage storage account keys. """ + helps['storage blob'] = """ type: group short-summary: Object storage for unstructured data """ + +helps['storage blob exists'] = """ + type: command + short-summary: Returns a boolean indicating whether the blob exists. +""" + +helps['storage blob list'] = """ + type: command + short-summary: List blobs in a given container. +""" + helps['storage blob copy'] = """ type: group - short-summary: Commands to manage your blob copy operations + short-summary: Manage blob copy operations. """ + helps['storage blob lease'] = """ type: group - short-summary: Commands to manage leases of your storage blob + short-summary: Manage storage blob leases. """ + helps['storage blob metadata'] = """ type: group - short-summary: Commands to manage your blob metadata + short-summary: Manage blob metadata. """ + helps['storage blob service-properties'] = """ type: group - short-summary: Commands to view Storage blob service properties + short-summary: Manage storage blob service properties. """ + helps['storage container'] = """ type: group - short-summary: Commands to manage your storage containers + short-summary: Manage blob storage containers. +""" + +helps['storage container exists'] = """ + type: command + short-summary: Returns a boolean indicating whether the container exists. """ + +helps['storage container list'] = """ + type: command + short-summary: List containers in a storage account. +""" + helps['storage container lease'] = """ type: group - short-summary: Commands to manage leases of your storage containers + short-summary: Manage blob storage container leases. """ + helps['storage container metadata'] = """ type: group - short-summary: Commands to manage your storage container metadata + short-summary: Manage container metadata. """ + helps['storage container policy'] = """ type: group - short-summary: Commands to manage stored access policies of your storage container + short-summary: Manage container stored access policies. """ + helps['storage cors'] = """ type: group - short-summary: Commands to manage your Storage Cross-Orgin Resource Sharing (CORS) + short-summary: Manage Storage service Cross-Orgin Resource Sharing (CORS) +""" + +helps['storage cors add'] = """ + type: command + short-summary: Add a CORS rule to a storage account. +""" + +helps['storage cors clear'] = """ + type: command + short-summary: Remove all CORS rules from a storage account. +""" + +helps['storage cors list'] = """ + type: command + short-summary: List all CORS rules for a storage account. """ + helps['storage directory'] = """ type: group - short-summary: Commands to manage your Storage file directory + short-summary: Manage file storage directories. +""" + +helps['storage directory exists'] = """ + type: command + short-summary: Returns a boolean indicating whether the directory exists. """ + helps['storage directory metadata'] = """ type: group - short-summary: Commands to manage your Storage file directory metadata + short-summary: Manage file storage directory metadata. """ + helps['storage entity'] = """ type: group - short-summary: Commands to manage Storage table entities + short-summary: Manage table storage entities. """ + +helps['storage entity query'] = """ + type: command + short-summary: List entities which satisfy a given query. +""" + + helps['storage file'] = """ type: group - short-summary: File shares that use the standard SMB 3.0 protocal + short-summary: File shares that use the standard SMB 3.0 protocol """ + +helps['storage file exists'] = """ + type: command + short-summary: Returns a boolean indicating whether the file exists. +""" + +helps['storage file list'] = """ + type: command + short-summary: List files and directories in the specified share. +""" + helps['storage file copy'] = """ type: group - short-summary: Commands to manage your file copy operations + short-summary: Manage file copy operations. """ + helps['storage file metadata'] = """ type: group - short-summary: Commands to manage your file metadata + short-summary: Manage file metadata. """ + helps['storage logging'] = """ type: group - short-summary: Commands to view Storage logging information + short-summary: Manage Storage service logging information. +""" + +helps['storage logging show'] = """ + type: command + short-summary: Show logging settings for a storage account. +""" + +helps['storage logging update'] = """ + type: command + short-summary: Update logging settings for a storage account. """ + helps['storage message'] = """ type: group - short-summary: Commands to manage Storage queue messages + short-summary: Manage queue storage messages. """ + helps['storage metrics'] = """ type: group - short-summary: Commands to manage your Storage metrics properties + short-summary: Manage Storage service metrics. """ + +helps['storage metrics show'] = """ + type: command + short-summary: Show metrics settings for a storage account. +""" + +helps['storage metrics update'] = """ + type: command + short-summary: Update metrics settings for a storage account. +""" + helps['storage queue'] = """ type: group - short-summary: Effectively scale apps according to traffic using queues + short-summary: Effectively scale apps according to traffic using queues. +""" + +helps['storage queue list'] = """ + type: command + short-summary: List queues in a storage account. """ + helps['storage queue metadata'] = """ type: group - short-summary: Commands to manage your queue metadata + short-summary: Manage storage queue metadata. """ + helps['storage queue policy'] = """ type: group - short-summary: Commands to manage shared access policies of your storage queue + short-summary: Manage storage queue shared access policies. """ + helps['storage share'] = """ type: group - short-summary: Commands to manage Storage file shares + short-summary: Manage file shares. +""" + +helps['storage share exists'] = """ + type: command + short-summary: Returns a boolean indicating whether the share exists. """ + +helps['storage share list'] = """ + type: command + short-summary: List file shares in a storage account. +""" + helps['storage share metadata'] = """ type: group - short-summary: Commands to manage file share metadata + short-summary: Manage file share metadata. """ + helps['storage share policy'] = """ type: group - short-summary: Commands to manage stored access policies of your Storage file share + short-summary: Manage storage file share shared access policies. """ + helps['storage table'] = """ type: group - short-summary: NoSQL key-value storage using semi-structured datasets + short-summary: NoSQL key-value storage using semi-structured datasets. """ + +helps['storage table list'] = """ + type: command + short-summary: List tables in a storage account. +""" + helps['storage table policy'] = """ type: group - short-summary: Commands to manage stored access policies of your Storage table + short-summary: Manage storage table shared access policies. """ diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_validators.py b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_validators.py index 22e670c324e..91d705131a8 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_validators.py +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_validators.py @@ -437,26 +437,6 @@ def transform_entity_query_output(result): new_results.append(new_entry) return new_results -def transform_file_list_output(result): - """ Transform to convert SDK file/dir list output to something that - more clearly distinguishes between files and directories. """ - new_result = [] - for item in list(result): - new_entry = OrderedDict() - item_name = item['name'] - try: - _ = item['properties']['contentLength'] - is_dir = False - except KeyError: - item_name = '{}/'.format(item_name) - is_dir = True - new_entry['Name'] = item_name - new_entry['Type'] = 'dir' if is_dir else 'file' - new_entry['ContentLength'] = '' if is_dir else item['properties']['contentLength'] - new_entry['LastModified'] = item['properties']['lastModified'] - new_result.append(new_entry) - return sorted(new_result, key=lambda k: k['Name']) - def transform_logging_list_output(result): new_result = [] for key in sorted(result.keys()): diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/commands.py b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/commands.py index a4ff737797a..875e66da1d3 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/commands.py +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/commands.py @@ -12,9 +12,17 @@ table_data_service_factory, queue_data_service_factory, cloud_storage_account_service_factory) from azure.cli.command_modules.storage._validators import \ (transform_acl_list_output, transform_cors_list_output, transform_entity_query_output, - transform_file_list_output, transform_logging_list_output, transform_metrics_list_output, + transform_logging_list_output, transform_metrics_list_output, transform_url, transform_storage_list_output, transform_storage_exists_output, transform_storage_boolean_output, transform_container_permission_output) +from azure.cli.command_modules.storage._format import \ + (transform_container_list, transform_container_show, + transform_blob_output, + transform_share_list, + transform_file_output, + transform_entity_show, + transform_message_show, + transform_boolean_for_table) # storage account commands factory = lambda kwargs: storage_client_factory().storage_accounts @@ -32,10 +40,10 @@ # container commands factory = blob_data_service_factory -cli_storage_data_plane_command('storage container list', 'azure.storage.blob.blockblobservice#BlockBlobService.list_containers', factory, transform=transform_storage_list_output) -cli_storage_data_plane_command('storage container delete', 'azure.storage.blob.blockblobservice#BlockBlobService.delete_container', factory, transform=transform_storage_boolean_output) -cli_storage_data_plane_command('storage container show', 'azure.storage.blob.blockblobservice#BlockBlobService.get_container_properties', factory) -cli_storage_data_plane_command('storage container create', 'azure.storage.blob.blockblobservice#BlockBlobService.create_container', factory, transform=transform_storage_boolean_output) +cli_storage_data_plane_command('storage container list', 'azure.storage.blob.blockblobservice#BlockBlobService.list_containers', factory, transform=transform_storage_list_output, table_transformer=transform_container_list) +cli_storage_data_plane_command('storage container delete', 'azure.storage.blob.blockblobservice#BlockBlobService.delete_container', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) +cli_storage_data_plane_command('storage container show', 'azure.storage.blob.blockblobservice#BlockBlobService.get_container_properties', factory, table_transformer=transform_container_show) +cli_storage_data_plane_command('storage container create', 'azure.storage.blob.blockblobservice#BlockBlobService.create_container', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) cli_storage_data_plane_command('storage container generate-sas', 'azure.storage.blob.blockblobservice#BlockBlobService.generate_container_shared_access_signature', factory) cli_storage_data_plane_command('storage container metadata update', 'azure.storage.blob.blockblobservice#BlockBlobService.set_container_metadata', factory) cli_storage_data_plane_command('storage container metadata show', 'azure.storage.blob.blockblobservice#BlockBlobService.get_container_metadata', factory) @@ -44,7 +52,7 @@ cli_storage_data_plane_command('storage container lease release', 'azure.storage.blob.blockblobservice#BlockBlobService.release_container_lease', factory) cli_storage_data_plane_command('storage container lease change', 'azure.storage.blob.blockblobservice#BlockBlobService.change_container_lease', factory) cli_storage_data_plane_command('storage container lease break', 'azure.storage.blob.blockblobservice#BlockBlobService.break_container_lease', factory) -cli_storage_data_plane_command('storage container exists', 'azure.storage.blob.baseblobservice#BaseBlobService.exists', factory, transform=transform_storage_exists_output) +cli_storage_data_plane_command('storage container exists', 'azure.storage.blob.baseblobservice#BaseBlobService.exists', factory, transform=transform_storage_exists_output, table_transformer=transform_boolean_for_table) cli_storage_data_plane_command('storage container set-permission', 'azure.storage.blob.baseblobservice#BaseBlobService.set_container_acl', factory) cli_storage_data_plane_command('storage container show-permission', 'azure.storage.blob.baseblobservice#BaseBlobService.get_container_acl', factory, transform=transform_container_permission_output) cli_storage_data_plane_command('storage container policy create', 'azure.cli.command_modules.storage.custom#create_acl_policy', factory) @@ -54,12 +62,12 @@ cli_storage_data_plane_command('storage container policy update', 'azure.cli.command_modules.storage.custom#set_acl_policy', factory) # blob commands -cli_storage_data_plane_command('storage blob list', 'azure.storage.blob.blockblobservice#BlockBlobService.list_blobs', factory, transform=transform_storage_list_output) -cli_storage_data_plane_command('storage blob delete', 'azure.storage.blob.blockblobservice#BlockBlobService.delete_blob', factory, transform=transform_storage_boolean_output) +cli_storage_data_plane_command('storage blob list', 'azure.storage.blob.blockblobservice#BlockBlobService.list_blobs', factory, transform=transform_storage_list_output, table_transformer=transform_blob_output) +cli_storage_data_plane_command('storage blob delete', 'azure.storage.blob.blockblobservice#BlockBlobService.delete_blob', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) cli_storage_data_plane_command('storage blob generate-sas', 'azure.storage.blob.blockblobservice#BlockBlobService.generate_blob_shared_access_signature', factory) cli_storage_data_plane_command('storage blob url', 'azure.storage.blob.blockblobservice#BlockBlobService.make_blob_url', factory, transform=transform_url) cli_storage_data_plane_command('storage blob snapshot', 'azure.storage.blob.blockblobservice#BlockBlobService.snapshot_blob', factory) -cli_storage_data_plane_command('storage blob show', 'azure.storage.blob.blockblobservice#BlockBlobService.get_blob_properties', factory) +cli_storage_data_plane_command('storage blob show', 'azure.storage.blob.blockblobservice#BlockBlobService.get_blob_properties', factory, table_transformer=transform_blob_output) cli_storage_data_plane_command('storage blob update', 'azure.storage.blob.blockblobservice#BlockBlobService.set_blob_properties', factory) cli_storage_data_plane_command('storage blob exists', 'azure.storage.blob.baseblobservice#BaseBlobService.exists', factory, transform=transform_storage_exists_output) cli_storage_data_plane_command('storage blob download', 'azure.storage.blob.baseblobservice#BaseBlobService.get_blob_to_path', factory) @@ -77,9 +85,9 @@ # share commands factory = file_data_service_factory -cli_storage_data_plane_command('storage share list', 'azure.storage.file.fileservice#FileService.list_shares', factory, transform=transform_storage_list_output) -cli_storage_data_plane_command('storage share create', 'azure.storage.file.fileservice#FileService.create_share', factory, transform=transform_storage_boolean_output) -cli_storage_data_plane_command('storage share delete', 'azure.storage.file.fileservice#FileService.delete_share', factory, transform=transform_storage_boolean_output) +cli_storage_data_plane_command('storage share list', 'azure.storage.file.fileservice#FileService.list_shares', factory, transform=transform_storage_list_output, table_transformer=transform_share_list) +cli_storage_data_plane_command('storage share create', 'azure.storage.file.fileservice#FileService.create_share', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) +cli_storage_data_plane_command('storage share delete', 'azure.storage.file.fileservice#FileService.delete_share', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) cli_storage_data_plane_command('storage share generate-sas', 'azure.storage.file.fileservice#FileService.generate_share_shared_access_signature', factory) cli_storage_data_plane_command('storage share stats', 'azure.storage.file.fileservice#FileService.get_share_stats', factory) cli_storage_data_plane_command('storage share show', 'azure.storage.file.fileservice#FileService.get_share_properties', factory) @@ -94,20 +102,20 @@ cli_storage_data_plane_command('storage share policy update', 'azure.cli.command_modules.storage.custom#set_acl_policy', factory) # directory commands -cli_storage_data_plane_command('storage directory create', 'azure.storage.file.fileservice#FileService.create_directory', factory, transform=transform_storage_boolean_output) -cli_storage_data_plane_command('storage directory delete', 'azure.storage.file.fileservice#FileService.delete_directory', factory, transform=transform_storage_boolean_output) -cli_storage_data_plane_command('storage directory show', 'azure.storage.file.fileservice#FileService.get_directory_properties', factory) +cli_storage_data_plane_command('storage directory create', 'azure.storage.file.fileservice#FileService.create_directory', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) +cli_storage_data_plane_command('storage directory delete', 'azure.storage.file.fileservice#FileService.delete_directory', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) +cli_storage_data_plane_command('storage directory show', 'azure.storage.file.fileservice#FileService.get_directory_properties', factory, table_transformer=transform_file_output) cli_storage_data_plane_command('storage directory exists', 'azure.storage.file.fileservice#FileService.exists', factory, transform=transform_storage_exists_output) cli_storage_data_plane_command('storage directory metadata show', 'azure.storage.file.fileservice#FileService.get_directory_metadata', factory) cli_storage_data_plane_command('storage directory metadata update', 'azure.storage.file.fileservice#FileService.set_directory_metadata', factory) # file commands -cli_storage_data_plane_command('storage file list', 'azure.storage.file.fileservice#FileService.list_directories_and_files', factory, table_transformer=transform_file_list_output) -cli_storage_data_plane_command('storage file delete', 'azure.storage.file.fileservice#FileService.delete_file', factory, transform=transform_storage_boolean_output) +cli_storage_data_plane_command('storage file list', 'azure.storage.file.fileservice#FileService.list_directories_and_files', factory, table_transformer=transform_file_output) +cli_storage_data_plane_command('storage file delete', 'azure.storage.file.fileservice#FileService.delete_file', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) cli_storage_data_plane_command('storage file resize', 'azure.storage.file.fileservice#FileService.resize_file', factory) cli_storage_data_plane_command('storage file url', 'azure.storage.file.fileservice#FileService.make_file_url', factory, transform=transform_url) cli_storage_data_plane_command('storage file generate-sas', 'azure.storage.file.fileservice#FileService.generate_file_shared_access_signature', factory) -cli_storage_data_plane_command('storage file show', 'azure.storage.file.fileservice#FileService.get_file_properties', factory) +cli_storage_data_plane_command('storage file show', 'azure.storage.file.fileservice#FileService.get_file_properties', factory, table_transformer=transform_file_output) cli_storage_data_plane_command('storage file update', 'azure.storage.file.fileservice#FileService.set_file_properties', factory) cli_storage_data_plane_command('storage file exists', 'azure.storage.file.fileservice#FileService.exists', factory, transform=transform_storage_exists_output) cli_storage_data_plane_command('storage file download', 'azure.storage.file.fileservice#FileService.get_file_to_path', factory) @@ -122,9 +130,9 @@ cli_storage_data_plane_command('storage table generate-sas', 'azure.storage.table.tableservice#TableService.generate_table_shared_access_signature', factory) cli_storage_data_plane_command('storage table stats', 'azure.storage.table.tableservice#TableService.get_table_service_stats', factory) cli_storage_data_plane_command('storage table list', 'azure.storage.table.tableservice#TableService.list_tables', factory, transform=transform_storage_list_output) -cli_storage_data_plane_command('storage table create', 'azure.storage.table.tableservice#TableService.create_table', factory, transform=transform_storage_boolean_output) +cli_storage_data_plane_command('storage table create', 'azure.storage.table.tableservice#TableService.create_table', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) cli_storage_data_plane_command('storage table exists', 'azure.storage.table.tableservice#TableService.exists', factory, transform=transform_storage_exists_output) -cli_storage_data_plane_command('storage table delete', 'azure.storage.table.tableservice#TableService.delete_table', factory, transform=transform_storage_boolean_output) +cli_storage_data_plane_command('storage table delete', 'azure.storage.table.tableservice#TableService.delete_table', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) cli_storage_data_plane_command('storage table policy create', 'azure.cli.command_modules.storage.custom#create_acl_policy', factory) cli_storage_data_plane_command('storage table policy delete', 'azure.cli.command_modules.storage.custom#delete_acl_policy', factory) cli_storage_data_plane_command('storage table policy show', 'azure.cli.command_modules.storage.custom#get_acl_policy', factory) @@ -133,19 +141,19 @@ # table entity commands cli_storage_data_plane_command('storage entity query', 'azure.storage.table.tableservice#TableService.query_entities', factory, table_transformer=transform_entity_query_output) -cli_storage_data_plane_command('storage entity show', 'azure.storage.table.tableservice#TableService.get_entity', factory) +cli_storage_data_plane_command('storage entity show', 'azure.storage.table.tableservice#TableService.get_entity', factory, table_transformer=transform_entity_show) cli_storage_data_plane_command('storage entity insert', 'azure.cli.command_modules.storage.custom#insert_table_entity', factory) cli_storage_data_plane_command('storage entity replace', 'azure.storage.table.tableservice#TableService.update_entity', factory) cli_storage_data_plane_command('storage entity merge', 'azure.storage.table.tableservice#TableService.merge_entity', factory) -cli_storage_data_plane_command('storage entity delete', 'azure.storage.table.tableservice#TableService.delete_entity', factory, transform=transform_storage_boolean_output) +cli_storage_data_plane_command('storage entity delete', 'azure.storage.table.tableservice#TableService.delete_entity', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) # queue commands factory = queue_data_service_factory cli_storage_data_plane_command('storage queue generate-sas', 'azure.storage.queue.queueservice#QueueService.generate_queue_shared_access_signature', factory) cli_storage_data_plane_command('storage queue stats', 'azure.storage.queue.queueservice#QueueService.get_queue_service_stats', factory) cli_storage_data_plane_command('storage queue list', 'azure.storage.queue.queueservice#QueueService.list_queues', factory, transform=transform_storage_list_output) -cli_storage_data_plane_command('storage queue create', 'azure.storage.queue.queueservice#QueueService.create_queue', factory, transform=transform_storage_boolean_output) -cli_storage_data_plane_command('storage queue delete', 'azure.storage.queue.queueservice#QueueService.delete_queue', factory, transform=transform_storage_boolean_output) +cli_storage_data_plane_command('storage queue create', 'azure.storage.queue.queueservice#QueueService.create_queue', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) +cli_storage_data_plane_command('storage queue delete', 'azure.storage.queue.queueservice#QueueService.delete_queue', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) cli_storage_data_plane_command('storage queue metadata show', 'azure.storage.queue.queueservice#QueueService.get_queue_metadata', factory) cli_storage_data_plane_command('storage queue metadata update', 'azure.storage.queue.queueservice#QueueService.set_queue_metadata', factory) cli_storage_data_plane_command('storage queue exists', 'azure.storage.queue.queueservice#QueueService.exists', factory, transform=transform_storage_exists_output) @@ -157,9 +165,9 @@ # queue message commands cli_storage_data_plane_command('storage message put', 'azure.storage.queue.queueservice#QueueService.put_message', factory) -cli_storage_data_plane_command('storage message get', 'azure.storage.queue.queueservice#QueueService.get_messages', factory) -cli_storage_data_plane_command('storage message peek', 'azure.storage.queue.queueservice#QueueService.peek_messages', factory) -cli_storage_data_plane_command('storage message delete', 'azure.storage.queue.queueservice#QueueService.delete_message', factory, transform=transform_storage_boolean_output) +cli_storage_data_plane_command('storage message get', 'azure.storage.queue.queueservice#QueueService.get_messages', factory, table_transformer=transform_message_show) +cli_storage_data_plane_command('storage message peek', 'azure.storage.queue.queueservice#QueueService.peek_messages', factory, table_transformer=transform_message_show) +cli_storage_data_plane_command('storage message delete', 'azure.storage.queue.queueservice#QueueService.delete_message', factory, transform=transform_storage_boolean_output, table_transformer=transform_boolean_for_table) cli_storage_data_plane_command('storage message clear', 'azure.storage.queue.queueservice#QueueService.clear_messages', factory) cli_storage_data_plane_command('storage message update', 'azure.storage.queue.queueservice#QueueService.update_message', factory)