gaia: Index | Files

package plugin

import ""


Package Files

grpc.go plugin.go

type GaiaLogWriter Uses

type GaiaLogWriter struct {
    // contains filtered or unexported fields

GaiaLogWriter represents a concurrent safe log writer which can be shared with go-plugin.

func (*GaiaLogWriter) Flush Uses

func (g *GaiaLogWriter) Flush() error

Flush locks and flushes the underlying writer.

func (*GaiaLogWriter) Write Uses

func (g *GaiaLogWriter) Write(p []byte) (n int, err error)

Write locks and writes to the underlying writer.

func (*GaiaLogWriter) WriteString Uses

func (g *GaiaLogWriter) WriteString(s string) (int, error)

WriteString locks and passes on the string to write to the underlying writer.

type GaiaPlugin Uses

type GaiaPlugin interface {
    GetJobs() (proto.Plugin_GetJobsClient, error)
    ExecuteJob(job *proto.Job) (*proto.JobResult, error)

GaiaPlugin is the Gaia plugin interface used for communication with the plugin.

type GaiaPluginClient Uses

type GaiaPluginClient struct {
    // contains filtered or unexported fields

GaiaPluginClient represents gRPC client

func (*GaiaPluginClient) ExecuteJob Uses

func (m *GaiaPluginClient) ExecuteJob(job *proto.Job) (*proto.JobResult, error)

ExecuteJob triggers the execution of the given job in the plugin.

func (*GaiaPluginClient) GetJobs Uses

func (m *GaiaPluginClient) GetJobs() (proto.Plugin_GetJobsClient, error)

GetJobs requests all jobs from the plugin. We get a stream of proto.Job back.

type GaiaPluginImpl Uses

type GaiaPluginImpl struct {
    Impl GaiaPlugin


GaiaPluginImpl represents the plugin implementation on client side.

func (*GaiaPluginImpl) GRPCClient Uses

func (p *GaiaPluginImpl) GRPCClient(context context.Context, b *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error)

GRPCClient is the passing method for the gRPC client.

func (*GaiaPluginImpl) GRPCServer Uses

func (p *GaiaPluginImpl) GRPCServer(b *plugin.GRPCBroker, s *grpc.Server) error

GRPCServer is needed here to implement hashicorp plugin.Plugin interface. Real implementation is in the plugin(s).

type GoPlugin Uses

type GoPlugin struct {
    // contains filtered or unexported fields

GoPlugin represents a single plugin instance which uses gRPC to connect to exactly one plugin.

func (*GoPlugin) Close Uses

func (p *GoPlugin) Close()

Close shutdown the plugin and kills the gRPC connection. Remember to call this when you call plugin.Connect.

func (*GoPlugin) Execute Uses

func (p *GoPlugin) Execute(j *gaia.Job) error

Execute triggers the execution of one single job for the given plugin.

func (*GoPlugin) FlushLogs Uses

func (p *GoPlugin) FlushLogs() error

FlushLogs flushes the logs.

func (*GoPlugin) GetJobs Uses

func (p *GoPlugin) GetJobs() ([]*gaia.Job, error)

GetJobs receives all implemented jobs from the given plugin.

func (*GoPlugin) Init Uses

func (p *GoPlugin) Init(command *exec.Cmd, logPath *string) error

Init prepares the log path, set's up new certificates for both gaia and plugin, and prepares the go-plugin client.

It expects the start command for the plugin and the path where the log file should be stored.

It's up to the caller to call plugin.Close to shutdown the plugin and close the gRPC connection.

func (*GoPlugin) NewPlugin Uses

func (p *GoPlugin) NewPlugin(ca security.CAAPI) Plugin

NewPlugin creates a new instance of Plugin. One Plugin instance represents one connection to a plugin.

func (*GoPlugin) Validate Uses

func (p *GoPlugin) Validate() error

Validate validates the interface of the plugin.

type Plugin Uses

type Plugin interface {
    // NewPlugin creates a new instance of plugin
    NewPlugin(ca security.CAAPI) Plugin

    // Init initializes the go-plugin client and generates a
    // new certificate pair for gaia and the plugin/pipeline.
    Init(command *exec.Cmd, logPath *string) error

    // Validate validates the plugin interface.
    Validate() error

    // Execute executes one job of a pipeline.
    Execute(j *gaia.Job) error

    // GetJobs returns all real jobs from the pipeline.
    GetJobs() ([]*gaia.Job, error)

    // FlushLogs flushes the logs.
    FlushLogs() error

    // Close closes the connection and cleans open file writes.

Plugin represents the plugin implementation.

Package plugin imports 15 packages (graph) and is imported by 3 packages. Updated 2019-10-15. Refresh now. Tools for package owners.