github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/api/metricsmanager/client.go (about) 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 "github.com/juju/names" 11 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 modelTag names.ModelTag 19 facade base.FacadeCaller 20 } 21 22 // MetricsManagerClient defines the methods on the metricsmanager API end point. 23 type MetricsManagerClient interface { 24 CleanupOldMetrics() error 25 SendMetrics() error 26 } 27 28 var _ MetricsManagerClient = (*Client)(nil) 29 30 // NewClient creates a new client for accessing the metricsmanager api 31 func NewClient(apiCaller base.APICaller) (*Client, error) { 32 modelTag, err := apiCaller.ModelTag() 33 if err != nil { 34 return nil, errors.Trace(err) 35 } 36 facade := base.NewFacadeCaller(apiCaller, "MetricsManager") 37 return &Client{ 38 modelTag: modelTag, 39 facade: facade, 40 }, nil 41 } 42 43 // CleanupOldMetrics looks for metrics that are 24 hours old (or older) 44 // and have been sent. Any metrics it finds are deleted. 45 func (c *Client) CleanupOldMetrics() error { 46 p := params.Entities{Entities: []params.Entity{ 47 {c.modelTag.String()}, 48 }} 49 var results params.ErrorResults 50 err := c.facade.FacadeCall("CleanupOldMetrics", p, &results) 51 if err != nil { 52 return errors.Trace(err) 53 } 54 return results.OneError() 55 } 56 57 // SendMetrics will send any unsent metrics to the collection service. 58 func (c *Client) SendMetrics() error { 59 p := params.Entities{Entities: []params.Entity{ 60 {c.modelTag.String()}, 61 }} 62 var results params.ErrorResults 63 err := c.facade.FacadeCall("SendMetrics", p, &results) 64 if err != nil { 65 return errors.Trace(err) 66 } 67 return results.OneError() 68 }