namespaces

package
v0.0.0-...-378b2a3 Latest Latest
Warning

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

Go to latest
Published: Dec 2, 2019 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package namespaces provides tools for working with namespaces across containerd.

Namespaces collect resources such as containers and images, into a unique identifier space. This means that two applications can use the same identifiers and not conflict while using containerd.

This package can be used to ensure that client and server functions correctly store the namespace on the context.

Index

Constants

View Source
const (
	// NamespaceEnvVar is the environment variable key name
	NamespaceEnvVar = "CONTAINERD_NAMESPACE"
	// Default is the name of the default namespace
	Default = "default"
)
View Source
const (
	// GRPCHeader defines the header name for specifying a containerd namespace.
	GRPCHeader = "containerd-namespace"
)
View Source
const (
	// TTRPCHeader defines the header name for specifying a containerd namespace
	TTRPCHeader = "containerd-namespace-ttrpc"
)

Variables

This section is empty.

Functions

func Namespace

func Namespace(ctx context.Context) (string, bool)

Namespace returns the namespace from the context.

The namespace is not guaranteed to be valid.

func NamespaceFromEnv

func NamespaceFromEnv(ctx context.Context) context.Context

NamespaceFromEnv uses the namespace defined in CONTAINERD_NAMESPACE or default

func NamespaceRequired

func NamespaceRequired(ctx context.Context) (string, error)

NamespaceRequired returns the valid namespace from the context or an error.

func Validate

func Validate(s string) error

Validate returns nil if the string s is a valid namespace.

To allow such namespace identifiers to be used across various contexts safely, the character set has been restricted to that defined for domains in RFC 1035, section 2.3.1. This will make namespace identifiers safe for use across networks, filesystems and other media.

The identifier specification departs from RFC 1035 in that it allows "labels" to start with number and only enforces a total length restriction of 76 characters.

While the character set may be expanded in the future, namespace identifiers are guaranteed to be safely used as filesystem path components.

For the most part, this doesn't need to be called directly when using the context-oriented functions.

func WithNamespace

func WithNamespace(ctx context.Context, namespace string) context.Context

WithNamespace sets a given namespace on the context

Types

type DeleteInfo

type DeleteInfo struct {
	// Name of the namespace
	Name string
}

DeleteInfo specifies information for the deletion of a namespace

type DeleteOpts

type DeleteOpts func(context.Context, *DeleteInfo) error

DeleteOpts allows the caller to set options for namespace deletion

type Store

type Store interface {
	Create(ctx context.Context, namespace string, labels map[string]string) error
	Labels(ctx context.Context, namespace string) (map[string]string, error)
	SetLabel(ctx context.Context, namespace, key, value string) error
	List(ctx context.Context) ([]string, error)

	// Delete removes the namespace. The namespace must be empty to be deleted.
	Delete(ctx context.Context, namespace string, opts ...DeleteOpts) error
}

Store provides introspection about namespaces.

Note that these are slightly different than other objects, which are record oriented. A namespace is really just a name and a set of labels. Objects that belong to a namespace are returned when the namespace is assigned to a given context.

Jump to

Keyboard shortcuts

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