From c91bc0f37ee4ad6683514b8645c060ba24b1ad48 Mon Sep 17 00:00:00 2001 From: kterada0509 Date: Sun, 4 Aug 2019 15:33:50 +0900 Subject: [PATCH 1/2] refactor error handling --- aws/resource_aws_wafregional_geo_match_set.go | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/aws/resource_aws_wafregional_geo_match_set.go b/aws/resource_aws_wafregional_geo_match_set.go index 107640171ac9..493a2ca6235a 100644 --- a/aws/resource_aws_wafregional_geo_match_set.go +++ b/aws/resource_aws_wafregional_geo_match_set.go @@ -76,16 +76,14 @@ func resourceAwsWafRegionalGeoMatchSetRead(d *schema.ResourceData, meta interfac } resp, err := conn.GetGeoMatchSet(params) - if err != nil { - // TODO: Replace with constant once it's available - // See https://github.com/aws/aws-sdk-go/issues/1856 - if isAWSErr(err, "WAFNonexistentItemException", "") { - log.Printf("[WARN] WAF WAF Regional Geo Match Set (%s) not found, removing from state", d.Id()) - d.SetId("") - return nil - } - return err + if isAWSErr(err, wafregional.ErrCodeWAFNonexistentItemException, "") { + log.Printf("[WARN] WAF WAF Regional Geo Match Set (%s) not found, removing from state", d.Id()) + d.SetId("") + return nil + } + if err != nil { + return fmt.Errorf("Error getting WAF Regional Geo Match Set (%s): %s", d.Id(), err) } d.Set("name", resp.GeoMatchSet.Name) @@ -103,8 +101,13 @@ func resourceAwsWafRegionalGeoMatchSetUpdate(d *schema.ResourceData, meta interf oldConstraints, newConstraints := o.(*schema.Set).List(), n.(*schema.Set).List() err := updateGeoMatchSetResourceWR(d.Id(), oldConstraints, newConstraints, conn, region) + if isAWSErr(err, wafregional.ErrCodeWAFNonexistentItemException, "") { + log.Printf("[WARN] WAF WAF Regional Geo Match Set (%s) not found, removing from state", d.Id()) + d.SetId("") + return nil + } if err != nil { - return fmt.Errorf("Failed updating WAF Regional Geo Match Set: %s", err) + return fmt.Errorf("Failed updating WAF Regional Geo Match Set(%s): %s", d.Id(), err) } } @@ -133,8 +136,11 @@ func resourceAwsWafRegionalGeoMatchSetDelete(d *schema.ResourceData, meta interf return conn.DeleteGeoMatchSet(req) }) + if isAWSErr(err, wafregional.ErrCodeWAFNonexistentItemException, "") { + return nil + } if err != nil { - return fmt.Errorf("Failed deleting WAF Regional Geo Match Set: %s", err) + return fmt.Errorf("Failed deleting WAF Regional Geo Match Set(%s): %s", d.Id(), err) } return nil From c0829eabf393ed3516ffc3346e3516d36dac205a Mon Sep 17 00:00:00 2001 From: kterada0509 Date: Sun, 4 Aug 2019 15:34:24 +0900 Subject: [PATCH 2/2] Add support import for aws_wafregional_geo_match_set resource --- aws/resource_aws_wafregional_geo_match_set.go | 3 + ...urce_aws_wafregional_geo_match_set_test.go | 87 ++++++++++++------- .../r/wafregional_geo_match_set.html.markdown | 8 ++ 3 files changed, 67 insertions(+), 31 deletions(-) diff --git a/aws/resource_aws_wafregional_geo_match_set.go b/aws/resource_aws_wafregional_geo_match_set.go index 493a2ca6235a..bdb2ec0ddca4 100644 --- a/aws/resource_aws_wafregional_geo_match_set.go +++ b/aws/resource_aws_wafregional_geo_match_set.go @@ -16,6 +16,9 @@ func resourceAwsWafRegionalGeoMatchSet() *schema.Resource { Read: resourceAwsWafRegionalGeoMatchSetRead, Update: resourceAwsWafRegionalGeoMatchSetUpdate, Delete: resourceAwsWafRegionalGeoMatchSetDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, Schema: map[string]*schema.Schema{ "name": { diff --git a/aws/resource_aws_wafregional_geo_match_set_test.go b/aws/resource_aws_wafregional_geo_match_set_test.go index f0878aa034c5..083f4c7d928e 100644 --- a/aws/resource_aws_wafregional_geo_match_set_test.go +++ b/aws/resource_aws_wafregional_geo_match_set_test.go @@ -13,6 +13,7 @@ import ( func TestAccAWSWafRegionalGeoMatchSet_basic(t *testing.T) { var v waf.GeoMatchSet + resourceName := "aws_wafregional_geo_match_set.test" geoMatchSet := fmt.Sprintf("tfacc-%s", acctest.RandString(5)) resource.ParallelTest(t, resource.TestCase{ @@ -23,27 +24,33 @@ func TestAccAWSWafRegionalGeoMatchSet_basic(t *testing.T) { { Config: testAccAWSWafRegionalGeoMatchSetConfig(geoMatchSet), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSWafRegionalGeoMatchSetExists("aws_wafregional_geo_match_set.test", &v), + testAccCheckAWSWafRegionalGeoMatchSetExists(resourceName, &v), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "name", geoMatchSet), + resourceName, "name", geoMatchSet), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.#", "2"), + resourceName, "geo_match_constraint.#", "2"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.384465307.type", "Country"), + resourceName, "geo_match_constraint.384465307.type", "Country"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.384465307.value", "US"), + resourceName, "geo_match_constraint.384465307.value", "US"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.1991628426.type", "Country"), + resourceName, "geo_match_constraint.1991628426.type", "Country"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.1991628426.value", "CA"), + resourceName, "geo_match_constraint.1991628426.value", "CA"), ), }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, }, }) } func TestAccAWSWafRegionalGeoMatchSet_changeNameForceNew(t *testing.T) { var before, after waf.GeoMatchSet + resourceName := "aws_wafregional_geo_match_set.test" geoMatchSet := fmt.Sprintf("tfacc-%s", acctest.RandString(5)) geoMatchSetNewName := fmt.Sprintf("geoMatchSetNewName-%s", acctest.RandString(5)) @@ -55,30 +62,36 @@ func TestAccAWSWafRegionalGeoMatchSet_changeNameForceNew(t *testing.T) { { Config: testAccAWSWafRegionalGeoMatchSetConfig(geoMatchSet), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSWafRegionalGeoMatchSetExists("aws_wafregional_geo_match_set.test", &before), + testAccCheckAWSWafRegionalGeoMatchSetExists(resourceName, &before), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "name", geoMatchSet), + resourceName, "name", geoMatchSet), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.#", "2"), + resourceName, "geo_match_constraint.#", "2"), ), }, { Config: testAccAWSWafRegionalGeoMatchSetConfigChangeName(geoMatchSetNewName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSWafRegionalGeoMatchSetExists("aws_wafregional_geo_match_set.test", &after), + testAccCheckAWSWafRegionalGeoMatchSetExists(resourceName, &after), testAccCheckAWSWafGeoMatchSetIdDiffers(&before, &after), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "name", geoMatchSetNewName), + resourceName, "name", geoMatchSetNewName), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.#", "2"), + resourceName, "geo_match_constraint.#", "2"), ), }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, }, }) } func TestAccAWSWafRegionalGeoMatchSet_disappears(t *testing.T) { var v waf.GeoMatchSet + resourceName := "aws_wafregional_geo_match_set.test" geoMatchSet := fmt.Sprintf("tfacc-%s", acctest.RandString(5)) resource.ParallelTest(t, resource.TestCase{ @@ -89,7 +102,7 @@ func TestAccAWSWafRegionalGeoMatchSet_disappears(t *testing.T) { { Config: testAccAWSWafRegionalGeoMatchSetConfig(geoMatchSet), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSWafRegionalGeoMatchSetExists("aws_wafregional_geo_match_set.test", &v), + testAccCheckAWSWafRegionalGeoMatchSetExists(resourceName, &v), testAccCheckAWSWafRegionalGeoMatchSetDisappears(&v), ), ExpectNonEmptyPlan: true, @@ -100,6 +113,7 @@ func TestAccAWSWafRegionalGeoMatchSet_disappears(t *testing.T) { func TestAccAWSWafRegionalGeoMatchSet_changeConstraints(t *testing.T) { var before, after waf.GeoMatchSet + resourceName := "aws_wafregional_geo_match_set.test" setName := fmt.Sprintf("tfacc-%s", acctest.RandString(5)) resource.ParallelTest(t, resource.TestCase{ @@ -110,45 +124,51 @@ func TestAccAWSWafRegionalGeoMatchSet_changeConstraints(t *testing.T) { { Config: testAccAWSWafRegionalGeoMatchSetConfig(setName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckAWSWafRegionalGeoMatchSetExists("aws_wafregional_geo_match_set.test", &before), + testAccCheckAWSWafRegionalGeoMatchSetExists(resourceName, &before), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "name", setName), + resourceName, "name", setName), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.#", "2"), + resourceName, "geo_match_constraint.#", "2"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.384465307.type", "Country"), + resourceName, "geo_match_constraint.384465307.type", "Country"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.384465307.value", "US"), + resourceName, "geo_match_constraint.384465307.value", "US"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.1991628426.type", "Country"), + resourceName, "geo_match_constraint.1991628426.type", "Country"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.1991628426.value", "CA"), + resourceName, "geo_match_constraint.1991628426.value", "CA"), ), }, { Config: testAccAWSWafRegionalGeoMatchSetConfig_changeConstraints(setName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckAWSWafRegionalGeoMatchSetExists("aws_wafregional_geo_match_set.test", &after), + testAccCheckAWSWafRegionalGeoMatchSetExists(resourceName, &after), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "name", setName), + resourceName, "name", setName), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.#", "2"), + resourceName, "geo_match_constraint.#", "2"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.1174390936.type", "Country"), + resourceName, "geo_match_constraint.1174390936.type", "Country"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.1174390936.value", "RU"), + resourceName, "geo_match_constraint.1174390936.value", "RU"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.4046309957.type", "Country"), + resourceName, "geo_match_constraint.4046309957.type", "Country"), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.4046309957.value", "CN"), + resourceName, "geo_match_constraint.4046309957.value", "CN"), ), }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, }, }) } func TestAccAWSWafRegionalGeoMatchSet_noConstraints(t *testing.T) { var ipset waf.GeoMatchSet + resourceName := "aws_wafregional_geo_match_set.test" setName := fmt.Sprintf("tfacc-%s", acctest.RandString(5)) resource.ParallelTest(t, resource.TestCase{ @@ -159,13 +179,18 @@ func TestAccAWSWafRegionalGeoMatchSet_noConstraints(t *testing.T) { { Config: testAccAWSWafRegionalGeoMatchSetConfig_noConstraints(setName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckAWSWafRegionalGeoMatchSetExists("aws_wafregional_geo_match_set.test", &ipset), + testAccCheckAWSWafRegionalGeoMatchSetExists(resourceName, &ipset), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "name", setName), + resourceName, "name", setName), resource.TestCheckResourceAttr( - "aws_wafregional_geo_match_set.test", "geo_match_constraint.#", "0"), + resourceName, "geo_match_constraint.#", "0"), ), }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, }, }) } diff --git a/website/docs/r/wafregional_geo_match_set.html.markdown b/website/docs/r/wafregional_geo_match_set.html.markdown index 677c2f177488..518bc7810a28 100644 --- a/website/docs/r/wafregional_geo_match_set.html.markdown +++ b/website/docs/r/wafregional_geo_match_set.html.markdown @@ -51,3 +51,11 @@ The following arguments are supported: In addition to all arguments above, the following attributes are exported: * `id` - The ID of the WAF Regional Geo Match Set. + +## Import + +WAF Regional Geo Match Set can be imported using the id, e.g. + +``` +$ terraform import aws_wafregional_geo_match_set.geo_match_set a1b2c3d4-d5f6-7777-8888-9999aaaabbbbcccc +``` \ No newline at end of file