Skip to content

Commit b5ed433

Browse files
committed
Update extensible resource display.
1 parent 679df3a commit b5ed433

1 file changed

Lines changed: 29 additions & 8 deletions

File tree

src/azure-cli/azure/cli/command_modules/resource/_stacks_formatters.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,15 @@ def _format_resource_changes_and_deletion_summary(self) -> bool:
151151
0 if x.id else 1, # sort Azure resources before extension resources
152152
DeploymentStacksWhatIfResultFormatter.CHANGE_CERTAINTY_PRIORITIES.get(
153153
x.change_certainty, 1) if x.id else 0, # Azure resources: then by certainty
154-
x.id if x.id else "", # Azure resources: then by ID
155-
x.extension.name if x.extension else "",
154+
x.id.lower() if x.id else "", # Azure resources: then by ID
156155
# Extension resources: then by (ext name, ext version, config id)
156+
x.extension.name if x.extension else "",
157157
x.extension.version if x.extension else "",
158158
(x.extension.config_id if x.extension else "") or "",
159159
DeploymentStacksWhatIfResultFormatter.CHANGE_CERTAINTY_PRIORITIES.get(
160160
x.change_certainty, 1) if not x.id else 0, # Extension resources: then by certainty
161161
x.type if x.extension else "", # Extension resources: then by type
162-
json.dumps(x.identifiers) if x.extension else "" # Extension resources: then by identifiers
162+
self._format_ext_resource_identifiers(x.identifiers) if x.identifiers else "" # Extension resources: then by identifiers
163163
))
164164

165165
if self._format_resource_changes(resource_changes_sorted):
@@ -275,7 +275,8 @@ def _format_resource_heading_line(self, resource_change: StackModels.DeploymentS
275275
self.builder.append("[Potential] ", Color.CYAN)
276276

277277
api_version_suffix = f" [{resource_change.api_version}]" if resource_change.api_version else ""
278-
resource_id = resource_change.id if resource_change.id else f"{resource_change.type} {json.dumps(resource_change.identifiers)}"
278+
resource_id = resource_change.id if resource_change.id else\
279+
f"{resource_change.type} {self._format_ext_resource_identifiers(resource_change.identifiers)}"
279280
self.builder.append_line(f"{resource_id}{api_version_suffix}", color)
280281

281282
def _format_resource_property_changes(
@@ -508,14 +509,34 @@ def _format_resource_class_header(change: StackModels.DeploymentStacksWhatIfReso
508509
result = f"{change.extension.name}@{change.extension.version}"
509510

510511
if change.extension.config:
512+
# Print the config. Eventually this can be substituted with an optional user-provided "comparison ID"
513+
# for brevity.
511514
config_items = sorted(
512515
change.extension.config.items(),
513-
key=lambda ci: ci[0])
516+
key=lambda ci: ((ci[1] or {}).get('keyVaultReference', None) is not None, ci[0]))
514517

515518
if len(config_items) > 0:
516-
for prop, item in change.extension.config.items():
517-
result += f" {prop}={item}\n"
519+
config_parts = []
520+
521+
for prop, item in config_items:
522+
if not item:
523+
continue
524+
525+
if item.get('keyVaultReference', None):
526+
secret_name = item['keyVaultReference'].get('secretName', None)
527+
secret_version = item['keyVaultReference'].get('secretVersion', None)
528+
kv_id = item['keyVaultReference'].get('keyVault', {}).get('id', None)
529+
version_suffix = f"@{secret_version}" if secret_version else ""
530+
config_parts.append(f"{prop}=<Secret '{secret_name}'{version_suffix} in key vault '{kv_id}'>")
531+
else:
532+
config_parts.append(f"{prop}={json.dumps(item.get('value', None))}")
518533

519-
result = result.rstrip("\n")
534+
result += f" {', '.join(config_parts)}"
520535

521536
return result
537+
538+
@staticmethod
539+
def _format_ext_resource_identifiers(identifiers: dict[str, t.Any]) -> str:
540+
sorted_items = sorted(identifiers.items(), key=lambda x: x[0])
541+
542+
return ", ".join(f"{key}={json.dumps(value)}" for key, value in sorted_items)

0 commit comments

Comments
 (0)