1
// Copyright 2014 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
4
// The metricsmanager package contains implementation for an api facade to
5
// access metrics functions within state
9
"github.com/juju/errors"
11
"github.com/juju/juju/api"
12
"github.com/juju/juju/api/base"
13
"github.com/juju/juju/apiserver/params"
16
// Client provides access to the metrics manager api
20
facade base.FacadeCaller
23
// MetricsManagerClient defines the methods on the metricsmanager API end point.
24
type MetricsManagerClient interface {
25
CleanupOldMetrics() error
29
var _ MetricsManagerClient = (*Client)(nil)
31
// NewClient creates a new client for accessing the metricsmanager api
32
func NewClient(st *api.State) *Client {
33
frontend, backend := base.NewClientFacade(st, "MetricsManager")
34
return &Client{ClientFacade: frontend, st: st, facade: backend}
37
// CleanupOldMetrics looks for metrics that are 24 hours old (or older)
38
// and have been sent. Any metrics it finds are deleted.
39
func (c *Client) CleanupOldMetrics() error {
40
envTag, err := c.st.EnvironTag()
42
return errors.Trace(err)
44
p := params.Entities{Entities: []params.Entity{
47
results := new(params.ErrorResults)
48
err = c.facade.FacadeCall("CleanupOldMetrics", p, results)
50
return errors.Trace(err)
52
return results.OneError()
55
// SendMetrics will send any unsent metrics to the collection service.
56
func (c *Client) SendMetrics() error {
57
envTag, err := c.st.EnvironTag()
59
return errors.Trace(err)
61
p := params.Entities{Entities: []params.Entity{
64
results := new(params.ErrorResults)
65
err = c.facade.FacadeCall("SendMetrics", p, results)
67
return errors.Trace(err)
69
return results.OneError()