github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/metricworker/manifold.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package metricworker
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	"gopkg.in/juju/worker.v1"
     9  	"gopkg.in/juju/worker.v1/dependency"
    10  
    11  	"github.com/juju/juju/api/base"
    12  	"github.com/juju/juju/api/metricsmanager"
    13  	"github.com/juju/juju/cmd/jujud/agent/engine"
    14  )
    15  
    16  // ManifoldConfig describes the resources used by metrics workers.
    17  type ManifoldConfig engine.APIManifoldConfig
    18  
    19  // Manifold returns a Manifold that encapsulates various metrics workers.
    20  func Manifold(config ManifoldConfig) dependency.Manifold {
    21  	return engine.APIManifold(
    22  		engine.APIManifoldConfig(config),
    23  		manifoldStart,
    24  	)
    25  }
    26  
    27  // manifoldStart creates a runner for the metrics workers, given a base.APICaller.
    28  func manifoldStart(apiCaller base.APICaller) (worker.Worker, error) {
    29  	client, err := metricsmanager.NewClient(apiCaller)
    30  	if err != nil {
    31  		return nil, errors.Trace(err)
    32  	}
    33  	w, err := newMetricsManager(client, nil)
    34  	if err != nil {
    35  		return nil, errors.Trace(err)
    36  	}
    37  	return w, nil
    38  }