Skip to content

Commit 89a48cf

Browse files
committed
Export template with SDK #2
1 parent 83792f9 commit 89a48cf

File tree

5 files changed

+763
-794
lines changed

5 files changed

+763
-794
lines changed

src/Resources/ResourceManager/Implementation/ResourceGroups/ExportAzureResourceGroupCmdlet.cs

Lines changed: 8 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ namespace Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation
2222
using Microsoft.Azure.Commands.ResourceManager.Cmdlets.Entities.ResourceIds;
2323
using Microsoft.Azure.Commands.ResourceManager.Cmdlets.Extensions;
2424
using Microsoft.Azure.Commands.ResourceManager.Cmdlets.Utilities;
25+
using Microsoft.Azure.Management.Internal.ResourceManager.Version2018_05_01.Models;
26+
using Microsoft.Azure.Management.ResourceManager.Models;
2527
using Microsoft.WindowsAzure.Commands.Utilities.Common;
2628
using Newtonsoft.Json.Linq;
2729
using System;
@@ -104,48 +106,17 @@ protected override void OnProcessRecord()
104106

105107
var resourceGroupId = this.GetResourceGroupId();
106108

107-
var apiVersion = this.ApiVersion ?? DefaultApiVersion;
108-
109-
var parameters = new ExportTemplateParameters
109+
var parameters = new Management.ResourceManager.Models.ExportTemplateRequest
110110
{
111111
Resources = this.GetResourcesFilter(resourceGroupId: resourceGroupId),
112112
Options = this.GetExportOptions(),
113113
};
114114

115-
var operationResult = this.GetResourcesClient()
116-
.InvokeActionOnResource<JObject>(
117-
resourceId: resourceGroupId,
118-
action: Constants.ExportTemplate,
119-
parameters: parameters.ToJToken(),
120-
apiVersion: apiVersion,
121-
cancellationToken: this.CancellationToken.Value)
122-
.Result;
123-
124-
var managementUri = this.GetResourcesClient()
125-
.GetResourceManagementRequestUri(
126-
resourceId: resourceGroupId,
127-
apiVersion: apiVersion,
128-
action: Constants.ExportTemplate);
129-
130-
var activity = string.Format("POST {0}", managementUri.PathAndQuery);
131-
var resultString = this.GetLongRunningOperationTracker(activityName: activity,
132-
isResourceCreateOrUpdate: false)
133-
.WaitOnOperation(operationResult: operationResult);
134-
135-
var template = JToken.FromObject(JObject.Parse(resultString)["template"]);
136-
137-
if (JObject.Parse(resultString)["error"] != null)
138-
{
139-
ExtendedErrorInfo error;
140-
if (JObject.Parse(resultString)["error"].TryConvertTo(out error))
141-
{
142-
WriteWarning(string.Format("{0} : {1}", error.Code, error.Message));
143-
foreach (var detail in error.Details)
144-
{
145-
WriteWarning(string.Format("{0} : {1}", detail.Code, detail.Message));
146-
}
147-
}
148-
}
115+
var exportedTemplate = ResourceManagerSdkClient.ExportResourceGroup(ResourceGroupName, parameters);
116+
117+
var template = exportedTemplate.Template;
118+
119+
var error = exportedTemplate.Error;
149120

150121
string path = FileUtility.SaveTemplateFile(
151122
templateName: this.ResourceGroupName,

src/Resources/ResourceManager/SdkClient/ResourceManagerSdkClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ private ResourceGroup CreateOrUpdateResourceGroup(string name, string location,
178178
return result;
179179
}
180180

181-
private ResourceGroupExportResult ExportResourceGroup(string resourceGroupName, ExportTemplateRequest properties)
181+
public ResourceGroupExportResult ExportResourceGroup(string resourceGroupName, ExportTemplateRequest properties)
182182
{
183183
return ResourceManagementClient.ResourceGroups.ExportTemplate(resourceGroupName, properties);
184184
}

src/Resources/Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceGroupTests/TestExportResourceGroup.json

Lines changed: 151 additions & 149 deletions
Large diffs are not rendered by default.

src/Resources/Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceGroupTests/TestExportResourceGroupAsyncRoute.json

Lines changed: 431 additions & 437 deletions
Large diffs are not rendered by default.

src/Resources/Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceGroupTests/TestExportResourceGroupWithFiltering.json

Lines changed: 172 additions & 170 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)