webhook

package
Version: v0.0.0-...-d88c8b5 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2021 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Overview

Package webhook implements a generic HTTP webhook plugin.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ValidateWebhookService

func ValidateWebhookService(fldPath *field.Path, namespace, name string, path *string, port int32) field.ErrorList

func ValidateWebhookURL

func ValidateWebhookURL(fldPath *field.Path, URL string, forceHttps bool) field.ErrorList

ValidateWebhookURL validates webhook's URL.

func WithExponentialBackoff

func WithExponentialBackoff(initialBackoff time.Duration, webhookFn func() error) error

WithExponentialBackoff will retry webhookFn() up to 5 times with exponentially increasing backoff when it returns an error for which apierrors.SuggestsClientDelay() or apierrors.IsInternalError() returns true.

Types

type AuthenticationInfoResolver

type AuthenticationInfoResolver interface {
	// ClientConfigFor builds rest.Config based on the hostPort.
	ClientConfigFor(hostPort string) (*rest.Config, error)
	// ClientConfigForService builds rest.Config based on the serviceName and
	// serviceNamespace.
	ClientConfigForService(serviceName, serviceNamespace string, servicePort int) (*rest.Config, error)
}

AuthenticationInfoResolver builds rest.Config base on the server or service name and service namespace.

func NewDefaultAuthenticationInfoResolver

func NewDefaultAuthenticationInfoResolver(kubeconfigFile string) (AuthenticationInfoResolver, error)

NewDefaultAuthenticationInfoResolver generates an AuthenticationInfoResolver that builds rest.Config based on the kubeconfig file. kubeconfigFile is the path to the kubeconfig.

type AuthenticationInfoResolverDelegator

type AuthenticationInfoResolverDelegator struct {
	ClientConfigForFunc        func(hostPort string) (*rest.Config, error)
	ClientConfigForServiceFunc func(serviceName, serviceNamespace string, servicePort int) (*rest.Config, error)
}

AuthenticationInfoResolverDelegator implements AuthenticationInfoResolver.

func (*AuthenticationInfoResolverDelegator) ClientConfigFor

func (a *AuthenticationInfoResolverDelegator) ClientConfigFor(hostPort string) (*rest.Config, error)

ClientConfigFor returns client config for given hostPort.

func (*AuthenticationInfoResolverDelegator) ClientConfigForService

func (a *AuthenticationInfoResolverDelegator) ClientConfigForService(serviceName, serviceNamespace string, servicePort int) (*rest.Config, error)

ClientConfigForService returns client config for given service.

type AuthenticationInfoResolverWrapper

type AuthenticationInfoResolverWrapper func(AuthenticationInfoResolver) AuthenticationInfoResolver

AuthenticationInfoResolverWrapper can be used to inject Dial function to the rest.Config generated by the resolver.

func NewDefaultAuthenticationInfoResolverWrapper

func NewDefaultAuthenticationInfoResolverWrapper(
	proxyTransport *http.Transport,
	kubeapiserverClientConfig *rest.Config) AuthenticationInfoResolverWrapper

NewDefaultAuthenticationInfoResolverWrapper builds a default authn resolver wrapper

type ClientConfig

type ClientConfig struct {
	Name     string
	URL      string
	CABundle []byte
	Service  *ClientConfigService
}

ClientConfig defines parameters required for creating a hook client.

type ClientConfigService

type ClientConfigService struct {
	Name      string
	Namespace string
	Path      string
	Port      int32
}

ClientConfigService defines service discovery parameters of the webhook.

type ClientManager

type ClientManager struct {
	// contains filtered or unexported fields
}

ClientManager builds REST clients to talk to webhooks. It caches the clients to avoid duplicate creation.

func NewClientManager

func NewClientManager(gvs []schema.GroupVersion, addToSchemaFuncs ...func(s *runtime.Scheme) error) (ClientManager, error)

NewClientManager creates a clientManager.

func (*ClientManager) HookClient

func (cm *ClientManager) HookClient(cc ClientConfig) (*rest.RESTClient, error)

HookClient get a RESTClient from the cache, or constructs one based on the webhook configuration.

func (*ClientManager) SetAuthenticationInfoResolver

func (cm *ClientManager) SetAuthenticationInfoResolver(resolver AuthenticationInfoResolver)

SetAuthenticationInfoResolver sets the AuthenticationInfoResolver.

func (*ClientManager) SetAuthenticationInfoResolverWrapper

func (cm *ClientManager) SetAuthenticationInfoResolverWrapper(wrapper AuthenticationInfoResolverWrapper)

SetAuthenticationInfoResolverWrapper sets the AuthenticationInfoResolverWrapper.

func (*ClientManager) SetServiceResolver

func (cm *ClientManager) SetServiceResolver(sr ServiceResolver)

SetServiceResolver sets the ServiceResolver.

func (*ClientManager) Validate

func (cm *ClientManager) Validate() error

Validate checks if ClientManager is properly set up.

type ErrCallingWebhook

type ErrCallingWebhook struct {
	WebhookName string
	Reason      error
}

ErrCallingWebhook is returned for transport-layer errors calling webhooks. It represents a failure to talk to the webhook, not the webhook rejecting a request.

func (*ErrCallingWebhook) Error

func (e *ErrCallingWebhook) Error() string

type ErrWebhookRejection

type ErrWebhookRejection struct {
	Status *apierrors.StatusError
}

ErrWebhookRejection represents a webhook properly rejecting a request.

func (*ErrWebhookRejection) Error

func (e *ErrWebhookRejection) Error() string

type GenericWebhook

type GenericWebhook struct {
	RestClient     *rest.RESTClient
	InitialBackoff time.Duration
}

func NewGenericWebhook

func NewGenericWebhook(scheme *runtime.Scheme, codecFactory serializer.CodecFactory, kubeConfigFile string, groupVersions []schema.GroupVersion, initialBackoff time.Duration) (*GenericWebhook, error)

NewGenericWebhook creates a new GenericWebhook from the provided kubeconfig file.

func (*GenericWebhook) WithExponentialBackoff

func (g *GenericWebhook) WithExponentialBackoff(webhookFn func() rest.Result) rest.Result

WithExponentialBackoff will retry webhookFn() up to 5 times with exponentially increasing backoff when it returns an error for which apierrors.SuggestsClientDelay() or apierrors.IsInternalError() returns true.

type ServiceResolver

type ServiceResolver interface {
	ResolveEndpoint(namespace, name string, port int32) (*url.URL, error)
}

ServiceResolver knows how to convert a service reference into an actual location.

func NewDefaultServiceResolver

func NewDefaultServiceResolver() ServiceResolver

NewDefaultServiceResolver creates a new default server resolver.

Jump to

Keyboard shortcuts

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