github.com/mohanarpit/terraform@v0.6.16-0.20160909104007-291f29853544/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  }