From cac93d311c58403582b56350ea3d79132de2cb35 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 13 Oct 2015 20:18:26 -0400 Subject: [PATCH] builder/googlecompute: accept disk type, default pd-standard --- builder/googlecompute/config.go | 5 +++++ builder/googlecompute/driver.go | 1 + builder/googlecompute/driver_gce.go | 1 + builder/googlecompute/step_create_instance.go | 1 + 4 files changed, 8 insertions(+) diff --git a/builder/googlecompute/config.go b/builder/googlecompute/config.go index 4ca45c69f..780febd41 100644 --- a/builder/googlecompute/config.go +++ b/builder/googlecompute/config.go @@ -25,6 +25,7 @@ type Config struct { DiskName string `mapstructure:"disk_name"` DiskSizeGb int64 `mapstructure:"disk_size"` + DiskType string `mapstructure:"disk_type"` ImageName string `mapstructure:"image_name"` ImageDescription string `mapstructure:"image_description"` InstanceName string `mapstructure:"instance_name"` @@ -70,6 +71,10 @@ func NewConfig(raws ...interface{}) (*Config, []string, error) { c.DiskSizeGb = 10 } + if c.DiskType == "" { + c.DiskType = "pd-standard" + } + if c.ImageDescription == "" { c.ImageDescription = "Created by Packer" } diff --git a/builder/googlecompute/driver.go b/builder/googlecompute/driver.go index be697fe6b..5e69d6c62 100644 --- a/builder/googlecompute/driver.go +++ b/builder/googlecompute/driver.go @@ -42,6 +42,7 @@ type Image struct { type InstanceConfig struct { Description string DiskSizeGb int64 + DiskType string Image Image MachineType string Metadata map[string]string diff --git a/builder/googlecompute/driver_gce.go b/builder/googlecompute/driver_gce.go index d7b745d58..1fa692677 100644 --- a/builder/googlecompute/driver_gce.go +++ b/builder/googlecompute/driver_gce.go @@ -236,6 +236,7 @@ func (d *driverGCE) RunInstance(c *InstanceConfig) (<-chan error, error) { InitializeParams: &compute.AttachedDiskInitializeParams{ SourceImage: image.SelfLink, DiskSizeGb: c.DiskSizeGb, + DiskType: fmt.Sprintf("zones/%s/diskTypes/%s", zone.Name, c.DiskType), }, }, }, diff --git a/builder/googlecompute/step_create_instance.go b/builder/googlecompute/step_create_instance.go index 939925c58..4f25cd3cd 100644 --- a/builder/googlecompute/step_create_instance.go +++ b/builder/googlecompute/step_create_instance.go @@ -54,6 +54,7 @@ func (s *StepCreateInstance) Run(state multistep.StateBag) multistep.StepAction errCh, err := driver.RunInstance(&InstanceConfig{ Description: "New instance created by Packer", DiskSizeGb: config.DiskSizeGb, + DiskType: config.DiskType, Image: config.getImage(), MachineType: config.MachineType, Metadata: config.getInstanceMetadata(sshPublicKey),