// setTags is a helper to set the tags for a resource. It expects the // tags field to be named "tags" func setTags(conn *ec2.EC2, d *schema.ResourceData) error { if d.HasChange("tags") { oraw, nraw := d.GetChange("tags") o := oraw.(map[string]interface{}) n := nraw.(map[string]interface{}) create, remove := diffTags(tagsFromMap(o), tagsFromMap(n)) // Set tags if len(remove) > 0 { log.Printf("[DEBUG] Removing tags: %#v from %s", remove, d.Id()) _, err := conn.DeleteTags(&ec2.DeleteTagsInput{ Resources: []*string{aws.String(d.Id())}, Tags: remove, }) if err != nil { return err } } if len(create) > 0 { log.Printf("[DEBUG] Creating tags: %s for %s", awsutil.StringValue(create), d.Id()) _, err := conn.CreateTags(&ec2.CreateTagsInput{ Resources: []*string{aws.String(d.Id())}, Tags: create, }) if err != nil { return err } } } return nil }
func deleteTags(ctx context.Context, svc ec2.EC2, resourceIds []*string) { if len(ctx.RmTags) <= 0 { return } _, err := svc.DeleteTags(&ec2.DeleteTagsInput{ Resources: resourceIds, Tags: rmtagArgsToEc2Tags(ctx.RmTags), }) kingpin.FatalIfError(err, "Could not delete tags for EC2 resources %s", resourceIds) }
// setTags is a helper to set the tags for a resource. It expects the // tags field to be named "tags" func setTags(conn *ec2.EC2, d *schema.ResourceData) error { if d.HasChange("tags") { oraw, nraw := d.GetChange("tags") o := oraw.(map[string]interface{}) n := nraw.(map[string]interface{}) create, remove := diffTags(tagsFromMap(o), tagsFromMap(n)) // Set tags if len(remove) > 0 { err := resource.Retry(2*time.Minute, func() *resource.RetryError { log.Printf("[DEBUG] Removing tags: %#v from %s", remove, d.Id()) _, err := conn.DeleteTags(&ec2.DeleteTagsInput{ Resources: []*string{aws.String(d.Id())}, Tags: remove, }) if err != nil { ec2err, ok := err.(awserr.Error) if ok && strings.Contains(ec2err.Code(), ".NotFound") { return resource.RetryableError(err) // retry } return resource.NonRetryableError(err) } return nil }) if err != nil { return err } } if len(create) > 0 { err := resource.Retry(2*time.Minute, func() *resource.RetryError { log.Printf("[DEBUG] Creating tags: %s for %s", create, d.Id()) _, err := conn.CreateTags(&ec2.CreateTagsInput{ Resources: []*string{aws.String(d.Id())}, Tags: create, }) if err != nil { ec2err, ok := err.(awserr.Error) if ok && strings.Contains(ec2err.Code(), ".NotFound") { return resource.RetryableError(err) // retry } return resource.NonRetryableError(err) } return nil }) if err != nil { return err } } } return nil }