github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/worker/logsender/manifold.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package logsender 5 6 import ( 7 "github.com/juju/juju/api/base" 8 "github.com/juju/juju/api/logsender" 9 "github.com/juju/juju/cmd/jujud/agent/engine" 10 "github.com/juju/juju/worker" 11 "github.com/juju/juju/worker/dependency" 12 ) 13 14 // ManifoldConfig defines the names of the manifolds on which a Manifold will 15 // depend. 16 type ManifoldConfig struct { 17 APICallerName string 18 LogSource LogRecordCh 19 } 20 21 // Manifold returns a dependency manifold that runs a logger 22 // worker, using the resource names defined in the supplied config. 23 func Manifold(config ManifoldConfig) dependency.Manifold { 24 typedConfig := engine.APIManifoldConfig{ 25 APICallerName: config.APICallerName, 26 } 27 return engine.APIManifold(typedConfig, config.newWorker) 28 } 29 30 func (config ManifoldConfig) newWorker(apiCaller base.APICaller) (worker.Worker, error) { 31 return New(config.LogSource, logsender.NewAPI(apiCaller)), nil 32 }