github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/newrelic/data_source_newrelic_application.go (about) 1 package newrelic 2 3 import ( 4 "fmt" 5 "log" 6 "strconv" 7 8 "github.com/hashicorp/terraform/helper/schema" 9 newrelic "github.com/paultyng/go-newrelic/api" 10 ) 11 12 func dataSourceNewRelicApplication() *schema.Resource { 13 return &schema.Resource{ 14 Read: dataSourceNewRelicApplicationRead, 15 16 Schema: map[string]*schema.Schema{ 17 "name": { 18 Type: schema.TypeString, 19 Required: true, 20 }, 21 "instance_ids": { 22 Type: schema.TypeList, 23 Elem: &schema.Schema{Type: schema.TypeInt}, 24 Computed: true, 25 }, 26 "host_ids": { 27 Type: schema.TypeList, 28 Elem: &schema.Schema{Type: schema.TypeInt}, 29 Computed: true, 30 }, 31 }, 32 } 33 } 34 35 func dataSourceNewRelicApplicationRead(d *schema.ResourceData, meta interface{}) error { 36 client := meta.(*newrelic.Client) 37 38 log.Printf("[INFO] Reading New Relic applications") 39 40 applications, err := client.ListApplications() 41 if err != nil { 42 return err 43 } 44 45 var application *newrelic.Application 46 name := d.Get("name").(string) 47 48 for _, a := range applications { 49 if a.Name == name { 50 application = &a 51 break 52 } 53 } 54 55 if application == nil { 56 return fmt.Errorf("The name '%s' does not match any New Relic applications.", name) 57 } 58 59 d.SetId(strconv.Itoa(application.ID)) 60 d.Set("name", application.Name) 61 d.Set("instance_ids", application.Links.InstanceIDs) 62 d.Set("host_ids", application.Links.HostIDs) 63 64 return nil 65 }