From e49a3ef2e3897805b9e13d4d7cfa374d7041ed31 Mon Sep 17 00:00:00 2001 From: Hemal Shah Date: Wed, 4 Jun 2025 20:41:39 +0100 Subject: [PATCH 1/2] feat(api-management): Update api operation to include optional caching properties --- src/lib/azure/services/api-management/main.ts | 65 ++++++++++++------- .../azure/services/api-management/types.ts | 11 +++- .../services/api-management-manager.test.ts | 20 +----- 3 files changed, 51 insertions(+), 45 deletions(-) diff --git a/src/lib/azure/services/api-management/main.ts b/src/lib/azure/services/api-management/main.ts index 52a03f0a..370366d8 100644 --- a/src/lib/azure/services/api-management/main.ts +++ b/src/lib/azure/services/api-management/main.ts @@ -272,30 +272,47 @@ export class AzureApiManagementManager { ) createAzureTfOutput(`${id}-${operation.displayName}-${operation.method}-apimOperationId`, scope, apimOperation.id) - if (props.policyXmlContent) { - const apimOperationPolicy = new ApiManagementApiOperationPolicy( - scope, - `${id}-apim-api-operation-policy-${operation.displayName}-${operation.method}`, - { - apiManagementName: apiManagementApi.apiManagementName, - resourceGroupName: apiManagementApi.resourceGroupName, - apiName: apiManagementApi.name, - operationId: apimOperation.operationId, - xmlContent: props.policyXmlContent, - } - ) - - createAzureTfOutput( - `${id}-${operation.displayName}-${operation.method}-apimOperationPolicyFriendlyUniqueId`, - scope, - apimOperationPolicy.friendlyUniqueId - ) - createAzureTfOutput( - `${id}-${operation.displayName}-${operation.method}-apimOperationPolicyId`, - scope, - apimOperationPolicy.id - ) - } + const policyXmlContent = ` + + + ${operation.cacheInboundPolicy ?? ''} + ${props.commonInboundPolicyXml ?? ''} + + + + + + + ${operation.cacheOutboundPolicy ?? ''} + ${props.commonOutboundPolicyXml ?? ''} + + + + + ` + + const apimOperationPolicy = new ApiManagementApiOperationPolicy( + scope, + `${id}-apim-api-operation-policy-${operation.displayName}-${operation.method}`, + { + apiManagementName: apiManagementApi.apiManagementName, + resourceGroupName: apiManagementApi.resourceGroupName, + apiName: apiManagementApi.name, + operationId: apimOperation.operationId, + xmlContent: policyXmlContent, + } + ) + + createAzureTfOutput( + `${id}-${operation.displayName}-${operation.method}-apimOperationPolicyFriendlyUniqueId`, + scope, + apimOperationPolicy.friendlyUniqueId + ) + createAzureTfOutput( + `${id}-${operation.displayName}-${operation.method}-apimOperationPolicyId`, + scope, + apimOperationPolicy.id + ) }) return apiManagementApi diff --git a/src/lib/azure/services/api-management/types.ts b/src/lib/azure/services/api-management/types.ts index 15084e33..c19305f8 100644 --- a/src/lib/azure/services/api-management/types.ts +++ b/src/lib/azure/services/api-management/types.ts @@ -3,7 +3,6 @@ import { ApiManagementBackendConfig } from '@cdktf/provider-azurerm/lib/api-mana import { ApiManagementCustomDomainConfig } from '@cdktf/provider-azurerm/lib/api-management-custom-domain' import { ApiManagementApiConfig } from '@cdktf/provider-azurerm/lib/api-management-api' import { ApiManagementApiOperationConfig } from '@cdktf/provider-azurerm/lib/api-management-api-operation' -import { ApiManagementApiOperationPolicyConfig } from '@cdktf/provider-azurerm/lib/api-management-api-operation-policy' export interface ApiManagementProps extends ApiManagementConfig {} @@ -14,10 +13,16 @@ export interface ApiManagementBackendProps extends ApiManagementBackendConfig { export interface ApiManagementCustomDomainProps extends ApiManagementCustomDomainConfig {} export interface ApiManagementApiProps extends ApiManagementApiConfig { - operations: ApiManagementApiOperationConfig[] - policyXmlContent?: ApiManagementApiOperationPolicyConfig['xmlContent'] + operations: ApiManagementApiOperationProps[] + commonInboundPolicyXml: string + commonOutboundPolicyXml: string } export interface ApiManagementV2Props extends ApiManagementConfig { body: any } + +export interface ApiManagementApiOperationProps extends ApiManagementApiOperationConfig { + cacheInboundPolicy: string + cacheOutboundPolicy: string +} diff --git a/src/test/azure/services/api-management-manager.test.ts b/src/test/azure/services/api-management-manager.test.ts index 5c88b57d..9dbfefdb 100644 --- a/src/test/azure/services/api-management-manager.test.ts +++ b/src/test/azure/services/api-management-manager.test.ts @@ -89,27 +89,11 @@ class TestCommonConstruct extends CommonAzureConstruct { } ) - const policyXmlContent = ` - - - - - - - - - - - - - - ` - this.apiManagementManager.createApiManagementApi(`test-api-management-${this.props.stage}`, this, { ...this.props.testApiManagementApi, apiManagementName: this.apiManagement.name, resourceGroupName: this.apiManagement.resourceGroupName, - policyXmlContent, + commonInboundPolicyXml: ``, }) this.apiManagementManager.createApiManagementCustomDomain(`test-api-management-${this.props.stage}`, this, { @@ -269,7 +253,7 @@ describe('TestAzureApiManagementConstruct', () => { '${azurerm_api_management_api_operation.test-api-management-dev-apim-api-operation-test-get.operation_id}', resource_group_name: '${azurerm_api_management_api.test-api-management-dev-am-api.resource_group_name}', xml_content: - '\n \n \n \n \n \n \n \n \n \n \n \n \n \n ', + '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ', }) }) }) From 885af2aac7ad2e6ab9d8b1e0fdd34c0fa9bd039f Mon Sep 17 00:00:00 2001 From: Hemal Shah Date: Wed, 4 Jun 2025 20:47:07 +0100 Subject: [PATCH 2/2] feat(api-management): Update api operation to include optional caching properties --- src/test/azure/services/api-management-manager.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/azure/services/api-management-manager.test.ts b/src/test/azure/services/api-management-manager.test.ts index 9dbfefdb..05efda82 100644 --- a/src/test/azure/services/api-management-manager.test.ts +++ b/src/test/azure/services/api-management-manager.test.ts @@ -253,7 +253,7 @@ describe('TestAzureApiManagementConstruct', () => { '${azurerm_api_management_api_operation.test-api-management-dev-apim-api-operation-test-get.operation_id}', resource_group_name: '${azurerm_api_management_api.test-api-management-dev-am-api.resource_group_name}', xml_content: - '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ', + '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ', }) }) })