From a8c43231369c68fda95ccf6bee95dca47ac945a4 Mon Sep 17 00:00:00 2001 From: Hemal Shah Date: Wed, 26 Nov 2025 15:09:25 +0000 Subject: [PATCH] feat(apim): Add circuit breaker rule --- package.json | 6 +- pnpm-lock.yaml | 74 +++++++++---------- src/lib/azure/services/api-management/main.ts | 37 +--------- .../services/api-management-manager.test.ts | 6 +- 4 files changed, 46 insertions(+), 77 deletions(-) diff --git a/package.json b/package.json index be695627..5eb38b35 100644 --- a/package.json +++ b/package.json @@ -54,8 +54,8 @@ "@aws-sdk/credential-providers": "^3.886.0", "@aws-sdk/types": "^3.804.0", "@cdktf/provider-aws": "^19.63.0", - "@cdktf/provider-azurerm": "^14.12.0", - "@cdktf/provider-cloudflare": "^13.4.0", + "@cdktf/provider-azurerm": "^14.22.0", + "@cdktf/provider-cloudflare": "^13.8.0", "@types/lodash": "^4.17.20", "@types/node": "^22.15.17", "@types/uuid": "^10.0.0", @@ -63,7 +63,7 @@ "aws-cdk-lib": "^2.195.0", "cdktf": "^0.21.0", "cdktf-local-exec": "^0.5.71", - "constructs": "^10.4.2", + "constructs": "^10.4.3", "lodash": "^4.17.21", "moment": "^2.30.1", "nconf": "^0.13.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7dfd6558..03038b57 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,13 +19,13 @@ importers: version: 3.862.0 '@cdktf/provider-aws': specifier: ^19.63.0 - version: 19.65.1(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2) + version: 19.65.1(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3) '@cdktf/provider-azurerm': - specifier: ^14.12.0 - version: 14.12.0(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2) + specifier: ^14.22.0 + version: 14.22.0(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3) '@cdktf/provider-cloudflare': - specifier: ^13.4.0 - version: 13.4.0(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2) + specifier: ^13.8.0 + version: 13.8.0(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3) '@types/lodash': specifier: ^4.17.20 version: 4.17.20 @@ -40,16 +40,16 @@ importers: version: 3.1.0 aws-cdk-lib: specifier: ^2.195.0 - version: 2.214.0(constructs@10.4.2) + version: 2.214.0(constructs@10.4.3) cdktf: specifier: ^0.21.0 - version: 0.21.0(constructs@10.4.2) + version: 0.21.0(constructs@10.4.3) cdktf-local-exec: specifier: ^0.5.71 - version: 0.5.74(@cdktf/provider-null@11.0.0(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2))(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2) + version: 0.5.74(@cdktf/provider-null@11.0.0(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3))(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3) constructs: - specifier: ^10.4.2 - version: 10.4.2 + specifier: ^10.4.3 + version: 10.4.3 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -559,15 +559,15 @@ packages: cdktf: ^0.20.0 constructs: ^10.3.0 - '@cdktf/provider-azurerm@14.12.0': - resolution: {integrity: sha512-cqgX+6xaB1SOkEWucqpLi22s/FvtVqwdQX0D/Q7hIHm7roHXZ+uA4VyY5JsGzoYllwtkvv3XrNTC3zL0fbdoxQ==} + '@cdktf/provider-azurerm@14.22.0': + resolution: {integrity: sha512-1JGr+JJIoFtNmW76MtihoaRz42/+YTBnfPc9ZF1W4sRXOJDNZfmPavoua378cE8pboHSxcYs1dWbroJZ20hgHw==} engines: {node: '>= 20.9.0'} peerDependencies: cdktf: ^0.21.0 constructs: ^10.4.2 - '@cdktf/provider-cloudflare@13.4.0': - resolution: {integrity: sha512-yywJlJ5WJyyW6HqDrfKlhv+wySmL9/RYa+90zB51r6tqSpNho36CEq+0f5nu7ZG/3uEwe0RQSt1DrrNxEs7Caw==} + '@cdktf/provider-cloudflare@13.8.0': + resolution: {integrity: sha512-oxP74lsZtNboZpSIjIMuSr0ZO0Mnfye/g0CILcDC/t1/zuifdb32LbZKUWNesNlsFZ5uXZSTrwsLdxS857DNfg==} engines: {node: '>= 20.9.0'} peerDependencies: cdktf: ^0.21.0 @@ -1739,8 +1739,8 @@ packages: constantinople@3.1.2: resolution: {integrity: sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==} - constructs@10.4.2: - resolution: {integrity: sha512-wsNxBlAott2qg8Zv87q3eYZYgheb9lchtBfjHzzLHtXbttwSrHPs1NNQbBrmbb1YZvYg2+Vh0Dor76w4mFxJkA==} + constructs@10.4.3: + resolution: {integrity: sha512-3+ZB67qWGM1vEstNpj6pGaLNN1qz4gxC1CBhEUhZDZk0PqzQWY65IzC1Doq17MGPa9xa2wJ1G/DJ3swU8kWAHQ==} conventional-changelog-angular@8.0.0: resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} @@ -5290,25 +5290,25 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@cdktf/provider-aws@19.65.1(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2)': + '@cdktf/provider-aws@19.65.1(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3)': dependencies: - cdktf: 0.21.0(constructs@10.4.2) - constructs: 10.4.2 + cdktf: 0.21.0(constructs@10.4.3) + constructs: 10.4.3 - '@cdktf/provider-azurerm@14.12.0(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2)': + '@cdktf/provider-azurerm@14.22.0(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3)': dependencies: - cdktf: 0.21.0(constructs@10.4.2) - constructs: 10.4.2 + cdktf: 0.21.0(constructs@10.4.3) + constructs: 10.4.3 - '@cdktf/provider-cloudflare@13.4.0(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2)': + '@cdktf/provider-cloudflare@13.8.0(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3)': dependencies: - cdktf: 0.21.0(constructs@10.4.2) - constructs: 10.4.2 + cdktf: 0.21.0(constructs@10.4.3) + constructs: 10.4.3 - '@cdktf/provider-null@11.0.0(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2)': + '@cdktf/provider-null@11.0.0(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3)': dependencies: - cdktf: 0.21.0(constructs@10.4.2) - constructs: 10.4.2 + cdktf: 0.21.0(constructs@10.4.3) + constructs: 10.4.3 '@colors/colors@1.5.0': optional: true @@ -6457,12 +6457,12 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - aws-cdk-lib@2.214.0(constructs@10.4.2): + aws-cdk-lib@2.214.0(constructs@10.4.3): dependencies: '@aws-cdk/asset-awscli-v1': 2.2.242 '@aws-cdk/asset-node-proxy-agent-v6': 2.1.0 '@aws-cdk/cloud-assembly-schema': 48.8.0 - constructs: 10.4.2 + constructs: 10.4.3 aws-cdk@2.1029.0: optionalDependencies: @@ -6660,15 +6660,15 @@ snapshots: dependencies: lodash: 4.17.21 - cdktf-local-exec@0.5.74(@cdktf/provider-null@11.0.0(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2))(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2): + cdktf-local-exec@0.5.74(@cdktf/provider-null@11.0.0(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3))(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3): dependencies: - '@cdktf/provider-null': 11.0.0(cdktf@0.21.0(constructs@10.4.2))(constructs@10.4.2) - cdktf: 0.21.0(constructs@10.4.2) - constructs: 10.4.2 + '@cdktf/provider-null': 11.0.0(cdktf@0.21.0(constructs@10.4.3))(constructs@10.4.3) + cdktf: 0.21.0(constructs@10.4.3) + constructs: 10.4.3 - cdktf@0.21.0(constructs@10.4.2): + cdktf@0.21.0(constructs@10.4.3): dependencies: - constructs: 10.4.2 + constructs: 10.4.3 center-align@0.1.3: dependencies: @@ -6845,7 +6845,7 @@ snapshots: babel-types: 6.26.0 babylon: 6.18.0 - constructs@10.4.2: {} + constructs@10.4.3: {} conventional-changelog-angular@8.0.0: dependencies: diff --git a/src/lib/azure/services/api-management/main.ts b/src/lib/azure/services/api-management/main.ts index 7688d5b3..8757ceca 100644 --- a/src/lib/azure/services/api-management/main.ts +++ b/src/lib/azure/services/api-management/main.ts @@ -12,9 +12,9 @@ import { ApiManagementLogger, ApiManagementLoggerApplicationInsights, } from '@cdktf/provider-azurerm/lib/api-management-logger' +import { ApiManagementBackend } from '@cdktf/provider-azurerm/lib/api-management-backend' import { ApiManagementRedisCache } from '@cdktf/provider-azurerm/lib/api-management-redis-cache' import { RedisCache } from '@cdktf/provider-azurerm/lib/redis-cache' -import { Resource } from '../../.gen/providers/azapi/resource' import { CommonAzureConstruct } from '../../common' import { createAzureTfOutput } from '../../utils' import { @@ -22,7 +22,6 @@ import { ApiManagementBackendProps, ApiManagementApiProps, ApiManagementCustomDomainProps, - ApiManagementRedisCacheProps, } from './types' import _ from 'lodash' @@ -144,39 +143,11 @@ export class AzureApiManagementManager { public createApiManagementBackend(id: string, scope: CommonAzureConstruct, props: ApiManagementBackendProps) { if (!props) throw `Props undefined for ${id}` - // Commenting as circuit breaker config is currently not supported - /* const apiManagementBackend = new ApiManagementBackend(scope, `${id}-am-be`, { - ...props, - name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagementBackend), - description: props.description ?? `Backend for ${props.name}-${scope.props.stage}`, - protocol: props.protocol ?? 'http', - }) -*/ - - const apiManagementBackend = new Resource(scope, `${id}-am-be`, { - type: 'Microsoft.ApiManagement/service/backends@2024-06-01-preview', + ...props, name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagementBackend), - parentId: props.apiManagementId, - - body: { - properties: { - circuitBreaker: props.circuitBreaker, - credentials: props.credentials, - description: props.description ?? `Backend for ${props.name}-${scope.props.stage}`, - url: props.url, - resourceId: props.resourceId, - protocol: props.protocol ?? 'http', - }, - }, - - responseExportValues: ['*'], - - ignoreMissingProperty: true, - ignoreCasing: true, - schemaValidationEnabled: false, - - lifecycle: props.lifecycle, + description: props.description ?? `Backend for ${props.name}-${scope.props.stage}`, + protocol: props.protocol ?? 'http', }) createAzureTfOutput(`${id}-apiManagementBackendName`, scope, apiManagementBackend.name) diff --git a/src/test/azure/services/api-management-manager.test.ts b/src/test/azure/services/api-management-manager.test.ts index 5cf09986..86b3febf 100644 --- a/src/test/azure/services/api-management-manager.test.ts +++ b/src/test/azure/services/api-management-manager.test.ts @@ -116,7 +116,7 @@ const construct = Testing.synth(commonStack.construct) console.log(expect(construct).toHaveResourceWithProperties(ApiManagement, {})) console.log(expect(construct).toHaveResourceWithProperties(ApiManagementApi, {})) -//console.log(expect(construct).toHaveResourceWithProperties(ApiManagementBackend, {})) +console.log(expect(construct).toHaveResourceWithProperties(ApiManagementBackend, {})) console.log(expect(construct).toHaveResourceWithProperties(ApiManagementApiOperation, {})) console.log(expect(construct).toHaveResourceWithProperties(ApiManagementApiOperationPolicy, {})) @@ -198,7 +198,6 @@ describe('TestAzureApiManagementConstruct', () => { }) }) -/* describe('TestAzureApiManagementConstruct', () => { test('provisions api management backend as expected', () => { expect(construct).toHaveResourceWithProperties(ApiManagementBackend, { @@ -210,7 +209,6 @@ describe('TestAzureApiManagementConstruct', () => { }) }) }) -*/ describe('TestAzureApiManagementConstruct', () => { test('provisions api management api operation as expected', () => { @@ -256,7 +254,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 \n \n \n \n \n \n ', }) }) })