@@ -35,21 +35,21 @@ public Template CreateLinkedMasterTemplate(CreatorConfig creatorConfig,
35
35
if ( globalServicePolicyTemplate != null )
36
36
{
37
37
string globalServicePolicyUri = GenerateLinkedTemplateUri ( creatorConfig , fileNames . globalServicePolicy ) ;
38
- resources . Add ( this . CreateLinkedMasterTemplateResource ( "globalServicePolicyTemplate" , globalServicePolicyUri , new string [ ] { } ) ) ;
38
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( "globalServicePolicyTemplate" , globalServicePolicyUri , new string [ ] { } , null , false ) ) ;
39
39
}
40
40
41
41
// apiVersionSet
42
42
if ( apiVersionSetTemplate != null )
43
43
{
44
44
string apiVersionSetUri = GenerateLinkedTemplateUri ( creatorConfig , fileNames . apiVersionSets ) ;
45
- resources . Add ( this . CreateLinkedMasterTemplateResource ( "versionSetTemplate" , apiVersionSetUri , new string [ ] { } ) ) ;
45
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( "versionSetTemplate" , apiVersionSetUri , new string [ ] { } , null , false ) ) ;
46
46
}
47
47
48
48
// product
49
49
if ( productsTemplate != null )
50
50
{
51
51
string productsUri = GenerateLinkedTemplateUri ( creatorConfig , fileNames . products ) ;
52
- resources . Add ( this . CreateLinkedMasterTemplateResource ( "productsTemplate" , productsUri , new string [ ] { } ) ) ;
52
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( "productsTemplate" , productsUri , new string [ ] { } , null , false ) ) ;
53
53
}
54
54
55
55
// productApi
@@ -58,42 +58,42 @@ public Template CreateLinkedMasterTemplate(CreatorConfig creatorConfig,
58
58
// depends on all products and APIs
59
59
string [ ] dependsOn = CreateProductAPIResourceDependencies ( productsTemplate , apiInformation , fileNameGenerator ) ;
60
60
string productAPIsUri = GenerateLinkedTemplateUri ( creatorConfig , fileNames . productAPIs ) ;
61
- resources . Add ( this . CreateLinkedMasterTemplateResource ( "productAPIsTemplate" , productAPIsUri , dependsOn ) ) ;
61
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( "productAPIsTemplate" , productAPIsUri , dependsOn , null , false ) ) ;
62
62
}
63
63
64
64
// property
65
65
if ( propertyTemplate != null )
66
66
{
67
67
string propertyUri = GenerateLinkedTemplateUri ( creatorConfig , fileNames . namedValues ) ;
68
- resources . Add ( this . CreateLinkedMasterTemplateResource ( "propertyTemplate" , propertyUri , new string [ ] { } ) ) ;
68
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( "propertyTemplate" , propertyUri , new string [ ] { } , null , false ) ) ;
69
69
}
70
70
71
71
// logger
72
72
if ( loggersTemplate != null )
73
73
{
74
74
string loggersUri = GenerateLinkedTemplateUri ( creatorConfig , fileNames . loggers ) ;
75
- resources . Add ( this . CreateLinkedMasterTemplateResource ( "loggersTemplate" , loggersUri , new string [ ] { } ) ) ;
75
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( "loggersTemplate" , loggersUri , new string [ ] { } , null , false ) ) ;
76
76
}
77
77
78
78
// backend
79
79
if ( backendsTemplate != null )
80
80
{
81
81
string backendsUri = GenerateLinkedTemplateUri ( creatorConfig , fileNames . backends ) ;
82
- resources . Add ( this . CreateLinkedMasterTemplateResource ( "backendsTemplate" , backendsUri , new string [ ] { } ) ) ;
82
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( "backendsTemplate" , backendsUri , new string [ ] { } , null , false ) ) ;
83
83
}
84
84
85
85
// authorizationServer
86
86
if ( authorizationServersTemplate != null )
87
87
{
88
88
string authorizationServersUri = GenerateLinkedTemplateUri ( creatorConfig , fileNames . authorizationServers ) ;
89
- resources . Add ( this . CreateLinkedMasterTemplateResource ( "authorizationServersTemplate" , authorizationServersUri , new string [ ] { } ) ) ;
89
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( "authorizationServersTemplate" , authorizationServersUri , new string [ ] { } , null , false ) ) ;
90
90
}
91
91
92
92
// tag
93
93
if ( tagTemplate != null )
94
94
{
95
95
string tagUri = GenerateLinkedTemplateUri ( creatorConfig , fileNames . tags ) ;
96
- resources . Add ( this . CreateLinkedMasterTemplateResource ( "tagTemplate" , tagUri , new string [ ] { } ) ) ;
96
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( "tagTemplate" , tagUri , new string [ ] { } , null , false ) ) ;
97
97
}
98
98
99
99
string previousAPIName = null ;
@@ -110,12 +110,12 @@ public Template CreateLinkedMasterTemplate(CreatorConfig creatorConfig,
110
110
string initialAPIFileName = fileNameGenerator . GenerateCreatorAPIFileName ( apiInfo . name , apiInfo . isSplit , true ) ;
111
111
string initialAPIUri = GenerateLinkedTemplateUri ( creatorConfig , initialAPIFileName ) ;
112
112
string [ ] initialAPIDependsOn = CreateAPIResourceDependencies ( globalServicePolicyTemplate , apiVersionSetTemplate , productsTemplate , loggersTemplate , backendsTemplate , authorizationServersTemplate , tagTemplate , apiInfo , previousAPIName ) ;
113
- resources . Add ( this . CreateLinkedMasterTemplateResource ( initialAPIDeploymentResourceName , initialAPIUri , initialAPIDependsOn ) ) ;
113
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( initialAPIDeploymentResourceName , initialAPIUri , initialAPIDependsOn , apiInfo . name , apiInfo . isServiceUrlParameterize ) ) ;
114
114
115
115
string subsequentAPIFileName = fileNameGenerator . GenerateCreatorAPIFileName ( apiInfo . name , apiInfo . isSplit , false ) ;
116
116
string subsequentAPIUri = GenerateLinkedTemplateUri ( creatorConfig , subsequentAPIFileName ) ;
117
117
string [ ] subsequentAPIDependsOn = new string [ ] { $ "[resourceId('Microsoft.Resources/deployments', '{ initialAPIDeploymentResourceName } ')]" } ;
118
- resources . Add ( this . CreateLinkedMasterTemplateResource ( subsequentAPIDeploymentResourceName , subsequentAPIUri , subsequentAPIDependsOn ) ) ;
118
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( subsequentAPIDeploymentResourceName , subsequentAPIUri , subsequentAPIDependsOn , apiInfo . name , apiInfo . isServiceUrlParameterize ) ) ;
119
119
120
120
// Set previous API name for dependency chain
121
121
previousAPIName = subsequentAPIDeploymentResourceName ;
@@ -129,7 +129,7 @@ public Template CreateLinkedMasterTemplate(CreatorConfig creatorConfig,
129
129
string unifiedAPIFileName = fileNameGenerator . GenerateCreatorAPIFileName ( apiInfo . name , apiInfo . isSplit , true ) ;
130
130
string unifiedAPIUri = GenerateLinkedTemplateUri ( creatorConfig , unifiedAPIFileName ) ;
131
131
string [ ] unifiedAPIDependsOn = CreateAPIResourceDependencies ( globalServicePolicyTemplate , apiVersionSetTemplate , productsTemplate , loggersTemplate , backendsTemplate , authorizationServersTemplate , tagTemplate , apiInfo , previousAPIName ) ;
132
- resources . Add ( this . CreateLinkedMasterTemplateResource ( unifiedAPIDeploymentResourceName , unifiedAPIUri , unifiedAPIDependsOn ) ) ;
132
+ resources . Add ( this . CreateLinkedMasterTemplateResource ( unifiedAPIDeploymentResourceName , unifiedAPIUri , unifiedAPIDependsOn , apiInfo . name , apiInfo . isServiceUrlParameterize ) ) ;
133
133
134
134
// Set previous API name for dependency chain
135
135
previousAPIName = subsequentAPIDeploymentResourceName ;
@@ -204,7 +204,7 @@ public string[] CreateProductAPIResourceDependencies(Template productsTemplate,
204
204
return apiProductDependsOn . ToArray ( ) ;
205
205
}
206
206
207
- public MasterTemplateResource CreateLinkedMasterTemplateResource ( string name , string uriLink , string [ ] dependsOn )
207
+ public MasterTemplateResource CreateLinkedMasterTemplateResource ( string name , string uriLink , string [ ] dependsOn , string apiName , bool isServiceUrlParameterizeInApi )
208
208
{
209
209
// create deployment resource with provided arguments
210
210
MasterTemplateResource masterTemplateResource = new MasterTemplateResource ( )
@@ -227,6 +227,16 @@ public MasterTemplateResource CreateLinkedMasterTemplateResource(string name, st
227
227
} ,
228
228
dependsOn = dependsOn
229
229
} ;
230
+
231
+ if ( name . IndexOf ( "APITemplate" ) > 0 && isServiceUrlParameterizeInApi )
232
+ {
233
+ TemplateParameterProperties serviceUrlParamProperty = new TemplateParameterProperties ( )
234
+ {
235
+ value = $ "[parameters('{ apiName } -ServiceUrl')]"
236
+ } ;
237
+ masterTemplateResource . properties . parameters . Add ( apiName + "-ServiceUrl" , serviceUrlParamProperty ) ;
238
+ }
239
+
230
240
return masterTemplateResource ;
231
241
}
232
242
@@ -269,6 +279,24 @@ public Dictionary<string, TemplateParameterProperties> CreateMasterTemplateParam
269
279
parameters . Add ( ParameterNames . LinkedTemplatesUrlQueryString , linkedTemplatesUrlQueryStringProperties ) ;
270
280
}
271
281
}
282
+
283
+ // add serviceUrl parameter for linked option
284
+ if ( creatorConfig . serviceUrlParameters != null && creatorConfig . serviceUrlParameters . Count > 0 )
285
+ {
286
+ foreach ( ServiceUrlProperty serviceUrlProperty in creatorConfig . serviceUrlParameters )
287
+ {
288
+ TemplateParameterProperties serviceUrlParamProperty = new TemplateParameterProperties ( )
289
+ {
290
+ metadata = new TemplateParameterMetadata ( )
291
+ {
292
+ description = "ServiceUrl parameter for API: " + serviceUrlProperty . apiName
293
+ } ,
294
+ type = "string"
295
+ } ;
296
+ parameters . Add ( serviceUrlProperty . apiName + "-ServiceUrl" , serviceUrlParamProperty ) ;
297
+ }
298
+ }
299
+
272
300
return parameters ;
273
301
}
274
302
@@ -388,6 +416,7 @@ public class LinkedMasterTemplateAPIInformation
388
416
public bool dependsOnBackends { get ; set ; }
389
417
public bool dependsOnAuthorizationServers { get ; set ; }
390
418
public bool dependsOnTags { get ; set ; }
419
+ public bool isServiceUrlParameterize { get ; set ; }
391
420
}
392
421
393
422
}
0 commit comments