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  }