admission: unify plugin constructors
Kubernetes-commit: 131905cdb8b929f7c15f810e02ec9a45b306b769
This commit is contained in:
parent
73d9488042
commit
777cf3c0ef
|
|
@ -20,7 +20,7 @@ package admission
|
||||||
type chainAdmissionHandler []Interface
|
type chainAdmissionHandler []Interface
|
||||||
|
|
||||||
// NewChainHandler creates a new chain handler from an array of handlers. Used for testing.
|
// NewChainHandler creates a new chain handler from an array of handlers. Used for testing.
|
||||||
func NewChainHandler(handlers ...Interface) Interface {
|
func NewChainHandler(handlers ...Interface) chainAdmissionHandler {
|
||||||
return chainAdmissionHandler(handlers)
|
return chainAdmissionHandler(handlers)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ func NewInitializer() admission.Interface {
|
||||||
return &initializer{}
|
return &initializer{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validate implements the Validator interface.
|
||||||
func (i *initializer) Validate() error {
|
func (i *initializer) Validate() error {
|
||||||
if i.config == nil {
|
if i.config == nil {
|
||||||
return fmt.Errorf("the Initializer admission plugin requires a Kubernetes client to be provided")
|
return fmt.Errorf("the Initializer admission plugin requires a Kubernetes client to be provided")
|
||||||
|
|
@ -94,10 +95,12 @@ func (i *initializer) Validate() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetExternalKubeClientSet implements the WantsExternalKubeClientSet interface.
|
||||||
func (i *initializer) SetExternalKubeClientSet(client clientset.Interface) {
|
func (i *initializer) SetExternalKubeClientSet(client clientset.Interface) {
|
||||||
i.config = configuration.NewInitializerConfigurationManager(client.Admissionregistration().InitializerConfigurations())
|
i.config = configuration.NewInitializerConfigurationManager(client.Admissionregistration().InitializerConfigurations())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetAuthorizer implements the WantsAuthorizer interface.
|
||||||
func (i *initializer) SetAuthorizer(a authorizer.Authorizer) {
|
func (i *initializer) SetAuthorizer(a authorizer.Authorizer) {
|
||||||
i.authorizer = a
|
i.authorizer = a
|
||||||
}
|
}
|
||||||
|
|
@ -276,6 +279,8 @@ func (i *initializer) canInitialize(a admission.Attributes, message string) erro
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handles returns true if this admission controller can handle the given operation
|
||||||
|
// where operation can be one of CREATE, UPDATE, DELETE, or CONNECT
|
||||||
func (i *initializer) Handles(op admission.Operation) bool {
|
func (i *initializer) Handles(op admission.Operation) bool {
|
||||||
return op == admission.Create || op == admission.Update
|
return op == admission.Create || op == admission.Update
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -202,16 +202,19 @@ func newLifecycleWithClock(immortalNamespaces sets.String, clock utilcache.Clock
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetExternalKubeInformerFactory implements the WantsExternalKubeInformerFactory interface.
|
||||||
func (l *lifecycle) SetExternalKubeInformerFactory(f informers.SharedInformerFactory) {
|
func (l *lifecycle) SetExternalKubeInformerFactory(f informers.SharedInformerFactory) {
|
||||||
namespaceInformer := f.Core().V1().Namespaces()
|
namespaceInformer := f.Core().V1().Namespaces()
|
||||||
l.namespaceLister = namespaceInformer.Lister()
|
l.namespaceLister = namespaceInformer.Lister()
|
||||||
l.SetReadyFunc(namespaceInformer.Informer().HasSynced)
|
l.SetReadyFunc(namespaceInformer.Informer().HasSynced)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetExternalKubeClientSet implements the WantsExternalKubeClientSet interface.
|
||||||
func (l *lifecycle) SetExternalKubeClientSet(client kubernetes.Interface) {
|
func (l *lifecycle) SetExternalKubeClientSet(client kubernetes.Interface) {
|
||||||
l.client = client
|
l.client = client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validate implement the Validator interface.
|
||||||
func (l *lifecycle) Validate() error {
|
func (l *lifecycle) Validate() error {
|
||||||
if l.namespaceLister == nil {
|
if l.namespaceLister == nil {
|
||||||
return fmt.Errorf("missing namespaceLister")
|
return fmt.Errorf("missing namespaceLister")
|
||||||
|
|
|
||||||
|
|
@ -151,10 +151,13 @@ func (a *GenericAdmissionWebhook) SetScheme(scheme *runtime.Scheme) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WantsExternalKubeClientSet defines a function which sets external ClientSet for admission plugins that need it
|
||||||
func (a *GenericAdmissionWebhook) SetExternalKubeClientSet(client clientset.Interface) {
|
func (a *GenericAdmissionWebhook) SetExternalKubeClientSet(client clientset.Interface) {
|
||||||
a.hookSource = configuration.NewExternalAdmissionHookConfigurationManager(client.Admissionregistration().ExternalAdmissionHookConfigurations())
|
a.hookSource = configuration.NewExternalAdmissionHookConfigurationManager(client.Admissionregistration().ExternalAdmissionHookConfigurations())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validator holds Validate functions, which are responsible for validation of initialized shared resources
|
||||||
|
// and should be implemented on admission plugins
|
||||||
func (a *GenericAdmissionWebhook) Validate() error {
|
func (a *GenericAdmissionWebhook) Validate() error {
|
||||||
if a.hookSource == nil {
|
if a.hookSource == nil {
|
||||||
return fmt.Errorf("the GenericAdmissionWebhook admission plugin requires a Kubernetes client to be provided")
|
return fmt.Errorf("the GenericAdmissionWebhook admission plugin requires a Kubernetes client to be provided")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue