github.com/gabrielperezs/terraform@v0.7.0-rc2.0.20160715084931-f7da2612946f/builtin/providers/aws/resource_aws_ses_receipt_filter.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 resourceAwsSesReceiptFilter() *schema.Resource { 13 return &schema.Resource{ 14 Create: resourceAwsSesReceiptFilterCreate, 15 Read: resourceAwsSesReceiptFilterRead, 16 Delete: resourceAwsSesReceiptFilterDelete, 17 Importer: &schema.ResourceImporter{ 18 State: schema.ImportStatePassthrough, 19 }, 20 21 Schema: map[string]*schema.Schema{ 22 "name": &schema.Schema{ 23 Type: schema.TypeString, 24 Required: true, 25 ForceNew: true, 26 }, 27 28 "cidr": &schema.Schema{ 29 Type: schema.TypeString, 30 Required: true, 31 ForceNew: true, 32 }, 33 34 "policy": &schema.Schema{ 35 Type: schema.TypeString, 36 Required: true, 37 ForceNew: true, 38 }, 39 }, 40 } 41 } 42 43 func resourceAwsSesReceiptFilterCreate(d *schema.ResourceData, meta interface{}) error { 44 conn := meta.(*AWSClient).sesConn 45 46 name := d.Get("name").(string) 47 48 createOpts := &ses.CreateReceiptFilterInput{ 49 Filter: &ses.ReceiptFilter{ 50 Name: aws.String(name), 51 IpFilter: &ses.ReceiptIpFilter{ 52 Cidr: aws.String(d.Get("cidr").(string)), 53 Policy: aws.String(d.Get("policy").(string)), 54 }, 55 }, 56 } 57 58 _, err := conn.CreateReceiptFilter(createOpts) 59 if err != nil { 60 return fmt.Errorf("Error creating SES receipt filter: %s", err) 61 } 62 63 d.SetId(name) 64 65 return resourceAwsSesReceiptFilterRead(d, meta) 66 } 67 68 func resourceAwsSesReceiptFilterRead(d *schema.ResourceData, meta interface{}) error { 69 conn := meta.(*AWSClient).sesConn 70 71 listOpts := &ses.ListReceiptFiltersInput{} 72 73 response, err := conn.ListReceiptFilters(listOpts) 74 if err != nil { 75 return err 76 } 77 78 found := false 79 for _, element := range response.Filters { 80 if *element.Name == d.Id() { 81 d.Set("cidr", element.IpFilter.Cidr) 82 d.Set("policy", element.IpFilter.Policy) 83 d.Set("name", element.Name) 84 found = true 85 } 86 } 87 88 if !found { 89 log.Printf("[WARN] SES Receipt Filter (%s) not found", d.Id()) 90 d.SetId("") 91 } 92 93 return nil 94 } 95 96 func resourceAwsSesReceiptFilterDelete(d *schema.ResourceData, meta interface{}) error { 97 conn := meta.(*AWSClient).sesConn 98 99 deleteOpts := &ses.DeleteReceiptFilterInput{ 100 FilterName: aws.String(d.Id()), 101 } 102 103 _, err := conn.DeleteReceiptFilter(deleteOpts) 104 if err != nil { 105 return fmt.Errorf("Error deleting SES receipt filter: %s", err) 106 } 107 108 return nil 109 }