Documentation ¶
Index ¶
- type CreateOpt
- type EndpointResolver
- type Event
- type EventCreate
- type EventDisable
- type EventEnable
- type EventRemove
- type Executor
- type ExecutorCreator
- type Manager
- func (pm *Manager) CreateFromContext(ctx context.Context, tarCtx io.ReadCloser, options *types.PluginCreateOptions) (err error)
- func (pm *Manager) Disable(refOrID string, config *types.PluginDisableConfig) error
- func (pm *Manager) Enable(refOrID string, config *types.PluginEnableConfig) error
- func (pm *Manager) GC()
- func (pm *Manager) Get(idOrName string) (*v2.Plugin, error)
- func (pm *Manager) HandleExitEvent(id string) error
- func (pm *Manager) Inspect(refOrID string) (tp *types.Plugin, err error)
- func (pm *Manager) List(pluginFilters filters.Args) ([]types.Plugin, error)
- func (pm *Manager) Privileges(ctx context.Context, ref reference.Named, metaHeader http.Header, ...) (types.PluginPrivileges, error)
- func (pm *Manager) Pull(ctx context.Context, ref reference.Named, name string, metaHeader http.Header, ...) (err error)
- func (pm *Manager) Push(ctx context.Context, name string, metaHeader http.Header, ...) error
- func (pm *Manager) Remove(name string, config *types.PluginRmConfig) error
- func (pm *Manager) Set(name string, args []string) error
- func (pm *Manager) Shutdown()
- func (pm *Manager) SubscribeEvents(buffer int, watchEvents ...Event) (eventCh <-chan interface{}, cancel func())
- func (pm *Manager) Upgrade(ctx context.Context, ref reference.Named, name string, metaHeader http.Header, ...) (err error)
- type ManagerConfig
- type SpecOpt
- type Store
- func (ps *Store) Add(p *v2.Plugin) error
- func (ps *Store) CallHandler(p *v2.Plugin)
- func (ps *Store) Get(name, capability string, mode int) (plugingetter.CompatPlugin, error)
- func (ps *Store) GetAll() map[string]*v2.Plugin
- func (ps *Store) GetAllByCap(capability string) ([]plugingetter.CompatPlugin, error)
- func (ps *Store) GetAllManagedPluginsByCap(capability string) []plugingetter.CompatPlugin
- func (ps *Store) GetV2Plugin(refOrID string) (*v2.Plugin, error)
- func (ps *Store) Handle(capability string, callback func(string, *plugins.Client))
- func (ps *Store) RegisterRuntimeOpt(cap string, opts ...SpecOpt)
- func (ps *Store) Remove(p *v2.Plugin)
- func (ps *Store) SetAll(plugins map[string]*v2.Plugin)
- func (ps *Store) SetState(p *v2.Plugin, state bool)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CreateOpt ¶
CreateOpt is used to configure specific plugin details when created
func WithEnv ¶
WithEnv is a CreateOpt that passes the user-provided environment variables to the plugin container, de-duplicating variables with the same names case sensitively and only appends valid key=value pairs
func WithSwarmService ¶
WithSwarmService is a CreateOpt that flags the passed in a plugin as a plugin managed by swarm
type EndpointResolver ¶
type EndpointResolver interface {
LookupPullEndpoints(hostname string) (endpoints []registry.APIEndpoint, err error)
}
EndpointResolver provides looking up registry endpoints for pulling.
type Event ¶
type Event interface {
// contains filtered or unexported methods
}
Event is emitted for actions performed on the plugin manager
type EventCreate ¶
EventCreate is an event which is emitted when a plugin is created This is either by pull or create from context.
Use the `Interfaces` field to match only plugins that implement a specific interface. These are matched against using "or" logic. If no interfaces are listed, all are matched.
type EventDisable ¶
EventDisable is an event that is emitted when a plugin is disabled It maches on the passed in plugin's ID only.
type EventEnable ¶
EventEnable is an event that is emitted when a plugin is disabled It maches on the passed in plugin's ID only.
type EventRemove ¶
EventRemove is an event which is emitted when a plugin is removed It maches on the passed in plugin's ID only.
type Executor ¶
type Executor interface { Create(id string, spec specs.Spec, stdout, stderr io.WriteCloser) error IsRunning(id string) (bool, error) Restore(id string, stdout, stderr io.WriteCloser) (alive bool, err error) Signal(id string, signal syscall.Signal) error }
Executor is the interface that the plugin manager uses to interact with for starting/stopping plugins
type ExecutorCreator ¶
ExecutorCreator is used in the manager config to pass in an `Executor`
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager controls the plugin subsystem.
func NewManager ¶
func NewManager(config ManagerConfig) (*Manager, error)
NewManager returns a new plugin manager.
func (*Manager) CreateFromContext ¶
func (pm *Manager) CreateFromContext(ctx context.Context, tarCtx io.ReadCloser, options *types.PluginCreateOptions) (err error)
CreateFromContext creates a plugin from the given pluginDir which contains both the rootfs and the config.json and a repoName with optional tag.
func (*Manager) Disable ¶
func (pm *Manager) Disable(refOrID string, config *types.PluginDisableConfig) error
Disable deactivates a plugin. This means resources (volumes, networks) cant use them.
func (*Manager) Enable ¶
func (pm *Manager) Enable(refOrID string, config *types.PluginEnableConfig) error
Enable activates a plugin, which implies that they are ready to be used by containers.
func (*Manager) GC ¶
func (pm *Manager) GC()
GC cleans up unreferenced blobs. This is recommended to run in a goroutine
func (*Manager) HandleExitEvent ¶
HandleExitEvent is called when the executor receives the exit event In the future we may change this, but for now all we care about is the exit event.
func (*Manager) Privileges ¶
func (pm *Manager) Privileges(ctx context.Context, ref reference.Named, metaHeader http.Header, authConfig *types.AuthConfig) (types.PluginPrivileges, error)
Privileges pulls a plugin config and computes the privileges required to install it.
func (*Manager) Pull ¶
func (pm *Manager) Pull(ctx context.Context, ref reference.Named, name string, metaHeader http.Header, authConfig *types.AuthConfig, privileges types.PluginPrivileges, outStream io.Writer, opts ...CreateOpt) (err error)
Pull pulls a plugin, check if the correct privileges are provided and install the plugin.
TODO: replace reference package usage with simpler url.Parse semantics
func (*Manager) Push ¶
func (pm *Manager) Push(ctx context.Context, name string, metaHeader http.Header, authConfig *types.AuthConfig, outStream io.Writer) error
Push pushes a plugin to the registry.
func (*Manager) Remove ¶
func (pm *Manager) Remove(name string, config *types.PluginRmConfig) error
Remove deletes plugin's root directory.
func (*Manager) Shutdown ¶
func (pm *Manager) Shutdown()
Shutdown stops all plugins and called during daemon shutdown.
func (*Manager) SubscribeEvents ¶
func (pm *Manager) SubscribeEvents(buffer int, watchEvents ...Event) (eventCh <-chan interface{}, cancel func())
SubscribeEvents provides an event channel to listen for structured events from the plugin manager actions, CRUD operations. The caller must call the returned `cancel()` function once done with the channel or this will leak resources.
func (*Manager) Upgrade ¶
func (pm *Manager) Upgrade(ctx context.Context, ref reference.Named, name string, metaHeader http.Header, authConfig *types.AuthConfig, privileges types.PluginPrivileges, outStream io.Writer) (err error)
Upgrade upgrades a plugin
TODO: replace reference package usage with simpler url.Parse semantics
type ManagerConfig ¶
type ManagerConfig struct { Store *Store // remove RegistryService EndpointResolver LiveRestoreEnabled bool // TODO: remove LogPluginEvent eventLogger Root string ExecRoot string CreateExecutor ExecutorCreator AuthzMiddleware *authorization.Middleware }
ManagerConfig defines configuration needed to start new manager.
type SpecOpt ¶
SpecOpt is used for subsystems that need to modify the runtime spec of a plugin
func WithSpecMounts ¶
WithSpecMounts is a SpecOpt which appends the provided mounts to the runtime spec
type Store ¶
Store manages the plugin inventory in memory and on-disk
func (*Store) Add ¶
Add adds a plugin to memory and plugindb. An error will be returned if there is a collision.
func (*Store) CallHandler ¶
CallHandler calls the registered callback. It is invoked during plugin enable.
func (*Store) Get ¶
func (ps *Store) Get(name, capability string, mode int) (plugingetter.CompatPlugin, error)
Get returns an enabled plugin matching the given name and capability.
func (*Store) GetAllByCap ¶
func (ps *Store) GetAllByCap(capability string) ([]plugingetter.CompatPlugin, error)
GetAllByCap returns a list of enabled plugins matching the given capability.
func (*Store) GetAllManagedPluginsByCap ¶
func (ps *Store) GetAllManagedPluginsByCap(capability string) []plugingetter.CompatPlugin
GetAllManagedPluginsByCap returns a list of managed plugins matching the given capability.
func (*Store) GetV2Plugin ¶
GetV2Plugin retrieves a plugin by name, id or partial ID.
func (*Store) Handle ¶
Handle sets a callback for a given capability. It is only used by network and ipam drivers during plugin registration. The callback registers the driver with the subsystem (network, ipam).
func (*Store) RegisterRuntimeOpt ¶
RegisterRuntimeOpt stores a list of SpecOpts for the provided capability. These options are applied to the runtime spec before a plugin is started for the specified capability.