From afd314959b8d0796da989c2229040defffbd5d00 Mon Sep 17 00:00:00 2001 From: YAMADA Tsuyoshi Date: Sat, 5 Dec 2015 05:13:35 +0900 Subject: [PATCH] supported `preemptible` in googlecompute builder --- builder/googlecompute/config.go | 1 + builder/googlecompute/driver.go | 1 + builder/googlecompute/driver_gce.go | 3 +++ builder/googlecompute/step_create_instance.go | 1 + 4 files changed, 6 insertions(+) diff --git a/builder/googlecompute/config.go b/builder/googlecompute/config.go index 4ca45c69f..e79a92e64 100644 --- a/builder/googlecompute/config.go +++ b/builder/googlecompute/config.go @@ -31,6 +31,7 @@ type Config struct { MachineType string `mapstructure:"machine_type"` Metadata map[string]string `mapstructure:"metadata"` Network string `mapstructure:"network"` + Preemptible bool `mapstructure:"preemptible"` SourceImage string `mapstructure:"source_image"` SourceImageProjectId string `mapstructure:"source_image_project_id"` RawStateTimeout string `mapstructure:"state_timeout"` diff --git a/builder/googlecompute/driver.go b/builder/googlecompute/driver.go index be697fe6b..6a9c3d651 100644 --- a/builder/googlecompute/driver.go +++ b/builder/googlecompute/driver.go @@ -47,6 +47,7 @@ type InstanceConfig struct { Metadata map[string]string Name string Network string + Preemptible bool Tags []string Zone string } diff --git a/builder/googlecompute/driver_gce.go b/builder/googlecompute/driver_gce.go index d7b745d58..b1e4d8d45 100644 --- a/builder/googlecompute/driver_gce.go +++ b/builder/googlecompute/driver_gce.go @@ -255,6 +255,9 @@ func (d *driverGCE) RunInstance(c *InstanceConfig) (<-chan error, error) { Network: network.SelfLink, }, }, + Scheduling: &compute.Scheduling{ + Preemptible: c.Preemptible, + }, ServiceAccounts: []*compute.ServiceAccount{ &compute.ServiceAccount{ Email: "default", diff --git a/builder/googlecompute/step_create_instance.go b/builder/googlecompute/step_create_instance.go index 939925c58..891072438 100644 --- a/builder/googlecompute/step_create_instance.go +++ b/builder/googlecompute/step_create_instance.go @@ -59,6 +59,7 @@ func (s *StepCreateInstance) Run(state multistep.StateBag) multistep.StepAction Metadata: config.getInstanceMetadata(sshPublicKey), Name: name, Network: config.Network, + Preemptible: config.Preemptible, Tags: config.Tags, Zone: config.Zone, })