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

Commit cc0e595

Browse files
Supports naming product resources (#386)
* Fix #385 - product resources should have a name instead of using display name. * Added `name` property for ProductConfiguration. Co-authored-by: RupengLiu <rliu1211@terpmail.umd.edu>
1 parent 08e9a6c commit cc0e595

File tree

4 files changed

+14
-7
lines changed

4 files changed

+14
-7
lines changed

src/APIM_ARMTemplate/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ _Additional properties found in [ApiVersionSetContractProperties](https://docs.m
8989

9090
| Property | Type | Required | Value |
9191
|-----------------------|-----------------------|-----------------------|--------------------------------------------------|
92+
| name | string | No | Name of the product resource. If omitted, the display name is used. |
9293
| policy | string | No | Location of the Product policy XML file. Can be url or local file. |
9394

9495
_Additional properties found in [ProductContractProperties](https://docs.microsoft.com/en-us/azure/templates/microsoft.apimanagement/2019-01-01/service/products#ProductContractProperties)_
@@ -206,7 +207,8 @@ apis:
206207
bytes: 512
207208
enableHttpCorrelationHeaders: true
208209
products:
209-
- displayName: platinum
210+
- name: platinum
211+
displayName: Platinum
210212
description: a test product
211213
terms: some terms
212214
subscriptionRequired: true

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ public void ShouldCreateProductFromCreatorConfig()
1515
CreatorConfig creatorConfig = new CreatorConfig() { products = new List<ProductConfig>() };
1616
ProductConfig product = new ProductConfig()
1717
{
18-
displayName = "displayName",
18+
name = "name",
19+
displayName = "display name",
1920
description = "description",
2021
terms = "terms",
2122
subscriptionRequired = true,
@@ -30,7 +31,7 @@ public void ShouldCreateProductFromCreatorConfig()
3031
ProductsTemplateResource productsTemplateResource = (ProductsTemplateResource)productTemplate.resources[0];
3132

3233
// assert
33-
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{product.displayName}')]", productsTemplateResource.name);
34+
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{product.name}')]", productsTemplateResource.name);
3435
Assert.Equal(product.displayName, productsTemplateResource.properties.displayName);
3536
Assert.Equal(product.description, productsTemplateResource.properties.description);
3637
Assert.Equal(product.terms, productsTemplateResource.properties.terms);
@@ -63,7 +64,7 @@ public void ShouldNotCreateApprovalRequiredOrSubscriptionsLimitIfSubscriptionReq
6364
ProductsTemplateResource productsTemplateResource = (ProductsTemplateResource)productTemplate.resources[0];
6465

6566
// assert
66-
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{product.displayName}')]", productsTemplateResource.name);
67+
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{product.name}')]", productsTemplateResource.name);
6768
Assert.Equal(product.displayName, productsTemplateResource.properties.displayName);
6869
Assert.Equal(product.description, productsTemplateResource.properties.description);
6970
Assert.Equal(product.terms, productsTemplateResource.properties.terms);

src/APIM_ARMTemplate/apimtemplate/Common/TemplateModels/ProductsTemplateResource.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public class ProductsTemplateResource : TemplateResource
88

99
public class ProductsTemplateProperties
1010
{
11+
public string name { get; set; }
1112
public string description { get; set; }
1213
public string terms { get; set; }
1314
public bool subscriptionRequired { get; set; }

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class ProductTemplateCreator : TemplateCreator
88
private PolicyTemplateCreator policyTemplateCreator;
99
private ProductGroupTemplateCreator productGroupTemplateCreator;
1010

11-
public ProductTemplateCreator(PolicyTemplateCreator policyTemplateCreator,ProductGroupTemplateCreator productGroupTemplateCreator)
11+
public ProductTemplateCreator(PolicyTemplateCreator policyTemplateCreator, ProductGroupTemplateCreator productGroupTemplateCreator)
1212
{
1313
this.policyTemplateCreator = policyTemplateCreator;
1414
this.productGroupTemplateCreator = productGroupTemplateCreator;
@@ -28,10 +28,13 @@ public Template CreateProductTemplate(CreatorConfig creatorConfig)
2828
List<TemplateResource> resources = new List<TemplateResource>();
2929
foreach (ProductConfig product in creatorConfig.products)
3030
{
31+
if (string.IsNullOrEmpty(product.name))
32+
product.name = product.displayName;
33+
3134
// create product resource with properties
3235
ProductsTemplateResource productsTemplateResource = new ProductsTemplateResource()
3336
{
34-
name = $"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{product.displayName}')]",
37+
name = $"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{product.name}')]",
3538
type = ResourceTypeConstants.Product,
3639
apiVersion = GlobalConstants.APIVersion,
3740
properties = new ProductsTemplateProperties()
@@ -57,7 +60,7 @@ public Template CreateProductTemplate(CreatorConfig creatorConfig)
5760
}
5861

5962
// create product group resources if provided
60-
if(product.groups != null)
63+
if (product.groups != null)
6164
{
6265
string[] dependsOn = new string[] { $"[resourceId('Microsoft.ApiManagement/service/products', parameters('{ParameterNames.ApimServiceName}'), '{product.displayName}')]" };
6366
List<ProductGroupsValue> productGroups = this.productGroupTemplateCreator.CreateProductGroupTemplateResources(product, dependsOn);

0 commit comments

Comments
 (0)