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

Commit 6b8e789

Browse files
committed
add service policy to creator config and resource type const
1 parent e52cf96 commit 6b8e789

File tree

6 files changed

+36
-1
lines changed

6 files changed

+36
-1
lines changed

src/APIM_ARMTemplate/apimtemplate/Commands/Create.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ public CreateCommand()
5050
MasterTemplateCreator masterTemplateCreator = new MasterTemplateCreator();
5151

5252
// create templates from provided configuration
53+
Console.WriteLine("Creating global service policy template");
54+
Console.WriteLine("------------------------------------------");
55+
Template globalServicePolicyTemplate = creatorConfig.policy != null ? policyTemplateCreator.CreateGlobalServicePolicyTemplateResource(creatorConfig.policy) : null;
5356
Console.WriteLine("Creating API version set template");
5457
Console.WriteLine("------------------------------------------");
5558
Template apiVersionSetsTemplate = creatorConfig.apiVersionSets != null ? apiVersionSetTemplateCreator.CreateAPIVersionSetTemplate(creatorConfig) : null;

src/APIM_ARMTemplate/apimtemplate/Common/Constants/ResourceTypeConstants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ internal static class ResourceTypeConstants
1313
public const string APISchema = "Microsoft.ApiManagement/service/apis/schemas";
1414
public const string AuthorizationServer = "Microsoft.ApiManagement/service/authorizationServers";
1515
public const string Backend = "Microsoft.ApiManagement/service/backends";
16+
public const string GlobalServicePolicy = "Microsoft.ApiManagement/service/policy";
1617
public const string Logger = "Microsoft.ApiManagement/service/loggers";
1718
public const string ProductAPI = "Microsoft.ApiManagement/service/products/apis";
1819
public const string Product = "Microsoft.ApiManagement/service/products";
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<policies>
2+
<inbound />
3+
<backend>
4+
<forward-request />
5+
</backend>
6+
<outbound />
7+
<on-error />
8+
</policies>

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public class CreatorConfig
1212
{
1313
public string version { get; set; }
1414
public string apimServiceName { get; set; }
15+
// policy file location (local or url)
16+
public string policy { get; set; }
1517
public List<APIVersionSetConfig> apiVersionSets { get; set; }
1618
public List<APIConfig> apis { get; set; }
1719
public List<ProductConfig> products { get; set; }

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,27 @@ public PolicyTemplateCreator(FileReader fileReader)
1414
this.fileReader = fileReader;
1515
}
1616

17+
public PolicyTemplateResource CreateGlobalServicePolicyTemplateResource(string globalServicePolicy)
18+
{
19+
Uri uriResult;
20+
bool isUrl = Uri.TryCreate(globalServicePolicy, UriKind.Absolute, out uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
21+
// create policy resource with properties
22+
PolicyTemplateResource policyTemplateResource = new PolicyTemplateResource()
23+
{
24+
name = $"[concat(parameters('ApimServiceName'), '/policy')]",
25+
type = ResourceTypeConstants.GlobalServicePolicy,
26+
apiVersion = GlobalConstants.APIVersion,
27+
properties = new PolicyTemplateProperties()
28+
{
29+
// if policy is a url inline the url, if it is a local file inline the file contents
30+
format = isUrl ? "rawxml-link" : "rawxml",
31+
value = isUrl ? globalServicePolicy : this.fileReader.RetrieveLocalFileContents(globalServicePolicy)
32+
},
33+
dependsOn = new string[] { }
34+
};
35+
return policyTemplateResource;
36+
}
37+
1738
public PolicyTemplateResource CreateAPIPolicyTemplateResource(APIConfig api, string[] dependsOn)
1839
{
1940
Uri uriResult;

src/APIM_ARMTemplate/apimtemplate/Properties/launchSettings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"profiles": {
33
"apimtemplate": {
44
"commandName": "Project",
5-
"commandLineArgs": "extract --sourceApimName lucas-create-push --destinationApimName lucas-extract-push --resourceGroup LucasHuetHudsonInternal --fileFolder C:\\Users\\lucashh\\Desktop\\Projects\\APIM-ARM\\GeneratedTemplates\\Extractor\\Full --linkedTemplatesBaseUrl https://lucasapimstorage.blob.core.windows.net/linked-templates --linkedTemplatesUrlQueryString ?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-12-24T23:12:53Z&st=2019-09-09T14:12:53Z&spr=https&sig=uFGlpJEYPH81OQVzKb7q9nLq0Xt%2Bu35UTqpATIZo6uc%3D"
5+
"commandLineArgs": "create --configFile C:\\Users\\lucashh\\Desktop\\Projects\\APIM-ARM\\azure-api-management-devops-example\\src\\APIM_ARMTemplate\\apimtemplate\\Creator\\ExampleFiles\\YAMLConfigs\\validTesting.yml"
66
}
77
}
88
}

0 commit comments

Comments
 (0)