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  }