From 45e61ee7bcaeacd91c0b4e5f7ab184f8dbccc3c1 Mon Sep 17 00:00:00 2001 From: yue9944882 <291271447@qq.com> Date: Wed, 30 Mar 2022 15:42:31 +0800 Subject: [PATCH] feat: adding a short-cut for registering post-start hook Signed-off-by: yue9944882 <291271447@qq.com> --- pkg/builder/builder_misc.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkg/builder/builder_misc.go b/pkg/builder/builder_misc.go index 00f4f7d..a209834 100644 --- a/pkg/builder/builder_misc.go +++ b/pkg/builder/builder_misc.go @@ -3,6 +3,7 @@ package builder import ( "k8s.io/apimachinery/pkg/runtime" genericapiserver "k8s.io/apiserver/pkg/server" + "k8s.io/klog/v2" openapicommon "k8s.io/kube-openapi/pkg/common" "sigs.k8s.io/apiserver-runtime/internal/sample-apiserver/pkg/cmd/server" "sigs.k8s.io/apiserver-runtime/pkg/util/loopback" @@ -24,6 +25,18 @@ func (a *Server) WithOpenAPIDefinitions( return a } +// WithPostStartHook registers a post start hook which will be invoked after the apiserver is started +// and before it's ready for serving requests. +func (a *Server) WithPostStartHook(name string, hookFunc genericapiserver.PostStartHookFunc) *Server { + a.WithServerFns(func(server *GenericAPIServer) *GenericAPIServer { + if err := server.AddPostStartHook(name, hookFunc); err != nil { + klog.Fatal("failed registering post-start hook %v: %v", name, err) + } + return server + }) + return a +} + // WithAdditionalSchemeInstallers registers functions to install additional functions or resources into the Scheme. // This can be used to manually registering defaulting functions, conversion functions, or resource types, rather // than registering them automatically by implementing the corresponding interfaces on the resources.