Documentation ¶
Index ¶
- Constants
- Variables
- func GetAbsolutePath(bin string) (string, error)
- func GetKillTimeout(desired, max time.Duration) time.Duration
- func GetPluginMap(w io.Writer, logLevel string) map[string]plugin.Plugin
- func GetTaskEnv(taskDir *allocdir.TaskDir, node *structs.Node, task *structs.Task, ...) (*env.TaskEnvironment, error)
- type CreatedResources
- type DockerDriver
- func (d *DockerDriver) Abilities() DriverAbilities
- func (d *DockerDriver) Cleanup(_ *ExecContext, res *CreatedResources) error
- func (d *DockerDriver) FSIsolation() cstructs.FSIsolation
- func (d *DockerDriver) Fingerprint(cfg *config.Config, node *structs.Node) (bool, error)
- func (d *DockerDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
- func (d *DockerDriver) Periodic() (bool, time.Duration)
- func (d *DockerDriver) Prestart(ctx *ExecContext, task *structs.Task) (*CreatedResources, error)
- func (d *DockerDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
- func (d *DockerDriver) Validate(config map[string]interface{}) error
- type DockerDriverAuth
- type DockerDriverConfig
- type DockerHandle
- func (h *DockerHandle) ContainerID() string
- func (h *DockerHandle) ID() string
- func (h *DockerHandle) Kill() error
- func (h *DockerHandle) Signal(s os.Signal) error
- func (h *DockerHandle) Stats() (*cstructs.TaskResourceUsage, error)
- func (h *DockerHandle) Update(task *structs.Task) error
- func (h *DockerHandle) WaitCh() chan *dstructs.WaitResult
- type DockerLoggingOpts
- type Driver
- func NewDockerDriver(ctx *DriverContext) Driver
- func NewDriver(name string, ctx *DriverContext) (Driver, error)
- func NewExecDriver(ctx *DriverContext) Driver
- func NewJavaDriver(ctx *DriverContext) Driver
- func NewQemuDriver(ctx *DriverContext) Driver
- func NewRawExecDriver(ctx *DriverContext) Driver
- func NewRktDriver(ctx *DriverContext) Driver
- type DriverAbilities
- type DriverContext
- type DriverHandle
- type ExecContext
- type ExecDriver
- func (d *ExecDriver) Abilities() DriverAbilities
- func (d *ExecDriver) Cleanup(*ExecContext, *CreatedResources) error
- func (d *ExecDriver) FSIsolation() cstructs.FSIsolation
- func (d *ExecDriver) Fingerprint(cfg *config.Config, node *structs.Node) (bool, error)
- func (d *ExecDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
- func (d *ExecDriver) Periodic() (bool, time.Duration)
- func (d *ExecDriver) Prestart(*ExecContext, *structs.Task) (*CreatedResources, error)
- func (d *ExecDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
- func (d *ExecDriver) Validate(config map[string]interface{}) error
- type ExecDriverConfig
- type ExecutorPlugin
- type ExecutorRPC
- func (e *ExecutorRPC) DeregisterServices() error
- func (e *ExecutorRPC) Exit() error
- func (e *ExecutorRPC) LaunchCmd(cmd *executor.ExecCommand) (*executor.ProcessState, error)
- func (e *ExecutorRPC) LaunchSyslogServer() (*executor.SyslogServerState, error)
- func (e *ExecutorRPC) SetContext(ctx *executor.ExecutorContext) error
- func (e *ExecutorRPC) ShutDown() error
- func (e *ExecutorRPC) Signal(s os.Signal) error
- func (e *ExecutorRPC) Stats() (*cstructs.TaskResourceUsage, error)
- func (e *ExecutorRPC) SyncServices(ctx *executor.ConsulContext) error
- func (e *ExecutorRPC) UpdateLogConfig(logConfig *structs.LogConfig) error
- func (e *ExecutorRPC) UpdateTask(task *structs.Task) error
- func (e *ExecutorRPC) Version() (*executor.ExecutorVersion, error)
- func (e *ExecutorRPC) Wait() (*executor.ProcessState, error)
- type ExecutorRPCServer
- func (e *ExecutorRPCServer) DeregisterServices(args interface{}, resp *interface{}) error
- func (e *ExecutorRPCServer) Exit(args interface{}, resp *interface{}) error
- func (e *ExecutorRPCServer) LaunchCmd(args LaunchCmdArgs, ps *executor.ProcessState) error
- func (e *ExecutorRPCServer) LaunchSyslogServer(args interface{}, ss *executor.SyslogServerState) error
- func (e *ExecutorRPCServer) SetContext(args *executor.ExecutorContext, resp *interface{}) error
- func (e *ExecutorRPCServer) ShutDown(args interface{}, resp *interface{}) error
- func (e *ExecutorRPCServer) Signal(args os.Signal, resp *interface{}) error
- func (e *ExecutorRPCServer) Stats(args interface{}, resourceUsage *cstructs.TaskResourceUsage) error
- func (e *ExecutorRPCServer) SyncServices(args SyncServicesArgs, resp *interface{}) error
- func (e *ExecutorRPCServer) UpdateLogConfig(args *structs.LogConfig, resp *interface{}) error
- func (e *ExecutorRPCServer) UpdateTask(args *structs.Task, resp *interface{}) error
- func (e *ExecutorRPCServer) Version(args interface{}, version *executor.ExecutorVersion) error
- func (e *ExecutorRPCServer) Wait(args interface{}, ps *executor.ProcessState) error
- type Factory
- type JavaDriver
- func (d *JavaDriver) Abilities() DriverAbilities
- func (d *JavaDriver) Cleanup(*ExecContext, *CreatedResources) error
- func (d *JavaDriver) FSIsolation() cstructs.FSIsolation
- func (d *JavaDriver) Fingerprint(cfg *config.Config, node *structs.Node) (bool, error)
- func (d *JavaDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
- func (d *JavaDriver) Prestart(*ExecContext, *structs.Task) (*CreatedResources, error)
- func (d *JavaDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
- func (d *JavaDriver) Validate(config map[string]interface{}) error
- type JavaDriverConfig
- type LaunchCmdArgs
- type LogEventFn
- type PluginReattachConfig
- type QemuDriver
- func (d *QemuDriver) Abilities() DriverAbilities
- func (d *QemuDriver) Cleanup(*ExecContext, *CreatedResources) error
- func (d *QemuDriver) FSIsolation() cstructs.FSIsolation
- func (d *QemuDriver) Fingerprint(cfg *config.Config, node *structs.Node) (bool, error)
- func (d *QemuDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
- func (d *QemuDriver) Prestart(*ExecContext, *structs.Task) (*CreatedResources, error)
- func (d *QemuDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
- func (d *QemuDriver) Validate(config map[string]interface{}) error
- type QemuDriverConfig
- type RawExecDriver
- func (d *RawExecDriver) Abilities() DriverAbilities
- func (d *RawExecDriver) Cleanup(*ExecContext, *CreatedResources) error
- func (d *RawExecDriver) FSIsolation() cstructs.FSIsolation
- func (d *RawExecDriver) Fingerprint(cfg *config.Config, node *structs.Node) (bool, error)
- func (d *RawExecDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
- func (d *RawExecDriver) Prestart(*ExecContext, *structs.Task) (*CreatedResources, error)
- func (d *RawExecDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
- func (d *RawExecDriver) Validate(config map[string]interface{}) error
- type RktDriver
- func (d *RktDriver) Abilities() DriverAbilities
- func (d *RktDriver) Cleanup(*ExecContext, *CreatedResources) error
- func (d *RktDriver) FSIsolation() cstructs.FSIsolation
- func (d *RktDriver) Fingerprint(cfg *config.Config, node *structs.Node) (bool, error)
- func (d *RktDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
- func (d *RktDriver) Periodic() (bool, time.Duration)
- func (d *RktDriver) Prestart(ctx *ExecContext, task *structs.Task) (*CreatedResources, error)
- func (d *RktDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
- func (d *RktDriver) Validate(config map[string]interface{}) error
- type RktDriverConfig
- type SyncServicesArgs
Constants ¶
const ( // NoSuchContainerError is returned by the docker daemon if the container // does not exist. NoSuchContainerError = "No such container" )
Variables ¶
var ( // The statistics the Docker driver exposes DockerMeasuredMemStats = []string{"RSS", "Cache", "Swap", "Max Usage"} DockerMeasuredCpuStats = []string{"Throttled Periods", "Throttled Time", "Percent"} )
var ( // BuiltinDrivers contains the built in registered drivers // which are available for allocation handling BuiltinDrivers = map[string]Factory{ "docker": NewDockerDriver, "exec": NewExecDriver, "raw_exec": NewRawExecDriver, "java": NewJavaDriver, "qemu": NewQemuDriver, "rkt": NewRktDriver, } // DriverStatsNotImplemented is the error to be returned if a driver doesn't // implement stats. DriverStatsNotImplemented = errors.New("stats not implemented for driver") )
var HandshakeConfig = plugin.HandshakeConfig{
ProtocolVersion: 1,
MagicCookieKey: "NOMAD_PLUGIN_MAGIC_COOKIE",
MagicCookieValue: "e4327c2e01eabfd75a8a67adb114fb34a757d57eee7728d857a8cec6e91a7255",
}
Functions ¶
func GetAbsolutePath ¶ added in v0.3.1
GetAbsolutePath returns the absolute path of the passed binary by resolving it in the path and following symlinks.
func GetKillTimeout ¶ added in v0.3.1
GetKillTimeout returns the kill timeout to use given the tasks desired kill timeout and the operator configured max kill timeout.
func GetPluginMap ¶ added in v0.3.0
Types ¶
type CreatedResources ¶ added in v0.5.3
CreatedResources is a map of resources (eg downloaded images) created by a driver that must be cleaned up.
func NewCreatedResources ¶ added in v0.5.3
func NewCreatedResources() *CreatedResources
func (*CreatedResources) Add ¶ added in v0.5.3
func (r *CreatedResources) Add(k, v string)
Add a new resource if it doesn't already exist.
func (*CreatedResources) Copy ¶ added in v0.5.3
func (r *CreatedResources) Copy() *CreatedResources
Copy returns a new deep copy of CreatedResrouces.
func (*CreatedResources) Merge ¶ added in v0.5.3
func (r *CreatedResources) Merge(o *CreatedResources)
Merge another CreatedResources into this one. If the other CreatedResources is nil this method is a noop.
func (*CreatedResources) Remove ¶ added in v0.5.3
func (r *CreatedResources) Remove(k, needle string) bool
Remove a resource. Return true if removed, otherwise false.
Removes the entire key if the needle is the last value in the list.
type DockerDriver ¶
type DockerDriver struct { DriverContext // contains filtered or unexported fields }
func (*DockerDriver) Abilities ¶ added in v0.5.1
func (d *DockerDriver) Abilities() DriverAbilities
func (*DockerDriver) Cleanup ¶ added in v0.5.3
func (d *DockerDriver) Cleanup(_ *ExecContext, res *CreatedResources) error
func (*DockerDriver) FSIsolation ¶ added in v0.5.3
func (d *DockerDriver) FSIsolation() cstructs.FSIsolation
func (*DockerDriver) Fingerprint ¶
func (*DockerDriver) Open ¶
func (d *DockerDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
func (*DockerDriver) Periodic ¶ added in v0.3.1
func (d *DockerDriver) Periodic() (bool, time.Duration)
func (*DockerDriver) Prestart ¶ added in v0.5.2
func (d *DockerDriver) Prestart(ctx *ExecContext, task *structs.Task) (*CreatedResources, error)
func (*DockerDriver) Start ¶
func (d *DockerDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
func (*DockerDriver) Validate ¶ added in v0.3.2
func (d *DockerDriver) Validate(config map[string]interface{}) error
Validate is used to validate the driver configuration
type DockerDriverAuth ¶ added in v0.2.0
type DockerDriverAuth struct { Username string `mapstructure:"username"` // username for the registry Password string `mapstructure:"password"` // password to access the registry Email string `mapstructure:"email"` // email address of the user who is allowed to access the registry ServerAddress string `mapstructure:"server_address"` // server address of the registry }
type DockerDriverConfig ¶ added in v0.2.0
type DockerDriverConfig struct { ImageName string `mapstructure:"image"` // Container's Image Name LoadImages []string `mapstructure:"load"` // LoadImage is array of paths to image archive files Command string `mapstructure:"command"` // The Command to run when the container starts up Args []string `mapstructure:"args"` // The arguments to the Command IpcMode string `mapstructure:"ipc_mode"` // The IPC mode of the container - host and none NetworkMode string `mapstructure:"network_mode"` // The network mode of the container - host, nat and none NetworkAliases []string `mapstructure:"network_aliases"` // The network-scoped alias for the container PidMode string `mapstructure:"pid_mode"` // The PID mode of the container - host and none UTSMode string `mapstructure:"uts_mode"` // The UTS mode of the container - host and none UsernsMode string `mapstructure:"userns_mode"` // The User namespace mode of the container - host and none PortMapRaw []map[string]int `mapstructure:"port_map"` // PortMap map[string]int `mapstructure:"-"` // A map of host port labels and the ports exposed on the container Privileged bool `mapstructure:"privileged"` // Flag to run the container in privileged mode DNSServers []string `mapstructure:"dns_servers"` // DNS Server for containers DNSSearchDomains []string `mapstructure:"dns_search_domains"` // DNS Search domains for containers Hostname string `mapstructure:"hostname"` // Hostname for containers LabelsRaw []map[string]string `mapstructure:"labels"` // Labels map[string]string `mapstructure:"-"` // Labels to set when the container starts up Auth []DockerDriverAuth `mapstructure:"auth"` // Authentication credentials for a private Docker registry TTY bool `mapstructure:"tty"` // Allocate a Pseudo-TTY Interactive bool `mapstructure:"interactive"` // Keep STDIN open even if not attached ShmSize int64 `mapstructure:"shm_size"` // Size of /dev/shm of the container in bytes WorkDir string `mapstructure:"work_dir"` // Working directory inside the container Logging []DockerLoggingOpts `mapstructure:"logging"` // Logging options for syslog server Volumes []string `mapstructure:"volumes"` // Host-Volumes to mount in, syntax: /path/to/host/directory:/destination/path/in/container ForcePull bool `mapstructure:"force_pull"` // Always force pull before running image, useful if your tags are mutable }
func NewDockerDriverConfig ¶ added in v0.4.0
func NewDockerDriverConfig(task *structs.Task, env *env.TaskEnvironment) (*DockerDriverConfig, error)
NewDockerDriverConfig returns a docker driver config by parsing the HCL config
func (*DockerDriverConfig) Validate ¶ added in v0.2.0
func (c *DockerDriverConfig) Validate() error
Validate validates a docker driver config
type DockerHandle ¶ added in v0.2.1
type DockerHandle struct {
// contains filtered or unexported fields
}
func (*DockerHandle) ContainerID ¶ added in v0.2.1
func (h *DockerHandle) ContainerID() string
func (*DockerHandle) ID ¶ added in v0.2.1
func (h *DockerHandle) ID() string
func (*DockerHandle) Kill ¶ added in v0.2.1
func (h *DockerHandle) Kill() error
Kill is used to terminate the task. This uses `docker stop -t killTimeout`
func (*DockerHandle) Stats ¶ added in v0.4.0
func (h *DockerHandle) Stats() (*cstructs.TaskResourceUsage, error)
func (*DockerHandle) Update ¶ added in v0.2.1
func (h *DockerHandle) Update(task *structs.Task) error
func (*DockerHandle) WaitCh ¶ added in v0.2.1
func (h *DockerHandle) WaitCh() chan *dstructs.WaitResult
type DockerLoggingOpts ¶ added in v0.5.1
type Driver ¶
type Driver interface { // Drivers must support the fingerprint interface for detection fingerprint.Fingerprint // Prestart prepares the task environment and performs expensive // intialization steps like downloading images. // // CreatedResources may be non-nil even when an error occurs. Prestart(*ExecContext, *structs.Task) (*CreatedResources, error) // Start is used to being task execution Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error) // Open is used to re-open a handle to a task Open(ctx *ExecContext, handleID string) (DriverHandle, error) // Cleanup is called to remove resources which were created for a task // and no longer needed. // // If Cleanup returns a recoverable error it may be retried. On retry // it will be passed the same CreatedResources, so all successfully // cleaned up resources should be removed. Cleanup(*ExecContext, *CreatedResources) error // Drivers must validate their configuration Validate(map[string]interface{}) error // Abilities returns the abilities of the driver Abilities() DriverAbilities // FSIsolation returns the method of filesystem isolation used FSIsolation() cstructs.FSIsolation }
Driver is used for execution of tasks. This allows Nomad to support many pluggable implementations of task drivers. Examples could include LXC, Docker, Qemu, etc.
func NewDockerDriver ¶
func NewDockerDriver(ctx *DriverContext) Driver
func NewDriver ¶
func NewDriver(name string, ctx *DriverContext) (Driver, error)
NewDriver is used to instantiate and return a new driver given the name and a logger
func NewExecDriver ¶
func NewExecDriver(ctx *DriverContext) Driver
NewExecDriver is used to create a new exec driver
func NewJavaDriver ¶
func NewJavaDriver(ctx *DriverContext) Driver
NewJavaDriver is used to create a new exec driver
func NewQemuDriver ¶
func NewQemuDriver(ctx *DriverContext) Driver
NewQemuDriver is used to create a new exec driver
func NewRawExecDriver ¶ added in v0.2.0
func NewRawExecDriver(ctx *DriverContext) Driver
NewRawExecDriver is used to create a new raw exec driver
func NewRktDriver ¶ added in v0.2.0
func NewRktDriver(ctx *DriverContext) Driver
NewRktDriver is used to create a new exec driver
type DriverAbilities ¶ added in v0.5.1
type DriverAbilities struct { // SendSignals marks the driver as being able to send signals SendSignals bool }
DriverAbilities marks the abilities the driver has.
type DriverContext ¶
type DriverContext struct {
// contains filtered or unexported fields
}
DriverContext is a means to inject dependencies such as loggers, configs, and node attributes into a Driver without having to change the Driver interface each time we do it. Used in conjection with Factory, above.
func NewDriverContext ¶
func NewDriverContext(taskName string, config *config.Config, node *structs.Node, logger *log.Logger, taskEnv *env.TaskEnvironment, eventEmitter LogEventFn) *DriverContext
NewDriverContext initializes a new DriverContext with the specified fields. This enables other packages to create DriverContexts but keeps the fields private to the driver. If we want to change this later we can gorename all of the fields in DriverContext.
func NewEmptyDriverContext ¶ added in v0.3.2
func NewEmptyDriverContext() *DriverContext
NewEmptyDriverContext returns a DriverContext with all fields set to their zero value.
type DriverHandle ¶
type DriverHandle interface { // Returns an opaque handle that can be used to re-open the handle ID() string // WaitCh is used to return a channel used wait for task completion WaitCh() chan *dstructs.WaitResult // Update is used to update the task if possible and update task related // configurations. Update(task *structs.Task) error // Kill is used to stop the task Kill() error // Stats returns aggregated stats of the driver Stats() (*cstructs.TaskResourceUsage, error) // Signal is used to send a signal to the task Signal(s os.Signal) error }
DriverHandle is an opaque handle into a driver used for task manipulation
type ExecContext ¶
type ExecContext struct { // TaskDir contains information about the task directory structure. TaskDir *allocdir.TaskDir // Alloc ID AllocID string }
ExecContext is a task's execution context
func NewExecContext ¶
func NewExecContext(td *allocdir.TaskDir, allocID string) *ExecContext
NewExecContext is used to create a new execution context
type ExecDriver ¶
type ExecDriver struct {
DriverContext
}
ExecDriver fork/execs tasks using as many of the underlying OS's isolation features.
func (*ExecDriver) Abilities ¶ added in v0.5.1
func (d *ExecDriver) Abilities() DriverAbilities
func (*ExecDriver) Cleanup ¶ added in v0.5.3
func (d *ExecDriver) Cleanup(*ExecContext, *CreatedResources) error
func (*ExecDriver) FSIsolation ¶ added in v0.5.3
func (d *ExecDriver) FSIsolation() cstructs.FSIsolation
func (*ExecDriver) Fingerprint ¶
func (*ExecDriver) Open ¶
func (d *ExecDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
func (*ExecDriver) Prestart ¶ added in v0.5.2
func (d *ExecDriver) Prestart(*ExecContext, *structs.Task) (*CreatedResources, error)
func (*ExecDriver) Start ¶
func (d *ExecDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
func (*ExecDriver) Validate ¶ added in v0.3.2
func (d *ExecDriver) Validate(config map[string]interface{}) error
Validate is used to validate the driver configuration
type ExecDriverConfig ¶ added in v0.2.0
type ExecutorPlugin ¶ added in v0.3.0
type ExecutorPlugin struct { Impl *ExecutorRPCServer // contains filtered or unexported fields }
func (*ExecutorPlugin) Client ¶ added in v0.3.0
func (p *ExecutorPlugin) Client(b *plugin.MuxBroker, c *rpc.Client) (interface{}, error)
func (*ExecutorPlugin) Server ¶ added in v0.3.0
func (p *ExecutorPlugin) Server(*plugin.MuxBroker) (interface{}, error)
type ExecutorRPC ¶ added in v0.3.0
type ExecutorRPC struct {
// contains filtered or unexported fields
}
func (*ExecutorRPC) DeregisterServices ¶ added in v0.3.2
func (e *ExecutorRPC) DeregisterServices() error
func (*ExecutorRPC) Exit ¶ added in v0.3.0
func (e *ExecutorRPC) Exit() error
func (*ExecutorRPC) LaunchCmd ¶ added in v0.3.0
func (e *ExecutorRPC) LaunchCmd(cmd *executor.ExecCommand) (*executor.ProcessState, error)
func (*ExecutorRPC) LaunchSyslogServer ¶ added in v0.3.2
func (e *ExecutorRPC) LaunchSyslogServer() (*executor.SyslogServerState, error)
func (*ExecutorRPC) SetContext ¶ added in v0.5.1
func (e *ExecutorRPC) SetContext(ctx *executor.ExecutorContext) error
func (*ExecutorRPC) ShutDown ¶ added in v0.3.0
func (e *ExecutorRPC) ShutDown() error
func (*ExecutorRPC) Stats ¶ added in v0.4.0
func (e *ExecutorRPC) Stats() (*cstructs.TaskResourceUsage, error)
func (*ExecutorRPC) SyncServices ¶ added in v0.3.2
func (e *ExecutorRPC) SyncServices(ctx *executor.ConsulContext) error
func (*ExecutorRPC) UpdateLogConfig ¶ added in v0.3.0
func (e *ExecutorRPC) UpdateLogConfig(logConfig *structs.LogConfig) error
func (*ExecutorRPC) UpdateTask ¶ added in v0.3.2
func (e *ExecutorRPC) UpdateTask(task *structs.Task) error
func (*ExecutorRPC) Version ¶ added in v0.3.2
func (e *ExecutorRPC) Version() (*executor.ExecutorVersion, error)
func (*ExecutorRPC) Wait ¶ added in v0.3.0
func (e *ExecutorRPC) Wait() (*executor.ProcessState, error)
type ExecutorRPCServer ¶ added in v0.3.0
func (*ExecutorRPCServer) DeregisterServices ¶ added in v0.3.2
func (e *ExecutorRPCServer) DeregisterServices(args interface{}, resp *interface{}) error
func (*ExecutorRPCServer) Exit ¶ added in v0.3.0
func (e *ExecutorRPCServer) Exit(args interface{}, resp *interface{}) error
func (*ExecutorRPCServer) LaunchCmd ¶ added in v0.3.0
func (e *ExecutorRPCServer) LaunchCmd(args LaunchCmdArgs, ps *executor.ProcessState) error
func (*ExecutorRPCServer) LaunchSyslogServer ¶ added in v0.3.2
func (e *ExecutorRPCServer) LaunchSyslogServer(args interface{}, ss *executor.SyslogServerState) error
func (*ExecutorRPCServer) SetContext ¶ added in v0.5.1
func (e *ExecutorRPCServer) SetContext(args *executor.ExecutorContext, resp *interface{}) error
func (*ExecutorRPCServer) ShutDown ¶ added in v0.3.0
func (e *ExecutorRPCServer) ShutDown(args interface{}, resp *interface{}) error
func (*ExecutorRPCServer) Signal ¶ added in v0.5.1
func (e *ExecutorRPCServer) Signal(args os.Signal, resp *interface{}) error
func (*ExecutorRPCServer) Stats ¶ added in v0.4.0
func (e *ExecutorRPCServer) Stats(args interface{}, resourceUsage *cstructs.TaskResourceUsage) error
func (*ExecutorRPCServer) SyncServices ¶ added in v0.3.2
func (e *ExecutorRPCServer) SyncServices(args SyncServicesArgs, resp *interface{}) error
func (*ExecutorRPCServer) UpdateLogConfig ¶ added in v0.3.0
func (e *ExecutorRPCServer) UpdateLogConfig(args *structs.LogConfig, resp *interface{}) error
func (*ExecutorRPCServer) UpdateTask ¶ added in v0.3.2
func (e *ExecutorRPCServer) UpdateTask(args *structs.Task, resp *interface{}) error
func (*ExecutorRPCServer) Version ¶ added in v0.3.2
func (e *ExecutorRPCServer) Version(args interface{}, version *executor.ExecutorVersion) error
func (*ExecutorRPCServer) Wait ¶ added in v0.3.0
func (e *ExecutorRPCServer) Wait(args interface{}, ps *executor.ProcessState) error
type JavaDriver ¶
type JavaDriver struct { DriverContext fingerprint.StaticFingerprinter }
JavaDriver is a simple driver to execute applications packaged in Jars. It literally just fork/execs tasks with the java command.
func (*JavaDriver) Abilities ¶ added in v0.5.1
func (d *JavaDriver) Abilities() DriverAbilities
func (*JavaDriver) Cleanup ¶ added in v0.5.3
func (d *JavaDriver) Cleanup(*ExecContext, *CreatedResources) error
func (*JavaDriver) FSIsolation ¶ added in v0.5.3
func (d *JavaDriver) FSIsolation() cstructs.FSIsolation
func (*JavaDriver) Fingerprint ¶
func (*JavaDriver) Open ¶
func (d *JavaDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
func (*JavaDriver) Prestart ¶ added in v0.5.2
func (d *JavaDriver) Prestart(*ExecContext, *structs.Task) (*CreatedResources, error)
func (*JavaDriver) Start ¶
func (d *JavaDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
func (*JavaDriver) Validate ¶ added in v0.3.2
func (d *JavaDriver) Validate(config map[string]interface{}) error
Validate is used to validate the driver configuration
type JavaDriverConfig ¶ added in v0.2.0
type JavaDriverConfig struct { Class string `mapstructure:"class"` ClassPath string `mapstructure:"class_path"` JarPath string `mapstructure:"jar_path"` JvmOpts []string `mapstructure:"jvm_options"` Args []string `mapstructure:"args"` }
func NewJavaDriverConfig ¶ added in v0.5.3
func NewJavaDriverConfig(task *structs.Task, env *env.TaskEnvironment) (*JavaDriverConfig, error)
type LaunchCmdArgs ¶ added in v0.3.0
type LaunchCmdArgs struct {
Cmd *executor.ExecCommand
}
LaunchCmdArgs wraps a user command and the args for the purposes of RPC
type LogEventFn ¶ added in v0.5.2
type LogEventFn func(message string, args ...interface{})
LogEventFn is a callback which allows Drivers to emit task events.
type PluginReattachConfig ¶ added in v0.3.0
ExecutorReattachConfig is the config that we seralize and de-serialize and store in disk
func NewPluginReattachConfig ¶ added in v0.3.0
func NewPluginReattachConfig(c *plugin.ReattachConfig) *PluginReattachConfig
func (*PluginReattachConfig) PluginConfig ¶ added in v0.3.0
func (c *PluginReattachConfig) PluginConfig() *plugin.ReattachConfig
PluginConfig returns a config from an ExecutorReattachConfig
type QemuDriver ¶
type QemuDriver struct { DriverContext fingerprint.StaticFingerprinter }
QemuDriver is a driver for running images via Qemu We attempt to chose sane defaults for now, with more configuration available planned in the future
func (*QemuDriver) Abilities ¶ added in v0.5.1
func (d *QemuDriver) Abilities() DriverAbilities
func (*QemuDriver) Cleanup ¶ added in v0.5.3
func (d *QemuDriver) Cleanup(*ExecContext, *CreatedResources) error
func (*QemuDriver) FSIsolation ¶ added in v0.5.3
func (d *QemuDriver) FSIsolation() cstructs.FSIsolation
func (*QemuDriver) Fingerprint ¶
func (*QemuDriver) Open ¶
func (d *QemuDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
func (*QemuDriver) Prestart ¶ added in v0.5.2
func (d *QemuDriver) Prestart(*ExecContext, *structs.Task) (*CreatedResources, error)
func (*QemuDriver) Start ¶
func (d *QemuDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
Run an existing Qemu image. Start() will pull down an existing, valid Qemu image and save it to the Drivers Allocation Dir
func (*QemuDriver) Validate ¶ added in v0.3.2
func (d *QemuDriver) Validate(config map[string]interface{}) error
Validate is used to validate the driver configuration
type QemuDriverConfig ¶ added in v0.2.0
type RawExecDriver ¶ added in v0.2.0
type RawExecDriver struct { DriverContext fingerprint.StaticFingerprinter }
The RawExecDriver is a privileged version of the exec driver. It provides no resource isolation and just fork/execs. The Exec driver should be preferred and this should only be used when explicitly needed.
func (*RawExecDriver) Abilities ¶ added in v0.5.1
func (d *RawExecDriver) Abilities() DriverAbilities
func (*RawExecDriver) Cleanup ¶ added in v0.5.3
func (d *RawExecDriver) Cleanup(*ExecContext, *CreatedResources) error
func (*RawExecDriver) FSIsolation ¶ added in v0.5.3
func (d *RawExecDriver) FSIsolation() cstructs.FSIsolation
func (*RawExecDriver) Fingerprint ¶ added in v0.2.0
func (*RawExecDriver) Open ¶ added in v0.2.0
func (d *RawExecDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
func (*RawExecDriver) Prestart ¶ added in v0.5.2
func (d *RawExecDriver) Prestart(*ExecContext, *structs.Task) (*CreatedResources, error)
func (*RawExecDriver) Start ¶ added in v0.2.0
func (d *RawExecDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
func (*RawExecDriver) Validate ¶ added in v0.3.2
func (d *RawExecDriver) Validate(config map[string]interface{}) error
Validate is used to validate the driver configuration
type RktDriver ¶ added in v0.2.0
type RktDriver struct {
DriverContext
}
RktDriver is a driver for running images via Rkt We attempt to chose sane defaults for now, with more configuration available planned in the future
func (*RktDriver) Abilities ¶ added in v0.5.1
func (d *RktDriver) Abilities() DriverAbilities
func (*RktDriver) Cleanup ¶ added in v0.5.3
func (d *RktDriver) Cleanup(*ExecContext, *CreatedResources) error
func (*RktDriver) FSIsolation ¶ added in v0.5.3
func (d *RktDriver) FSIsolation() cstructs.FSIsolation
func (*RktDriver) Fingerprint ¶ added in v0.2.0
func (*RktDriver) Open ¶ added in v0.2.0
func (d *RktDriver) Open(ctx *ExecContext, handleID string) (DriverHandle, error)
func (*RktDriver) Prestart ¶ added in v0.5.2
func (d *RktDriver) Prestart(ctx *ExecContext, task *structs.Task) (*CreatedResources, error)
func (*RktDriver) Start ¶ added in v0.2.0
func (d *RktDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, error)
Run an existing Rkt image.
type RktDriverConfig ¶ added in v0.2.0
type RktDriverConfig struct { ImageName string `mapstructure:"image"` Command string `mapstructure:"command"` Args []string `mapstructure:"args"` TrustPrefix string `mapstructure:"trust_prefix"` DNSServers []string `mapstructure:"dns_servers"` // DNS Server for containers DNSSearchDomains []string `mapstructure:"dns_search_domains"` // DNS Search domains for containers Net []string `mapstructure:"net"` // Networks for the containers PortMapRaw []map[string]string `mapstructure:"port_map"` // PortMap map[string]string `mapstructure:"-"` // A map of host port and the port name defined in the image manifest file Volumes []string `mapstructure:"volumes"` // Host-Volumes to mount in, syntax: /path/to/host/directory:/destination/path/in/container Debug bool `mapstructure:"debug"` // Enable debug option for rkt command }
type SyncServicesArgs ¶ added in v0.3.2
type SyncServicesArgs struct {
Ctx *executor.ConsulContext
}
SyncServicesArgs wraps the consul context for the purposes of RPC