plugin

package
v0.0.0-...-5fcb699 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2024 License: Apache-2.0 Imports: 4 Imported by: 2

Documentation

Overview

Package plugin contains public API of the plugin system.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AdmissionPlugin

type AdmissionPlugin interface {
	// CheckAdmission enqueues an admission check to be performed by the plugin.
	//
	// The plugin will be asked if it's OK to deploy a package with the given pin
	// hosted on the CIPD service used by the running CIPD client.
	//
	// Returns a promise which is resolved when the result is available. If such
	// check is already pending (or has been done before), returns an existing
	// (perhaps already resolved) promise.
	CheckAdmission(pin common.Pin) Promise

	// ClearCache drops all resolved promises to free up some memory.
	ClearCache()

	// Close terminates the plugin (if it was running) and aborts all pending
	// checks.
	//
	// Tries to gracefully terminate the plugin, killing it with SIGKILL on the
	// context timeout or after 5 sec.
	//
	// Note that calling Close is not necessary if the plugin host itself
	// terminates. The plugin subprocess will be terminated by the host in this
	// case.
	Close(ctx context.Context)

	// Executable is a path to this plugin's executable.
	Executable() string
}

AdmissionPlugin is used by the CIPD client to check if it is OK to deploy a package.

type Config

type Config struct {
	ServiceURL string           // URL of the CIPD repository ("https://...") used by the client
	Repository RepositoryClient // a subset of api.RepositoryClient available to plugins
}

Config is used to initialize the plugin host.

type Host

type Host interface {
	// Initialize is called when the CIPD client starts before any other call.
	Initialize(cfg Config) error

	// Close is called when the CIPD client closes.
	Close(ctx context.Context)

	// NewAdmissionPlugin returns a handle to an admission plugin.
	//
	// The returned AdmissionPlugin can be used right away to enqueue admission
	// checks. The plugin subprocess will lazily be started on the first
	// CheckAdmission call. All enqueued checks will eventually be processed by
	// the plugin or rejected if the plugin fails to start.
	NewAdmissionPlugin(cmdLine []string) (AdmissionPlugin, error)
}

Host is used by the CIPD client to launch and communicate with plugins.

Use host.Host for the production implementation that uses out-of-process plugins.

type Promise

type Promise interface {
	// Wait blocks until the promise is fulfilled or the context expires.
	Wait(ctx context.Context) error
}

Promise can be used to wait for a status of a check.

type RepositoryClient

type RepositoryClient interface {
	// Lists metadata entries attached to an instance.
	ListMetadata(ctx context.Context, in *api.ListMetadataRequest, opts ...grpc.CallOption) (*api.ListMetadataResponse, error)
}

RepositoryClient is a subset of api.RepositoryClient available to plugins.

Directories

Path Synopsis
Package host implements the plugin hosting functionality.
Package host implements the plugin hosting functionality.
Package plugins contains shared plugin-side functionality.
Package plugins contains shared plugin-side functionality.
admission
Package admission contains API for writing admission plugins.
Package admission contains API for writing admission plugins.
Package protocol hosts protobuf messages for the CIPD plugin system.
Package protocol hosts protobuf messages for the CIPD plugin system.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL