@gradientedge/cdk-utils 9.43.0 → 9.43.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/src/lib/azure/common/stack.d.ts +5 -0
  2. package/dist/src/lib/azure/common/stack.js +5 -0
  3. package/dist/src/lib/azure/services/api-management/main.js +7 -7
  4. package/dist/src/lib/azure/services/api-management/types.d.ts +1 -0
  5. package/dist/src/lib/azure/services/app-configuration/main.js +1 -1
  6. package/dist/src/lib/azure/services/app-service/main.js +1 -1
  7. package/dist/src/lib/azure/services/application-insights/main.js +1 -1
  8. package/dist/src/lib/azure/services/cosmosdb/main.js +3 -3
  9. package/dist/src/lib/azure/services/dns/main.js +3 -3
  10. package/dist/src/lib/azure/services/eventgrid/main.js +3 -3
  11. package/dist/src/lib/azure/services/function/main.js +3 -3
  12. package/dist/src/lib/azure/services/key-vault/main.js +1 -1
  13. package/dist/src/lib/azure/services/log-analytics-workspace/main.js +1 -1
  14. package/dist/src/lib/azure/services/resource-group/main.js +1 -1
  15. package/dist/src/lib/azure/services/servicebus/main.js +4 -4
  16. package/dist/src/lib/azure/services/storage/main.js +6 -3
  17. package/package.json +1 -1
  18. package/src/lib/azure/common/stack.ts +5 -0
  19. package/src/lib/azure/services/api-management/main.ts +7 -7
  20. package/src/lib/azure/services/api-management/types.ts +3 -1
  21. package/src/lib/azure/services/app-configuration/main.ts +1 -1
  22. package/src/lib/azure/services/app-service/main.ts +1 -1
  23. package/src/lib/azure/services/application-insights/main.ts +1 -1
  24. package/src/lib/azure/services/cosmosdb/main.ts +3 -3
  25. package/src/lib/azure/services/dns/main.ts +3 -3
  26. package/src/lib/azure/services/eventgrid/main.ts +3 -3
  27. package/src/lib/azure/services/function/main.ts +3 -3
  28. package/src/lib/azure/services/key-vault/main.ts +1 -1
  29. package/src/lib/azure/services/log-analytics-workspace/main.ts +1 -1
  30. package/src/lib/azure/services/resource-group/main.ts +1 -1
  31. package/src/lib/azure/services/servicebus/main.ts +4 -4
  32. package/src/lib/azure/services/storage/main.ts +6 -3
@@ -30,6 +30,11 @@ export declare class CommonAzureStack extends TerraformStack {
30
30
  location: any;
31
31
  name: any;
32
32
  resourceGroupName: any;
33
+ globalPrefix: any;
34
+ globalSuffix: any;
35
+ resourceNameOptions: any;
36
+ resourcePrefix: any;
37
+ resourceSuffix: any;
33
38
  skipStageForARecords: any;
34
39
  stage: any;
35
40
  subDomain: any;
@@ -46,6 +46,11 @@ class CommonAzureStack extends cdktf_1.TerraformStack {
46
46
  location: this.node.tryGetContext('location'),
47
47
  name: this.node.tryGetContext('resourceGroupName'),
48
48
  resourceGroupName: this.node.tryGetContext('resourceGroupName'),
49
+ globalPrefix: this.node.tryGetContext('globalPrefix'),
50
+ globalSuffix: this.node.tryGetContext('globalSuffix'),
51
+ resourceNameOptions: this.node.tryGetContext('resourceNameOptions'),
52
+ resourcePrefix: this.node.tryGetContext('resourcePrefix'),
53
+ resourceSuffix: this.node.tryGetContext('resourceSuffix'),
49
54
  skipStageForARecords: this.node.tryGetContext('skipStageForARecords'),
50
55
  stage: this.node.tryGetContext('stage'),
51
56
  subDomain: this.node.tryGetContext('subDomain'),
@@ -52,7 +52,7 @@ class AzureApiManagementManager {
52
52
  throw `Resource group undefined for ${id}`;
53
53
  const apiManagement = new api_management_1.ApiManagement(scope, `${id}-am`, {
54
54
  ...props,
55
- name: scope.resourceNameFormatter.format(props.name),
55
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagement),
56
56
  resourceGroupName: resourceGroup.name,
57
57
  tags: props.tags ?? {
58
58
  environment: scope.props.stage,
@@ -60,7 +60,7 @@ class AzureApiManagementManager {
60
60
  });
61
61
  if (applicationInsightsKey) {
62
62
  new api_management_logger_1.ApiManagementLogger(scope, `${id}-am-logger`, {
63
- name: scope.resourceNameFormatter.format(props.name),
63
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagementLogger),
64
64
  resourceGroupName: resourceGroup.name,
65
65
  apiManagementName: apiManagement.name,
66
66
  applicationInsights: {
@@ -92,7 +92,7 @@ class AzureApiManagementManager {
92
92
  throw `Resource group undefined for ${id}`;
93
93
  const apiManagement = new data_azurerm_api_management_1.DataAzurermApiManagement(scope, `${id}-am`, {
94
94
  ...props,
95
- name: scope.resourceNameFormatter.format(props.name),
95
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.dataAzurermApiManagement),
96
96
  resourceGroupName: scope.props.resourceGroupName
97
97
  ? `${scope.props.resourceGroupName}-${scope.props.stage}`
98
98
  : `${props.resourceGroupName}`,
@@ -118,7 +118,7 @@ class AzureApiManagementManager {
118
118
  throw `Resource group undefined for ${id}`;
119
119
  const apiManagement = new resource_1.Resource(scope, `${id}-am`, {
120
120
  type: 'Microsoft.ApiManagement/service@2024-05-01',
121
- name: scope.resourceNameFormatter.format(props.name),
121
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagement),
122
122
  location: resourceGroup.location,
123
123
  parentId: resourceGroup.id,
124
124
  body: {
@@ -146,7 +146,7 @@ class AzureApiManagementManager {
146
146
  });
147
147
  if (applicationInsightsKey) {
148
148
  new api_management_logger_1.ApiManagementLogger(scope, `${id}-am-logger`, {
149
- name: scope.resourceNameFormatter.format(props.name),
149
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagementLogger),
150
150
  resourceGroupName: resourceGroup.name,
151
151
  apiManagementName: apiManagement.name,
152
152
  applicationInsights: {
@@ -171,7 +171,7 @@ class AzureApiManagementManager {
171
171
  throw `Props undefined for ${id}`;
172
172
  const apiManagementBackend = new api_management_backend_1.ApiManagementBackend(scope, `${id}-am-be`, {
173
173
  ...props,
174
- name: scope.resourceNameFormatter.format(props.name),
174
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagementBackend),
175
175
  description: props.description || `Backend for ${props.name}-${scope.props.stage}`,
176
176
  protocol: props.protocol || 'http',
177
177
  });
@@ -192,7 +192,7 @@ class AzureApiManagementManager {
192
192
  throw `Props undefined for ${id}`;
193
193
  const apiManagementApi = new api_management_api_1.ApiManagementApi(scope, `${id}-am-api`, {
194
194
  ...props,
195
- name: scope.resourceNameFormatter.format(props.name),
195
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagementApi),
196
196
  displayName: props.displayName || props.name,
197
197
  revision: props.revision || '1',
198
198
  protocols: props.protocols || ['https'],
@@ -6,6 +6,7 @@ import { ApiManagementApiOperationPolicyConfig } from '@cdktf/provider-azurerm/l
6
6
  export interface ApiManagementProps extends ApiManagementConfig {
7
7
  }
8
8
  export interface ApiManagementBackendProps extends ApiManagementBackendConfig {
9
+ backendUrlPath?: string;
9
10
  }
10
11
  export interface ApiManagementApiProps extends ApiManagementApiConfig {
11
12
  operations: ApiManagementApiOperationConfig[];
@@ -41,7 +41,7 @@ class AzureAppConfigurationManager {
41
41
  throw `Resource group undefined for ${id}`;
42
42
  const appConfiguration = new app_configuration_1.AppConfiguration(scope, `${id}-ac`, {
43
43
  ...props,
44
- name: `${props.name}-${scope.props.stage}`,
44
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.appConfiguration),
45
45
  resourceGroupName: resourceGroup.name,
46
46
  tags: props.tags ?? {
47
47
  environment: scope.props.stage,
@@ -41,7 +41,7 @@ class AzureAppServiceManager {
41
41
  throw `Resource group undefined for ${id}`;
42
42
  const appServicePlan = new service_plan_1.ServicePlan(scope, `${id}-as`, {
43
43
  ...props,
44
- name: scope.resourceNameFormatter.format(props.name),
44
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.appServicePlan),
45
45
  resourceGroupName: resourceGroup.name,
46
46
  tags: props.tags ?? {
47
47
  environment: scope.props.stage,
@@ -41,7 +41,7 @@ class AzureApplicationInsightsManager {
41
41
  throw `Resource group undefined for ${id}`;
42
42
  const applicationInsights = new application_insights_1.ApplicationInsights(scope, `${id}-ai`, {
43
43
  ...props,
44
- name: `${props.name}-${scope.props.stage}` || '',
44
+ name: scope.resourceNameFormatter.format(props.name ?? '', scope.props.resourceNameOptions?.applicationInsights),
45
45
  resourceGroupName: resourceGroup.name,
46
46
  applicationType: props.applicationType || 'web',
47
47
  tags: props.tags ?? {
@@ -43,7 +43,7 @@ class AzureCosmosDbManager {
43
43
  throw `Resource group undefined for ${id}`;
44
44
  const cosmosdbAccount = new cosmosdb_account_1.CosmosdbAccount(scope, `${id}-ca`, {
45
45
  ...props,
46
- name: scope.resourceNameFormatter.format(props.name),
46
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.cosmosDbAccount),
47
47
  location: resourceGroup.location,
48
48
  resourceGroupName: resourceGroup.name,
49
49
  tags: props.tags ?? {
@@ -74,7 +74,7 @@ class AzureCosmosDbManager {
74
74
  throw `Resource group undefined for ${id}`;
75
75
  const cosmosdbDatatbase = new cosmosdb_sql_database_1.CosmosdbSqlDatabase(scope, `${id}-cd`, {
76
76
  ...props,
77
- name: scope.resourceNameFormatter.format(props.name),
77
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.cosmosDbSqlDatabase),
78
78
  resourceGroupName: resourceGroup.name,
79
79
  });
80
80
  (0, utils_1.createAzureTfOutput)(`${id}-cosmosdbDatatbasetName`, scope, cosmosdbDatatbase.name);
@@ -101,7 +101,7 @@ class AzureCosmosDbManager {
101
101
  throw `Resource group undefined for ${id}`;
102
102
  const cosmosdbContainer = new cosmosdb_sql_container_1.CosmosdbSqlContainer(scope, `${id}-cc`, {
103
103
  ...props,
104
- name: scope.resourceNameFormatter.format(props.name),
104
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.cosmosDbSqlContainer),
105
105
  resourceGroupName: resourceGroup.name,
106
106
  });
107
107
  (0, utils_1.createAzureTfOutput)(`${id}-cosmosdbContainertName`, scope, cosmosdbContainer.name);
@@ -44,7 +44,7 @@ class AzureDnsManager {
44
44
  throw `Resource group undefined for ${id}`;
45
45
  const dnsZone = new dns_zone_1.DnsZone(scope, `${id}-dz`, {
46
46
  ...props,
47
- name: scope.resourceNameFormatter.format(props.name),
47
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.dnsZone),
48
48
  resourceGroupName: resourceGroup.name,
49
49
  tags: props.tags ?? {
50
50
  environment: scope.props.stage,
@@ -67,7 +67,7 @@ class AzureDnsManager {
67
67
  throw `Props undefined for ${id}`;
68
68
  const dnsARecord = new dns_a_record_1.DnsARecord(scope, `${id}-da`, {
69
69
  ...props,
70
- name: scope.resourceNameFormatter.format(props.name),
70
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.dnsARecord),
71
71
  ttl: props.ttl || 300,
72
72
  tags: props.tags ?? {
73
73
  environment: scope.props.stage,
@@ -90,7 +90,7 @@ class AzureDnsManager {
90
90
  throw `Props undefined for ${id}`;
91
91
  const dnsCnameRecord = new dns_cname_record_1.DnsCnameRecord(scope, `${id}-dc`, {
92
92
  ...props,
93
- name: scope.resourceNameFormatter.format(props.name),
93
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.dnsCnameRecord),
94
94
  ttl: props.ttl || 300,
95
95
  tags: props.tags ?? {
96
96
  environment: scope.props.stage,
@@ -43,7 +43,7 @@ class AzureEventgridManager {
43
43
  throw `Resource group undefined for ${id}`;
44
44
  const eventgridTopic = new eventgrid_topic_1.EventgridTopic(scope, `${id}-et`, {
45
45
  ...props,
46
- name: scope.resourceNameFormatter.format(props.name),
46
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.eventGridTopic),
47
47
  location: resourceGroup.location,
48
48
  resourceGroupName: resourceGroup.name,
49
49
  tags: props.tags ?? {
@@ -75,7 +75,7 @@ class AzureEventgridManager {
75
75
  throw `Resource group undefined for ${id}`;
76
76
  const eventgridTopic = new data_azurerm_eventgrid_topic_1.DataAzurermEventgridTopic(scope, `${id}-et`, {
77
77
  ...props,
78
- name: scope.resourceNameFormatter.format(props.name),
78
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.eventGridTopic),
79
79
  resourceGroupName: resourceGroup.name,
80
80
  });
81
81
  (0, utils_1.createAzureTfOutput)(`${id}-eventgridTopicName`, scope, eventgridTopic.name);
@@ -96,7 +96,7 @@ class AzureEventgridManager {
96
96
  throw `Props undefined for ${id}`;
97
97
  const eventgridSubscription = new eventgrid_event_subscription_1.EventgridEventSubscription(scope, `${id}-es`, {
98
98
  ...props,
99
- name: scope.resourceNameFormatter.format(props.name),
99
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.eventGridEventSubscription),
100
100
  eventDeliverySchema: props.eventDeliverySchema || 'CloudEventSchemaV1_0',
101
101
  advancedFilteringOnArraysEnabled: props.advancedFilteringOnArraysEnabled || true,
102
102
  });
@@ -44,7 +44,7 @@ class AzureFunctionManager {
44
44
  throw `Resource group undefined for ${id}`;
45
45
  const functionApp = new linux_function_app_1.LinuxFunctionApp(scope, `${id}-fa`, {
46
46
  ...props,
47
- name: scope.resourceNameFormatter.format(props.name),
47
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.linuxFunctionApp),
48
48
  resourceGroupName: resourceGroup.name,
49
49
  tags: props.tags ?? {
50
50
  environment: scope.props.stage,
@@ -67,7 +67,7 @@ class AzureFunctionManager {
67
67
  throw `Props undefined for ${id}`;
68
68
  const functionAppFunction = new function_app_function_1.FunctionAppFunction(scope, `${id}-fc`, {
69
69
  ...props,
70
- name: scope.resourceNameFormatter.format(props.name),
70
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.functionAppFunction),
71
71
  configJson: JSON.stringify(props.configJson || {}),
72
72
  });
73
73
  (0, utils_1.createAzureTfOutput)(`${id}-functionName`, scope, functionAppFunction.name);
@@ -93,7 +93,7 @@ class AzureFunctionManager {
93
93
  throw `Resource group undefined for ${id}`;
94
94
  const functionApp = new resource_1.Resource(scope, `${id}-fa`, {
95
95
  type: 'Microsoft.Web/sites@2024-04-01',
96
- name: scope.resourceNameFormatter.format(props.name),
96
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.functionApp),
97
97
  location: resourceGroup.location,
98
98
  parentId: resourceGroup.id,
99
99
  body: {
@@ -41,7 +41,7 @@ class AzureKeyVaultManager {
41
41
  throw `Resource group undefined for ${id}`;
42
42
  const keyVault = new key_vault_1.KeyVault(scope, `${id}-kv`, {
43
43
  ...props,
44
- name: scope.resourceNameFormatter.format(props.name),
44
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.keyVault),
45
45
  location: resourceGroup.location,
46
46
  resourceGroupName: resourceGroup.name,
47
47
  skuName: props.skuName ?? 'standard',
@@ -41,7 +41,7 @@ class AzureLogAnalyticsWorkspaceManager {
41
41
  throw `Resource group undefined for ${id}`;
42
42
  const logAnalyticsWorkspace = new log_analytics_workspace_1.LogAnalyticsWorkspace(scope, `${id}-lw`, {
43
43
  ...props,
44
- name: scope.resourceNameFormatter.format(props.name),
44
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.logAnalyticsWorkspace),
45
45
  location: resourceGroup.location,
46
46
  resourceGroupName: resourceGroup.name,
47
47
  tags: props.tags ?? {
@@ -33,7 +33,7 @@ class AzureResourceGroupManager {
33
33
  throw `Props undefined for ${id}`;
34
34
  const resourceGroup = new resource_group_1.ResourceGroup(scope, `${id}-rg`, {
35
35
  ...props,
36
- name: scope.resourceNameFormatter.format(props.name),
36
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.resourceGroup),
37
37
  location: props.location,
38
38
  tags: props.tags ?? {
39
39
  environment: scope.props.stage,
@@ -44,7 +44,7 @@ class AzureServicebusManager {
44
44
  throw `Resource group undefined for ${id}`;
45
45
  const servicebusNamespace = new servicebus_namespace_1.ServicebusNamespace(scope, `${id}-sn`, {
46
46
  ...props,
47
- name: scope.resourceNameFormatter.format(props.name),
47
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.serviceBusNamespace),
48
48
  resourceGroupName: resourceGroup.name,
49
49
  location: resourceGroup.location,
50
50
  identity: {
@@ -72,7 +72,7 @@ class AzureServicebusManager {
72
72
  throw `Props undefined for ${id}`;
73
73
  const servicebusTopic = new servicebus_topic_1.ServicebusTopic(scope, `${id}-st`, {
74
74
  ...props,
75
- name: scope.resourceNameFormatter.format(props.name),
75
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.serviceBusTopic),
76
76
  namespaceId: props.namespaceId,
77
77
  });
78
78
  (0, utils_1.createAzureTfOutput)(`${id}-servicebusTopicName`, scope, servicebusTopic.name);
@@ -92,7 +92,7 @@ class AzureServicebusManager {
92
92
  throw `Props undefined for ${id}`;
93
93
  const servicebusQueue = new servicebus_queue_1.ServicebusQueue(scope, `${id}-sq`, {
94
94
  ...props,
95
- name: scope.resourceNameFormatter.format(props.name),
95
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.serviceBusQueue),
96
96
  namespaceId: props.namespaceId,
97
97
  });
98
98
  (0, utils_1.createAzureTfOutput)(`${id}-servicebusQueueName`, scope, servicebusQueue.name);
@@ -112,7 +112,7 @@ class AzureServicebusManager {
112
112
  throw `Props undefined for ${id}`;
113
113
  const servicebusSubscription = new servicebus_subscription_1.ServicebusSubscription(scope, `${id}-ss`, {
114
114
  ...props,
115
- name: scope.resourceNameFormatter.format(props.name),
115
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.serviceBusSubscription),
116
116
  maxDeliveryCount: props.maxDeliveryCount || 1,
117
117
  });
118
118
  (0, utils_1.createAzureTfOutput)(`${id}-servicebusSubscriptionName`, scope, servicebusSubscription.name);
@@ -47,7 +47,10 @@ class AzureStorageManager {
47
47
  ...props,
48
48
  accountTier: props.accountTier ?? 'Standard',
49
49
  location: props.location ?? resourceGroup.location,
50
- name: `${props.name}-${scope.props.stage}`.replace(/\W/g, '').toLowerCase(),
50
+ name: scope.resourceNameFormatter
51
+ .format(props.name, scope.props.resourceNameOptions?.storageAccount)
52
+ .replace(/\W/g, '')
53
+ .toLowerCase(),
51
54
  resourceGroupName: resourceGroup.name,
52
55
  tags: props.tags ?? {
53
56
  environment: scope.props.stage,
@@ -70,7 +73,7 @@ class AzureStorageManager {
70
73
  throw `Props undefined for ${id}`;
71
74
  const storageContainer = new storage_container_1.StorageContainer(scope, `${id}-sc`, {
72
75
  ...props,
73
- name: scope.resourceNameFormatter.format(props.name),
76
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.storageContainer),
74
77
  });
75
78
  (0, utils_1.createAzureTfOutput)(`${id}-storageContainerName`, scope, storageContainer.name);
76
79
  (0, utils_1.createAzureTfOutput)(`${id}-storageContainerFriendlyUniqueId`, scope, storageContainer.friendlyUniqueId);
@@ -105,7 +108,7 @@ class AzureStorageManager {
105
108
  });
106
109
  const storageBlob = new storage_blob_1.StorageBlob(scope, `${id}-sb`, {
107
110
  ...props,
108
- name: scope.resourceNameFormatter.format(props.name),
111
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.storageBlob),
109
112
  storageAccountName: storageAccount.name,
110
113
  storageContainerName: storageContainer.name,
111
114
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gradientedge/cdk-utils",
3
- "version": "9.43.0",
3
+ "version": "9.43.2",
4
4
  "description": "Utilities for AWS CDK provisioning",
5
5
  "main": "dist/index.js",
6
6
  "engines": {
@@ -50,6 +50,11 @@ export class CommonAzureStack extends TerraformStack {
50
50
  location: this.node.tryGetContext('location'),
51
51
  name: this.node.tryGetContext('resourceGroupName'),
52
52
  resourceGroupName: this.node.tryGetContext('resourceGroupName'),
53
+ globalPrefix: this.node.tryGetContext('globalPrefix'),
54
+ globalSuffix: this.node.tryGetContext('globalSuffix'),
55
+ resourceNameOptions: this.node.tryGetContext('resourceNameOptions'),
56
+ resourcePrefix: this.node.tryGetContext('resourcePrefix'),
57
+ resourceSuffix: this.node.tryGetContext('resourceSuffix'),
53
58
  skipStageForARecords: this.node.tryGetContext('skipStageForARecords'),
54
59
  stage: this.node.tryGetContext('stage'),
55
60
  subDomain: this.node.tryGetContext('subDomain'),
@@ -62,7 +62,7 @@ export class AzureApiManagementManager {
62
62
 
63
63
  const apiManagement = new ApiManagement(scope, `${id}-am`, {
64
64
  ...props,
65
- name: scope.resourceNameFormatter.format(props.name),
65
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagement),
66
66
  resourceGroupName: resourceGroup.name,
67
67
  tags: props.tags ?? {
68
68
  environment: scope.props.stage,
@@ -71,7 +71,7 @@ export class AzureApiManagementManager {
71
71
 
72
72
  if (applicationInsightsKey) {
73
73
  new ApiManagementLogger(scope, `${id}-am-logger`, {
74
- name: scope.resourceNameFormatter.format(props.name),
74
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagementLogger),
75
75
  resourceGroupName: resourceGroup.name,
76
76
  apiManagementName: apiManagement.name,
77
77
  applicationInsights: {
@@ -107,7 +107,7 @@ export class AzureApiManagementManager {
107
107
 
108
108
  const apiManagement = new DataAzurermApiManagement(scope, `${id}-am`, {
109
109
  ...props,
110
- name: scope.resourceNameFormatter.format(props.name),
110
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.dataAzurermApiManagement),
111
111
  resourceGroupName: scope.props.resourceGroupName
112
112
  ? `${scope.props.resourceGroupName}-${scope.props.stage}`
113
113
  : `${props.resourceGroupName}`,
@@ -141,7 +141,7 @@ export class AzureApiManagementManager {
141
141
 
142
142
  const apiManagement = new Resource(scope, `${id}-am`, {
143
143
  type: 'Microsoft.ApiManagement/service@2024-05-01',
144
- name: scope.resourceNameFormatter.format(props.name),
144
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagement),
145
145
  location: resourceGroup.location,
146
146
  parentId: resourceGroup.id,
147
147
 
@@ -174,7 +174,7 @@ export class AzureApiManagementManager {
174
174
 
175
175
  if (applicationInsightsKey) {
176
176
  new ApiManagementLogger(scope, `${id}-am-logger`, {
177
- name: scope.resourceNameFormatter.format(props.name),
177
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagementLogger),
178
178
  resourceGroupName: resourceGroup.name,
179
179
  apiManagementName: apiManagement.name,
180
180
  applicationInsights: {
@@ -202,7 +202,7 @@ export class AzureApiManagementManager {
202
202
 
203
203
  const apiManagementBackend = new ApiManagementBackend(scope, `${id}-am-be`, {
204
204
  ...props,
205
- name: scope.resourceNameFormatter.format(props.name),
205
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagementBackend),
206
206
  description: props.description || `Backend for ${props.name}-${scope.props.stage}`,
207
207
  protocol: props.protocol || 'http',
208
208
  })
@@ -226,7 +226,7 @@ export class AzureApiManagementManager {
226
226
 
227
227
  const apiManagementApi = new ApiManagementApi(scope, `${id}-am-api`, {
228
228
  ...props,
229
- name: scope.resourceNameFormatter.format(props.name),
229
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.apiManagementApi),
230
230
  displayName: props.displayName || props.name,
231
231
  revision: props.revision || '1',
232
232
  protocols: props.protocols || ['https'],
@@ -6,7 +6,9 @@ import { ApiManagementApiOperationPolicyConfig } from '@cdktf/provider-azurerm/l
6
6
 
7
7
  export interface ApiManagementProps extends ApiManagementConfig {}
8
8
 
9
- export interface ApiManagementBackendProps extends ApiManagementBackendConfig {}
9
+ export interface ApiManagementBackendProps extends ApiManagementBackendConfig {
10
+ backendUrlPath?: string
11
+ }
10
12
 
11
13
  export interface ApiManagementApiProps extends ApiManagementApiConfig {
12
14
  operations: ApiManagementApiOperationConfig[]
@@ -42,7 +42,7 @@ export class AzureAppConfigurationManager {
42
42
 
43
43
  const appConfiguration = new AppConfiguration(scope, `${id}-ac`, {
44
44
  ...props,
45
- name: `${props.name}-${scope.props.stage}`,
45
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.appConfiguration),
46
46
  resourceGroupName: resourceGroup.name,
47
47
  tags: props.tags ?? {
48
48
  environment: scope.props.stage,
@@ -42,7 +42,7 @@ export class AzureAppServiceManager {
42
42
 
43
43
  const appServicePlan = new ServicePlan(scope, `${id}-as`, {
44
44
  ...props,
45
- name: scope.resourceNameFormatter.format(props.name),
45
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.appServicePlan),
46
46
  resourceGroupName: resourceGroup.name,
47
47
  tags: props.tags ?? {
48
48
  environment: scope.props.stage,
@@ -42,7 +42,7 @@ export class AzureApplicationInsightsManager {
42
42
 
43
43
  const applicationInsights = new ApplicationInsights(scope, `${id}-ai`, {
44
44
  ...props,
45
- name: `${props.name}-${scope.props.stage}` || '',
45
+ name: scope.resourceNameFormatter.format(props.name ?? '', scope.props.resourceNameOptions?.applicationInsights),
46
46
  resourceGroupName: resourceGroup.name,
47
47
  applicationType: props.applicationType || 'web',
48
48
  tags: props.tags ?? {
@@ -44,7 +44,7 @@ export class AzureCosmosDbManager {
44
44
 
45
45
  const cosmosdbAccount = new CosmosdbAccount(scope, `${id}-ca`, {
46
46
  ...props,
47
- name: scope.resourceNameFormatter.format(props.name),
47
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.cosmosDbAccount),
48
48
  location: resourceGroup.location,
49
49
  resourceGroupName: resourceGroup.name,
50
50
  tags: props.tags ?? {
@@ -79,7 +79,7 @@ export class AzureCosmosDbManager {
79
79
 
80
80
  const cosmosdbDatatbase = new CosmosdbSqlDatabase(scope, `${id}-cd`, {
81
81
  ...props,
82
- name: scope.resourceNameFormatter.format(props.name),
82
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.cosmosDbSqlDatabase),
83
83
  resourceGroupName: resourceGroup.name,
84
84
  })
85
85
 
@@ -110,7 +110,7 @@ export class AzureCosmosDbManager {
110
110
 
111
111
  const cosmosdbContainer = new CosmosdbSqlContainer(scope, `${id}-cc`, {
112
112
  ...props,
113
- name: scope.resourceNameFormatter.format(props.name),
113
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.cosmosDbSqlContainer),
114
114
  resourceGroupName: resourceGroup.name,
115
115
  })
116
116
 
@@ -45,7 +45,7 @@ export class AzureDnsManager {
45
45
 
46
46
  const dnsZone = new DnsZone(scope, `${id}-dz`, {
47
47
  ...props,
48
- name: scope.resourceNameFormatter.format(props.name),
48
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.dnsZone),
49
49
  resourceGroupName: resourceGroup.name,
50
50
  tags: props.tags ?? {
51
51
  environment: scope.props.stage,
@@ -71,7 +71,7 @@ export class AzureDnsManager {
71
71
 
72
72
  const dnsARecord = new DnsARecord(scope, `${id}-da`, {
73
73
  ...props,
74
- name: scope.resourceNameFormatter.format(props.name),
74
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.dnsARecord),
75
75
  ttl: props.ttl || 300,
76
76
  tags: props.tags ?? {
77
77
  environment: scope.props.stage,
@@ -97,7 +97,7 @@ export class AzureDnsManager {
97
97
 
98
98
  const dnsCnameRecord = new DnsCnameRecord(scope, `${id}-dc`, {
99
99
  ...props,
100
- name: scope.resourceNameFormatter.format(props.name),
100
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.dnsCnameRecord),
101
101
  ttl: props.ttl || 300,
102
102
  tags: props.tags ?? {
103
103
  environment: scope.props.stage,
@@ -47,7 +47,7 @@ export class AzureEventgridManager {
47
47
 
48
48
  const eventgridTopic = new EventgridTopic(scope, `${id}-et`, {
49
49
  ...props,
50
- name: scope.resourceNameFormatter.format(props.name),
50
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.eventGridTopic),
51
51
  location: resourceGroup.location,
52
52
  resourceGroupName: resourceGroup.name,
53
53
  tags: props.tags ?? {
@@ -83,7 +83,7 @@ export class AzureEventgridManager {
83
83
 
84
84
  const eventgridTopic = new DataAzurermEventgridTopic(scope, `${id}-et`, {
85
85
  ...props,
86
- name: scope.resourceNameFormatter.format(props.name),
86
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.eventGridTopic),
87
87
  resourceGroupName: resourceGroup.name,
88
88
  })
89
89
 
@@ -107,7 +107,7 @@ export class AzureEventgridManager {
107
107
 
108
108
  const eventgridSubscription = new EventgridEventSubscription(scope, `${id}-es`, {
109
109
  ...props,
110
- name: scope.resourceNameFormatter.format(props.name),
110
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.eventGridEventSubscription),
111
111
  eventDeliverySchema: props.eventDeliverySchema || 'CloudEventSchemaV1_0',
112
112
  advancedFilteringOnArraysEnabled: props.advancedFilteringOnArraysEnabled || true,
113
113
  })
@@ -45,7 +45,7 @@ export class AzureFunctionManager {
45
45
 
46
46
  const functionApp = new LinuxFunctionApp(scope, `${id}-fa`, {
47
47
  ...props,
48
- name: scope.resourceNameFormatter.format(props.name),
48
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.linuxFunctionApp),
49
49
  resourceGroupName: resourceGroup.name,
50
50
  tags: props.tags ?? {
51
51
  environment: scope.props.stage,
@@ -71,7 +71,7 @@ export class AzureFunctionManager {
71
71
 
72
72
  const functionAppFunction = new FunctionAppFunction(scope, `${id}-fc`, {
73
73
  ...props,
74
- name: scope.resourceNameFormatter.format(props.name),
74
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.functionAppFunction),
75
75
  configJson: JSON.stringify(props.configJson || {}),
76
76
  })
77
77
 
@@ -105,7 +105,7 @@ export class AzureFunctionManager {
105
105
 
106
106
  const functionApp = new Resource(scope, `${id}-fa`, {
107
107
  type: 'Microsoft.Web/sites@2024-04-01',
108
- name: scope.resourceNameFormatter.format(props.name),
108
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.functionApp),
109
109
  location: resourceGroup.location,
110
110
  parentId: resourceGroup.id,
111
111
 
@@ -42,7 +42,7 @@ export class AzureKeyVaultManager {
42
42
 
43
43
  const keyVault = new KeyVault(scope, `${id}-kv`, {
44
44
  ...props,
45
- name: scope.resourceNameFormatter.format(props.name),
45
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.keyVault),
46
46
  location: resourceGroup.location,
47
47
  resourceGroupName: resourceGroup.name,
48
48
  skuName: props.skuName ?? 'standard',
@@ -42,7 +42,7 @@ export class AzureLogAnalyticsWorkspaceManager {
42
42
 
43
43
  const logAnalyticsWorkspace = new LogAnalyticsWorkspace(scope, `${id}-lw`, {
44
44
  ...props,
45
- name: scope.resourceNameFormatter.format(props.name),
45
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.logAnalyticsWorkspace),
46
46
  location: resourceGroup.location,
47
47
  resourceGroupName: resourceGroup.name,
48
48
  tags: props.tags ?? {
@@ -33,7 +33,7 @@ export class AzureResourceGroupManager {
33
33
 
34
34
  const resourceGroup = new ResourceGroup(scope, `${id}-rg`, {
35
35
  ...props,
36
- name: scope.resourceNameFormatter.format(props.name),
36
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.resourceGroup),
37
37
  location: props.location,
38
38
  tags: props.tags ?? {
39
39
  environment: scope.props.stage,
@@ -50,7 +50,7 @@ export class AzureServicebusManager {
50
50
 
51
51
  const servicebusNamespace = new ServicebusNamespace(scope, `${id}-sn`, {
52
52
  ...props,
53
- name: scope.resourceNameFormatter.format(props.name),
53
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.serviceBusNamespace),
54
54
  resourceGroupName: resourceGroup.name,
55
55
  location: resourceGroup.location,
56
56
  identity: {
@@ -81,7 +81,7 @@ export class AzureServicebusManager {
81
81
 
82
82
  const servicebusTopic = new ServicebusTopic(scope, `${id}-st`, {
83
83
  ...props,
84
- name: scope.resourceNameFormatter.format(props.name),
84
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.serviceBusTopic),
85
85
  namespaceId: props.namespaceId,
86
86
  })
87
87
 
@@ -104,7 +104,7 @@ export class AzureServicebusManager {
104
104
 
105
105
  const servicebusQueue = new ServicebusQueue(scope, `${id}-sq`, {
106
106
  ...props,
107
- name: scope.resourceNameFormatter.format(props.name),
107
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.serviceBusQueue),
108
108
  namespaceId: props.namespaceId,
109
109
  })
110
110
 
@@ -127,7 +127,7 @@ export class AzureServicebusManager {
127
127
 
128
128
  const servicebusSubscription = new ServicebusSubscription(scope, `${id}-ss`, {
129
129
  ...props,
130
- name: scope.resourceNameFormatter.format(props.name),
130
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.serviceBusSubscription),
131
131
  maxDeliveryCount: props.maxDeliveryCount || 1,
132
132
  })
133
133
 
@@ -48,7 +48,10 @@ export class AzureStorageManager {
48
48
  ...props,
49
49
  accountTier: props.accountTier ?? 'Standard',
50
50
  location: props.location ?? resourceGroup.location,
51
- name: `${props.name}-${scope.props.stage}`.replace(/\W/g, '').toLowerCase(),
51
+ name: scope.resourceNameFormatter
52
+ .format(props.name, scope.props.resourceNameOptions?.storageAccount)
53
+ .replace(/\W/g, '')
54
+ .toLowerCase(),
52
55
  resourceGroupName: resourceGroup.name,
53
56
  tags: props.tags ?? {
54
57
  environment: scope.props.stage,
@@ -74,7 +77,7 @@ export class AzureStorageManager {
74
77
 
75
78
  const storageContainer = new StorageContainer(scope, `${id}-sc`, {
76
79
  ...props,
77
- name: scope.resourceNameFormatter.format(props.name),
80
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.storageContainer),
78
81
  })
79
82
 
80
83
  createAzureTfOutput(`${id}-storageContainerName`, scope, storageContainer.name)
@@ -115,7 +118,7 @@ export class AzureStorageManager {
115
118
 
116
119
  const storageBlob = new StorageBlob(scope, `${id}-sb`, {
117
120
  ...props,
118
- name: scope.resourceNameFormatter.format(props.name),
121
+ name: scope.resourceNameFormatter.format(props.name, scope.props.resourceNameOptions?.storageBlob),
119
122
  storageAccountName: storageAccount.name,
120
123
  storageContainerName: storageContainer.name,
121
124
  })