api

package
v0.0.0-...-6eef5cf Latest Latest
Warning

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

Go to latest
Published: Jul 29, 2014 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package api includes all types used to communicate between the various parts of the Kubernetes system.

Index

Constants

View Source
const (
	StatusSuccess = "success"
	StatusFailure = "failure"
	StatusWorking = "working"
)

Values of Status.Status

Variables

This section is empty.

Functions

func AccumulateUniquePorts

func AccumulateUniquePorts(containers []Container, accumulator map[int]bool, extract func(*Port) int) errorList

AccumulateUniquePorts runs an extraction function on each Port of each Container, accumulating the results and returning an error if any ports conflict.

func AddExternalConversion

func AddExternalConversion(name string, fn ConversionFunc)

func AddInternalConversion

func AddInternalConversion(name string, fn ConversionFunc)

func AddKnownTypes

func AddKnownTypes(version string, types ...interface{})

AddKnownTypes registers the types of the arguments to the marshaller of the package api. Encode() refuses the object unless its type is registered with AddKnownTypes.

func Decode

func Decode(data []byte) (interface{}, error)

Decode converts a JSON string back into a pointer to an api object. Deduces the type based upon the Kind field (set by encode).

func DecodeInto

func DecodeInto(data []byte, obj interface{}) error

DecodeInto parses a JSON string and stores it in obj. Returns an error if data.Kind is set and doesn't match the type of obj. Obj should be a pointer to an api type.

func Encode

func Encode(obj interface{}) (data []byte, err error)

Encode turns the given api object into an appropriate JSON string. Will return an error if the object doesn't have an embedded JSONBase. Obj may be a pointer to a struct, or a struct. If a struct, a copy will be made so that the object's Kind field can be set. If a pointer, we change the Kind field, marshal, and then set the kind field back to "". Having to keep track of the kind field makes tests very annoying, so the rule is it's set only in wire format (json), not when in native format.

func ValidateManifest

func ValidateManifest(manifest *ContainerManifest) []error

ValidateManifest tests that the specified ContainerManifest has valid data. This includes checking formatting and uniqueness. It also canonicalizes the structure by setting default values and implementing any backwards-compatibility tricks.

func ValidatePod

func ValidatePod(pod *Pod) []error

Pod tests if required fields in the pod are set.

func ValidateReplicationController

func ValidateReplicationController(controller *ReplicationController) []error

ValidateReplicationController tests if required fields in the replication controller are set.

func ValidateService

func ValidateService(service *Service) []error

ValidateService tests if required fields in the service are set.

Types

type APIObject

type APIObject struct {
	Object interface{}
}

APIObject has appropriate encoder and decoder functions, such that on the wire, it's stored as a []byte, but in memory, the contained object is accessable as an interface{} via the Get() function. Only objects having a JSONBase may be stored via APIObject. The purpose of this is to allow an API object of type known only at runtime to be embedded within other API objects.

func (APIObject) GetYAML

func (a APIObject) GetYAML() (tag string, value interface{})

GetYAML implements the yaml.Getter interface.

func (APIObject) MarshalJSON

func (a APIObject) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface.

func (*APIObject) SetYAML

func (a *APIObject) SetYAML(tag string, value interface{}) bool

SetYAML implements the yaml.Setter interface.

func (*APIObject) UnmarshalJSON

func (a *APIObject) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface.

type Container

type Container struct {
	// Required: This must be a DNS_LABEL.  Each container in a pod must
	// have a unique name.
	Name string `yaml:"name" json:"name"`
	// Required.
	Image string `yaml:"image" json:"image"`
	// Optional: Defaults to whatever is defined in the image.
	Command []string `yaml:"command,omitempty" json:"command,omitempty"`
	// Optional: Defaults to Docker's default.
	WorkingDir string   `yaml:"workingDir,omitempty" json:"workingDir,omitempty"`
	Ports      []Port   `yaml:"ports,omitempty" json:"ports,omitempty"`
	Env        []EnvVar `yaml:"env,omitempty" json:"env,omitempty"`
	// Optional: Defaults to unlimited.
	Memory int `yaml:"memory,omitempty" json:"memory,omitempty"`
	// Optional: Defaults to unlimited.
	CPU           int            `yaml:"cpu,omitempty" json:"cpu,omitempty"`
	VolumeMounts  []VolumeMount  `yaml:"volumeMounts,omitempty" json:"volumeMounts,omitempty"`
	LivenessProbe *LivenessProbe `yaml:"livenessProbe,omitempty" json:"livenessProbe,omitempty"`
}

Container represents a single container that is expected to be run on the host.

type ContainerManifest

type ContainerManifest struct {
	// Required: This must be a supported version string, such as "v1beta1".
	Version string `yaml:"version" json:"version"`
	// Required: This must be a DNS_SUBDOMAIN.
	// TODO: ID on Manifest is deprecated and will be removed in the future.
	ID         string      `yaml:"id" json:"id"`
	Volumes    []Volume    `yaml:"volumes" json:"volumes"`
	Containers []Container `yaml:"containers" json:"containers"`
}

ContainerManifest corresponds to the Container Manifest format, documented at: https://developers.google.com/compute/docs/containers/container_vms#container_manifest This is used as the representation of Kubernetes workloads.

type ConversionFunc

type ConversionFunc func(input interface{}) (output interface{}, err error)

type EmptyDirectory

type EmptyDirectory struct{}

type Endpoints

type Endpoints struct {
	Name      string
	Endpoints []string
}

Endpoints is a collection of endpoints that implement the actual service, for example: Name: "mysql", Endpoints: ["10.10.1.1:1909", "10.10.2.2:8834"]

type EnvVar

type EnvVar struct {
	// Required: This must be a C_IDENTIFIER.
	// Exactly one of the following must be set.  If both are set, prefer Name.
	// DEPRECATED: EnvVar.Key will be removed in a future version of the API.
	Name string `yaml:"name" json:"name"`
	Key  string `yaml:"key,omitempty" json:"key,omitempty"`
	// Optional: defaults to "".
	Value string `yaml:"value,omitempty" json:"value,omitempty"`
}

EnvVar represents an environment variable present in a Container

type Event

type Event struct {
	Event     string             `json:"event,omitempty"`
	Manifest  *ContainerManifest `json:"manifest,omitempty"`
	Container *Container         `json:"container,omitempty"`
	Timestamp int64              `json:"timestamp"`
}

Event is the representation of an event logged to etcd backends

type HTTPGetProbe

type HTTPGetProbe struct {
	// Path to access on the http server
	Path string `yaml:"path,omitempty" json:"path,omitempty"`
	// Name or number of the port to access on the container
	Port string `yaml:"port,omitempty" json:"port,omitempty"`
	// Host name to connect to.  Optional, default: "localhost"
	Host string `yaml:"host,omitempty" json:"host,omitempty"`
}

HTTPGetProbe describes a liveness probe based on HTTP Get requests.

type HostDirectory

type HostDirectory struct {
	Path string `yaml:"path" json:"path"`
}

Bare host directory volume.

type JSONBase

type JSONBase struct {
	Kind              string `json:"kind,omitempty" yaml:"kind,omitempty"`
	ID                string `json:"id,omitempty" yaml:"id,omitempty"`
	CreationTimestamp string `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"`
	SelfLink          string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"`
	ResourceVersion   uint64 `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"`
	APIVersion        string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
}

JSONBase is shared by all objects sent to, or returned from the client

func FindJSONBase

func FindJSONBase(obj interface{}) (*JSONBase, error)

FindJSONBase takes an arbitary api type, returns pointer to its JSONBase field. obj must be a pointer to an api type.

func FindJSONBaseRO

func FindJSONBaseRO(obj interface{}) (JSONBase, error)

FindJSONBaseRO takes an arbitary api type, return a copy of its JSONBase field. obj may be a pointer to an api type, or a non-pointer struct api type.

type LivenessProbe

type LivenessProbe struct {
	// Type of liveness probe.  Current legal values "http"
	Type string `yaml:"type,omitempty" json:"type,omitempty"`
	// HTTPGetProbe parameters, required if Type == 'http'
	HTTPGet *HTTPGetProbe `yaml:"httpGet,omitempty" json:"httpGet,omitempty"`
	// Length of time before health checking is activated.  In seconds.
	InitialDelaySeconds int64 `yaml:"initialDelaySeconds,omitempty" json:"initialDelaySeconds,omitempty"`
}

LivenessProbe describes a liveness probe to be examined to the container.

type Minion

type Minion struct {
	JSONBase `json:",inline" yaml:",inline"`
	// Queried from cloud provider, if available.
	HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"`
}

Minion is a worker node in Kubernetenes. The name of the minion according to etcd is in JSONBase.ID.

type MinionList

type MinionList struct {
	JSONBase `json:",inline" yaml:",inline"`
	Items    []Minion `json:"minions,omitempty" yaml:"minions,omitempty"`
}

MinionList is a list of minions.

type Pod

type Pod struct {
	JSONBase     `json:",inline" yaml:",inline"`
	Labels       map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
	DesiredState PodState          `json:"desiredState,omitempty" yaml:"desiredState,omitempty"`
	CurrentState PodState          `json:"currentState,omitempty" yaml:"currentState,omitempty"`
}

Pod is a collection of containers, used as either input (create, update) or as output (list, get)

type PodInfo

type PodInfo map[string]docker.Container

PodInfo contains one entry for every container with available info.

type PodList

type PodList struct {
	JSONBase `json:",inline" yaml:",inline"`
	Items    []Pod `json:"items" yaml:"items,omitempty"`
}

PodList is a list of Pods.

type PodState

type PodState struct {
	Manifest ContainerManifest `json:"manifest,omitempty" yaml:"manifest,omitempty"`
	Status   PodStatus         `json:"status,omitempty" yaml:"status,omitempty"`
	Host     string            `json:"host,omitempty" yaml:"host,omitempty"`
	HostIP   string            `json:"hostIP,omitempty" yaml:"hostIP,omitempty"`
	PodIP    string            `json:"podIP,omitempty" yaml:"podIP,omitempty"`

	// The key of this map is the *name* of the container within the manifest; it has one
	// entry per container in the manifest. The value of this map is currently the output
	// of `docker inspect`. This output format is *not* final and should not be relied
	// upon.
	// TODO: Make real decisions about what our info should look like.
	Info PodInfo `json:"info,omitempty" yaml:"info,omitempty"`
}

PodState is the state of a pod, used as either input (desired state) or output (current state)

type PodStatus

type PodStatus string

PodStatus represents a status of a pod.

const (
	PodRunning PodStatus = "Running"
	PodPending PodStatus = "Pending"
	PodStopped PodStatus = "Stopped"
)

These are the valid statuses of pods.

type PodTemplate

type PodTemplate struct {
	DesiredState PodState          `json:"desiredState,omitempty" yaml:"desiredState,omitempty"`
	Labels       map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
}

PodTemplate holds the information used for creating pods

type Port

type Port struct {
	// Optional: If specified, this must be a DNS_LABEL.  Each named port
	// in a pod must have a unique name.
	Name string `yaml:"name,omitempty" json:"name,omitempty"`
	// Optional: Defaults to ContainerPort.  If specified, this must be a
	// valid port number, 0 < x < 65536.
	HostPort int `yaml:"hostPort,omitempty" json:"hostPort,omitempty"`
	// Required: This must be a valid port number, 0 < x < 65536.
	ContainerPort int `yaml:"containerPort" json:"containerPort"`
	// Optional: Defaults to "TCP".
	Protocol string `yaml:"protocol,omitempty" json:"protocol,omitempty"`
	// Optional: What host IP to bind the external port to.
	HostIP string `yaml:"hostIP,omitempty" json:"hostIP,omitempty"`
}

Port represents a network port in a single container

type ReplicationController

type ReplicationController struct {
	JSONBase     `json:",inline" yaml:",inline"`
	DesiredState ReplicationControllerState `json:"desiredState,omitempty" yaml:"desiredState,omitempty"`
	Labels       map[string]string          `json:"labels,omitempty" yaml:"labels,omitempty"`
}

ReplicationController represents the configuration of a replication controller

type ReplicationControllerList

type ReplicationControllerList struct {
	JSONBase `json:",inline" yaml:",inline"`
	Items    []ReplicationController `json:"items,omitempty" yaml:"items,omitempty"`
}

ReplicationControllerList is a collection of replication controllers.

type ReplicationControllerState

type ReplicationControllerState struct {
	Replicas        int               `json:"replicas" yaml:"replicas"`
	ReplicaSelector map[string]string `json:"replicaSelector,omitempty" yaml:"replicaSelector,omitempty"`
	PodTemplate     PodTemplate       `json:"podTemplate,omitempty" yaml:"podTemplate,omitempty"`
}

ReplicationControllerState is the state of a replication controller, either input (create, update) or as output (list, get)

type ServerOp

type ServerOp struct {
	JSONBase `yaml:",inline" json:",inline"`
}

ServerOp is an operation delivered to API clients.

type ServerOpList

type ServerOpList struct {
	JSONBase `yaml:",inline" json:",inline"`
	Items    []ServerOp `yaml:"items,omitempty" json:"items,omitempty"`
}

ServerOpList is a list of operations, as delivered to API clients.

type Service

type Service struct {
	JSONBase `json:",inline" yaml:",inline"`
	Port     int `json:"port,omitempty" yaml:"port,omitempty"`

	// This service's labels.
	Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`

	// This service will route traffic to pods having labels matching this selector.
	Selector                   map[string]string `json:"selector,omitempty" yaml:"selector,omitempty"`
	CreateExternalLoadBalancer bool              `json:"createExternalLoadBalancer,omitempty" yaml:"createExternalLoadBalancer,omitempty"`

	// ContainerPort is the name of the port on the container to direct traffic to.
	// Optional, if unspecified use the first port on the container.
	ContainerPort util.IntOrString `json:"containerPort,omitempty" yaml:"containerPort,omitempty"`
}

Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.

type ServiceList

type ServiceList struct {
	JSONBase `json:",inline" yaml:",inline"`
	Items    []Service `json:"items" yaml:"items"`
}

ServiceList holds a list of services

type Status

type Status struct {
	JSONBase `json:",inline" yaml:",inline"`
	// One of: "success", "failure", "working" (for operations not yet completed)
	// TODO: if "working", include an operation identifier so final status can be
	// checked.
	Status string `json:"status,omitempty" yaml:"status,omitempty"`
	// Details about the status. May be an error description or an
	// operation number for later polling.
	Details string `json:"details,omitempty" yaml:"details,omitempty"`
	// Suggested HTTP return code for this status, 0 if not set.
	Code int `json:"code,omitempty" yaml:"code,omitempty"`
}

Status is a return value for calls that don't return other objects. Arguably, this could go in apiserver, but I'm including it here so clients needn't import both.

type ValidationError

type ValidationError struct {
	ErrorType  ValidationErrorEnum
	ErrorField string
	BadValue   interface{}
}

ValidationError is an implementation of the 'error' interface, which represents an error of validation.

func (ValidationError) Error

func (v ValidationError) Error() string

type ValidationErrorEnum

type ValidationErrorEnum string

ValidationErrorEnum is a type of validation error.

const (
	ErrTypeInvalid      ValidationErrorEnum = "invalid value"
	ErrTypeNotSupported ValidationErrorEnum = "unsupported value"
	ErrTypeDuplicate    ValidationErrorEnum = "duplicate value"
	ErrTypeNotFound     ValidationErrorEnum = "not found"
)

These are known errors of validation.

type Volume

type Volume struct {
	// Required: This must be a DNS_LABEL.  Each volume in a pod must have
	// a unique name.
	Name string `yaml:"name" json:"name"`
	// Source represents the location and type of a volume to mount.
	// This is optional for now. If not specified, the Volume is implied to be an EmptyDir.
	// This implied behavior is deprecated and will be removed in a future version.
	Source *VolumeSource `yaml:"source" json:"source"`
}

Volume represents a named volume in a pod that may be accessed by any containers in the pod.

type VolumeMount

type VolumeMount struct {
	// Required: This must match the Name of a Volume [above].
	Name string `yaml:"name" json:"name"`
	// Optional: Defaults to false (read-write).
	ReadOnly bool `yaml:"readOnly,omitempty" json:"readOnly,omitempty"`
	// Required.
	// Exactly one of the following must be set.  If both are set, prefer MountPath.
	// DEPRECATED: Path will be removed in a future version of the API.
	MountPath string `yaml:"mountPath,omitempty" json:"mountPath,omitempty"`
	Path      string `yaml:"path,omitempty" json:"path,omitempty"`
	// One of: "LOCAL" (local volume) or "HOST" (external mount from the host). Default: LOCAL.
	// DEPRECATED: MountType will be removed in a future version of the API.
	MountType string `yaml:"mountType,omitempty" json:"mountType,omitempty"`
}

VolumeMount describes a mounting of a Volume within a container

type VolumeSource

type VolumeSource struct {
	// Only one of the following sources may be specified
	// HostDirectory represents a pre-existing directory on the host machine that is directly
	// exposed to the container. This is generally used for system agents or other privileged
	// things that are allowed to see the host machine. Most containers will NOT need this.
	// TODO(jonesdl) We need to restrict who can use host directory mounts and
	// who can/can not mount host directories as read/write.
	HostDirectory *HostDirectory `yaml:"hostDir" json:"hostDir"`
	// EmptyDirectory represents a temporary directory that shares a pod's lifetime.
	EmptyDirectory *EmptyDirectory `yaml:"emptyDir" json:"emptyDir"`
}

type WatchEvent

type WatchEvent struct {
	// The type of the watch event; added, modified, or deleted.
	Type watch.EventType

	// For added or modified objects, this is the new object; for deleted objects,
	// it's the state of the object immediately prior to its deletion.
	Object APIObject
}

WatchEvent objects are streamed from the api server in response to a watch request.

Directories

Path Synopsis
Package v1beta1 is the v1beta1 version of the API
Package v1beta1 is the v1beta1 version of the API

Jump to

Keyboard shortcuts

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