Merge pull request #50374 from p0lyn0mial/sample_server_wire_admission
Automatic merge from submit-queue (batch tested with PRs 50386, 50374, 50444, 50382) wires ban flunder admission plugin to the sample server **What this PR does / why we need it**: this PR wires ban flunder admission plugin to the sample server. **Release note**: ``` NONE ```
This commit is contained in:
		@@ -18,6 +18,7 @@ package banflunder
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
@@ -28,6 +29,13 @@ import (
 | 
			
		||||
	listers "k8s.io/sample-apiserver/pkg/client/listers_generated/wardle/internalversion"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Register registers a plugin
 | 
			
		||||
func Register(plugins *admission.Plugins) {
 | 
			
		||||
	plugins.Register("BanFlunder", func(config io.Reader) (admission.Interface, error) {
 | 
			
		||||
		return New()
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type disallowFlunder struct {
 | 
			
		||||
	*admission.Handler
 | 
			
		||||
	lister listers.FischerLister
 | 
			
		||||
@@ -80,5 +88,7 @@ func (d *disallowFlunder) Validate() error {
 | 
			
		||||
 | 
			
		||||
// New creates a new ban flunder admission plugin
 | 
			
		||||
func New() (admission.Interface, error) {
 | 
			
		||||
	return &disallowFlunder{}, nil
 | 
			
		||||
	return &disallowFlunder{
 | 
			
		||||
		Handler: admission.NewHandler(admission.Create),
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,7 @@ go_library(
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/apis/wardle:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/install:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/client/informers_generated/internalversion:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/registry:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/registry/wardle/fischer:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/registry/wardle/flunder:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ import (
 | 
			
		||||
	"k8s.io/sample-apiserver/pkg/apis/wardle"
 | 
			
		||||
	"k8s.io/sample-apiserver/pkg/apis/wardle/install"
 | 
			
		||||
	"k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1"
 | 
			
		||||
	informers "k8s.io/sample-apiserver/pkg/client/informers_generated/internalversion"
 | 
			
		||||
	wardleregistry "k8s.io/sample-apiserver/pkg/registry"
 | 
			
		||||
	fischerstorage "k8s.io/sample-apiserver/pkg/registry/wardle/fischer"
 | 
			
		||||
	flunderstorage "k8s.io/sample-apiserver/pkg/registry/wardle/flunder"
 | 
			
		||||
@@ -62,6 +63,8 @@ func init() {
 | 
			
		||||
 | 
			
		||||
type Config struct {
 | 
			
		||||
	GenericConfig *genericapiserver.Config
 | 
			
		||||
	// SharedInformerFactory provides shared informers for resources
 | 
			
		||||
	SharedInformerFactory informers.SharedInformerFactory
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// WardleServer contains state for a Kubernetes cluster master/api server.
 | 
			
		||||
 
 | 
			
		||||
@@ -15,8 +15,12 @@ go_library(
 | 
			
		||||
        "//vendor/github.com/spf13/cobra:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apiserver/pkg/server:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apiserver/pkg/server/options:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/admission/plugin/banflunder:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/admission/wardleinitializer:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/apiserver:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/client/clientset_generated/internalclientset:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/sample-apiserver/pkg/client/informers_generated/internalversion:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -25,8 +25,12 @@ import (
 | 
			
		||||
 | 
			
		||||
	genericapiserver "k8s.io/apiserver/pkg/server"
 | 
			
		||||
	genericoptions "k8s.io/apiserver/pkg/server/options"
 | 
			
		||||
	"k8s.io/sample-apiserver/pkg/admission/plugin/banflunder"
 | 
			
		||||
	"k8s.io/sample-apiserver/pkg/admission/wardleinitializer"
 | 
			
		||||
	"k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1"
 | 
			
		||||
	"k8s.io/sample-apiserver/pkg/apiserver"
 | 
			
		||||
	clientset "k8s.io/sample-apiserver/pkg/client/clientset_generated/internalclientset"
 | 
			
		||||
	informers "k8s.io/sample-apiserver/pkg/client/informers_generated/internalversion"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const defaultEtcdPathPrefix = "/registry/wardle.kubernetes.io"
 | 
			
		||||
@@ -88,6 +92,9 @@ func (o *WardleServerOptions) Complete() error {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (o WardleServerOptions) Config() (*apiserver.Config, error) {
 | 
			
		||||
	// register admission plugins
 | 
			
		||||
	banflunder.Register(o.Admission.Plugins)
 | 
			
		||||
 | 
			
		||||
	// TODO have a "real" external address
 | 
			
		||||
	if err := o.RecommendedOptions.SecureServing.MaybeDefaultWithSelfSignedCerts("localhost", nil, []net.IP{net.ParseIP("127.0.0.1")}); err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("error creating self-signed certificates: %v", err)
 | 
			
		||||
@@ -98,12 +105,23 @@ func (o WardleServerOptions) Config() (*apiserver.Config, error) {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := o.Admission.ApplyTo(serverConfig); err != nil {
 | 
			
		||||
	client, err := clientset.NewForConfig(serverConfig.LoopbackClientConfig)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	informerFactory := informers.NewSharedInformerFactory(client, serverConfig.LoopbackClientConfig.Timeout)
 | 
			
		||||
	admissionInitializer, err := wardleinitializer.New(informerFactory)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := o.Admission.ApplyTo(serverConfig, admissionInitializer); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	config := &apiserver.Config{
 | 
			
		||||
		GenericConfig:         serverConfig,
 | 
			
		||||
		SharedInformerFactory: informerFactory,
 | 
			
		||||
	}
 | 
			
		||||
	return config, nil
 | 
			
		||||
}
 | 
			
		||||
@@ -118,5 +136,11 @@ func (o WardleServerOptions) RunWardleServer(stopCh <-chan struct{}) error {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	server.GenericAPIServer.AddPostStartHook("start-sample-server-informers", func(context genericapiserver.PostStartHookContext) error {
 | 
			
		||||
		config.SharedInformerFactory.Start(context.StopCh)
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	return server.GenericAPIServer.PrepareRun().Run(stopCh)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user