libcni

package
v1.2.2 Latest Latest
Warning

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

Go to latest
Published: Jun 24, 2024 License: Apache-2.0 Imports: 14 Imported by: 323

Documentation

Index

Constants

View Source
const (
	CNICacheV1 = "cniCacheV1"
)

Variables

View Source
var (
	CacheDir = "/var/lib/cni"
	// slightly awkward wording to preserve anyone matching on error strings
	ErrorCheckNotSupp = fmt.Errorf("does not support the CHECK command")
)

Functions

func ConfFiles

func ConfFiles(dir string, extensions []string) ([]string, error)

Types

type CNI

type CNI interface {
	AddNetworkList(ctx context.Context, net *NetworkConfigList, rt *RuntimeConf) (types.Result, error)
	CheckNetworkList(ctx context.Context, net *NetworkConfigList, rt *RuntimeConf) error
	DelNetworkList(ctx context.Context, net *NetworkConfigList, rt *RuntimeConf) error
	GetNetworkListCachedResult(net *NetworkConfigList, rt *RuntimeConf) (types.Result, error)
	GetNetworkListCachedConfig(net *NetworkConfigList, rt *RuntimeConf) ([]byte, *RuntimeConf, error)

	AddNetwork(ctx context.Context, net *NetworkConfig, rt *RuntimeConf) (types.Result, error)
	CheckNetwork(ctx context.Context, net *NetworkConfig, rt *RuntimeConf) error
	DelNetwork(ctx context.Context, net *NetworkConfig, rt *RuntimeConf) error
	GetNetworkCachedResult(net *NetworkConfig, rt *RuntimeConf) (types.Result, error)
	GetNetworkCachedConfig(net *NetworkConfig, rt *RuntimeConf) ([]byte, *RuntimeConf, error)

	ValidateNetworkList(ctx context.Context, net *NetworkConfigList) ([]string, error)
	ValidateNetwork(ctx context.Context, net *NetworkConfig) ([]string, error)

	GCNetworkList(ctx context.Context, net *NetworkConfigList, args *GCArgs) error
	GetStatusNetworkList(ctx context.Context, net *NetworkConfigList) error

	GetCachedAttachments(containerID string) ([]*NetworkAttachment, error)

	GetVersionInfo(ctx context.Context, pluginType string) (version.PluginInfo, error)
}

type CNIConfig

type CNIConfig struct {
	Path []string
	// contains filtered or unexported fields
}

func NewCNIConfig added in v0.7.0

func NewCNIConfig(path []string, exec invoke.Exec) *CNIConfig

NewCNIConfig returns a new CNIConfig object that will search for plugins in the given paths and use the given exec interface to run those plugins, or if the exec interface is not given, will use a default exec handler.

func NewCNIConfigWithCacheDir added in v0.8.0

func NewCNIConfigWithCacheDir(path []string, cacheDir string, exec invoke.Exec) *CNIConfig

NewCNIConfigWithCacheDir returns a new CNIConfig object that will search for plugins in the given paths use the given exec interface to run those plugins, or if the exec interface is not given, will use a default exec handler. The given cache directory will be used for temporary data storage when needed.

func (*CNIConfig) AddNetwork

func (c *CNIConfig) AddNetwork(ctx context.Context, net *NetworkConfig, rt *RuntimeConf) (types.Result, error)

AddNetwork executes the plugin with the ADD command

func (*CNIConfig) AddNetworkList added in v0.5.0

func (c *CNIConfig) AddNetworkList(ctx context.Context, list *NetworkConfigList, rt *RuntimeConf) (types.Result, error)

AddNetworkList executes a sequence of plugins with the ADD command

func (*CNIConfig) CheckNetwork added in v0.7.0

func (c *CNIConfig) CheckNetwork(ctx context.Context, net *NetworkConfig, rt *RuntimeConf) error

CheckNetwork executes the plugin with the CHECK command

func (*CNIConfig) CheckNetworkList added in v0.7.0

func (c *CNIConfig) CheckNetworkList(ctx context.Context, list *NetworkConfigList, rt *RuntimeConf) error

CheckNetworkList executes a sequence of plugins with the CHECK command

func (*CNIConfig) DelNetwork

func (c *CNIConfig) DelNetwork(ctx context.Context, net *NetworkConfig, rt *RuntimeConf) error

DelNetwork executes the plugin with the DEL command

func (*CNIConfig) DelNetworkList added in v0.5.0

func (c *CNIConfig) DelNetworkList(ctx context.Context, list *NetworkConfigList, rt *RuntimeConf) error

DelNetworkList executes a sequence of plugins with the DEL command

func (*CNIConfig) GCNetworkList added in v1.2.0

func (c *CNIConfig) GCNetworkList(ctx context.Context, list *NetworkConfigList, args *GCArgs) error

GCNetworkList will do two things - dump the list of cached attachments, and issue deletes as necessary - issue a GC to the underlying plugins (if the version is high enough)

func (*CNIConfig) GetCachedAttachments added in v1.2.0

func (c *CNIConfig) GetCachedAttachments(containerID string) ([]*NetworkAttachment, error)

GetCachedAttachments returns a list of network attachments from the cache. The returned list will be filtered by the containerID if the value is not empty.

func (*CNIConfig) GetNetworkCachedConfig added in v0.8.0

func (c *CNIConfig) GetNetworkCachedConfig(net *NetworkConfig, rt *RuntimeConf) ([]byte, *RuntimeConf, error)

GetNetworkCachedConfig copies the input RuntimeConf to output RuntimeConf with fields updated with info from the cached Config.

func (*CNIConfig) GetNetworkCachedResult added in v0.7.0

func (c *CNIConfig) GetNetworkCachedResult(net *NetworkConfig, rt *RuntimeConf) (types.Result, error)

GetNetworkCachedResult returns the cached Result of the previous AddNetwork() operation for a network, or an error.

func (*CNIConfig) GetNetworkListCachedConfig added in v0.8.0

func (c *CNIConfig) GetNetworkListCachedConfig(list *NetworkConfigList, rt *RuntimeConf) ([]byte, *RuntimeConf, error)

GetNetworkListCachedConfig copies the input RuntimeConf to output RuntimeConf with fields updated with info from the cached Config.

func (*CNIConfig) GetNetworkListCachedResult added in v0.7.0

func (c *CNIConfig) GetNetworkListCachedResult(list *NetworkConfigList, rt *RuntimeConf) (types.Result, error)

GetNetworkListCachedResult returns the cached Result of the previous AddNetworkList() operation for a network list, or an error.

func (*CNIConfig) GetStatusNetworkList added in v1.2.0

func (c *CNIConfig) GetStatusNetworkList(ctx context.Context, list *NetworkConfigList) error

func (*CNIConfig) GetVersionInfo added in v0.4.0

func (c *CNIConfig) GetVersionInfo(ctx context.Context, pluginType string) (version.PluginInfo, error)

GetVersionInfo reports which versions of the CNI spec are supported by the given plugin.

func (*CNIConfig) ValidateNetwork added in v0.7.0

func (c *CNIConfig) ValidateNetwork(ctx context.Context, net *NetworkConfig) ([]string, error)

ValidateNetwork checks that a configuration is reasonably valid. It uses the same logic as ValidateNetworkList) Returns a list of capabilities

func (*CNIConfig) ValidateNetworkList added in v0.7.0

func (c *CNIConfig) ValidateNetworkList(ctx context.Context, list *NetworkConfigList) ([]string, error)

ValidateNetworkList checks that a configuration is reasonably valid. - all the specified plugins exist on disk - every plugin supports the desired version.

Returns a list of all capabilities supported by the configuration, or error

type GCArgs added in v1.2.0

type GCArgs struct {
	ValidAttachments []types.GCAttachment
}

type NetworkAttachment added in v1.2.0

type NetworkAttachment struct {
	ContainerID    string
	Network        string
	IfName         string
	Config         []byte
	NetNS          string
	CniArgs        [][2]string
	CapabilityArgs map[string]interface{}
}

type NetworkConfig

type NetworkConfig struct {
	Network *types.NetConf
	Bytes   []byte
}

func ConfFromBytes

func ConfFromBytes(bytes []byte) (*NetworkConfig, error)

func ConfFromFile

func ConfFromFile(filename string) (*NetworkConfig, error)

func InjectConf added in v0.4.0

func InjectConf(original *NetworkConfig, newValues map[string]interface{}) (*NetworkConfig, error)

func LoadConf

func LoadConf(dir, name string) (*NetworkConfig, error)

type NetworkConfigList added in v0.5.0

type NetworkConfigList struct {
	Name         string
	CNIVersion   string
	DisableCheck bool
	DisableGC    bool
	Plugins      []*NetworkConfig
	Bytes        []byte
}

func ConfListFromBytes added in v0.5.0

func ConfListFromBytes(bytes []byte) (*NetworkConfigList, error)

func ConfListFromConf added in v0.5.0

func ConfListFromConf(original *NetworkConfig) (*NetworkConfigList, error)

ConfListFromConf "upconverts" a network config in to a NetworkConfigList, with the single network as the only entry in the list.

func ConfListFromFile added in v0.5.0

func ConfListFromFile(filename string) (*NetworkConfigList, error)

func LoadConfList added in v0.5.0

func LoadConfList(dir, name string) (*NetworkConfigList, error)

type NoConfigsFoundError added in v0.5.0

type NoConfigsFoundError struct {
	Dir string
}

func (NoConfigsFoundError) Error added in v0.5.2

func (e NoConfigsFoundError) Error() string

type NotFoundError added in v0.5.0

type NotFoundError struct {
	Dir  string
	Name string
}

func (NotFoundError) Error added in v0.5.0

func (e NotFoundError) Error() string

type RuntimeConf

type RuntimeConf struct {
	ContainerID string
	NetNS       string
	IfName      string
	Args        [][2]string
	// A dictionary of capability-specific data passed by the runtime
	// to plugins as top-level keys in the 'runtimeConfig' dictionary
	// of the plugin's stdin data.  libcni will ensure that only keys
	// in this map which match the capabilities of the plugin are passed
	// to the plugin
	CapabilityArgs map[string]interface{}

	// DEPRECATED. Will be removed in a future release.
	CacheDir string
}

A RuntimeConf holds the arguments to one invocation of a CNI plugin excepting the network configuration, with the nested exception that the `runtimeConfig` from the network configuration is included here.

Jump to

Keyboard shortcuts

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