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  }