Add labels to google_compute_instance_template (#515)

This commit is contained in:
Joe Selman 2017-10-09 10:17:15 -07:00 committed by GitHub
parent 888df75f39
commit e3ca8fbe59
3 changed files with 39 additions and 0 deletions

View File

@ -324,6 +324,14 @@ func resourceComputeInstanceTemplate() *schema.Resource {
Type: schema.TypeString,
Computed: true,
},
"labels": &schema.Schema{
Type: schema.TypeMap,
Optional: true,
ForceNew: true,
Elem: &schema.Schema{Type: schema.TypeString},
Set: schema.HashString,
},
},
}
}
@ -576,6 +584,9 @@ func resourceComputeInstanceTemplateCreate(d *schema.ResourceData, meta interfac
instanceProperties.ServiceAccounts = serviceAccounts
instanceProperties.Tags = resourceInstanceTags(d)
if _, ok := d.GetOk("labels"); ok {
instanceProperties.Labels = expandLabels(d)
}
var itName string
if v, ok := d.GetOk("name"); ok {
@ -743,6 +754,9 @@ func resourceComputeInstanceTemplateRead(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error setting tags_fingerprint: %s", err)
}
}
if instanceTemplate.Properties.Labels != nil {
d.Set("labels", instanceTemplate.Properties.Labels)
}
if err = d.Set("self_link", instanceTemplate.SelfLink); err != nil {
return fmt.Errorf("Error setting self_link: %s", err)
}

View File

@ -28,6 +28,7 @@ func TestAccComputeInstanceTemplate_basic(t *testing.T) {
testAccCheckComputeInstanceTemplateTag(&instanceTemplate, "foo"),
testAccCheckComputeInstanceTemplateMetadata(&instanceTemplate, "foo", "bar"),
testAccCheckComputeInstanceTemplateDisk(&instanceTemplate, "projects/debian-cloud/global/images/debian-8-jessie-v20160803", true, true),
testAccCheckComputeInstanceTemplateContainsLabel(&instanceTemplate, "my_label", "foobar"),
),
},
},
@ -412,6 +413,19 @@ func testAccCheckComputeInstanceTemplateNetworkIP(n, networkIP string, instanceT
}
}
func testAccCheckComputeInstanceTemplateContainsLabel(instanceTemplate *compute.InstanceTemplate, key string, value string) resource.TestCheckFunc {
return func(s *terraform.State) error {
v, ok := instanceTemplate.Properties.Labels[key]
if !ok {
return fmt.Errorf("Expected label with key '%s' not found", key)
}
if v != value {
return fmt.Errorf("Incorrect label value for key '%s': expected '%s' but found '%s'", key, value, v)
}
return nil
}
}
var testAccComputeInstanceTemplate_basic = fmt.Sprintf(`
resource "google_compute_instance_template" "foobar" {
name = "instancet-test-%s"
@ -441,6 +455,10 @@ resource "google_compute_instance_template" "foobar" {
service_account {
scopes = ["userinfo-email", "compute-ro", "storage-ro"]
}
labels {
my_label = "foobar"
}
}`, acctest.RandString(10))
var testAccComputeInstanceTemplate_preemptible = fmt.Sprintf(`

View File

@ -24,6 +24,10 @@ resource "google_compute_instance_template" "default" {
tags = ["foo", "bar"]
labels = {
environment = "dev"
}
instance_description = "description assigned to instances"
machine_type = "n1-standard-1"
can_ip_forward = false
@ -133,6 +137,9 @@ The following arguments are supported:
* `instance_description` - (Optional) A brief description to use for instances
created from this template.
* `labels` - (Optional) A set of key/value label pairs to assign to instances
created from this template,
* `metadata` - (Optional) Metadata key/value pairs to make available from
within instances created from this template.