github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/worker/logger/manifold.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package logger
     5  
     6  import (
     7  	"github.com/juju/juju/agent"
     8  	"github.com/juju/juju/api/base"
     9  	"github.com/juju/juju/api/logger"
    10  	"github.com/juju/juju/worker"
    11  	"github.com/juju/juju/worker/dependency"
    12  	"github.com/juju/juju/worker/util"
    13  )
    14  
    15  // ManifoldConfig defines the names of the manifolds on which a
    16  // Manifold will depend.
    17  type ManifoldConfig util.AgentApiManifoldConfig
    18  
    19  // Manifold returns a dependency manifold that runs a logger
    20  // worker, using the resource names defined in the supplied config.
    21  func Manifold(config ManifoldConfig) dependency.Manifold {
    22  	return util.AgentApiManifold(util.AgentApiManifoldConfig(config), newWorker)
    23  }
    24  
    25  // newWorker trivially wraps NewLogger to specialise an AgentApiManifold.
    26  var newWorker = func(a agent.Agent, apiCaller base.APICaller) (worker.Worker, error) {
    27  	currentConfig := a.CurrentConfig()
    28  	loggerFacade := logger.NewState(apiCaller)
    29  	return NewLogger(loggerFacade, currentConfig), nil
    30  }