open-nomad/plugins/base/plugin.go

46 lines
1.2 KiB
Go
Raw Normal View History

2018-08-13 17:52:59 +00:00
package base
2018-08-10 17:50:09 +00:00
import (
2018-08-13 17:52:59 +00:00
"context"
2018-08-10 17:50:09 +00:00
plugin "github.com/hashicorp/go-plugin"
"github.com/hashicorp/nomad/plugins/base/proto"
"google.golang.org/grpc"
)
const (
// PluginTypeDriver implements the driver plugin interface
PluginTypeDriver = "driver"
// PluginTypeDevice implements the device plugin interface
PluginTypeDevice = "device"
)
var (
// Handshake is a common handshake that is shared by all plugins and Nomad.
Handshake = plugin.HandshakeConfig{
ProtocolVersion: 1,
MagicCookieKey: "NOMAD_PLUGIN_MAGIC_COOKIE",
MagicCookieValue: "e4327c2e01eabfd75a8a67adb114fb34a757d57eee7728d857a8cec6e91a7255",
}
)
2018-08-13 17:52:59 +00:00
// PluginBase is wraps a BasePlugin and implements go-plugins GRPCPlugin
// interface to expose the interface over gRPC.
2018-08-10 17:50:09 +00:00
type PluginBase struct {
plugin.NetRPCUnsupportedPlugin
impl BasePlugin
}
func (p *PluginBase) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error {
2018-08-13 18:10:33 +00:00
proto.RegisterBasePluginServer(s, &basePluginServer{
impl: p.impl,
broker: broker,
})
2018-08-10 17:50:09 +00:00
return nil
}
func (p *PluginBase) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error) {
return &basePluginClient{client: proto.NewBasePluginClient(c)}, nil
}