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  }