mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-10-01 16:21:06 +00:00
Fix bug with empty initialize_params
block (#664)
* fix initialize params bug * make sure all init params are deleted, not just #
This commit is contained in:
parent
49a91427b4
commit
f68765f5cd
@ -42,7 +42,7 @@ func resourceComputeInstance() *schema.Resource {
|
||||
Update: resourceComputeInstanceUpdate,
|
||||
Delete: resourceComputeInstanceDelete,
|
||||
|
||||
SchemaVersion: 5,
|
||||
SchemaVersion: 6,
|
||||
MigrateState: resourceComputeInstanceMigrateState,
|
||||
|
||||
Schema: map[string]*schema.Schema{
|
||||
|
@ -56,7 +56,14 @@ func resourceComputeInstanceMigrateState(
|
||||
if err != nil {
|
||||
return is, err
|
||||
}
|
||||
// when adding case 5, make sure to turn this into a fallthrough
|
||||
fallthrough
|
||||
case 5:
|
||||
log.Println("[INFO] Found Compute Instance State v5; migrating to v6")
|
||||
is, err = migrateStateV5toV6(is)
|
||||
if err != nil {
|
||||
return is, err
|
||||
}
|
||||
// when adding case 6, make sure to turn this into a fallthrough
|
||||
return is, err
|
||||
default:
|
||||
return is, fmt.Errorf("Unexpected schema version: %d", v)
|
||||
@ -238,7 +245,7 @@ func migrateStateV3toV4(is *terraform.InstanceState, meta interface{}) (*terrafo
|
||||
is.Attributes["boot_disk.0.disk_encryption_key_raw"] = is.Attributes["disk.0.disk_encryption_key_raw"]
|
||||
is.Attributes["boot_disk.0.disk_encryption_key_sha256"] = is.Attributes["disk.0.disk_encryption_key_sha256"]
|
||||
|
||||
if is.Attributes["disk.0.size"] != "" {
|
||||
if is.Attributes["disk.0.size"] != "" && is.Attributes["disk.0.size"] != "0" {
|
||||
is.Attributes["boot_disk.0.initialize_params.#"] = "1"
|
||||
is.Attributes["boot_disk.0.initialize_params.0.size"] = is.Attributes["disk.0.size"]
|
||||
}
|
||||
@ -489,3 +496,20 @@ func getDiskFromAutoDeleteAndImage(config *Config, instance *compute.Instance, a
|
||||
|
||||
return nil, fmt.Errorf("could not find attached disk with image %q", image)
|
||||
}
|
||||
|
||||
func migrateStateV5toV6(is *terraform.InstanceState) (*terraform.InstanceState, error) {
|
||||
log.Printf("[DEBUG] Attributes before migration: %#v", is.Attributes)
|
||||
if is.Attributes["boot_disk.0.initialize_params.#"] == "1" {
|
||||
if (is.Attributes["boot_disk.0.initialize_params.0.size"] == "0" ||
|
||||
is.Attributes["boot_disk.0.initialize_params.0.size"] == "") &&
|
||||
is.Attributes["boot_disk.0.initialize_params.0.type"] == "" &&
|
||||
is.Attributes["boot_disk.0.initialize_params.0.image"] == "" {
|
||||
is.Attributes["boot_disk.0.initialize_params.#"] = "0"
|
||||
delete(is.Attributes, "boot_disk.0.initialize_params.0.size")
|
||||
delete(is.Attributes, "boot_disk.0.initialize_params.0.type")
|
||||
delete(is.Attributes, "boot_disk.0.initialize_params.0.image")
|
||||
}
|
||||
}
|
||||
log.Printf("[DEBUG] Attributes after migration: %#v", is.Attributes)
|
||||
return is, nil
|
||||
}
|
||||
|
@ -65,6 +65,16 @@ func TestComputeInstanceMigrateState(t *testing.T) {
|
||||
"create_timeout": "4",
|
||||
},
|
||||
},
|
||||
"remove empty initialize_params": {
|
||||
StateVersion: 5,
|
||||
Attributes: map[string]string{
|
||||
"boot_disk.0.initialize_params.#": "1",
|
||||
"boot_disk.0.initialize_params.0.size": "0",
|
||||
},
|
||||
Expected: map[string]string{
|
||||
"boot_disk.0.initialize_params.#": "0",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for tn, tc := range cases {
|
||||
|
Loading…
Reference in New Issue
Block a user