provider/google: Added `preemtible` flag to `instance_template`
This commit is contained in:
parent
b19953e48c
commit
2da1ba0118
|
@ -163,12 +163,42 @@ func resourceComputeInstanceTemplate() *schema.Resource {
|
|||
Optional: true,
|
||||
Default: true,
|
||||
ForceNew: true,
|
||||
Deprecated: "Please use `scheduling.automatic_restart` instead",
|
||||
},
|
||||
|
||||
"on_host_maintenance": &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
Deprecated: "Please use `scheduling.on_host_maintenance` instead",
|
||||
},
|
||||
|
||||
"scheduling": &schema.Schema{
|
||||
Type: schema.TypeList,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
Elem: &schema.Resource{
|
||||
Schema: map[string]*schema.Schema{
|
||||
"preemptible": &schema.Schema{
|
||||
Type: schema.TypeBool,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
},
|
||||
|
||||
"automatic_restart": &schema.Schema{
|
||||
Type: schema.TypeBool,
|
||||
Optional: true,
|
||||
Default: true,
|
||||
ForceNew: true,
|
||||
},
|
||||
|
||||
"on_host_maintenance": &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
"service_account": &schema.Schema{
|
||||
|
@ -352,14 +382,38 @@ func resourceComputeInstanceTemplateCreate(d *schema.ResourceData, meta interfac
|
|||
}
|
||||
instanceProperties.NetworkInterfaces = networks
|
||||
|
||||
instanceProperties.Scheduling = &compute.Scheduling{
|
||||
AutomaticRestart: d.Get("automatic_restart").(bool),
|
||||
}
|
||||
instanceProperties.Scheduling = &compute.Scheduling{}
|
||||
instanceProperties.Scheduling.OnHostMaintenance = "MIGRATE"
|
||||
|
||||
if v, ok := d.GetOk("automatic_restart"); ok {
|
||||
instanceProperties.Scheduling.AutomaticRestart = v.(bool)
|
||||
}
|
||||
|
||||
if v, ok := d.GetOk("on_host_maintenance"); ok {
|
||||
instanceProperties.Scheduling.OnHostMaintenance = v.(string)
|
||||
}
|
||||
|
||||
if v, ok := d.GetOk("scheduling"); ok {
|
||||
_schedulings := v.([]interface{})
|
||||
if len(_schedulings) > 1 {
|
||||
return fmt.Errorf("Error, at most one `scheduling` block can be defined")
|
||||
}
|
||||
_scheduling := _schedulings[0].(map[string]interface{})
|
||||
|
||||
if vp, okp := _scheduling["automatic_restart"]; okp {
|
||||
instanceProperties.Scheduling.AutomaticRestart = vp.(bool)
|
||||
}
|
||||
|
||||
if vp, okp := _scheduling["on_host_maintenance"]; okp {
|
||||
instanceProperties.Scheduling.OnHostMaintenance = vp.(string)
|
||||
}
|
||||
|
||||
if vp, okp := _scheduling["preemptible"]; okp {
|
||||
instanceProperties.Scheduling.Preemptible = vp.(bool)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
serviceAccountsCount := d.Get("service_account.#").(int)
|
||||
serviceAccounts := make([]*compute.ServiceAccount, 0, serviceAccountsCount)
|
||||
for i := 0; i < serviceAccountsCount; i++ {
|
||||
|
|
|
@ -218,6 +218,11 @@ resource "google_compute_instance_template" "foobar" {
|
|||
network = "default"
|
||||
}
|
||||
|
||||
scheduling {
|
||||
preemptible = false
|
||||
automatic_restart = true
|
||||
}
|
||||
|
||||
metadata {
|
||||
foo = "bar"
|
||||
}
|
||||
|
|
|
@ -86,13 +86,14 @@ The following arguments are supported:
|
|||
This can be specified multiple times for multiple networks. Structure is
|
||||
documented below.
|
||||
|
||||
* `automatic_restart` - (Optional) Specifies whether the instance should be
|
||||
* `automatic_restart` - (Optional, Deprecated - see `scheduling`)
|
||||
Specifies whether the instance should be
|
||||
automatically restarted if it is terminated by Compute Engine (not
|
||||
terminated by a user).
|
||||
This defaults to true.
|
||||
|
||||
* `on_host_maintenance` - (Optional) Defines the maintenance behavior for this
|
||||
instance.
|
||||
* `on_host_maintenance` - (Optional, Deprecated - see `scheduling`)
|
||||
Defines the maintenance behavior for this instance.
|
||||
|
||||
* `service_account` - (Optional) Service account to attach to the instance.
|
||||
|
||||
|
@ -150,6 +151,18 @@ The `service_account` block supports:
|
|||
* `scopes` - (Required) A list of service scopes. Both OAuth2 URLs and gcloud
|
||||
short names are supported.
|
||||
|
||||
The `scheduling` block supports:
|
||||
|
||||
* `automatic_restart` - (Optional) Specifies whether the instance should be
|
||||
automatically restarted if it is terminated by Compute Engine (not
|
||||
terminated by a user).
|
||||
This defaults to true.
|
||||
|
||||
* `on_host_maintenance` - (Optional) Defines the maintenance behavior for this instance.
|
||||
|
||||
* `preemptible` - (Optional) Allows instance to be preempted. Read
|
||||
more on this [here](https://cloud.google.com/compute/docs/instances/preemptible).
|
||||
|
||||
## Attributes Reference
|
||||
|
||||
The following attributes are exported:
|
||||
|
|
Loading…
Reference in New Issue