UNPKG

@cdktf/provider-google

Version:

Prebuilt google Provider for Terraform CDK (cdktf)

1,027 lines 149 kB
"use strict"; var _a, _b, _c, _d, _e; Object.defineProperty(exports, "__esModule", { value: true }); exports.ComputeSubnetwork = exports.ComputeSubnetworkTimeoutsOutputReference = exports.ComputeSubnetworkSecondaryIpRangeList = exports.ComputeSubnetworkSecondaryIpRangeOutputReference = exports.ComputeSubnetworkLogConfigOutputReference = void 0; exports.computeSubnetworkLogConfigToTerraform = computeSubnetworkLogConfigToTerraform; exports.computeSubnetworkLogConfigToHclTerraform = computeSubnetworkLogConfigToHclTerraform; exports.computeSubnetworkSecondaryIpRangeToTerraform = computeSubnetworkSecondaryIpRangeToTerraform; exports.computeSubnetworkSecondaryIpRangeToHclTerraform = computeSubnetworkSecondaryIpRangeToHclTerraform; exports.computeSubnetworkTimeoutsToTerraform = computeSubnetworkTimeoutsToTerraform; exports.computeSubnetworkTimeoutsToHclTerraform = computeSubnetworkTimeoutsToHclTerraform; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cdktf = require("cdktf"); function computeSubnetworkLogConfigToTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } return { aggregation_interval: cdktf.stringToTerraform(struct.aggregationInterval), filter_expr: cdktf.stringToTerraform(struct.filterExpr), flow_sampling: cdktf.numberToTerraform(struct.flowSampling), metadata: cdktf.stringToTerraform(struct.metadata), metadata_fields: cdktf.listMapper(cdktf.stringToTerraform, false)(struct.metadataFields), }; } function computeSubnetworkLogConfigToHclTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } const attrs = { aggregation_interval: { value: cdktf.stringToHclTerraform(struct.aggregationInterval), isBlock: false, type: "simple", storageClassType: "string", }, filter_expr: { value: cdktf.stringToHclTerraform(struct.filterExpr), isBlock: false, type: "simple", storageClassType: "string", }, flow_sampling: { value: cdktf.numberToHclTerraform(struct.flowSampling), isBlock: false, type: "simple", storageClassType: "number", }, metadata: { value: cdktf.stringToHclTerraform(struct.metadata), isBlock: false, type: "simple", storageClassType: "string", }, metadata_fields: { value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(struct.metadataFields), isBlock: false, type: "set", storageClassType: "stringList", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } class ComputeSubnetworkLogConfigOutputReference extends cdktf.ComplexObject { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing */ constructor(terraformResource, terraformAttribute) { super(terraformResource, terraformAttribute, false, 0); this.isEmptyObject = false; } get internalValue() { let hasAnyValues = this.isEmptyObject; const internalValueResult = {}; if (this._aggregationInterval !== undefined) { hasAnyValues = true; internalValueResult.aggregationInterval = this._aggregationInterval; } if (this._filterExpr !== undefined) { hasAnyValues = true; internalValueResult.filterExpr = this._filterExpr; } if (this._flowSampling !== undefined) { hasAnyValues = true; internalValueResult.flowSampling = this._flowSampling; } if (this._metadata !== undefined) { hasAnyValues = true; internalValueResult.metadata = this._metadata; } if (this._metadataFields !== undefined) { hasAnyValues = true; internalValueResult.metadataFields = this._metadataFields; } return hasAnyValues ? internalValueResult : undefined; } set internalValue(value) { if (value === undefined) { this.isEmptyObject = false; this._aggregationInterval = undefined; this._filterExpr = undefined; this._flowSampling = undefined; this._metadata = undefined; this._metadataFields = undefined; } else { this.isEmptyObject = Object.keys(value).length === 0; this._aggregationInterval = value.aggregationInterval; this._filterExpr = value.filterExpr; this._flowSampling = value.flowSampling; this._metadata = value.metadata; this._metadataFields = value.metadataFields; } } get aggregationInterval() { return this.getStringAttribute('aggregation_interval'); } set aggregationInterval(value) { this._aggregationInterval = value; } resetAggregationInterval() { this._aggregationInterval = undefined; } // Temporarily expose input value. Use with caution. get aggregationIntervalInput() { return this._aggregationInterval; } get filterExpr() { return this.getStringAttribute('filter_expr'); } set filterExpr(value) { this._filterExpr = value; } resetFilterExpr() { this._filterExpr = undefined; } // Temporarily expose input value. Use with caution. get filterExprInput() { return this._filterExpr; } get flowSampling() { return this.getNumberAttribute('flow_sampling'); } set flowSampling(value) { this._flowSampling = value; } resetFlowSampling() { this._flowSampling = undefined; } // Temporarily expose input value. Use with caution. get flowSamplingInput() { return this._flowSampling; } get metadata() { return this.getStringAttribute('metadata'); } set metadata(value) { this._metadata = value; } resetMetadata() { this._metadata = undefined; } // Temporarily expose input value. Use with caution. get metadataInput() { return this._metadata; } get metadataFields() { return cdktf.Fn.tolist(this.getListAttribute('metadata_fields')); } set metadataFields(value) { this._metadataFields = value; } resetMetadataFields() { this._metadataFields = undefined; } // Temporarily expose input value. Use with caution. get metadataFieldsInput() { return this._metadataFields; } } exports.ComputeSubnetworkLogConfigOutputReference = ComputeSubnetworkLogConfigOutputReference; _a = JSII_RTTI_SYMBOL_1; ComputeSubnetworkLogConfigOutputReference[_a] = { fqn: "@cdktf/provider-google.computeSubnetwork.ComputeSubnetworkLogConfigOutputReference", version: "14.35.1" }; function computeSubnetworkSecondaryIpRangeToTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } return { ip_cidr_range: cdktf.stringToTerraform(struct.ipCidrRange), range_name: cdktf.stringToTerraform(struct.rangeName), reserved_internal_range: cdktf.stringToTerraform(struct.reservedInternalRange), }; } function computeSubnetworkSecondaryIpRangeToHclTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } const attrs = { ip_cidr_range: { value: cdktf.stringToHclTerraform(struct.ipCidrRange), isBlock: false, type: "simple", storageClassType: "string", }, range_name: { value: cdktf.stringToHclTerraform(struct.rangeName), isBlock: false, type: "simple", storageClassType: "string", }, reserved_internal_range: { value: cdktf.stringToHclTerraform(struct.reservedInternalRange), isBlock: false, type: "simple", storageClassType: "string", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } class ComputeSubnetworkSecondaryIpRangeOutputReference extends cdktf.ComplexObject { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing * @param complexObjectIndex the index of this item in the list * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index) */ constructor(terraformResource, terraformAttribute, complexObjectIndex, complexObjectIsFromSet) { super(terraformResource, terraformAttribute, complexObjectIsFromSet, complexObjectIndex); this.isEmptyObject = false; } get internalValue() { if (this.resolvableValue) { return this.resolvableValue; } let hasAnyValues = this.isEmptyObject; const internalValueResult = {}; if (this._ipCidrRange !== undefined) { hasAnyValues = true; internalValueResult.ipCidrRange = this._ipCidrRange; } if (this._rangeName !== undefined) { hasAnyValues = true; internalValueResult.rangeName = this._rangeName; } if (this._reservedInternalRange !== undefined) { hasAnyValues = true; internalValueResult.reservedInternalRange = this._reservedInternalRange; } return hasAnyValues ? internalValueResult : undefined; } set internalValue(value) { if (value === undefined) { this.isEmptyObject = false; this.resolvableValue = undefined; this._ipCidrRange = undefined; this._rangeName = undefined; this._reservedInternalRange = undefined; } else if (cdktf.Tokenization.isResolvable(value)) { this.isEmptyObject = false; this.resolvableValue = value; } else { this.isEmptyObject = Object.keys(value).length === 0; this.resolvableValue = undefined; this._ipCidrRange = value.ipCidrRange; this._rangeName = value.rangeName; this._reservedInternalRange = value.reservedInternalRange; } } get ipCidrRange() { return this.getStringAttribute('ip_cidr_range'); } set ipCidrRange(value) { this._ipCidrRange = value; } resetIpCidrRange() { this._ipCidrRange = undefined; } // Temporarily expose input value. Use with caution. get ipCidrRangeInput() { return this._ipCidrRange; } get rangeName() { return this.getStringAttribute('range_name'); } set rangeName(value) { this._rangeName = value; } // Temporarily expose input value. Use with caution. get rangeNameInput() { return this._rangeName; } get reservedInternalRange() { return this.getStringAttribute('reserved_internal_range'); } set reservedInternalRange(value) { this._reservedInternalRange = value; } resetReservedInternalRange() { this._reservedInternalRange = undefined; } // Temporarily expose input value. Use with caution. get reservedInternalRangeInput() { return this._reservedInternalRange; } } exports.ComputeSubnetworkSecondaryIpRangeOutputReference = ComputeSubnetworkSecondaryIpRangeOutputReference; _b = JSII_RTTI_SYMBOL_1; ComputeSubnetworkSecondaryIpRangeOutputReference[_b] = { fqn: "@cdktf/provider-google.computeSubnetwork.ComputeSubnetworkSecondaryIpRangeOutputReference", version: "14.35.1" }; class ComputeSubnetworkSecondaryIpRangeList extends cdktf.ComplexList { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index) */ constructor(terraformResource, terraformAttribute, wrapsSet) { super(terraformResource, terraformAttribute, wrapsSet); this.terraformResource = terraformResource; this.terraformAttribute = terraformAttribute; this.wrapsSet = wrapsSet; } /** * @param index the index of the item to return */ get(index) { return new ComputeSubnetworkSecondaryIpRangeOutputReference(this.terraformResource, this.terraformAttribute, index, this.wrapsSet); } } exports.ComputeSubnetworkSecondaryIpRangeList = ComputeSubnetworkSecondaryIpRangeList; _c = JSII_RTTI_SYMBOL_1; ComputeSubnetworkSecondaryIpRangeList[_c] = { fqn: "@cdktf/provider-google.computeSubnetwork.ComputeSubnetworkSecondaryIpRangeList", version: "14.35.1" }; function computeSubnetworkTimeoutsToTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } return { create: cdktf.stringToTerraform(struct.create), delete: cdktf.stringToTerraform(struct.delete), update: cdktf.stringToTerraform(struct.update), }; } function computeSubnetworkTimeoutsToHclTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } const attrs = { create: { value: cdktf.stringToHclTerraform(struct.create), isBlock: false, type: "simple", storageClassType: "string", }, delete: { value: cdktf.stringToHclTerraform(struct.delete), isBlock: false, type: "simple", storageClassType: "string", }, update: { value: cdktf.stringToHclTerraform(struct.update), isBlock: false, type: "simple", storageClassType: "string", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } class ComputeSubnetworkTimeoutsOutputReference extends cdktf.ComplexObject { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing */ constructor(terraformResource, terraformAttribute) { super(terraformResource, terraformAttribute, false); this.isEmptyObject = false; } get internalValue() { if (this.resolvableValue) { return this.resolvableValue; } let hasAnyValues = this.isEmptyObject; const internalValueResult = {}; if (this._create !== undefined) { hasAnyValues = true; internalValueResult.create = this._create; } if (this._delete !== undefined) { hasAnyValues = true; internalValueResult.delete = this._delete; } if (this._update !== undefined) { hasAnyValues = true; internalValueResult.update = this._update; } return hasAnyValues ? internalValueResult : undefined; } set internalValue(value) { if (value === undefined) { this.isEmptyObject = false; this.resolvableValue = undefined; this._create = undefined; this._delete = undefined; this._update = undefined; } else if (cdktf.Tokenization.isResolvable(value)) { this.isEmptyObject = false; this.resolvableValue = value; } else { this.isEmptyObject = Object.keys(value).length === 0; this.resolvableValue = undefined; this._create = value.create; this._delete = value.delete; this._update = value.update; } } get create() { return this.getStringAttribute('create'); } set create(value) { this._create = value; } resetCreate() { this._create = undefined; } // Temporarily expose input value. Use with caution. get createInput() { return this._create; } get delete() { return this.getStringAttribute('delete'); } set delete(value) { this._delete = value; } resetDelete() { this._delete = undefined; } // Temporarily expose input value. Use with caution. get deleteInput() { return this._delete; } get update() { return this.getStringAttribute('update'); } set update(value) { this._update = value; } resetUpdate() { this._update = undefined; } // Temporarily expose input value. Use with caution. get updateInput() { return this._update; } } exports.ComputeSubnetworkTimeoutsOutputReference = ComputeSubnetworkTimeoutsOutputReference; _d = JSII_RTTI_SYMBOL_1; ComputeSubnetworkTimeoutsOutputReference[_d] = { fqn: "@cdktf/provider-google.computeSubnetwork.ComputeSubnetworkTimeoutsOutputReference", version: "14.35.1" }; /** * Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/compute_subnetwork google_compute_subnetwork} */ class ComputeSubnetwork extends cdktf.TerraformResource { // ============== // STATIC Methods // ============== /** * Generates CDKTF code for importing a ComputeSubnetwork resource upon running "cdktf plan <stack-name>" * @param scope The scope in which to define this construct * @param importToId The construct id used in the generated config for the ComputeSubnetwork to import * @param importFromId The id of the existing ComputeSubnetwork that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/compute_subnetwork#import import section} in the documentation of this resource for the id to use * @param provider? Optional instance of the provider where the ComputeSubnetwork to import is found */ static generateConfigForImport(scope, importToId, importFromId, provider) { return new cdktf.ImportableResource(scope, importToId, { terraformResourceType: "google_compute_subnetwork", importId: importFromId, provider }); } // =========== // INITIALIZER // =========== /** * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/compute_subnetwork google_compute_subnetwork} Resource * * @param scope The scope in which to define this construct * @param id The scoped construct ID. Must be unique amongst siblings in the same scope * @param options ComputeSubnetworkConfig */ constructor(scope, id, config) { super(scope, id, { terraformResourceType: 'google_compute_subnetwork', terraformGeneratorMetadata: { providerName: 'google', providerVersion: '6.36.1', providerVersionConstraint: '~> 6.0' }, provider: config.provider, dependsOn: config.dependsOn, count: config.count, lifecycle: config.lifecycle, provisioners: config.provisioners, connection: config.connection, forEach: config.forEach }); // log_config - computed: false, optional: true, required: false this._logConfig = new ComputeSubnetworkLogConfigOutputReference(this, "log_config"); // secondary_ip_range - computed: false, optional: true, required: false this._secondaryIpRange = new ComputeSubnetworkSecondaryIpRangeList(this, "secondary_ip_range", false); // timeouts - computed: false, optional: true, required: false this._timeouts = new ComputeSubnetworkTimeoutsOutputReference(this, "timeouts"); this._description = config.description; this._enableFlowLogs = config.enableFlowLogs; this._externalIpv6Prefix = config.externalIpv6Prefix; this._id = config.id; this._ipCidrRange = config.ipCidrRange; this._ipCollection = config.ipCollection; this._ipv6AccessType = config.ipv6AccessType; this._name = config.name; this._network = config.network; this._privateIpGoogleAccess = config.privateIpGoogleAccess; this._privateIpv6GoogleAccess = config.privateIpv6GoogleAccess; this._project = config.project; this._purpose = config.purpose; this._region = config.region; this._reservedInternalRange = config.reservedInternalRange; this._role = config.role; this._sendSecondaryIpRangeIfEmpty = config.sendSecondaryIpRangeIfEmpty; this._stackType = config.stackType; this._logConfig.internalValue = config.logConfig; this._secondaryIpRange.internalValue = config.secondaryIpRange; this._timeouts.internalValue = config.timeouts; } // ========== // ATTRIBUTES // ========== // creation_timestamp - computed: true, optional: false, required: false get creationTimestamp() { return this.getStringAttribute('creation_timestamp'); } get description() { return this.getStringAttribute('description'); } set description(value) { this._description = value; } resetDescription() { this._description = undefined; } // Temporarily expose input value. Use with caution. get descriptionInput() { return this._description; } get enableFlowLogs() { return this.getBooleanAttribute('enable_flow_logs'); } set enableFlowLogs(value) { this._enableFlowLogs = value; } resetEnableFlowLogs() { this._enableFlowLogs = undefined; } // Temporarily expose input value. Use with caution. get enableFlowLogsInput() { return this._enableFlowLogs; } get externalIpv6Prefix() { return this.getStringAttribute('external_ipv6_prefix'); } set externalIpv6Prefix(value) { this._externalIpv6Prefix = value; } resetExternalIpv6Prefix() { this._externalIpv6Prefix = undefined; } // Temporarily expose input value. Use with caution. get externalIpv6PrefixInput() { return this._externalIpv6Prefix; } // fingerprint - computed: true, optional: false, required: false get fingerprint() { return this.getStringAttribute('fingerprint'); } // gateway_address - computed: true, optional: false, required: false get gatewayAddress() { return this.getStringAttribute('gateway_address'); } get id() { return this.getStringAttribute('id'); } set id(value) { this._id = value; } resetId() { this._id = undefined; } // Temporarily expose input value. Use with caution. get idInput() { return this._id; } // internal_ipv6_prefix - computed: true, optional: false, required: false get internalIpv6Prefix() { return this.getStringAttribute('internal_ipv6_prefix'); } get ipCidrRange() { return this.getStringAttribute('ip_cidr_range'); } set ipCidrRange(value) { this._ipCidrRange = value; } resetIpCidrRange() { this._ipCidrRange = undefined; } // Temporarily expose input value. Use with caution. get ipCidrRangeInput() { return this._ipCidrRange; } get ipCollection() { return this.getStringAttribute('ip_collection'); } set ipCollection(value) { this._ipCollection = value; } resetIpCollection() { this._ipCollection = undefined; } // Temporarily expose input value. Use with caution. get ipCollectionInput() { return this._ipCollection; } get ipv6AccessType() { return this.getStringAttribute('ipv6_access_type'); } set ipv6AccessType(value) { this._ipv6AccessType = value; } resetIpv6AccessType() { this._ipv6AccessType = undefined; } // Temporarily expose input value. Use with caution. get ipv6AccessTypeInput() { return this._ipv6AccessType; } // ipv6_cidr_range - computed: true, optional: false, required: false get ipv6CidrRange() { return this.getStringAttribute('ipv6_cidr_range'); } // ipv6_gce_endpoint - computed: true, optional: false, required: false get ipv6GceEndpoint() { return this.getStringAttribute('ipv6_gce_endpoint'); } get name() { return this.getStringAttribute('name'); } set name(value) { this._name = value; } // Temporarily expose input value. Use with caution. get nameInput() { return this._name; } get network() { return this.getStringAttribute('network'); } set network(value) { this._network = value; } // Temporarily expose input value. Use with caution. get networkInput() { return this._network; } get privateIpGoogleAccess() { return this.getBooleanAttribute('private_ip_google_access'); } set privateIpGoogleAccess(value) { this._privateIpGoogleAccess = value; } resetPrivateIpGoogleAccess() { this._privateIpGoogleAccess = undefined; } // Temporarily expose input value. Use with caution. get privateIpGoogleAccessInput() { return this._privateIpGoogleAccess; } get privateIpv6GoogleAccess() { return this.getStringAttribute('private_ipv6_google_access'); } set privateIpv6GoogleAccess(value) { this._privateIpv6GoogleAccess = value; } resetPrivateIpv6GoogleAccess() { this._privateIpv6GoogleAccess = undefined; } // Temporarily expose input value. Use with caution. get privateIpv6GoogleAccessInput() { return this._privateIpv6GoogleAccess; } get project() { return this.getStringAttribute('project'); } set project(value) { this._project = value; } resetProject() { this._project = undefined; } // Temporarily expose input value. Use with caution. get projectInput() { return this._project; } get purpose() { return this.getStringAttribute('purpose'); } set purpose(value) { this._purpose = value; } resetPurpose() { this._purpose = undefined; } // Temporarily expose input value. Use with caution. get purposeInput() { return this._purpose; } get region() { return this.getStringAttribute('region'); } set region(value) { this._region = value; } resetRegion() { this._region = undefined; } // Temporarily expose input value. Use with caution. get regionInput() { return this._region; } get reservedInternalRange() { return this.getStringAttribute('reserved_internal_range'); } set reservedInternalRange(value) { this._reservedInternalRange = value; } resetReservedInternalRange() { this._reservedInternalRange = undefined; } // Temporarily expose input value. Use with caution. get reservedInternalRangeInput() { return this._reservedInternalRange; } get role() { return this.getStringAttribute('role'); } set role(value) { this._role = value; } resetRole() { this._role = undefined; } // Temporarily expose input value. Use with caution. get roleInput() { return this._role; } // self_link - computed: true, optional: false, required: false get selfLink() { return this.getStringAttribute('self_link'); } get sendSecondaryIpRangeIfEmpty() { return this.getBooleanAttribute('send_secondary_ip_range_if_empty'); } set sendSecondaryIpRangeIfEmpty(value) { this._sendSecondaryIpRangeIfEmpty = value; } resetSendSecondaryIpRangeIfEmpty() { this._sendSecondaryIpRangeIfEmpty = undefined; } // Temporarily expose input value. Use with caution. get sendSecondaryIpRangeIfEmptyInput() { return this._sendSecondaryIpRangeIfEmpty; } get stackType() { return this.getStringAttribute('stack_type'); } set stackType(value) { this._stackType = value; } resetStackType() { this._stackType = undefined; } // Temporarily expose input value. Use with caution. get stackTypeInput() { return this._stackType; } // state - computed: true, optional: false, required: false get state() { return this.getStringAttribute('state'); } // subnetwork_id - computed: true, optional: false, required: false get subnetworkId() { return this.getNumberAttribute('subnetwork_id'); } get logConfig() { return this._logConfig; } putLogConfig(value) { this._logConfig.internalValue = value; } resetLogConfig() { this._logConfig.internalValue = undefined; } // Temporarily expose input value. Use with caution. get logConfigInput() { return this._logConfig.internalValue; } get secondaryIpRange() { return this._secondaryIpRange; } putSecondaryIpRange(value) { this._secondaryIpRange.internalValue = value; } resetSecondaryIpRange() { this._secondaryIpRange.internalValue = undefined; } // Temporarily expose input value. Use with caution. get secondaryIpRangeInput() { return this._secondaryIpRange.internalValue; } get timeouts() { return this._timeouts; } putTimeouts(value) { this._timeouts.internalValue = value; } resetTimeouts() { this._timeouts.internalValue = undefined; } // Temporarily expose input value. Use with caution. get timeoutsInput() { return this._timeouts.internalValue; } // ========= // SYNTHESIS // ========= synthesizeAttributes() { return { description: cdktf.stringToTerraform(this._description), enable_flow_logs: cdktf.booleanToTerraform(this._enableFlowLogs), external_ipv6_prefix: cdktf.stringToTerraform(this._externalIpv6Prefix), id: cdktf.stringToTerraform(this._id), ip_cidr_range: cdktf.stringToTerraform(this._ipCidrRange), ip_collection: cdktf.stringToTerraform(this._ipCollection), ipv6_access_type: cdktf.stringToTerraform(this._ipv6AccessType), name: cdktf.stringToTerraform(this._name), network: cdktf.stringToTerraform(this._network), private_ip_google_access: cdktf.booleanToTerraform(this._privateIpGoogleAccess), private_ipv6_google_access: cdktf.stringToTerraform(this._privateIpv6GoogleAccess), project: cdktf.stringToTerraform(this._project), purpose: cdktf.stringToTerraform(this._purpose), region: cdktf.stringToTerraform(this._region), reserved_internal_range: cdktf.stringToTerraform(this._reservedInternalRange), role: cdktf.stringToTerraform(this._role), send_secondary_ip_range_if_empty: cdktf.booleanToTerraform(this._sendSecondaryIpRangeIfEmpty), stack_type: cdktf.stringToTerraform(this._stackType), log_config: computeSubnetworkLogConfigToTerraform(this._logConfig.internalValue), secondary_ip_range: cdktf.listMapper(computeSubnetworkSecondaryIpRangeToTerraform, true)(this._secondaryIpRange.internalValue), timeouts: computeSubnetworkTimeoutsToTerraform(this._timeouts.internalValue), }; } synthesizeHclAttributes() { const attrs = { description: { value: cdktf.stringToHclTerraform(this._description), isBlock: false, type: "simple", storageClassType: "string", }, enable_flow_logs: { value: cdktf.booleanToHclTerraform(this._enableFlowLogs), isBlock: false, type: "simple", storageClassType: "boolean", }, external_ipv6_prefix: { value: cdktf.stringToHclTerraform(this._externalIpv6Prefix), isBlock: false, type: "simple", storageClassType: "string", }, id: { value: cdktf.stringToHclTerraform(this._id), isBlock: false, type: "simple", storageClassType: "string", }, ip_cidr_range: { value: cdktf.stringToHclTerraform(this._ipCidrRange), isBlock: false, type: "simple", storageClassType: "string", }, ip_collection: { value: cdktf.stringToHclTerraform(this._ipCollection), isBlock: false, type: "simple", storageClassType: "string", }, ipv6_access_type: { value: cdktf.stringToHclTerraform(this._ipv6AccessType), isBlock: false, type: "simple", storageClassType: "string", }, name: { value: cdktf.stringToHclTerraform(this._name), isBlock: false, type: "simple", storageClassType: "string", }, network: { value: cdktf.stringToHclTerraform(this._network), isBlock: false, type: "simple", storageClassType: "string", }, private_ip_google_access: { value: cdktf.booleanToHclTerraform(this._privateIpGoogleAccess), isBlock: false, type: "simple", storageClassType: "boolean", }, private_ipv6_google_access: { value: cdktf.stringToHclTerraform(this._privateIpv6GoogleAccess), isBlock: false, type: "simple", storageClassType: "string", }, project: { value: cdktf.stringToHclTerraform(this._project), isBlock: false, type: "simple", storageClassType: "string", }, purpose: { value: cdktf.stringToHclTerraform(this._purpose), isBlock: false, type: "simple", storageClassType: "string", }, region: { value: cdktf.stringToHclTerraform(this._region), isBlock: false, type: "simple", storageClassType: "string", }, reserved_internal_range: { value: cdktf.stringToHclTerraform(this._reservedInternalRange), isBlock: false, type: "simple", storageClassType: "string", }, role: { value: cdktf.stringToHclTerraform(this._role), isBlock: false, type: "simple", storageClassType: "string", }, send_secondary_ip_range_if_empty: { value: cdktf.booleanToHclTerraform(this._sendSecondaryIpRangeIfEmpty), isBlock: false, type: "simple", storageClassType: "boolean", }, stack_type: { value: cdktf.stringToHclTerraform(this._stackType), isBlock: false, type: "simple", storageClassType: "string", }, log_config: { value: computeSubnetworkLogConfigToHclTerraform(this._logConfig.internalValue), isBlock: true, type: "list", storageClassType: "ComputeSubnetworkLogConfigList", }, secondary_ip_range: { value: cdktf.listMapperHcl(computeSubnetworkSecondaryIpRangeToHclTerraform, true)(this._secondaryIpRange.internalValue), isBlock: true, type: "list", storageClassType: "ComputeSubnetworkSecondaryIpRangeList", }, timeouts: { value: computeSubnetworkTimeoutsToHclTerraform(this._timeouts.internalValue), isBlock: true, type: "struct", storageClassType: "ComputeSubnetworkTimeouts", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } } exports.ComputeSubnetwork = ComputeSubnetwork; _e = JSII_RTTI_SYMBOL_1; ComputeSubnetwork[_e] = { fqn: "@cdktf/provider-google.computeSubnetwork.ComputeSubnetwork", version: "14.35.1" }; // ================= // STATIC PROPERTIES // ================= ComputeSubnetwork.tfResourceType = "google_compute_subnetwork"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcHV0ZS1zdWJuZXR3b3JrL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFzT0Esc0ZBWUM7QUFHRCw0RkF3Q0M7QUF1S0Qsb0dBVUM7QUFHRCwwR0E0QkM7QUEwSUQsb0ZBVUM7QUFHRCwwRkE0QkM7O0FBdnBCRCwrQkFBK0I7QUE2Ti9CLFNBQWdCLHFDQUFxQyxDQUFDLE1BQStFO0lBQ25JLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLE1BQU0sQ0FBQztJQUFDLENBQUM7SUFDNUYsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLG9IQUFvSCxDQUFDLENBQUM7SUFDeEksQ0FBQztJQUNELE9BQU87UUFDTCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLG1CQUFtQixDQUFDO1FBQzFFLFdBQVcsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLFVBQVUsQ0FBQztRQUN4RCxhQUFhLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxZQUFZLENBQUM7UUFDNUQsUUFBUSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsUUFBUSxDQUFDO1FBQ25ELGVBQWUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFPLENBQUMsY0FBYyxDQUFDO0tBQzFGLENBQUE7QUFDSCxDQUFDO0FBR0QsU0FBZ0Isd0NBQXdDLENBQUMsTUFBK0U7SUFDdEksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFV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