@@ -109,7 +109,7 @@ public Template CreateLinkedMasterTemplate(CreatorConfig creatorConfig,
109
109
110
110
string initialAPIFileName = fileNameGenerator . GenerateCreatorAPIFileName ( apiInfo . name , apiInfo . isSplit , true ) ;
111
111
string initialAPIUri = GenerateLinkedTemplateUri ( creatorConfig , initialAPIFileName ) ;
112
- string [ ] initialAPIDependsOn = CreateAPIResourceDependencies ( globalServicePolicyTemplate , apiVersionSetTemplate , productsTemplate , loggersTemplate , backendsTemplate , authorizationServersTemplate , tagTemplate , apiInfo , previousAPIName ) ;
112
+ string [ ] initialAPIDependsOn = CreateAPIResourceDependencies ( creatorConfig , globalServicePolicyTemplate , apiVersionSetTemplate , productsTemplate , loggersTemplate , backendsTemplate , authorizationServersTemplate , tagTemplate , apiInfo , previousAPIName ) ;
113
113
resources . Add ( this . CreateLinkedMasterTemplateResource ( initialAPIDeploymentResourceName , initialAPIUri , initialAPIDependsOn , originalAPIName , apiInfo . isServiceUrlParameterize ) ) ;
114
114
115
115
string subsequentAPIFileName = fileNameGenerator . GenerateCreatorAPIFileName ( apiInfo . name , apiInfo . isSplit , false ) ;
@@ -128,7 +128,7 @@ public Template CreateLinkedMasterTemplate(CreatorConfig creatorConfig,
128
128
string unifiedAPIDeploymentResourceName = $ "{ originalAPIName } -APITemplate";
129
129
string unifiedAPIFileName = fileNameGenerator . GenerateCreatorAPIFileName ( apiInfo . name , apiInfo . isSplit , true ) ;
130
130
string unifiedAPIUri = GenerateLinkedTemplateUri ( creatorConfig , unifiedAPIFileName ) ;
131
- string [ ] unifiedAPIDependsOn = CreateAPIResourceDependencies ( globalServicePolicyTemplate , apiVersionSetTemplate , productsTemplate , loggersTemplate , backendsTemplate , authorizationServersTemplate , tagTemplate , apiInfo , previousAPIName ) ;
131
+ string [ ] unifiedAPIDependsOn = CreateAPIResourceDependencies ( creatorConfig , globalServicePolicyTemplate , apiVersionSetTemplate , productsTemplate , loggersTemplate , backendsTemplate , authorizationServersTemplate , tagTemplate , apiInfo , previousAPIName ) ;
132
132
resources . Add ( this . CreateLinkedMasterTemplateResource ( unifiedAPIDeploymentResourceName , unifiedAPIUri , unifiedAPIDependsOn , originalAPIName , apiInfo . isServiceUrlParameterize ) ) ;
133
133
134
134
// Set previous API name for dependency chain
@@ -140,7 +140,9 @@ public Template CreateLinkedMasterTemplate(CreatorConfig creatorConfig,
140
140
return masterTemplate ;
141
141
}
142
142
143
- public string [ ] CreateAPIResourceDependencies ( Template globalServicePolicyTemplate ,
143
+ public string [ ] CreateAPIResourceDependencies (
144
+ CreatorConfig creatorConfig ,
145
+ Template globalServicePolicyTemplate ,
144
146
Template apiVersionSetTemplate ,
145
147
Template productsTemplate ,
146
148
Template loggersTemplate ,
@@ -179,6 +181,10 @@ public string[] CreateAPIResourceDependencies(Template globalServicePolicyTempla
179
181
{
180
182
apiDependsOn . Add ( "[resourceId('Microsoft.Resources/deployments', 'tagTemplate')]" ) ;
181
183
}
184
+ if ( apiInfo . dependsOnVersion != null )
185
+ {
186
+ apiDependsOn . Add ( $ "[resourceId('Microsoft.Resources/deployments', '{ apiInfo . dependsOnVersion } -SubsequentAPITemplate')]") ;
187
+ }
182
188
if ( previousAPI != null && apiInfo . dependsOnTags == true )
183
189
{
184
190
apiDependsOn . Add ( $ "[resourceId('Microsoft.Resources/deployments', '{ previousAPI } ')]") ;
@@ -240,6 +246,32 @@ public MasterTemplateResource CreateLinkedMasterTemplateResource(string name, st
240
246
return masterTemplateResource ;
241
247
}
242
248
249
+ public string GetDependsOnPreviousApiVersion ( APIConfig api , IDictionary < string , string [ ] > apiVersions )
250
+ {
251
+ if ( api ? . apiVersionSetId == null )
252
+ return null ;
253
+
254
+ // get all apis associated with the same versionSet
255
+ // versions must be deployed in sequence and thus
256
+ // each api must depend on the previous version.
257
+
258
+ var versions = apiVersions . ContainsKey ( api . apiVersionSetId )
259
+ ? apiVersions [ api . apiVersionSetId ]
260
+ : null
261
+ ;
262
+
263
+ var index = Array . IndexOf ( versions , api . name ) ;
264
+ var previous = index > 0
265
+ ? ( int ? ) index - 1
266
+ : null
267
+ ;
268
+
269
+ return previous . HasValue
270
+ ? versions [ previous . Value ]
271
+ : null
272
+ ;
273
+ }
274
+
243
275
public Dictionary < string , TemplateParameterProperties > CreateMasterTemplateParameters ( CreatorConfig creatorConfig )
244
276
{
245
277
// used to create the parameter metatadata, etc (not value) for use in file with resources
@@ -417,6 +449,7 @@ public class LinkedMasterTemplateAPIInformation
417
449
public bool dependsOnAuthorizationServers { get ; set ; }
418
450
public bool dependsOnTags { get ; set ; }
419
451
public bool isServiceUrlParameterize { get ; set ; }
452
+ public string dependsOnVersion { get ; set ; }
420
453
}
421
454
422
455
}
0 commit comments