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

Commit 745a6df

Browse files
committed
add policyXML base url as a optional CLI arg, write to parameters file
1 parent ce50507 commit 745a6df

File tree

14 files changed

+91
-44
lines changed

14 files changed

+91
-44
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common;
2+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create;
3+
4+
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Test
5+
{
6+
public class ProductTemplateCreatorFactory
7+
{
8+
public static ProductTemplateCreator GenerateProductTemplateCreator()
9+
{
10+
PolicyTemplateCreator policyTemplateCreator = PolicyTemplateCreatorFactory.GeneratePolicyTemplateCreator();
11+
ProductTemplateCreator productTemplateCreator = new ProductTemplateCreator(policyTemplateCreator);
12+
return productTemplateCreator;
13+
}
14+
}
15+
}

src/APIM_ARMTemplate/apimtemplate.test/Creator/TemplateCreatorTests/APITemplateCreatorTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public async void ShouldCreateInitialAPITemplateResourceFromCreatorConfig()
2020
apiVersion = "apiVersion",
2121
apiVersionDescription = "apiVersionDescription",
2222
apiVersionSetId = "apiVersionSetId",
23-
revision = "revision",
24-
revisionDescription = "revisionDescription",
23+
apiRevision = "revision",
24+
apiRevisionDescription = "revisionDescription",
2525
suffix = "suffix",
2626
subscriptionRequired = true,
2727
authenticationSettings = new APITemplateAuthenticationSettings()
@@ -51,8 +51,8 @@ public async void ShouldCreateInitialAPITemplateResourceFromCreatorConfig()
5151
Assert.Equal(api.apiVersion, apiTemplateResource.properties.apiVersion);
5252
Assert.Equal(api.apiVersionDescription, apiTemplateResource.properties.apiVersionDescription);
5353
Assert.Equal($"[resourceId('Microsoft.ApiManagement/service/apiVersionSets', parameters('ApimServiceName'), '{api.apiVersionSetId}')]", apiTemplateResource.properties.apiVersionSetId);
54-
Assert.Equal(api.revision, apiTemplateResource.properties.apiRevision);
55-
Assert.Equal(api.revisionDescription, apiTemplateResource.properties.apiRevisionDescription);
54+
Assert.Equal(api.apiRevision, apiTemplateResource.properties.apiRevision);
55+
Assert.Equal(api.apiRevisionDescription, apiTemplateResource.properties.apiRevisionDescription);
5656
Assert.Equal(api.suffix, apiTemplateResource.properties.path);
5757
Assert.Equal(api.subscriptionRequired, apiTemplateResource.properties.subscriptionRequired);
5858
Assert.Equal(api.authenticationSettings.oAuth2.authorizationServerId, apiTemplateResource.properties.authenticationSettings.oAuth2.authorizationServerId);
@@ -96,8 +96,8 @@ public async void ShouldCreateUnifiedAPITemplateResourceFromCreatorConfig()
9696
apiVersion = "apiVersion",
9797
apiVersionDescription = "apiVersionDescription",
9898
apiVersionSetId = "apiVersionSetId",
99-
revision = "revision",
100-
revisionDescription = "revisionDescription",
99+
apiRevision = "revision",
100+
apiRevisionDescription = "revisionDescription",
101101
suffix = "suffix",
102102
subscriptionRequired = true,
103103
authenticationSettings = new APITemplateAuthenticationSettings()
@@ -127,8 +127,8 @@ public async void ShouldCreateUnifiedAPITemplateResourceFromCreatorConfig()
127127
Assert.Equal(api.apiVersion, apiTemplateResource.properties.apiVersion);
128128
Assert.Equal(api.apiVersionDescription, apiTemplateResource.properties.apiVersionDescription);
129129
Assert.Equal($"[resourceId('Microsoft.ApiManagement/service/apiVersionSets', parameters('ApimServiceName'), '{api.apiVersionSetId}')]", apiTemplateResource.properties.apiVersionSetId);
130-
Assert.Equal(api.revision, apiTemplateResource.properties.apiRevision);
131-
Assert.Equal(api.revisionDescription, apiTemplateResource.properties.apiRevisionDescription);
130+
Assert.Equal(api.apiRevision, apiTemplateResource.properties.apiRevision);
131+
Assert.Equal(api.apiRevisionDescription, apiTemplateResource.properties.apiRevisionDescription);
132132
Assert.Equal(api.suffix, apiTemplateResource.properties.path);
133133
Assert.Equal(api.subscriptionRequired, apiTemplateResource.properties.subscriptionRequired);
134134
Assert.Equal(api.authenticationSettings.oAuth2.authorizationServerId, apiTemplateResource.properties.authenticationSettings.oAuth2.authorizationServerId);

src/APIM_ARMTemplate/apimtemplate.test/Creator/TemplateCreatorTests/ProductTemplateCreatorTests.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,18 @@ public class ProductTemplateCreatorTests
1111
public void ShouldCreateProductFromCreatorConfig()
1212
{
1313
// arrange
14-
ProductTemplateCreator productTemplateCreator = new ProductTemplateCreator();
15-
CreatorConfig creatorConfig = new CreatorConfig() { products = new List<ProductsTemplateProperties>() };
16-
ProductsTemplateProperties product = new ProductsTemplateProperties()
14+
ProductTemplateCreator productTemplateCreator = ProductTemplateCreatorFactory.GenerateProductTemplateCreator();
15+
CreatorConfig creatorConfig = new CreatorConfig() { products = new List<ProductConfig>() };
16+
ProductConfig product = new ProductConfig()
1717
{
1818
displayName = "displayName",
1919
description = "description",
2020
terms = "terms",
2121
subscriptionRequired = true,
2222
approvalRequired = true,
2323
subscriptionsLimit = 1,
24-
state = "state"
24+
state = "state",
25+
policy = "<inbound></inbound>"
2526
};
2627
creatorConfig.products.Add(product);
2728

src/APIM_ARMTemplate/apimtemplate/Commands/Extract.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public ExtractCommand()
1919
var resourceGroupName = this.Option("--resourceGroup <resourceGroup>", "Resource Group name", CommandOptionType.SingleValue);
2020
var fileFolderName = this.Option("--fileFolder <filefolder>", "ARM Template files folder", CommandOptionType.SingleValue);
2121
var apiName = this.Option("--apiName <apiName>", "API name", CommandOptionType.SingleValue);
22-
var linkedBaseUrlName = this.Option("--linkedBaseUrl <apiName>", "Creates a master template with links", CommandOptionType.SingleValue);
22+
var linkedBaseUrlName = this.Option("--linkedBaseUrl <linkedBaseUrl>", "Creates a master template with links", CommandOptionType.SingleValue);
23+
var policyXMLBaseUrlName = this.Option("--policyXMLBaseUrl <policyXMLBaseUrl>", "Writes policies to local XML files that require deployment to remote folder", CommandOptionType.SingleValue);
2324

2425
this.HelpOption();
2526

@@ -35,7 +36,8 @@ public ExtractCommand()
3536
string sourceApim = sourceApimName.Values[0].ToString();
3637
string destinationApim = destinationAPIManagementName.Values[0].ToString();
3738
string fileFolder = fileFolderName.Values[0].ToString();
38-
string linkedBaseUrl = linkedBaseUrlName.Values[0].ToString();
39+
string linkedBaseUrl = linkedBaseUrlName.HasValue() ? linkedBaseUrlName.Value().ToString() : null;
40+
string policyXMLBaseUrl = policyXMLBaseUrlName.HasValue() ? policyXMLBaseUrlName.Value().ToString() : null;
3941
string singleApiName = null;
4042

4143
if (apiName.Values.Count > 0)
@@ -71,18 +73,18 @@ public ExtractCommand()
7173
MasterTemplateExtractor masterTemplateExtractor = new MasterTemplateExtractor();
7274

7375
// extract templates from apim service
74-
Template apiTemplate = await apiExtractor.GenerateAPIsARMTemplate(sourceApim, resourceGroup, fileFolder, singleApiName);
76+
Template apiTemplate = await apiExtractor.GenerateAPIsARMTemplate(sourceApim, resourceGroup, fileFolder, singleApiName, policyXMLBaseUrl);
7577
List<TemplateResource> apiTemplateResources = apiTemplate.resources.ToList();
76-
Template apiVersionSetTemplate = await apiVersionSetExtractor.GenerateAPIVersionSetsARMTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources);
77-
Template authorizationServerTemplate = await authorizationServerExtractor.GenerateAuthorizationServersARMTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources);
78-
Template loggerTemplate = await loggerExtractor.GenerateLoggerTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources);
79-
Template productTemplate = await productExtractor.GenerateProductsARMTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources);
80-
Template namedValueTemplate = await propertyExtractor.GenerateNamedValuesTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources);
78+
Template apiVersionSetTemplate = await apiVersionSetExtractor.GenerateAPIVersionSetsARMTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
79+
Template authorizationServerTemplate = await authorizationServerExtractor.GenerateAuthorizationServersARMTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
80+
Template loggerTemplate = await loggerExtractor.GenerateLoggerTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
81+
Template productTemplate = await productExtractor.GenerateProductsARMTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
82+
Template namedValueTemplate = await propertyExtractor.GenerateNamedValuesTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
8183
List<TemplateResource> namedValueResources = namedValueTemplate.resources.ToList();
82-
Template backendTemplate = await backendExtractor.GenerateBackendsARMTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources, namedValueResources);
84+
Template backendTemplate = await backendExtractor.GenerateBackendsARMTemplate(sourceApim, resourceGroup, singleApiName, apiTemplateResources, namedValueResources, policyXMLBaseUrl);
8385

8486
// create parameters file
85-
Template templateParameters = masterTemplateExtractor.CreateMasterTemplateParameterValues(destinationApim, linkedBaseUrl);
87+
Template templateParameters = masterTemplateExtractor.CreateMasterTemplateParameterValues(destinationApim, linkedBaseUrl, policyXMLBaseUrl);
8688

8789
// write templates to output file location
8890
string apiFileName = fileNameGenerator.GenerateExtractorAPIFileName(singleApiName, sourceApim);
@@ -97,7 +99,7 @@ public ExtractCommand()
9799
if (linkedBaseUrl != null)
98100
{
99101
// create a master template that links to all other templates
100-
Template masterTemplate = masterTemplateExtractor.GenerateLinkedMasterTemplate(apiTemplate, apiVersionSetTemplate, productTemplate, loggerTemplate, backendTemplate, authorizationServerTemplate, namedValueTemplate, fileNames, apiFileName);
102+
Template masterTemplate = masterTemplateExtractor.GenerateLinkedMasterTemplate(apiTemplate, apiVersionSetTemplate, productTemplate, loggerTemplate, backendTemplate, authorizationServerTemplate, namedValueTemplate, fileNames, apiFileName, policyXMLBaseUrl);
101103
fileWriter.WriteJSONToFile(masterTemplate, String.Concat(@fileFolder, fileNames.linkedMaster));
102104
}
103105

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/APIExtractor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,12 @@ public async Task<string> GetAPISchemaDetails(string ApiManagementName, string R
110110
return await CallApiManagement(azToken, requestUrl);
111111
}
112112

113-
public async Task<Template> GenerateAPIsARMTemplate(string apimname, string resourceGroup, string fileFolder, string singleApiName)
113+
public async Task<Template> GenerateAPIsARMTemplate(string apimname, string resourceGroup, string fileFolder, string singleApiName, string policyXMLBaseUrl)
114114
{
115115
// pull all apis from service
116116
string apis = await GetAPIs(apimname, resourceGroup);
117117
// initialize arm template
118-
Template armTemplate = GenerateEmptyTemplateWithParameters();
118+
Template armTemplate = GenerateEmptyTemplateWithParameters(policyXMLBaseUrl);
119119

120120
JObject oApi = JObject.Parse(apis);
121121
oApi = FormatoApi(singleApiName, oApi);

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/APIVersionSetExtractor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ public async Task<string> GetAPIVersionSetDetails(string ApiManagementName, stri
3030
return await CallApiManagement(azToken, requestUrl);
3131
}
3232

33-
public async Task<Template> GenerateAPIVersionSetsARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources)
33+
public async Task<Template> GenerateAPIVersionSetsARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources, string policyXMLBaseUrl)
3434
{
3535
Console.WriteLine("------------------------------------------");
3636
Console.WriteLine("Extracting API version sets from service");
37-
Template armTemplate = GenerateEmptyTemplateWithParameters();
37+
Template armTemplate = GenerateEmptyTemplateWithParameters(policyXMLBaseUrl);
3838

3939
// isolate apis in the case of a single api extraction
4040
var apiResources = apiTemplateResources.Where(resource => resource.type == ResourceTypeConstants.API);

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/AuthorizationServerExtractor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ public async Task<string> GetAuthorizationServer(string ApiManagementName, strin
3030
return await CallApiManagement(azToken, requestUrl);
3131
}
3232

33-
public async Task<Template> GenerateAuthorizationServersARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources)
33+
public async Task<Template> GenerateAuthorizationServersARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources, string policyXMLBaseUrl)
3434
{
3535
Console.WriteLine("------------------------------------------");
3636
Console.WriteLine("Extracting authorization servers from service");
37-
Template armTemplate = GenerateEmptyTemplateWithParameters();
37+
Template armTemplate = GenerateEmptyTemplateWithParameters(policyXMLBaseUrl);
3838

3939
List<TemplateResource> templateResources = new List<TemplateResource>();
4040

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/BackendExtractor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ public async Task<string> GetBackend(string ApiManagementName, string ResourceGr
3030
return await CallApiManagement(azToken, requestUrl);
3131
}
3232

33-
public async Task<Template> GenerateBackendsARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources, List<TemplateResource> propertyResources)
33+
public async Task<Template> GenerateBackendsARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources, List<TemplateResource> propertyResources, string policyXMLBaseUrl)
3434
{
3535
Console.WriteLine("------------------------------------------");
3636
Console.WriteLine("Extracting backends from service");
37-
Template armTemplate = GenerateEmptyTemplateWithParameters();
37+
Template armTemplate = GenerateEmptyTemplateWithParameters(policyXMLBaseUrl);
3838

3939
List<TemplateResource> templateResources = new List<TemplateResource>();
4040

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/EntityExtractor.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,18 @@ public Template GenerateEmptyTemplate()
3535
return armTemplate;
3636
}
3737

38-
public Template GenerateEmptyTemplateWithParameters()
38+
public Template GenerateEmptyTemplateWithParameters(string policyXMLBaseUrl)
3939
{
4040
Template armTemplate = GenerateEmptyTemplate();
4141
armTemplate.parameters = new Dictionary<string, TemplateParameterProperties> { { "ApimServiceName", new TemplateParameterProperties() { type = "string" } } };
42+
if (policyXMLBaseUrl != null)
43+
{
44+
TemplateParameterProperties policyTemplateBaseUrlParameterProperties = new TemplateParameterProperties()
45+
{
46+
type = "string"
47+
};
48+
armTemplate.parameters.Add("PolicyXMLBaseUrl", policyTemplateBaseUrlParameterProperties);
49+
}
4250
return armTemplate;
4351
}
4452
}

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/LoggerExtractor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ public async Task<string> GetLogger(string ApiManagementName, string ResourceGro
3030
return await CallApiManagement(azToken, requestUrl);
3131
}
3232

33-
public async Task<Template> GenerateLoggerTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources)
33+
public async Task<Template> GenerateLoggerTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources, string policyXMLBaseUrl)
3434
{
3535
Console.WriteLine("------------------------------------------");
3636
Console.WriteLine("Extracting loggers from service");
37-
Template armTemplate = GenerateEmptyTemplateWithParameters();
37+
Template armTemplate = GenerateEmptyTemplateWithParameters(policyXMLBaseUrl);
3838

3939
// isolate product api associations in the case of a single api extraction
4040
var diagnosticResources = apiTemplateResources.Where(resource => resource.type == ResourceTypeConstants.APIDiagnostic);

0 commit comments

Comments
 (0)