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  }