Skip to content

Commit

Permalink
service/ssm: Refactor to use keyvaluetags package and common test pra…
Browse files Browse the repository at this point in the history
…ctices (#11290)

Output from acceptance testing:

```
--- PASS: TestAccAWSSSMActivation_basic (34.55s)
--- PASS: TestAccAWSSSMActivation_expirationDate (36.02s)
--- PASS: TestAccAWSSSMActivation_update (48.14s)

--- PASS: TestAccAWSSSMDocument_automation (36.26s)
--- PASS: TestAccAWSSSMDocument_basic (46.11s)
--- PASS: TestAccAWSSSMDocument_DocumentFormat_YAML (66.95s)
--- PASS: TestAccAWSSSMDocument_params (19.32s)
--- PASS: TestAccAWSSSMDocument_permission_batching (19.49s)
--- PASS: TestAccAWSSSMDocument_permission_change (73.30s)
--- PASS: TestAccAWSSSMDocument_permission_private (42.17s)
--- PASS: TestAccAWSSSMDocument_permission_public (30.52s)
--- PASS: TestAccAWSSSMDocument_SchemaVersion_1 (48.34s)
--- PASS: TestAccAWSSSMDocument_session (25.64s)
--- PASS: TestAccAWSSSMDocument_Tags (65.48s)
--- PASS: TestAccAWSSSMDocument_update (32.67s)

--- PASS: TestAccAWSSSMMaintenanceWindow_basic (13.84s)
--- PASS: TestAccAWSSSMMaintenanceWindow_Cutoff (31.15s)
--- PASS: TestAccAWSSSMMaintenanceWindow_disappears (12.43s)
--- PASS: TestAccAWSSSMMaintenanceWindow_Duration (32.88s)
--- PASS: TestAccAWSSSMMaintenanceWindow_Enabled (32.06s)
--- PASS: TestAccAWSSSMMaintenanceWindow_EndDate (40.70s)
--- PASS: TestAccAWSSSMMaintenanceWindow_multipleUpdates (26.45s)
--- PASS: TestAccAWSSSMMaintenanceWindow_Schedule (34.80s)
--- PASS: TestAccAWSSSMMaintenanceWindow_ScheduleTimezone (42.91s)
--- PASS: TestAccAWSSSMMaintenanceWindow_StartDate (41.86s)
--- PASS: TestAccAWSSSMMaintenanceWindow_tags (40.01s)

--- PASS: TestAccAWSSSMMaintenanceWindowTarget_basic (16.03s)
--- PASS: TestAccAWSSSMMaintenanceWindowTarget_noNameOrDescription (15.03s)
--- PASS: TestAccAWSSSMMaintenanceWindowTarget_update (21.87s)
--- PASS: TestAccAWSSSMMaintenanceWindowTarget_validation (7.58s)

--- PASS: TestAccAWSSSMMaintenanceWindowTask_basic (24.99s)
--- PASS: TestAccAWSSSMMaintenanceWindowTask_emptyNotificationConfig (16.71s)
--- PASS: TestAccAWSSSMMaintenanceWindowTask_TaskInvocationAutomationParameters (24.40s)
--- PASS: TestAccAWSSSMMaintenanceWindowTask_TaskInvocationLambdaParameters (45.00s)
--- PASS: TestAccAWSSSMMaintenanceWindowTask_TaskInvocationRunCommandParameters (29.90s)
--- PASS: TestAccAWSSSMMaintenanceWindowTask_TaskInvocationStepFunctionParameters (16.33s)
--- PASS: TestAccAWSSSMMaintenanceWindowTask_TaskParameters (15.49s)
--- PASS: TestAccAWSSSMMaintenanceWindowTask_updateForcesNewResource (22.87s)

--- PASS: TestAccAWSSSMParameter_basic (21.89s)
--- PASS: TestAccAWSSSMParameter_changeNameForcesNew (32.04s)
--- PASS: TestAccAWSSSMParameter_disappears (17.83s)
--- PASS: TestAccAWSSSMParameter_fullPath (19.99s)
--- PASS: TestAccAWSSSMParameter_overwrite (32.00s)
--- PASS: TestAccAWSSSMParameter_secure (20.16s)
--- PASS: TestAccAWSSSMParameter_secure_keyUpdate (42.76s)
--- PASS: TestAccAWSSSMParameter_secure_with_key (38.15s)
--- PASS: TestAccAWSSSMParameter_tags (37.14s)
--- PASS: TestAccAWSSSMParameter_Tier (41.45s)
--- PASS: TestAccAWSSSMParameter_updateDescription (32.29s)

--- PASS: TestAccAWSSSMPatchBaseline_basic (22.51s)
--- PASS: TestAccAWSSSMPatchBaseline_disappears (14.07s)
--- PASS: TestAccAWSSSMPatchBaseline_OperatingSystem (20.14s)
--- PASS: TestAccAWSSSMPatchBaseline_tags (26.73s)
```
  • Loading branch information
DrFaust92 authored and bflad committed Dec 18, 2019
1 parent f75f416 commit 75f4cbf
Show file tree
Hide file tree
Showing 12 changed files with 329 additions and 450 deletions.
6 changes: 5 additions & 1 deletion aws/resource_aws_ssm_activation.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

func resourceAwsSsmActivation() *schema.Resource {
Expand Down Expand Up @@ -92,7 +93,7 @@ func resourceAwsSsmActivationCreate(d *schema.ResourceData, meta interface{}) er
activationInput.RegistrationLimit = aws.Int64(int64(d.Get("registration_limit").(int)))
}
if v, ok := d.GetOk("tags"); ok {
activationInput.Tags = tagsFromMapSSM(v.(map[string]interface{}))
activationInput.Tags = keyvaluetags.New(v.(map[string]interface{})).IgnoreAws().SsmTags()
}

// Retry to allow iam_role to be created and policy attachment to take place
Expand Down Expand Up @@ -160,6 +161,9 @@ func resourceAwsSsmActivationRead(d *schema.ResourceData, meta interface{}) erro
d.Set("iam_role", activation.IamRole)
d.Set("registration_limit", activation.RegistrationLimit)
d.Set("registration_count", activation.RegistrationsCount)
if err := d.Set("tags", keyvaluetags.SsmKeyValueTags(activation.Tags).IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}

return nil
}
Expand Down
17 changes: 9 additions & 8 deletions aws/resource_aws_ssm_activation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ func TestAccAWSSSMActivation_basic(t *testing.T) {
func TestAccAWSSSMActivation_update(t *testing.T) {
var ssmActivation1, ssmActivation2 ssm.Activation
name := acctest.RandString(10)
resourceName := "aws_ssm_activation.foo"
resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Expand All @@ -45,19 +46,19 @@ func TestAccAWSSSMActivation_update(t *testing.T) {
{
Config: testAccAWSSSMActivationBasicConfig(name, "My Activation"),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSSSMActivationExists("aws_ssm_activation.foo", &ssmActivation1),
resource.TestCheckResourceAttrSet("aws_ssm_activation.foo", "activation_code"),
resource.TestCheckResourceAttr("aws_ssm_activation.foo", "tags.%", "1"),
resource.TestCheckResourceAttr("aws_ssm_activation.foo", "tags.Name", "My Activation"),
testAccCheckAWSSSMActivationExists(resourceName, &ssmActivation1),
resource.TestCheckResourceAttrSet(resourceName, "activation_code"),
resource.TestCheckResourceAttr(resourceName, "tags.%", "1"),
resource.TestCheckResourceAttr(resourceName, "tags.Name", "My Activation"),
),
},
{
Config: testAccAWSSSMActivationBasicConfig(name, "Foo"),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSSSMActivationExists("aws_ssm_activation.foo", &ssmActivation2),
resource.TestCheckResourceAttrSet("aws_ssm_activation.foo", "activation_code"),
resource.TestCheckResourceAttr("aws_ssm_activation.foo", "tags.%", "1"),
resource.TestCheckResourceAttr("aws_ssm_activation.foo", "tags.Name", "Foo"),
testAccCheckAWSSSMActivationExists(resourceName, &ssmActivation2),
resource.TestCheckResourceAttrSet(resourceName, "activation_code"),
resource.TestCheckResourceAttr(resourceName, "tags.%", "1"),
resource.TestCheckResourceAttr(resourceName, "tags.Name", "Foo"),
testAccCheckAWSSSMActivationRecreated(t, &ssmActivation1, &ssmActivation2),
),
},
Expand Down
22 changes: 8 additions & 14 deletions aws/resource_aws_ssm_document.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

const (
Expand Down Expand Up @@ -160,7 +161,7 @@ func resourceAwsSsmDocumentCreate(d *schema.ResourceData, meta interface{}) erro
}

if v, ok := d.GetOk("tags"); ok {
docInput.Tags = tagsFromMapSSM(v.(map[string]interface{}))
docInput.Tags = keyvaluetags.New(v.(map[string]interface{})).IgnoreAws().SsmTags()
}

log.Printf("[DEBUG] Waiting for SSM Document %q to be created", d.Get("name").(string))
Expand Down Expand Up @@ -192,10 +193,6 @@ func resourceAwsSsmDocumentCreate(d *schema.ResourceData, meta interface{}) erro
log.Printf("[DEBUG] Not setting permissions for %q", d.Id())
}

if err := setTagsSSM(ssmconn, d, d.Id(), ssm.ResourceTypeForTaggingDocument); err != nil {
return fmt.Errorf("error setting SSM Document tags: %s", err)
}

return resourceAwsSsmDocumentRead(d, meta)
}

Expand Down Expand Up @@ -302,14 +299,9 @@ func resourceAwsSsmDocumentRead(d *schema.ResourceData, meta interface{}) error
return err
}

tagList, err := ssmconn.ListTagsForResource(&ssm.ListTagsForResourceInput{
ResourceId: aws.String(d.Id()),
ResourceType: aws.String(ssm.ResourceTypeForTaggingDocument),
})
if err != nil {
return fmt.Errorf("error listing SSM Document tags for %s: %s", d.Id(), err)
if err := d.Set("tags", keyvaluetags.SsmKeyValueTags(doc.Tags).IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}
d.Set("tags", tagsToMapSSM(tagList.TagList))

return nil
}
Expand All @@ -318,8 +310,10 @@ func resourceAwsSsmDocumentUpdate(d *schema.ResourceData, meta interface{}) erro
ssmconn := meta.(*AWSClient).ssmconn

if d.HasChange("tags") {
if err := setTagsSSM(ssmconn, d, d.Id(), ssm.ResourceTypeForTaggingDocument); err != nil {
return fmt.Errorf("error setting SSM Document tags: %s", err)
o, n := d.GetChange("tags")

if err := keyvaluetags.SsmUpdateTags(ssmconn, d.Id(), ssm.ResourceTypeForTaggingDocument, o, n); err != nil {
return fmt.Errorf("error updating SSM Document (%s) tags: %s", d.Id(), err)
}
}

Expand Down
Loading

0 comments on commit 75f4cbf

Please sign in to comment.