Help us shape the future of Go! Take the 2026 Go Developer Survey

bundle

package
v0.34.0 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2021 License: Apache-2.0 Imports: 24 Imported by: 30

Documentation

Overview

Package bundle implements bundle loading.

Index

Constants

View Source
const Name = "bundle"

Name identifies the plugin on manager.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	download.Config // Deprecated: Use `Bundles` map instead

	Bundles map[string]*Source

	Name    string  `json:"name"`    // Deprecated: Use `Bundles` map instead
	Service string  `json:"service"` // Deprecated: Use `Bundles` map instead
	Prefix  *string `json:"prefix"`  // Deprecated: Use `Bundles` map instead
}

Config represents the configuration of the plugin. The Config can define a single bundle source or a map of `Source` objects defining where/how to download bundles. The older single bundle configuration is deprecated and will be removed in the future in favor of the `Bundles` map.

func ParseBundlesConfig added in v0.13.0

func ParseBundlesConfig(config []byte, services []string) (*Config, error)

ParseBundlesConfig validates the config and injects default values for the defined `bundles`. This expects a map of bundle names to resource configurations.

func ParseConfig added in v0.10.2

func ParseConfig(config []byte, services []string) (*Config, error)

ParseConfig validates the config and injects default values. This is for the legacy single bundle configuration. This will add the bundle to the `Bundles` map to provide compatibility with newer clients. Deprecated: Use `ParseBundlesConfig` with `bundles` OPA config option instead

func (*Config) IsMultiBundle added in v0.13.0

func (c *Config) IsMultiBundle() bool

IsMultiBundle returns whether or not the config is the newer multi-bundle style config that uses `bundles` instead of top level bundle information. If/when we drop support for the older style config we can remove this too.

type ConfigBuilder added in v0.22.0

type ConfigBuilder struct {
	// contains filtered or unexported fields
}

ConfigBuilder assists in the construction of the plugin configuration.

func NewConfigBuilder added in v0.22.0

func NewConfigBuilder() *ConfigBuilder

NewConfigBuilder returns a new ConfigBuilder to build and parse the bundle config

func (*ConfigBuilder) Parse added in v0.22.0

func (b *ConfigBuilder) Parse() (*Config, error)

Parse validates the config and injects default values for the defined `bundles`.

func (*ConfigBuilder) WithBytes added in v0.22.0

func (b *ConfigBuilder) WithBytes(config []byte) *ConfigBuilder

WithBytes sets the raw bundle config

func (*ConfigBuilder) WithKeyConfigs added in v0.22.0

func (b *ConfigBuilder) WithKeyConfigs(keys map[string]*keys.Config) *ConfigBuilder

WithKeyConfigs sets the public keys to verify a signed bundle

func (*ConfigBuilder) WithServices added in v0.22.0

func (b *ConfigBuilder) WithServices(services []string) *ConfigBuilder

WithServices sets the services that implement control plane APIs

func (*ConfigBuilder) WithTriggerMode added in v0.32.0

func (b *ConfigBuilder) WithTriggerMode(trigger *plugins.TriggerMode) *ConfigBuilder

WithTriggerMode sets the plugin trigger mode

type Loader added in v0.32.0

type Loader interface {
	Start(context.Context)
	Stop(context.Context)
	Trigger(context.Context) error
	SetCache(string)
	ClearCache()
}

Loader defines the interface that the bundle plugin uses to control bundle loading via HTTP, disk, etc.

type Plugin

type Plugin struct {
	// contains filtered or unexported fields
}

Plugin implements bundle activation.

func Lookup added in v0.10.2

func Lookup(manager *plugins.Manager) *Plugin

Lookup returns the bundle plugin registered with the manager.

func New

func New(parsedConfig *Config, manager *plugins.Manager) *Plugin

New returns a new Plugin with the given config.

func (*Plugin) Config added in v0.13.0

func (p *Plugin) Config() *Config

Config returns the plugins current configuration

func (*Plugin) Loaders added in v0.32.0

func (p *Plugin) Loaders() map[string]Loader

Loaders returns the map of bundle loaders configured on this plugin.

func (*Plugin) Reconfigure added in v0.10.2

func (p *Plugin) Reconfigure(ctx context.Context, config interface{})

Reconfigure notifies the plugin that it's configuration has changed. Any bundle configs that have changed or been added/removed will take affect.

func (*Plugin) Register

func (p *Plugin) Register(name interface{}, listener func(Status))

Register a listener to receive status updates. The name must be comparable. The listener will receive a status update for each bundle configured, they are not going to be aggregated. For all status updates use `RegisterBulkListener`.

func (*Plugin) RegisterBulkListener added in v0.13.0

func (p *Plugin) RegisterBulkListener(name interface{}, listener func(map[string]*Status))

RegisterBulkListener registers a listener to receive bulk (aggregated) status updates. The name must be comparable.

func (*Plugin) Start

func (p *Plugin) Start(ctx context.Context) error

Start runs the plugin. The plugin will periodically try to download bundles from the configured service. When a new bundle is downloaded, the data and policies are extracted and inserted into storage.

func (*Plugin) Stop

func (p *Plugin) Stop(ctx context.Context)

Stop stops the plugin.

func (*Plugin) Trigger added in v0.32.0

func (p *Plugin) Trigger(ctx context.Context) error

Trigger triggers a bundle download on all configured bundles.

func (*Plugin) Unregister

func (p *Plugin) Unregister(name interface{})

Unregister a listener to stop receiving status updates.

func (*Plugin) UnregisterBulkListener added in v0.13.0

func (p *Plugin) UnregisterBulkListener(name interface{})

UnregisterBulkListener unregisters a listener to stop receiving aggregated status updates.

type Source added in v0.13.0

type Source struct {
	download.Config

	Service        string                     `json:"service"`
	Resource       string                     `json:"resource"`
	Signing        *bundle.VerificationConfig `json:"signing"`
	Persist        bool                       `json:"persist"`
	SizeLimitBytes int64                      `json:"size_limit_bytes"`
}

Source is a configured bundle source to download bundles from

type Status

type Status struct {
	Name                     string          `json:"name"`
	ActiveRevision           string          `json:"active_revision,omitempty"`
	LastSuccessfulActivation time.Time       `json:"last_successful_activation,omitempty"`
	LastSuccessfulDownload   time.Time       `json:"last_successful_download,omitempty"`
	LastSuccessfulRequest    time.Time       `json:"last_successful_request,omitempty"`
	LastRequest              time.Time       `json:"last_request,omitempty"`
	Code                     string          `json:"code,omitempty"`
	Message                  string          `json:"message,omitempty"`
	Errors                   []error         `json:"errors,omitempty"`
	Metrics                  metrics.Metrics `json:"metrics,omitempty"`
}

Status represents the status of processing a bundle.

func (*Status) SetActivateSuccess added in v0.10.2

func (s *Status) SetActivateSuccess(revision string)

SetActivateSuccess updates the status object to reflect a successful activation.

func (*Status) SetDownloadSuccess added in v0.10.2

func (s *Status) SetDownloadSuccess()

SetDownloadSuccess updates the status object to reflect a successful download.

func (*Status) SetError added in v0.10.2

func (s *Status) SetError(err error)

SetError updates the status object to reflect a failure to download or activate. If err is nil, the error status is cleared.

func (*Status) SetRequest added in v0.17.0

func (s *Status) SetRequest()

SetRequest updates the status object to reflect a download attempt.

Jump to

Keyboard shortcuts

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