func resourceCloudStackConfigurationRead()

in cloudstack/resource_cloudstack_configuration.go [105:159]


func resourceCloudStackConfigurationRead(d *schema.ResourceData, meta interface{}) error {
	cs := meta.(*cloudstack.CloudStackClient)
	p := cs.Configuration.NewListConfigurationsParams()

	// required
	p.SetName(d.Id())

	// optional
	if v, ok := d.GetOk("account_id"); ok {
		p.SetAccountid(v.(string))
	}
	if v, ok := d.GetOk("category"); ok {
		p.SetCategory(v.(string))
	}
	if v, ok := d.GetOk("cluster_id"); ok {
		p.SetClusterid(v.(string))
	}
	if v, ok := d.GetOk("domain_id"); ok {
		p.SetDomainid(v.(string))
	}
	if v, ok := d.GetOk("image_store_uuid"); ok {
		p.SetImagestoreuuid(v.(string))
	}
	if v, ok := d.GetOk("store_id"); ok {
		p.SetStorageid(v.(string))
	}
	if v, ok := d.GetOk("zone_id"); ok {
		p.SetZoneid(v.(string))
	}

	cfg, err := cs.Configuration.ListConfigurations(p)
	if err != nil {
		return err
	}

	found := false
	for _, v := range cfg.Configurations {
		if v.Name == d.Id() {
			d.Set("category", v.Category)
			d.Set("description", v.Description)
			d.Set("is_dynamic", v.Isdynamic)
			d.Set("name", v.Name)
			d.Set("value", v.Value)
			d.Set("scope", v.Scope)
			found = true
		}
	}

	if !found {
		return fmt.Errorf("listConfiguration failed. no matching names found %s", d.Id())
	}

	return nil

}