runner

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2023 License: MPL-2.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PlanCodeNoUpdates = 0
	PlanCodeUpdates   = 1
	PlanCodeError     = 255
)

PlanCode* is the set of expected error codes that Runner.PlanDeployment should return. Please see the interface function docstring for more details.

Variables

This section is empty.

Functions

func HigherPlanCode

func HigherPlanCode(old, new int) int

HigherPlanCode is a helper function that returns the highest plan exit code so implementations can easily track the code to return.

Types

type Config

type Config struct {
	DeploymentName string
	PackName       string
	PathPath       string
	PackRef        string
	RegistryName   string
}

Config is the generic configuration used by each runner implementation to identify key pack elements. This should be set using the Runner.SetRunnerConfig function.

type Runner

type Runner interface {

	// CanonicalizeTemplates performs Nomad Pack specific canonicalization on
	// the pack templates. This allows planning and rendering outputs to ensure
	// the rendered object matches exactly what would be deployed.
	CanonicalizeTemplates() []*errors.WrappedUIContext

	// CheckForConflicts iterates over parsed templates, and checks for
	// conflicts with running packs.
	CheckForConflicts(*errors.UIErrorContext) []*errors.WrappedUIContext

	// Deploy the rendered templates to the Nomad cluster. A single error is
	// returned as any error encountered is terminal. Any warnings and errors
	// that need to be displayed to the console should be printed within the
	// function and is why the UI and UIErrorContext is passed.
	Deploy(terminal.UI, *errors.UIErrorContext) *errors.WrappedUIContext

	// DestroyDeployment destroys the deployment as provided by the
	// configuration set within SetDeployerConfig.
	DestroyDeployment(terminal.UI) []*errors.WrappedUIContext

	// ParsedTemplates returns the parsed and canonicalized templates to the
	// caller whose responsibility it is to assert the mapping type expected
	// based on the deployer implementation.
	ParsedTemplates() any

	// Name returns the name of the deployer which indicates the Nomad object
	// it is designed to handle.
	Name() string

	// PlanDeployment plans the deployment of the templates. As the information
	// of the plan is specific to the object, it is the responsibility of the
	// implementation to print console information via the terminal.UI. The
	// returned int identifies the exit code for the CLI. In order to keep
	// consistency with the Nomad CLI and across pack objects, the following
	// rules should be used:
	//
	// code 0:   No objects will be created or destroyed.
	// code 1:   Objects will be created or destroyed.
	// code 255: An error occurred determining the plan.
	PlanDeployment(terminal.UI, *errors.UIErrorContext) (int, []*errors.WrappedUIContext)

	// SetTemplates supplies the rendered templates to the deployer for use in
	// subsequent function calls.
	SetTemplates(map[string]string)

	// SetRunnerConfig is used to set the deployer configuration on the created
	// deployer implementation.
	SetRunnerConfig(config *Config)

	// ParseTemplates iterates the templates stored by SetTemplates and
	// performs validation against their desired object. If the validation
	// includes parsing the string template into a Nomad object, the
	// implementor should store these to avoid having to do this again when
	// deploying.
	ParseTemplates() []*errors.WrappedUIContext
}

Runner is the interface that defines the deployment mechanism for creating objects in a Nomad cluster from pack templates. This currently only covers validation of templates against their native Nomad object, but will be expanded to cover planning and running.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL