juju: github.com/juju/juju/worker/uniter/runner Index | Files | Directories

package runner

import "github.com/juju/juju/worker/uniter/runner"


Package Files

args.go env.go factory.go runner.go


const (
    InvalidHookHandler = HookHandlerType("invalid")

    // ExplicitHookHandler indicates that a bespoke, per-hook script was
    // used for handling a particular hook.
    ExplicitHookHandler = HookHandlerType("explicit")

    // DispatchingHookHandler indicates the use of a specialized script that
    // acts as a dispatcher for all types of hooks. This functionality has
    // been introduced with the operator framework changes.
    DispatchingHookHandler = HookHandlerType("dispatch")

type Context Uses

type Context interface {
    Id() string
    HookVars(paths context.Paths, remote bool) ([]string, error)
    ActionData() (*context.ActionData, error)
    SetProcess(process context.HookProcess)
    HasExecutionSetUnitStatus() bool
    ModelType() model.ModelType

    Prepare() error
    Flush(badge string, failure error) error

Context exposes hooks.Context, and additional methods needed by Runner.

type ExecFunc Uses

type ExecFunc func(ExecParams) (*utilexec.ExecResponse, error)

ExecFunc is the exec func type.

type ExecParams Uses

type ExecParams struct {
    Commands      []string
    Env           []string
    WorkingDir    string
    Clock         clock.Clock
    ProcessSetter func(context.HookProcess)
    Cancel        <-chan struct{}

    Stdout       io.ReadWriter
    StdoutLogger charmrunner.Stopper

    Stderr       io.ReadWriter
    StderrLogger charmrunner.Stopper

ExecParams holds all the necessary parameters for ExecFunc.

type Factory Uses

type Factory interface {

    // NewCommandRunner returns an execution context suitable for running
    // an arbitrary script.
    NewCommandRunner(commandInfo context.CommandInfo) (Runner, error)

    // NewHookRunner returns an execution context suitable for running the
    // supplied hook definition (which must be valid).
    NewHookRunner(hookInfo hook.Info) (Runner, error)

    // NewActionRunner returns an execution context suitable for running the
    // action identified by the supplied id.
    NewActionRunner(actionId string, cancel <-chan struct{}) (Runner, error)

Factory represents a long-lived object that can create runners relevant to a specific unit.

func NewFactory Uses

func NewFactory(
    state *uniter.State,
    paths context.Paths,
    contextFactory context.ContextFactory,
    remoteExecutor ExecFunc,
) (
    Factory, error,

NewFactory returns a Factory capable of creating runners for executing charm hooks, actions and commands.

type HookHandlerType Uses

type HookHandlerType string

HookHandlerType is used to indicate the type of script used for handling a particular hook type.

func (HookHandlerType) String Uses

func (t HookHandlerType) String() string

String implements fmt.Stringer for HookHandlerType.

type Runner Uses

type Runner interface {

    // Context returns the context against which the runner executes.
    Context() Context

    // RunHook executes the hook with the supplied name and returns back
    // the type of script handling hook that was used or whether any errors
    // occurred.
    RunHook(name string) (HookHandlerType, error)

    // RunAction executes the action with the supplied name.
    RunAction(name string) (HookHandlerType, error)

    // RunCommands executes the supplied script.
    RunCommands(commands string) (*utilexec.ExecResponse, error)

Runner is responsible for invoking commands in a context.

func NewRunner Uses

func NewRunner(context Context, paths context.Paths, remoteExecutor ExecFunc) Runner

NewRunner returns a Runner backed by the supplied context and paths.


contextPackage context contains the ContextFactory and Context definitions.
context/mocksPackage mocks is a generated GoMock package.
jujucThe worker/uniter/runner/jujuc package implements the server side of the jujuc proxy tool, which forwards command invocations to the unit agent process so that they can be executed against specific state.
jujuc/mocksPackage mocks is a generated GoMock package.

Package runner imports 30 packages (graph) and is imported by 107 packages. Updated 2020-04-01. Refresh now. Tools for package owners.