package namespaces

import "github.com/containerd/containerd/namespaces"

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

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

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 namepace 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 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) 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.

Source Files

context.go grpc.go store.go validate.go

Version
v1.1.0-rc.0
Published
Mar 27, 2018
Platform
js/wasm
Imports
7 packages
Last checked
1 hour ago

Tools for package owners.