mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-10-03 01:01:06 +00:00
Unremove ipv4_range on networks.
We removed ipv4_range, but the API still exists, it's just deprecated. This breaks configs for users that haven't migrated off yet. I added it back, added some tests to use it, included it in the docs, and basically tried to put things back the way they were. The main difference now is that the auto_create_subnetworks field defaults to true, and we want to keep that behaviour to avoid a breaking change. So now if users want to use the lagacy API, they need to set auto_create_subnetworks to false explicitly.
This commit is contained in:
parent
8f701c6ebb
commit
c9fb64ed57
@ -362,6 +362,8 @@ func testAccComputeFirewall_basic(network, firewall string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_network" "foobar" {
|
||||
name = "%s"
|
||||
auto_create_subnetworks = false
|
||||
ipv4_range = "10.0.0.0/16"
|
||||
}
|
||||
|
||||
resource "google_compute_firewall" "foobar" {
|
||||
@ -380,6 +382,8 @@ func testAccComputeFirewall_update(network, firewall string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_network" "foobar" {
|
||||
name = "%s"
|
||||
auto_create_subnetworks = false
|
||||
ipv4_range = "10.0.0.0/16"
|
||||
}
|
||||
|
||||
resource "google_compute_firewall" "foobar" {
|
||||
@ -399,6 +403,8 @@ func testAccComputeFirewall_priority(network, firewall string, priority int) str
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_network" "foobar" {
|
||||
name = "%s"
|
||||
auto_create_subnetworks = false
|
||||
ipv4_range = "10.0.0.0/16"
|
||||
}
|
||||
|
||||
resource "google_compute_firewall" "foobar" {
|
||||
@ -418,6 +424,8 @@ func testAccComputeFirewall_noSource(network, firewall string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_network" "foobar" {
|
||||
name = "%s"
|
||||
auto_create_subnetworks = false
|
||||
ipv4_range = "10.0.0.0/16"
|
||||
}
|
||||
|
||||
resource "google_compute_firewall" "foobar" {
|
||||
@ -436,6 +444,8 @@ func testAccComputeFirewall_denied(network, firewall string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_network" "foobar" {
|
||||
name = "%s"
|
||||
auto_create_subnetworks = false
|
||||
ipv4_range = "10.0.0.0/16"
|
||||
}
|
||||
|
||||
resource "google_compute_firewall" "foobar" {
|
||||
@ -455,6 +465,8 @@ func testAccComputeFirewall_egress(network, firewall string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_network" "foobar" {
|
||||
name = "%s"
|
||||
auto_create_subnetworks = false
|
||||
ipv4_range = "10.0.0.0/16"
|
||||
}
|
||||
|
||||
resource "google_compute_firewall" "foobar" {
|
||||
|
@ -25,11 +25,10 @@ func resourceComputeNetwork() *schema.Resource {
|
||||
},
|
||||
|
||||
"auto_create_subnetworks": &schema.Schema{
|
||||
Type: schema.TypeBool,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
Default: true,
|
||||
ConflictsWith: []string{"ipv4_range"},
|
||||
Type: schema.TypeBool,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
Default: true,
|
||||
},
|
||||
|
||||
"description": &schema.Schema{
|
||||
@ -47,7 +46,8 @@ func resourceComputeNetwork() *schema.Resource {
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
Removed: "Please use google_compute_subnetwork resources instead.",
|
||||
// This needs to remain deprecated until the API is retired
|
||||
Deprecated: "Please use google_compute_subnetwork resources instead.",
|
||||
},
|
||||
|
||||
"project": &schema.Schema{
|
||||
@ -73,15 +73,34 @@ func resourceComputeNetworkCreate(d *schema.ResourceData, meta interface{}) erro
|
||||
return err
|
||||
}
|
||||
|
||||
//
|
||||
// Possible modes:
|
||||
// - 1 Legacy mode - Create a network in the legacy mode. ipv4_range is set. auto_create_subnetworks must not be
|
||||
// set (enforced by ConflictsWith schema attribute)
|
||||
// - 2 Distributed Mode - Create a new generation network that supports subnetworks:
|
||||
// - 2.a - Auto subnet mode - auto_create_subnetworks = true, Google will generate 1 subnetwork per region
|
||||
// - 2.b - Custom subnet mode - auto_create_subnetworks = false & ipv4_range not set,
|
||||
//
|
||||
autoCreateSubnetworks := d.Get("auto_create_subnetworks").(bool)
|
||||
if autoCreateSubnetworks && d.Get("ipv4_range").(string) != "" {
|
||||
return fmt.Errorf("ipv4_range can't be set if auto_create_subnetworks is true.")
|
||||
}
|
||||
|
||||
// Build the network parameter
|
||||
network := &compute.Network{
|
||||
Name: d.Get("name").(string),
|
||||
AutoCreateSubnetworks: d.Get("auto_create_subnetworks").(bool),
|
||||
AutoCreateSubnetworks: autoCreateSubnetworks,
|
||||
Description: d.Get("description").(string),
|
||||
}
|
||||
|
||||
// make sure AutoCreateSubnetworks field is included in request
|
||||
network.ForceSendFields = []string{"AutoCreateSubnetworks"}
|
||||
if v, ok := d.GetOk("ipv4_range"); ok {
|
||||
log.Printf("[DEBUG] Setting IPv4Range (%#v) for legacy network mode", v.(string))
|
||||
network.IPv4Range = v.(string)
|
||||
} else {
|
||||
// custom subnet mode, so make sure AutoCreateSubnetworks field is included in request otherwise
|
||||
// google will create a network in legacy mode.
|
||||
network.ForceSendFields = []string{"AutoCreateSubnetworks"}
|
||||
}
|
||||
log.Printf("[DEBUG] Network insert request: %#v", network)
|
||||
op, err := config.clientCompute.Networks.Insert(
|
||||
project, network).Do()
|
||||
@ -115,6 +134,7 @@ func resourceComputeNetworkRead(d *schema.ResourceData, meta interface{}) error
|
||||
}
|
||||
|
||||
d.Set("gateway_ipv4", network.GatewayIPv4)
|
||||
d.Set("ipv4_range", network.IPv4Range)
|
||||
d.Set("self_link", network.SelfLink)
|
||||
d.Set("name", network.Name)
|
||||
d.Set("auto_create_subnetworks", network.AutoCreateSubnetworks)
|
||||
|
@ -129,22 +129,17 @@ func testAccComputeRoute_basic() string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_network" "foobar" {
|
||||
name = "route-test-%s"
|
||||
}
|
||||
|
||||
resource "google_compute_subnetwork" "foobar" {
|
||||
name = "route-test-%s"
|
||||
ip_cidr_range = "10.0.0.0/16"
|
||||
network = "${google_compute_network.foobar.self_link}"
|
||||
region = "us-central1"
|
||||
auto_create_subnetworks = false
|
||||
ipv4_range = "10.0.0.0/16"
|
||||
}
|
||||
|
||||
resource "google_compute_route" "foobar" {
|
||||
name = "route-test-%s"
|
||||
dest_range = "15.0.0.0/24"
|
||||
network = "${google_compute_network.foobar.name}"
|
||||
next_hop_ip = "10.154.0.1"
|
||||
next_hop_ip = "10.0.1.5"
|
||||
priority = 100
|
||||
}`, acctest.RandString(10), acctest.RandString(10), acctest.RandString(10))
|
||||
}`, acctest.RandString(10), acctest.RandString(10))
|
||||
}
|
||||
|
||||
func testAccComputeRoute_defaultInternetGateway() string {
|
||||
|
@ -88,7 +88,8 @@ func testAccComputeVpnGateway_basic() string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_network" "foobar" {
|
||||
name = "gateway-test-%s"
|
||||
auto_create_subnetworks = true
|
||||
auto_create_subnetworks = false
|
||||
ipv4_range = "10.0.0.0/16"
|
||||
}
|
||||
|
||||
resource "google_compute_vpn_gateway" "foobar" {
|
||||
|
@ -34,7 +34,11 @@ The following arguments are supported:
|
||||
* `auto_create_subnetworks` - (Optional) If set to true, this network will be
|
||||
created in auto subnet mode, and Google will create a subnet for each region
|
||||
automatically. If set to false, a custom subnetted network will be created that
|
||||
can support `google_compute_subnetwork` resources.
|
||||
can support `google_compute_subnetwork` resources. Defaults to true.
|
||||
|
||||
* `ipv4_range` - (Optional) If set to a CIDR block, uses the legacy VPC API with the
|
||||
specified range. This API is deprecated. If set, `auto_create_subnetworks` must be
|
||||
explicitly set to false.
|
||||
|
||||
* `description` - (Optional) A brief description of this resource.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user