@@ -17,13 +17,14 @@ public Template GenerateLinkedMasterTemplate(Template apiTemplate,
17
17
Template namedValuesTemplate ,
18
18
FileNames fileNames ,
19
19
string apiFileName ,
20
+ string linkedTemplatesUrlQueryString ,
20
21
string policyXMLBaseUrl )
21
22
{
22
23
// create empty template
23
24
Template masterTemplate = GenerateEmptyTemplate ( ) ;
24
25
25
26
// add parameters
26
- masterTemplate . parameters = this . CreateMasterTemplateParameters ( true , policyXMLBaseUrl ) ;
27
+ masterTemplate . parameters = this . CreateMasterTemplateParameters ( true , linkedTemplatesUrlQueryString , policyXMLBaseUrl ) ;
27
28
28
29
// add deployment resources that links to all resource files
29
30
List < TemplateResource > resources = new List < TemplateResource > ( ) ;
@@ -34,49 +35,49 @@ public Template GenerateLinkedMasterTemplate(Template apiTemplate,
34
35
string [ ] dependsOnNamedValues = new string [ ] { $ "[resourceId('Microsoft.Resources/deployments', '{ namedValueDeploymentResourceName } ')]" } ;
35
36
if ( namedValuesTemplate != null )
36
37
{
37
- string namedValuesUri = $ "[concat(parameters('LinkedTemplatesBaseUrl'), ' { fileNames . namedValues } ')]" ;
38
+ string namedValuesUri = GenerateLinkedTemplateUri ( linkedTemplatesUrlQueryString , fileNames . namedValues ) ;
38
39
resources . Add ( this . CreateLinkedMasterTemplateResource ( namedValueDeploymentResourceName , namedValuesUri , new string [ ] { } ) ) ;
39
40
}
40
41
41
42
// apiVersionSet
42
43
if ( apiVersionSetTemplate != null )
43
44
{
44
- string apiVersionSetUri = $ "[concat(parameters('LinkedTemplatesBaseUrl'), ' { fileNames . apiVersionSets } ')]" ;
45
+ string apiVersionSetUri = GenerateLinkedTemplateUri ( linkedTemplatesUrlQueryString , fileNames . apiVersionSets ) ;
45
46
resources . Add ( this . CreateLinkedMasterTemplateResource ( "versionSetTemplate" , apiVersionSetUri , dependsOnNamedValues ) ) ;
46
47
}
47
48
48
49
// product
49
50
if ( productsTemplate != null )
50
51
{
51
- string productsUri = $ "[concat(parameters('LinkedTemplatesBaseUrl'), ' { fileNames . products } ')]" ;
52
+ string productsUri = GenerateLinkedTemplateUri ( linkedTemplatesUrlQueryString , fileNames . products ) ;
52
53
resources . Add ( this . CreateLinkedMasterTemplateResource ( "productsTemplate" , productsUri , dependsOnNamedValues ) ) ;
53
54
}
54
55
55
56
// logger
56
57
if ( loggersTemplate != null )
57
58
{
58
- string loggersUri = $ "[concat(parameters('LinkedTemplatesBaseUrl'), ' { fileNames . loggers } ')]" ;
59
+ string loggersUri = GenerateLinkedTemplateUri ( linkedTemplatesUrlQueryString , fileNames . loggers ) ;
59
60
resources . Add ( this . CreateLinkedMasterTemplateResource ( "loggersTemplate" , loggersUri , dependsOnNamedValues ) ) ;
60
61
}
61
62
62
63
// backend
63
64
if ( backendsTemplate != null )
64
65
{
65
- string backendsUri = $ "[concat(parameters('LinkedTemplatesBaseUrl'), ' { fileNames . backends } ')]" ;
66
+ string backendsUri = GenerateLinkedTemplateUri ( linkedTemplatesUrlQueryString , fileNames . backends ) ;
66
67
resources . Add ( this . CreateLinkedMasterTemplateResource ( "backendsTemplate" , backendsUri , dependsOnNamedValues ) ) ;
67
68
}
68
69
69
70
// authorizationServer
70
71
if ( authorizationServersTemplate != null )
71
72
{
72
- string authorizationServersUri = $ "[concat(parameters('LinkedTemplatesBaseUrl'), ' { fileNames . authorizationServers } ')]" ;
73
+ string authorizationServersUri = GenerateLinkedTemplateUri ( linkedTemplatesUrlQueryString , fileNames . authorizationServers ) ;
73
74
resources . Add ( this . CreateLinkedMasterTemplateResource ( "authorizationServersTemplate" , authorizationServersUri , dependsOnNamedValues ) ) ;
74
75
}
75
76
76
77
// api
77
78
if ( apiTemplate != null )
78
79
{
79
- string apisUri = $ "[concat(parameters('LinkedTemplatesBaseUrl'), ' { apiFileName } ')]" ;
80
+ string apisUri = GenerateLinkedTemplateUri ( linkedTemplatesUrlQueryString , apiFileName ) ;
80
81
resources . Add ( this . CreateLinkedMasterTemplateResource ( "apisTemplate" , apisUri , GenerateAPIResourceDependencies ( apiTemplate , apiVersionSetTemplate , productsTemplate , loggersTemplate , backendsTemplate , authorizationServersTemplate , namedValueDeploymentResourceName ) ) ) ;
81
82
}
82
83
@@ -132,7 +133,7 @@ public MasterTemplateResource CreateLinkedMasterTemplateResource(string name, st
132
133
return masterTemplateResource ;
133
134
}
134
135
135
- public Dictionary < string , TemplateParameterProperties > CreateMasterTemplateParameters ( bool linked , string policyXMLBaseUrl )
136
+ public Dictionary < string , TemplateParameterProperties > CreateMasterTemplateParameters ( bool linked , string linkedTemplatesUrlQueryString , string policyXMLBaseUrl )
136
137
{
137
138
// used to create the parameter metatadata, etc (not value) for use in file with resources
138
139
// add parameters with metatdata properties
@@ -158,6 +159,19 @@ public Dictionary<string, TemplateParameterProperties> CreateMasterTemplateParam
158
159
type = "string"
159
160
} ;
160
161
parameters . Add ( "LinkedTemplatesBaseUrl" , linkedTemplatesBaseUrlProperties ) ;
162
+ // add linkedTemplatesUrlQueryString parameter if provided and if the templates are linked
163
+ if ( linkedTemplatesUrlQueryString != null )
164
+ {
165
+ TemplateParameterProperties linkedTemplatesUrlQueryStringProperties = new TemplateParameterProperties ( )
166
+ {
167
+ metadata = new TemplateParameterMetadata ( )
168
+ {
169
+ description = "Query string for the URL of the repository"
170
+ } ,
171
+ type = "string"
172
+ } ;
173
+ parameters . Add ( "LinkedTemplatesUrlQueryString" , linkedTemplatesUrlQueryStringProperties ) ;
174
+ }
161
175
}
162
176
if ( policyXMLBaseUrl != null )
163
177
{
@@ -174,7 +188,7 @@ public Dictionary<string, TemplateParameterProperties> CreateMasterTemplateParam
174
188
return parameters ;
175
189
}
176
190
177
- public Template CreateMasterTemplateParameterValues ( string apimServiceName , string linkedTemplatesBaseUrl , string policyXMLBaseUrl )
191
+ public Template CreateMasterTemplateParameterValues ( string apimServiceName , string linkedTemplatesBaseUrl , string linkedTemplatesUrlQueryString , string policyXMLBaseUrl )
178
192
{
179
193
// used to create the parameter values for use in parameters file
180
194
// create empty template
@@ -194,6 +208,15 @@ public Template CreateMasterTemplateParameterValues(string apimServiceName, stri
194
208
value = linkedTemplatesBaseUrl
195
209
} ;
196
210
parameters . Add ( "LinkedTemplatesBaseUrl" , linkedTemplatesBaseUrlProperties ) ;
211
+ // add linkedTemplatesUrlQueryString parameter if provided and if the user has provided a linkedTemplatesBaseUrl
212
+ if ( linkedTemplatesUrlQueryString != null )
213
+ {
214
+ TemplateParameterProperties linkedTemplatesUrlQueryStringProperties = new TemplateParameterProperties ( )
215
+ {
216
+ value = linkedTemplatesUrlQueryString
217
+ } ;
218
+ parameters . Add ( "LinkedTemplatesUrlQueryString" , linkedTemplatesUrlQueryStringProperties ) ;
219
+ }
197
220
}
198
221
if ( policyXMLBaseUrl != null )
199
222
{
@@ -206,5 +229,10 @@ public Template CreateMasterTemplateParameterValues(string apimServiceName, stri
206
229
masterTemplate . parameters = parameters ;
207
230
return masterTemplate ;
208
231
}
232
+
233
+ public string GenerateLinkedTemplateUri ( string linkedTemplatesUrlQueryString , string fileName )
234
+ {
235
+ return linkedTemplatesUrlQueryString != null ? $ "[concat(parameters('LinkedTemplatesBaseUrl'), '{ fileName } ', parameters('LinkedTemplatesUrlQueryString'))]" : $ "[concat(parameters('LinkedTemplatesBaseUrl'), '{ fileName } ')]";
236
+ }
209
237
}
210
238
}
0 commit comments