github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/jujud/agent/machine/stateflag.go (about)

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package machine
     5  
     6  import (
     7  	"gopkg.in/juju/worker.v1"
     8  	"gopkg.in/juju/worker.v1/dependency"
     9  
    10  	"github.com/juju/juju/cmd/jujud/agent/engine"
    11  )
    12  
    13  // isControllerFlagManifold returns a dependency.Manifold which requires
    14  // State, and returns a worker implementing engine.Flag, whose Check method
    15  // always returns true. This is used for flagging that the machine is a
    16  // controller/model manager.
    17  func isControllerFlagManifold() dependency.Manifold {
    18  	return dependency.Manifold{
    19  		Inputs: []string{stateName},
    20  		Output: engine.FlagOutput,
    21  		Start: func(context dependency.Context) (worker.Worker, error) {
    22  			if err := context.Get(stateName, nil); err != nil {
    23  				return nil, err
    24  			}
    25  			return engine.NewStaticFlagWorker(true), nil
    26  		},
    27  	}
    28  }