github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/api/agent/metricsadder/client.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package metricsadder 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/api/base" 10 "github.com/juju/juju/rpc/params" 11 ) 12 13 // MetricsAdderClient defines the methods on the metricadder API end point. 14 type MetricsAdderClient interface { 15 // AddMetricBatches stores specified metric batches in the state. 16 AddMetricBatches(batches []params.MetricBatchParam) (map[string]error, error) 17 } 18 19 // NewClient creates a new client for accessing the metricsadder API. 20 func NewClient(caller base.APICaller) *Client { 21 return &Client{facade: base.NewFacadeCaller(caller, "MetricsAdder")} 22 } 23 24 var _ MetricsAdderClient = (*Client)(nil) 25 26 // Client provides access to the metrics adder API. 27 type Client struct { 28 facade base.FacadeCaller 29 } 30 31 // AddMetricBatches implements the MetricsAdderClient interface. 32 func (c *Client) AddMetricBatches(batches []params.MetricBatchParam) (map[string]error, error) { 33 parameters := params.MetricBatchParams{ 34 Batches: batches, 35 } 36 results := new(params.ErrorResults) 37 err := c.facade.FacadeCall("AddMetricBatches", parameters, results) 38 if err != nil { 39 return nil, errors.Trace(err) 40 } 41 resultMap := make(map[string]error) 42 for i, result := range results.Results { 43 resultMap[batches[i].Batch.UUID] = result.Error 44 } 45 return resultMap, nil 46 }