Skip to content

Commit 7765639

Browse files
authored
[Storage] Fix #32503: az storage file list: Fix listing files when using Oauth without Reader access (#32602)
1 parent ed8cb74 commit 7765639

3 files changed

Lines changed: 517 additions & 612 deletions

File tree

src/azure-cli/azure/cli/command_modules/storage/operations/file.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -94,17 +94,26 @@ def create_file_url(client, protocol=None, **kwargs):
9494
def list_share_files(cmd, client, directory_name=None, timeout=None, exclude_dir=False, exclude_extended_info=False,
9595
num_results=None, marker=None):
9696
from ..track2_util import list_generator
97-
include = None
98-
share_properties = client.get_share_properties()
99-
if share_properties.protocols == ['NFS']:
100-
if exclude_extended_info:
101-
logger.warning('--exclude-extended-info is not supported for NFS shares.')
102-
else:
97+
# since get_share_properties requires share level read access, skip it, assume SMB share first
98+
results = None
99+
try:
103100
include = [] if exclude_extended_info else ["timestamps", "Etag", "Attributes", "PermissionKey"]
104-
generator = client.list_directories_and_files(directory_name=directory_name, include=include,
105-
timeout=timeout, results_per_page=num_results)
106-
pages = generator.by_page(continuation_token=marker)
107-
results = list_generator(pages=pages, num_results=num_results)
101+
generator = client.list_directories_and_files(directory_name=directory_name, include=include,
102+
timeout=timeout, results_per_page=num_results)
103+
pages = generator.by_page(continuation_token=marker)
104+
results = list_generator(pages=pages, num_results=num_results)
105+
except HttpResponseError as ex:
106+
if ex.error_code == "UnsupportedQueryParameter":
107+
# try NFS share if include fails:
108+
if exclude_extended_info:
109+
logger.warning('--exclude-extended-info is not supported for NFS shares.')
110+
include = None
111+
generator = client.list_directories_and_files(directory_name=directory_name, include=include,
112+
timeout=timeout, results_per_page=num_results)
113+
pages = generator.by_page(continuation_token=marker)
114+
results = list_generator(pages=pages, num_results=num_results)
115+
else:
116+
raise ex
108117

109118
if pages.continuation_token:
110119
logger.warning('Next Marker:')

0 commit comments

Comments
 (0)