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

Commit b05df4d

Browse files
committed
fix multiple api deployment for unlinked template
1 parent bb42339 commit b05df4d

File tree

4 files changed

+30
-9
lines changed

4 files changed

+30
-9
lines changed

src/APIM_ARMTemplate/apimtemplate/Commands/Create.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,11 @@ public CreateCommand()
9090
fileWriter.WriteJSONToFile(masterTemplateParameters, String.Concat(creatorConfig.outputLocation, "/master.parameters.json"));
9191
} else
9292
{
93-
Template masterTemplate = masterTemplateCreator.CreateUnlinkedMasterTemplate(apiVersionSetTemplate, initialAPITemplate, creatorFileNames);
93+
Template initialMasterTemplate = masterTemplateCreator.CreateInitialUnlinkedMasterTemplate(apiVersionSetTemplate, initialAPITemplate);
94+
Template subsequentMasterTemplate = masterTemplateCreator.CreateSubsequentUnlinkedMasterTemplate(subsequentAPITemplate);
9495
Template masterTemplateParameters = masterTemplateCreator.CreateMasterTemplateParameterValues(creatorConfig);
95-
fileWriter.WriteJSONToFile(masterTemplate, String.Concat(creatorConfig.outputLocation, "/master.template.json"));
96+
fileWriter.WriteJSONToFile(initialMasterTemplate, String.Concat(creatorConfig.outputLocation, "/master1.template.json"));
97+
fileWriter.WriteJSONToFile(subsequentMasterTemplate, String.Concat(creatorConfig.outputLocation, "/master2.template.json"));
9698
fileWriter.WriteJSONToFile(masterTemplateParameters, String.Concat(creatorConfig.outputLocation, "/master.parameters.json"));
9799
}
98100

src/APIM_ARMTemplate/apimtemplate/Creator/ExampleFiles/YAMLConfigs/valid.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
version: 0.0.1 # Required
2-
apimServiceName: LucasLinked2 # Required, must match name of an apim service deployed in the specified resource group
2+
apimServiceName: LucasUnlinked2 # Required, must match name of an apim service deployed in the specified resource group
33
apiVersionSet: # Optional
4-
displayName: myAPIVersionSet
4+
displayName: swaggerPetstoreVersionSet
55
description: a description
66
versioningScheme: Query
77
versionQueryName: versionQuery
@@ -23,5 +23,5 @@ api:
2323
policy: C:\Users\lucashh\Desktop\Projects\APIM-ARM\azure-api-management-devops-example\src\APIM_ARMTemplate\apimtemplate\Creator\ExampleFiles\XMLPolicies\operationRateLimit.xml # Optional, can be url or local file
2424
products: starter, platinum # Optional, adds api to the specified products
2525
outputLocation: C:\Users\lucashh\Desktop\Projects\APIM-ARM\GeneratedTemplates # Required, folder the creator will write the templates to
26-
linked: true # Optional
26+
linked: false # Optional
2727
linkedTemplatesBaseUrl : https://lucasyamlblob.blob.core.windows.net/yaml # Required if 'linked' property is set to true

src/APIM_ARMTemplate/apimtemplate/Creator/TemplateCreators/APITemplateCreator.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,12 @@ public async Task<APITemplateResource> CreateInitialAPITemplateResource(CreatorC
9696
// if the template is not linked the depends on for the apiVersionSet needs to be inlined here
9797
dependsOn = new string[] { }
9898
};
99+
// if there is a linked template and a version set was created, the initial api depends on it
99100
if (creatorConfig.linked == false && creatorConfig.apiVersionSet != null)
100101
{
101102
apiTemplateResource.dependsOn = new string[] { $"[resourceId('Microsoft.ApiManagement/service/api-version-sets', parameters('ApimServiceName'), 'versionset')]" };
102103
}
104+
// set the version set id
103105
if (creatorConfig.apiVersionSet != null)
104106
{
105107
apiTemplateResource.properties.apiVersionSetId = "[resourceId('Microsoft.ApiManagement/service/api-version-sets', parameters('ApimServiceName'), 'versionset')]";

src/APIM_ARMTemplate/apimtemplate/Creator/TemplateCreators/MasterTemplateCreator.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,8 @@ public Template CreateLinkedMasterTemplate(Template apiVersionSetTemplate,
4545
return masterTemplate;
4646
}
4747

48-
public Template CreateUnlinkedMasterTemplate(Template apiVersionSetTemplate,
49-
Template apiTemplate,
50-
CreatorFileNames creatorFileNames)
48+
public Template CreateInitialUnlinkedMasterTemplate(Template apiVersionSetTemplate,
49+
Template initialAPITemplate)
5150
{
5251
// create empty template
5352
Template masterTemplate = this.templateCreator.CreateEmptyTemplate();
@@ -65,7 +64,25 @@ public Template CreateUnlinkedMasterTemplate(Template apiVersionSetTemplate,
6564
}
6665

6766
//api
68-
resources.AddRange(apiTemplate.resources);
67+
resources.AddRange(initialAPITemplate.resources);
68+
69+
masterTemplate.resources = resources.ToArray();
70+
return masterTemplate;
71+
}
72+
73+
public Template CreateSubsequentUnlinkedMasterTemplate(Template subequentAPITemplate)
74+
{
75+
// create empty template
76+
Template masterTemplate = this.templateCreator.CreateEmptyTemplate();
77+
78+
// add parameters
79+
masterTemplate.parameters = this.CreateMasterTemplateParameters(false);
80+
81+
// add all resources directly
82+
List<TemplateResource> resources = new List<TemplateResource>();
83+
84+
//api
85+
resources.AddRange(subequentAPITemplate.resources);
6986

7087
masterTemplate.resources = resources.ToArray();
7188
return masterTemplate;

0 commit comments

Comments
 (0)