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

Commit 67c8b20

Browse files
f-alizadaFarhad Alizada
andauthored
Add groupsTemplate to the master template (#701)
Co-authored-by: Farhad Alizada <falizada@microsoft.com>
1 parent 265a2bf commit 67c8b20

File tree

4 files changed

+53
-14
lines changed

4 files changed

+53
-14
lines changed

src/ArmTemplates/Commands/Executors/ExtractorExecutor.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,8 @@ public async Task<Template<MasterTemplateResources>> GenerateMasterTemplateAsync
437437
BackendTemplateResources backendsTemplateResources = null,
438438
AuthorizationServerTemplateResources authorizationServersTemplateResources = null,
439439
NamedValuesResources namedValuesTemplateResources = null,
440-
TagTemplateResources tagTemplateResources = null)
440+
TagTemplateResources tagTemplateResources = null,
441+
GroupTemplateResources groupTemplateResources = null)
441442
{
442443
if (string.IsNullOrEmpty(this.extractorParameters.LinkedTemplatesBaseUrl))
443444
{
@@ -450,7 +451,8 @@ public async Task<Template<MasterTemplateResources>> GenerateMasterTemplateAsync
450451
var masterTemplate = this.masterTemplateExtractor.GenerateLinkedMasterTemplate(
451452
this.extractorParameters, apiTemplateResources, policyTemplateResources, apiVersionSetTemplateResources,
452453
productsTemplateResources, productApisTemplateResources, apiTagsTemplateResources, loggersTemplateResources,
453-
backendsTemplateResources, authorizationServersTemplateResources, namedValuesTemplateResources, tagTemplateResources);
454+
backendsTemplateResources, authorizationServersTemplateResources, namedValuesTemplateResources, tagTemplateResources,
455+
groupTemplateResources);
454456

455457
if (masterTemplate?.HasResources() == true)
456458
{
@@ -872,7 +874,7 @@ async Task GenerateTemplates(
872874
var loggerTemplate = await this.GenerateLoggerTemplateAsync(apisToExtract, apiTemplate.TypedResources.GetAllPolicies(), baseFilesGenerationDirectory);
873875
var namedValueTemplate = await this.GenerateNamedValuesTemplateAsync(singleApiName, apiTemplate.TypedResources.GetAllPolicies(), loggerTemplate.TypedResources.Loggers, baseFilesGenerationDirectory);
874876
var backendTemplate = await this.GenerateBackendTemplateAsync(singleApiName, apiTemplate.TypedResources.GetAllPolicies(), namedValueTemplate.TypedResources.NamedValues, baseFilesGenerationDirectory);
875-
await this.GenerateGroupsTemplateAsync(baseFilesGenerationDirectory);
877+
var groupTemplate = await this.GenerateGroupsTemplateAsync(baseFilesGenerationDirectory);
876878
await this.GenerateGatewayTemplateAsync(singleApiName, baseFilesGenerationDirectory);
877879
await this.GenerateParametersTemplateAsync(apisToExtract, loggerTemplate.TypedResources, backendTemplate.TypedResources, namedValueTemplate.TypedResources, baseFilesGenerationDirectory);
878880

@@ -888,7 +890,8 @@ await this.GenerateMasterTemplateAsync(
888890
backendsTemplateResources: backendTemplate.TypedResources,
889891
authorizationServersTemplateResources: authorizationServerTemplate.TypedResources,
890892
namedValuesTemplateResources: namedValueTemplate.TypedResources,
891-
tagTemplateResources: tagTemplate.TypedResources);
893+
tagTemplateResources: tagTemplate.TypedResources,
894+
groupTemplateResources: groupTemplate.TypedResources);
892895
}
893896

894897

src/ArmTemplates/Extractor/EntityExtractors/Abstractions/IMasterTemplateExtractor.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.ApiVersionSet;
99
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.AuthorizationServer;
1010
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Backend;
11+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Groups;
1112
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Logger;
1213
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Master;
1314
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.NamedValues;
@@ -34,6 +35,7 @@ Template<MasterTemplateResources> GenerateLinkedMasterTemplate(
3435
BackendTemplateResources backendsTemplateResources = null,
3536
AuthorizationServerTemplateResources authorizationServersTemplateResources = null,
3637
NamedValuesResources namedValuesTemplateResources = null,
37-
TagTemplateResources tagTemplateResources = null);
38+
TagTemplateResources tagTemplateResources = null,
39+
GroupTemplateResources groupTemplateResources = null);
3840
}
3941
}

src/ArmTemplates/Extractor/EntityExtractors/MasterTemplateExtractor.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Logger;
2424
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Backend;
2525
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.NamedValues;
26+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Groups;
2627

2728
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Extractor.EntityExtractors
2829
{
@@ -51,7 +52,8 @@ public Template<MasterTemplateResources> GenerateLinkedMasterTemplate(
5152
BackendTemplateResources backendsTemplateResources = null,
5253
AuthorizationServerTemplateResources authorizationServersTemplateResources = null,
5354
NamedValuesResources namedValuesTemplateResources = null,
54-
TagTemplateResources tagTemplateResources = null)
55+
TagTemplateResources tagTemplateResources = null,
56+
GroupTemplateResources groupTemplateResources = null)
5557
{
5658
var masterTemplate = this.templateBuilder
5759
.GenerateEmptyTemplate()
@@ -228,7 +230,18 @@ public Template<MasterTemplateResources> GenerateLinkedMasterTemplate(
228230

229231
masterResources.DeploymentResources.Add(apiTagsDeployment);
230232
}
231-
233+
234+
if (groupTemplateResources?.HasContent() == true)
235+
{
236+
this.logger.LogDebug("Adding groups to master template");
237+
const string GroupsTemplate = "groupsTemplate";
238+
239+
var groupsUri = this.GenerateLinkedTemplateUri(fileNames.Groups, extractorParameters);
240+
var groupsDeployment = CreateLinkedMasterTemplateResource(GroupsTemplate, groupsUri, Array.Empty<string>());
241+
242+
masterResources.DeploymentResources.Add(groupsDeployment);
243+
}
244+
232245
return masterTemplate;
233246
}
234247

tests/ArmTemplates.Tests/Extractor/Scenarios/MasterTemplateExtractorTests.cs

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
1515
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Builders;
1616
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Tags;
17+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Groups;
1718
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Extractor.EntityExtractors;
1819
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Extractor.Models;
1920
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Tests.Extractor.Abstractions;
@@ -62,10 +63,30 @@ public async Task GenerateMasterTemplates_ProperlyLaysTheInformation()
6263
}
6364
};
6465

66+
var groupTemplateResources = new GroupTemplateResources()
67+
{
68+
Groups = new()
69+
{
70+
new GroupTemplateResource()
71+
{
72+
Name = "test-group",
73+
Properties = new() {
74+
DisplayName = "group-display-name",
75+
Description = "group-description",
76+
Type = "group-type",
77+
ExternalId = "group-external-id",
78+
BuiltIn = false
79+
}
80+
}
81+
}
82+
};
83+
84+
6585
// act
6686
var masterTemplate = await extractorExecutor.GenerateMasterTemplateAsync(
6787
currentTestDirectory,
68-
tagTemplateResources: tagTemplateResources);
88+
tagTemplateResources: tagTemplateResources,
89+
groupTemplateResources: groupTemplateResources);
6990

7091
File.Exists(Path.Combine(currentTestDirectory, extractorParameters.FileNames.LinkedMaster)).Should().BeTrue();
7192

@@ -80,13 +101,13 @@ public async Task GenerateMasterTemplates_ProperlyLaysTheInformation()
80101
masterTemplate.Parameters.Should().ContainKey(ParameterNames.NamedValueKeyVaultSecrets);
81102
masterTemplate.Parameters.Should().ContainKey(ParameterNames.BackendSettings);
82103

83-
masterTemplate.TypedResources.DeploymentResources.Should().HaveCount(1);
84-
masterTemplate.Resources.Should().HaveCount(1);
85-
86-
var tagDeployment = masterTemplate.TypedResources.DeploymentResources.First();
104+
masterTemplate.TypedResources.DeploymentResources.Should().HaveCount(2);
105+
masterTemplate.Resources.Should().HaveCount(2);
87106

88-
tagDeployment.Type.Should().Be(ResourceTypeConstants.ArmDeployments);
89-
tagDeployment.Properties.Should().NotBeNull();
107+
foreach(var deploymentResource in masterTemplate.TypedResources.DeploymentResources) {
108+
deploymentResource.Type.Should().Be(ResourceTypeConstants.ArmDeployments);
109+
deploymentResource.Properties.Should().NotBeNull();
110+
}
90111
}
91112
}
92113
}

0 commit comments

Comments
 (0)