github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/unitassigner/manifold.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package unitassigner
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	"gopkg.in/juju/worker.v1"
     9  	"gopkg.in/juju/worker.v1/dependency"
    10  
    11  	"github.com/juju/juju/api/base"
    12  	"github.com/juju/juju/api/unitassigner"
    13  	"github.com/juju/juju/cmd/jujud/agent/engine"
    14  )
    15  
    16  // ManifoldConfig describes the resources used by a unitassigner worker.
    17  type ManifoldConfig engine.APIManifoldConfig
    18  
    19  // Manifold returns a Manifold that runs a unitassigner worker.
    20  func Manifold(config ManifoldConfig) dependency.Manifold {
    21  	return engine.APIManifold(
    22  		engine.APIManifoldConfig(config),
    23  		manifoldStart,
    24  	)
    25  }
    26  
    27  // manifoldStart returns a unitassigner worker using the supplied APICaller.
    28  func manifoldStart(apiCaller base.APICaller) (worker.Worker, error) {
    29  	facade := unitassigner.New(apiCaller)
    30  	worker, err := New(facade)
    31  	if err != nil {
    32  		return nil, errors.Trace(err)
    33  	}
    34  	return worker, nil
    35  }