github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/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 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.Connection 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.Connection) *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 }