github.com/gabrielperezs/terraform@v0.7.0-rc2.0.20160715084931-f7da2612946f/builtin/providers/aws/resource_aws_route53_record_migrate.go (about)

     1  package aws
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"strings"
     7  
     8  	"github.com/hashicorp/terraform/terraform"
     9  )
    10  
    11  func resourceAwsRoute53RecordMigrateState(
    12  	v int, is *terraform.InstanceState, meta interface{}) (*terraform.InstanceState, error) {
    13  	switch v {
    14  	case 0:
    15  		log.Println("[INFO] Found AWS Route53 Record State v0; migrating to v1")
    16  		return migrateRoute53RecordStateV0toV1(is)
    17  	case 1:
    18  		log.Println("[INFO] Found AWS Route53 Record State v1; migrating to v2")
    19  		return migrateRoute53RecordStateV1toV2(is)
    20  	default:
    21  		return is, fmt.Errorf("Unexpected schema version: %d", v)
    22  	}
    23  }
    24  
    25  func migrateRoute53RecordStateV0toV1(is *terraform.InstanceState) (*terraform.InstanceState, error) {
    26  	if is.Empty() {
    27  		log.Println("[DEBUG] Empty InstanceState; nothing to migrate.")
    28  		return is, nil
    29  	}
    30  
    31  	log.Printf("[DEBUG] Attributes before migration: %#v", is.Attributes)
    32  	newName := strings.TrimSuffix(is.Attributes["name"], ".")
    33  	is.Attributes["name"] = newName
    34  	log.Printf("[DEBUG] Attributes after migration: %#v, new name: %s", is.Attributes, newName)
    35  	return is, nil
    36  }
    37  
    38  func migrateRoute53RecordStateV1toV2(is *terraform.InstanceState) (*terraform.InstanceState, error) {
    39  	if is.Empty() {
    40  		log.Println("[DEBUG] Empty InstanceState; nothing to migrate.")
    41  		return is, nil
    42  	}
    43  	log.Printf("[DEBUG] Attributes before migration: %#v", is.Attributes)
    44  	if is.Attributes["weight"] != "" && is.Attributes["weight"] != "-1" {
    45  		is.Attributes["weighted_routing_policy.#"] = "1"
    46  		key := fmt.Sprintf("weighted_routing_policy.0.weight")
    47  		is.Attributes[key] = is.Attributes["weight"]
    48  	}
    49  	if is.Attributes["failover"] != "" {
    50  		is.Attributes["failover_routing_policy.#"] = "1"
    51  		key := fmt.Sprintf("failover_routing_policy.0.type")
    52  		is.Attributes[key] = is.Attributes["failover"]
    53  	}
    54  	delete(is.Attributes, "weight")
    55  	delete(is.Attributes, "failover")
    56  	log.Printf("[DEBUG] Attributes after migration: %#v", is.Attributes)
    57  	return is, nil
    58  }