Skip to content

Breaking change - Add integration for subnetworks with internal ranges API #10897

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 34 additions & 2 deletions mmv1/products/compute/Subnetwork.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,20 @@ examples:
vars:
subnetwork_name: 'subnet-cidr-overlap'
network_name: 'net-cidr-overlap'
- !ruby/object:Provider::Terraform::Examples
name: 'subnetwork_reserved_internal_range'
min_version: beta
primary_resource_id: 'subnetwork-reserved-internal-range'
vars:
subnetwork_name: 'subnetwork-reserved-internal-range'
network_name: 'network-reserved-internal-range'
- !ruby/object:Provider::Terraform::Examples
name: 'subnetwork_reserved_secondary_range'
min_version: beta
primary_resource_id: 'subnetwork-reserved-secondary-range'
vars:
subnetwork_name: 'subnetwork-reserved-secondary-range'
network_name: 'network-reserved-secondary-range'
properties:
- !ruby/object:Api::Type::Time
name: 'creationTimestamp'
Expand All @@ -142,16 +156,25 @@ properties:
output: true
- !ruby/object:Api::Type::String
name: 'ipCidrRange'
default_from_api: true
description: |
The range of internal addresses that are owned by this subnetwork.
Provide this property when you create the subnetwork. For example,
10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and
non-overlapping within a network. Only IPv4 is supported.
required: true
Field is optional when `reserved_internal_range` is defined, otherwise required.
required: false
update_verb: :POST
update_url: 'projects/{{project}}/regions/{{region}}/subnetworks/{{name}}/expandIpCidrRange'
validation: !ruby/object:Provider::Terraform::Validation
function: 'verify.ValidateIpCidrRange'
- !ruby/object:Api::Type::ResourceRef
name: 'reservedInternalRange'
description: |
The ID of the reserved internal range. Must be prefixed with `networkconnectivity.googleapis.com`
E.g. `networkconnectivity.googleapis.com/projects/{project}/locations/global/internalRanges/{rangeId}`
resource: 'InternalRange'
imports: 'selfLink'
- !ruby/object:Api::Type::String
name: 'name'
description: |
Expand Down Expand Up @@ -238,14 +261,23 @@ properties:
must be unique within the subnetwork.
- !ruby/object:Api::Type::String
name: 'ipCidrRange'
required: true
required: false
default_from_api: true
validation: !ruby/object:Provider::Terraform::Validation
function: 'verify.ValidateIpCidrRange'
description: |
The range of IP addresses belonging to this subnetwork secondary
range. Provide this property when you create the subnetwork.
Ranges must be unique and non-overlapping with all primary and
secondary IP ranges within a network. Only IPv4 is supported.
Field is optional when `reserved_internal_range` is defined, otherwise required.
- !ruby/object:Api::Type::ResourceRef
name: 'reservedInternalRange'
description: |
The ID of the reserved internal range. Must be prefixed with `networkconnectivity.googleapis.com`
E.g. `networkconnectivity.googleapis.com/projects/{project}/locations/global/internalRanges/{rangeId}`
resource: 'InternalRange'
imports: 'selfLink'
- !ruby/object:Api::Type::Boolean
name: 'privateIpGoogleAccess'
description: |
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
resource "google_compute_subnetwork" "<%= ctx[:primary_resource_id] %>" {
provider = google-beta
name = "<%= ctx[:vars]['subnetwork_name'] %>"
region = "us-central1"
network = google_compute_network.default.id
reserved_internal_range = "networkconnectivity.googleapis.com/${google_network_connectivity_internal_range.reserved.id}"
}

resource "google_compute_network" "default" {
provider = google-beta
name = "<%= ctx[:vars]['network_name'] %>"
auto_create_subnetworks = false
}

resource "google_network_connectivity_internal_range" "reserved" {
provider = google-beta
name = "reserved"
network = google_compute_network.default.id
usage = "FOR_VPC"
peering = "FOR_SELF"
prefix_length = 24
target_cidr_range = [
"10.0.0.0/8"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
resource "google_compute_subnetwork" "<%= ctx[:primary_resource_id] %>" {
provider = google-beta
name = "<%= ctx[:vars]['subnetwork_name'] %>"
region = "us-central1"
network = google_compute_network.default.id
reserved_internal_range = "networkconnectivity.googleapis.com/${google_network_connectivity_internal_range.reserved.id}"

secondary_ip_range {
range_name = "secondary"
reserved_internal_range = "networkconnectivity.googleapis.com/${google_network_connectivity_internal_range.reserved_secondary.id}"
}
}

resource "google_compute_network" "default" {
provider = google-beta
name = "<%= ctx[:vars]['network_name'] %>"
auto_create_subnetworks = false
}

resource "google_network_connectivity_internal_range" "reserved" {
provider = google-beta
name = "reserved"
network = google_compute_network.default.id
usage = "FOR_VPC"
peering = "FOR_SELF"
prefix_length = 24
target_cidr_range = [
"10.0.0.0/8"
]
}

resource "google_network_connectivity_internal_range" "reserved_secondary" {
provider = google-beta
name = "reserved-secondary"
network = google_compute_network.default.id
usage = "FOR_VPC"
peering = "FOR_SELF"
prefix_length = 16
target_cidr_range = [
"10.0.0.0/8"
]
}