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

Commit 31735dc

Browse files
committed
creator - minor refactor and comments
1 parent 3296293 commit 31735dc

13 files changed

+53
-84
lines changed

src/APIM_ARMTemplate/apimtemplate/Commands/Create.cs

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,38 +30,37 @@ public CreateCommand()
3030
{
3131
// required parameters have been supplied
3232

33-
// initialize helper classes
33+
// initialize file helper classes
3434
FileWriter fileWriter = new FileWriter();
3535
FileNameGenerator fileNameGenerator = new FileNameGenerator();
36-
TemplateCreator templateCreator = new TemplateCreator();
37-
APIVersionSetTemplateCreator apiVersionSetTemplateCreator = new APIVersionSetTemplateCreator(templateCreator);
38-
LoggerTemplateCreator loggerTemplateCreator = new LoggerTemplateCreator(templateCreator);
39-
ProductTemplateCreator productTemplateCreator = new ProductTemplateCreator(templateCreator);
40-
BackendTemplateCreator backendTemplateCreator = new BackendTemplateCreator(templateCreator);
41-
AuthorizationServerTemplateCreator authorizationServerTemplateCreator = new AuthorizationServerTemplateCreator(templateCreator);
36+
CreatorFileNames creatorFileNames = fileNameGenerator.GenerateCreatorLinkedFileNames(creatorConfig);
37+
38+
// initialize template creator classes
39+
APIVersionSetTemplateCreator apiVersionSetTemplateCreator = new APIVersionSetTemplateCreator();
40+
LoggerTemplateCreator loggerTemplateCreator = new LoggerTemplateCreator();
41+
ProductTemplateCreator productTemplateCreator = new ProductTemplateCreator();
42+
BackendTemplateCreator backendTemplateCreator = new BackendTemplateCreator();
43+
AuthorizationServerTemplateCreator authorizationServerTemplateCreator = new AuthorizationServerTemplateCreator();
4244
ProductAPITemplateCreator productAPITemplateCreator = new ProductAPITemplateCreator();
4345
PolicyTemplateCreator policyTemplateCreator = new PolicyTemplateCreator(fileReader);
4446
DiagnosticTemplateCreator diagnosticTemplateCreator = new DiagnosticTemplateCreator();
45-
APITemplateCreator apiTemplateCreator = new APITemplateCreator(fileReader, templateCreator, policyTemplateCreator, productAPITemplateCreator, diagnosticTemplateCreator);
46-
MasterTemplateCreator masterTemplateCreator = new MasterTemplateCreator(templateCreator);
47-
CreatorFileNames creatorFileNames = fileNameGenerator.GenerateCreatorLinkedFileNames(creatorConfig);
47+
APITemplateCreator apiTemplateCreator = new APITemplateCreator(fileReader, policyTemplateCreator, productAPITemplateCreator, diagnosticTemplateCreator);
48+
MasterTemplateCreator masterTemplateCreator = new MasterTemplateCreator();
4849

4950
// create templates from provided configuration
5051
Template apiVersionSetsTemplate = creatorConfig.apiVersionSets != null ? apiVersionSetTemplateCreator.CreateAPIVersionSetTemplate(creatorConfig) : null;
5152
Template productsTemplate = creatorConfig.products != null ? productTemplateCreator.CreateProductTemplate(creatorConfig) : null;
5253
Template loggersTemplate = creatorConfig.loggers != null ? loggerTemplateCreator.CreateLoggerTemplate(creatorConfig) : null;
5354
Template backendsTemplate = creatorConfig.backends != null ? backendTemplateCreator.CreateBackendTemplate(creatorConfig) : null;
5455
Template authorizationServersTemplate = creatorConfig.authorizationServers != null ? authorizationServerTemplateCreator.CreateAuthorizationServerTemplate(creatorConfig) : null;
56+
5557
// store name and whether the api will depend on the version set template each api necessary to build linked templates
5658
List<LinkedMasterTemplateAPIInformation> apiInformation = new List<LinkedMasterTemplateAPIInformation>();
57-
// create parameters file
58-
Template masterTemplateParameters = masterTemplateCreator.CreateMasterTemplateParameterValues(creatorConfig);
59-
6059
List<Template> apiTemplates = new List<Template>();
6160
foreach (APIConfig api in creatorConfig.apis)
6261
{
63-
// create api templates from provided api config. If the api config contains a supplied apiVersion, split the templates into 2 for metadata and swagger content, otherwise create a unified template
64-
List<Template> apiTemplateSet = await apiTemplateCreator.CreateAPITemplates(creatorConfig, api);
62+
// create api templates from provided api config - if the api config contains a supplied apiVersion, split the templates into 2 for metadata and swagger content, otherwise create a unified template
63+
List<Template> apiTemplateSet = await apiTemplateCreator.CreateAPITemplatesAsync(creatorConfig, api);
6564
apiTemplates.AddRange(apiTemplateSet);
6665
// create the relevant info that will be needed to properly link to the api template(s) from the master template
6766
apiInformation.Add(new LinkedMasterTemplateAPIInformation()
@@ -76,6 +75,9 @@ public CreateCommand()
7675
});
7776
}
7877

78+
// create parameters file
79+
Template masterTemplateParameters = masterTemplateCreator.CreateMasterTemplateParameterValues(creatorConfig);
80+
7981
// write templates to outputLocation
8082
if (creatorConfig.linked == true)
8183
{
@@ -111,6 +113,7 @@ public CreateCommand()
111113
{
112114
fileWriter.WriteJSONToFile(authorizationServersTemplate, String.Concat(creatorConfig.outputLocation, creatorFileNames.authorizationServers));
113115
}
116+
114117
// write parameters to outputLocation
115118
fileWriter.WriteJSONToFile(masterTemplateParameters, String.Concat(creatorConfig.outputLocation, creatorConfig.linked == true ? creatorFileNames.linkedParameters : creatorFileNames.unlinkedParameters));
116119
ColoredConsole.WriteLine("Templates written to output location");

src/APIM_ARMTemplate/apimtemplate/Creator/Models/CreatorFileNames.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ public class CreatorFileNames
88
public string loggers { get; set; }
99
public string authorizationServers { get; set; }
1010
public string backends { get; set; }
11+
public string unlinkedParameters { get; set; }
12+
public string linkedParameters { get; set; }
1113
// linked property outputs 1 master template
1214
public string linkedMaster { get; set; }
13-
public string linkedParameters { get; set; }
14-
public string unlinkedParameters { get; set; }
1515
}
1616
}

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,24 @@
77

88
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create
99
{
10-
public class APITemplateCreator
10+
public class APITemplateCreator : TemplateCreator
1111
{
1212
private FileReader fileReader;
13-
private TemplateCreator templateCreator;
1413
private PolicyTemplateCreator policyTemplateCreator;
1514
private ProductAPITemplateCreator productAPITemplateCreator;
1615
private DiagnosticTemplateCreator diagnosticTemplateCreator;
1716

18-
public APITemplateCreator(FileReader fileReader, TemplateCreator templateCreator, PolicyTemplateCreator policyTemplateCreator, ProductAPITemplateCreator productAPITemplateCreator, DiagnosticTemplateCreator diagnosticTemplateCreator)
17+
public APITemplateCreator(FileReader fileReader, PolicyTemplateCreator policyTemplateCreator, ProductAPITemplateCreator productAPITemplateCreator, DiagnosticTemplateCreator diagnosticTemplateCreator)
1918
{
2019
this.fileReader = fileReader;
21-
this.templateCreator = templateCreator;
2220
this.policyTemplateCreator = policyTemplateCreator;
2321
this.productAPITemplateCreator = productAPITemplateCreator;
2422
this.diagnosticTemplateCreator = diagnosticTemplateCreator;
2523
}
2624

27-
public async Task<List<Template>> CreateAPITemplates(CreatorConfig creatorConfig, APIConfig api)
25+
public async Task<List<Template>> CreateAPITemplatesAsync(CreatorConfig creatorConfig, APIConfig api)
2826
{
27+
// determine if api needs to be split into multiple templates
2928
bool isSplit = isSplitAPI(api);
3029

3130
List<Template> apiTemplates = new List<Template>();
@@ -46,7 +45,7 @@ public async Task<List<Template>> CreateAPITemplates(CreatorConfig creatorConfig
4645
public async Task<Template> CreateAPITemplateAsync(CreatorConfig creatorConfig, APIConfig api, bool isSplit, bool isInitial)
4746
{
4847
// create empty template
49-
Template apiTemplate = this.templateCreator.CreateEmptyTemplate();
48+
Template apiTemplate = CreateEmptyTemplate();
5049

5150
// add parameters
5251
apiTemplate.parameters = new Dictionary<string, TemplateParameterProperties>
@@ -97,7 +96,6 @@ public async Task<APITemplateResource> CreateAPITemplateResourceAsync(APIConfig
9796
type = ResourceTypeConstants.API,
9897
apiVersion = GlobalConstants.APIVersion,
9998
properties = new APITemplateProperties(),
100-
// if the template is not linked the depends on for the apiVersionSet needs to be inlined here
10199
dependsOn = new string[] { }
102100
};
103101

@@ -121,6 +119,7 @@ public async Task<APITemplateResource> CreateAPITemplateResourceAsync(APIConfig
121119
// set the version set id
122120
if (api.apiVersionSetId != null)
123121
{
122+
// point to the supplied version set if the apiVersionSetId is provided
124123
apiTemplateResource.properties.apiVersionSetId = $"[resourceId('Microsoft.ApiManagement/service/api-version-sets', parameters('ApimServiceName'), '{api.apiVersionSetId}')]";
125124
}
126125
// set the authorization server id
@@ -137,6 +136,7 @@ public async Task<APITemplateResource> CreateAPITemplateResourceAsync(APIConfig
137136
bool isUrl = Uri.TryCreate(api.openApiSpec, UriKind.Absolute, out uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
138137
// used to escape sequences in local swagger json
139138
object deserializedFileContents = isUrl ? null : JsonConvert.DeserializeObject<object>(this.fileReader.RetrieveLocalFileContents(api.openApiSpec));
139+
// if openApiSpec is a url inline the url, if it is a local file inline the file contents
140140
apiTemplateResource.properties.contentFormat = isUrl ? "swagger-link-json" : "swagger-json";
141141
apiTemplateResource.properties.contentValue = isUrl ? api.openApiSpec : JsonConvert.SerializeObject(deserializedFileContents);
142142
// supplied via optional arguments
@@ -158,6 +158,7 @@ public string[] CreateProtocols(OpenApiDocument doc)
158158

159159
public bool isSplitAPI(APIConfig apiConfig)
160160
{
161+
// the api needs to be split into multiple templates if the user has supplied a version or version set - deploying swagger related properties at the same time as api version related properties fails, so they must be written and deployed separately
161162
return apiConfig.apiVersion != null || apiConfig.apiVersionSetId != null;
162163
}
163164
}

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

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,12 @@
33

44
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create
55
{
6-
public class APIVersionSetTemplateCreator
6+
public class APIVersionSetTemplateCreator : TemplateCreator
77
{
8-
private TemplateCreator templateCreator;
9-
10-
public APIVersionSetTemplateCreator(TemplateCreator templateCreator)
11-
{
12-
this.templateCreator = templateCreator;
13-
}
14-
158
public Template CreateAPIVersionSetTemplate(CreatorConfig creatorConfig)
169
{
1710
// create empty template
18-
Template apiVersionSetTemplate = this.templateCreator.CreateEmptyTemplate();
11+
Template apiVersionSetTemplate = CreateEmptyTemplate();
1912

2013
// add parameters
2114
apiVersionSetTemplate.parameters = new Dictionary<string, TemplateParameterProperties>
@@ -27,6 +20,7 @@ public Template CreateAPIVersionSetTemplate(CreatorConfig creatorConfig)
2720
foreach(APIVersionSetConfig apiVersionSet in creatorConfig.apiVersionSets)
2821
{
2922
// create apiVersionSet resource with properties
23+
// default version set id to version set if id is not provided
3024
string versionSetId = (apiVersionSet != null && apiVersionSet.id != null) ? apiVersionSet.id : "versionset";
3125
APIVersionSetTemplateResource apiVersionSetTemplateResource = new APIVersionSetTemplateResource()
3226
{

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,12 @@
33

44
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create
55
{
6-
public class AuthorizationServerTemplateCreator
6+
public class AuthorizationServerTemplateCreator : TemplateCreator
77
{
8-
private TemplateCreator templateCreator;
9-
10-
public AuthorizationServerTemplateCreator(TemplateCreator templateCreator)
11-
{
12-
this.templateCreator = templateCreator;
13-
}
14-
158
public Template CreateAuthorizationServerTemplate(CreatorConfig creatorConfig)
169
{
1710
// create empty template
18-
Template authorizationTemplate = this.templateCreator.CreateEmptyTemplate();
11+
Template authorizationTemplate = CreateEmptyTemplate();
1912

2013
// add parameters
2114
authorizationTemplate.parameters = new Dictionary<string, TemplateParameterProperties>

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,12 @@
33

44
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create
55
{
6-
public class BackendTemplateCreator
6+
public class BackendTemplateCreator : TemplateCreator
77
{
8-
private TemplateCreator templateCreator;
9-
10-
public BackendTemplateCreator(TemplateCreator templateCreator)
11-
{
12-
this.templateCreator = templateCreator;
13-
}
14-
158
public Template CreateBackendTemplate(CreatorConfig creatorConfig)
169
{
1710
// create empty template
18-
Template backendTemplate = this.templateCreator.CreateEmptyTemplate();
11+
Template backendTemplate = CreateEmptyTemplate();
1912

2013
// add parameters
2114
backendTemplate.parameters = new Dictionary<string, TemplateParameterProperties>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public DiagnosticTemplateResource CreateAPIDiagnosticTemplateResource(APIConfig
2222
},
2323
dependsOn = dependsOn
2424
};
25-
// set the version set id
25+
// reference the provided logger if loggerId is provided
2626
if (api.diagnostic.loggerId != null)
2727
{
2828
diagnosticTemplateResource.properties.loggerId = $"[resourceId('Microsoft.ApiManagement/service/loggers', parameters('ApimServiceName'), '{api.diagnostic.loggerId}')]";

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,12 @@
33

44
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create
55
{
6-
public class LoggerTemplateCreator
6+
public class LoggerTemplateCreator : TemplateCreator
77
{
8-
private TemplateCreator templateCreator;
9-
10-
public LoggerTemplateCreator(TemplateCreator templateCreator)
11-
{
12-
this.templateCreator = templateCreator;
13-
}
14-
158
public Template CreateLoggerTemplate(CreatorConfig creatorConfig)
169
{
1710
// create empty template
18-
Template loggerTemplate = this.templateCreator.CreateEmptyTemplate();
11+
Template loggerTemplate = CreateEmptyTemplate();
1912

2013
// add parameters
2114
loggerTemplate.parameters = new Dictionary<string, TemplateParameterProperties>

0 commit comments

Comments
 (0)