1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2024-12-14 11:57:48 +00:00
kyverno/pkg/clients/kube/interface.generated.go
Charles-Edouard Brétéché 8d52c1366b
feat: improve instrumented clients (#7006)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2023-04-25 15:31:09 +00:00

87 lines
2.1 KiB
Go

package clientset
import (
"net/http"
"github.com/go-logr/logr"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes "k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)
type UpstreamInterface = k8s_io_client_go_kubernetes.Interface
type Interface interface {
UpstreamInterface
WithMetrics(metrics.MetricsConfigManager, metrics.ClientType) Interface
WithTracing() Interface
WithLogging(logr.Logger) Interface
}
func From(inner k8s_io_client_go_kubernetes.Interface, opts ...NewOption) Interface {
i := from(inner)
for _, opt := range opts {
i = opt(i)
}
return i
}
type NewOption func(Interface) Interface
func WithMetrics(m metrics.MetricsConfigManager, t metrics.ClientType) NewOption {
return func(i Interface) Interface {
return i.WithMetrics(m, t)
}
}
func WithTracing() NewOption {
return func(i Interface) Interface {
return i.WithTracing()
}
}
func WithLogging(logger logr.Logger) NewOption {
return func(i Interface) Interface {
return i.WithLogging(logger)
}
}
func NewForConfig(c *rest.Config, opts ...NewOption) (Interface, error) {
inner, err := k8s_io_client_go_kubernetes.NewForConfig(c)
if err != nil {
return nil, err
}
return From(inner, opts...), nil
}
func NewForConfigAndClient(c *rest.Config, httpClient *http.Client, opts ...NewOption) (Interface, error) {
inner, err := k8s_io_client_go_kubernetes.NewForConfigAndClient(c, httpClient)
if err != nil {
return nil, err
}
return From(inner, opts...), nil
}
func NewForConfigOrDie(c *rest.Config, opts ...NewOption) Interface {
return From(k8s_io_client_go_kubernetes.NewForConfigOrDie(c), opts...)
}
type wrapper struct {
k8s_io_client_go_kubernetes.Interface
}
func from(inner k8s_io_client_go_kubernetes.Interface, opts ...NewOption) Interface {
return &wrapper{inner}
}
func (i *wrapper) WithMetrics(m metrics.MetricsConfigManager, t metrics.ClientType) Interface {
return from(WrapWithMetrics(i, m, t))
}
func (i *wrapper) WithTracing() Interface {
return from(WrapWithTracing(i))
}
func (i *wrapper) WithLogging(logger logr.Logger) Interface {
return from(WrapWithLogging(i, logger))
}