github.com/adrian-bl/terraform@v0.7.0-rc2.0.20160705220747-de0a34fc3517/builtin/providers/aws/resource_aws_ses_receipt_rule_set.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/service/ses" 9 "github.com/hashicorp/terraform/helper/schema" 10 ) 11 12 func resourceAwsSesReceiptRuleSet() *schema.Resource { 13 return &schema.Resource{ 14 Create: resourceAwsSesReceiptRuleSetCreate, 15 Read: resourceAwsSesReceiptRuleSetRead, 16 Delete: resourceAwsSesReceiptRuleSetDelete, 17 18 Schema: map[string]*schema.Schema{ 19 "rule_set_name": &schema.Schema{ 20 Type: schema.TypeString, 21 Required: true, 22 ForceNew: true, 23 }, 24 }, 25 } 26 } 27 28 func resourceAwsSesReceiptRuleSetCreate(d *schema.ResourceData, meta interface{}) error { 29 conn := meta.(*AWSClient).sesConn 30 31 ruleSetName := d.Get("rule_set_name").(string) 32 33 createOpts := &ses.CreateReceiptRuleSetInput{ 34 RuleSetName: aws.String(ruleSetName), 35 } 36 37 _, err := conn.CreateReceiptRuleSet(createOpts) 38 if err != nil { 39 return fmt.Errorf("Error creating SES rule set: %s", err) 40 } 41 42 d.SetId(ruleSetName) 43 44 return resourceAwsSesReceiptRuleSetRead(d, meta) 45 } 46 47 func resourceAwsSesReceiptRuleSetRead(d *schema.ResourceData, meta interface{}) error { 48 ruleSetExists, err := findRuleSet(d.Id(), nil, meta) 49 50 if !ruleSetExists { 51 log.Printf("[WARN] SES Receipt Rule Set (%s) not found", d.Id()) 52 d.SetId("") 53 } 54 55 if err != nil { 56 return err 57 } 58 59 return nil 60 } 61 62 func resourceAwsSesReceiptRuleSetDelete(d *schema.ResourceData, meta interface{}) error { 63 conn := meta.(*AWSClient).sesConn 64 65 log.Printf("[DEBUG] SES Delete Receipt Rule Set: %s", d.Id()) 66 _, err := conn.DeleteReceiptRuleSet(&ses.DeleteReceiptRuleSetInput{ 67 RuleSetName: aws.String(d.Id()), 68 }) 69 70 if err != nil { 71 return err 72 } 73 74 return nil 75 } 76 77 func findRuleSet(name string, token *string, meta interface{}) (bool, error) { 78 conn := meta.(*AWSClient).sesConn 79 80 ruleSetExists := false 81 82 listOpts := &ses.ListReceiptRuleSetsInput{ 83 NextToken: token, 84 } 85 86 response, err := conn.ListReceiptRuleSets(listOpts) 87 for _, element := range response.RuleSets { 88 if *element.Name == name { 89 ruleSetExists = true 90 } 91 } 92 93 if err != nil && !ruleSetExists && response.NextToken != nil { 94 ruleSetExists, err = findRuleSet(name, response.NextToken, meta) 95 } 96 97 if err != nil { 98 return false, err 99 } 100 101 return ruleSetExists, nil 102 }