package newrelic import ( "fmt" "log" "strconv" "github.com/hashicorp/terraform/helper/schema" newrelic "github.com/paultyng/go-newrelic/api" ) func dataSourceNewRelicApplication() *schema.Resource { return &schema.Resource{ Read: dataSourceNewRelicApplicationRead, Schema: map[string]*schema.Schema{ "name": { Type: schema.TypeString, Required: true, }, "instance_ids": { Type: schema.TypeList, Elem: &schema.Schema{Type: schema.TypeInt}, Computed: true, }, "host_ids": { Type: schema.TypeList, Elem: &schema.Schema{Type: schema.TypeInt}, Computed: true, }, }, } } func dataSourceNewRelicApplicationRead(d *schema.ResourceData, meta interface{}) error { client := meta.(*newrelic.Client) log.Printf("[INFO] Reading New Relic applications") applications, err := client.ListApplications() if err != nil { return err } var application *newrelic.Application name := d.Get("name").(string) for _, a := range applications { if a.Name == name { application = &a break } } if application == nil { return fmt.Errorf("The name '%s' does not match any New Relic applications.", name) } d.SetId(strconv.Itoa(application.ID)) d.Set("name", application.Name) d.Set("instance_ids", application.Links.InstanceIDs) d.Set("host_ids", application.Links.HostIDs) return nil }