Relying on `ForceNew` for `destination_cidr_block` since it is part of the unique id instead of manually recreating the resource.
This commit is contained in:
parent
e4465adca5
commit
e0aad68ef1
|
@ -23,6 +23,7 @@ func resourceAwsRoute() *schema.Resource {
|
||||||
"destination_cidr_block": &schema.Schema{
|
"destination_cidr_block": &schema.Schema{
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Required: true,
|
Required: true,
|
||||||
|
ForceNew: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
"destination_prefix_list_id": &schema.Schema{
|
"destination_prefix_list_id": &schema.Schema{
|
||||||
|
@ -166,10 +167,6 @@ func resourceAwsRouteRead(d *schema.ResourceData, meta interface{}) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourceAwsRouteUpdate(d *schema.ResourceData, meta interface{}) error {
|
func resourceAwsRouteUpdate(d *schema.ResourceData, meta interface{}) error {
|
||||||
if d.HasChange("destination_cidr_block") {
|
|
||||||
return resourceAwsRouteRecreate(d, meta)
|
|
||||||
}
|
|
||||||
|
|
||||||
conn := meta.(*AWSClient).ec2conn
|
conn := meta.(*AWSClient).ec2conn
|
||||||
var numTargets int
|
var numTargets int
|
||||||
var setTarget string
|
var setTarget string
|
||||||
|
@ -237,31 +234,17 @@ func resourceAwsRouteUpdate(d *schema.ResourceData, meta interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourceAwsRouteRecreate(d *schema.ResourceData, meta interface{}) error {
|
func resourceAwsRouteDelete(d *schema.ResourceData, meta interface{}) error {
|
||||||
//Destination Cidr is used for identification
|
|
||||||
// if changed, we should delete the old route, recreate the new route
|
|
||||||
conn := meta.(*AWSClient).ec2conn
|
conn := meta.(*AWSClient).ec2conn
|
||||||
|
|
||||||
oc, _ := d.GetChange("destination_cidr_block")
|
deleteOpts := &ec2.DeleteRouteInput{
|
||||||
|
RouteTableId: aws.String(d.Get("route_table_id").(string)),
|
||||||
var oldRtId interface{}
|
DestinationCidrBlock: aws.String(d.Get("destination_cidr_block").(string)),
|
||||||
if d.HasChange("route_table_id") {
|
|
||||||
oldRtId, _ = d.GetChange("route_table_id")
|
|
||||||
} else {
|
|
||||||
oldRtId = d.Get("route_table_id")
|
|
||||||
}
|
}
|
||||||
|
log.Printf("[DEBUG] Route delete opts: %s", deleteOpts)
|
||||||
|
|
||||||
if err := deleteAwsRoute(conn, oldRtId.(string), oc.(string)); err != nil {
|
resp, err := conn.DeleteRoute(deleteOpts)
|
||||||
return err
|
log.Printf("[DEBUG] Route delete result: %s", resp)
|
||||||
}
|
|
||||||
d.SetId("")
|
|
||||||
|
|
||||||
return resourceAwsRouteCreate(d, meta)
|
|
||||||
}
|
|
||||||
|
|
||||||
func resourceAwsRouteDelete(d *schema.ResourceData, meta interface{}) error {
|
|
||||||
err := deleteAwsRoute(meta.(*AWSClient).ec2conn,
|
|
||||||
d.Get("route_table_id").(string), d.Get("destination_cidr_block").(string))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -319,18 +302,3 @@ func findResourceRoute(conn *ec2.EC2, rtbid string, cidr string) (*ec2.Route, er
|
||||||
|
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteAwsRoute(conn *ec2.EC2, routeTableId string, cidr string) error {
|
|
||||||
deleteOpts := &ec2.DeleteRouteInput{
|
|
||||||
RouteTableId: aws.String(routeTableId),
|
|
||||||
DestinationCidrBlock: aws.String(cidr),
|
|
||||||
}
|
|
||||||
log.Printf("[DEBUG] Route delete opts: %s", deleteOpts)
|
|
||||||
|
|
||||||
resp, err := conn.DeleteRoute(deleteOpts)
|
|
||||||
log.Printf("[DEBUG] Route delete result: %s", resp)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue