github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/aws/resource_aws_vpc_peering_connection_accepter.go (about)

     1  package aws
     2  
     3  import (
     4  	"errors"
     5  	"log"
     6  
     7  	"fmt"
     8  
     9  	"github.com/hashicorp/terraform/helper/schema"
    10  )
    11  
    12  func resourceAwsVpcPeeringConnectionAccepter() *schema.Resource {
    13  	return &schema.Resource{
    14  		Create: resourceAwsVPCPeeringAccepterCreate,
    15  		Read:   resourceAwsVPCPeeringRead,
    16  		Update: resourceAwsVPCPeeringUpdate,
    17  		Delete: resourceAwsVPCPeeringAccepterDelete,
    18  
    19  		Schema: map[string]*schema.Schema{
    20  			"vpc_peering_connection_id": &schema.Schema{
    21  				Type:     schema.TypeString,
    22  				Required: true,
    23  				ForceNew: true,
    24  				Computed: false,
    25  			},
    26  			"auto_accept": {
    27  				Type:     schema.TypeBool,
    28  				Optional: true,
    29  			},
    30  			"accept_status": {
    31  				Type:     schema.TypeString,
    32  				Computed: true,
    33  			},
    34  			"vpc_id": {
    35  				Type:     schema.TypeString,
    36  				Computed: true,
    37  			},
    38  			"peer_vpc_id": {
    39  				Type:     schema.TypeString,
    40  				Computed: true,
    41  			},
    42  			"peer_owner_id": {
    43  				Type:     schema.TypeString,
    44  				Computed: true,
    45  			},
    46  			"accepter":  vpcPeeringConnectionOptionsSchema(),
    47  			"requester": vpcPeeringConnectionOptionsSchema(),
    48  			"tags":      tagsSchema(),
    49  		},
    50  	}
    51  }
    52  
    53  func resourceAwsVPCPeeringAccepterCreate(d *schema.ResourceData, meta interface{}) error {
    54  	id := d.Get("vpc_peering_connection_id").(string)
    55  	d.SetId(id)
    56  
    57  	if err := resourceAwsVPCPeeringRead(d, meta); err != nil {
    58  		return err
    59  	}
    60  	if d.Id() == "" {
    61  		return fmt.Errorf("VPC Peering Connection %q not found", id)
    62  	}
    63  
    64  	// Ensure that this IS as cross-account VPC peering connection.
    65  	if d.Get("peer_owner_id").(string) == meta.(*AWSClient).accountid {
    66  		return errors.New("aws_vpc_peering_connection_accepter can only adopt into management cross-account VPC peering connections")
    67  	}
    68  
    69  	return resourceAwsVPCPeeringUpdate(d, meta)
    70  }
    71  
    72  func resourceAwsVPCPeeringAccepterDelete(d *schema.ResourceData, meta interface{}) error {
    73  	log.Printf("[WARN] Will not delete VPC peering connection. Terraform will remove this resource from the state file, however resources may remain.")
    74  	d.SetId("")
    75  	return nil
    76  }