github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/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  
     9  	"github.com/juju/juju/api/base"
    10  	"github.com/juju/juju/api/metricsmanager"
    11  	"github.com/juju/juju/cmd/jujud/agent/util"
    12  	"github.com/juju/juju/worker"
    13  	"github.com/juju/juju/worker/dependency"
    14  )
    15  
    16  // ManifoldConfig describes the resources used by metrics workers.
    17  type ManifoldConfig util.ApiManifoldConfig
    18  
    19  // Manifold returns a Manifold that encapsulates various metrics workers.
    20  func Manifold(config ManifoldConfig) dependency.Manifold {
    21  	return util.ApiManifold(
    22  		util.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)
    34  	if err != nil {
    35  		return nil, errors.Trace(err)
    36  	}
    37  	return w, nil
    38  }