Remove create_timeout backwards incompatibilities.

A new create_timeout attribute was added that had some backwards
incompatibilities, and as per discussion in #10823, it was determined we
could make upgrading to 0.8.x easier by fixing them, without really
losing any functionality.

Because create_timeout is not something stored or transmitted to the
API, it's not something we need a ForceNew on. Also, because an update
wouldn't result in an API call, we can add a state migration to avoid a
false positive diff that requires people to plan and apply but doesn't
actually make an API call.
This commit is contained in:
Paddy 2016-12-19 23:49:53 -08:00
parent 992e12335f
commit e6349aee4f
3 changed files with 21 additions and 1 deletions

View File

@ -301,7 +301,6 @@ func resourceComputeInstance() *schema.Resource {
Type: schema.TypeInt, Type: schema.TypeInt,
Optional: true, Optional: true,
Default: 4, Default: 4,
ForceNew: true,
}, },
}, },
} }

View File

@ -32,6 +32,13 @@ func resourceComputeInstanceMigrateState(
return is, err return is, err
} }
return is, nil return is, nil
case 2:
log.Println("[INFO] Found Compute Instance State v2; migrating to v3")
is, err := migrateStateV2toV3(is)
if err != nil {
return is, err
}
return is, nil
default: default:
return is, fmt.Errorf("Unexpected schema version: %d", v) return is, fmt.Errorf("Unexpected schema version: %d", v)
} }
@ -138,3 +145,10 @@ func migrateStateV1toV2(is *terraform.InstanceState) (*terraform.InstanceState,
log.Printf("[DEBUG] Attributes after migration: %#v", is.Attributes) log.Printf("[DEBUG] Attributes after migration: %#v", is.Attributes)
return is, nil return is, nil
} }
func migrateStateV2toV3(is *terraform.InstanceState) (*terraform.InstanceState, error) {
log.Printf("[DEBUG] Attributes before migration: %#v", is.Attributes)
is.Attributes["create_timeout"] = "4"
log.Printf("[DEBUG] Attributes after migration: %#v", is.Attributes)
return is, nil
}

View File

@ -48,6 +48,13 @@ func TestComputeInstanceMigrateState(t *testing.T) {
"service_account.0.scopes.3435931483": "https://www.googleapis.com/auth/datastore", "service_account.0.scopes.3435931483": "https://www.googleapis.com/auth/datastore",
}, },
}, },
"add new create_timeout attribute": {
StateVersion: 2,
Attributes: map[string]string{},
Expected: map[string]string{
"create_timeout": "4",
},
},
} }
for tn, tc := range cases { for tn, tc := range cases {