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..05efda82 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 ',
})
})
})