@@ -67,8 +67,9 @@ private void GenerateARMTemplate(string apimname, string resourceGroup, string f
67
67
68
68
Console . WriteLine ( "{0} API's found ..." , ( ( JContainer ) oApi [ "value" ] ) . Count . ToString ( ) ) ;
69
69
70
- GenerateNamedValuesTemplate ( resourceGroup , apimname , fileFolder , singleApiName ) ;
71
- GenerateLoggerTemplate ( resourceGroup , apimname , fileFolder , singleApiName ) ;
70
+ // store api and operation policies as well as diagnostics for the time being in order to extract loggers correctly
71
+ List < PolicyTemplateResource > policyResources = new List < PolicyTemplateResource > ( ) ;
72
+ List < DiagnosticTemplateResource > diagnosticResources = new List < DiagnosticTemplateResource > ( ) ;
72
73
73
74
List < TemplateResource > templateResources = new List < TemplateResource > ( ) ;
74
75
@@ -173,6 +174,8 @@ private void GenerateARMTemplate(string apimname, string resourceGroup, string f
173
174
operationPolicyResource . dependsOn = new string [ ] { $ "[resourceId('Microsoft.ApiManagement/service/apis/operations', parameters('ApimServiceName'), '{ oApiName } ', '{ operationResourceName } ')]" } ;
174
175
175
176
templateResources . Add ( operationPolicyResource ) ;
177
+ // add the operation policy resource to the list used to extract loggers later on
178
+ policyResources . Add ( operationPolicyResource ) ;
176
179
}
177
180
catch ( Exception )
178
181
{
@@ -194,6 +197,8 @@ private void GenerateARMTemplate(string apimname, string resourceGroup, string f
194
197
apiPoliciesResource . dependsOn = new string [ ] { $ "[resourceId('Microsoft.ApiManagement/service/apis', parameters('ApimServiceName'), '{ apiName } ')]" } ;
195
198
196
199
templateResources . Add ( apiPoliciesResource ) ;
200
+ // add the api policy resource to the list used to extract loggers later on
201
+ policyResources . Add ( apiPoliciesResource ) ;
197
202
}
198
203
catch ( Exception )
199
204
{
@@ -254,6 +259,8 @@ private void GenerateARMTemplate(string apimname, string resourceGroup, string f
254
259
}
255
260
256
261
templateResources . Add ( diagnosticResource ) ;
262
+ // add the diagnostic resource to the list used to extract loggers later on
263
+ diagnosticResources . Add ( diagnosticResource ) ;
257
264
258
265
}
259
266
@@ -269,6 +276,9 @@ private void GenerateARMTemplate(string apimname, string resourceGroup, string f
269
276
}
270
277
}
271
278
279
+ GenerateNamedValuesTemplate ( resourceGroup , apimname , fileFolder , singleApiName , policyResources , diagnosticResources ) ;
280
+ GenerateLoggerTemplate ( resourceGroup , apimname , fileFolder , singleApiName , policyResources , diagnosticResources ) ;
281
+
272
282
if ( singleApiName == null )
273
283
{
274
284
fileWriter = new FileWriter ( ) ;
@@ -383,7 +393,7 @@ private List<TemplateResource> GenerateSchemasARMTemplate(string apimServiceName
383
393
return templateResources ;
384
394
}
385
395
386
- private async void GenerateLoggerTemplate ( string resourceGroup , string apimname , string fileFolder , string singleApiName )
396
+ private async void GenerateLoggerTemplate ( string resourceGroup , string apimname , string fileFolder , string singleApiName , List < PolicyTemplateResource > policyResources , List < DiagnosticTemplateResource > diagnosticResources )
387
397
{
388
398
Console . WriteLine ( "------------------------------------------" ) ;
389
399
Console . WriteLine ( "Getting loggers from service" ) ;
@@ -397,7 +407,6 @@ private async void GenerateLoggerTemplate(string resourceGroup, string apimname,
397
407
foreach ( var extractedLogger in oLoggers [ "value" ] )
398
408
{
399
409
string loggerName = ( ( JValue ) extractedLogger [ "name" ] ) . Value . ToString ( ) ;
400
- Console . WriteLine ( "'{0}' Logger found" , loggerName ) ;
401
410
402
411
string fullLoggerResource = await loggerExtractor . GetLogger ( apimname , resourceGroup , loggerName ) ;
403
412
LoggerTemplateResource loggerResource = JsonConvert . DeserializeObject < LoggerTemplateResource > ( fullLoggerResource ) ;
@@ -406,15 +415,45 @@ private async void GenerateLoggerTemplate(string resourceGroup, string apimname,
406
415
loggerResource . apiVersion = "2018-06-01-preview" ;
407
416
loggerResource . scale = null ;
408
417
409
- templateResources . Add ( loggerResource ) ;
418
+ if ( singleApiName == null )
419
+ {
420
+ // if the user is extracting all apis, extract all the loggers
421
+ Console . WriteLine ( "'{0}' Logger found" , loggerName ) ;
422
+ templateResources . Add ( loggerResource ) ;
423
+ } else
424
+ {
425
+ // if the user is extracting a single api, extract the loggers referenced by its diagnostics and api policies
426
+ bool isReferencedInPolicy = false ;
427
+ bool isReferencedInDiagnostic = false ;
428
+ foreach ( PolicyTemplateResource policyTemplateResource in policyResources )
429
+ {
430
+ if ( policyTemplateResource . properties . policyContent . Contains ( loggerName ) )
431
+ {
432
+ isReferencedInPolicy = true ;
433
+ }
434
+ }
435
+ foreach ( DiagnosticTemplateResource diagnosticTemplateResource in diagnosticResources )
436
+ {
437
+ if ( diagnosticTemplateResource . properties . loggerId . Contains ( loggerName ) )
438
+ {
439
+ isReferencedInPolicy = true ;
440
+ }
441
+ }
442
+ if ( isReferencedInPolicy == true || isReferencedInDiagnostic == true )
443
+ {
444
+ // logger was used in policy or diagnostic, extract it
445
+ Console . WriteLine ( "'{0}' Logger found" , loggerName ) ;
446
+ templateResources . Add ( loggerResource ) ;
447
+ }
448
+ } ;
410
449
}
411
450
412
451
armTemplate . resources = templateResources . ToArray ( ) ;
413
452
FileWriter fileWriter = new FileWriter ( ) ;
414
453
fileWriter . WriteJSONToFile ( armTemplate , @fileFolder + Path . DirectorySeparatorChar + apimname + "-loggers.json" ) ;
415
454
}
416
455
417
- private async void GenerateNamedValuesTemplate ( string resourceGroup , string apimname , string fileFolder , string singleApiName )
456
+ private async void GenerateNamedValuesTemplate ( string resourceGroup , string apimname , string fileFolder , string singleApiName , List < PolicyTemplateResource > policyResources , List < DiagnosticTemplateResource > diagnosticResources )
418
457
{
419
458
Console . WriteLine ( "------------------------------------------" ) ;
420
459
Console . WriteLine ( "Getting named values from service" ) ;
0 commit comments