github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/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/engine"
    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 engine.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 := engine.AgentAPIManifoldConfig(config)
    23  	return engine.AgentAPIManifold(typedConfig, newWorker)
    24  }
    25  
    26  // newWorker trivially wraps NewLogger to specialise a engine.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  }