@microsoft/terraform-cdk-constructs 1.3.0 → 1.4.0
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.
- package/.jsii +22673 -19618
- package/API.md +25592 -20586
- package/lib/azure-actiongroup/lib/action-group.js +1 -1
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
- package/lib/azure-aks/lib/aks-cluster.js +1 -1
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
- package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
- package/lib/azure-dnszone/lib/dns-zone.js +1 -1
- package/lib/azure-metricalert/lib/metric-alert.js +1 -1
- package/lib/azure-networkinterface/lib/network-interface.js +1 -1
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
- package/lib/azure-policyassignment/lib/policy-assignment.d.ts +7 -0
- package/lib/azure-policyassignment/lib/policy-assignment.js +11 -2
- package/lib/azure-policydefinition/lib/policy-definition.d.ts +21 -0
- package/lib/azure-policydefinition/lib/policy-definition.js +40 -3
- package/lib/azure-policydefinition/test/policy-definition.spec.js +211 -1
- package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
- package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
- package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
- package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
- package/lib/azure-roledefinition/lib/role-definition.js +1 -1
- package/lib/azure-storageaccount/lib/storage-account.js +1 -1
- package/lib/azure-subnet/lib/subnet.js +1 -1
- package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
- package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/index.d.ts +5 -0
- package/lib/azure-virtualnetworkmanager/lib/index.js +6 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-schemas.d.ts +24 -0
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-schemas.js +169 -0
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr-schemas.js +206 -0
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.d.ts +170 -0
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +214 -0
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.d.ts +175 -0
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +206 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/utils/cidr-validator.d.ts +225 -0
- package/lib/azure-virtualnetworkmanager/lib/utils/cidr-validator.js +389 -0
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +56 -0
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +29 -2
- package/lib/azure-virtualnetworkmanager/test/cidr-validator.spec.d.ts +6 -0
- package/lib/azure-virtualnetworkmanager/test/cidr-validator.spec.js +292 -0
- package/lib/azure-virtualnetworkmanager/test/ipam-pool-static-cidr.spec.d.ts +6 -0
- package/lib/azure-virtualnetworkmanager/test/ipam-pool-static-cidr.spec.js +430 -0
- package/lib/azure-virtualnetworkmanager/test/ipam-pool.spec.d.ts +6 -0
- package/lib/azure-virtualnetworkmanager/test/ipam-pool.spec.js +372 -0
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +2 -1
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +30 -3
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +105 -1
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
- package/lib/core-azure/lib/azapi/azapi-resource.d.ts +28 -0
- package/lib/core-azure/lib/azapi/azapi-resource.js +60 -10
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
- package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
- package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
- package/lib/testing/index.js +2 -2
- package/lib/testing/lib/cleanup.js +1 -1
- package/lib/testing/lib/metadata.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure Virtual Network Manager IPAM Pool Static CIDR implementation using AzapiResource framework
|
|
3
|
+
*
|
|
4
|
+
* This class provides a unified implementation for explicitly allocating static CIDR blocks
|
|
5
|
+
* within an IPAM pool. Static CIDRs allow precise control over IP address space allocation
|
|
6
|
+
* and enable manual CIDR reservation within the pool's address space.
|
|
7
|
+
*
|
|
8
|
+
* Supported API Versions:
|
|
9
|
+
* - 2023-11-01 (Maintenance)
|
|
10
|
+
* - 2024-05-01 (Active, Latest)
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Automatic latest version resolution when no version is specified
|
|
14
|
+
* - Explicit version pinning for stability requirements
|
|
15
|
+
* - Schema-driven validation and transformation
|
|
16
|
+
* - CIDR format validation at construct creation time
|
|
17
|
+
* - Automatic IP address count calculation from CIDR prefix
|
|
18
|
+
* - Full backward compatibility
|
|
19
|
+
* - JSII compliance for multi-language support
|
|
20
|
+
*/
|
|
21
|
+
import * as cdktf from "cdktf";
|
|
22
|
+
import { Construct } from "constructs";
|
|
23
|
+
import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
|
|
24
|
+
import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
|
|
25
|
+
/**
|
|
26
|
+
* Properties for the Azure Virtual Network Manager IPAM Pool Static CIDR
|
|
27
|
+
*
|
|
28
|
+
* Extends AzapiResourceProps with Static CIDR specific properties
|
|
29
|
+
*/
|
|
30
|
+
export interface IpamPoolStaticCidrProps extends AzapiResourceProps {
|
|
31
|
+
/**
|
|
32
|
+
* Resource ID of the parent IPAM Pool
|
|
33
|
+
* @example "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.Network/networkManagers/vnm/ipamPools/prod-pool"
|
|
34
|
+
*/
|
|
35
|
+
readonly ipamPoolId: string;
|
|
36
|
+
/**
|
|
37
|
+
* Array of IP address prefixes in CIDR notation
|
|
38
|
+
* Must be valid CIDR format (e.g., ["10.0.0.0/24"])
|
|
39
|
+
* Must be contained within the parent pool's address space
|
|
40
|
+
* @example ["10.0.1.0/24"]
|
|
41
|
+
*/
|
|
42
|
+
readonly addressPrefixes: string[];
|
|
43
|
+
/**
|
|
44
|
+
* Optional description of the static CIDR allocation
|
|
45
|
+
* @example "Reserved for production web servers"
|
|
46
|
+
*/
|
|
47
|
+
readonly description?: string;
|
|
48
|
+
/**
|
|
49
|
+
* The lifecycle rules to ignore changes
|
|
50
|
+
* @example ["tags"]
|
|
51
|
+
*/
|
|
52
|
+
readonly ignoreChanges?: string[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Properties for Static CIDR body
|
|
56
|
+
*/
|
|
57
|
+
export interface IpamPoolStaticCidrProperties {
|
|
58
|
+
readonly addressPrefixes: string[];
|
|
59
|
+
readonly description?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The resource body interface for Azure Static CIDR API calls
|
|
63
|
+
*/
|
|
64
|
+
export interface IpamPoolStaticCidrBody {
|
|
65
|
+
readonly properties: IpamPoolStaticCidrProperties;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Azure Virtual Network Manager IPAM Pool Static CIDR implementation
|
|
69
|
+
*
|
|
70
|
+
* Static CIDRs explicitly allocate IP address blocks within an IPAM pool,
|
|
71
|
+
* providing precise control over address space reservations. This is useful
|
|
72
|
+
* for manual IP address management or reserving specific ranges for particular
|
|
73
|
+
* purposes within the larger pool.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* // Allocate a static CIDR block in a pool:
|
|
77
|
+
* const staticCidr = new IpamPoolStaticCidr(this, "web-servers", {
|
|
78
|
+
* name: "web-servers-cidr",
|
|
79
|
+
* ipamPoolId: ipamPool.id,
|
|
80
|
+
* addressPrefixes: ["10.0.1.0/24"],
|
|
81
|
+
* description: "Reserved for production web servers"
|
|
82
|
+
* });
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* // Allocate with explicit IP count:
|
|
86
|
+
* const staticCidr = new IpamPoolStaticCidr(this, "database-servers", {
|
|
87
|
+
* name: "db-servers-cidr",
|
|
88
|
+
* ipamPoolId: ipamPool.id,
|
|
89
|
+
* addressPrefixes: ["10.0.2.0/24"],
|
|
90
|
+
* description: "Reserved for database servers",
|
|
91
|
+
* apiVersion: "2024-05-01"
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
* @stability stable
|
|
95
|
+
*/
|
|
96
|
+
export declare class IpamPoolStaticCidr extends AzapiResource {
|
|
97
|
+
/**
|
|
98
|
+
* Validates address prefix for correct CIDR format
|
|
99
|
+
* Throws descriptive errors if validation fails
|
|
100
|
+
*
|
|
101
|
+
* @param addressPrefix - CIDR block to validate
|
|
102
|
+
* @throws Error if validation fails
|
|
103
|
+
*/
|
|
104
|
+
private static validateAddressPrefix;
|
|
105
|
+
/**
|
|
106
|
+
* The input properties for this Static CIDR instance
|
|
107
|
+
*/
|
|
108
|
+
readonly props: IpamPoolStaticCidrProps;
|
|
109
|
+
readonly idOutput: cdktf.TerraformOutput;
|
|
110
|
+
readonly nameOutput: cdktf.TerraformOutput;
|
|
111
|
+
readonly addressPrefixOutput: cdktf.TerraformOutput;
|
|
112
|
+
readonly resourceName: string;
|
|
113
|
+
private readonly _calculatedAddressCount;
|
|
114
|
+
/**
|
|
115
|
+
* Creates a new Azure Virtual Network Manager IPAM Pool Static CIDR using the AzapiResource framework
|
|
116
|
+
*
|
|
117
|
+
* @param scope - The scope in which to define this construct
|
|
118
|
+
* @param id - The unique identifier for this instance
|
|
119
|
+
* @param props - Configuration properties for the Static CIDR
|
|
120
|
+
*/
|
|
121
|
+
constructor(scope: Construct, id: string, props: IpamPoolStaticCidrProps);
|
|
122
|
+
/**
|
|
123
|
+
* Resolves the parent resource ID for the Static CIDR
|
|
124
|
+
* Static CIDRs are scoped to IPAM Pools
|
|
125
|
+
*/
|
|
126
|
+
protected resolveParentId(props: any): string;
|
|
127
|
+
/**
|
|
128
|
+
* Gets the default API version to use when no explicit version is specified
|
|
129
|
+
*/
|
|
130
|
+
protected defaultVersion(): string;
|
|
131
|
+
/**
|
|
132
|
+
* Gets the Azure resource type for Static CIDRs
|
|
133
|
+
*/
|
|
134
|
+
protected resourceType(): string;
|
|
135
|
+
/**
|
|
136
|
+
* Gets the API schema for the resolved version
|
|
137
|
+
*/
|
|
138
|
+
protected apiSchema(): ApiSchema;
|
|
139
|
+
/**
|
|
140
|
+
* Creates the resource body for the Azure API call
|
|
141
|
+
* Note: Child resources do not include location or tags
|
|
142
|
+
*/
|
|
143
|
+
protected createResourceBody(props: any): any;
|
|
144
|
+
/**
|
|
145
|
+
* Get the address prefixes of this Static CIDR
|
|
146
|
+
* Returns the input addressPrefixes array
|
|
147
|
+
*/
|
|
148
|
+
get addressPrefixes(): string[];
|
|
149
|
+
/**
|
|
150
|
+
* Get the calculated number of IP addresses in this CIDR block
|
|
151
|
+
* This is automatically calculated from the CIDR prefix at construct creation time
|
|
152
|
+
*
|
|
153
|
+
* @returns Total count of IP addresses in the CIDR block
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* const staticCidr = new IpamPoolStaticCidr(this, "cidr", {
|
|
157
|
+
* addressPrefixes: ["10.0.1.0/24"]
|
|
158
|
+
* });
|
|
159
|
+
* console.log(staticCidr.calculatedAddressCount); // 256
|
|
160
|
+
*/
|
|
161
|
+
get calculatedAddressCount(): number;
|
|
162
|
+
/**
|
|
163
|
+
* Get the provisioning state of the Static CIDR
|
|
164
|
+
*/
|
|
165
|
+
get provisioningState(): string;
|
|
166
|
+
/**
|
|
167
|
+
* Applies ignore changes lifecycle rules if specified in props
|
|
168
|
+
*/
|
|
169
|
+
private _applyIgnoreChanges;
|
|
170
|
+
}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.IpamPoolStaticCidr = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
/**
|
|
7
|
+
* Azure Virtual Network Manager IPAM Pool Static CIDR implementation using AzapiResource framework
|
|
8
|
+
*
|
|
9
|
+
* This class provides a unified implementation for explicitly allocating static CIDR blocks
|
|
10
|
+
* within an IPAM pool. Static CIDRs allow precise control over IP address space allocation
|
|
11
|
+
* and enable manual CIDR reservation within the pool's address space.
|
|
12
|
+
*
|
|
13
|
+
* Supported API Versions:
|
|
14
|
+
* - 2023-11-01 (Maintenance)
|
|
15
|
+
* - 2024-05-01 (Active, Latest)
|
|
16
|
+
*
|
|
17
|
+
* Features:
|
|
18
|
+
* - Automatic latest version resolution when no version is specified
|
|
19
|
+
* - Explicit version pinning for stability requirements
|
|
20
|
+
* - Schema-driven validation and transformation
|
|
21
|
+
* - CIDR format validation at construct creation time
|
|
22
|
+
* - Automatic IP address count calculation from CIDR prefix
|
|
23
|
+
* - Full backward compatibility
|
|
24
|
+
* - JSII compliance for multi-language support
|
|
25
|
+
*/
|
|
26
|
+
const cdktf = require("cdktf");
|
|
27
|
+
const ipam_pool_static_cidr_schemas_1 = require("./ipam-pool-static-cidr-schemas");
|
|
28
|
+
const cidr_validator_1 = require("./utils/cidr-validator");
|
|
29
|
+
const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
|
|
30
|
+
/**
|
|
31
|
+
* Azure Virtual Network Manager IPAM Pool Static CIDR implementation
|
|
32
|
+
*
|
|
33
|
+
* Static CIDRs explicitly allocate IP address blocks within an IPAM pool,
|
|
34
|
+
* providing precise control over address space reservations. This is useful
|
|
35
|
+
* for manual IP address management or reserving specific ranges for particular
|
|
36
|
+
* purposes within the larger pool.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* // Allocate a static CIDR block in a pool:
|
|
40
|
+
* const staticCidr = new IpamPoolStaticCidr(this, "web-servers", {
|
|
41
|
+
* name: "web-servers-cidr",
|
|
42
|
+
* ipamPoolId: ipamPool.id,
|
|
43
|
+
* addressPrefixes: ["10.0.1.0/24"],
|
|
44
|
+
* description: "Reserved for production web servers"
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* // Allocate with explicit IP count:
|
|
49
|
+
* const staticCidr = new IpamPoolStaticCidr(this, "database-servers", {
|
|
50
|
+
* name: "db-servers-cidr",
|
|
51
|
+
* ipamPoolId: ipamPool.id,
|
|
52
|
+
* addressPrefixes: ["10.0.2.0/24"],
|
|
53
|
+
* description: "Reserved for database servers",
|
|
54
|
+
* apiVersion: "2024-05-01"
|
|
55
|
+
* });
|
|
56
|
+
*
|
|
57
|
+
* @stability stable
|
|
58
|
+
*/
|
|
59
|
+
class IpamPoolStaticCidr extends azapi_resource_1.AzapiResource {
|
|
60
|
+
/**
|
|
61
|
+
* Validates address prefix for correct CIDR format
|
|
62
|
+
* Throws descriptive errors if validation fails
|
|
63
|
+
*
|
|
64
|
+
* @param addressPrefix - CIDR block to validate
|
|
65
|
+
* @throws Error if validation fails
|
|
66
|
+
*/
|
|
67
|
+
static validateAddressPrefix(addressPrefix) {
|
|
68
|
+
if (!addressPrefix) {
|
|
69
|
+
throw new Error("Address prefix is required");
|
|
70
|
+
}
|
|
71
|
+
const validation = (0, cidr_validator_1.validateCidr)(addressPrefix);
|
|
72
|
+
if (!validation.valid) {
|
|
73
|
+
throw new Error(`Invalid address prefix: ${addressPrefix}. ${validation.errors.join(", ")}`);
|
|
74
|
+
}
|
|
75
|
+
// Log warnings if any (e.g., misaligned network address)
|
|
76
|
+
if (validation.warnings.length > 0) {
|
|
77
|
+
console.warn(`Warning for address prefix ${addressPrefix}: ${validation.warnings.join(", ")}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Creates a new Azure Virtual Network Manager IPAM Pool Static CIDR using the AzapiResource framework
|
|
82
|
+
*
|
|
83
|
+
* @param scope - The scope in which to define this construct
|
|
84
|
+
* @param id - The unique identifier for this instance
|
|
85
|
+
* @param props - Configuration properties for the Static CIDR
|
|
86
|
+
*/
|
|
87
|
+
constructor(scope, id, props) {
|
|
88
|
+
// Validate CIDR formats before construction
|
|
89
|
+
if (!props.addressPrefixes || props.addressPrefixes.length === 0) {
|
|
90
|
+
throw new Error("At least one address prefix is required");
|
|
91
|
+
}
|
|
92
|
+
props.addressPrefixes.forEach((prefix) => {
|
|
93
|
+
IpamPoolStaticCidr.validateAddressPrefix(prefix);
|
|
94
|
+
});
|
|
95
|
+
super(scope, id, props);
|
|
96
|
+
this.props = props;
|
|
97
|
+
// Calculate address count from first CIDR prefix
|
|
98
|
+
this._calculatedAddressCount = (0, cidr_validator_1.calculateAddressCount)(props.addressPrefixes[0]);
|
|
99
|
+
// Extract properties from the AZAPI resource outputs using Terraform interpolation
|
|
100
|
+
this.resourceName = `\${${this.terraformResource.fqn}.name}`;
|
|
101
|
+
// Create Terraform outputs for easy access and referencing from other resources
|
|
102
|
+
this.idOutput = new cdktf.TerraformOutput(this, "id", {
|
|
103
|
+
value: this.id,
|
|
104
|
+
description: "The ID of the Static CIDR",
|
|
105
|
+
});
|
|
106
|
+
this.nameOutput = new cdktf.TerraformOutput(this, "name", {
|
|
107
|
+
value: this.resourceName,
|
|
108
|
+
description: "The name of the Static CIDR",
|
|
109
|
+
});
|
|
110
|
+
this.addressPrefixOutput = new cdktf.TerraformOutput(this, "addressPrefixes", {
|
|
111
|
+
value: JSON.stringify(props.addressPrefixes),
|
|
112
|
+
description: "The address prefixes of the Static CIDR",
|
|
113
|
+
});
|
|
114
|
+
// Override logical IDs to match naming convention
|
|
115
|
+
this.idOutput.overrideLogicalId("id");
|
|
116
|
+
this.nameOutput.overrideLogicalId("name");
|
|
117
|
+
this.addressPrefixOutput.overrideLogicalId("addressPrefixes");
|
|
118
|
+
// Apply ignore changes if specified
|
|
119
|
+
this._applyIgnoreChanges();
|
|
120
|
+
}
|
|
121
|
+
// =============================================================================
|
|
122
|
+
// REQUIRED ABSTRACT METHODS FROM AzapiResource
|
|
123
|
+
// =============================================================================
|
|
124
|
+
/**
|
|
125
|
+
* Resolves the parent resource ID for the Static CIDR
|
|
126
|
+
* Static CIDRs are scoped to IPAM Pools
|
|
127
|
+
*/
|
|
128
|
+
resolveParentId(props) {
|
|
129
|
+
const typedProps = props;
|
|
130
|
+
return typedProps.ipamPoolId;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Gets the default API version to use when no explicit version is specified
|
|
134
|
+
*/
|
|
135
|
+
defaultVersion() {
|
|
136
|
+
return "2024-05-01";
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Gets the Azure resource type for Static CIDRs
|
|
140
|
+
*/
|
|
141
|
+
resourceType() {
|
|
142
|
+
return ipam_pool_static_cidr_schemas_1.STATIC_CIDR_TYPE;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Gets the API schema for the resolved version
|
|
146
|
+
*/
|
|
147
|
+
apiSchema() {
|
|
148
|
+
return this.resolveSchema();
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Creates the resource body for the Azure API call
|
|
152
|
+
* Note: Child resources do not include location or tags
|
|
153
|
+
*/
|
|
154
|
+
createResourceBody(props) {
|
|
155
|
+
const typedProps = props;
|
|
156
|
+
return {
|
|
157
|
+
properties: {
|
|
158
|
+
addressPrefixes: typedProps.addressPrefixes,
|
|
159
|
+
description: typedProps.description,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
// =============================================================================
|
|
164
|
+
// PUBLIC METHODS FOR STATIC CIDR OPERATIONS
|
|
165
|
+
// =============================================================================
|
|
166
|
+
/**
|
|
167
|
+
* Get the address prefixes of this Static CIDR
|
|
168
|
+
* Returns the input addressPrefixes array
|
|
169
|
+
*/
|
|
170
|
+
get addressPrefixes() {
|
|
171
|
+
return this.props.addressPrefixes;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Get the calculated number of IP addresses in this CIDR block
|
|
175
|
+
* This is automatically calculated from the CIDR prefix at construct creation time
|
|
176
|
+
*
|
|
177
|
+
* @returns Total count of IP addresses in the CIDR block
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* const staticCidr = new IpamPoolStaticCidr(this, "cidr", {
|
|
181
|
+
* addressPrefixes: ["10.0.1.0/24"]
|
|
182
|
+
* });
|
|
183
|
+
* console.log(staticCidr.calculatedAddressCount); // 256
|
|
184
|
+
*/
|
|
185
|
+
get calculatedAddressCount() {
|
|
186
|
+
return this._calculatedAddressCount;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get the provisioning state of the Static CIDR
|
|
190
|
+
*/
|
|
191
|
+
get provisioningState() {
|
|
192
|
+
return `\${${this.terraformResource.fqn}.output.properties.provisioningState}`;
|
|
193
|
+
}
|
|
194
|
+
// =============================================================================
|
|
195
|
+
// PRIVATE HELPER METHODS
|
|
196
|
+
// =============================================================================
|
|
197
|
+
/**
|
|
198
|
+
* Applies ignore changes lifecycle rules if specified in props
|
|
199
|
+
*/
|
|
200
|
+
_applyIgnoreChanges() {
|
|
201
|
+
if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
|
|
202
|
+
this.terraformResource.addOverride("lifecycle", {
|
|
203
|
+
ignore_changes: this.props.ignoreChanges,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
exports.IpamPoolStaticCidr = IpamPoolStaticCidr;
|
|
209
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
210
|
+
IpamPoolStaticCidr[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPoolStaticCidr", version: "1.4.0" };
|
|
211
|
+
(() => {
|
|
212
|
+
azapi_resource_1.AzapiResource.registerSchemas(ipam_pool_static_cidr_schemas_1.STATIC_CIDR_TYPE, ipam_pool_static_cidr_schemas_1.ALL_STATIC_CIDR_VERSIONS);
|
|
213
|
+
})();
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbS1wb29sLXN0YXRpYy1jaWRyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXZpcnR1YWxuZXR3b3JrbWFuYWdlci9saWIvaXBhbS1wb29sLXN0YXRpYy1jaWRyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFFSCwrQkFBK0I7QUFFL0IsbUZBR3lDO0FBQ3pDLDJEQUE2RTtBQUM3RSw4RUFHbUQ7QUFtRG5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSw4QkFBYTtJQUtuRDs7Ozs7O09BTUc7SUFDSyxNQUFNLENBQUMscUJBQXFCLENBQUMsYUFBcUI7UUFDeEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBQSw2QkFBWSxFQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FDYiwyQkFBMkIsYUFBYSxLQUFLLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzVFLENBQUM7UUFDSixDQUFDO1FBRUQseURBQXlEO1FBQ3pELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLElBQUksQ0FDViw4QkFBOEIsYUFBYSxLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2pGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQWtCRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FB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QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyx1Q0FBdUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLHlCQUF5QjtJQUN6QixnRkFBZ0Y7SUFFaEY7O09BRUc7SUFDSyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzlDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7YUFDekMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7O0FBMU1ILGdEQTJNQzs7O0FBMU1DO0lBQ0UsOEJBQWEsQ0FBQyxlQUFlLENBQUMsZ0RBQWdCLEVBQUUsd0RBQXdCLENBQUMsQ0FBQztBQUM1RSxDQUFDLEdBQUEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXp1cmUgVmlydHVhbCBOZXR3b3JrIE1hbmFnZXIgSVBBTSBQb29sIFN0YXRpYyBDSURSIGltcGxlbWVudGF0aW9uIHVzaW5nIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHVuaWZpZWQgaW1wbGVtZW50YXRpb24gZm9yIGV4cGxpY2l0bHkgYWxsb2NhdGluZyBzdGF0aWMgQ0lEUiBibG9ja3NcbiAqIHdpdGhpbiBhbiBJUEFNIHBvb2wuIFN0YXRpYyBDSURScyBhbGxvdyBwcmVjaXNlIGNvbnRyb2wgb3ZlciBJUCBhZGRyZXNzIHNwYWNlIGFsbG9jYXRpb25cbiAqIGFuZCBlbmFibGUgbWFudWFsIENJRFIgcmVzZXJ2YXRpb24gd2l0aGluIHRoZSBwb29sJ3MgYWRkcmVzcyBzcGFjZS5cbiAqXG4gKiBTdXBwb3J0ZWQgQVBJIFZlcnNpb25zOlxuICogLSAyMDIzLTExLTAxIChNYWludGVuYW5jZSlcbiAqIC0gMjAyNC0wNS0wMSAoQWN0aXZlLCBMYXRlc3QpXG4gKlxuICogRmVhdHVyZXM6XG4gKiAtIEF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uIHdoZW4gbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAqIC0gRXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nIGZvciBzdGFiaWxpdHkgcmVxdWlyZW1lbnRzXG4gKiAtIFNjaGVtYS1kcml2ZW4gdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb25cbiAqIC0gQ0lEUiBmb3JtYXQgdmFsaWRhdGlvbiBhdCBjb25zdHJ1Y3QgY3JlYXRpb24gdGltZVxuICogLSBBdXRvbWF0aWMgSVAgYWRkcmVzcyBjb3VudCBjYWxjdWxhdGlvbiBmcm9tIENJRFIgcHJlZml4XG4gKiAtIEZ1bGwgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICogLSBKU0lJIGNvbXBsaWFuY2UgZm9yIG11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbiAqL1xuXG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBBTExfU1RBVElDX0NJRFJfVkVSU0lPTlMsXG4gIFNUQVRJQ19DSURSX1RZUEUsXG59IGZyb20gXCIuL2lwYW0tcG9vbC1zdGF0aWMtY2lkci1zY2hlbWFzXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVBZGRyZXNzQ291bnQsIHZhbGlkYXRlQ2lkciB9IGZyb20gXCIuL3V0aWxzL2NpZHItdmFsaWRhdG9yXCI7XG5pbXBvcnQge1xuICBBemFwaVJlc291cmNlLFxuICBBemFwaVJlc291cmNlUHJvcHMsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9hemFwaS1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBBenVyZSBWaXJ0dWFsIE5ldHdvcmsgTWFuYWdlciBJUEFNIFBvb2wgU3RhdGljIENJRFJcbiAqXG4gKiBFeHRlbmRzIEF6YXBpUmVzb3VyY2VQcm9wcyB3aXRoIFN0YXRpYyBDSURSIHNwZWNpZmljIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJcGFtUG9vbFN0YXRpY0NpZHJQcm9wcyBleHRlbmRzIEF6YXBpUmVzb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBSZXNvdXJjZSBJRCBvZiB0aGUgcGFyZW50IElQQU0gUG9vbFxuICAgKiBAZXhhbXBsZSBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvbmV0d29ya01hbmFnZXJzL3ZubS9pcGFtUG9vbHMvcHJvZC1wb29sXCJcbiAgICovXG4gIHJlYWRvbmx5IGlwYW1Qb29sSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQXJyYXkgb2YgSVAgYWRkcmVzcyBwcmVmaXhlcyBpbiBDSURSIG5vdGF0aW9uXG4gICAqIE11c3QgYmUgdmFsaWQgQ0lEUiBmb3JtYXQgKGUuZy4sIFtcIjEwLjAuMC4wLzI0XCJdKVxuICAgKiBNdXN0IGJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHBhcmVudCBwb29sJ3MgYWRkcmVzcyBzcGFjZVxuICAgKiBAZXhhbXBsZSBbXCIxMC4wLjEuMC8yNFwiXVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkcmVzc1ByZWZpeGVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN0YXRpYyBDSURSIGFsbG9jYXRpb25cbiAgICogQGV4YW1wbGUgXCJSZXNlcnZlZCBmb3IgcHJvZHVjdGlvbiB3ZWIgc2VydmVyc1wiXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxpZmVjeWNsZSBydWxlcyB0byBpZ25vcmUgY2hhbmdlc1xuICAgKiBAZXhhbXBsZSBbXCJ0YWdzXCJdXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVDaGFuZ2VzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgU3RhdGljIENJRFIgYm9keVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElwYW1Qb29sU3RhdGljQ2lkclByb3BlcnRpZXMge1xuICByZWFkb25seSBhZGRyZXNzUHJlZml4ZXM6IHN0cmluZ1tdO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcmVzb3VyY2UgYm9keSBpbnRlcmZhY2UgZm9yIEF6dXJlIFN0YXRpYyBDSURSIEFQSSBjYWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElwYW1Qb29sU3RhdGljQ2lkckJvZHkge1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBJcGFtUG9vbFN0YXRpY0NpZHJQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIEF6dXJlIFZpcnR1YWwgTmV0d29yayBNYW5hZ2VyIElQQU0gUG9vbCBTdGF0aWMgQ0lEUiBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFN0YXRpYyBDSURScyBleHBsaWNpdGx5IGFsbG9jYXRlIElQIGFkZHJlc3MgYmxvY2tzIHdpdGhpbiBhbiBJUEFNIHBvb2wsXG4gKiBwcm92aWRpbmcgcHJlY2lzZSBjb250cm9sIG92ZXIgYWRkcmVzcyBzcGFjZSByZXNlcnZhdGlvbnMuIFRoaXMgaXMgdXNlZnVsXG4gKiBmb3IgbWFudWFsIElQIGFkZHJlc3MgbWFuYWdlbWVudCBvciByZXNlcnZpbmcgc3BlY2lmaWMgcmFuZ2VzIGZvciBwYXJ0aWN1bGFyXG4gKiBwdXJwb3NlcyB3aXRoaW4gdGhlIGxhcmdlciBwb29sLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBbGxvY2F0ZSBhIHN0YXRpYyBDSURSIGJsb2NrIGluIGEgcG9vbDpcbiAqIGNvbnN0IHN0YXRpY0NpZHIgPSBuZXcgSXBhbVBvb2xTdGF0aWNDaWRyKHRoaXMsIFwid2ViLXNlcnZlcnNcIiwge1xuICogICBuYW1lOiBcIndlYi1zZXJ2ZXJzLWNpZHJcIixcbiAqICAgaXBhbVBvb2xJZDogaXBhbVBvb2wuaWQsXG4gKiAgIGFkZHJlc3NQcmVmaXhlczogW1wiMTAuMC4xLjAvMjRcIl0sXG4gKiAgIGRlc2NyaXB0aW9uOiBcIlJlc2VydmVkIGZvciBwcm9kdWN0aW9uIHdlYiBzZXJ2ZXJzXCJcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBbGxvY2F0ZSB3aXRoIGV4cGxpY2l0IElQIGNvdW50OlxuICogY29uc3Qgc3RhdGljQ2lkciA9IG5ldyBJcGFtUG9vbFN0YXRpY0NpZHIodGhpcywgXCJkYXRhYmFzZS1zZXJ2ZXJzXCIsIHtcbiAqICAgbmFtZTogXCJkYi1zZXJ2ZXJzLWNpZHJcIixcbiAqICAgaXBhbVBvb2xJZDogaXBhbVBvb2wuaWQsXG4gKiAgIGFkZHJlc3NQcmVmaXhlczogW1wiMTAuMC4yLjAvMjRcIl0sXG4gKiAgIGRlc2NyaXB0aW9uOiBcIlJlc2VydmVkIGZvciBkYXRhYmFzZSBzZXJ2ZXJzXCIsXG4gKiAgIGFwaVZlcnNpb246IFwiMjAyNC0wNS0wMVwiXG4gKiB9KTtcbiAqXG4gKiBAc3RhYmlsaXR5IHN0YWJsZVxuICovXG5leHBvcnQgY2xhc3MgSXBhbVBvb2xTdGF0aWNDaWRyIGV4dGVuZHMgQXphcGlSZXNvdXJjZSB7XG4gIHN0YXRpYyB7XG4gICAgQXphcGlSZXNvdXJjZS5yZWdpc3RlclNjaGVtYXMoU1RBVElDX0NJRFJfVFlQRSwgQUxMX1NUQVRJQ19DSURSX1ZFUlNJT05TKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYWRkcmVzcyBwcmVmaXggZm9yIGNvcnJlY3QgQ0lEUiBmb3JtYXRcbiAgICogVGhyb3dzIGRlc2NyaXB0aXZlIGVycm9ycyBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzUHJlZml4IC0gQ0lEUiBibG9jayB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHNcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlQWRkcmVzc1ByZWZpeChhZGRyZXNzUHJlZml4OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWFkZHJlc3NQcmVmaXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkFkZHJlc3MgcHJlZml4IGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZUNpZHIoYWRkcmVzc1ByZWZpeCk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGFkZHJlc3MgcHJlZml4OiAke2FkZHJlc3NQcmVmaXh9LiAke3ZhbGlkYXRpb24uZXJyb3JzLmpvaW4oXCIsIFwiKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBMb2cgd2FybmluZ3MgaWYgYW55IChlLmcuLCBtaXNhbGlnbmVkIG5ldHdvcmsgYWRkcmVzcylcbiAgICBpZiAodmFsaWRhdGlvbi53YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBXYXJuaW5nIGZvciBhZGRyZXNzIHByZWZpeCAke2FkZHJlc3NQcmVmaXh9OiAke3ZhbGlkYXRpb24ud2FybmluZ3Muam9pbihcIiwgXCIpfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgcHJvcGVydGllcyBmb3IgdGhpcyBTdGF0aWMgQ0lEUiBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBJcGFtUG9vbFN0YXRpY0NpZHJQcm9wcztcblxuICAvLyBPdXRwdXQgcHJvcGVydGllcyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nXG4gIHB1YmxpYyByZWFkb25seSBpZE91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZU91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkcmVzc1ByZWZpeE91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuXG4gIC8vIFB1YmxpYyBwcm9wZXJ0aWVzXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZU5hbWU6IHN0cmluZztcblxuICAvLyBTdG9yZSBjYWxjdWxhdGVkIGFkZHJlc3MgY291bnRcbiAgcHJpdmF0ZSByZWFkb25seSBfY2FsY3VsYXRlZEFkZHJlc3NDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEF6dXJlIFZpcnR1YWwgTmV0d29yayBNYW5hZ2VyIElQQU0gUG9vbCBTdGF0aWMgQ0lEUiB1c2luZyB0aGUgQXphcGlSZXNvdXJjZSBmcmFtZXdvcmtcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgaW5zdGFuY2VcbiAgICogQHBhcmFtIHByb3BzIC0gQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgU3RhdGljIENJRFJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJcGFtUG9vbFN0YXRpY0NpZHJQcm9wcykge1xuICAgIC8vIFZhbGlkYXRlIENJRFIgZm9ybWF0cyBiZWZvcmUgY29uc3RydWN0aW9uXG4gICAgaWYgKCFwcm9wcy5hZGRyZXNzUHJlZml4ZXMgfHwgcHJvcHMuYWRkcmVzc1ByZWZpeGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXQgbGVhc3Qgb25lIGFkZHJlc3MgcHJlZml4IGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cbiAgICBwcm9wcy5hZGRyZXNzUHJlZml4ZXMuZm9yRWFjaCgocHJlZml4KSA9PiB7XG4gICAgICBJcGFtUG9vbFN0YXRpY0NpZHIudmFsaWRhdGVBZGRyZXNzUHJlZml4KHByZWZpeCk7XG4gICAgfSk7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIC8vIENhbGN1bGF0ZSBhZGRyZXNzIGNvdW50IGZyb20gZmlyc3QgQ0lEUiBwcmVmaXhcbiAgICB0aGlzLl9jYWxjdWxhdGVkQWRkcmVzc0NvdW50ID0gY2FsY3VsYXRlQWRkcmVzc0NvdW50KFxuICAgICAgcHJvcHMuYWRkcmVzc1ByZWZpeGVzWzBdLFxuICAgICk7XG5cbiAgICAvLyBFeHRyYWN0IHByb3BlcnRpZXMgZnJvbSB0aGUgQVpBUEkgcmVzb3VyY2Ugb3V0cHV0cyB1c2luZyBUZXJyYWZvcm0gaW50ZXJwb2xhdGlvblxuICAgIHRoaXMucmVzb3VyY2VOYW1lID0gYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5uYW1lfWA7XG5cbiAgICAvLyBDcmVhdGUgVGVycmFmb3JtIG91dHB1dHMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZyBmcm9tIG90aGVyIHJlc291cmNlc1xuICAgIHRoaXMuaWRPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwiaWRcIiwge1xuICAgICAgdmFsdWU6IHRoaXMuaWQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgSUQgb2YgdGhlIFN0YXRpYyBDSURSXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5yZXNvdXJjZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbmFtZSBvZiB0aGUgU3RhdGljIENJRFJcIixcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkcmVzc1ByZWZpeE91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAgXCJhZGRyZXNzUHJlZml4ZXNcIixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KHByb3BzLmFkZHJlc3NQcmVmaXhlcyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBhZGRyZXNzIHByZWZpeGVzIG9mIHRoZSBTdGF0aWMgQ0lEUlwiLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHMgdG8gbWF0Y2ggbmFtaW5nIGNvbnZlbnRpb25cbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5uYW1lT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibmFtZVwiKTtcbiAgICB0aGlzLmFkZHJlc3NQcmVmaXhPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJhZGRyZXNzUHJlZml4ZXNcIik7XG5cbiAgICAvLyBBcHBseSBpZ25vcmUgY2hhbmdlcyBpZiBzcGVjaWZpZWRcbiAgICB0aGlzLl9hcHBseUlnbm9yZUNoYW5nZXMoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFJFUVVJUkVEIEFCU1RSQUNUIE1FVEhPRFMgRlJPTSBBemFwaVJlc291cmNlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBwYXJlbnQgcmVzb3VyY2UgSUQgZm9yIHRoZSBTdGF0aWMgQ0lEUlxuICAgKiBTdGF0aWMgQ0lEUnMgYXJlIHNjb3BlZCB0byBJUEFNIFBvb2xzXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb2x2ZVBhcmVudElkKHByb3BzOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSBwcm9wcyBhcyBJcGFtUG9vbFN0YXRpY0NpZHJQcm9wcztcbiAgICByZXR1cm4gdHlwZWRQcm9wcy5pcGFtUG9vbElkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRlZmF1bHQgQVBJIHZlcnNpb24gdG8gdXNlIHdoZW4gbm8gZXhwbGljaXQgdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAgICovXG4gIHByb3RlY3RlZCBkZWZhdWx0VmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIjIwMjQtMDUtMDFcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBenVyZSByZXNvdXJjZSB0eXBlIGZvciBTdGF0aWMgQ0lEUnNcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU1RBVElDX0NJRFJfVFlQRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBUEkgc2NoZW1hIGZvciB0aGUgcmVzb2x2ZWQgdmVyc2lvblxuICAgKi9cbiAgcHJvdGVjdGVkIGFwaVNjaGVtYSgpOiBBcGlTY2hlbWEge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVTY2hlbWEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSByZXNvdXJjZSBib2R5IGZvciB0aGUgQXp1cmUgQVBJIGNhbGxcbiAgICogTm90ZTogQ2hpbGQgcmVzb3VyY2VzIGRvIG5vdCBpbmNsdWRlIGxvY2F0aW9uIG9yIHRhZ3NcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZUJvZHkocHJvcHM6IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHlwZWRQcm9wcyA9IHByb3BzIGFzIElwYW1Qb29sU3RhdGljQ2lkclByb3BzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgYWRkcmVzc1ByZWZpeGVzOiB0eXBlZFByb3BzLmFkZHJlc3NQcmVmaXhlcyxcbiAgICAgICAgZGVzY3JpcHRpb246IHR5cGVkUHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQVUJMSUMgTUVUSE9EUyBGT1IgU1RBVElDIENJRFIgT1BFUkFUSU9OU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGFkZHJlc3MgcHJlZml4ZXMgb2YgdGhpcyBTdGF0aWMgQ0lEUlxuICAgKiBSZXR1cm5zIHRoZSBpbnB1dCBhZGRyZXNzUHJlZml4ZXMgYXJyYXlcbiAgICovXG4gIHB1YmxpYyBnZXQgYWRkcmVzc1ByZWZpeGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5hZGRyZXNzUHJlZml4ZXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjYWxjdWxhdGVkIG51bWJlciBvZiBJUCBhZGRyZXNzZXMgaW4gdGhpcyBDSURSIGJsb2NrXG4gICAqIFRoaXMgaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkIGZyb20gdGhlIENJRFIgcHJlZml4IGF0IGNvbnN0cnVjdCBjcmVhdGlvbiB0aW1lXG4gICAqXG4gICAqIEByZXR1cm5zIFRvdGFsIGNvdW50IG9mIElQIGFkZHJlc3NlcyBpbiB0aGUgQ0lEUiBibG9ja1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBzdGF0aWNDaWRyID0gbmV3IElwYW1Qb29sU3RhdGljQ2lkcih0aGlzLCBcImNpZHJcIiwge1xuICAgKiAgIGFkZHJlc3NQcmVmaXhlczogW1wiMTAuMC4xLjAvMjRcIl1cbiAgICogfSk7XG4gICAqIGNvbnNvbGUubG9nKHN0YXRpY0NpZHIuY2FsY3VsYXRlZEFkZHJlc3NDb3VudCk7IC8vIDI1NlxuICAgKi9cbiAgcHVibGljIGdldCBjYWxjdWxhdGVkQWRkcmVzc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGN1bGF0ZWRBZGRyZXNzQ291bnQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwcm92aXNpb25pbmcgc3RhdGUgb2YgdGhlIFN0YXRpYyBDSURSXG4gICAqL1xuICBwdWJsaWMgZ2V0IHByb3Zpc2lvbmluZ1N0YXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMucHJvdmlzaW9uaW5nU3RhdGV9YDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEUgSEVMUEVSIE1FVEhPRFNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQXBwbGllcyBpZ25vcmUgY2hhbmdlcyBsaWZlY3ljbGUgcnVsZXMgaWYgc3BlY2lmaWVkIGluIHByb3BzXG4gICAqL1xuICBwcml2YXRlIF9hcHBseUlnbm9yZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcyAmJiB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5hZGRPdmVycmlkZShcImxpZmVjeWNsZVwiLCB7XG4gICAgICAgIGlnbm9yZV9jaGFuZ2VzOiB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure Virtual Network Manager IPAM Pool implementation using AzapiResource framework
|
|
3
|
+
*
|
|
4
|
+
* This class provides a unified implementation for Azure Virtual Network Manager IPAM Pools
|
|
5
|
+
* that automatically handles version management, schema validation, and property transformation
|
|
6
|
+
* across all supported API versions.
|
|
7
|
+
*
|
|
8
|
+
* Supported API Versions:
|
|
9
|
+
* - 2024-05-01 (Active, Latest)
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - Automatic latest version resolution when no version is specified
|
|
13
|
+
* - Explicit version pinning for stability requirements
|
|
14
|
+
* - Schema-driven validation and transformation
|
|
15
|
+
* - CIDR validation and overlap detection
|
|
16
|
+
* - Hierarchical pool support
|
|
17
|
+
* - JSII compliance for multi-language support
|
|
18
|
+
*/
|
|
19
|
+
import * as cdktf from "cdktf";
|
|
20
|
+
import { Construct } from "constructs";
|
|
21
|
+
import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
|
|
22
|
+
import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
|
|
23
|
+
/**
|
|
24
|
+
* Properties for the Azure Virtual Network Manager IPAM Pool
|
|
25
|
+
*
|
|
26
|
+
* Extends AzapiResourceProps with IPAM Pool specific properties
|
|
27
|
+
*/
|
|
28
|
+
export interface IpamPoolProps extends AzapiResourceProps {
|
|
29
|
+
/**
|
|
30
|
+
* Resource ID of the parent Network Manager
|
|
31
|
+
* @example "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.Network/networkManagers/vnm"
|
|
32
|
+
*/
|
|
33
|
+
readonly networkManagerId: string;
|
|
34
|
+
/**
|
|
35
|
+
* IP address prefixes for the pool
|
|
36
|
+
* Must be valid CIDR notation (e.g., "10.0.0.0/8")
|
|
37
|
+
* Multiple prefixes must not overlap
|
|
38
|
+
* @example ["10.0.0.0/8", "172.16.0.0/12"]
|
|
39
|
+
*/
|
|
40
|
+
readonly addressPrefixes: string[];
|
|
41
|
+
/**
|
|
42
|
+
* Optional description of the IPAM pool
|
|
43
|
+
* @example "Production IP address pool for East US region"
|
|
44
|
+
*/
|
|
45
|
+
readonly description?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Optional friendly display name
|
|
48
|
+
* @example "East US Production Pool"
|
|
49
|
+
*/
|
|
50
|
+
readonly displayName?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Name of parent pool for hierarchical pools
|
|
53
|
+
* Leave empty/undefined for root pools
|
|
54
|
+
* @example "root-pool"
|
|
55
|
+
*/
|
|
56
|
+
readonly parentPoolName?: string;
|
|
57
|
+
/**
|
|
58
|
+
* The lifecycle rules to ignore changes
|
|
59
|
+
* @example ["tags"]
|
|
60
|
+
*/
|
|
61
|
+
readonly ignoreChanges?: string[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Properties for IPAM Pool body
|
|
65
|
+
*/
|
|
66
|
+
export interface IpamPoolProperties {
|
|
67
|
+
readonly addressPrefixes: string[];
|
|
68
|
+
readonly description?: string;
|
|
69
|
+
readonly displayName?: string;
|
|
70
|
+
readonly parentPoolName?: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The resource body interface for Azure IPAM Pool API calls
|
|
74
|
+
*/
|
|
75
|
+
export interface IpamPoolBody {
|
|
76
|
+
readonly location: string;
|
|
77
|
+
readonly tags?: Record<string, string>;
|
|
78
|
+
readonly properties: IpamPoolProperties;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Azure Virtual Network Manager IPAM Pool implementation
|
|
82
|
+
*
|
|
83
|
+
* IPAM Pools provide centralized IP address management for virtual networks,
|
|
84
|
+
* enabling automatic CIDR allocation, overlap prevention, and hierarchical
|
|
85
|
+
* address space organization. They are essential for managing IP addresses
|
|
86
|
+
* at scale across multiple virtual networks and subscriptions.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* // Basic IPAM pool for production workloads:
|
|
90
|
+
* const ipamPool = new IpamPool(this, "prod-pool", {
|
|
91
|
+
* name: "production-pool",
|
|
92
|
+
* location: "eastus",
|
|
93
|
+
* networkManagerId: networkManager.id,
|
|
94
|
+
* addressPrefixes: ["10.0.0.0/8"],
|
|
95
|
+
* description: "Root IP address pool for production",
|
|
96
|
+
* displayName: "Production Pool"
|
|
97
|
+
* });
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* // Hierarchical pool with parent reference:
|
|
101
|
+
* const childPool = new IpamPool(this, "eastus-pool", {
|
|
102
|
+
* name: "eastus-pool",
|
|
103
|
+
* location: "eastus",
|
|
104
|
+
* networkManagerId: networkManager.id,
|
|
105
|
+
* addressPrefixes: ["10.1.0.0/16"],
|
|
106
|
+
* parentPoolName: "production-pool",
|
|
107
|
+
* description: "East US regional pool"
|
|
108
|
+
* });
|
|
109
|
+
*
|
|
110
|
+
* @stability stable
|
|
111
|
+
*/
|
|
112
|
+
export declare class IpamPool extends AzapiResource {
|
|
113
|
+
/**
|
|
114
|
+
* Validates address prefixes for format and overlap
|
|
115
|
+
* Throws descriptive errors if validation fails
|
|
116
|
+
*
|
|
117
|
+
* @param prefixes - Array of CIDR blocks to validate
|
|
118
|
+
* @throws Error if validation fails
|
|
119
|
+
*/
|
|
120
|
+
private static validateAddressPrefixes;
|
|
121
|
+
/**
|
|
122
|
+
* The input properties for this IPAM Pool instance
|
|
123
|
+
*/
|
|
124
|
+
readonly props: IpamPoolProps;
|
|
125
|
+
readonly idOutput: cdktf.TerraformOutput;
|
|
126
|
+
readonly nameOutput: cdktf.TerraformOutput;
|
|
127
|
+
readonly locationOutput: cdktf.TerraformOutput;
|
|
128
|
+
readonly resourceName: string;
|
|
129
|
+
/**
|
|
130
|
+
* Creates a new Azure Virtual Network Manager IPAM Pool using the AzapiResource framework
|
|
131
|
+
*
|
|
132
|
+
* @param scope - The scope in which to define this construct
|
|
133
|
+
* @param id - The unique identifier for this instance
|
|
134
|
+
* @param props - Configuration properties for the IPAM Pool
|
|
135
|
+
*/
|
|
136
|
+
constructor(scope: Construct, id: string, props: IpamPoolProps);
|
|
137
|
+
/**
|
|
138
|
+
* Resolves the parent resource ID for the IPAM Pool
|
|
139
|
+
* IPAM Pools are scoped to Network Managers
|
|
140
|
+
*/
|
|
141
|
+
protected resolveParentId(props: any): string;
|
|
142
|
+
/**
|
|
143
|
+
* Gets the default API version to use when no explicit version is specified
|
|
144
|
+
*/
|
|
145
|
+
protected defaultVersion(): string;
|
|
146
|
+
/**
|
|
147
|
+
* Gets the Azure resource type for IPAM Pools
|
|
148
|
+
*/
|
|
149
|
+
protected resourceType(): string;
|
|
150
|
+
/**
|
|
151
|
+
* Gets the API schema for the resolved version
|
|
152
|
+
*/
|
|
153
|
+
protected apiSchema(): ApiSchema;
|
|
154
|
+
/**
|
|
155
|
+
* Creates the resource body for the Azure API call
|
|
156
|
+
*/
|
|
157
|
+
protected createResourceBody(props: any): any;
|
|
158
|
+
/**
|
|
159
|
+
* Calculate total number of IP addresses in this pool
|
|
160
|
+
* Sums up all addresses from all CIDR blocks
|
|
161
|
+
*
|
|
162
|
+
* @returns Total count of IP addresses across all prefixes
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* const pool = new IpamPool(this, "pool", {
|
|
166
|
+
* addressPrefixes: ["10.0.0.0/24", "10.1.0.0/24"]
|
|
167
|
+
* });
|
|
168
|
+
* console.log(pool.totalAddressCount); // 512 (256 + 256)
|
|
169
|
+
*/
|
|
170
|
+
get totalAddressCount(): number;
|
|
171
|
+
/**
|
|
172
|
+
* Applies ignore changes lifecycle rules if specified in props
|
|
173
|
+
*/
|
|
174
|
+
private _applyIgnoreChanges;
|
|
175
|
+
}
|