github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/apiserver/metricsender/stateinterface.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 // Package metricsender contains functions for sending 5 // metrics from a controller to a remote metric collector. 6 package metricsender 7 8 import ( 9 "gopkg.in/juju/names.v2" 10 11 "github.com/juju/juju/environs/config" 12 "github.com/juju/juju/state" 13 ) 14 15 // MetricsSenderBackend defines methods provided by a state 16 // instance used by the metrics sender apiserver implementation. 17 // All the interface methods are defined directly on state.State 18 // and are reproduced here for use in tests. 19 type MetricsSenderBackend interface { 20 MetricsManager() (*state.MetricsManager, error) 21 MetricsToSend(batchSize int) ([]*state.MetricBatch, error) 22 SetMetricBatchesSent(batchUUIDs []string) error 23 CountOfUnsentMetrics() (int, error) 24 CountOfSentMetrics() (int, error) 25 } 26 27 // ModelBackend contains additional methods that are used by the metrics sender. 28 type ModelBackend interface { 29 MetricsSenderBackend 30 31 Unit(name string) (*state.Unit, error) 32 ModelTag() names.ModelTag 33 ModelConfig() (*config.Config, error) 34 }