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 }