github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/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 Importer: &schema.ResourceImporter{ 18 State: schema.ImportStatePassthrough, 19 }, 20 21 Schema: map[string]*schema.Schema{ 22 "rule_set_name": &schema.Schema{ 23 Type: schema.TypeString, 24 Required: true, 25 ForceNew: true, 26 }, 27 }, 28 } 29 } 30 31 func resourceAwsSesReceiptRuleSetCreate(d *schema.ResourceData, meta interface{}) error { 32 conn := meta.(*AWSClient).sesConn 33 34 ruleSetName := d.Get("rule_set_name").(string) 35 36 createOpts := &ses.CreateReceiptRuleSetInput{ 37 RuleSetName: aws.String(ruleSetName), 38 } 39 40 _, err := conn.CreateReceiptRuleSet(createOpts) 41 if err != nil { 42 return fmt.Errorf("Error creating SES rule set: %s", err) 43 } 44 45 d.SetId(ruleSetName) 46 47 return resourceAwsSesReceiptRuleSetRead(d, meta) 48 } 49 50 func resourceAwsSesReceiptRuleSetRead(d *schema.ResourceData, meta interface{}) error { 51 ruleSetExists, err := findRuleSet(d.Id(), nil, meta) 52 53 if !ruleSetExists { 54 log.Printf("[WARN] SES Receipt Rule Set (%s) not found", d.Id()) 55 d.SetId("") 56 return nil 57 } 58 59 if err != nil { 60 return err 61 } 62 63 d.Set("rule_set_name", d.Id()) 64 65 return nil 66 } 67 68 func resourceAwsSesReceiptRuleSetDelete(d *schema.ResourceData, meta interface{}) error { 69 conn := meta.(*AWSClient).sesConn 70 71 log.Printf("[DEBUG] SES Delete Receipt Rule Set: %s", d.Id()) 72 _, err := conn.DeleteReceiptRuleSet(&ses.DeleteReceiptRuleSetInput{ 73 RuleSetName: aws.String(d.Id()), 74 }) 75 76 if err != nil { 77 return err 78 } 79 80 return nil 81 } 82 83 func findRuleSet(name string, token *string, meta interface{}) (bool, error) { 84 conn := meta.(*AWSClient).sesConn 85 86 ruleSetExists := false 87 88 listOpts := &ses.ListReceiptRuleSetsInput{ 89 NextToken: token, 90 } 91 92 response, err := conn.ListReceiptRuleSets(listOpts) 93 for _, element := range response.RuleSets { 94 if *element.Name == name { 95 ruleSetExists = true 96 } 97 } 98 99 if err != nil && !ruleSetExists && response.NextToken != nil { 100 ruleSetExists, err = findRuleSet(name, response.NextToken, meta) 101 } 102 103 if err != nil { 104 return false, err 105 } 106 107 return ruleSetExists, nil 108 }