mirror of
https://github.com/kemko/nomad.git
synced 2026-01-02 08:25:43 +03:00
This PR fixes various instances of plugins being launched without using the parent loggers. This meant that logs would not all go to the same output, break formatting etc.
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package executor
|
|
|
|
import (
|
|
"net"
|
|
|
|
hclog "github.com/hashicorp/go-hclog"
|
|
plugin "github.com/hashicorp/go-plugin"
|
|
)
|
|
|
|
// ExecutorConfig is the config that Nomad passes to the executor
|
|
type ExecutorConfig struct {
|
|
|
|
// LogFile is the file to which Executor logs
|
|
LogFile string
|
|
|
|
// LogLevel is the level of the logs to putout
|
|
LogLevel string
|
|
|
|
// FSIsolation if set will use an executor implementation that support
|
|
// filesystem isolation
|
|
FSIsolation bool
|
|
}
|
|
|
|
func GetPluginMap(logger hclog.Logger, fsIsolation bool) map[string]plugin.Plugin {
|
|
return map[string]plugin.Plugin{
|
|
"executor": &ExecutorPlugin{
|
|
logger: logger,
|
|
fsIsolation: fsIsolation,
|
|
},
|
|
}
|
|
}
|
|
|
|
// ExecutorReattachConfig is the config that we serialize and de-serialize and
|
|
// store in disk
|
|
type PluginReattachConfig struct {
|
|
Pid int
|
|
AddrNet string
|
|
AddrName string
|
|
}
|
|
|
|
// PluginConfig returns a config from an ExecutorReattachConfig
|
|
func (c *PluginReattachConfig) PluginConfig() *plugin.ReattachConfig {
|
|
var addr net.Addr
|
|
switch c.AddrNet {
|
|
case "unix", "unixgram", "unixpacket":
|
|
addr, _ = net.ResolveUnixAddr(c.AddrNet, c.AddrName)
|
|
case "tcp", "tcp4", "tcp6":
|
|
addr, _ = net.ResolveTCPAddr(c.AddrNet, c.AddrName)
|
|
}
|
|
return &plugin.ReattachConfig{Pid: c.Pid, Addr: addr}
|
|
}
|
|
|
|
func NewPluginReattachConfig(c *plugin.ReattachConfig) *PluginReattachConfig {
|
|
return &PluginReattachConfig{Pid: c.Pid, AddrNet: c.Addr.Network(), AddrName: c.Addr.String()}
|
|
}
|