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

Commit d6d4f02

Browse files
authored
creator init refactoring (move logic to extractor, connect DI) (#698)
* parameterize backend proxy settings * add documentation on new field * remove unused DefaultValue * refactor creator init (move logic to executor) * rollback backend proxy parameterization in creator PR * rollback local debug * fix build * fix build error * fix NRE * fix naming of template builder parameterization methods
1 parent 2156609 commit d6d4f02

File tree

82 files changed

+1756
-1124
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+1756
-1124
lines changed

src/ArmTemplates/Commands/Applications/CreateApplicationCommand.cs

Lines changed: 21 additions & 202 deletions
Large diffs are not rendered by default.

src/ArmTemplates/Commands/Executors/CreatorExecutor.cs

Lines changed: 274 additions & 2 deletions
Large diffs are not rendered by default.

src/ArmTemplates/Common/Constants/GlobalConstants.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants
77
{
88
public static class GlobalConstants
99
{
10-
public static string CommandStartDateTime = "";
1110
public const string AppShortName = "apimtemplate";
1211
public const string AppLongName = "API Management DevOps Toolkit";
1312
public const string AppDescription = "API Management DevOps Toolkit is a tool to create API Management definitions from files and to extract existing API Management APIs to files.";

src/ArmTemplates/Common/FileHandlers/FileReader.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@
99
using System.Net.Http;
1010
using System.Threading.Tasks;
1111
using YamlDotNet.Serialization;
12-
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Creator.Models;
1312
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Commands.Configurations;
1413
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Extensions;
14+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Creator.Models.Parameters;
1515

1616
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.FileHandlers
1717
{
1818
public class FileReader
1919
{
20-
public async Task<CreatorConfig> ConvertConfigYAMLToCreatorConfigAsync(string configFileLocation)
20+
public async Task<CreatorParameters> ConvertConfigYAMLToCreatorConfigAsync(string configFileLocation)
2121
{
2222
// determine whether file location is local file path or remote url and convert appropriately
2323
Uri uriResult;
@@ -38,7 +38,7 @@ public async Task<CreatorConfig> ConvertConfigYAMLToCreatorConfigAsync(string co
3838
StringWriter writer = new StringWriter();
3939
jsonSerializer.Serialize(writer, deserializedYaml);
4040
string jsonText = writer.ToString();
41-
CreatorConfig yamlObject = jsonText.Deserialize<CreatorConfig>();
41+
CreatorParameters yamlObject = jsonText.Deserialize<CreatorParameters>();
4242
return yamlObject;
4343
}
4444
}
@@ -60,7 +60,7 @@ public async Task<CreatorConfig> ConvertConfigYAMLToCreatorConfigAsync(string co
6060
jsonSerializer.Serialize(writer, deserializedYaml);
6161
string jsonText = writer.ToString();
6262
// deserialize CreatorConfig from json string
63-
CreatorConfig yamlObject = jsonText.Deserialize<CreatorConfig>();
63+
CreatorParameters yamlObject = jsonText.Deserialize<CreatorParameters>();
6464
return yamlObject;
6565
}
6666
}

src/ArmTemplates/Common/Templates/Abstractions/TemplateParameterProperties.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates
88
public class TemplateParameterProperties
99
{
1010
public string Type { get; set; }
11+
1112
public TemplateParameterMetadata Metadata { get; set; }
13+
1214
public string[] AllowedValues { get; set; }
13-
public string DefaultValue { get; set; }
15+
1416
public string Value { get; set; }
1517

1618
public TemplateParameterProperties()

src/ArmTemplates/Common/Templates/Builders/Abstractions/ITemplateBuilder.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ public Template<TTemplateResources> Build<TTemplateResources>()
3232

3333
TemplateBuilder AddPolicyProperties(ExtractorParameters extractorParameters);
3434

35-
TemplateBuilder AddParameterizeServiceUrlProperty(ExtractorParameters extractorParameters);
35+
TemplateBuilder AddParameterizedServiceUrlProperty(ExtractorParameters extractorParameters);
3636

37-
TemplateBuilder AddParameterizeApiLoggerIdProperty(ExtractorParameters extractorParameters);
37+
TemplateBuilder AddParameterizedApiLoggerIdProperty(ExtractorParameters extractorParameters);
3838

39-
TemplateBuilder AddParameterizeBackendProperty(ExtractorParameters extractorParameters);
39+
TemplateBuilder AddParameterizedBackendSettings(ExtractorParameters extractorParameters);
4040

41-
TemplateBuilder AddParameterizeLogResourceIdProperty(ExtractorParameters extractorParameters);
41+
TemplateBuilder AddParameterizedLogResourceIdProperty(ExtractorParameters extractorParameters);
4242
}
4343
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// --------------------------------------------------------------------------
2+
// Copyright (c) Microsoft Corporation. All rights reserved.
3+
// Licensed under the MIT License.
4+
// --------------------------------------------------------------------------
5+
6+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
7+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Abstractions;
8+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Builders.Abstractions;
9+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Extractor.Models;
10+
11+
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Builders
12+
{
13+
public partial class TemplateBuilder : ITemplateBuilder
14+
{
15+
public TemplateBuilder AddParameterizedBackendSettings(ExtractorParameters extractorParameters)
16+
{
17+
if (extractorParameters.ParameterizeBackend)
18+
{
19+
TemplateParameterProperties extractBackendParametersProperties = new TemplateParameterProperties()
20+
{
21+
Type = "object"
22+
};
23+
this.template.Parameters.Add(ParameterNames.BackendSettings, extractBackendParametersProperties);
24+
}
25+
26+
return this;
27+
}
28+
}
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// --------------------------------------------------------------------------
2+
// Copyright (c) Microsoft Corporation. All rights reserved.
3+
// Licensed under the MIT License.
4+
// --------------------------------------------------------------------------
5+
6+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
7+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Abstractions;
8+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Builders.Abstractions;
9+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Extractor.Models;
10+
11+
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Builders
12+
{
13+
public partial class TemplateBuilder : ITemplateBuilder
14+
{
15+
public TemplateBuilder AddParameterizedLogResourceIdProperty(ExtractorParameters extractorParameters)
16+
{
17+
if (extractorParameters.ParameterizeLogResourceId)
18+
{
19+
TemplateParameterProperties loggerResourceIdParameterProperties = new TemplateParameterProperties()
20+
{
21+
Type = "object"
22+
};
23+
this.template.Parameters.Add(ParameterNames.LoggerResourceId, loggerResourceIdParameterProperties);
24+
}
25+
26+
return this;
27+
}
28+
}
29+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// --------------------------------------------------------------------------
2+
// Copyright (c) Microsoft Corporation. All rights reserved.
3+
// Licensed under the MIT License.
4+
// --------------------------------------------------------------------------
5+
6+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Constants;
7+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Abstractions;
8+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Builders.Abstractions;
9+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Extractor.Models;
10+
11+
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Builders
12+
{
13+
public partial class TemplateBuilder : ITemplateBuilder
14+
{
15+
public TemplateBuilder AddParameterizeNamedValueParameters(ExtractorParameters extractorParameters)
16+
{
17+
if (extractorParameters.ParameterizeNamedValue)
18+
{
19+
TemplateParameterProperties namedValueParameterProperties = new TemplateParameterProperties()
20+
{
21+
Type = "object"
22+
};
23+
this.template.Parameters.Add(ParameterNames.NamedValues, namedValueParameterProperties);
24+
}
25+
26+
return this;
27+
}
28+
29+
public TemplateBuilder AddParameterizeNamedValuesKeyVaultSecretParameters(ExtractorParameters extractorParameters)
30+
{
31+
if (extractorParameters.ParamNamedValuesKeyVaultSecrets)
32+
{
33+
TemplateParameterProperties keyVaultNamedValueParameterProperties = new TemplateParameterProperties()
34+
{
35+
Type = "object"
36+
};
37+
this.template.Parameters.Add(ParameterNames.NamedValueKeyVaultSecrets, keyVaultNamedValueParameterProperties);
38+
}
39+
40+
return this;
41+
}
42+
}
43+
}

src/ArmTemplates/Common/Templates/Builders/TemplateBuilder.cs

Lines changed: 13 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common.Templates.Builders
1313
{
14-
public class TemplateBuilder : ITemplateBuilder
14+
public partial class TemplateBuilder : ITemplateBuilder
1515
{
1616
Template template;
1717

@@ -21,6 +21,13 @@ public class TemplateBuilder : ITemplateBuilder
2121
/// <inheritdoc/>
2222
public Template<TTemplateResources> Build<TTemplateResources>()
2323
where TTemplateResources : ITemplateResources, new()
24+
{
25+
return this.Build<TTemplateResources>(new());
26+
}
27+
28+
/// <inheritdoc/>
29+
public Template<TTemplateResources> Build<TTemplateResources>(TTemplateResources templateResources)
30+
where TTemplateResources : ITemplateResources, new()
2431
{
2532
// left Template.NotGeneric variant for backward compatibility
2633
// for refactored code please use Template.Generic and use explicit TTemplateResources type
@@ -30,7 +37,7 @@ public Template<TTemplateResources> Build<TTemplateResources>()
3037
genericTemplate.ContentVersion = this.template.ContentVersion;
3138
genericTemplate.Parameters = this.template.Parameters;
3239
genericTemplate.Variables = this.template.Variables;
33-
genericTemplate.TypedResources = new TTemplateResources(); // creating empty resources
40+
genericTemplate.TypedResources = templateResources;
3441
genericTemplate.Outputs = this.template.Outputs;
3542

3643
return genericTemplate;
@@ -52,8 +59,8 @@ public TemplateBuilder GenerateTemplateWithApimServiceNameProperty()
5259
public TemplateBuilder GenerateTemplateWithPresetProperties(ExtractorParameters extractorParameters)
5360
=> this.GenerateTemplateWithApimServiceNameProperty()
5461
.AddPolicyProperties(extractorParameters)
55-
.AddParameterizeServiceUrlProperty(extractorParameters)
56-
.AddParameterizeApiLoggerIdProperty(extractorParameters);
62+
.AddParameterizedServiceUrlProperty(extractorParameters)
63+
.AddParameterizedApiLoggerIdProperty(extractorParameters);
5764

5865
public TemplateBuilder GenerateEmptyTemplate()
5966
{
@@ -95,7 +102,7 @@ public TemplateBuilder AddPolicyProperties(ExtractorParameters extractorParamete
95102
return this;
96103
}
97104

98-
public TemplateBuilder AddParameterizeServiceUrlProperty(ExtractorParameters extractorParameters)
105+
public TemplateBuilder AddParameterizedServiceUrlProperty(ExtractorParameters extractorParameters)
99106
{
100107
if (extractorParameters.ParameterizeServiceUrl || extractorParameters.ServiceUrlParameters != null && extractorParameters.ServiceUrlParameters.Length > 0)
101108
{
@@ -109,7 +116,7 @@ public TemplateBuilder AddParameterizeServiceUrlProperty(ExtractorParameters ext
109116
return this;
110117
}
111118

112-
public TemplateBuilder AddParameterizeApiLoggerIdProperty(ExtractorParameters extractorParameters)
119+
public TemplateBuilder AddParameterizedApiLoggerIdProperty(ExtractorParameters extractorParameters)
113120
{
114121
if (extractorParameters.ParameterizeApiLoggerId)
115122
{
@@ -122,61 +129,5 @@ public TemplateBuilder AddParameterizeApiLoggerIdProperty(ExtractorParameters ex
122129

123130
return this;
124131
}
125-
126-
public TemplateBuilder AddParameterizeNamedValueParameters(ExtractorParameters extractorParameters)
127-
{
128-
if (extractorParameters.ParameterizeNamedValue)
129-
{
130-
TemplateParameterProperties namedValueParameterProperties = new TemplateParameterProperties()
131-
{
132-
Type = "object"
133-
};
134-
this.template.Parameters.Add(ParameterNames.NamedValues, namedValueParameterProperties);
135-
}
136-
137-
return this;
138-
}
139-
140-
public TemplateBuilder AddParameterizeNamedValuesKeyVaultSecretParameters(ExtractorParameters extractorParameters)
141-
{
142-
if (extractorParameters.ParamNamedValuesKeyVaultSecrets)
143-
{
144-
TemplateParameterProperties keyVaultNamedValueParameterProperties = new TemplateParameterProperties()
145-
{
146-
Type = "object"
147-
};
148-
this.template.Parameters.Add(ParameterNames.NamedValueKeyVaultSecrets, keyVaultNamedValueParameterProperties);
149-
}
150-
151-
return this;
152-
}
153-
154-
public TemplateBuilder AddParameterizeLogResourceIdProperty(ExtractorParameters extractorParameters)
155-
{
156-
if (extractorParameters.ParameterizeLogResourceId)
157-
{
158-
TemplateParameterProperties loggerResourceIdParameterProperties = new TemplateParameterProperties()
159-
{
160-
Type = "object"
161-
};
162-
this.template.Parameters.Add(ParameterNames.LoggerResourceId, loggerResourceIdParameterProperties);
163-
}
164-
165-
return this;
166-
}
167-
168-
public TemplateBuilder AddParameterizeBackendProperty(ExtractorParameters extractorParameters)
169-
{
170-
if (extractorParameters.ParameterizeBackend)
171-
{
172-
TemplateParameterProperties extractBackendParametersProperties = new TemplateParameterProperties()
173-
{
174-
Type = "object"
175-
};
176-
this.template.Parameters.Add(ParameterNames.BackendSettings, extractBackendParametersProperties);
177-
}
178-
179-
return this;
180-
}
181132
}
182133
}

0 commit comments

Comments
 (0)