github.com/maier/nomad@v0.4.1-0.20161110003312-a9e3d0b8549d/client/driver/plugins.go (about) 1 package driver 2 3 import ( 4 "io" 5 "log" 6 "net" 7 8 "github.com/hashicorp/go-plugin" 9 ) 10 11 var HandshakeConfig = plugin.HandshakeConfig{ 12 ProtocolVersion: 1, 13 MagicCookieKey: "NOMAD_PLUGIN_MAGIC_COOKIE", 14 MagicCookieValue: "e4327c2e01eabfd75a8a67adb114fb34a757d57eee7728d857a8cec6e91a7255", 15 } 16 17 func GetPluginMap(w io.Writer) map[string]plugin.Plugin { 18 e := new(ExecutorPlugin) 19 e.logger = log.New(w, "", log.LstdFlags) 20 21 s := new(SyslogCollectorPlugin) 22 s.logger = log.New(w, "", log.LstdFlags) 23 return map[string]plugin.Plugin{ 24 "executor": e, 25 "syslogcollector": s, 26 } 27 } 28 29 // ExecutorReattachConfig is the config that we seralize and de-serialize and 30 // store in disk 31 type PluginReattachConfig struct { 32 Pid int 33 AddrNet string 34 AddrName string 35 } 36 37 // PluginConfig returns a config from an ExecutorReattachConfig 38 func (c *PluginReattachConfig) PluginConfig() *plugin.ReattachConfig { 39 var addr net.Addr 40 switch c.AddrNet { 41 case "unix", "unixgram", "unixpacket": 42 addr, _ = net.ResolveUnixAddr(c.AddrNet, c.AddrName) 43 case "tcp", "tcp4", "tcp6": 44 addr, _ = net.ResolveTCPAddr(c.AddrNet, c.AddrName) 45 } 46 return &plugin.ReattachConfig{Pid: c.Pid, Addr: addr} 47 } 48 49 func NewPluginReattachConfig(c *plugin.ReattachConfig) *PluginReattachConfig { 50 return &PluginReattachConfig{Pid: c.Pid, AddrNet: c.Addr.Network(), AddrName: c.Addr.String()} 51 }