Skip to content

Commit

Permalink
terraform: DNS private managed_zones outbound forwarding
Browse files Browse the repository at this point in the history
  • Loading branch information
drebes committed Dec 16, 2018
1 parent 0d46147 commit e864e08
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 6 deletions.
21 changes: 21 additions & 0 deletions products/dns/api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,27 @@ objects:
This should be formatted like
https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
min_version: beta
- !ruby/object:Api::Type::NestedObject
name: 'forwardingConfig'
description: |
The presence for this field indicates that outbound forwarding is enabled
for this zone. The value of this field contains the set of destinations
to forward to.
update_verb: :PATCH
update_url: 'projects/{{project}}/managedZones/{{name}}'
properties:
- !ruby/object:Api::Type::Array
name: 'targetNameServers'
description: |
List of target name servers to forward to. Cloud DNS will
select the best available name server if more than
one target is given.
item_type: !ruby/object:Api::Type::NestedObject
properties:
- !ruby/object:Api::Type::String
name: 'ipv4Address'
description: 'IPv4 address of a target name server.'
min_version: beta
references: !ruby/object:Api::Resource::ReferenceLinks
guides:
'Managing Zones':
Expand Down
4 changes: 2 additions & 2 deletions products/dns/terraform.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ overrides: !ruby/object:Provider::ResourceOverrides
func(v interface{}) int {
raw := v.(map[string]interface{})
if url, ok := raw["network_url"]; ok {
log.Printf("[DEBUG] URL %s", url)
log.Printf("[DEBUG] URL hash %d", selfLinkNameHash(url))
return selfLinkNameHash(url)
}
var buf bytes.Buffer
Expand All @@ -56,6 +54,8 @@ overrides: !ruby/object:Provider::ResourceOverrides
}
privateVisibilityConfig.networks.networkUrl: !ruby/object:Provider::Terraform::PropertyOverride
diff_suppress_func: 'compareSelfLinkOrResourceName'
forwardingConfig.targetNameServers: !ruby/object:Provider::Terraform::PropertyOverride
is_set: true
ResourceRecordSet: !ruby/object:Provider::Terraform::ResourceOverride
exclude: true
Project: !ruby/object:Provider::Terraform::ResourceOverride
Expand Down
9 changes: 9 additions & 0 deletions templates/terraform/examples/dns_managed_zone_private.tf.erb
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@ resource "google_dns_managed_zone" "<%= ctx[:primary_resource_id] %>" {
}
}

forwarding_config {
target_name_servers {
ipv4_address = "172.16.1.10"
}
target_name_servers {
ipv4_address = "172.16.1.20"
}
}

}

resource "google_compute_network" "network-1" {
Expand Down
17 changes: 13 additions & 4 deletions third_party/terraform/tests/resource_dns_managed_zone_test.go.erb
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,15 @@ func TestAccDnsManagedZone_privateUpdate(t *testing.T) {
CheckDestroy: testAccCheckDnsManagedZoneDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccDnsManagedZone_privateUpdate(zoneSuffix, "network-1", "network-2"),
Config: testAccDnsManagedZone_privateUpdate(zoneSuffix, "network-1", "network-2", "172.16.1.10", "172.16.1.20"),
},
resource.TestStep{
ResourceName: "google_dns_managed_zone.private",
ImportState: true,
ImportStateVerify: true,
},
resource.TestStep{
Config: testAccDnsManagedZone_privateUpdate(zoneSuffix, "network-2", "network-3"),
Config: testAccDnsManagedZone_privateUpdate(zoneSuffix, "network-1", "network-3", "172.16.1.10", "192.168.1.1"),
},
resource.TestStep{
ResourceName: "google_dns_managed_zone.private",
Expand All @@ -84,7 +84,7 @@ resource "google_dns_managed_zone" "foobar" {
}

<% unless version.nil? || version == 'ga' -%>
func testAccDnsManagedZone_privateUpdate(suffix, first_network, second_network string) string {
func testAccDnsManagedZone_privateUpdate(suffix, first_network, second_network, first_nameserver, second_nameserver string) string {
return fmt.Sprintf(`
resource "google_dns_managed_zone" "private" {
name = "private-zone-%s"
Expand All @@ -99,6 +99,15 @@ resource "google_dns_managed_zone" "private" {
network_url = "${google_compute_network.%s.self_link}"
}
}

forwarding_config {
target_name_servers {
ipv4_address = "%s"
}
target_name_servers {
ipv4_address = "%s"
}
}
}

resource "google_compute_network" "network-1" {
Expand All @@ -114,7 +123,7 @@ resource "google_compute_network" "network-2" {
resource "google_compute_network" "network-3" {
name = "network-3-%s"
auto_create_subnetworks = false
}`, suffix, first_network, second_network, suffix, suffix, suffix)
}`, suffix, first_network, second_network, first_nameserver, second_nameserver, suffix, suffix, suffix)
}
<% end -%>

Expand Down

0 comments on commit e864e08

Please sign in to comment.