github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/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/cmd/jujud/agent/util"
    11  	"github.com/juju/juju/worker"
    12  	"github.com/juju/juju/worker/dependency"
    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  	typedConfig := util.AgentApiManifoldConfig(config)
    23  	return util.AgentApiManifold(typedConfig, newWorker)
    24  }
    25  
    26  // newWorker trivially wraps NewLogger to specialise a util.AgentApiManifold.
    27  var newWorker = func(a agent.Agent, apiCaller base.APICaller) (worker.Worker, error) {
    28  	currentConfig := a.CurrentConfig()
    29  	loggerFacade := logger.NewState(apiCaller)
    30  	return NewLogger(loggerFacade, currentConfig)
    31  }