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
}