github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/worker/firewaller/manifold.go (about)

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