github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/worker/metricworker/metricmanager.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package metricworker 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/api/metricsmanager" 10 "github.com/juju/juju/worker" 11 ) 12 13 // NewMetricsManager creates a runner that will run the metricsmanagement workers. 14 func NewMetricsManager(client metricsmanager.MetricsManagerClient) (worker.Runner, error) { 15 // Periodic workers automatically retry so none should return an error. If they do 16 // it's ok to restart them individually. 17 isFatal := func(error) bool { 18 return false 19 } 20 // All errors are equal 21 moreImportant := func(error, error) bool { 22 return false 23 } 24 runner := worker.NewRunner(isFatal, moreImportant) 25 err := runner.StartWorker("sender", func() (worker.Worker, error) { 26 return NewSender(client), nil 27 }) 28 29 if err != nil { 30 return nil, errors.Trace(err) 31 } 32 err = runner.StartWorker("cleanup", func() (worker.Worker, error) { 33 return NewCleanup(client), nil 34 }) 35 if err != nil { 36 return nil, errors.Trace(err) 37 } 38 return runner, nil 39 }