func resourceCloudStackTemplateRead()

in cloudstack/resource_cloudstack_template.go [239:292]


func resourceCloudStackTemplateRead(d *schema.ResourceData, meta interface{}) error {
	cs := meta.(*cloudstack.CloudStackClient)

	// Get the template details
	p := cs.Template.NewListTemplatesParams("executable")
	p.SetId(d.Id())
	p.SetShowunique(true)
	project := d.Get("project").(string)
	if project != "" {
		if !cloudstack.IsID(project) {
			id, _, err := cs.Project.GetProjectID(project)
			if err != nil {
				return err
			}
			project = id
		}
		p.SetProjectid(project)
	}

	r, err := cs.Template.ListTemplates(p)
	if err != nil {
		return err
	} else if r.Count == 0 {
		log.Printf(
			"[DEBUG] Template %s no longer exists", d.Get("name").(string))
		d.SetId("")
		return nil
	}

	t := r.Templates[0]

	d.Set("name", t.Name)
	d.Set("display_text", t.Displaytext)
	d.Set("format", t.Format)
	d.Set("hypervisor", t.Hypervisor)
	d.Set("is_dynamically_scalable", t.Isdynamicallyscalable)
	d.Set("is_extractable", t.Isextractable)
	d.Set("is_featured", t.Isfeatured)
	d.Set("is_public", t.Ispublic)
	d.Set("password_enabled", t.Passwordenabled)
	d.Set("is_ready", t.Isready)

	tags := make(map[string]interface{})
	for _, tag := range t.Tags {
		tags[tag.Key] = tag.Value
	}
	d.Set("tags", tags)

	setValueOrID(d, "os_type", t.Ostypename, t.Ostypeid)
	setValueOrID(d, "project", t.Project, t.Projectid)
	setValueOrID(d, "zone", t.Zonename, t.Zoneid)

	return nil
}