Skip to content

Commit 304d557

Browse files
committed
Adding output format for export template
1 parent fd4a6cd commit 304d557

4 files changed

Lines changed: 501 additions & 7 deletions

File tree

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,7 @@ def load_arguments(self, _):
535535
c.argument('skip_resource_name_params', action='store_true')
536536
c.argument('skip_all_params', action='store_true')
537537
c.argument('resource_ids', nargs='+', options_list='--resource-ids')
538+
c.argument('output_format', options_list='--output-format')
538539

539540
with self.argument_context('group create') as c:
540541
c.argument('rg_name', options_list=['--name', '--resource-group', '-n', '-g'],

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

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1667,7 +1667,7 @@ def update_resource_group(instance, tags=None):
16671667

16681668

16691669
def export_group_as_template(
1670-
cmd, resource_group_name, include_comments=False, include_parameter_default_value=False, resource_ids=None, skip_resource_name_params=False, skip_all_params=False):
1670+
cmd, resource_group_name, include_comments=False, include_parameter_default_value=False, resource_ids=None, skip_resource_name_params=False, skip_all_params=False, output_format=None):
16711671
"""Captures a resource group as a template.
16721672
:param str resource_group_name: the name of the resource group.
16731673
:param resource_ids: space-separated resource ids to filter the export by. To export all resources, do not specify this argument or supply "*".
@@ -1701,16 +1701,33 @@ def export_group_as_template(
17011701
options = ','.join(export_options) if export_options else None
17021702

17031703
ExportTemplateRequest = cmd.get_models('ExportTemplateRequest')
1704-
export_template_request = ExportTemplateRequest(resources=resources, options=options)
17051704

1705+
if output_format is None or output_format.lower() == "json" or output_format.lower() == "arm":
1706+
export_template_request = ExportTemplateRequest(resources=resources, options=options, output_format="Json")
1707+
1708+
elif output_format.lower() == "bicep":
1709+
export_template_request = ExportTemplateRequest(resources=resources, options=options, output_format="Bicep")
1710+
1711+
else:
1712+
raise CLIError('az resource: error: argument --output_format: invalid OutputFormat value: \'%s\'' % output_format)
1713+
17061714
# Exporting a resource group as a template is async since API version 2019-08-01.
17071715
if cmd.supported_api_version(min_api='2019-08-01'):
1708-
result_poller = rcf.resource_groups.begin_export_template(resource_group_name,
1709-
parameters=export_template_request)
1716+
if cmd.supported_api_version(min_api='2024-11-01'):
1717+
print("api version is 2024-11-01")
1718+
result_poller = rcf.resource_groups.begin_export_template(resource_group_name,
1719+
parameters=export_template_request,
1720+
api_version='2024-11-01')
1721+
else:
1722+
if output_format.lower() == "bicep":
1723+
raise CLIError("Bicep export is not supported in API version < 2024-11-01")
1724+
else:
1725+
result_poller = rcf.resource_groups.begin_export_template(resource_group_name,
1726+
parameters=export_template_request)
17101727
result = LongRunningOperation(cmd.cli_ctx)(result_poller)
17111728
else:
17121729
result = rcf.resource_groups.begin_export_template(resource_group_name,
1713-
parameters=export_template_request)
1730+
parameters=export_template_request)
17141731

17151732
# pylint: disable=no-member
17161733
# On error, server still returns 200, with details in the error attribute
@@ -1722,8 +1739,11 @@ def export_group_as_template(
17221739
logger.warning(str(error))
17231740
for detail in getattr(error, 'details', None) or []:
17241741
logger.error(detail.message)
1725-
1726-
return result.template
1742+
1743+
if output_format is None or output_format.lower() == "json" or output_format.lower() == "arm":
1744+
return result.template
1745+
elif output_format.lower() == "bicep":
1746+
return result.output
17271747

17281748

17291749
def create_application(cmd, resource_group_name,

0 commit comments

Comments
 (0)