Documentation ¶
Overview ¶
A set of common functions needed by cmd/kubectl and pkg/kubectl packages.
Package kubectl is a set of libraries that are used by the kubectl command line tool. They are separated out into a library to support unit testing. Most functionality should be included in this package, and the main kubectl should really just be an entry point.
A set of common functions needed by cmd/kubectl and pkg/kubectl packages.
Index ¶
- Constants
- func AbortRollingUpdate(c *RollingUpdaterConfig)
- func AddDeploymentKeyToReplicationController(oldRc *api.ReplicationController, client client.Interface, ...) (*api.ReplicationController, error)
- func AddJsonFilenameFlag(cmd *cobra.Command, value *util.StringList, usage string)
- func CreateNewControllerFromCurrentController(c *client.Client, namespace, oldName, newName, image, deploymentKey string) (*api.ReplicationController, error)
- func DescribableResources() []string
- func DescribeEvents(el *api.EventList, w io.Writer)
- func FindSourceController(r RollingUpdaterClient, namespace, name string) (*api.ReplicationController, error)
- func GetApiVersions(w io.Writer, kubeClient client.Interface)
- func GetClientVersion(w io.Writer)
- func GetNextControllerAnnotation(rc *api.ReplicationController) (string, bool)
- func GetVersion(w io.Writer, kubeClient client.Interface)
- func IsNoSuchReaperError(err error) bool
- func LoadExistingNextReplicationController(c *client.Client, namespace, newName string) (*api.ReplicationController, error)
- func MakeLabels(labels map[string]string) string
- func MakeParams(cmd *cobra.Command, params []GeneratorParam) map[string]string
- func ParseLabels(labelString string) (map[string]string, error)
- func Rename(c RollingUpdaterClient, rc *api.ReplicationController, newName string) error
- func ResizeCondition(r Resizer, precondition *ResizePrecondition, namespace, name string, ...) wait.ConditionFunc
- func SetNextControllerAnnotation(rc *api.ReplicationController, name string)
- func UpdateExistingReplicationController(c client.Interface, oldRc *api.ReplicationController, ...) (*api.ReplicationController, error)
- func ValidateParams(paramSpec []GeneratorParam, params map[string]string) error
- func WatchLoop(w watch.Interface, fn func(watch.Event) error)
- type BasicReplicationController
- type ControllerResizeError
- type ControllerResizeErrorType
- type Describer
- type Describers
- type ErrNoDescriber
- type Generator
- type GeneratorParam
- type HumanReadablePrinter
- type JSONPrinter
- type LimitRangeDescriber
- type NamespaceInfo
- type NoSuchReaperError
- type NodeDescriber
- type ObjectDescriber
- type OutputVersionMapper
- type PersistentVolumeClaimDescriber
- type PersistentVolumeDescriber
- type PodDescriber
- type PodReaper
- type PreconditionError
- type ProxyServer
- type RESTClient
- type Reaper
- type ReplicationControllerDescriber
- type ReplicationControllerReaper
- type ReplicationControllerResizer
- type ResizePrecondition
- type Resizer
- type ResizerClient
- type ResourcePrinter
- type ResourcePrinterFunc
- type ResourceQuotaDescriber
- type RetryParams
- type RollingUpdater
- type RollingUpdaterCleanupPolicy
- type RollingUpdaterClient
- type RollingUpdaterConfig
- type SecretDescriber
- type ServiceAccountDescriber
- type ServiceDescriber
- type ServiceGenerator
- type ServiceReaper
- type ShortcutExpander
- type SortableEvents
- type SortableResourceNames
- type TemplatePrinter
- type VersionedPrinter
- type YAMLPrinter
Constants ¶
const MaxRetries = 3
Variables ¶
This section is empty.
Functions ¶
func AbortRollingUpdate ¶
func AbortRollingUpdate(c *RollingUpdaterConfig)
func AddDeploymentKeyToReplicationController ¶
func AddDeploymentKeyToReplicationController(oldRc *api.ReplicationController, client client.Interface, deploymentKey, deploymentValue, namespace string, out io.Writer) (*api.ReplicationController, error)
func AddJsonFilenameFlag ¶
func AddJsonFilenameFlag(cmd *cobra.Command, value *util.StringList, usage string)
func DescribableResources ¶
func DescribableResources() []string
List of all resource types we can describe
func FindSourceController ¶
func FindSourceController(r RollingUpdaterClient, namespace, name string) (*api.ReplicationController, error)
func GetClientVersion ¶
func GetNextControllerAnnotation ¶
func GetNextControllerAnnotation(rc *api.ReplicationController) (string, bool)
func IsNoSuchReaperError ¶
func MakeLabels ¶
func MakeParams ¶
func MakeParams(cmd *cobra.Command, params []GeneratorParam) map[string]string
MakeParams is a utility that creates generator parameters from a command line
func ParseLabels ¶
ParseLabels turns a string representation of a label set into a map[string]string
func Rename ¶
func Rename(c RollingUpdaterClient, rc *api.ReplicationController, newName string) error
func ResizeCondition ¶
func ResizeCondition(r Resizer, precondition *ResizePrecondition, namespace, name string, count uint) wait.ConditionFunc
ResizeCondition is a closure around Resize that facilitates retries via util.wait
func SetNextControllerAnnotation ¶
func SetNextControllerAnnotation(rc *api.ReplicationController, name string)
func UpdateExistingReplicationController ¶
func UpdateExistingReplicationController(c client.Interface, oldRc *api.ReplicationController, namespace, newName, deploymentKey, deploymentValue string, out io.Writer) (*api.ReplicationController, error)
func ValidateParams ¶
func ValidateParams(paramSpec []GeneratorParam, params map[string]string) error
ValidateParams ensures that all required params are present in the params map
Types ¶
type BasicReplicationController ¶
type BasicReplicationController struct{}
func (BasicReplicationController) ParamNames ¶
func (BasicReplicationController) ParamNames() []GeneratorParam
type ControllerResizeError ¶
type ControllerResizeError struct { FailureType ControllerResizeErrorType ResourceVersion string ActualError error }
A ControllerResizeError is returned when a the resize request passes preconditions but fails to actually resize the controller.
func (ControllerResizeError) Error ¶
func (c ControllerResizeError) Error() string
type ControllerResizeErrorType ¶
type ControllerResizeErrorType int
const ( ControllerResizeGetFailure ControllerResizeErrorType = iota ControllerResizeUpdateFailure )
type Describer ¶
Describer generates output for the named resource or an error if the output could not be generated. Implementors typically abstract the retrieval of the named object from a remote server.
type Describers ¶
type Describers struct {
// contains filtered or unexported fields
}
Describers implements ObjectDescriber against functions registered via Add. Those functions can be strongly typed. Types are exactly matched (no conversion or assignable checks).
func (*Describers) Add ¶
func (d *Describers) Add(fns ...interface{}) error
Add adds one or more describer functions to the Describer. The passed function must match the signature:
func(...) (string, error)
Any number of arguments may be provided.
func (*Describers) DescribeObject ¶
func (d *Describers) DescribeObject(exact interface{}, extra ...interface{}) (string, error)
DescribeObject implements ObjectDescriber and will attempt to print the provided object to a string, if at least one describer function has been registered with the exact types passed, or if any describer can print the exact object in its first argument (the remainder will be provided empty values). If no function registered with Add can satisfy the passed objects, an ErrNoDescriber will be returned TODO: reorder and partial match extra.
type ErrNoDescriber ¶
type ErrNoDescriber struct {
Types []string
}
ErrNoDescriber is a structured error indicating the provided object or objects cannot be described.
func (ErrNoDescriber) Error ¶
func (e ErrNoDescriber) Error() string
Error implements the error interface.
type Generator ¶
type Generator interface { // Generate creates an API object given a set of parameters Generate(params map[string]string) (runtime.Object, error) // ParamNames returns the list of parameters that this generator uses ParamNames() []GeneratorParam }
Generator is an interface for things that can generate API objects from input parameters.
type GeneratorParam ¶
GeneratorParam is a parameter for a generator TODO: facilitate structured json generator input schemes
type HumanReadablePrinter ¶
type HumanReadablePrinter struct {
// contains filtered or unexported fields
}
HumanReadablePrinter is an implementation of ResourcePrinter which attempts to provide more elegant output. It is not threadsafe, but you may call PrintObj repeatedly; headers will only be printed if the object type changes. This makes it useful for printing items recieved from watches.
func NewHumanReadablePrinter ¶
func NewHumanReadablePrinter(noHeaders bool) *HumanReadablePrinter
NewHumanReadablePrinter creates a HumanReadablePrinter.
func (*HumanReadablePrinter) HandledResources ¶
func (h *HumanReadablePrinter) HandledResources() []string
func (*HumanReadablePrinter) Handler ¶
func (h *HumanReadablePrinter) Handler(columns []string, printFunc interface{}) error
Handler adds a print handler with a given set of columns to HumanReadablePrinter instance. printFunc is the function that will be called to print an object. It must be of the following type:
func printFunc(object ObjectType, w io.Writer) error
where ObjectType is the type of the object that will be printed.
type JSONPrinter ¶
type JSONPrinter struct { }
JSONPrinter is an implementation of ResourcePrinter which outputs an object as JSON.
type LimitRangeDescriber ¶
LimitRangeDescriber generates information about a limit range
type NamespaceInfo ¶
type NamespaceInfo struct {
Namespace string
}
type NoSuchReaperError ¶
type NoSuchReaperError struct {
// contains filtered or unexported fields
}
func (*NoSuchReaperError) Error ¶
func (n *NoSuchReaperError) Error() string
type NodeDescriber ¶
NodeDescriber generates information about a node.
type ObjectDescriber ¶
type ObjectDescriber interface {
DescribeObject(object interface{}, extra ...interface{}) (output string, err error)
}
ObjectDescriber is an interface for displaying arbitrary objects with extra information. Use when an object is in hand (on disk, or already retrieved). Implementors may ignore the additional information passed on extra, or use it by default. ObjectDescribers may return ErrNoDescriber if no suitable describer is found.
var DefaultObjectDescriber ObjectDescriber
DefaultObjectDescriber can describe the default Kubernetes objects.
type OutputVersionMapper ¶
type OutputVersionMapper struct { meta.RESTMapper OutputVersion string }
OutputVersionMapper is a RESTMapper that will prefer mappings that correspond to a preferred output version (if feasible)
func (OutputVersionMapper) RESTMapping ¶
func (m OutputVersionMapper) RESTMapping(kind string, versions ...string) (*meta.RESTMapping, error)
RESTMapping implements meta.RESTMapper by prepending the output version to the preferred version list.
type PodDescriber ¶
PodDescriber generates information about a pod and the replication controllers that create it.
type PreconditionError ¶
A PreconditionError is returned when a replication controller fails to match the resize preconditions passed to kubectl.
func (PreconditionError) Error ¶
func (pe PreconditionError) Error() string
type ProxyServer ¶
type ProxyServer struct {
httputil.ReverseProxy
}
ProxyServer is a http.Handler which proxies Kubernetes APIs to remote API server.
func NewProxyServer ¶
func NewProxyServer(filebase string, apiProxyPrefix string, staticPrefix string, cfg *client.Config) (*ProxyServer, error)
NewProxyServer creates and installs a new ProxyServer. It automatically registers the created ProxyServer to http.DefaultServeMux.
func (*ProxyServer) Serve ¶
func (s *ProxyServer) Serve(port int) error
Serve starts the server (http.DefaultServeMux) on given port, loops forever.
type RESTClient ¶
type RESTClient interface { Get() *client.Request Post() *client.Request Delete() *client.Request Put() *client.Request }
RESTClient is a client helper for dealing with RESTful resources in a generic way.
type Reaper ¶
type Reaper interface {
Stop(namespace, name string, gracePeriod *api.DeleteOptions) (string, error)
}
A Reaper handles terminating an object as gracefully as possible.
type ReplicationControllerDescriber ¶
ReplicationControllerDescriber generates information about a replication controller and the pods it has created.
type ReplicationControllerReaper ¶
type ReplicationControllerReaper struct { client.Interface // contains filtered or unexported fields }
func (*ReplicationControllerReaper) Stop ¶
func (reaper *ReplicationControllerReaper) Stop(namespace, name string, gracePeriod *api.DeleteOptions) (string, error)
type ReplicationControllerResizer ¶
type ReplicationControllerResizer struct {
// contains filtered or unexported fields
}
func (*ReplicationControllerResizer) Resize ¶
func (resizer *ReplicationControllerResizer) Resize(namespace, name string, newSize uint, preconditions *ResizePrecondition, retry, waitForReplicas *RetryParams) error
Resize updates a ReplicationController to a new size, with optional precondition check (if preconditions is not nil), optional retries (if retry is not nil), and then optionally waits for it's replica count to reach the new value (if wait is not nil).
func (*ReplicationControllerResizer) ResizeSimple ¶
func (resizer *ReplicationControllerResizer) ResizeSimple(namespace, name string, preconditions *ResizePrecondition, newSize uint) (string, error)
type ResizePrecondition ¶
ResizePrecondition describes a condition that must be true for the resize to take place If CurrentSize == -1, it is ignored. If CurrentResourceVersion is the empty string, it is ignored. Otherwise they must equal the values in the replication controller for it to be valid.
func (*ResizePrecondition) Validate ¶
func (precondition *ResizePrecondition) Validate(controller *api.ReplicationController) error
Validate ensures that the preconditions match. Returns nil if they are valid, an error otherwise
type Resizer ¶
type Resizer interface { // Resize resizes the named resource after checking preconditions. It optionally // retries in the event of resource version mismatch (if retry is not nil), // and optionally waits until the status of the resource matches newSize (if wait is not nil) Resize(namespace, name string, newSize uint, preconditions *ResizePrecondition, retry, wait *RetryParams) error // ResizeSimple does a simple one-shot attempt at resizing - not useful on it's own, but // a necessary building block for Resize ResizeSimple(namespace, name string, preconditions *ResizePrecondition, newSize uint) (string, error) }
func ResizerFor ¶
func ResizerFor(kind string, c ResizerClient) (Resizer, error)
type ResizerClient ¶
type ResizerClient interface { GetReplicationController(namespace, name string) (*api.ReplicationController, error) UpdateReplicationController(namespace string, rc *api.ReplicationController) (*api.ReplicationController, error) ControllerHasDesiredReplicas(rc *api.ReplicationController) wait.ConditionFunc }
ResizerClient abstracts access to ReplicationControllers.
func NewResizerClient ¶
func NewResizerClient(c client.Interface) ResizerClient
type ResourcePrinter ¶
type ResourcePrinter interface { // Print receives a runtime object, formats it and prints it to a writer. PrintObj(runtime.Object, io.Writer) error }
ResourcePrinter is an interface that knows how to print runtime objects.
func GetPrinter ¶
func GetPrinter(format, formatArgument string) (ResourcePrinter, bool, error)
GetPrinter takes a format type, an optional format argument. It will return true if the format is generic (untyped), otherwise it will return false. The printer is agnostic to schema versions, so you must send arguments to PrintObj in the version you wish them to be shown using a VersionedPrinter (typically when generic is true).
func NewVersionedPrinter ¶
func NewVersionedPrinter(printer ResourcePrinter, convertor runtime.ObjectConvertor, version ...string) ResourcePrinter
NewVersionedPrinter wraps a printer to convert objects to a known API version prior to printing.
type ResourcePrinterFunc ¶
ResourcePrinterFunc is a function that can print objects
type ResourceQuotaDescriber ¶
ResourceQuotaDescriber generates information about a resource quota
type RetryParams ¶
func NewRetryParams ¶
func NewRetryParams(interval, timeout time.Duration) *RetryParams
type RollingUpdater ¶
type RollingUpdater struct {
// contains filtered or unexported fields
}
RollingUpdater provides methods for updating replicated pods in a predictable, fault-tolerant way.
func NewRollingUpdater ¶
func NewRollingUpdater(namespace string, c RollingUpdaterClient) *RollingUpdater
NewRollingUpdater creates a RollingUpdater from a client
func (*RollingUpdater) Update ¶
func (r *RollingUpdater) Update(config *RollingUpdaterConfig) error
Update all pods for a ReplicationController (oldRc) by creating a new controller (newRc) with 0 replicas, and synchronously resizing oldRc,newRc by 1 until oldRc has 0 replicas and newRc has the original # of desired replicas. Cleanup occurs based on a RollingUpdaterCleanupPolicy.
If an update from newRc to oldRc is already in progress, we attempt to drive it to completion. If an error occurs at any step of the update, the error will be returned.
TODO: make this handle performing a rollback of a partially completed rollout.
type RollingUpdaterCleanupPolicy ¶
type RollingUpdaterCleanupPolicy string
RollingUpdaterCleanupPolicy is a cleanup action to take after the deployment is complete.
const ( // DeleteRollingUpdateCleanupPolicy means delete the old controller. DeleteRollingUpdateCleanupPolicy RollingUpdaterCleanupPolicy = "Delete" // PreserveRollingUpdateCleanupPolicy means keep the old controller. PreserveRollingUpdateCleanupPolicy RollingUpdaterCleanupPolicy = "Preserve" // RenameRollingUpdateCleanupPolicy means delete the old controller, and rename // the new controller to the name of the old controller. RenameRollingUpdateCleanupPolicy RollingUpdaterCleanupPolicy = "Rename" )
type RollingUpdaterClient ¶
type RollingUpdaterClient interface { ListReplicationControllers(namespace string, selector labels.Selector) (*api.ReplicationControllerList, error) GetReplicationController(namespace, name string) (*api.ReplicationController, error) UpdateReplicationController(namespace string, rc *api.ReplicationController) (*api.ReplicationController, error) CreateReplicationController(namespace string, rc *api.ReplicationController) (*api.ReplicationController, error) DeleteReplicationController(namespace, name string) error ControllerHasDesiredReplicas(rc *api.ReplicationController) wait.ConditionFunc }
RollingUpdaterClient abstracts access to ReplicationControllers.
func NewRollingUpdaterClient ¶
func NewRollingUpdaterClient(c client.Interface) RollingUpdaterClient
type RollingUpdaterConfig ¶
type RollingUpdaterConfig struct { // Out is a writer for progress output. Out io.Writer // OldRC is an existing controller to be replaced. OldRc *api.ReplicationController // NewRc is a controller that will take ownership of updated pods (will be // created if needed). NewRc *api.ReplicationController // UpdatePeriod is the time to wait between individual pod updates. UpdatePeriod time.Duration // Interval is the time to wait between polling controller status after // update. Interval time.Duration // Timeout is the time to wait for controller updates before giving up. Timeout time.Duration // CleanupPolicy defines the cleanup action to take after the deployment is // complete. CleanupPolicy RollingUpdaterCleanupPolicy }
RollingUpdaterConfig is the configuration for a rolling deployment process.
type SecretDescriber ¶
SecretDescriber generates information about a secret
type ServiceAccountDescriber ¶
ServiceAccountDescriber generates information about a service.
type ServiceDescriber ¶
ServiceDescriber generates information about a service.
type ServiceGenerator ¶
type ServiceGenerator struct{}
func (ServiceGenerator) ParamNames ¶
func (ServiceGenerator) ParamNames() []GeneratorParam
type ServiceReaper ¶
func (*ServiceReaper) Stop ¶
func (reaper *ServiceReaper) Stop(namespace, name string, gracePeriod *api.DeleteOptions) (string, error)
type ShortcutExpander ¶
type ShortcutExpander struct {
meta.RESTMapper
}
ShortcutExpander is a RESTMapper that can be used for Kubernetes resources.
func (ShortcutExpander) VersionAndKindForResource ¶
func (e ShortcutExpander) VersionAndKindForResource(resource string) (defaultVersion, kind string, err error)
VersionAndKindForResource implements meta.RESTMapper. It expands the resource first, then invokes the wrapped mapper.
type SortableEvents ¶
SortableEvents implements sort.Interface for []api.Event based on the Timestamp field
func (SortableEvents) Len ¶
func (list SortableEvents) Len() int
func (SortableEvents) Less ¶
func (list SortableEvents) Less(i, j int) bool
func (SortableEvents) Swap ¶
func (list SortableEvents) Swap(i, j int)
type SortableResourceNames ¶
type SortableResourceNames []api.ResourceName
func (SortableResourceNames) Len ¶
func (list SortableResourceNames) Len() int
func (SortableResourceNames) Less ¶
func (list SortableResourceNames) Less(i, j int) bool
func (SortableResourceNames) Swap ¶
func (list SortableResourceNames) Swap(i, j int)
type TemplatePrinter ¶
type TemplatePrinter struct {
// contains filtered or unexported fields
}
TemplatePrinter is an implementation of ResourcePrinter which formats data with a Go Template.
func NewTemplatePrinter ¶
func NewTemplatePrinter(tmpl []byte) (*TemplatePrinter, error)
type VersionedPrinter ¶
type VersionedPrinter struct {
// contains filtered or unexported fields
}
VersionedPrinter takes runtime objects and ensures they are converted to a given API version prior to being passed to a nested printer.
type YAMLPrinter ¶
type YAMLPrinter struct {
// contains filtered or unexported fields
}
YAMLPrinter is an implementation of ResourcePrinter which outputs an object as YAML. The input object is assumed to be in the internal version of an API and is converted to the given version first.