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

Commit a1381a5

Browse files
committed
extract associated products for single api
1 parent 84a3287 commit a1381a5

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

src/APIM_ARMTemplate/apimtemplate/Commands/Extract.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,11 @@ private void GenerateARMTemplate(string apimname, string resourceGroup, string f
6767

6868
Console.WriteLine("{0} API's found ...", ((JContainer)oApi["value"]).Count.ToString());
6969

70-
// store api and operation policies as well as diagnostics for the time being in order to extract loggers correctly
70+
// store api and operation policies as well as diagnostics for the time being in order to extract loggers correctly in case of a single api
7171
List<PolicyTemplateResource> policyResources = new List<PolicyTemplateResource>();
7272
List<DiagnosticTemplateResource> diagnosticResources = new List<DiagnosticTemplateResource>();
73+
// store product names for the time being in order to extract products correctly in case of a single api
74+
List<string> productNames = new List<string>();
7375

7476
List<TemplateResource> templateResources = new List<TemplateResource>();
7577

@@ -225,6 +227,8 @@ private void GenerateARMTemplate(string apimname, string resourceGroup, string f
225227
apiProductsResource.dependsOn = new string[] { $"[resourceId('Microsoft.ApiManagement/service/apis', parameters('ApimServiceName'), '{oApiName}')]" };
226228

227229
templateResources.Add(apiProductsResource);
230+
// add the product name to the list used to extract products later on
231+
productNames.Add(apiProductName);
228232

229233
}
230234
}
@@ -270,13 +274,13 @@ private void GenerateARMTemplate(string apimname, string resourceGroup, string f
270274

271275
if (singleApiName != null)
272276
{
273-
GenerateProductsARMTemplate(apimname, resourceGroup, fileFolder);
274277
fileWriter = new FileWriter();
275278
fileWriter.WriteJSONToFile(armTemplate, @fileFolder + Path.DirectorySeparatorChar + apimname + "-" + oApiName + "-template.json");
276-
templateResources = new List<TemplateResource>();
277279
}
278280
}
279281

282+
// extract resources that do not fall under api. Pass in the single api name and associated resources for the single api case
283+
GenerateProductsARMTemplate(apimname, resourceGroup, fileFolder, singleApiName, productNames);
280284
GenerateNamedValuesTemplate(resourceGroup, apimname, fileFolder, singleApiName, policyResources, diagnosticResources);
281285
GenerateLoggerTemplate(resourceGroup, apimname, fileFolder, singleApiName, policyResources, diagnosticResources);
282286

@@ -330,7 +334,7 @@ private void GenerateVersionSetARMTemplate(string apimname, string resourceGroup
330334
fileWriter.WriteJSONToFile(armTemplate, filePath);
331335
}
332336

333-
private void GenerateProductsARMTemplate(string apimname, string resourceGroup, string fileFolder)
337+
private void GenerateProductsARMTemplate(string apimname, string resourceGroup, string fileFolder, string singleApiName, List<string> productNames)
334338
{
335339
APIExtractor apiExtractor = new APIExtractor();
336340
Template armTemplate = GenerateEmptyTemplateWithParameters();
@@ -358,8 +362,18 @@ private void GenerateProductsARMTemplate(string apimname, string resourceGroup,
358362
productsDetailsResource.name = $"[concat(parameters('ApimServiceName'), '/{productName}')]";
359363
productsDetailsResource.apiVersion = "2018-06-01-preview";
360364

361-
templateResources.Add(productsDetailsResource);
362-
365+
if (singleApiName == null)
366+
{
367+
templateResources.Add(productsDetailsResource);
368+
} else
369+
{
370+
// utility is extracting a single api, only extract the product if it is found in productNames (all prodct names associated with the specific api)
371+
if (productNames.SingleOrDefault(p => p == productName) != null)
372+
{
373+
// current product is indeed associated with the api
374+
templateResources.Add(productsDetailsResource);
375+
}
376+
}
363377
}
364378

365379
armTemplate.resources = templateResources.ToArray();

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": "extract --name apiphany --resourceGroup vlvinogr-apim --fileFolder C:\\Users\\lucashh\\Desktop\\Projects\\APIM-ARM\\ExtractedTemplates --apiName http-bin-dot-org"
5+
"commandLineArgs": "extract --name apiphany --resourceGroup vlvinogr-apim --fileFolder C:\\Users\\lucashh\\Desktop\\Projects\\APIM-ARM\\ExtractedTemplates\\Full"
66
}
77
}
88
}

0 commit comments

Comments
 (0)