Skip to content
This repository was archived by the owner on Feb 23, 2024. It is now read-only.

Commit ce50507

Browse files
committed
extract product policies
1 parent f008b26 commit ce50507

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/ProductExtractor.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,16 @@ public async Task<string> GetProductDetails(string ApiManagementName, string Res
3030
return await CallApiManagement(azToken, requestUrl);
3131
}
3232

33+
public async Task<string> GetProductPolicy(string ApiManagementName, string ResourceGroupName, string ProductName)
34+
{
35+
(string azToken, string azSubId) = await auth.GetAccessToken();
36+
37+
string requestUrl = string.Format("{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.ApiManagement/service/{3}/products/{4}/policies/policy?api-version={5}",
38+
baseUrl, azSubId, ResourceGroupName, ApiManagementName, ProductName, GlobalConstants.APIVersion);
39+
40+
return await CallApiManagement(azToken, requestUrl);
41+
}
42+
3343
public async Task<Template> GenerateProductsARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources)
3444
{
3545
Console.WriteLine("------------------------------------------");
@@ -65,6 +75,21 @@ public async Task<Template> GenerateProductsARMTemplate(string apimname, string
6575
{
6676
Console.WriteLine("'{0}' Product found", productName);
6777
templateResources.Add(productsTemplateResource);
78+
79+
// add product policy resource to template
80+
try
81+
{
82+
string productPolicy = await GetProductPolicy(apimname, resourceGroup, productName);
83+
Console.WriteLine($" - Product policy found for {productName} product");
84+
PolicyTemplateResource productPolicyResource = JsonConvert.DeserializeObject<PolicyTemplateResource>(productPolicy);
85+
productPolicyResource.name = $"[concat(parameters('ApimServiceName'), '/{productName}/policy')]";
86+
productPolicyResource.apiVersion = GlobalConstants.APIVersion;
87+
productPolicyResource.scale = null;
88+
productPolicyResource.dependsOn = new string[] { $"[resourceId('Microsoft.ApiManagement/service/products', parameters('ApimServiceName'), '{productName}')]" };
89+
90+
templateResources.Add(productPolicyResource);
91+
}
92+
catch (Exception) { }
6893
}
6994
}
7095

src/APIM_ARMTemplate/apimtemplate/Properties/launchSettings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"profiles": {
33
"apimtemplate": {
44
"commandName": "Project",
5-
"commandLineArgs": "create --configFile ./Creator/ExampleFiles/YAMLConfigs/validTesting.yml"
5+
"commandLineArgs": "extract --sourceApimName LucasBlankLinked --destinationApimName LucasBlankUnlinked --resourceGroup LucasHuetHudsonInternal --fileFolder C:\\Users\\lucashh\\Desktop\\Projects\\APIM-ARM\\GeneratedTemplates\\Extractor\\Full --linkedBaseUrl https://lucasarmtemplates.blob.core.windows.net/linked-templates"
66
}
77
}
88
}

0 commit comments

Comments
 (0)