Merge pull request #1916 from terraform-providers/paddy_disk_image_url_in_templates

Always set instance template source images on read.
This commit is contained in:
Paddy 2018-08-22 14:42:44 -07:00 committed by GitHub
commit 5d48dc81d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,6 +3,7 @@ package google
import (
"fmt"
"github.com/hashicorp/errwrap"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/helper/schema"
"github.com/hashicorp/terraform/helper/validation"
@ -98,9 +99,10 @@ func resourceComputeInstanceTemplate() *schema.Resource {
},
"source_image": &schema.Schema{
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Type: schema.TypeString,
Optional: true,
DiffSuppressFunc: compareSelfLinkRelativePaths,
ForceNew: true,
},
"interface": &schema.Schema{
@ -630,17 +632,16 @@ func resourceComputeInstanceTemplateCreate(d *schema.ResourceData, meta interfac
return resourceComputeInstanceTemplateRead(d, meta)
}
func flattenDisks(disks []*computeBeta.AttachedDisk, d *schema.ResourceData) []map[string]interface{} {
func flattenDisks(disks []*computeBeta.AttachedDisk, d *schema.ResourceData) ([]map[string]interface{}, error) {
result := make([]map[string]interface{}, 0, len(disks))
for i, disk := range disks {
for _, disk := range disks {
diskMap := make(map[string]interface{})
if disk.InitializeParams != nil {
var source_img = fmt.Sprintf("disk.%d.source_image", i)
if d.Get(source_img) == nil || d.Get(source_img) == "" {
diskMap["source_image"] = GetResourceNameFromSelfLink(disk.InitializeParams.SourceImage)
} else {
diskMap["source_image"] = d.Get(source_img)
path, err := getRelativePath(disk.InitializeParams.SourceImage)
if err != nil {
return nil, errwrap.Wrapf("Error getting relative path for source image: {{err}}", err)
}
diskMap["source_image"] = path
diskMap["disk_type"] = disk.InitializeParams.DiskType
diskMap["disk_name"] = disk.InitializeParams.DiskName
diskMap["disk_size_gb"] = disk.InitializeParams.DiskSizeGb
@ -654,7 +655,7 @@ func flattenDisks(disks []*computeBeta.AttachedDisk, d *schema.ResourceData) []m
diskMap["type"] = disk.Type
result = append(result, diskMap)
}
return result
return result, nil
}
func resourceComputeInstanceTemplateRead(d *schema.ResourceData, meta interface{}) error {
@ -695,6 +696,8 @@ func resourceComputeInstanceTemplateRead(d *schema.ResourceData, meta interface{
if err = d.Set("tags_fingerprint", instanceTemplate.Properties.Tags.Fingerprint); err != nil {
return fmt.Errorf("Error setting tags_fingerprint: %s", err)
}
} else {
d.Set("tags_fingerprint", "")
}
if instanceTemplate.Properties.Labels != nil {
d.Set("labels", instanceTemplate.Properties.Labels)
@ -706,7 +709,11 @@ func resourceComputeInstanceTemplateRead(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error setting name: %s", err)
}
if instanceTemplate.Properties.Disks != nil {
if err = d.Set("disk", flattenDisks(instanceTemplate.Properties.Disks, d)); err != nil {
disks, err := flattenDisks(instanceTemplate.Properties.Disks, d)
if err != nil {
return fmt.Errorf("error flattening disks: %s", err)
}
if err = d.Set("disk", disks); err != nil {
return fmt.Errorf("Error setting disk: %s", err)
}
}
@ -755,6 +762,10 @@ func resourceComputeInstanceTemplateRead(d *schema.ResourceData, meta interface{
if err = d.Set("tags", instanceTemplate.Properties.Tags.Items); err != nil {
return fmt.Errorf("Error setting tags: %s", err)
}
} else {
if err = d.Set("tags", nil); err != nil {
return fmt.Errorf("Error setting empty tags: %s", err)
}
}
if instanceTemplate.Properties.ServiceAccounts != nil {
if err = d.Set("service_account", flattenServiceAccounts(instanceTemplate.Properties.ServiceAccounts)); err != nil {