apiserverk8s.io/apiserver/pkg/endpoints/handlers Index | Files | Directories

package handlers

import "k8s.io/apiserver/pkg/endpoints/handlers"

Package handlers contains HTTP handlers to implement the apiserver APIs.

Index

Constants

const (
	DuplicateOwnerReferencesWarningFormat = "" /* 203 byte string literal not displayed */

	DuplicateOwnerReferencesAfterMutatingAdmissionWarningFormat = "" /* 236 byte string literal not displayed */

)

Functions

func ConnectResource

func ConnectResource(connecter rest.Connecter, scope *RequestScope, admit admission.Interface, restPath string, isSubresource bool) http.HandlerFunc

ConnectResource returns a function that handles a connect request on a rest.Storage object.

func CreateNamedResource

func CreateNamedResource(r rest.NamedCreater, scope *RequestScope, admission admission.Interface) http.HandlerFunc

CreateNamedResource returns a function that will handle a resource creation with name.

func CreateResource

func CreateResource(r rest.Creater, scope *RequestScope, admission admission.Interface) http.HandlerFunc

CreateResource returns a function that will handle a resource creation.

func DeleteCollection

func DeleteCollection(r rest.CollectionDeleter, checkBody bool, scope *RequestScope, admit admission.Interface) http.HandlerFunc

DeleteCollection returns a function that will handle a collection deletion

func DeleteResource

func DeleteResource(r rest.GracefulDeleter, allowsOptions bool, scope *RequestScope, admit admission.Interface) http.HandlerFunc

DeleteResource returns a function that will handle a resource deletion TODO admission here becomes solely validating admission

func GetResource

func GetResource(r rest.Getter, scope *RequestScope) http.HandlerFunc

GetResource returns a function that handles retrieving a single resource from a rest.Storage object.

func GetResourceWithOptions

func GetResourceWithOptions(r rest.GetterWithOptions, scope *RequestScope, isSubresource bool) http.HandlerFunc

GetResourceWithOptions returns a function that handles retrieving a single resource from a rest.Storage object.

func ListResource

func ListResource(r rest.Lister, rw rest.Watcher, scope *RequestScope, forceWatch bool, minRequestTimeout time.Duration) http.HandlerFunc

func PatchResource

func PatchResource(r rest.Patcher, scope *RequestScope, admit admission.Interface, patchTypes []string) http.HandlerFunc

PatchResource returns a function that will handle a resource patch.

func UpdateResource

func UpdateResource(r rest.Updater, scope *RequestScope, admit admission.Interface) http.HandlerFunc

UpdateResource returns a function that will handle a resource update

Types

type ContextBasedNaming

type ContextBasedNaming struct {
	Namer         runtime.Namer
	ClusterScoped bool
}

func (ContextBasedNaming) Name

func (n ContextBasedNaming) Name(req *http.Request) (namespace, name string, err error)

func (ContextBasedNaming) Namespace

func (n ContextBasedNaming) Namespace(req *http.Request) (namespace string, err error)

func (ContextBasedNaming) ObjectName

func (n ContextBasedNaming) ObjectName(obj runtime.Object) (namespace, name string, err error)

type RequestScope

type RequestScope struct {
	Namer ScopeNamer

	Serializer runtime.NegotiatedSerializer
	runtime.ParameterCodec

	// StandardSerializers, if set, restricts which serializers can be used when
	// we aren't transforming the output (into Table or PartialObjectMetadata).
	// Used only by CRDs which do not yet support Protobuf.
	StandardSerializers []runtime.SerializerInfo

	Creater         runtime.ObjectCreater
	Convertor       runtime.ObjectConvertor
	Defaulter       runtime.ObjectDefaulter
	Typer           runtime.ObjectTyper
	UnsafeConvertor runtime.ObjectConvertor
	Authorizer      authorizer.Authorizer

	EquivalentResourceMapper runtime.EquivalentResourceMapper

	TableConvertor rest.TableConvertor
	FieldManager   *managedfields.FieldManager

	Resource schema.GroupVersionResource
	Kind     schema.GroupVersionKind

	// AcceptsGroupVersionDelegate is an optional delegate that can be queried about whether a given GVK
	// can be accepted in create or update requests. If nil, only scope.Kind is accepted.
	// Note that this does not enable multi-version support for reads from a single endpoint.
	AcceptsGroupVersionDelegate rest.GroupVersionAcceptor

	Subresource string

	MetaGroupVersion schema.GroupVersion

	// HubGroupVersion indicates what version objects read from etcd or incoming requests should be converted to for in-memory handling.
	HubGroupVersion schema.GroupVersion

	MaxRequestBodyBytes int64
}

RequestScope encapsulates common fields across all RESTful handler methods.

func (*RequestScope) AcceptsGroupVersion

func (scope *RequestScope) AcceptsGroupVersion(gv schema.GroupVersion) bool

AcceptsGroupVersion returns true if the specified GroupVersion is allowed in create and update requests.

func (*RequestScope) AllowsMediaTypeTransform

func (scope *RequestScope) AllowsMediaTypeTransform(mimeType, mimeSubType string, gvk *schema.GroupVersionKind) bool

func (*RequestScope) AllowsServerVersion

func (scope *RequestScope) AllowsServerVersion(version string) bool

func (*RequestScope) AllowsStreamSchema

func (scope *RequestScope) AllowsStreamSchema(s string) bool

func (*RequestScope) GetEquivalentResourceMapper

func (r *RequestScope) GetEquivalentResourceMapper() runtime.EquivalentResourceMapper

func (*RequestScope) GetObjectConvertor

func (r *RequestScope) GetObjectConvertor() runtime.ObjectConvertor

func (*RequestScope) GetObjectCreater

func (r *RequestScope) GetObjectCreater() runtime.ObjectCreater

func (*RequestScope) GetObjectDefaulter

func (r *RequestScope) GetObjectDefaulter() runtime.ObjectDefaulter

func (*RequestScope) GetObjectTyper

func (r *RequestScope) GetObjectTyper() runtime.ObjectTyper

type ScopeNamer

type ScopeNamer interface {
	// Namespace returns the appropriate namespace value from the request (may be empty) or an
	// error.
	Namespace(req *http.Request) (namespace string, err error)
	// Name returns the name from the request, and an optional namespace value if this is a namespace
	// scoped call. An error is returned if the name is not available.
	Name(req *http.Request) (namespace, name string, err error)
	// ObjectName returns the namespace and name from an object if they exist, or an error if the object
	// does not support names.
	ObjectName(obj runtime.Object) (namespace, name string, err error)
}

ScopeNamer handles accessing names from requests and objects

type TimeoutFactory

type TimeoutFactory interface {
	TimeoutCh() (<-chan time.Time, func() bool)
}

timeoutFactory abstracts watch timeout logic for testing

type WatchServer

type WatchServer struct {
	Watching watch.Interface
	Scope    *RequestScope

	// true if websocket messages should use text framing (as opposed to binary framing)
	UseTextFraming bool
	// the media type this watch is being served with
	MediaType string
	// used to frame the watch stream
	Framer runtime.Framer
	// used to encode the watch stream event itself
	Encoder runtime.Encoder
	// used to encode the nested object in the watch stream
	EmbeddedEncoder runtime.Encoder

	MemoryAllocator      runtime.MemoryAllocator
	TimeoutFactory       TimeoutFactory
	ServerShuttingDownCh <-chan struct{}
	// contains filtered or unexported fields
}

WatchServer serves a watch.Interface over a websocket or vanilla HTTP.

func (*WatchServer) HandleHTTP

func (s *WatchServer) HandleHTTP(w http.ResponseWriter, req *http.Request)

HandleHTTP serves a series of encoded events via HTTP with Transfer-Encoding: chunked. or over a websocket connection.

func (*WatchServer) HandleWS

func (s *WatchServer) HandleWS(ws *websocket.Conn)

HandleWS serves a series of encoded events over a websocket connection.

Source Files

create.go delete.go doc.go get.go helpers.go namer.go patch.go response.go rest.go trace_util.go update.go watch.go

Directories

PathSynopsis
pkg/endpoints/handlers/fieldmanager
pkg/endpoints/handlers/finisher
pkg/endpoints/handlers/metrics
pkg/endpoints/handlers/negotiationPackage negotiation contains media type negotiation logic.
pkg/endpoints/handlers/responsewritersPackage responsewriters containers helpers to write responses in HTTP handlers.
Version
v0.33.0 (latest)
Published
Apr 23, 2025
Platform
linux/amd64
Imports
71 packages
Last checked
1 hour ago

Tools for package owners.