From 1620b7b0ab2ed64b5aab777621493c1dfe343769 Mon Sep 17 00:00:00 2001 From: Andrew Starr-Bochicchio Date: Fri, 25 Aug 2017 16:48:05 -0400 Subject: [PATCH] Correctly hand destination_tags in firewall resource. Fixes: #33 --- .../resource_digitalocean_firewall.go | 2 +- .../resource_digitalocean_firewall_test.go | 20 +++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/digitalocean/resource_digitalocean_firewall.go b/digitalocean/resource_digitalocean_firewall.go index 890c763b..bac53511 100644 --- a/digitalocean/resource_digitalocean_firewall.go +++ b/digitalocean/resource_digitalocean_firewall.go @@ -352,7 +352,7 @@ func expandFirewallOutboundRules(d *schema.ResourceData) []godo.OutboundRule { destinationTags := rule["destination_tags"].([]interface{}) for _, tag := range destinationTags { - dest.Addresses = append(dest.Tags, tag.(string)) + dest.Tags = append(dest.Tags, tag.(string)) } dropletIds := rule["destination_droplet_ids"].([]interface{}) diff --git a/digitalocean/resource_digitalocean_firewall_test.go b/digitalocean/resource_digitalocean_firewall_test.go index 86942ae3..1f1ae886 100644 --- a/digitalocean/resource_digitalocean_firewall_test.go +++ b/digitalocean/resource_digitalocean_firewall_test.go @@ -123,6 +123,7 @@ func TestAccDigitalOceanFirewall_AllowMultipleOutbound(t *testing.T) { func TestAccDigitalOceanFirewall_MultipleInboundAndOutbound(t *testing.T) { rName := acctest.RandString(10) + tagName := "tag-" + rName var firewall godo.Firewall resource.Test(t, resource.TestCase{ @@ -131,7 +132,7 @@ func TestAccDigitalOceanFirewall_MultipleInboundAndOutbound(t *testing.T) { CheckDestroy: testAccCheckDigitalOceanFirewallDestroy, Steps: []resource.TestStep{ { - Config: testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(rName), + Config: testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(tagName, rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDigitalOceanFirewallExists("digitalocean_firewall.foobar", &firewall), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.#", "2"), @@ -140,6 +141,8 @@ func TestAccDigitalOceanFirewall_MultipleInboundAndOutbound(t *testing.T) { resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.1.source_addresses.#", "2"), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.1.source_addresses.0", "192.168.1.0/24"), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.1.source_addresses.1", "2002:1001:1:2::/64"), + resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.1.source_tags.#", "1"), + resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.1.source_tags.0", tagName), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.0.port_range", "22"), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.0.protocol", "tcp"), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "inbound_rule.0.source_addresses.#", "2"), @@ -151,6 +154,8 @@ func TestAccDigitalOceanFirewall_MultipleInboundAndOutbound(t *testing.T) { resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.0.destination_addresses.#", "2"), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.0.destination_addresses.0", "192.168.1.0/24"), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.0.destination_addresses.1", "2002:1001:1:2::/64"), + resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.0.destination_tags.#", "1"), + resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.0.destination_tags.0", tagName), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.1.port_range", "53"), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.1.protocol", "udp"), resource.TestCheckResourceAttr("digitalocean_firewall.foobar", "outbound_rule.1.destination_addresses.#", "2"), @@ -165,13 +170,14 @@ func TestAccDigitalOceanFirewall_MultipleInboundAndOutbound(t *testing.T) { func TestAccDigitalOceanFirewall_ImportMultipleRules(t *testing.T) { resourceName := "digitalocean_firewall.foobar" rName := acctest.RandString(10) + tagName := "tag-" + rName resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, CheckDestroy: testAccCheckDigitalOceanFirewallDestroy, Steps: []resource.TestStep{ { - Config: testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(rName), + Config: testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(tagName, rName), }, { @@ -249,8 +255,12 @@ func testAccDigitalOceanFirewallConfig_OnlyMultipleOutbound(rName string) string `, rName) } -func testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(rName string) string { +func testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(tagName string, rName string) string { return fmt.Sprintf(` + resource "digitalocean_tag" "foobar" { + name = "%s" + } + resource "digitalocean_firewall" "foobar" { name = "%s" inbound_rule { @@ -262,11 +272,13 @@ func testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(rName string) protocol = "tcp" port_range = "443" source_addresses = ["192.168.1.0/24", "2002:1001:1:2::/64"] + source_tags = ["%s"] } outbound_rule { protocol = "tcp" port_range = "443" destination_addresses = ["192.168.1.0/24", "2002:1001:1:2::/64"] + destination_tags = ["%s"] } outbound_rule { protocol = "udp" @@ -275,7 +287,7 @@ func testAccDigitalOceanFirewallConfig_MultipleInboundAndOutbound(rName string) } } - `, rName) + `, tagName, rName, tagName, tagName) } func testAccCheckDigitalOceanFirewallDestroy(s *terraform.State) error {