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