Merge pull request #1920 from sparkprime/allow-local-ssd-pr
Allow local SSDs, Fix #1088
This commit is contained in:
commit
a2cadbb5c1
|
@ -81,6 +81,12 @@ func resourceComputeInstance() *schema.Resource {
|
||||||
ForceNew: true,
|
ForceNew: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"scratch": &schema.Schema{
|
||||||
|
Type: schema.TypeBool,
|
||||||
|
Optional: true,
|
||||||
|
ForceNew: true,
|
||||||
|
},
|
||||||
|
|
||||||
"auto_delete": &schema.Schema{
|
"auto_delete": &schema.Schema{
|
||||||
Type: schema.TypeBool,
|
Type: schema.TypeBool,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
|
@ -319,6 +325,15 @@ func resourceComputeInstanceCreate(d *schema.ResourceData, meta interface{}) err
|
||||||
}
|
}
|
||||||
|
|
||||||
disk.Source = diskData.SelfLink
|
disk.Source = diskData.SelfLink
|
||||||
|
} else {
|
||||||
|
// Create a new disk
|
||||||
|
disk.InitializeParams = &compute.AttachedDiskInitializeParams{ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if v, ok := d.GetOk(prefix + ".scratch"); ok {
|
||||||
|
if v.(bool) {
|
||||||
|
disk.Type = "SCRATCH"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load up the image for this disk if specified
|
// Load up the image for this disk if specified
|
||||||
|
@ -332,9 +347,7 @@ func resourceComputeInstanceCreate(d *schema.ResourceData, meta interface{}) err
|
||||||
imageName, err)
|
imageName, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
disk.InitializeParams = &compute.AttachedDiskInitializeParams{
|
disk.InitializeParams.SourceImage = imageUrl
|
||||||
SourceImage: imageUrl,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if v, ok := d.GetOk(prefix + ".type"); ok {
|
if v, ok := d.GetOk(prefix + ".type"); ok {
|
||||||
|
|
|
@ -140,6 +140,26 @@ func TestAccComputeInstance_disks(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccComputeInstance_local_ssd(t *testing.T) {
|
||||||
|
var instance compute.Instance
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckComputeInstanceDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccComputeInstance_local_ssd,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckComputeInstanceExists(
|
||||||
|
"google_compute_instance.local-ssd", &instance),
|
||||||
|
testAccCheckComputeInstanceDisk(&instance, "terraform-test", true, true),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestAccComputeInstance_update_deprecated_network(t *testing.T) {
|
func TestAccComputeInstance_update_deprecated_network(t *testing.T) {
|
||||||
var instance compute.Instance
|
var instance compute.Instance
|
||||||
|
|
||||||
|
@ -609,6 +629,27 @@ resource "google_compute_instance" "foobar" {
|
||||||
}
|
}
|
||||||
}`
|
}`
|
||||||
|
|
||||||
|
const testAccComputeInstance_local_ssd = `
|
||||||
|
resource "google_compute_instance" "local-ssd" {
|
||||||
|
name = "terraform-test"
|
||||||
|
machine_type = "n1-standard-1"
|
||||||
|
zone = "us-central1-a"
|
||||||
|
|
||||||
|
disk {
|
||||||
|
image = "debian-7-wheezy-v20140814"
|
||||||
|
}
|
||||||
|
|
||||||
|
disk {
|
||||||
|
type = "local-ssd"
|
||||||
|
scratch = true
|
||||||
|
}
|
||||||
|
|
||||||
|
network_interface {
|
||||||
|
network = "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
}`
|
||||||
|
|
||||||
const testAccComputeInstance_service_account = `
|
const testAccComputeInstance_service_account = `
|
||||||
resource "google_compute_instance" "foobar" {
|
resource "google_compute_instance" "foobar" {
|
||||||
name = "terraform-test"
|
name = "terraform-test"
|
||||||
|
|
|
@ -27,6 +27,12 @@ resource "google_compute_instance" "default" {
|
||||||
image = "debian-7-wheezy-v20140814"
|
image = "debian-7-wheezy-v20140814"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Local SSD disk
|
||||||
|
disk {
|
||||||
|
type = "local-ssd"
|
||||||
|
scratch = true
|
||||||
|
}
|
||||||
|
|
||||||
network_interface {
|
network_interface {
|
||||||
network = "default"
|
network = "default"
|
||||||
access_config {
|
access_config {
|
||||||
|
@ -79,22 +85,27 @@ The following arguments are supported:
|
||||||
|
|
||||||
* `tags` - (Optional) Tags to attach to the instance.
|
* `tags` - (Optional) Tags to attach to the instance.
|
||||||
|
|
||||||
The `disk` block supports:
|
The `disk` block supports: (Note that either disk or image is required, unless
|
||||||
|
the type is "local-ssd", in which case scratch must be true).
|
||||||
|
|
||||||
* `disk` - (Required if image not set) The name of the disk (such as
|
* `disk` - The name of the existing disk (such as those managed by
|
||||||
those managed by `google_compute_disk`) to attach.
|
`google_compute_disk`) to attach.
|
||||||
|
|
||||||
* `image` - (Required if disk not set) The image from which to initialize this
|
* `image` - The image from which to initialize this
|
||||||
disk. Either the full URL, a contraction of the form "project/name", or just
|
disk. Either the full URL, a contraction of the form "project/name", or just
|
||||||
a name (in which case the current project is used).
|
a name (in which case the current project is used).
|
||||||
|
|
||||||
* `auto_delete` - (Optional) Whether or not the disk should be auto-deleted.
|
* `auto_delete` - (Optional) Whether or not the disk should be auto-deleted.
|
||||||
This defaults to true.
|
This defaults to true. Leave true for local SSDs.
|
||||||
|
|
||||||
* `type` - (Optional) The GCE disk type.
|
* `type` - (Optional) The GCE disk type, e.g. pd-standard, pd-ssd, or local-ssd.
|
||||||
|
|
||||||
* `size` - (Optional) The size of the image in gigabytes. If not specified,
|
* `scratch` - (Optional) Whether the disk is a scratch disk as opposed to a
|
||||||
it will inherit the size of its base image.
|
persistent disk (required for local-ssd).
|
||||||
|
|
||||||
|
* `size` - (Optional) The size of the image in gigabytes. If not specified, it
|
||||||
|
will inherit the size of its base image. Do not specify for local SSDs as
|
||||||
|
their size is fixed.
|
||||||
|
|
||||||
* `device_name` - (Optional) Name with which attached disk will be accessible
|
* `device_name` - (Optional) Name with which attached disk will be accessible
|
||||||
under `/dev/disk/by-id/`
|
under `/dev/disk/by-id/`
|
||||||
|
|
Loading…
Reference in New Issue