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