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  }