github.com/wtfutil/wtf@v0.43.0/modules/newrelic/client/application_instances.go (about) 1 package newrelic 2 3 import ( 4 "strconv" 5 ) 6 7 // ApplicationInstanceSummary describes an Application's instance. 8 type ApplicationInstanceSummary struct { 9 ResponseTime float64 `json:"response_time,omitempty"` 10 Throughput float64 `json:"throughput,omitempty"` 11 ErrorRate float64 `json:"error_rate,omitempty"` 12 ApdexScore float64 `json:"apdex_score,omitempty"` 13 InstanceCount int `json:"instance_count,omitempty"` 14 } 15 16 // ApplicationInstanceEndUserSummary describes the end user summary component 17 // of an ApplicationInstance. 18 type ApplicationInstanceEndUserSummary struct { 19 ResponseTime float64 `json:"response_time,omitempty"` 20 Throughput float64 `json:"throughput,omitempty"` 21 ApdexScore float64 `json:"apdex_score,omitempty"` 22 } 23 24 // ApplicationInstanceLinks lists IDs associated with an ApplicationInstances. 25 type ApplicationInstanceLinks struct { 26 Application int `json:"application,omitempty"` 27 ApplicationHost int `json:"application_host,omitempty"` 28 Server int `json:"server,omitempty"` 29 } 30 31 // ApplicationInstance describes a New Relic Application instance. 32 type ApplicationInstance struct { 33 ID int `json:"id,omitempty"` 34 ApplicationName string `json:"application_name,omitempty"` 35 Host string `json:"host,omitempty"` 36 Port int `json:"port,omitempty"` 37 Language string `json:"language,omitempty"` 38 HealthStatus string `json:"health_status,omitempty"` 39 ApplicationSummary ApplicationInstanceSummary `json:"application_summary,omitempty"` 40 EndUserSummary ApplicationInstanceEndUserSummary `json:"end_user_summary,omitempty"` 41 Links ApplicationInstanceLinks `json:"links,omitempty"` 42 } 43 44 // ApplicationInstancesFilter provides a means to filter requests through 45 // ApplicationInstancesOptions when calling GetApplicationInstances. 46 type ApplicationInstancesFilter struct { 47 Hostname string 48 IDs []int 49 } 50 51 // ApplicationInstancesOptions provides a means to filter results when calling 52 // GetApplicationInstances. 53 type ApplicationInstancesOptions struct { 54 Filter ApplicationInstancesFilter 55 Page int 56 } 57 58 // GetApplicationInstances returns a slice of New Relic Application Instances, 59 // optionall filtering by ApplicationInstancesOptions. 60 func (c *Client) GetApplicationInstances(appID int, options *ApplicationInstancesOptions) ([]ApplicationInstance, error) { 61 resp := &struct { 62 ApplicationInstances []ApplicationInstance `json:"application_instances,omitempty"` 63 }{} 64 path := "applications/" + strconv.Itoa(appID) + "/instances.json" 65 err := c.doGet(path, options, resp) 66 if err != nil { 67 return nil, err 68 } 69 return resp.ApplicationInstances, nil 70 } 71 72 // GetApplicationInstance returns a single Application Instance associated 73 // with the given application ID and instance ID 74 func (c *Client) GetApplicationInstance(appID, instanceID int) (*ApplicationInstance, error) { 75 resp := &struct { 76 ApplicationInstance ApplicationInstance `json:"application_instance,omitempty"` 77 }{} 78 path := "applications/" + strconv.Itoa(appID) + "/instances/" + strconv.Itoa(instanceID) + ".json" 79 err := c.doGet(path, nil, resp) 80 if err != nil { 81 return nil, err 82 } 83 return &resp.ApplicationInstance, nil 84 } 85 func (o *ApplicationInstancesOptions) String() string { 86 if o == nil { 87 return "" 88 } 89 return encodeGetParams(map[string]interface{}{ 90 "filter[hostname]": o.Filter.Hostname, 91 "filter[ids]": o.Filter.IDs, 92 "page": o.Page, 93 }) 94 }