mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-10-04 17:51:11 +00:00
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:
commit
5d48dc81d2
@ -3,6 +3,7 @@ package google
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/hashicorp/errwrap"
|
||||||
"github.com/hashicorp/terraform/helper/resource"
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
"github.com/hashicorp/terraform/helper/schema"
|
"github.com/hashicorp/terraform/helper/schema"
|
||||||
"github.com/hashicorp/terraform/helper/validation"
|
"github.com/hashicorp/terraform/helper/validation"
|
||||||
@ -98,9 +99,10 @@ func resourceComputeInstanceTemplate() *schema.Resource {
|
|||||||
},
|
},
|
||||||
|
|
||||||
"source_image": &schema.Schema{
|
"source_image": &schema.Schema{
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
ForceNew: true,
|
DiffSuppressFunc: compareSelfLinkRelativePaths,
|
||||||
|
ForceNew: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
"interface": &schema.Schema{
|
"interface": &schema.Schema{
|
||||||
@ -630,17 +632,16 @@ func resourceComputeInstanceTemplateCreate(d *schema.ResourceData, meta interfac
|
|||||||
return resourceComputeInstanceTemplateRead(d, meta)
|
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))
|
result := make([]map[string]interface{}, 0, len(disks))
|
||||||
for i, disk := range disks {
|
for _, disk := range disks {
|
||||||
diskMap := make(map[string]interface{})
|
diskMap := make(map[string]interface{})
|
||||||
if disk.InitializeParams != nil {
|
if disk.InitializeParams != nil {
|
||||||
var source_img = fmt.Sprintf("disk.%d.source_image", i)
|
path, err := getRelativePath(disk.InitializeParams.SourceImage)
|
||||||
if d.Get(source_img) == nil || d.Get(source_img) == "" {
|
if err != nil {
|
||||||
diskMap["source_image"] = GetResourceNameFromSelfLink(disk.InitializeParams.SourceImage)
|
return nil, errwrap.Wrapf("Error getting relative path for source image: {{err}}", err)
|
||||||
} else {
|
|
||||||
diskMap["source_image"] = d.Get(source_img)
|
|
||||||
}
|
}
|
||||||
|
diskMap["source_image"] = path
|
||||||
diskMap["disk_type"] = disk.InitializeParams.DiskType
|
diskMap["disk_type"] = disk.InitializeParams.DiskType
|
||||||
diskMap["disk_name"] = disk.InitializeParams.DiskName
|
diskMap["disk_name"] = disk.InitializeParams.DiskName
|
||||||
diskMap["disk_size_gb"] = disk.InitializeParams.DiskSizeGb
|
diskMap["disk_size_gb"] = disk.InitializeParams.DiskSizeGb
|
||||||
@ -654,7 +655,7 @@ func flattenDisks(disks []*computeBeta.AttachedDisk, d *schema.ResourceData) []m
|
|||||||
diskMap["type"] = disk.Type
|
diskMap["type"] = disk.Type
|
||||||
result = append(result, diskMap)
|
result = append(result, diskMap)
|
||||||
}
|
}
|
||||||
return result
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourceComputeInstanceTemplateRead(d *schema.ResourceData, meta interface{}) error {
|
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 {
|
if err = d.Set("tags_fingerprint", instanceTemplate.Properties.Tags.Fingerprint); err != nil {
|
||||||
return fmt.Errorf("Error setting tags_fingerprint: %s", err)
|
return fmt.Errorf("Error setting tags_fingerprint: %s", err)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
d.Set("tags_fingerprint", "")
|
||||||
}
|
}
|
||||||
if instanceTemplate.Properties.Labels != nil {
|
if instanceTemplate.Properties.Labels != nil {
|
||||||
d.Set("labels", instanceTemplate.Properties.Labels)
|
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)
|
return fmt.Errorf("Error setting name: %s", err)
|
||||||
}
|
}
|
||||||
if instanceTemplate.Properties.Disks != nil {
|
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)
|
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 {
|
if err = d.Set("tags", instanceTemplate.Properties.Tags.Items); err != nil {
|
||||||
return fmt.Errorf("Error setting tags: %s", err)
|
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 instanceTemplate.Properties.ServiceAccounts != nil {
|
||||||
if err = d.Set("service_account", flattenServiceAccounts(instanceTemplate.Properties.ServiceAccounts)); err != nil {
|
if err = d.Set("service_account", flattenServiceAccounts(instanceTemplate.Properties.ServiceAccounts)); err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user