in cloudstack/data_source_cloudstack_service_offering.go [53:87]
func datasourceCloudStackServiceOfferingRead(d *schema.ResourceData, meta interface{}) error {
cs := meta.(*cloudstack.CloudStackClient)
p := cs.ServiceOffering.NewListServiceOfferingsParams()
csServiceOfferings, err := cs.ServiceOffering.ListServiceOfferings(p)
if err != nil {
return fmt.Errorf("Failed to list service offerings: %s", err)
}
filters := d.Get("filter")
var serviceOfferings []*cloudstack.ServiceOffering
for _, s := range csServiceOfferings.ServiceOfferings {
match, err := applyServiceOfferingFilters(s, filters.(*schema.Set))
if err != nil {
return err
}
if match {
serviceOfferings = append(serviceOfferings, s)
}
}
if len(serviceOfferings) == 0 {
return fmt.Errorf("No service offering is matching with the specified regex")
}
//return the latest service offering from the list of filtered service according
//to its creation date
serviceOffering, err := latestServiceOffering(serviceOfferings)
if err != nil {
return err
}
log.Printf("[DEBUG] Selected service offerings: %s\n", serviceOffering.Displaytext)
return serviceOfferingDescriptionAttributes(d, serviceOffering)
}