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  }