~sinzui/ubuntu/wily/juju-core/wily-1.24.7

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/api/metricsmanager/client.go

  • Committer: Package Import Robot
  • Author(s): Oleg Strikov
  • Date: 2015-03-26 15:54:39 UTC
  • mfrom: (1.1.32)
  • Revision ID: package-import@ubuntu.com-20150326155439-ot7bwwyoomq13btm
Tags: 1.22.0-0ubuntu1
* New upstream release (LP: #1416051).
* d/patches/fix-detect-new-release.patch: Added upstream patch to redeem
  the ability to handle future Ubuntu releases (LP: #1427879, #1434092).
* d/tests/fake-future.sh: New ability to generate fake /etc/os-release.
* d/copyright: Updated to reflect changes in the codebase.
* d/control:
  - Change build dependency from gccgo to gccgo-go.
  - Use either cloud-image-utils or cloud-utils as dependency for juju-local
    because cloud-image-utils is not available on precise.
  - Compliance to Debian Policy 3.9.6 was declared.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2014 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
// The metricsmanager package contains implementation for an api facade to
 
5
// access metrics functions within state
 
6
package metricsmanager
 
7
 
 
8
import (
 
9
        "github.com/juju/errors"
 
10
 
 
11
        "github.com/juju/juju/api"
 
12
        "github.com/juju/juju/api/base"
 
13
        "github.com/juju/juju/apiserver/params"
 
14
)
 
15
 
 
16
// Client provides access to the metrics manager api
 
17
type Client struct {
 
18
        base.ClientFacade
 
19
        st     *api.State
 
20
        facade base.FacadeCaller
 
21
}
 
22
 
 
23
// MetricsManagerClient defines the methods on the metricsmanager API end point.
 
24
type MetricsManagerClient interface {
 
25
        CleanupOldMetrics() error
 
26
        SendMetrics() error
 
27
}
 
28
 
 
29
var _ MetricsManagerClient = (*Client)(nil)
 
30
 
 
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}
 
35
}
 
36
 
 
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()
 
41
        if err != nil {
 
42
                return errors.Trace(err)
 
43
        }
 
44
        p := params.Entities{Entities: []params.Entity{
 
45
                {envTag.String()},
 
46
        }}
 
47
        results := new(params.ErrorResults)
 
48
        err = c.facade.FacadeCall("CleanupOldMetrics", p, results)
 
49
        if err != nil {
 
50
                return errors.Trace(err)
 
51
        }
 
52
        return results.OneError()
 
53
}
 
54
 
 
55
// SendMetrics will send any unsent metrics to the collection service.
 
56
func (c *Client) SendMetrics() error {
 
57
        envTag, err := c.st.EnvironTag()
 
58
        if err != nil {
 
59
                return errors.Trace(err)
 
60
        }
 
61
        p := params.Entities{Entities: []params.Entity{
 
62
                {envTag.String()},
 
63
        }}
 
64
        results := new(params.ErrorResults)
 
65
        err = c.facade.FacadeCall("SendMetrics", p, results)
 
66
        if err != nil {
 
67
                return errors.Trace(err)
 
68
        }
 
69
        return results.OneError()
 
70
}