1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-28 10:28:36 +00:00

refactor: improve instrumented clients code and support dynamic/metadata client (#5428)

* refactor: improve instrumented clients creation

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* refactor: instrumented clients code part 3

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* metadata

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* metadata

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
This commit is contained in:
Charles-Edouard Brétéché 2022-11-22 10:10:07 +01:00 committed by GitHub
parent 28619ce3db
commit 447360c1f3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
194 changed files with 34313 additions and 31324 deletions

53
cmd/internal/client.go Normal file
View file

@ -0,0 +1,53 @@
package internal
import (
"github.com/go-logr/logr"
"github.com/kyverno/kyverno/pkg/client/clientset/versioned"
dyn "github.com/kyverno/kyverno/pkg/clients/dynamic"
kube "github.com/kyverno/kyverno/pkg/clients/kube"
kyverno "github.com/kyverno/kyverno/pkg/clients/kyverno"
meta "github.com/kyverno/kyverno/pkg/clients/metadata"
"github.com/kyverno/kyverno/pkg/config"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/metadata"
"k8s.io/client-go/rest"
)
func CreateClientConfig(logger logr.Logger) *rest.Config {
clientConfig, err := config.CreateClientConfig(kubeconfig, clientRateLimitQPS, clientRateLimitBurst)
checkError(logger, err, "failed to create rest client configuration")
return clientConfig
}
func CreateKubernetesClient(logger logr.Logger, opts ...kube.NewOption) kubernetes.Interface {
logger = logger.WithName("kube-client")
logger.Info("create kube client...", "kubeconfig", kubeconfig, "qps", clientRateLimitQPS, "burst", clientRateLimitBurst)
client, err := kube.NewForConfig(CreateClientConfig(logger), opts...)
checkError(logger, err, "failed to create kubernetes client")
return client
}
func CreateKyvernoClient(logger logr.Logger, opts ...kyverno.NewOption) versioned.Interface {
logger = logger.WithName("kyverno-client")
logger.Info("create kyverno client...", "kubeconfig", kubeconfig, "qps", clientRateLimitQPS, "burst", clientRateLimitBurst)
client, err := kyverno.NewForConfig(CreateClientConfig(logger), opts...)
checkError(logger, err, "failed to create kubernetes client")
return client
}
func CreateDynamicClient(logger logr.Logger, opts ...dyn.NewOption) dynamic.Interface {
logger = logger.WithName("dynamic-client")
logger.Info("create dynamic client...", "kubeconfig", kubeconfig, "qps", clientRateLimitQPS, "burst", clientRateLimitBurst)
client, err := dyn.NewForConfig(CreateClientConfig(logger), opts...)
checkError(logger, err, "failed to create dynamic client")
return client
}
func CreateMetadataClient(logger logr.Logger, opts ...meta.NewOption) metadata.Interface {
logger = logger.WithName("metadata-client")
logger.Info("create metadata client...", "kubeconfig", kubeconfig, "qps", clientRateLimitQPS, "burst", clientRateLimitBurst)
client, err := meta.NewForConfig(CreateClientConfig(logger), opts...)
checkError(logger, err, "failed to create metadata client")
return client
}

View file

@ -3,6 +3,7 @@ package internal
type Configuration interface {
UsesTracing() bool
UsesProfiling() bool
UsesKubeconfig() bool
}
func NewConfiguration(options ...ConfigurationOption) Configuration {
@ -27,9 +28,16 @@ func WithProfiling() ConfigurationOption {
}
}
func WithKubeconfig() ConfigurationOption {
return func(c *configuration) {
c.usesKubeconfig = true
}
}
type configuration struct {
usesTracing bool
usesProfiling bool
usesTracing bool
usesProfiling bool
usesKubeconfig bool
}
func (c *configuration) UsesTracing() bool {
@ -39,3 +47,7 @@ func (c *configuration) UsesTracing() bool {
func (c *configuration) UsesProfiling() bool {
return c.usesProfiling
}
func (c *configuration) UsesKubeconfig() bool {
return c.usesKubeconfig
}

View file

@ -18,6 +18,10 @@ var (
tracingAddress string
tracingPort string
tracingCreds string
// kubeconfig
kubeconfig string
clientRateLimitQPS float64
clientRateLimitBurst int
)
func initLoggingFlags() {
@ -39,6 +43,12 @@ func initTracingFlags() {
flag.StringVar(&tracingCreds, "tracingCreds", "", "Set this flag to the CA secret containing the certificate which is used by our Opentelemetry Tracing Client. If empty string is set, means an insecure connection will be used")
}
func initKubeconfigFlags() {
flag.StringVar(&kubeconfig, "kubeconfig", "", "Path to a kubeconfig. Only required if out-of-cluster.")
flag.Float64Var(&clientRateLimitQPS, "clientRateLimitQPS", 20, "Configure the maximum QPS to the Kubernetes API server from Kyverno. Uses the client default if zero.")
flag.IntVar(&clientRateLimitBurst, "clientRateLimitBurst", 50, "Configure the maximum burst for throttle. Uses the client default if zero.")
}
func InitFlags(config Configuration) {
// logging
initLoggingFlags()
@ -50,4 +60,8 @@ func InitFlags(config Configuration) {
if config.UsesTracing() {
initTracingFlags()
}
// kubeconfig
if config.UsesKubeconfig() {
initKubeconfigFlags()
}
}

View file

@ -11,7 +11,306 @@ import (
"github.com/kyverno/kyverno/pkg/client/clientset/versioned"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/metadata"
)
const (
resourceTpl = `
package resource
import (
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
{{- range $package := Packages .Target.Type }}
{{ Pkg $package }} {{ Quote $package }}
{{- end }}
)
func WithMetrics(inner {{ GoType .Target.Type }}, recorder metrics.Recorder) {{ GoType .Target.Type }} {
return &withMetrics{inner, recorder}
}
func WithTracing(inner {{ GoType .Target.Type }}, client, kind string) {{ GoType .Target.Type }} {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner {{ GoType .Target.Type }}
recorder metrics.Recorder
}
{{- range $operation := .Target.Operations }}
func (c *withMetrics) {{ $operation.Method.Name }}(
{{- range $i, $arg := Args $operation.Method -}}
{{- if $arg.IsVariadic -}}
arg{{ $i }} ...{{ GoType $arg.Type.Elem }},
{{- else -}}
arg{{ $i }} {{ GoType $arg.Type }},
{{- end -}}
{{- end -}}
) (
{{- range $return := Returns $operation.Method -}}
{{ GoType $return }},
{{- end -}}
) {
defer c.recorder.Record({{ Quote (SnakeCase $operation.Method.Name) }})
return c.inner.{{ $operation.Method.Name }}(
{{- range $i, $arg := Args $operation.Method -}}
{{- if $arg.IsVariadic -}}
arg{{ $i }}...,
{{- else -}}
arg{{ $i }},
{{- end -}}
{{- end -}}
)
}
{{- end }}
type withTracing struct {
inner {{ GoType .Target.Type }}
client string
kind string
}
{{- range $operation := .Target.Operations }}
func (c *withTracing) {{ $operation.Method.Name }}(
{{- range $i, $arg := Args $operation.Method -}}
{{- if $arg.IsVariadic -}}
arg{{ $i }} ...{{ GoType $arg.Type.Elem }},
{{- else -}}
arg{{ $i }} {{ GoType $arg.Type }},
{{- end -}}
{{- end -}}
) (
{{- range $return := Returns $operation.Method -}}
{{ GoType $return }},
{{- end -}}
) {
{{- if $operation.HasContext }}
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, {{ Quote $operation.Method.Name }}),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", {{ Quote $operation.Method.Name }}),
)
defer span.End()
arg0 = ctx
{{- end }}
{{ range $i, $ret := Returns $operation.Method }}ret{{ $i }}{{ if not $ret.IsLast -}},{{- end }} {{ end }} := c.inner.{{ $operation.Method.Name }}(
{{- range $i, $arg := Args $operation.Method -}}
{{- if $arg.IsVariadic -}}
arg{{ $i }}...,
{{- else -}}
arg{{ $i }},
{{- end -}}
{{- end -}}
)
{{- if $operation.HasContext }}
{{- range $i, $ret := Returns $operation.Method }}
{{- if $ret.IsError }}
if ret{{ $i }} != nil {
span.RecordError(ret{{ $i }})
span.SetStatus(codes.Error, ret{{ $i }}.Error())
}
{{- end }}
{{- end }}
{{- end }}
return {{ range $i, $ret := Returns $operation.Method -}}
ret{{ $i }}{{ if not $ret.IsLast -}},{{- end }}
{{- end }}
}
{{- end }}
`
clientTpl = `
package client
import (
"k8s.io/client-go/rest"
"github.com/kyverno/kyverno/pkg/metrics"
{{- range $package := Packages .Target.Type }}
{{ Pkg $package }} {{ Quote $package }}
{{- end }}
{{- range $method, $resource := .Target.Resources }}
{{ ToLower $method.Name }} "github.com/kyverno/kyverno/{{ $.Folder }}/{{ ToLower $method.Name }}"
{{- end }}
)
func WithMetrics(inner {{ GoType .Target.Type }}, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) {{ GoType .Target.Type }} {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner {{ GoType .Target.Type }}, client string) {{ GoType .Target.Type }} {
return &withTracing{inner, client}
}
type withMetrics struct {
inner {{ GoType .Target }}
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
{{- range $method, $resource := .Target.Resources }}
func (c *withMetrics) {{ $method.Name }}({{- if $method.IsNamespaced -}}namespace string{{- end -}}) {{ GoType $resource.Type }} {
{{- if $method.IsNamespaced }}
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, {{ Quote $resource.Kind }}, c.clientType)
{{- else }}
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, {{ Quote $resource.Kind }}, c.clientType)
{{- end }}
return {{ ToLower $method.Name }}.WithMetrics(c.inner.{{ $method.Name }}(
{{- if $method.IsNamespaced -}}namespace{{- end -}}
), recorder)
}
{{- end }}
type withTracing struct {
inner {{ GoType .Target }}
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
{{- range $method, $resource := .Target.Resources }}
func (c *withTracing) {{ $method.Name }}({{- if $method.IsNamespaced -}}namespace string{{- end -}}) {{ GoType $resource.Type }} {
return {{ ToLower $method.Name }}.WithTracing(c.inner.{{ $method.Name }}(
{{- if $method.IsNamespaced -}}namespace{{- end -}}), c.client, {{ Quote $resource.Kind -}}
)
}
{{- end }}
`
clientsetTpl = `
package clientset
import (
"github.com/kyverno/kyverno/pkg/metrics"
{{- range $package := Packages .Target.Type }}
{{ Pkg $package }} {{ Quote $package }}
{{- end }}
{{- range $clientMethod, $client := .Target.Clients }}
{{ ToLower $clientMethod.Name }} "github.com/kyverno/kyverno/{{ $.Folder }}/{{ ToLower $clientMethod.Name }}"
{{- end }}
)
type clientset struct {
inner {{ GoType .Target }}
{{- range $clientMethod, $client := .Target.Clients }}
{{ ToLower $clientMethod.Name }} {{ GoType $client.Type }}
{{- end }}
}
func (c *clientset) Discovery() discovery.DiscoveryInterface {
return c.inner.Discovery()
}
{{- range $clientMethod, $client := .Target.Clients }}
func (c *clientset) {{ $clientMethod.Name }}() {{ GoType $client.Type }}{
return c.{{ ToLower $clientMethod.Name }}
}
{{- end }}
func WrapWithMetrics(inner {{ GoType .Target }}, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) {{ GoType .Target }} {
return &clientset{
inner: inner,
{{- range $clientMethod, $client := .Target.Clients }}
{{ ToLower $clientMethod.Name }}: {{ ToLower $clientMethod.Name }}.WithMetrics(inner.{{ $clientMethod.Name }}(), metrics, clientType),
{{- end }}
}
}
func WrapWithTracing(inner {{ GoType .Target }}) {{ GoType .Target }} {
return &clientset{
inner: inner,
{{- range $clientMethod, $client := .Target.Clients }}
{{ ToLower $clientMethod.Name }}: {{ ToLower $clientMethod.Name }}.WithTracing(inner.{{ $clientMethod.Name }}(), {{ Quote $clientMethod.Name }}),
{{- end }}
}
}
`
interfaceTpl = `
package clientset
import (
"github.com/kyverno/kyverno/pkg/metrics"
{{- range $package := Packages .Target.Type }}
{{ Pkg $package }} {{ Quote $package }}
{{- end }}
{{- range $clientMethod, $client := .Target.Clients }}
{{ ToLower $clientMethod.Name }} "github.com/kyverno/kyverno/{{ $.Folder }}/{{ ToLower $clientMethod.Name }}"
{{- end }}
)
type Interface interface {
{{ GoType .Target.Type }}
WithMetrics(m metrics.MetricsConfigManager, t metrics.ClientType) Interface
WithTracing() Interface
}
type wrapper struct {
{{ GoType .Target.Type }}
}
type NewOption func (Interface) Interface
func NewForConfig(c *rest.Config, opts ...NewOption) (Interface, error) {
inner, err := {{ Pkg .Target.Type.PkgPath }}.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 := {{ Pkg .Target.Type.PkgPath }}.NewForConfigAndClient(c, httpClient)
if err != nil {
return nil, err
}
return From(inner, opts...), nil
}
func NewForConfigOrDie(c *rest.Config, opts ...NewOption) Interface {
return From({{ Pkg .Target.Type.PkgPath }}.NewForConfigOrDie(c), opts...)
}
func from(inner {{ GoType .Target }}, opts ...NewOption) Interface {
return &wrapper{inner}
}
func From(inner {{ GoType .Target }}, opts ...NewOption) Interface {
i := from(inner)
for _, opt := range opts {
i = opt(i)
}
return i
}
func (i *wrapper) WithMetrics(m metrics.MetricsConfigManager, t metrics.ClientType) Interface {
return from(WrapWithMetrics(i, m, t))
}
func WithMetrics(m metrics.MetricsConfigManager, t metrics.ClientType) NewOption {
return func(i Interface) Interface {
return i.WithMetrics(m, t)
}
}
func (i *wrapper) WithTracing() Interface {
return from(WrapWithTracing(i))
}
func WithTracing() NewOption {
return func(i Interface) Interface {
return i.WithTracing()
}
}
`
)
var (
@ -50,28 +349,28 @@ func (o operation) HasError() bool {
}
type resource struct {
Method reflect.Method
Type reflect.Type
reflect.Type
Operations []operation
}
func (r resource) IsNamespaced() bool {
return r.Method.Type.NumIn() == 1
}
func (r resource) Kind() string {
return strings.ReplaceAll(r.Type.Name(), "Interface", "")
}
type resourceKey reflect.Method
func (r resourceKey) IsNamespaced() bool {
return r.Type.NumIn() == 1
}
type client struct {
Method reflect.Method
Type reflect.Type
Resources []resource
reflect.Type
Resources map[resourceKey]resource
}
type clientset struct {
Type reflect.Type
Clients []client
reflect.Type
Clients map[reflect.Method]client
}
func getIns(in reflect.Method) []reflect.Type {
@ -133,84 +432,82 @@ func toSnakeCase(str string) string {
return strings.ToLower(snake)
}
func parseResource(in reflect.Type) resource {
r := resource{
Type: in,
}
for _, operationMethod := range getMethods(in) {
o := operation{
Method: operationMethod,
}
r.Operations = append(r.Operations, o)
}
return r
}
func parseClient(in reflect.Type) client {
c := client{
Type: in,
Resources: map[resourceKey]resource{},
}
for _, resourceMethod := range getMethods(in) {
// resource methods return only the resosurce interface type
if resourceMethod.Type.NumOut() == 1 && resourceMethod.Name != "RESTClient" {
resourceType := resourceMethod.Type.Out(0)
r := resource{
Type: resourceType,
}
for _, operationMethod := range getMethods(resourceType) {
o := operation{
Method: operationMethod,
}
r.Operations = append(r.Operations, o)
}
c.Resources[resourceKey(resourceMethod)] = r
}
}
return c
}
func parse(in reflect.Type) clientset {
cs := clientset{
Type: in,
Type: in,
Clients: map[reflect.Method]client{},
}
for _, clientMethod := range getMethods(in) {
// client methods return only the client interface type
if clientMethod.Type.NumOut() == 1 && clientMethod.Name != "Discovery" {
clientType := clientMethod.Type.Out(0)
c := client{
Method: clientMethod,
Type: clientType,
}
for _, resourceMethod := range getMethods(clientType) {
// resource methods return only the resosurce interface type
if resourceMethod.Type.NumOut() == 1 && resourceMethod.Name != "RESTClient" {
resourceType := resourceMethod.Type.Out(0)
r := resource{
Method: resourceMethod,
Type: resourceType,
}
for _, operationMethod := range getMethods(resourceType) {
o := operation{
Method: operationMethod,
}
r.Operations = append(r.Operations, o)
}
c.Resources = append(c.Resources, r)
}
}
cs.Clients = append(cs.Clients, c)
cs.Clients[clientMethod] = parseClient(clientMethod.Type.Out(0))
}
}
return cs
}
func parseImports(client string, cs clientset, packages ...string) []string {
imports := sets.NewString(
"context",
"net/http",
"github.com/kyverno/kyverno/pkg/metrics",
"github.com/kyverno/kyverno/pkg/clients/middleware/metrics/"+client,
"github.com/kyverno/kyverno/pkg/clients/middleware/tracing/"+client,
"k8s.io/client-go/discovery",
"k8s.io/client-go/rest",
"github.com/kyverno/kyverno/pkg/tracing",
"go.opentelemetry.io/otel/attribute",
"go.opentelemetry.io/otel/codes",
cs.Type.PkgPath(),
)
for _, c := range cs.Clients {
imports.Insert(c.Type.PkgPath())
for _, r := range c.Resources {
imports.Insert(r.Type.PkgPath())
for _, o := range r.Operations {
for _, i := range getIns(o.Method) {
if i.Kind() == reflect.Pointer {
i = i.Elem()
}
if i.PkgPath() != "" {
imports.Insert(i.PkgPath())
}
}
for _, i := range getOuts(o.Method) {
pkg := i.PkgPath()
if i.Kind() == reflect.Pointer {
i.Elem().PkgPath()
}
if pkg != "" {
imports.Insert(i.PkgPath())
}
}
func parseImports(in reflect.Type) []string {
imports := sets.NewString(in.PkgPath())
for _, m := range getMethods(in) {
for _, i := range getIns(m) {
if i.Kind() == reflect.Pointer {
i = i.Elem()
}
if i.PkgPath() != "" {
imports.Insert(i.PkgPath())
}
}
for _, i := range getOuts(m) {
pkg := i.PkgPath()
if i.Kind() == reflect.Pointer {
i.Elem().PkgPath()
}
if pkg != "" {
imports.Insert(i.PkgPath())
}
}
}
return imports.List()
}
func executeTemplate(client string, tpl string, cs clientset, folder string, packages ...string) {
func executeTemplate(tpl string, data interface{}, folder string, file string) {
tmpl := template.New("xxx")
tmpl.Funcs(
template.FuncMap{
@ -242,367 +539,65 @@ func executeTemplate(client string, tpl string, cs clientset, folder string, pac
"GoType": func(in reflect.Type) string {
return goType(in)
},
"Packages": func(in reflect.Type) []string {
return parseImports(in)
},
},
)
if tmpl, err := tmpl.Parse(tpl); err != nil {
panic(err)
} else {
folder := path.Join(folder, client)
if err := os.MkdirAll(folder, 0o755); err != nil {
panic(fmt.Sprintf("Failed to create directories for %s", folder))
}
file := "clientset.generated.go"
f, err := os.Create(path.Join(folder, file))
if err != nil {
panic(fmt.Sprintf("Failed to create file %s", path.Join(folder, file)))
}
if err := tmpl.Execute(f, map[string]interface{}{
"Folder": folder,
"Client": client,
"Clientset": cs,
"Packages": parseImports(client, cs, packages...),
"Folder": folder,
"Target": data,
}); err != nil {
panic(err)
}
}
}
func generateInterface(client string, cs clientset, folder string, packages ...string) {
tpl := `
package client
{{- $clientsetPkg := Pkg .Clientset.Type.PkgPath }}
{{- $metricsPkg := Pkg "github.com/kyverno/kyverno/pkg/metrics" }}
{{- $restPkg := Pkg "k8s.io/client-go/rest" }}
{{- $middlewareMetricsPkg := print "github.com/kyverno/kyverno/pkg/clients/middleware/metrics/" .Client }}
{{- $middlewareTracingPkg := print "github.com/kyverno/kyverno/pkg/clients/middleware/tracing/" .Client }}
import (
{{- range $package := .Packages }}
{{ Pkg $package }} {{ Quote $package }}
{{- end }}
)
type Interface interface {
{{ GoType .Clientset.Type }}
WithMetrics(m {{ $metricsPkg }}.MetricsConfigManager, t {{ $metricsPkg }}.ClientType) Interface
WithTracing() Interface
func generateResource(r resource, folder string) {
executeTemplate(resourceTpl, r, folder, "resource.generated.go")
}
type wrapper struct {
{{ GoType .Clientset.Type }}
}
type NewOption func (Interface) Interface
func NewForConfig(c *{{ $restPkg }}.Config, opts ...NewOption) (Interface, error) {
inner, err := {{ $clientsetPkg }}.NewForConfig(c)
if err != nil {
return nil, err
}
return From(inner, opts...), nil
}
func NewForConfigAndClient(c *{{ $restPkg }}.Config, httpClient *{{ Pkg "net/http" }}.Client, opts ...NewOption) (Interface, error) {
inner, err := {{ $clientsetPkg }}.NewForConfigAndClient(c, httpClient)
if err != nil {
return nil, err
}
return From(inner, opts...), nil
}
func NewForConfigOrDie(c *{{ $restPkg }}.Config, opts ...NewOption) Interface {
return From({{ $clientsetPkg }}.NewForConfigOrDie(c), opts...)
}
func New(c {{ $restPkg }}.Interface, opts ...NewOption) Interface {
return From({{ $clientsetPkg }}.New(c), opts...)
}
func from(inner {{ GoType .Clientset.Type }}, opts ...NewOption) Interface {
return &wrapper{inner}
}
func From(inner {{ GoType .Clientset.Type }}, opts ...NewOption) Interface {
i := from(inner)
for _, opt := range opts {
i = opt(i)
}
return i
}
func (i *wrapper) WithMetrics(m {{ $metricsPkg }}.MetricsConfigManager, t {{ $metricsPkg }}.ClientType) Interface {
return from({{ Pkg $middlewareMetricsPkg }}.Wrap(i, m, t))
}
func WithMetrics(m {{ $metricsPkg }}.MetricsConfigManager, t {{ $metricsPkg }}.ClientType) NewOption {
return func(i Interface) Interface {
return i.WithMetrics(m, t)
func generateClient(c client, folder string) {
executeTemplate(clientTpl, c, folder, "client.generated.go")
for m, r := range c.Resources {
generateResource(r, path.Join(folder, strings.ToLower(m.Name)))
}
}
func (i *wrapper) WithTracing() Interface {
return from({{ Pkg $middlewareTracingPkg }}.Wrap(i))
}
func WithTracing() NewOption {
return func(i Interface) Interface {
return i.WithTracing()
}
}
`
executeTemplate(client, tpl, cs, folder, packages...)
}
func generateMetricsWrapper(client string, cs clientset, folder string, packages ...string) {
tpl := `
package client
{{- $clientsetPkg := Pkg .Clientset.Type.PkgPath }}
{{- $metricsPkg := Pkg "github.com/kyverno/kyverno/pkg/metrics" }}
{{- $discoveryPkg := Pkg "k8s.io/client-go/discovery" }}
{{- $restPkg := Pkg "k8s.io/client-go/rest" }}
import (
{{- range $package := .Packages }}
{{ Pkg $package }} {{ Quote $package }}
{{- end }}
)
// Wrap
func Wrap(inner {{ GoType .Clientset.Type }}, m {{ $metricsPkg }}.MetricsConfigManager, t {{ $metricsPkg }}.ClientType) {{ GoType .Clientset.Type }} {
return &clientset{
inner: inner,
{{- range $client := .Clientset.Clients }}
{{ ToLower $client.Method.Name }}: new{{ $client.Method.Name }}(inner.{{ $client.Method.Name }}(), m, t),
{{- end }}
func generateClientset(cs clientset, folder string) {
executeTemplate(clientsetTpl, cs, folder, "clientset.generated.go")
for m, c := range cs.Clients {
generateClient(c, path.Join(folder, strings.ToLower(m.Name)))
}
}
// clientset wrapper
type clientset struct {
inner {{ GoType .Clientset.Type }}
{{- range $client := .Clientset.Clients }}
{{ ToLower $client.Method.Name }} {{ GoType $client.Type }}
{{- end }}
}
// Discovery is NOT instrumented
func (c *clientset) Discovery() {{ $discoveryPkg }}.DiscoveryInterface {
return c.inner.Discovery()
}
{{- range $client := .Clientset.Clients }}
func (c *clientset) {{ $client.Method.Name }}() {{ GoType $client.Type }} {
return c.{{ ToLower $client.Method.Name }}
}
{{- end }}
{{- range $client := .Clientset.Clients }}
{{- $clientGoType := GoType $client.Type }}
// wrapped{{ $client.Method.Name }} wrapper
type wrapped{{ $client.Method.Name }} struct {
inner {{ $clientGoType }}
metrics {{ $metricsPkg }}.MetricsConfigManager
clientType {{ $metricsPkg }}.ClientType
}
func new{{ $client.Method.Name }}(inner {{ $clientGoType }}, metrics {{ $metricsPkg }}.MetricsConfigManager, t {{ $metricsPkg }}.ClientType) {{ $clientGoType }} {
return &wrapped{{ $client.Method.Name }}{inner, metrics, t}
}
{{- range $resource := $client.Resources }}
func (c *wrapped{{ $client.Method.Name }}) {{ $resource.Method.Name }}({{- if $resource.IsNamespaced -}}namespace string{{- end -}}) {{ GoType $resource.Type }} {
{{- if $resource.IsNamespaced }}
recorder := {{ $metricsPkg }}.NamespacedClientQueryRecorder(c.metrics, namespace, {{ Quote $resource.Kind }}, c.clientType)
return new{{ $client.Method.Name }}{{ $resource.Method.Name }}(c.inner.{{ $resource.Method.Name }}(namespace), recorder)
{{- else }}
recorder := {{ $metricsPkg }}.ClusteredClientQueryRecorder(c.metrics, {{ Quote $resource.Kind }}, c.clientType)
return new{{ $client.Method.Name }}{{ $resource.Method.Name }}(c.inner.{{ $resource.Method.Name }}(), recorder)
{{- end }}
}
{{- end }}
// RESTClient is NOT instrumented
func (c *wrapped{{ $client.Method.Name }}) RESTClient() {{ $restPkg }}.Interface {
return c.inner.RESTClient()
}
{{- end }}
{{- range $client := .Clientset.Clients }}
{{- range $resource := $client.Resources }}
// wrapped{{ $client.Method.Name }}{{ $resource.Method.Name }} wrapper
type wrapped{{ $client.Method.Name }}{{ $resource.Method.Name }} struct {
inner {{ GoType $resource.Type }}
recorder {{ $metricsPkg }}.Recorder
}
func new{{ $client.Method.Name }}{{ $resource.Method.Name }}(inner {{ GoType $resource.Type }}, recorder {{ $metricsPkg }}.Recorder) {{ GoType $resource.Type }} {
return &wrapped{{ $client.Method.Name }}{{ $resource.Method.Name }}{inner, recorder}
}
{{- range $operation := $resource.Operations }}
func (c *wrapped{{ $client.Method.Name }}{{ $resource.Method.Name }}) {{ $operation.Method.Name }}(
{{- range $i, $arg := Args $operation.Method -}}
{{- if $arg.IsVariadic -}}
arg{{ $i }} ...{{ GoType $arg.Type.Elem }},
{{- else -}}
arg{{ $i }} {{ GoType $arg.Type }},
{{- end -}}
{{- end -}}
) (
{{- range $return := Returns $operation.Method -}}
{{ GoType $return }},
{{- end -}}
) {
defer c.recorder.Record({{ Quote (SnakeCase $operation.Method.Name) }})
return c.inner.{{ $operation.Method.Name }}(
{{- range $i, $arg := Args $operation.Method -}}
{{- if $arg.IsVariadic -}}
arg{{ $i }}...,
{{- else -}}
arg{{ $i }},
{{- end -}}
{{- end -}}
)
}
{{- end }}
{{- end }}
{{- end }}
`
executeTemplate(client, tpl, cs, folder, packages...)
}
func generateTracesWrapper(client string, cs clientset, folder string, packages ...string) {
tpl := `
package client
{{- $clientsetPkg := Pkg .Clientset.Type.PkgPath }}
{{- $discoveryPkg := Pkg "k8s.io/client-go/discovery" }}
{{- $restPkg := Pkg "k8s.io/client-go/rest" }}
{{- $tracingPkg := Pkg "github.com/kyverno/kyverno/pkg/tracing" }}
{{- $attributePkg := Pkg "go.opentelemetry.io/otel/attribute" }}
{{- $codesPkg := Pkg "go.opentelemetry.io/otel/codes" }}
import (
{{- range $package := .Packages }}
{{ Pkg $package }} {{ Quote $package }}
{{- end }}
)
// Wrap
func Wrap(inner {{ GoType .Clientset.Type }}) {{ GoType .Clientset.Type }} {
return &clientset{
inner: inner,
{{- range $client := .Clientset.Clients }}
{{ ToLower $client.Method.Name }}: new{{ $client.Method.Name }}(inner.{{ $client.Method.Name }}()),
{{- end }}
}
}
// clientset wrapper
type clientset struct {
inner {{ GoType .Clientset.Type }}
{{- range $client := .Clientset.Clients }}
{{ ToLower $client.Method.Name }} {{ GoType $client.Type }}
{{- end }}
}
// Discovery is NOT instrumented
func (c *clientset) Discovery() {{ $discoveryPkg }}.DiscoveryInterface {
return c.inner.Discovery()
}
{{- range $client := .Clientset.Clients }}
func (c *clientset) {{ $client.Method.Name }}() {{ GoType $client.Type }} {
return c.{{ ToLower $client.Method.Name }}
}
{{- end }}
{{- range $client := .Clientset.Clients }}
{{- $clientGoType := GoType $client.Type }}
// wrapped{{ $client.Method.Name }} wrapper
type wrapped{{ $client.Method.Name }} struct {
inner {{ $clientGoType }}
}
func new{{ $client.Method.Name }}(inner {{ $clientGoType }}) {{ $clientGoType }} {
return &wrapped{{ $client.Method.Name }}{inner}
}
{{- range $resource := $client.Resources }}
func (c *wrapped{{ $client.Method.Name }}) {{ $resource.Method.Name }}({{- if $resource.IsNamespaced -}}namespace string{{- end -}}) {{ GoType $resource.Type }} {
{{- if $resource.IsNamespaced }}
return new{{ $client.Method.Name }}{{ $resource.Method.Name }}(c.inner.{{ $resource.Method.Name }}(namespace))
{{- else }}
return new{{ $client.Method.Name }}{{ $resource.Method.Name }}(c.inner.{{ $resource.Method.Name }}())
{{- end }}
}
{{- end }}
// RESTClient is NOT instrumented
func (c *wrapped{{ $client.Method.Name }}) RESTClient() {{ $restPkg }}.Interface {
return c.inner.RESTClient()
}
{{- end }}
{{- range $client := .Clientset.Clients }}
{{- range $resource := $client.Resources }}
// wrapped{{ $client.Method.Name }}{{ $resource.Method.Name }} wrapper
type wrapped{{ $client.Method.Name }}{{ $resource.Method.Name }} struct {
inner {{ GoType $resource.Type }}
}
func new{{ $client.Method.Name }}{{ $resource.Method.Name }}(inner {{ GoType $resource.Type }}) {{ GoType $resource.Type }} {
return &wrapped{{ $client.Method.Name }}{{ $resource.Method.Name }}{inner}
}
{{- range $operation := $resource.Operations }}
func (c *wrapped{{ $client.Method.Name }}{{ $resource.Method.Name }}) {{ $operation.Method.Name }}(
{{- range $i, $arg := Args $operation.Method -}}
{{- if $arg.IsVariadic -}}
arg{{ $i }} ...{{ GoType $arg.Type.Elem }},
{{- else -}}
arg{{ $i }} {{ GoType $arg.Type }},
{{- end -}}
{{- end -}}
) (
{{- range $return := Returns $operation.Method -}}
{{ GoType $return }},
{{- end -}}
) {
{{- if $operation.HasContext }}
ctx, span := {{ $tracingPkg }}.StartSpan(
arg0,
{{ Quote $.Folder }},
"KUBE {{ $client.Method.Name }}/{{ $resource.Method.Name }}/{{ $operation.Method.Name }}",
{{ $attributePkg }}.String("client", {{ Quote $client.Method.Name }}),
{{ $attributePkg }}.String("resource", {{ Quote $resource.Method.Name }}),
{{ $attributePkg }}.String("kind", {{ Quote $resource.Kind }}),
)
defer span.End()
arg0 = ctx
{{- end }}
{{ range $i, $ret := Returns $operation.Method }}ret{{ $i }}{{ if not $ret.IsLast -}},{{- end }} {{ end }} := c.inner.{{ $operation.Method.Name }}(
{{- range $i, $arg := Args $operation.Method -}}
{{- if $arg.IsVariadic -}}
arg{{ $i }}...,
{{- else -}}
arg{{ $i }},
{{- end -}}
{{- end -}}
)
{{- if $operation.HasContext }}
{{- range $i, $ret := Returns $operation.Method }}
{{- if $ret.IsError }}
if ret{{ $i }} != nil {
span.RecordError(ret{{ $i }})
span.SetStatus({{ $codesPkg }}.Ok, ret{{ $i }}.Error())
}
{{- end }}
{{- end }}
{{- end }}
return {{ range $i, $ret := Returns $operation.Method -}}
ret{{ $i }}{{ if not $ret.IsLast -}},{{- end }}
{{- end }}
}
{{- end }}
{{- end }}
{{- end }}
`
executeTemplate(client, tpl, cs, folder, packages...)
func generateInterface(cs clientset, folder string) {
executeTemplate(interfaceTpl, cs, folder, "interface.generated.go")
}
func main() {
kube := parse(reflect.TypeOf((*kubernetes.Interface)(nil)).Elem())
generateClientset(kube, "pkg/clients/kube")
generateInterface(kube, "pkg/clients/kube")
kyverno := parse(reflect.TypeOf((*versioned.Interface)(nil)).Elem())
generateInterface("kube", kube, "pkg/clients")
generateInterface("kyverno", kyverno, "pkg/clients")
generateMetricsWrapper("kube", kube, "pkg/clients/middleware/metrics")
generateMetricsWrapper("kyverno", kyverno, "pkg/clients/middleware/metrics")
generateTracesWrapper("kube", kube, "pkg/clients/middleware/tracing")
generateTracesWrapper("kyverno", kyverno, "pkg/clients/middleware/tracing")
generateClientset(kyverno, "pkg/clients/kyverno")
generateInterface(kyverno, "pkg/clients/kyverno")
dynamicInterface := parse(reflect.TypeOf((*dynamic.Interface)(nil)).Elem())
dynamicResource := parseResource(reflect.TypeOf((*dynamic.ResourceInterface)(nil)).Elem())
generateResource(dynamicResource, "pkg/clients/dynamic/resource")
generateInterface(dynamicInterface, "pkg/clients/dynamic")
metadataInterface := parse(reflect.TypeOf((*metadata.Interface)(nil)).Elem())
metadataResource := parseResource(reflect.TypeOf((*metadata.ResourceInterface)(nil)).Elem())
generateInterface(metadataInterface, "pkg/clients/metadata")
generateResource(metadataResource, "pkg/clients/metadata/resource")
}

View file

@ -56,7 +56,6 @@ type Interface interface {
type client struct {
client dynamic.Interface
discoveryClient IDiscovery
clientConfig *rest.Config
kclient kubernetes.Interface
metricsConfig metrics.MetricsConfigManager
restClient rest.Interface
@ -69,16 +68,13 @@ func NewClient(ctx context.Context, config *rest.Config, kclient kubernetes.Inte
return nil, err
}
client := client{
client: dclient,
clientConfig: config,
kclient: kclient,
restClient: kclient.Discovery().RESTClient(),
client: dclient,
kclient: kclient,
restClient: kclient.Discovery().RESTClient(),
}
if metricsConfig != nil {
client.metricsConfig = metricsConfig
}
// Set discovery client
discoveryClient := &serverPreferredResources{
cachedClient: memory.NewMemCacheClient(kclient.Discovery()),

View file

@ -0,0 +1,77 @@
package clientset
import (
"github.com/kyverno/kyverno/pkg/clients/dynamic/resource"
"github.com/kyverno/kyverno/pkg/metrics"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/dynamic"
)
type namespaceableInterface interface {
Namespace(string) dynamic.ResourceInterface
}
func WrapWithMetrics(inner dynamic.Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) dynamic.Interface {
return &withMetrics{inner, metrics, clientType}
}
func WrapWithTracing(inner dynamic.Interface) dynamic.Interface {
return &withTracing{inner}
}
type withMetrics struct {
inner dynamic.Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
type withMetricsNamespaceable struct {
metrics metrics.MetricsConfigManager
resource string
clientType metrics.ClientType
inner namespaceableInterface
}
func (c *withMetricsNamespaceable) Namespace(namespace string) dynamic.ResourceInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, c.resource, c.clientType)
return resource.WithMetrics(c.inner.Namespace(namespace), recorder)
}
func (c *withMetrics) Resource(gvr schema.GroupVersionResource) dynamic.NamespaceableResourceInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, gvr.Resource, c.clientType)
inner := c.inner.Resource(gvr)
return struct {
dynamic.ResourceInterface
namespaceableInterface
}{
resource.WithMetrics(inner, recorder),
&withMetricsNamespaceable{c.metrics, gvr.Resource, c.clientType, inner},
}
}
type withTracing struct {
inner dynamic.Interface
}
type withTracingNamespaceable struct {
client string
kind string
inner namespaceableInterface
}
func (c *withTracingNamespaceable) Namespace(namespace string) dynamic.ResourceInterface {
return resource.WithTracing(c.inner.Namespace(namespace), c.client, c.kind)
}
func (c *withTracing) Resource(gvr schema.GroupVersionResource) dynamic.NamespaceableResourceInterface {
inner := c.inner.Resource(gvr)
client := gvr.GroupResource().String()
kind := gvr.Resource
return struct {
dynamic.ResourceInterface
namespaceableInterface
}{
resource.WithTracing(inner, client, kind),
&withTracingNamespaceable{client, kind, inner},
}
}

View file

@ -0,0 +1,73 @@
package clientset
import (
"net/http"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_dynamic "k8s.io/client-go/dynamic"
"k8s.io/client-go/rest"
)
type Interface interface {
k8s_io_client_go_dynamic.Interface
WithMetrics(m metrics.MetricsConfigManager, t metrics.ClientType) Interface
WithTracing() Interface
}
type wrapper struct {
k8s_io_client_go_dynamic.Interface
}
type NewOption func(Interface) Interface
func NewForConfig(c *rest.Config, opts ...NewOption) (Interface, error) {
inner, err := k8s_io_client_go_dynamic.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_dynamic.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_dynamic.NewForConfigOrDie(c), opts...)
}
func from(inner k8s_io_client_go_dynamic.Interface, opts ...NewOption) Interface {
return &wrapper{inner}
}
func From(inner k8s_io_client_go_dynamic.Interface, opts ...NewOption) Interface {
i := from(inner)
for _, opt := range opts {
i = opt(i)
}
return i
}
func (i *wrapper) WithMetrics(m metrics.MetricsConfigManager, t metrics.ClientType) Interface {
return from(WrapWithMetrics(i, m, t))
}
func WithMetrics(m metrics.MetricsConfigManager, t metrics.ClientType) NewOption {
return func(i Interface) Interface {
return i.WithMetrics(m, t)
}
}
func (i *wrapper) WithTracing() Interface {
return from(WrapWithTracing(i))
}
func WithTracing() NewOption {
return func(i Interface) Interface {
return i.WithTracing()
}
}

View file

@ -0,0 +1,279 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_apis_meta_v1_unstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_dynamic "k8s.io/client-go/dynamic"
)
func WithMetrics(inner k8s_io_client_go_dynamic.ResourceInterface, recorder metrics.Recorder) k8s_io_client_go_dynamic.ResourceInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_dynamic.ResourceInterface, client, kind string) k8s_io_client_go_dynamic.ResourceInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_dynamic.ResourceInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 string, arg2 *k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions, arg4 ...string) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2, arg3, arg4...)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 string, arg2 *k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions, arg3 ...string) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2, arg3...)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg3 ...string) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2, arg3...)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions, arg3 ...string) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2, arg3...)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.UnstructuredList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions, arg3 ...string) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2, arg3...)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_dynamic.ResourceInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 string, arg2 *k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions, arg4 ...string) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2, arg3, arg4...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 string, arg2 *k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions, arg3 ...string) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2, arg3...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg3 ...string) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2, arg3...)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions, arg3 ...string) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2, arg3...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.UnstructuredList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions, arg3 ...string) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2, arg3...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_apimachinery_pkg_apis_meta_v1_unstructured.Unstructured, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,50 @@
package client
import (
mutatingwebhookconfigurations "github.com/kyverno/kyverno/pkg/clients/kube/admissionregistrationv1/mutatingwebhookconfigurations"
validatingwebhookconfigurations "github.com/kyverno/kyverno/pkg/clients/kube/admissionregistrationv1/validatingwebhookconfigurations"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_admissionregistration_v1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.AdmissionregistrationV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_admissionregistration_v1.AdmissionregistrationV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.AdmissionregistrationV1Interface, client string) k8s_io_client_go_kubernetes_typed_admissionregistration_v1.AdmissionregistrationV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.AdmissionregistrationV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) MutatingWebhookConfigurations() k8s_io_client_go_kubernetes_typed_admissionregistration_v1.MutatingWebhookConfigurationInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "MutatingWebhookConfiguration", c.clientType)
return mutatingwebhookconfigurations.WithMetrics(c.inner.MutatingWebhookConfigurations(), recorder)
}
func (c *withMetrics) ValidatingWebhookConfigurations() k8s_io_client_go_kubernetes_typed_admissionregistration_v1.ValidatingWebhookConfigurationInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "ValidatingWebhookConfiguration", c.clientType)
return validatingwebhookconfigurations.WithMetrics(c.inner.ValidatingWebhookConfigurations(), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.AdmissionregistrationV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) MutatingWebhookConfigurations() k8s_io_client_go_kubernetes_typed_admissionregistration_v1.MutatingWebhookConfigurationInterface {
return mutatingwebhookconfigurations.WithTracing(c.inner.MutatingWebhookConfigurations(), c.client, "MutatingWebhookConfiguration")
}
func (c *withTracing) ValidatingWebhookConfigurations() k8s_io_client_go_kubernetes_typed_admissionregistration_v1.ValidatingWebhookConfigurationInterface {
return validatingwebhookconfigurations.WithTracing(c.inner.ValidatingWebhookConfigurations(), c.client, "ValidatingWebhookConfiguration")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_admissionregistration_v1 "k8s.io/api/admissionregistration/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_admissionregistration_v1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
k8s_io_client_go_kubernetes_typed_admissionregistration_v1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.MutatingWebhookConfigurationInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_admissionregistration_v1.MutatingWebhookConfigurationInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.MutatingWebhookConfigurationInterface, client, kind string) k8s_io_client_go_kubernetes_typed_admissionregistration_v1.MutatingWebhookConfigurationInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.MutatingWebhookConfigurationInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_admissionregistration_v1.MutatingWebhookConfigurationApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfigurationList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.MutatingWebhookConfigurationInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_admissionregistration_v1.MutatingWebhookConfigurationApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfigurationList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_admissionregistration_v1.MutatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_admissionregistration_v1 "k8s.io/api/admissionregistration/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_admissionregistration_v1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1"
k8s_io_client_go_kubernetes_typed_admissionregistration_v1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.ValidatingWebhookConfigurationInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_admissionregistration_v1.ValidatingWebhookConfigurationInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.ValidatingWebhookConfigurationInterface, client, kind string) k8s_io_client_go_kubernetes_typed_admissionregistration_v1.ValidatingWebhookConfigurationInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.ValidatingWebhookConfigurationInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_admissionregistration_v1.ValidatingWebhookConfigurationApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfigurationList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1.ValidatingWebhookConfigurationInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_admissionregistration_v1.ValidatingWebhookConfigurationApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfigurationList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_admissionregistration_v1.ValidatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,50 @@
package client
import (
mutatingwebhookconfigurations "github.com/kyverno/kyverno/pkg/clients/kube/admissionregistrationv1beta1/mutatingwebhookconfigurations"
validatingwebhookconfigurations "github.com/kyverno/kyverno/pkg/clients/kube/admissionregistrationv1beta1/validatingwebhookconfigurations"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.AdmissionregistrationV1beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.AdmissionregistrationV1beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.AdmissionregistrationV1beta1Interface, client string) k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.AdmissionregistrationV1beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.AdmissionregistrationV1beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) MutatingWebhookConfigurations() k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.MutatingWebhookConfigurationInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "MutatingWebhookConfiguration", c.clientType)
return mutatingwebhookconfigurations.WithMetrics(c.inner.MutatingWebhookConfigurations(), recorder)
}
func (c *withMetrics) ValidatingWebhookConfigurations() k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.ValidatingWebhookConfigurationInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "ValidatingWebhookConfiguration", c.clientType)
return validatingwebhookconfigurations.WithMetrics(c.inner.ValidatingWebhookConfigurations(), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.AdmissionregistrationV1beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) MutatingWebhookConfigurations() k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.MutatingWebhookConfigurationInterface {
return mutatingwebhookconfigurations.WithTracing(c.inner.MutatingWebhookConfigurations(), c.client, "MutatingWebhookConfiguration")
}
func (c *withTracing) ValidatingWebhookConfigurations() k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.ValidatingWebhookConfigurationInterface {
return validatingwebhookconfigurations.WithTracing(c.inner.ValidatingWebhookConfigurations(), c.client, "ValidatingWebhookConfiguration")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_admissionregistration_v1beta1 "k8s.io/api/admissionregistration/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_admissionregistration_v1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.MutatingWebhookConfigurationInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.MutatingWebhookConfigurationInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.MutatingWebhookConfigurationInterface, client, kind string) k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.MutatingWebhookConfigurationInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.MutatingWebhookConfigurationInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_admissionregistration_v1beta1.MutatingWebhookConfigurationApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfigurationList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.MutatingWebhookConfigurationInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_admissionregistration_v1beta1.MutatingWebhookConfigurationApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfigurationList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_admissionregistration_v1beta1.MutatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_admissionregistration_v1beta1 "k8s.io/api/admissionregistration/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_admissionregistration_v1beta1 "k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1"
k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.ValidatingWebhookConfigurationInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.ValidatingWebhookConfigurationInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.ValidatingWebhookConfigurationInterface, client, kind string) k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.ValidatingWebhookConfigurationInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.ValidatingWebhookConfigurationInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_admissionregistration_v1beta1.ValidatingWebhookConfigurationApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfigurationList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.ValidatingWebhookConfigurationInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_admissionregistration_v1beta1.ValidatingWebhookConfigurationApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfigurationList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_admissionregistration_v1beta1.ValidatingWebhookConfiguration, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,74 @@
package client
import (
controllerrevisions "github.com/kyverno/kyverno/pkg/clients/kube/appsv1/controllerrevisions"
daemonsets "github.com/kyverno/kyverno/pkg/clients/kube/appsv1/daemonsets"
deployments "github.com/kyverno/kyverno/pkg/clients/kube/appsv1/deployments"
replicasets "github.com/kyverno/kyverno/pkg/clients/kube/appsv1/replicasets"
statefulsets "github.com/kyverno/kyverno/pkg/clients/kube/appsv1/statefulsets"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_apps_v1 "k8s.io/client-go/kubernetes/typed/apps/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1.AppsV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_apps_v1.AppsV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1.AppsV1Interface, client string) k8s_io_client_go_kubernetes_typed_apps_v1.AppsV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.AppsV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) ControllerRevisions(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1.ControllerRevisionInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "ControllerRevision", c.clientType)
return controllerrevisions.WithMetrics(c.inner.ControllerRevisions(namespace), recorder)
}
func (c *withMetrics) DaemonSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1.DaemonSetInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "DaemonSet", c.clientType)
return daemonsets.WithMetrics(c.inner.DaemonSets(namespace), recorder)
}
func (c *withMetrics) Deployments(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1.DeploymentInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Deployment", c.clientType)
return deployments.WithMetrics(c.inner.Deployments(namespace), recorder)
}
func (c *withMetrics) ReplicaSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1.ReplicaSetInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "ReplicaSet", c.clientType)
return replicasets.WithMetrics(c.inner.ReplicaSets(namespace), recorder)
}
func (c *withMetrics) StatefulSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1.StatefulSetInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "StatefulSet", c.clientType)
return statefulsets.WithMetrics(c.inner.StatefulSets(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.AppsV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) ControllerRevisions(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1.ControllerRevisionInterface {
return controllerrevisions.WithTracing(c.inner.ControllerRevisions(namespace), c.client, "ControllerRevision")
}
func (c *withTracing) DaemonSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1.DaemonSetInterface {
return daemonsets.WithTracing(c.inner.DaemonSets(namespace), c.client, "DaemonSet")
}
func (c *withTracing) Deployments(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1.DeploymentInterface {
return deployments.WithTracing(c.inner.Deployments(namespace), c.client, "Deployment")
}
func (c *withTracing) ReplicaSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1.ReplicaSetInterface {
return replicasets.WithTracing(c.inner.ReplicaSets(namespace), c.client, "ReplicaSet")
}
func (c *withTracing) StatefulSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1.StatefulSetInterface {
return statefulsets.WithTracing(c.inner.StatefulSets(namespace), c.client, "StatefulSet")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1 "k8s.io/api/apps/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1 "k8s.io/client-go/applyconfigurations/apps/v1"
k8s_io_client_go_kubernetes_typed_apps_v1 "k8s.io/client-go/kubernetes/typed/apps/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1.ControllerRevisionInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1.ControllerRevisionInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1.ControllerRevisionInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1.ControllerRevisionInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.ControllerRevisionInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.ControllerRevisionApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.ControllerRevision, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1.ControllerRevision, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1.ControllerRevision, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1.ControllerRevisionList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1.ControllerRevision, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.ControllerRevision, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.ControllerRevisionInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.ControllerRevisionApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1.ControllerRevisionList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1 "k8s.io/api/apps/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1 "k8s.io/client-go/applyconfigurations/apps/v1"
k8s_io_client_go_kubernetes_typed_apps_v1 "k8s.io/client-go/kubernetes/typed/apps/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1.DaemonSetInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1.DaemonSetInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1.DaemonSetInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1.DaemonSetInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.DaemonSetInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1.DaemonSetList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1.DaemonSet, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.DaemonSetInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1.DaemonSetList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,348 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1 "k8s.io/api/apps/v1"
k8s_io_api_autoscaling_v1 "k8s.io/api/autoscaling/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1 "k8s.io/client-go/applyconfigurations/apps/v1"
k8s_io_client_go_applyconfigurations_autoscaling_v1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
k8s_io_client_go_kubernetes_typed_apps_v1 "k8s.io/client-go/kubernetes/typed/apps/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1.DeploymentInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1.DeploymentInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1.DeploymentInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1.DeploymentInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.DeploymentInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.Deployment, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_autoscaling_v1.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("apply_scale")
return c.inner.ApplyScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.Deployment, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1.Deployment, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1.Deployment, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("get_scale")
return c.inner.GetScale(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1.DeploymentList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1.Deployment, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.Deployment, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_autoscaling_v1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("update_scale")
return c.inner.UpdateScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.Deployment, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.DeploymentInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_autoscaling_v1.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "GetScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "GetScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.GetScale(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1.DeploymentList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_autoscaling_v1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,348 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1 "k8s.io/api/apps/v1"
k8s_io_api_autoscaling_v1 "k8s.io/api/autoscaling/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1 "k8s.io/client-go/applyconfigurations/apps/v1"
k8s_io_client_go_applyconfigurations_autoscaling_v1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
k8s_io_client_go_kubernetes_typed_apps_v1 "k8s.io/client-go/kubernetes/typed/apps/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1.ReplicaSetInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1.ReplicaSetInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1.ReplicaSetInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1.ReplicaSetInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.ReplicaSetInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_autoscaling_v1.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("apply_scale")
return c.inner.ApplyScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("get_scale")
return c.inner.GetScale(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1.ReplicaSetList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1.ReplicaSet, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_autoscaling_v1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("update_scale")
return c.inner.UpdateScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.ReplicaSetInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_autoscaling_v1.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "GetScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "GetScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.GetScale(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1.ReplicaSetList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_autoscaling_v1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,348 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1 "k8s.io/api/apps/v1"
k8s_io_api_autoscaling_v1 "k8s.io/api/autoscaling/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1 "k8s.io/client-go/applyconfigurations/apps/v1"
k8s_io_client_go_applyconfigurations_autoscaling_v1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
k8s_io_client_go_kubernetes_typed_apps_v1 "k8s.io/client-go/kubernetes/typed/apps/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1.StatefulSetInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1.StatefulSetInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1.StatefulSetInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1.StatefulSetInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.StatefulSetInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_autoscaling_v1.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("apply_scale")
return c.inner.ApplyScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("get_scale")
return c.inner.GetScale(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1.StatefulSetList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1.StatefulSet, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_autoscaling_v1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("update_scale")
return c.inner.UpdateScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1.StatefulSetInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_autoscaling_v1.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "GetScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "GetScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.GetScale(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1.StatefulSetList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_autoscaling_v1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,58 @@
package client
import (
controllerrevisions "github.com/kyverno/kyverno/pkg/clients/kube/appsv1beta1/controllerrevisions"
deployments "github.com/kyverno/kyverno/pkg/clients/kube/appsv1beta1/deployments"
statefulsets "github.com/kyverno/kyverno/pkg/clients/kube/appsv1beta1/statefulsets"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_apps_v1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.AppsV1beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_apps_v1beta1.AppsV1beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.AppsV1beta1Interface, client string) k8s_io_client_go_kubernetes_typed_apps_v1beta1.AppsV1beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.AppsV1beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) ControllerRevisions(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta1.ControllerRevisionInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "ControllerRevision", c.clientType)
return controllerrevisions.WithMetrics(c.inner.ControllerRevisions(namespace), recorder)
}
func (c *withMetrics) Deployments(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta1.DeploymentInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Deployment", c.clientType)
return deployments.WithMetrics(c.inner.Deployments(namespace), recorder)
}
func (c *withMetrics) StatefulSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta1.StatefulSetInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "StatefulSet", c.clientType)
return statefulsets.WithMetrics(c.inner.StatefulSets(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.AppsV1beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) ControllerRevisions(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta1.ControllerRevisionInterface {
return controllerrevisions.WithTracing(c.inner.ControllerRevisions(namespace), c.client, "ControllerRevision")
}
func (c *withTracing) Deployments(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta1.DeploymentInterface {
return deployments.WithTracing(c.inner.Deployments(namespace), c.client, "Deployment")
}
func (c *withTracing) StatefulSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta1.StatefulSetInterface {
return statefulsets.WithTracing(c.inner.StatefulSets(namespace), c.client, "StatefulSet")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1beta1 "k8s.io/api/apps/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
k8s_io_client_go_kubernetes_typed_apps_v1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.ControllerRevisionInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1beta1.ControllerRevisionInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.ControllerRevisionInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1beta1.ControllerRevisionInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.ControllerRevisionInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta1.ControllerRevisionApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta1.ControllerRevision, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta1.ControllerRevision, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta1.ControllerRevision, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta1.ControllerRevisionList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta1.ControllerRevision, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta1.ControllerRevision, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.ControllerRevisionInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta1.ControllerRevisionApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta1.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta1.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta1.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta1.ControllerRevisionList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta1.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta1.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1beta1 "k8s.io/api/apps/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
k8s_io_client_go_kubernetes_typed_apps_v1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.DeploymentInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1beta1.DeploymentInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.DeploymentInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1beta1.DeploymentInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.DeploymentInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta1.DeploymentList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta1.Deployment, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.DeploymentInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta1.DeploymentList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1beta1 "k8s.io/api/apps/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1beta1 "k8s.io/client-go/applyconfigurations/apps/v1beta1"
k8s_io_client_go_kubernetes_typed_apps_v1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.StatefulSetInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1beta1.StatefulSetInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.StatefulSetInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1beta1.StatefulSetInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.StatefulSetInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta1.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta1.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta1.StatefulSetList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta1.StatefulSetInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta1.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta1.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta1.StatefulSetList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta1.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta1.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,74 @@
package client
import (
controllerrevisions "github.com/kyverno/kyverno/pkg/clients/kube/appsv1beta2/controllerrevisions"
daemonsets "github.com/kyverno/kyverno/pkg/clients/kube/appsv1beta2/daemonsets"
deployments "github.com/kyverno/kyverno/pkg/clients/kube/appsv1beta2/deployments"
replicasets "github.com/kyverno/kyverno/pkg/clients/kube/appsv1beta2/replicasets"
statefulsets "github.com/kyverno/kyverno/pkg/clients/kube/appsv1beta2/statefulsets"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_apps_v1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.AppsV1beta2Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_apps_v1beta2.AppsV1beta2Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.AppsV1beta2Interface, client string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.AppsV1beta2Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.AppsV1beta2Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) ControllerRevisions(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.ControllerRevisionInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "ControllerRevision", c.clientType)
return controllerrevisions.WithMetrics(c.inner.ControllerRevisions(namespace), recorder)
}
func (c *withMetrics) DaemonSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.DaemonSetInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "DaemonSet", c.clientType)
return daemonsets.WithMetrics(c.inner.DaemonSets(namespace), recorder)
}
func (c *withMetrics) Deployments(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.DeploymentInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Deployment", c.clientType)
return deployments.WithMetrics(c.inner.Deployments(namespace), recorder)
}
func (c *withMetrics) ReplicaSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.ReplicaSetInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "ReplicaSet", c.clientType)
return replicasets.WithMetrics(c.inner.ReplicaSets(namespace), recorder)
}
func (c *withMetrics) StatefulSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.StatefulSetInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "StatefulSet", c.clientType)
return statefulsets.WithMetrics(c.inner.StatefulSets(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.AppsV1beta2Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) ControllerRevisions(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.ControllerRevisionInterface {
return controllerrevisions.WithTracing(c.inner.ControllerRevisions(namespace), c.client, "ControllerRevision")
}
func (c *withTracing) DaemonSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.DaemonSetInterface {
return daemonsets.WithTracing(c.inner.DaemonSets(namespace), c.client, "DaemonSet")
}
func (c *withTracing) Deployments(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.DeploymentInterface {
return deployments.WithTracing(c.inner.Deployments(namespace), c.client, "Deployment")
}
func (c *withTracing) ReplicaSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.ReplicaSetInterface {
return replicasets.WithTracing(c.inner.ReplicaSets(namespace), c.client, "ReplicaSet")
}
func (c *withTracing) StatefulSets(namespace string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.StatefulSetInterface {
return statefulsets.WithTracing(c.inner.StatefulSets(namespace), c.client, "StatefulSet")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1beta2 "k8s.io/api/apps/v1beta2"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
k8s_io_client_go_kubernetes_typed_apps_v1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.ControllerRevisionInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1beta2.ControllerRevisionInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.ControllerRevisionInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.ControllerRevisionInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.ControllerRevisionInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.ControllerRevisionApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.ControllerRevision, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta2.ControllerRevision, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.ControllerRevision, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta2.ControllerRevisionList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta2.ControllerRevision, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.ControllerRevision, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.ControllerRevisionInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.ControllerRevisionApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta2.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta2.ControllerRevisionList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta2.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.ControllerRevision, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.ControllerRevision, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1beta2 "k8s.io/api/apps/v1beta2"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
k8s_io_client_go_kubernetes_typed_apps_v1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.DaemonSetInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1beta2.DaemonSetInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.DaemonSetInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.DaemonSetInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.DaemonSetInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta2.DaemonSetList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.DaemonSetInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta2.DaemonSetList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1beta2 "k8s.io/api/apps/v1beta2"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
k8s_io_client_go_kubernetes_typed_apps_v1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.DeploymentInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1beta2.DeploymentInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.DeploymentInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.DeploymentInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.DeploymentInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta2.DeploymentList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta2.Deployment, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.DeploymentInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta2.DeploymentList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta2.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1beta2 "k8s.io/api/apps/v1beta2"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
k8s_io_client_go_kubernetes_typed_apps_v1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.ReplicaSetInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1beta2.ReplicaSetInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.ReplicaSetInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.ReplicaSetInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.ReplicaSetInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta2.ReplicaSetList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.ReplicaSetInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta2.ReplicaSetList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,346 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_apps_v1beta2 "k8s.io/api/apps/v1beta2"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_apps_v1beta2 "k8s.io/client-go/applyconfigurations/apps/v1beta2"
k8s_io_client_go_kubernetes_typed_apps_v1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.StatefulSetInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_apps_v1beta2.StatefulSetInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.StatefulSetInterface, client, kind string) k8s_io_client_go_kubernetes_typed_apps_v1beta2.StatefulSetInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.StatefulSetInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_apps_v1beta2.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.Scale, error) {
defer c.recorder.Record("apply_scale")
return c.inner.ApplyScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.Scale, error) {
defer c.recorder.Record("get_scale")
return c.inner.GetScale(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta2.StatefulSetList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_apps_v1beta2.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.Scale, error) {
defer c.recorder.Record("update_scale")
return c.inner.UpdateScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_apps_v1beta2.StatefulSetInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_apps_v1beta2.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_apps_v1beta2.StatefulSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_apps_v1beta2.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "GetScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "GetScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.GetScale(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_apps_v1beta2.StatefulSetList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_apps_v1beta2.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_apps_v1beta2.StatefulSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_apps_v1beta2.StatefulSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
tokenreviews "github.com/kyverno/kyverno/pkg/clients/kube/authenticationv1/tokenreviews"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_authentication_v1 "k8s.io/client-go/kubernetes/typed/authentication/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authentication_v1.AuthenticationV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_authentication_v1.AuthenticationV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authentication_v1.AuthenticationV1Interface, client string) k8s_io_client_go_kubernetes_typed_authentication_v1.AuthenticationV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authentication_v1.AuthenticationV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) TokenReviews() k8s_io_client_go_kubernetes_typed_authentication_v1.TokenReviewInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "TokenReview", c.clientType)
return tokenreviews.WithMetrics(c.inner.TokenReviews(), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authentication_v1.AuthenticationV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) TokenReviews() k8s_io_client_go_kubernetes_typed_authentication_v1.TokenReviewInterface {
return tokenreviews.WithTracing(c.inner.TokenReviews(), c.client, "TokenReview")
}

View file

@ -0,0 +1,57 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authentication_v1 "k8s.io/api/authentication/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_client_go_kubernetes_typed_authentication_v1 "k8s.io/client-go/kubernetes/typed/authentication/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authentication_v1.TokenReviewInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_authentication_v1.TokenReviewInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authentication_v1.TokenReviewInterface, client, kind string) k8s_io_client_go_kubernetes_typed_authentication_v1.TokenReviewInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authentication_v1.TokenReviewInterface
recorder metrics.Recorder
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_authentication_v1.TokenReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authentication_v1.TokenReview, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authentication_v1.TokenReviewInterface
client string
kind string
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_authentication_v1.TokenReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authentication_v1.TokenReview, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
tokenreviews "github.com/kyverno/kyverno/pkg/clients/kube/authenticationv1beta1/tokenreviews"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_authentication_v1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authentication_v1beta1.AuthenticationV1beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_authentication_v1beta1.AuthenticationV1beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authentication_v1beta1.AuthenticationV1beta1Interface, client string) k8s_io_client_go_kubernetes_typed_authentication_v1beta1.AuthenticationV1beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authentication_v1beta1.AuthenticationV1beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) TokenReviews() k8s_io_client_go_kubernetes_typed_authentication_v1beta1.TokenReviewInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "TokenReview", c.clientType)
return tokenreviews.WithMetrics(c.inner.TokenReviews(), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authentication_v1beta1.AuthenticationV1beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) TokenReviews() k8s_io_client_go_kubernetes_typed_authentication_v1beta1.TokenReviewInterface {
return tokenreviews.WithTracing(c.inner.TokenReviews(), c.client, "TokenReview")
}

View file

@ -0,0 +1,57 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authentication_v1beta1 "k8s.io/api/authentication/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_client_go_kubernetes_typed_authentication_v1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authentication_v1beta1.TokenReviewInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_authentication_v1beta1.TokenReviewInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authentication_v1beta1.TokenReviewInterface, client, kind string) k8s_io_client_go_kubernetes_typed_authentication_v1beta1.TokenReviewInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authentication_v1beta1.TokenReviewInterface
recorder metrics.Recorder
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_authentication_v1beta1.TokenReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authentication_v1beta1.TokenReview, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authentication_v1beta1.TokenReviewInterface
client string
kind string
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_authentication_v1beta1.TokenReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authentication_v1beta1.TokenReview, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,66 @@
package client
import (
localsubjectaccessreviews "github.com/kyverno/kyverno/pkg/clients/kube/authorizationv1/localsubjectaccessreviews"
selfsubjectaccessreviews "github.com/kyverno/kyverno/pkg/clients/kube/authorizationv1/selfsubjectaccessreviews"
selfsubjectrulesreviews "github.com/kyverno/kyverno/pkg/clients/kube/authorizationv1/selfsubjectrulesreviews"
subjectaccessreviews "github.com/kyverno/kyverno/pkg/clients/kube/authorizationv1/subjectaccessreviews"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_authorization_v1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authorization_v1.AuthorizationV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_authorization_v1.AuthorizationV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authorization_v1.AuthorizationV1Interface, client string) k8s_io_client_go_kubernetes_typed_authorization_v1.AuthorizationV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1.AuthorizationV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) LocalSubjectAccessReviews(namespace string) k8s_io_client_go_kubernetes_typed_authorization_v1.LocalSubjectAccessReviewInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "LocalSubjectAccessReview", c.clientType)
return localsubjectaccessreviews.WithMetrics(c.inner.LocalSubjectAccessReviews(namespace), recorder)
}
func (c *withMetrics) SelfSubjectAccessReviews() k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectAccessReviewInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "SelfSubjectAccessReview", c.clientType)
return selfsubjectaccessreviews.WithMetrics(c.inner.SelfSubjectAccessReviews(), recorder)
}
func (c *withMetrics) SelfSubjectRulesReviews() k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectRulesReviewInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "SelfSubjectRulesReview", c.clientType)
return selfsubjectrulesreviews.WithMetrics(c.inner.SelfSubjectRulesReviews(), recorder)
}
func (c *withMetrics) SubjectAccessReviews() k8s_io_client_go_kubernetes_typed_authorization_v1.SubjectAccessReviewInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "SubjectAccessReview", c.clientType)
return subjectaccessreviews.WithMetrics(c.inner.SubjectAccessReviews(), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1.AuthorizationV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) LocalSubjectAccessReviews(namespace string) k8s_io_client_go_kubernetes_typed_authorization_v1.LocalSubjectAccessReviewInterface {
return localsubjectaccessreviews.WithTracing(c.inner.LocalSubjectAccessReviews(namespace), c.client, "LocalSubjectAccessReview")
}
func (c *withTracing) SelfSubjectAccessReviews() k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectAccessReviewInterface {
return selfsubjectaccessreviews.WithTracing(c.inner.SelfSubjectAccessReviews(), c.client, "SelfSubjectAccessReview")
}
func (c *withTracing) SelfSubjectRulesReviews() k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectRulesReviewInterface {
return selfsubjectrulesreviews.WithTracing(c.inner.SelfSubjectRulesReviews(), c.client, "SelfSubjectRulesReview")
}
func (c *withTracing) SubjectAccessReviews() k8s_io_client_go_kubernetes_typed_authorization_v1.SubjectAccessReviewInterface {
return subjectaccessreviews.WithTracing(c.inner.SubjectAccessReviews(), c.client, "SubjectAccessReview")
}

View file

@ -0,0 +1,57 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authorization_v1 "k8s.io/api/authorization/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_client_go_kubernetes_typed_authorization_v1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authorization_v1.LocalSubjectAccessReviewInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_authorization_v1.LocalSubjectAccessReviewInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authorization_v1.LocalSubjectAccessReviewInterface, client, kind string) k8s_io_client_go_kubernetes_typed_authorization_v1.LocalSubjectAccessReviewInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1.LocalSubjectAccessReviewInterface
recorder metrics.Recorder
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1.LocalSubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1.LocalSubjectAccessReview, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1.LocalSubjectAccessReviewInterface
client string
kind string
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1.LocalSubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1.LocalSubjectAccessReview, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,57 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authorization_v1 "k8s.io/api/authorization/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_client_go_kubernetes_typed_authorization_v1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectAccessReviewInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectAccessReviewInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectAccessReviewInterface, client, kind string) k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectAccessReviewInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectAccessReviewInterface
recorder metrics.Recorder
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1.SelfSubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1.SelfSubjectAccessReview, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectAccessReviewInterface
client string
kind string
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1.SelfSubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1.SelfSubjectAccessReview, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,57 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authorization_v1 "k8s.io/api/authorization/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_client_go_kubernetes_typed_authorization_v1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectRulesReviewInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectRulesReviewInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectRulesReviewInterface, client, kind string) k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectRulesReviewInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectRulesReviewInterface
recorder metrics.Recorder
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1.SelfSubjectRulesReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1.SelfSubjectRulesReview, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1.SelfSubjectRulesReviewInterface
client string
kind string
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1.SelfSubjectRulesReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1.SelfSubjectRulesReview, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,57 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authorization_v1 "k8s.io/api/authorization/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_client_go_kubernetes_typed_authorization_v1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authorization_v1.SubjectAccessReviewInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_authorization_v1.SubjectAccessReviewInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authorization_v1.SubjectAccessReviewInterface, client, kind string) k8s_io_client_go_kubernetes_typed_authorization_v1.SubjectAccessReviewInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1.SubjectAccessReviewInterface
recorder metrics.Recorder
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1.SubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1.SubjectAccessReview, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1.SubjectAccessReviewInterface
client string
kind string
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1.SubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1.SubjectAccessReview, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,66 @@
package client
import (
localsubjectaccessreviews "github.com/kyverno/kyverno/pkg/clients/kube/authorizationv1beta1/localsubjectaccessreviews"
selfsubjectaccessreviews "github.com/kyverno/kyverno/pkg/clients/kube/authorizationv1beta1/selfsubjectaccessreviews"
selfsubjectrulesreviews "github.com/kyverno/kyverno/pkg/clients/kube/authorizationv1beta1/selfsubjectrulesreviews"
subjectaccessreviews "github.com/kyverno/kyverno/pkg/clients/kube/authorizationv1beta1/subjectaccessreviews"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_authorization_v1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.AuthorizationV1beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.AuthorizationV1beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.AuthorizationV1beta1Interface, client string) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.AuthorizationV1beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.AuthorizationV1beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) LocalSubjectAccessReviews(namespace string) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.LocalSubjectAccessReviewInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "LocalSubjectAccessReview", c.clientType)
return localsubjectaccessreviews.WithMetrics(c.inner.LocalSubjectAccessReviews(namespace), recorder)
}
func (c *withMetrics) SelfSubjectAccessReviews() k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectAccessReviewInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "SelfSubjectAccessReview", c.clientType)
return selfsubjectaccessreviews.WithMetrics(c.inner.SelfSubjectAccessReviews(), recorder)
}
func (c *withMetrics) SelfSubjectRulesReviews() k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectRulesReviewInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "SelfSubjectRulesReview", c.clientType)
return selfsubjectrulesreviews.WithMetrics(c.inner.SelfSubjectRulesReviews(), recorder)
}
func (c *withMetrics) SubjectAccessReviews() k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SubjectAccessReviewInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "SubjectAccessReview", c.clientType)
return subjectaccessreviews.WithMetrics(c.inner.SubjectAccessReviews(), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.AuthorizationV1beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) LocalSubjectAccessReviews(namespace string) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.LocalSubjectAccessReviewInterface {
return localsubjectaccessreviews.WithTracing(c.inner.LocalSubjectAccessReviews(namespace), c.client, "LocalSubjectAccessReview")
}
func (c *withTracing) SelfSubjectAccessReviews() k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectAccessReviewInterface {
return selfsubjectaccessreviews.WithTracing(c.inner.SelfSubjectAccessReviews(), c.client, "SelfSubjectAccessReview")
}
func (c *withTracing) SelfSubjectRulesReviews() k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectRulesReviewInterface {
return selfsubjectrulesreviews.WithTracing(c.inner.SelfSubjectRulesReviews(), c.client, "SelfSubjectRulesReview")
}
func (c *withTracing) SubjectAccessReviews() k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SubjectAccessReviewInterface {
return subjectaccessreviews.WithTracing(c.inner.SubjectAccessReviews(), c.client, "SubjectAccessReview")
}

View file

@ -0,0 +1,57 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authorization_v1beta1 "k8s.io/api/authorization/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_client_go_kubernetes_typed_authorization_v1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.LocalSubjectAccessReviewInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.LocalSubjectAccessReviewInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.LocalSubjectAccessReviewInterface, client, kind string) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.LocalSubjectAccessReviewInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.LocalSubjectAccessReviewInterface
recorder metrics.Recorder
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1beta1.LocalSubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1beta1.LocalSubjectAccessReview, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.LocalSubjectAccessReviewInterface
client string
kind string
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1beta1.LocalSubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1beta1.LocalSubjectAccessReview, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,57 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authorization_v1beta1 "k8s.io/api/authorization/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_client_go_kubernetes_typed_authorization_v1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectAccessReviewInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectAccessReviewInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectAccessReviewInterface, client, kind string) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectAccessReviewInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectAccessReviewInterface
recorder metrics.Recorder
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1beta1.SelfSubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1beta1.SelfSubjectAccessReview, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectAccessReviewInterface
client string
kind string
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1beta1.SelfSubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1beta1.SelfSubjectAccessReview, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,57 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authorization_v1beta1 "k8s.io/api/authorization/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_client_go_kubernetes_typed_authorization_v1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectRulesReviewInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectRulesReviewInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectRulesReviewInterface, client, kind string) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectRulesReviewInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectRulesReviewInterface
recorder metrics.Recorder
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1beta1.SelfSubjectRulesReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1beta1.SelfSubjectRulesReview, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SelfSubjectRulesReviewInterface
client string
kind string
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1beta1.SelfSubjectRulesReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1beta1.SelfSubjectRulesReview, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,57 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authorization_v1beta1 "k8s.io/api/authorization/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_client_go_kubernetes_typed_authorization_v1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SubjectAccessReviewInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SubjectAccessReviewInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SubjectAccessReviewInterface, client, kind string) k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SubjectAccessReviewInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SubjectAccessReviewInterface
recorder metrics.Recorder
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1beta1.SubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1beta1.SubjectAccessReview, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_authorization_v1beta1.SubjectAccessReviewInterface
client string
kind string
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_authorization_v1beta1.SubjectAccessReview, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authorization_v1beta1.SubjectAccessReview, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
horizontalpodautoscalers "github.com/kyverno/kyverno/pkg/clients/kube/autoscalingv1/horizontalpodautoscalers"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_autoscaling_v1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_autoscaling_v1.AutoscalingV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_autoscaling_v1.AutoscalingV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_autoscaling_v1.AutoscalingV1Interface, client string) k8s_io_client_go_kubernetes_typed_autoscaling_v1.AutoscalingV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v1.AutoscalingV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) HorizontalPodAutoscalers(namespace string) k8s_io_client_go_kubernetes_typed_autoscaling_v1.HorizontalPodAutoscalerInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "HorizontalPodAutoscaler", c.clientType)
return horizontalpodautoscalers.WithMetrics(c.inner.HorizontalPodAutoscalers(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v1.AutoscalingV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) HorizontalPodAutoscalers(namespace string) k8s_io_client_go_kubernetes_typed_autoscaling_v1.HorizontalPodAutoscalerInterface {
return horizontalpodautoscalers.WithTracing(c.inner.HorizontalPodAutoscalers(namespace), c.client, "HorizontalPodAutoscaler")
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_autoscaling_v1 "k8s.io/api/autoscaling/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_autoscaling_v1 "k8s.io/client-go/applyconfigurations/autoscaling/v1"
k8s_io_client_go_kubernetes_typed_autoscaling_v1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_autoscaling_v1.HorizontalPodAutoscalerInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_autoscaling_v1.HorizontalPodAutoscalerInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_autoscaling_v1.HorizontalPodAutoscalerInterface, client, kind string) k8s_io_client_go_kubernetes_typed_autoscaling_v1.HorizontalPodAutoscalerInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v1.HorizontalPodAutoscalerInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v1.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v1.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscalerList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v1.HorizontalPodAutoscalerInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v1.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v1.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscalerList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
horizontalpodautoscalers "github.com/kyverno/kyverno/pkg/clients/kube/autoscalingv2/horizontalpodautoscalers"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_autoscaling_v2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2.AutoscalingV2Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_autoscaling_v2.AutoscalingV2Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2.AutoscalingV2Interface, client string) k8s_io_client_go_kubernetes_typed_autoscaling_v2.AutoscalingV2Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2.AutoscalingV2Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) HorizontalPodAutoscalers(namespace string) k8s_io_client_go_kubernetes_typed_autoscaling_v2.HorizontalPodAutoscalerInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "HorizontalPodAutoscaler", c.clientType)
return horizontalpodautoscalers.WithMetrics(c.inner.HorizontalPodAutoscalers(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2.AutoscalingV2Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) HorizontalPodAutoscalers(namespace string) k8s_io_client_go_kubernetes_typed_autoscaling_v2.HorizontalPodAutoscalerInterface {
return horizontalpodautoscalers.WithTracing(c.inner.HorizontalPodAutoscalers(namespace), c.client, "HorizontalPodAutoscaler")
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_autoscaling_v2 "k8s.io/api/autoscaling/v2"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_autoscaling_v2 "k8s.io/client-go/applyconfigurations/autoscaling/v2"
k8s_io_client_go_kubernetes_typed_autoscaling_v2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2.HorizontalPodAutoscalerInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_autoscaling_v2.HorizontalPodAutoscalerInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2.HorizontalPodAutoscalerInterface, client, kind string) k8s_io_client_go_kubernetes_typed_autoscaling_v2.HorizontalPodAutoscalerInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2.HorizontalPodAutoscalerInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscalerList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2.HorizontalPodAutoscalerInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscalerList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
horizontalpodautoscalers "github.com/kyverno/kyverno/pkg/clients/kube/autoscalingv2beta1/horizontalpodautoscalers"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.AutoscalingV2beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.AutoscalingV2beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.AutoscalingV2beta1Interface, client string) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.AutoscalingV2beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.AutoscalingV2beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) HorizontalPodAutoscalers(namespace string) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.HorizontalPodAutoscalerInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "HorizontalPodAutoscaler", c.clientType)
return horizontalpodautoscalers.WithMetrics(c.inner.HorizontalPodAutoscalers(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.AutoscalingV2beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) HorizontalPodAutoscalers(namespace string) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.HorizontalPodAutoscalerInterface {
return horizontalpodautoscalers.WithTracing(c.inner.HorizontalPodAutoscalers(namespace), c.client, "HorizontalPodAutoscaler")
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_autoscaling_v2beta1 "k8s.io/api/autoscaling/v2beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_autoscaling_v2beta1 "k8s.io/client-go/applyconfigurations/autoscaling/v2beta1"
k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.HorizontalPodAutoscalerInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.HorizontalPodAutoscalerInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.HorizontalPodAutoscalerInterface, client, kind string) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.HorizontalPodAutoscalerInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.HorizontalPodAutoscalerInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2beta1.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2beta1.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscalerList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.HorizontalPodAutoscalerInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2beta1.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2beta1.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscalerList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2beta1.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
horizontalpodautoscalers "github.com/kyverno/kyverno/pkg/clients/kube/autoscalingv2beta2/horizontalpodautoscalers"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.AutoscalingV2beta2Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.AutoscalingV2beta2Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.AutoscalingV2beta2Interface, client string) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.AutoscalingV2beta2Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.AutoscalingV2beta2Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) HorizontalPodAutoscalers(namespace string) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.HorizontalPodAutoscalerInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "HorizontalPodAutoscaler", c.clientType)
return horizontalpodautoscalers.WithMetrics(c.inner.HorizontalPodAutoscalers(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.AutoscalingV2beta2Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) HorizontalPodAutoscalers(namespace string) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.HorizontalPodAutoscalerInterface {
return horizontalpodautoscalers.WithTracing(c.inner.HorizontalPodAutoscalers(namespace), c.client, "HorizontalPodAutoscaler")
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_autoscaling_v2beta2 "k8s.io/api/autoscaling/v2beta2"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_autoscaling_v2beta2 "k8s.io/client-go/applyconfigurations/autoscaling/v2beta2"
k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.HorizontalPodAutoscalerInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.HorizontalPodAutoscalerInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.HorizontalPodAutoscalerInterface, client, kind string) k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.HorizontalPodAutoscalerInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.HorizontalPodAutoscalerInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2beta2.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2beta2.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscalerList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.HorizontalPodAutoscalerInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2beta2.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_autoscaling_v2beta2.HorizontalPodAutoscalerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscalerList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v2beta2.HorizontalPodAutoscaler, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,50 @@
package client
import (
cronjobs "github.com/kyverno/kyverno/pkg/clients/kube/batchv1/cronjobs"
jobs "github.com/kyverno/kyverno/pkg/clients/kube/batchv1/jobs"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_batch_v1 "k8s.io/client-go/kubernetes/typed/batch/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_batch_v1.BatchV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_batch_v1.BatchV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_batch_v1.BatchV1Interface, client string) k8s_io_client_go_kubernetes_typed_batch_v1.BatchV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_batch_v1.BatchV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) CronJobs(namespace string) k8s_io_client_go_kubernetes_typed_batch_v1.CronJobInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "CronJob", c.clientType)
return cronjobs.WithMetrics(c.inner.CronJobs(namespace), recorder)
}
func (c *withMetrics) Jobs(namespace string) k8s_io_client_go_kubernetes_typed_batch_v1.JobInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Job", c.clientType)
return jobs.WithMetrics(c.inner.Jobs(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_batch_v1.BatchV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) CronJobs(namespace string) k8s_io_client_go_kubernetes_typed_batch_v1.CronJobInterface {
return cronjobs.WithTracing(c.inner.CronJobs(namespace), c.client, "CronJob")
}
func (c *withTracing) Jobs(namespace string) k8s_io_client_go_kubernetes_typed_batch_v1.JobInterface {
return jobs.WithTracing(c.inner.Jobs(namespace), c.client, "Job")
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_batch_v1 "k8s.io/api/batch/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_batch_v1 "k8s.io/client-go/applyconfigurations/batch/v1"
k8s_io_client_go_kubernetes_typed_batch_v1 "k8s.io/client-go/kubernetes/typed/batch/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_batch_v1.CronJobInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_batch_v1.CronJobInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_batch_v1.CronJobInterface, client, kind string) k8s_io_client_go_kubernetes_typed_batch_v1.CronJobInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_batch_v1.CronJobInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1.CronJobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1.CronJob, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1.CronJobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1.CronJob, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_batch_v1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_batch_v1.CronJob, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_batch_v1.CronJob, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_batch_v1.CronJobList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_batch_v1.CronJob, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_batch_v1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1.CronJob, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_batch_v1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1.CronJob, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_batch_v1.CronJobInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1.CronJobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1.CronJobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_batch_v1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_batch_v1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_batch_v1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_batch_v1.CronJobList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_batch_v1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_batch_v1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_batch_v1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_batch_v1 "k8s.io/api/batch/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_batch_v1 "k8s.io/client-go/applyconfigurations/batch/v1"
k8s_io_client_go_kubernetes_typed_batch_v1 "k8s.io/client-go/kubernetes/typed/batch/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_batch_v1.JobInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_batch_v1.JobInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_batch_v1.JobInterface, client, kind string) k8s_io_client_go_kubernetes_typed_batch_v1.JobInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_batch_v1.JobInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1.JobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1.Job, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1.JobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1.Job, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_batch_v1.Job, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_batch_v1.Job, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_batch_v1.Job, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_batch_v1.JobList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_batch_v1.Job, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_batch_v1.Job, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1.Job, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_batch_v1.Job, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1.Job, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_batch_v1.JobInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1.JobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1.Job, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1.JobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1.Job, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_batch_v1.Job, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_batch_v1.Job, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_batch_v1.Job, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_batch_v1.JobList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_batch_v1.Job, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_batch_v1.Job, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1.Job, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_batch_v1.Job, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1.Job, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
cronjobs "github.com/kyverno/kyverno/pkg/clients/kube/batchv1beta1/cronjobs"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_batch_v1beta1 "k8s.io/client-go/kubernetes/typed/batch/v1beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_batch_v1beta1.BatchV1beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_batch_v1beta1.BatchV1beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_batch_v1beta1.BatchV1beta1Interface, client string) k8s_io_client_go_kubernetes_typed_batch_v1beta1.BatchV1beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_batch_v1beta1.BatchV1beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) CronJobs(namespace string) k8s_io_client_go_kubernetes_typed_batch_v1beta1.CronJobInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "CronJob", c.clientType)
return cronjobs.WithMetrics(c.inner.CronJobs(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_batch_v1beta1.BatchV1beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) CronJobs(namespace string) k8s_io_client_go_kubernetes_typed_batch_v1beta1.CronJobInterface {
return cronjobs.WithTracing(c.inner.CronJobs(namespace), c.client, "CronJob")
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_batch_v1beta1 "k8s.io/api/batch/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_batch_v1beta1 "k8s.io/client-go/applyconfigurations/batch/v1beta1"
k8s_io_client_go_kubernetes_typed_batch_v1beta1 "k8s.io/client-go/kubernetes/typed/batch/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_batch_v1beta1.CronJobInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_batch_v1beta1.CronJobInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_batch_v1beta1.CronJobInterface, client, kind string) k8s_io_client_go_kubernetes_typed_batch_v1beta1.CronJobInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_batch_v1beta1.CronJobInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1beta1.CronJobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1beta1.CronJobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_batch_v1beta1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_batch_v1beta1.CronJobList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_batch_v1beta1.CronJob, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_batch_v1beta1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_batch_v1beta1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_batch_v1beta1.CronJobInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1beta1.CronJobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_batch_v1beta1.CronJobApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_batch_v1beta1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_batch_v1beta1.CronJobList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_batch_v1beta1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_batch_v1beta1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_batch_v1beta1.CronJob, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_batch_v1beta1.CronJob, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,302 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_certificates_v1 "k8s.io/api/certificates/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_certificates_v1 "k8s.io/client-go/applyconfigurations/certificates/v1"
k8s_io_client_go_kubernetes_typed_certificates_v1 "k8s.io/client-go/kubernetes/typed/certificates/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_certificates_v1.CertificateSigningRequestInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_certificates_v1.CertificateSigningRequestInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_certificates_v1.CertificateSigningRequestInterface, client, kind string) k8s_io_client_go_kubernetes_typed_certificates_v1.CertificateSigningRequestInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_certificates_v1.CertificateSigningRequestInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_certificates_v1.CertificateSigningRequestApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_certificates_v1.CertificateSigningRequestApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_certificates_v1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequestList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_certificates_v1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateApproval(arg0 context.Context, arg1 string, arg2 *k8s_io_api_certificates_v1.CertificateSigningRequest, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
defer c.recorder.Record("update_approval")
return c.inner.UpdateApproval(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_certificates_v1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_certificates_v1.CertificateSigningRequestInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_certificates_v1.CertificateSigningRequestApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_certificates_v1.CertificateSigningRequestApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_certificates_v1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequestList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_certificates_v1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateApproval(arg0 context.Context, arg1 string, arg2 *k8s_io_api_certificates_v1.CertificateSigningRequest, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateApproval"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateApproval"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateApproval(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_certificates_v1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
certificatesigningrequests "github.com/kyverno/kyverno/pkg/clients/kube/certificatesv1/certificatesigningrequests"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_certificates_v1 "k8s.io/client-go/kubernetes/typed/certificates/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_certificates_v1.CertificatesV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_certificates_v1.CertificatesV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_certificates_v1.CertificatesV1Interface, client string) k8s_io_client_go_kubernetes_typed_certificates_v1.CertificatesV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_certificates_v1.CertificatesV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) CertificateSigningRequests() k8s_io_client_go_kubernetes_typed_certificates_v1.CertificateSigningRequestInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "CertificateSigningRequest", c.clientType)
return certificatesigningrequests.WithMetrics(c.inner.CertificateSigningRequests(), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_certificates_v1.CertificatesV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) CertificateSigningRequests() k8s_io_client_go_kubernetes_typed_certificates_v1.CertificateSigningRequestInterface {
return certificatesigningrequests.WithTracing(c.inner.CertificateSigningRequests(), c.client, "CertificateSigningRequest")
}

View file

@ -0,0 +1,302 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_certificates_v1beta1 "k8s.io/api/certificates/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_certificates_v1beta1 "k8s.io/client-go/applyconfigurations/certificates/v1beta1"
k8s_io_client_go_kubernetes_typed_certificates_v1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificateSigningRequestInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificateSigningRequestInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificateSigningRequestInterface, client, kind string) k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificateSigningRequestInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificateSigningRequestInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_certificates_v1beta1.CertificateSigningRequestApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_certificates_v1beta1.CertificateSigningRequestApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_certificates_v1beta1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequestList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_certificates_v1beta1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateApproval(arg0 context.Context, arg1 *k8s_io_api_certificates_v1beta1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
defer c.recorder.Record("update_approval")
return c.inner.UpdateApproval(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_certificates_v1beta1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificateSigningRequestInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_certificates_v1beta1.CertificateSigningRequestApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_certificates_v1beta1.CertificateSigningRequestApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_certificates_v1beta1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequestList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_certificates_v1beta1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateApproval(arg0 context.Context, arg1 *k8s_io_api_certificates_v1beta1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateApproval"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateApproval"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateApproval(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_certificates_v1beta1.CertificateSigningRequest, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_certificates_v1beta1.CertificateSigningRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
certificatesigningrequests "github.com/kyverno/kyverno/pkg/clients/kube/certificatesv1beta1/certificatesigningrequests"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_certificates_v1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificatesV1beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificatesV1beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificatesV1beta1Interface, client string) k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificatesV1beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificatesV1beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) CertificateSigningRequests() k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificateSigningRequestInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "CertificateSigningRequest", c.clientType)
return certificatesigningrequests.WithMetrics(c.inner.CertificateSigningRequests(), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificatesV1beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) CertificateSigningRequests() k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificateSigningRequestInterface {
return certificatesigningrequests.WithTracing(c.inner.CertificateSigningRequests(), c.client, "CertificateSigningRequest")
}

View file

@ -1,79 +1,395 @@
package client
package clientset
import (
net_http "net/http"
github_com_kyverno_kyverno_pkg_clients_middleware_metrics_kube "github.com/kyverno/kyverno/pkg/clients/middleware/metrics/kube"
github_com_kyverno_kyverno_pkg_clients_middleware_tracing_kube "github.com/kyverno/kyverno/pkg/clients/middleware/tracing/kube"
github_com_kyverno_kyverno_pkg_metrics "github.com/kyverno/kyverno/pkg/metrics"
admissionregistrationv1 "github.com/kyverno/kyverno/pkg/clients/kube/admissionregistrationv1"
admissionregistrationv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/admissionregistrationv1beta1"
appsv1 "github.com/kyverno/kyverno/pkg/clients/kube/appsv1"
appsv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/appsv1beta1"
appsv1beta2 "github.com/kyverno/kyverno/pkg/clients/kube/appsv1beta2"
authenticationv1 "github.com/kyverno/kyverno/pkg/clients/kube/authenticationv1"
authenticationv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/authenticationv1beta1"
authorizationv1 "github.com/kyverno/kyverno/pkg/clients/kube/authorizationv1"
authorizationv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/authorizationv1beta1"
autoscalingv1 "github.com/kyverno/kyverno/pkg/clients/kube/autoscalingv1"
autoscalingv2 "github.com/kyverno/kyverno/pkg/clients/kube/autoscalingv2"
autoscalingv2beta1 "github.com/kyverno/kyverno/pkg/clients/kube/autoscalingv2beta1"
autoscalingv2beta2 "github.com/kyverno/kyverno/pkg/clients/kube/autoscalingv2beta2"
batchv1 "github.com/kyverno/kyverno/pkg/clients/kube/batchv1"
batchv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/batchv1beta1"
certificatesv1 "github.com/kyverno/kyverno/pkg/clients/kube/certificatesv1"
certificatesv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/certificatesv1beta1"
coordinationv1 "github.com/kyverno/kyverno/pkg/clients/kube/coordinationv1"
coordinationv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/coordinationv1beta1"
corev1 "github.com/kyverno/kyverno/pkg/clients/kube/corev1"
discoveryv1 "github.com/kyverno/kyverno/pkg/clients/kube/discoveryv1"
discoveryv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/discoveryv1beta1"
eventsv1 "github.com/kyverno/kyverno/pkg/clients/kube/eventsv1"
eventsv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/eventsv1beta1"
extensionsv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/extensionsv1beta1"
flowcontrolv1alpha1 "github.com/kyverno/kyverno/pkg/clients/kube/flowcontrolv1alpha1"
flowcontrolv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/flowcontrolv1beta1"
flowcontrolv1beta2 "github.com/kyverno/kyverno/pkg/clients/kube/flowcontrolv1beta2"
internalv1alpha1 "github.com/kyverno/kyverno/pkg/clients/kube/internalv1alpha1"
networkingv1 "github.com/kyverno/kyverno/pkg/clients/kube/networkingv1"
networkingv1alpha1 "github.com/kyverno/kyverno/pkg/clients/kube/networkingv1alpha1"
networkingv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/networkingv1beta1"
nodev1 "github.com/kyverno/kyverno/pkg/clients/kube/nodev1"
nodev1alpha1 "github.com/kyverno/kyverno/pkg/clients/kube/nodev1alpha1"
nodev1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/nodev1beta1"
policyv1 "github.com/kyverno/kyverno/pkg/clients/kube/policyv1"
policyv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/policyv1beta1"
rbacv1 "github.com/kyverno/kyverno/pkg/clients/kube/rbacv1"
rbacv1alpha1 "github.com/kyverno/kyverno/pkg/clients/kube/rbacv1alpha1"
rbacv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/rbacv1beta1"
schedulingv1 "github.com/kyverno/kyverno/pkg/clients/kube/schedulingv1"
schedulingv1alpha1 "github.com/kyverno/kyverno/pkg/clients/kube/schedulingv1alpha1"
schedulingv1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/schedulingv1beta1"
storagev1 "github.com/kyverno/kyverno/pkg/clients/kube/storagev1"
storagev1alpha1 "github.com/kyverno/kyverno/pkg/clients/kube/storagev1alpha1"
storagev1beta1 "github.com/kyverno/kyverno/pkg/clients/kube/storagev1beta1"
"github.com/kyverno/kyverno/pkg/metrics"
"k8s.io/client-go/discovery"
k8s_io_client_go_kubernetes "k8s.io/client-go/kubernetes"
k8s_io_client_go_rest "k8s.io/client-go/rest"
k8s_io_client_go_kubernetes_typed_admissionregistration_v1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1"
k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1"
k8s_io_client_go_kubernetes_typed_apiserverinternal_v1alpha1 "k8s.io/client-go/kubernetes/typed/apiserverinternal/v1alpha1"
k8s_io_client_go_kubernetes_typed_apps_v1 "k8s.io/client-go/kubernetes/typed/apps/v1"
k8s_io_client_go_kubernetes_typed_apps_v1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1"
k8s_io_client_go_kubernetes_typed_apps_v1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2"
k8s_io_client_go_kubernetes_typed_authentication_v1 "k8s.io/client-go/kubernetes/typed/authentication/v1"
k8s_io_client_go_kubernetes_typed_authentication_v1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1"
k8s_io_client_go_kubernetes_typed_authorization_v1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
k8s_io_client_go_kubernetes_typed_authorization_v1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
k8s_io_client_go_kubernetes_typed_autoscaling_v1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1"
k8s_io_client_go_kubernetes_typed_autoscaling_v2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2"
k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1"
k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2"
k8s_io_client_go_kubernetes_typed_batch_v1 "k8s.io/client-go/kubernetes/typed/batch/v1"
k8s_io_client_go_kubernetes_typed_batch_v1beta1 "k8s.io/client-go/kubernetes/typed/batch/v1beta1"
k8s_io_client_go_kubernetes_typed_certificates_v1 "k8s.io/client-go/kubernetes/typed/certificates/v1"
k8s_io_client_go_kubernetes_typed_certificates_v1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1"
k8s_io_client_go_kubernetes_typed_coordination_v1 "k8s.io/client-go/kubernetes/typed/coordination/v1"
k8s_io_client_go_kubernetes_typed_coordination_v1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
k8s_io_client_go_kubernetes_typed_discovery_v1 "k8s.io/client-go/kubernetes/typed/discovery/v1"
k8s_io_client_go_kubernetes_typed_discovery_v1beta1 "k8s.io/client-go/kubernetes/typed/discovery/v1beta1"
k8s_io_client_go_kubernetes_typed_events_v1 "k8s.io/client-go/kubernetes/typed/events/v1"
k8s_io_client_go_kubernetes_typed_events_v1beta1 "k8s.io/client-go/kubernetes/typed/events/v1beta1"
k8s_io_client_go_kubernetes_typed_extensions_v1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1"
k8s_io_client_go_kubernetes_typed_flowcontrol_v1beta1 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1"
k8s_io_client_go_kubernetes_typed_flowcontrol_v1beta2 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2"
k8s_io_client_go_kubernetes_typed_networking_v1 "k8s.io/client-go/kubernetes/typed/networking/v1"
k8s_io_client_go_kubernetes_typed_networking_v1alpha1 "k8s.io/client-go/kubernetes/typed/networking/v1alpha1"
k8s_io_client_go_kubernetes_typed_networking_v1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1"
k8s_io_client_go_kubernetes_typed_node_v1 "k8s.io/client-go/kubernetes/typed/node/v1"
k8s_io_client_go_kubernetes_typed_node_v1alpha1 "k8s.io/client-go/kubernetes/typed/node/v1alpha1"
k8s_io_client_go_kubernetes_typed_node_v1beta1 "k8s.io/client-go/kubernetes/typed/node/v1beta1"
k8s_io_client_go_kubernetes_typed_policy_v1 "k8s.io/client-go/kubernetes/typed/policy/v1"
k8s_io_client_go_kubernetes_typed_policy_v1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1"
k8s_io_client_go_kubernetes_typed_rbac_v1 "k8s.io/client-go/kubernetes/typed/rbac/v1"
k8s_io_client_go_kubernetes_typed_rbac_v1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1"
k8s_io_client_go_kubernetes_typed_rbac_v1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1"
k8s_io_client_go_kubernetes_typed_scheduling_v1 "k8s.io/client-go/kubernetes/typed/scheduling/v1"
k8s_io_client_go_kubernetes_typed_scheduling_v1alpha1 "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1"
k8s_io_client_go_kubernetes_typed_scheduling_v1beta1 "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1"
k8s_io_client_go_kubernetes_typed_storage_v1 "k8s.io/client-go/kubernetes/typed/storage/v1"
k8s_io_client_go_kubernetes_typed_storage_v1alpha1 "k8s.io/client-go/kubernetes/typed/storage/v1alpha1"
k8s_io_client_go_kubernetes_typed_storage_v1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1"
)
type Interface interface {
k8s_io_client_go_kubernetes.Interface
WithMetrics(m github_com_kyverno_kyverno_pkg_metrics.MetricsConfigManager, t github_com_kyverno_kyverno_pkg_metrics.ClientType) Interface
WithTracing() Interface
type clientset struct {
inner k8s_io_client_go_kubernetes.Interface
admissionregistrationv1 k8s_io_client_go_kubernetes_typed_admissionregistration_v1.AdmissionregistrationV1Interface
admissionregistrationv1beta1 k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.AdmissionregistrationV1beta1Interface
appsv1 k8s_io_client_go_kubernetes_typed_apps_v1.AppsV1Interface
appsv1beta1 k8s_io_client_go_kubernetes_typed_apps_v1beta1.AppsV1beta1Interface
appsv1beta2 k8s_io_client_go_kubernetes_typed_apps_v1beta2.AppsV1beta2Interface
authenticationv1 k8s_io_client_go_kubernetes_typed_authentication_v1.AuthenticationV1Interface
authenticationv1beta1 k8s_io_client_go_kubernetes_typed_authentication_v1beta1.AuthenticationV1beta1Interface
authorizationv1 k8s_io_client_go_kubernetes_typed_authorization_v1.AuthorizationV1Interface
authorizationv1beta1 k8s_io_client_go_kubernetes_typed_authorization_v1beta1.AuthorizationV1beta1Interface
autoscalingv1 k8s_io_client_go_kubernetes_typed_autoscaling_v1.AutoscalingV1Interface
autoscalingv2 k8s_io_client_go_kubernetes_typed_autoscaling_v2.AutoscalingV2Interface
autoscalingv2beta1 k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.AutoscalingV2beta1Interface
autoscalingv2beta2 k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.AutoscalingV2beta2Interface
batchv1 k8s_io_client_go_kubernetes_typed_batch_v1.BatchV1Interface
batchv1beta1 k8s_io_client_go_kubernetes_typed_batch_v1beta1.BatchV1beta1Interface
certificatesv1 k8s_io_client_go_kubernetes_typed_certificates_v1.CertificatesV1Interface
certificatesv1beta1 k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificatesV1beta1Interface
coordinationv1 k8s_io_client_go_kubernetes_typed_coordination_v1.CoordinationV1Interface
coordinationv1beta1 k8s_io_client_go_kubernetes_typed_coordination_v1beta1.CoordinationV1beta1Interface
corev1 k8s_io_client_go_kubernetes_typed_core_v1.CoreV1Interface
discoveryv1 k8s_io_client_go_kubernetes_typed_discovery_v1.DiscoveryV1Interface
discoveryv1beta1 k8s_io_client_go_kubernetes_typed_discovery_v1beta1.DiscoveryV1beta1Interface
eventsv1 k8s_io_client_go_kubernetes_typed_events_v1.EventsV1Interface
eventsv1beta1 k8s_io_client_go_kubernetes_typed_events_v1beta1.EventsV1beta1Interface
extensionsv1beta1 k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ExtensionsV1beta1Interface
flowcontrolv1alpha1 k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowcontrolV1alpha1Interface
flowcontrolv1beta1 k8s_io_client_go_kubernetes_typed_flowcontrol_v1beta1.FlowcontrolV1beta1Interface
flowcontrolv1beta2 k8s_io_client_go_kubernetes_typed_flowcontrol_v1beta2.FlowcontrolV1beta2Interface
internalv1alpha1 k8s_io_client_go_kubernetes_typed_apiserverinternal_v1alpha1.InternalV1alpha1Interface
networkingv1 k8s_io_client_go_kubernetes_typed_networking_v1.NetworkingV1Interface
networkingv1alpha1 k8s_io_client_go_kubernetes_typed_networking_v1alpha1.NetworkingV1alpha1Interface
networkingv1beta1 k8s_io_client_go_kubernetes_typed_networking_v1beta1.NetworkingV1beta1Interface
nodev1 k8s_io_client_go_kubernetes_typed_node_v1.NodeV1Interface
nodev1alpha1 k8s_io_client_go_kubernetes_typed_node_v1alpha1.NodeV1alpha1Interface
nodev1beta1 k8s_io_client_go_kubernetes_typed_node_v1beta1.NodeV1beta1Interface
policyv1 k8s_io_client_go_kubernetes_typed_policy_v1.PolicyV1Interface
policyv1beta1 k8s_io_client_go_kubernetes_typed_policy_v1beta1.PolicyV1beta1Interface
rbacv1 k8s_io_client_go_kubernetes_typed_rbac_v1.RbacV1Interface
rbacv1alpha1 k8s_io_client_go_kubernetes_typed_rbac_v1alpha1.RbacV1alpha1Interface
rbacv1beta1 k8s_io_client_go_kubernetes_typed_rbac_v1beta1.RbacV1beta1Interface
schedulingv1 k8s_io_client_go_kubernetes_typed_scheduling_v1.SchedulingV1Interface
schedulingv1alpha1 k8s_io_client_go_kubernetes_typed_scheduling_v1alpha1.SchedulingV1alpha1Interface
schedulingv1beta1 k8s_io_client_go_kubernetes_typed_scheduling_v1beta1.SchedulingV1beta1Interface
storagev1 k8s_io_client_go_kubernetes_typed_storage_v1.StorageV1Interface
storagev1alpha1 k8s_io_client_go_kubernetes_typed_storage_v1alpha1.StorageV1alpha1Interface
storagev1beta1 k8s_io_client_go_kubernetes_typed_storage_v1beta1.StorageV1beta1Interface
}
type wrapper struct {
k8s_io_client_go_kubernetes.Interface
func (c *clientset) Discovery() discovery.DiscoveryInterface {
return c.inner.Discovery()
}
func (c *clientset) AdmissionregistrationV1() k8s_io_client_go_kubernetes_typed_admissionregistration_v1.AdmissionregistrationV1Interface {
return c.admissionregistrationv1
}
func (c *clientset) AdmissionregistrationV1beta1() k8s_io_client_go_kubernetes_typed_admissionregistration_v1beta1.AdmissionregistrationV1beta1Interface {
return c.admissionregistrationv1beta1
}
func (c *clientset) AppsV1() k8s_io_client_go_kubernetes_typed_apps_v1.AppsV1Interface {
return c.appsv1
}
func (c *clientset) AppsV1beta1() k8s_io_client_go_kubernetes_typed_apps_v1beta1.AppsV1beta1Interface {
return c.appsv1beta1
}
func (c *clientset) AppsV1beta2() k8s_io_client_go_kubernetes_typed_apps_v1beta2.AppsV1beta2Interface {
return c.appsv1beta2
}
func (c *clientset) AuthenticationV1() k8s_io_client_go_kubernetes_typed_authentication_v1.AuthenticationV1Interface {
return c.authenticationv1
}
func (c *clientset) AuthenticationV1beta1() k8s_io_client_go_kubernetes_typed_authentication_v1beta1.AuthenticationV1beta1Interface {
return c.authenticationv1beta1
}
func (c *clientset) AuthorizationV1() k8s_io_client_go_kubernetes_typed_authorization_v1.AuthorizationV1Interface {
return c.authorizationv1
}
func (c *clientset) AuthorizationV1beta1() k8s_io_client_go_kubernetes_typed_authorization_v1beta1.AuthorizationV1beta1Interface {
return c.authorizationv1beta1
}
func (c *clientset) AutoscalingV1() k8s_io_client_go_kubernetes_typed_autoscaling_v1.AutoscalingV1Interface {
return c.autoscalingv1
}
func (c *clientset) AutoscalingV2() k8s_io_client_go_kubernetes_typed_autoscaling_v2.AutoscalingV2Interface {
return c.autoscalingv2
}
func (c *clientset) AutoscalingV2beta1() k8s_io_client_go_kubernetes_typed_autoscaling_v2beta1.AutoscalingV2beta1Interface {
return c.autoscalingv2beta1
}
func (c *clientset) AutoscalingV2beta2() k8s_io_client_go_kubernetes_typed_autoscaling_v2beta2.AutoscalingV2beta2Interface {
return c.autoscalingv2beta2
}
func (c *clientset) BatchV1() k8s_io_client_go_kubernetes_typed_batch_v1.BatchV1Interface {
return c.batchv1
}
func (c *clientset) BatchV1beta1() k8s_io_client_go_kubernetes_typed_batch_v1beta1.BatchV1beta1Interface {
return c.batchv1beta1
}
func (c *clientset) CertificatesV1() k8s_io_client_go_kubernetes_typed_certificates_v1.CertificatesV1Interface {
return c.certificatesv1
}
func (c *clientset) CertificatesV1beta1() k8s_io_client_go_kubernetes_typed_certificates_v1beta1.CertificatesV1beta1Interface {
return c.certificatesv1beta1
}
func (c *clientset) CoordinationV1() k8s_io_client_go_kubernetes_typed_coordination_v1.CoordinationV1Interface {
return c.coordinationv1
}
func (c *clientset) CoordinationV1beta1() k8s_io_client_go_kubernetes_typed_coordination_v1beta1.CoordinationV1beta1Interface {
return c.coordinationv1beta1
}
func (c *clientset) CoreV1() k8s_io_client_go_kubernetes_typed_core_v1.CoreV1Interface {
return c.corev1
}
func (c *clientset) DiscoveryV1() k8s_io_client_go_kubernetes_typed_discovery_v1.DiscoveryV1Interface {
return c.discoveryv1
}
func (c *clientset) DiscoveryV1beta1() k8s_io_client_go_kubernetes_typed_discovery_v1beta1.DiscoveryV1beta1Interface {
return c.discoveryv1beta1
}
func (c *clientset) EventsV1() k8s_io_client_go_kubernetes_typed_events_v1.EventsV1Interface {
return c.eventsv1
}
func (c *clientset) EventsV1beta1() k8s_io_client_go_kubernetes_typed_events_v1beta1.EventsV1beta1Interface {
return c.eventsv1beta1
}
func (c *clientset) ExtensionsV1beta1() k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ExtensionsV1beta1Interface {
return c.extensionsv1beta1
}
func (c *clientset) FlowcontrolV1alpha1() k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowcontrolV1alpha1Interface {
return c.flowcontrolv1alpha1
}
func (c *clientset) FlowcontrolV1beta1() k8s_io_client_go_kubernetes_typed_flowcontrol_v1beta1.FlowcontrolV1beta1Interface {
return c.flowcontrolv1beta1
}
func (c *clientset) FlowcontrolV1beta2() k8s_io_client_go_kubernetes_typed_flowcontrol_v1beta2.FlowcontrolV1beta2Interface {
return c.flowcontrolv1beta2
}
func (c *clientset) InternalV1alpha1() k8s_io_client_go_kubernetes_typed_apiserverinternal_v1alpha1.InternalV1alpha1Interface {
return c.internalv1alpha1
}
func (c *clientset) NetworkingV1() k8s_io_client_go_kubernetes_typed_networking_v1.NetworkingV1Interface {
return c.networkingv1
}
func (c *clientset) NetworkingV1alpha1() k8s_io_client_go_kubernetes_typed_networking_v1alpha1.NetworkingV1alpha1Interface {
return c.networkingv1alpha1
}
func (c *clientset) NetworkingV1beta1() k8s_io_client_go_kubernetes_typed_networking_v1beta1.NetworkingV1beta1Interface {
return c.networkingv1beta1
}
func (c *clientset) NodeV1() k8s_io_client_go_kubernetes_typed_node_v1.NodeV1Interface {
return c.nodev1
}
func (c *clientset) NodeV1alpha1() k8s_io_client_go_kubernetes_typed_node_v1alpha1.NodeV1alpha1Interface {
return c.nodev1alpha1
}
func (c *clientset) NodeV1beta1() k8s_io_client_go_kubernetes_typed_node_v1beta1.NodeV1beta1Interface {
return c.nodev1beta1
}
func (c *clientset) PolicyV1() k8s_io_client_go_kubernetes_typed_policy_v1.PolicyV1Interface {
return c.policyv1
}
func (c *clientset) PolicyV1beta1() k8s_io_client_go_kubernetes_typed_policy_v1beta1.PolicyV1beta1Interface {
return c.policyv1beta1
}
func (c *clientset) RbacV1() k8s_io_client_go_kubernetes_typed_rbac_v1.RbacV1Interface {
return c.rbacv1
}
func (c *clientset) RbacV1alpha1() k8s_io_client_go_kubernetes_typed_rbac_v1alpha1.RbacV1alpha1Interface {
return c.rbacv1alpha1
}
func (c *clientset) RbacV1beta1() k8s_io_client_go_kubernetes_typed_rbac_v1beta1.RbacV1beta1Interface {
return c.rbacv1beta1
}
func (c *clientset) SchedulingV1() k8s_io_client_go_kubernetes_typed_scheduling_v1.SchedulingV1Interface {
return c.schedulingv1
}
func (c *clientset) SchedulingV1alpha1() k8s_io_client_go_kubernetes_typed_scheduling_v1alpha1.SchedulingV1alpha1Interface {
return c.schedulingv1alpha1
}
func (c *clientset) SchedulingV1beta1() k8s_io_client_go_kubernetes_typed_scheduling_v1beta1.SchedulingV1beta1Interface {
return c.schedulingv1beta1
}
func (c *clientset) StorageV1() k8s_io_client_go_kubernetes_typed_storage_v1.StorageV1Interface {
return c.storagev1
}
func (c *clientset) StorageV1alpha1() k8s_io_client_go_kubernetes_typed_storage_v1alpha1.StorageV1alpha1Interface {
return c.storagev1alpha1
}
func (c *clientset) StorageV1beta1() k8s_io_client_go_kubernetes_typed_storage_v1beta1.StorageV1beta1Interface {
return c.storagev1beta1
}
type NewOption func(Interface) Interface
func NewForConfig(c *k8s_io_client_go_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 *k8s_io_client_go_rest.Config, httpClient *net_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 *k8s_io_client_go_rest.Config, opts ...NewOption) Interface {
return From(k8s_io_client_go_kubernetes.NewForConfigOrDie(c), opts...)
}
func New(c k8s_io_client_go_rest.Interface, opts ...NewOption) Interface {
return From(k8s_io_client_go_kubernetes.New(c), opts...)
}
func from(inner k8s_io_client_go_kubernetes.Interface, opts ...NewOption) Interface {
return &wrapper{inner}
}
func From(inner k8s_io_client_go_kubernetes.Interface, opts ...NewOption) Interface {
i := from(inner)
for _, opt := range opts {
i = opt(i)
}
return i
}
func (i *wrapper) WithMetrics(m github_com_kyverno_kyverno_pkg_metrics.MetricsConfigManager, t github_com_kyverno_kyverno_pkg_metrics.ClientType) Interface {
return from(github_com_kyverno_kyverno_pkg_clients_middleware_metrics_kube.Wrap(i, m, t))
}
func WithMetrics(m github_com_kyverno_kyverno_pkg_metrics.MetricsConfigManager, t github_com_kyverno_kyverno_pkg_metrics.ClientType) NewOption {
return func(i Interface) Interface {
return i.WithMetrics(m, t)
func WrapWithMetrics(inner k8s_io_client_go_kubernetes.Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes.Interface {
return &clientset{
inner: inner,
admissionregistrationv1: admissionregistrationv1.WithMetrics(inner.AdmissionregistrationV1(), metrics, clientType),
admissionregistrationv1beta1: admissionregistrationv1beta1.WithMetrics(inner.AdmissionregistrationV1beta1(), metrics, clientType),
appsv1: appsv1.WithMetrics(inner.AppsV1(), metrics, clientType),
appsv1beta1: appsv1beta1.WithMetrics(inner.AppsV1beta1(), metrics, clientType),
appsv1beta2: appsv1beta2.WithMetrics(inner.AppsV1beta2(), metrics, clientType),
authenticationv1: authenticationv1.WithMetrics(inner.AuthenticationV1(), metrics, clientType),
authenticationv1beta1: authenticationv1beta1.WithMetrics(inner.AuthenticationV1beta1(), metrics, clientType),
authorizationv1: authorizationv1.WithMetrics(inner.AuthorizationV1(), metrics, clientType),
authorizationv1beta1: authorizationv1beta1.WithMetrics(inner.AuthorizationV1beta1(), metrics, clientType),
autoscalingv1: autoscalingv1.WithMetrics(inner.AutoscalingV1(), metrics, clientType),
autoscalingv2: autoscalingv2.WithMetrics(inner.AutoscalingV2(), metrics, clientType),
autoscalingv2beta1: autoscalingv2beta1.WithMetrics(inner.AutoscalingV2beta1(), metrics, clientType),
autoscalingv2beta2: autoscalingv2beta2.WithMetrics(inner.AutoscalingV2beta2(), metrics, clientType),
batchv1: batchv1.WithMetrics(inner.BatchV1(), metrics, clientType),
batchv1beta1: batchv1beta1.WithMetrics(inner.BatchV1beta1(), metrics, clientType),
certificatesv1: certificatesv1.WithMetrics(inner.CertificatesV1(), metrics, clientType),
certificatesv1beta1: certificatesv1beta1.WithMetrics(inner.CertificatesV1beta1(), metrics, clientType),
coordinationv1: coordinationv1.WithMetrics(inner.CoordinationV1(), metrics, clientType),
coordinationv1beta1: coordinationv1beta1.WithMetrics(inner.CoordinationV1beta1(), metrics, clientType),
corev1: corev1.WithMetrics(inner.CoreV1(), metrics, clientType),
discoveryv1: discoveryv1.WithMetrics(inner.DiscoveryV1(), metrics, clientType),
discoveryv1beta1: discoveryv1beta1.WithMetrics(inner.DiscoveryV1beta1(), metrics, clientType),
eventsv1: eventsv1.WithMetrics(inner.EventsV1(), metrics, clientType),
eventsv1beta1: eventsv1beta1.WithMetrics(inner.EventsV1beta1(), metrics, clientType),
extensionsv1beta1: extensionsv1beta1.WithMetrics(inner.ExtensionsV1beta1(), metrics, clientType),
flowcontrolv1alpha1: flowcontrolv1alpha1.WithMetrics(inner.FlowcontrolV1alpha1(), metrics, clientType),
flowcontrolv1beta1: flowcontrolv1beta1.WithMetrics(inner.FlowcontrolV1beta1(), metrics, clientType),
flowcontrolv1beta2: flowcontrolv1beta2.WithMetrics(inner.FlowcontrolV1beta2(), metrics, clientType),
internalv1alpha1: internalv1alpha1.WithMetrics(inner.InternalV1alpha1(), metrics, clientType),
networkingv1: networkingv1.WithMetrics(inner.NetworkingV1(), metrics, clientType),
networkingv1alpha1: networkingv1alpha1.WithMetrics(inner.NetworkingV1alpha1(), metrics, clientType),
networkingv1beta1: networkingv1beta1.WithMetrics(inner.NetworkingV1beta1(), metrics, clientType),
nodev1: nodev1.WithMetrics(inner.NodeV1(), metrics, clientType),
nodev1alpha1: nodev1alpha1.WithMetrics(inner.NodeV1alpha1(), metrics, clientType),
nodev1beta1: nodev1beta1.WithMetrics(inner.NodeV1beta1(), metrics, clientType),
policyv1: policyv1.WithMetrics(inner.PolicyV1(), metrics, clientType),
policyv1beta1: policyv1beta1.WithMetrics(inner.PolicyV1beta1(), metrics, clientType),
rbacv1: rbacv1.WithMetrics(inner.RbacV1(), metrics, clientType),
rbacv1alpha1: rbacv1alpha1.WithMetrics(inner.RbacV1alpha1(), metrics, clientType),
rbacv1beta1: rbacv1beta1.WithMetrics(inner.RbacV1beta1(), metrics, clientType),
schedulingv1: schedulingv1.WithMetrics(inner.SchedulingV1(), metrics, clientType),
schedulingv1alpha1: schedulingv1alpha1.WithMetrics(inner.SchedulingV1alpha1(), metrics, clientType),
schedulingv1beta1: schedulingv1beta1.WithMetrics(inner.SchedulingV1beta1(), metrics, clientType),
storagev1: storagev1.WithMetrics(inner.StorageV1(), metrics, clientType),
storagev1alpha1: storagev1alpha1.WithMetrics(inner.StorageV1alpha1(), metrics, clientType),
storagev1beta1: storagev1beta1.WithMetrics(inner.StorageV1beta1(), metrics, clientType),
}
}
func (i *wrapper) WithTracing() Interface {
return from(github_com_kyverno_kyverno_pkg_clients_middleware_tracing_kube.Wrap(i))
}
func WithTracing() NewOption {
return func(i Interface) Interface {
return i.WithTracing()
func WrapWithTracing(inner k8s_io_client_go_kubernetes.Interface) k8s_io_client_go_kubernetes.Interface {
return &clientset{
inner: inner,
admissionregistrationv1: admissionregistrationv1.WithTracing(inner.AdmissionregistrationV1(), "AdmissionregistrationV1"),
admissionregistrationv1beta1: admissionregistrationv1beta1.WithTracing(inner.AdmissionregistrationV1beta1(), "AdmissionregistrationV1beta1"),
appsv1: appsv1.WithTracing(inner.AppsV1(), "AppsV1"),
appsv1beta1: appsv1beta1.WithTracing(inner.AppsV1beta1(), "AppsV1beta1"),
appsv1beta2: appsv1beta2.WithTracing(inner.AppsV1beta2(), "AppsV1beta2"),
authenticationv1: authenticationv1.WithTracing(inner.AuthenticationV1(), "AuthenticationV1"),
authenticationv1beta1: authenticationv1beta1.WithTracing(inner.AuthenticationV1beta1(), "AuthenticationV1beta1"),
authorizationv1: authorizationv1.WithTracing(inner.AuthorizationV1(), "AuthorizationV1"),
authorizationv1beta1: authorizationv1beta1.WithTracing(inner.AuthorizationV1beta1(), "AuthorizationV1beta1"),
autoscalingv1: autoscalingv1.WithTracing(inner.AutoscalingV1(), "AutoscalingV1"),
autoscalingv2: autoscalingv2.WithTracing(inner.AutoscalingV2(), "AutoscalingV2"),
autoscalingv2beta1: autoscalingv2beta1.WithTracing(inner.AutoscalingV2beta1(), "AutoscalingV2beta1"),
autoscalingv2beta2: autoscalingv2beta2.WithTracing(inner.AutoscalingV2beta2(), "AutoscalingV2beta2"),
batchv1: batchv1.WithTracing(inner.BatchV1(), "BatchV1"),
batchv1beta1: batchv1beta1.WithTracing(inner.BatchV1beta1(), "BatchV1beta1"),
certificatesv1: certificatesv1.WithTracing(inner.CertificatesV1(), "CertificatesV1"),
certificatesv1beta1: certificatesv1beta1.WithTracing(inner.CertificatesV1beta1(), "CertificatesV1beta1"),
coordinationv1: coordinationv1.WithTracing(inner.CoordinationV1(), "CoordinationV1"),
coordinationv1beta1: coordinationv1beta1.WithTracing(inner.CoordinationV1beta1(), "CoordinationV1beta1"),
corev1: corev1.WithTracing(inner.CoreV1(), "CoreV1"),
discoveryv1: discoveryv1.WithTracing(inner.DiscoveryV1(), "DiscoveryV1"),
discoveryv1beta1: discoveryv1beta1.WithTracing(inner.DiscoveryV1beta1(), "DiscoveryV1beta1"),
eventsv1: eventsv1.WithTracing(inner.EventsV1(), "EventsV1"),
eventsv1beta1: eventsv1beta1.WithTracing(inner.EventsV1beta1(), "EventsV1beta1"),
extensionsv1beta1: extensionsv1beta1.WithTracing(inner.ExtensionsV1beta1(), "ExtensionsV1beta1"),
flowcontrolv1alpha1: flowcontrolv1alpha1.WithTracing(inner.FlowcontrolV1alpha1(), "FlowcontrolV1alpha1"),
flowcontrolv1beta1: flowcontrolv1beta1.WithTracing(inner.FlowcontrolV1beta1(), "FlowcontrolV1beta1"),
flowcontrolv1beta2: flowcontrolv1beta2.WithTracing(inner.FlowcontrolV1beta2(), "FlowcontrolV1beta2"),
internalv1alpha1: internalv1alpha1.WithTracing(inner.InternalV1alpha1(), "InternalV1alpha1"),
networkingv1: networkingv1.WithTracing(inner.NetworkingV1(), "NetworkingV1"),
networkingv1alpha1: networkingv1alpha1.WithTracing(inner.NetworkingV1alpha1(), "NetworkingV1alpha1"),
networkingv1beta1: networkingv1beta1.WithTracing(inner.NetworkingV1beta1(), "NetworkingV1beta1"),
nodev1: nodev1.WithTracing(inner.NodeV1(), "NodeV1"),
nodev1alpha1: nodev1alpha1.WithTracing(inner.NodeV1alpha1(), "NodeV1alpha1"),
nodev1beta1: nodev1beta1.WithTracing(inner.NodeV1beta1(), "NodeV1beta1"),
policyv1: policyv1.WithTracing(inner.PolicyV1(), "PolicyV1"),
policyv1beta1: policyv1beta1.WithTracing(inner.PolicyV1beta1(), "PolicyV1beta1"),
rbacv1: rbacv1.WithTracing(inner.RbacV1(), "RbacV1"),
rbacv1alpha1: rbacv1alpha1.WithTracing(inner.RbacV1alpha1(), "RbacV1alpha1"),
rbacv1beta1: rbacv1beta1.WithTracing(inner.RbacV1beta1(), "RbacV1beta1"),
schedulingv1: schedulingv1.WithTracing(inner.SchedulingV1(), "SchedulingV1"),
schedulingv1alpha1: schedulingv1alpha1.WithTracing(inner.SchedulingV1alpha1(), "SchedulingV1alpha1"),
schedulingv1beta1: schedulingv1beta1.WithTracing(inner.SchedulingV1beta1(), "SchedulingV1beta1"),
storagev1: storagev1.WithTracing(inner.StorageV1(), "StorageV1"),
storagev1alpha1: storagev1alpha1.WithTracing(inner.StorageV1alpha1(), "StorageV1alpha1"),
storagev1beta1: storagev1beta1.WithTracing(inner.StorageV1beta1(), "StorageV1beta1"),
}
}

View file

@ -0,0 +1,42 @@
package client
import (
leases "github.com/kyverno/kyverno/pkg/clients/kube/coordinationv1/leases"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_coordination_v1 "k8s.io/client-go/kubernetes/typed/coordination/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_coordination_v1.CoordinationV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_coordination_v1.CoordinationV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_coordination_v1.CoordinationV1Interface, client string) k8s_io_client_go_kubernetes_typed_coordination_v1.CoordinationV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_coordination_v1.CoordinationV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) Leases(namespace string) k8s_io_client_go_kubernetes_typed_coordination_v1.LeaseInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Lease", c.clientType)
return leases.WithMetrics(c.inner.Leases(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_coordination_v1.CoordinationV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) Leases(namespace string) k8s_io_client_go_kubernetes_typed_coordination_v1.LeaseInterface {
return leases.WithTracing(c.inner.Leases(namespace), c.client, "Lease")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_coordination_v1 "k8s.io/api/coordination/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_coordination_v1 "k8s.io/client-go/applyconfigurations/coordination/v1"
k8s_io_client_go_kubernetes_typed_coordination_v1 "k8s.io/client-go/kubernetes/typed/coordination/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_coordination_v1.LeaseInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_coordination_v1.LeaseInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_coordination_v1.LeaseInterface, client, kind string) k8s_io_client_go_kubernetes_typed_coordination_v1.LeaseInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_coordination_v1.LeaseInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_coordination_v1.LeaseApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_coordination_v1.Lease, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_coordination_v1.Lease, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_coordination_v1.Lease, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_coordination_v1.Lease, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_coordination_v1.LeaseList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_coordination_v1.Lease, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_coordination_v1.Lease, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_coordination_v1.Lease, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_coordination_v1.LeaseInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_coordination_v1.LeaseApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_coordination_v1.Lease, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_coordination_v1.Lease, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_coordination_v1.Lease, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_coordination_v1.Lease, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_coordination_v1.LeaseList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_coordination_v1.Lease, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_coordination_v1.Lease, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_coordination_v1.Lease, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
leases "github.com/kyverno/kyverno/pkg/clients/kube/coordinationv1beta1/leases"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_coordination_v1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_coordination_v1beta1.CoordinationV1beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_coordination_v1beta1.CoordinationV1beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_coordination_v1beta1.CoordinationV1beta1Interface, client string) k8s_io_client_go_kubernetes_typed_coordination_v1beta1.CoordinationV1beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_coordination_v1beta1.CoordinationV1beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) Leases(namespace string) k8s_io_client_go_kubernetes_typed_coordination_v1beta1.LeaseInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Lease", c.clientType)
return leases.WithMetrics(c.inner.Leases(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_coordination_v1beta1.CoordinationV1beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) Leases(namespace string) k8s_io_client_go_kubernetes_typed_coordination_v1beta1.LeaseInterface {
return leases.WithTracing(c.inner.Leases(namespace), c.client, "Lease")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_coordination_v1beta1 "k8s.io/api/coordination/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_coordination_v1beta1 "k8s.io/client-go/applyconfigurations/coordination/v1beta1"
k8s_io_client_go_kubernetes_typed_coordination_v1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_coordination_v1beta1.LeaseInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_coordination_v1beta1.LeaseInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_coordination_v1beta1.LeaseInterface, client, kind string) k8s_io_client_go_kubernetes_typed_coordination_v1beta1.LeaseInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_coordination_v1beta1.LeaseInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_coordination_v1beta1.LeaseApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_coordination_v1beta1.Lease, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_coordination_v1beta1.Lease, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_coordination_v1beta1.Lease, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_coordination_v1beta1.Lease, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_coordination_v1beta1.LeaseList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_coordination_v1beta1.Lease, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_coordination_v1beta1.Lease, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_coordination_v1beta1.Lease, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_coordination_v1beta1.LeaseInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_coordination_v1beta1.LeaseApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_coordination_v1beta1.Lease, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_coordination_v1beta1.Lease, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_coordination_v1beta1.Lease, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_coordination_v1beta1.Lease, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_coordination_v1beta1.LeaseList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_coordination_v1beta1.Lease, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_coordination_v1beta1.Lease, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_coordination_v1beta1.Lease, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,162 @@
package client
import (
componentstatuses "github.com/kyverno/kyverno/pkg/clients/kube/corev1/componentstatuses"
configmaps "github.com/kyverno/kyverno/pkg/clients/kube/corev1/configmaps"
endpoints "github.com/kyverno/kyverno/pkg/clients/kube/corev1/endpoints"
events "github.com/kyverno/kyverno/pkg/clients/kube/corev1/events"
limitranges "github.com/kyverno/kyverno/pkg/clients/kube/corev1/limitranges"
namespaces "github.com/kyverno/kyverno/pkg/clients/kube/corev1/namespaces"
nodes "github.com/kyverno/kyverno/pkg/clients/kube/corev1/nodes"
persistentvolumeclaims "github.com/kyverno/kyverno/pkg/clients/kube/corev1/persistentvolumeclaims"
persistentvolumes "github.com/kyverno/kyverno/pkg/clients/kube/corev1/persistentvolumes"
pods "github.com/kyverno/kyverno/pkg/clients/kube/corev1/pods"
podtemplates "github.com/kyverno/kyverno/pkg/clients/kube/corev1/podtemplates"
replicationcontrollers "github.com/kyverno/kyverno/pkg/clients/kube/corev1/replicationcontrollers"
resourcequotas "github.com/kyverno/kyverno/pkg/clients/kube/corev1/resourcequotas"
secrets "github.com/kyverno/kyverno/pkg/clients/kube/corev1/secrets"
serviceaccounts "github.com/kyverno/kyverno/pkg/clients/kube/corev1/serviceaccounts"
services "github.com/kyverno/kyverno/pkg/clients/kube/corev1/services"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.CoreV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_core_v1.CoreV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.CoreV1Interface, client string) k8s_io_client_go_kubernetes_typed_core_v1.CoreV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.CoreV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) ComponentStatuses() k8s_io_client_go_kubernetes_typed_core_v1.ComponentStatusInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "ComponentStatus", c.clientType)
return componentstatuses.WithMetrics(c.inner.ComponentStatuses(), recorder)
}
func (c *withMetrics) ConfigMaps(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.ConfigMapInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "ConfigMap", c.clientType)
return configmaps.WithMetrics(c.inner.ConfigMaps(namespace), recorder)
}
func (c *withMetrics) Endpoints(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.EndpointsInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Endpoints", c.clientType)
return endpoints.WithMetrics(c.inner.Endpoints(namespace), recorder)
}
func (c *withMetrics) Events(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.EventInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Event", c.clientType)
return events.WithMetrics(c.inner.Events(namespace), recorder)
}
func (c *withMetrics) LimitRanges(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.LimitRangeInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "LimitRange", c.clientType)
return limitranges.WithMetrics(c.inner.LimitRanges(namespace), recorder)
}
func (c *withMetrics) Namespaces() k8s_io_client_go_kubernetes_typed_core_v1.NamespaceInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "Namespace", c.clientType)
return namespaces.WithMetrics(c.inner.Namespaces(), recorder)
}
func (c *withMetrics) Nodes() k8s_io_client_go_kubernetes_typed_core_v1.NodeInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "Node", c.clientType)
return nodes.WithMetrics(c.inner.Nodes(), recorder)
}
func (c *withMetrics) PersistentVolumeClaims(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeClaimInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "PersistentVolumeClaim", c.clientType)
return persistentvolumeclaims.WithMetrics(c.inner.PersistentVolumeClaims(namespace), recorder)
}
func (c *withMetrics) PersistentVolumes() k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "PersistentVolume", c.clientType)
return persistentvolumes.WithMetrics(c.inner.PersistentVolumes(), recorder)
}
func (c *withMetrics) PodTemplates(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.PodTemplateInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "PodTemplate", c.clientType)
return podtemplates.WithMetrics(c.inner.PodTemplates(namespace), recorder)
}
func (c *withMetrics) Pods(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.PodInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Pod", c.clientType)
return pods.WithMetrics(c.inner.Pods(namespace), recorder)
}
func (c *withMetrics) ReplicationControllers(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.ReplicationControllerInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "ReplicationController", c.clientType)
return replicationcontrollers.WithMetrics(c.inner.ReplicationControllers(namespace), recorder)
}
func (c *withMetrics) ResourceQuotas(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.ResourceQuotaInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "ResourceQuota", c.clientType)
return resourcequotas.WithMetrics(c.inner.ResourceQuotas(namespace), recorder)
}
func (c *withMetrics) Secrets(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.SecretInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Secret", c.clientType)
return secrets.WithMetrics(c.inner.Secrets(namespace), recorder)
}
func (c *withMetrics) ServiceAccounts(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.ServiceAccountInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "ServiceAccount", c.clientType)
return serviceaccounts.WithMetrics(c.inner.ServiceAccounts(namespace), recorder)
}
func (c *withMetrics) Services(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.ServiceInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Service", c.clientType)
return services.WithMetrics(c.inner.Services(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.CoreV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) ComponentStatuses() k8s_io_client_go_kubernetes_typed_core_v1.ComponentStatusInterface {
return componentstatuses.WithTracing(c.inner.ComponentStatuses(), c.client, "ComponentStatus")
}
func (c *withTracing) ConfigMaps(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.ConfigMapInterface {
return configmaps.WithTracing(c.inner.ConfigMaps(namespace), c.client, "ConfigMap")
}
func (c *withTracing) Endpoints(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.EndpointsInterface {
return endpoints.WithTracing(c.inner.Endpoints(namespace), c.client, "Endpoints")
}
func (c *withTracing) Events(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.EventInterface {
return events.WithTracing(c.inner.Events(namespace), c.client, "Event")
}
func (c *withTracing) LimitRanges(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.LimitRangeInterface {
return limitranges.WithTracing(c.inner.LimitRanges(namespace), c.client, "LimitRange")
}
func (c *withTracing) Namespaces() k8s_io_client_go_kubernetes_typed_core_v1.NamespaceInterface {
return namespaces.WithTracing(c.inner.Namespaces(), c.client, "Namespace")
}
func (c *withTracing) Nodes() k8s_io_client_go_kubernetes_typed_core_v1.NodeInterface {
return nodes.WithTracing(c.inner.Nodes(), c.client, "Node")
}
func (c *withTracing) PersistentVolumeClaims(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeClaimInterface {
return persistentvolumeclaims.WithTracing(c.inner.PersistentVolumeClaims(namespace), c.client, "PersistentVolumeClaim")
}
func (c *withTracing) PersistentVolumes() k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeInterface {
return persistentvolumes.WithTracing(c.inner.PersistentVolumes(), c.client, "PersistentVolume")
}
func (c *withTracing) PodTemplates(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.PodTemplateInterface {
return podtemplates.WithTracing(c.inner.PodTemplates(namespace), c.client, "PodTemplate")
}
func (c *withTracing) Pods(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.PodInterface {
return pods.WithTracing(c.inner.Pods(namespace), c.client, "Pod")
}
func (c *withTracing) ReplicationControllers(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.ReplicationControllerInterface {
return replicationcontrollers.WithTracing(c.inner.ReplicationControllers(namespace), c.client, "ReplicationController")
}
func (c *withTracing) ResourceQuotas(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.ResourceQuotaInterface {
return resourcequotas.WithTracing(c.inner.ResourceQuotas(namespace), c.client, "ResourceQuota")
}
func (c *withTracing) Secrets(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.SecretInterface {
return secrets.WithTracing(c.inner.Secrets(namespace), c.client, "Secret")
}
func (c *withTracing) ServiceAccounts(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.ServiceAccountInterface {
return serviceaccounts.WithTracing(c.inner.ServiceAccounts(namespace), c.client, "ServiceAccount")
}
func (c *withTracing) Services(namespace string) k8s_io_client_go_kubernetes_typed_core_v1.ServiceInterface {
return services.WithTracing(c.inner.Services(namespace), c.client, "Service")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.ComponentStatusInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.ComponentStatusInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.ComponentStatusInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.ComponentStatusInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ComponentStatusInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ComponentStatusApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ComponentStatus, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.ComponentStatus, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.ComponentStatus, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.ComponentStatus, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ComponentStatusList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.ComponentStatus, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.ComponentStatus, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ComponentStatus, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ComponentStatusInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ComponentStatusApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ComponentStatus, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.ComponentStatus, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.ComponentStatus, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.ComponentStatus, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ComponentStatusList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.ComponentStatus, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.ComponentStatus, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ComponentStatus, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.ConfigMapInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.ConfigMapInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.ConfigMapInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.ConfigMapInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ConfigMapInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ConfigMapApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ConfigMap, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.ConfigMap, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.ConfigMap, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.ConfigMap, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ConfigMapList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.ConfigMap, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.ConfigMap, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ConfigMap, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ConfigMapInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ConfigMapApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ConfigMap, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.ConfigMap, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.ConfigMap, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.ConfigMap, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ConfigMapList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.ConfigMap, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.ConfigMap, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ConfigMap, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.EndpointsInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.EndpointsInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.EndpointsInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.EndpointsInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.EndpointsInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.EndpointsApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Endpoints, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Endpoints, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Endpoints, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Endpoints, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.EndpointsList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Endpoints, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Endpoints, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Endpoints, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.EndpointsInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.EndpointsApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Endpoints, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Endpoints, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Endpoints, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Endpoints, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.EndpointsList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Endpoints, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Endpoints, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Endpoints, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,278 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_fields "k8s.io/apimachinery/pkg/fields"
k8s_io_apimachinery_pkg_runtime "k8s.io/apimachinery/pkg/runtime"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.EventInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.EventInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.EventInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.EventInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.EventInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.EventApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Event, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Event, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) CreateWithEventNamespace(arg0 *k8s_io_api_core_v1.Event) (*k8s_io_api_core_v1.Event, error) {
defer c.recorder.Record("create_with_event_namespace")
return c.inner.CreateWithEventNamespace(arg0)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Event, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) GetFieldSelector(arg0 *string, arg1 *string, arg2 *string, arg3 *string) k8s_io_apimachinery_pkg_fields.Selector {
defer c.recorder.Record("get_field_selector")
return c.inner.GetFieldSelector(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.EventList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Event, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) PatchWithEventNamespace(arg0 *k8s_io_api_core_v1.Event, arg1 []uint8) (*k8s_io_api_core_v1.Event, error) {
defer c.recorder.Record("patch_with_event_namespace")
return c.inner.PatchWithEventNamespace(arg0, arg1)
}
func (c *withMetrics) Search(arg0 *k8s_io_apimachinery_pkg_runtime.Scheme, arg1 k8s_io_apimachinery_pkg_runtime.Object) (*k8s_io_api_core_v1.EventList, error) {
defer c.recorder.Record("search")
return c.inner.Search(arg0, arg1)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Event, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateWithEventNamespace(arg0 *k8s_io_api_core_v1.Event) (*k8s_io_api_core_v1.Event, error) {
defer c.recorder.Record("update_with_event_namespace")
return c.inner.UpdateWithEventNamespace(arg0)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.EventInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.EventApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) CreateWithEventNamespace(arg0 *k8s_io_api_core_v1.Event) (*k8s_io_api_core_v1.Event, error) {
ret0, ret1 := c.inner.CreateWithEventNamespace(arg0)
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) GetFieldSelector(arg0 *string, arg1 *string, arg2 *string, arg3 *string) k8s_io_apimachinery_pkg_fields.Selector {
ret0 := c.inner.GetFieldSelector(arg0, arg1, arg2, arg3)
return ret0
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.EventList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) PatchWithEventNamespace(arg0 *k8s_io_api_core_v1.Event, arg1 []uint8) (*k8s_io_api_core_v1.Event, error) {
ret0, ret1 := c.inner.PatchWithEventNamespace(arg0, arg1)
return ret0, ret1
}
func (c *withTracing) Search(arg0 *k8s_io_apimachinery_pkg_runtime.Scheme, arg1 k8s_io_apimachinery_pkg_runtime.Object) (*k8s_io_api_core_v1.EventList, error) {
ret0, ret1 := c.inner.Search(arg0, arg1)
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateWithEventNamespace(arg0 *k8s_io_api_core_v1.Event) (*k8s_io_api_core_v1.Event, error) {
ret0, ret1 := c.inner.UpdateWithEventNamespace(arg0)
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.LimitRangeInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.LimitRangeInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.LimitRangeInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.LimitRangeInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.LimitRangeInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.LimitRangeApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.LimitRange, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.LimitRange, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.LimitRange, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.LimitRange, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.LimitRangeList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.LimitRange, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.LimitRange, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.LimitRange, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.LimitRangeInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.LimitRangeApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.LimitRange, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.LimitRange, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.LimitRange, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.LimitRange, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.LimitRangeList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.LimitRange, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.LimitRange, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.LimitRange, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.NamespaceInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.NamespaceInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.NamespaceInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.NamespaceInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.NamespaceInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.NamespaceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Namespace, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.NamespaceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Namespace, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Namespace, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Namespace, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) Finalize(arg0 context.Context, arg1 *k8s_io_api_core_v1.Namespace, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Namespace, error) {
defer c.recorder.Record("finalize")
return c.inner.Finalize(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Namespace, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.NamespaceList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Namespace, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Namespace, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Namespace, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.Namespace, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Namespace, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.NamespaceInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.NamespaceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Namespace, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.NamespaceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Namespace, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Namespace, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Namespace, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Finalize(arg0 context.Context, arg1 *k8s_io_api_core_v1.Namespace, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Namespace, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Finalize"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Finalize"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Finalize(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Namespace, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.NamespaceList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Namespace, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Namespace, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Namespace, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.Namespace, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Namespace, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,302 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.NodeInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.NodeInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.NodeInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.NodeInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.NodeInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.NodeApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Node, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.NodeApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Node, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Node, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Node, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Node, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.NodeList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Node, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) PatchStatus(arg0 context.Context, arg1 string, arg2 []uint8) (*k8s_io_api_core_v1.Node, error) {
defer c.recorder.Record("patch_status")
return c.inner.PatchStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Node, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Node, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.Node, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Node, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.NodeInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.NodeApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Node, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.NodeApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Node, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Node, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Node, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Node, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.NodeList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Node, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) PatchStatus(arg0 context.Context, arg1 string, arg2 []uint8) (*k8s_io_api_core_v1.Node, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "PatchStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "PatchStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.PatchStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Node, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Node, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.Node, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Node, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeClaimInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeClaimInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeClaimInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeClaimInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeClaimInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PersistentVolumeClaimApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PersistentVolumeClaimApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolumeClaim, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.PersistentVolumeClaimList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolumeClaim, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolumeClaim, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeClaimInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PersistentVolumeClaimApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PersistentVolumeClaimApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolumeClaim, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.PersistentVolumeClaimList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolumeClaim, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolumeClaim, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.PersistentVolumeClaim, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PersistentVolumeApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PersistentVolumeApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolume, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.PersistentVolumeList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.PersistentVolume, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolume, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolume, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.PersistentVolumeInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PersistentVolumeApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PersistentVolumeApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolume, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.PersistentVolumeList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.PersistentVolume, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolume, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.PersistentVolume, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.PersistentVolume, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,409 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_api_policy_v1 "k8s.io/api/policy/v1"
k8s_io_api_policy_v1beta1 "k8s.io/api/policy/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
k8s_io_client_go_rest "k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.PodInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.PodInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.PodInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.PodInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.PodInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PodApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Pod, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PodApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Pod, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Bind(arg0 context.Context, arg1 *k8s_io_api_core_v1.Binding, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) error {
defer c.recorder.Record("bind")
return c.inner.Bind(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Pod, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Pod, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Evict(arg0 context.Context, arg1 *k8s_io_api_policy_v1beta1.Eviction) error {
defer c.recorder.Record("evict")
return c.inner.Evict(arg0, arg1)
}
func (c *withMetrics) EvictV1(arg0 context.Context, arg1 *k8s_io_api_policy_v1.Eviction) error {
defer c.recorder.Record("evict_v1")
return c.inner.EvictV1(arg0, arg1)
}
func (c *withMetrics) EvictV1beta1(arg0 context.Context, arg1 *k8s_io_api_policy_v1beta1.Eviction) error {
defer c.recorder.Record("evict_v1beta1")
return c.inner.EvictV1beta1(arg0, arg1)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Pod, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) GetLogs(arg0 string, arg1 *k8s_io_api_core_v1.PodLogOptions) *k8s_io_client_go_rest.Request {
defer c.recorder.Record("get_logs")
return c.inner.GetLogs(arg0, arg1)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.PodList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Pod, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) ProxyGet(arg0 string, arg1 string, arg2 string, arg3 string, arg4 map[string]string) k8s_io_client_go_rest.ResponseWrapper {
defer c.recorder.Record("proxy_get")
return c.inner.ProxyGet(arg0, arg1, arg2, arg3, arg4)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Pod, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Pod, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateEphemeralContainers(arg0 context.Context, arg1 string, arg2 *k8s_io_api_core_v1.Pod, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Pod, error) {
defer c.recorder.Record("update_ephemeral_containers")
return c.inner.UpdateEphemeralContainers(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.Pod, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Pod, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.PodInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PodApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Pod, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PodApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Pod, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Bind(arg0 context.Context, arg1 *k8s_io_api_core_v1.Binding, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Bind"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Bind"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Bind(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Pod, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Pod, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Evict(arg0 context.Context, arg1 *k8s_io_api_policy_v1beta1.Eviction) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Evict"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Evict"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Evict(arg0, arg1)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) EvictV1(arg0 context.Context, arg1 *k8s_io_api_policy_v1.Eviction) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "EvictV1"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "EvictV1"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.EvictV1(arg0, arg1)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) EvictV1beta1(arg0 context.Context, arg1 *k8s_io_api_policy_v1beta1.Eviction) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "EvictV1beta1"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "EvictV1beta1"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.EvictV1beta1(arg0, arg1)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Pod, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) GetLogs(arg0 string, arg1 *k8s_io_api_core_v1.PodLogOptions) *k8s_io_client_go_rest.Request {
ret0 := c.inner.GetLogs(arg0, arg1)
return ret0
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.PodList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Pod, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ProxyGet(arg0 string, arg1 string, arg2 string, arg3 string, arg4 map[string]string) k8s_io_client_go_rest.ResponseWrapper {
ret0 := c.inner.ProxyGet(arg0, arg1, arg2, arg3, arg4)
return ret0
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Pod, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Pod, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateEphemeralContainers(arg0 context.Context, arg1 string, arg2 *k8s_io_api_core_v1.Pod, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Pod, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateEphemeralContainers"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateEphemeralContainers"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateEphemeralContainers(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.Pod, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Pod, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.PodTemplateInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.PodTemplateInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.PodTemplateInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.PodTemplateInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.PodTemplateInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PodTemplateApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.PodTemplate, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.PodTemplate, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.PodTemplate, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.PodTemplate, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.PodTemplateList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.PodTemplate, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.PodTemplate, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.PodTemplate, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.PodTemplateInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.PodTemplateApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.PodTemplate, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.PodTemplate, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.PodTemplate, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.PodTemplate, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.PodTemplateList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.PodTemplate, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.PodTemplate, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.PodTemplate, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,325 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_autoscaling_v1 "k8s.io/api/autoscaling/v1"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.ReplicationControllerInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.ReplicationControllerInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.ReplicationControllerInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.ReplicationControllerInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ReplicationControllerInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ReplicationControllerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ReplicationControllerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.ReplicationController, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("get_scale")
return c.inner.GetScale(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ReplicationControllerList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.ReplicationController, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.ReplicationController, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_autoscaling_v1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
defer c.recorder.Record("update_scale")
return c.inner.UpdateScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.ReplicationController, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ReplicationControllerInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ReplicationControllerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ReplicationControllerApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.ReplicationController, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "GetScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "GetScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.GetScale(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ReplicationControllerList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.ReplicationController, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.ReplicationController, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_autoscaling_v1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_autoscaling_v1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.ReplicationController, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ReplicationController, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.ResourceQuotaInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.ResourceQuotaInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.ResourceQuotaInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.ResourceQuotaInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ResourceQuotaInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ResourceQuotaApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ResourceQuotaApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.ResourceQuota, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ResourceQuotaList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.ResourceQuota, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.ResourceQuota, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.ResourceQuota, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ResourceQuotaInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ResourceQuotaApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ResourceQuotaApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.ResourceQuota, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ResourceQuotaList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.ResourceQuota, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.ResourceQuota, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.ResourceQuota, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ResourceQuota, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.SecretInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.SecretInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.SecretInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.SecretInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.SecretInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.SecretApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Secret, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Secret, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Secret, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Secret, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.SecretList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Secret, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Secret, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Secret, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.SecretInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.SecretApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Secret, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Secret, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Secret, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Secret, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.SecretList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Secret, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Secret, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Secret, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,259 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_authentication_v1 "k8s.io/api/authentication/v1"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.ServiceAccountInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.ServiceAccountInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.ServiceAccountInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.ServiceAccountInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ServiceAccountInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ServiceAccountApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ServiceAccount, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.ServiceAccount, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.ServiceAccount, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) CreateToken(arg0 context.Context, arg1 string, arg2 *k8s_io_api_authentication_v1.TokenRequest, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authentication_v1.TokenRequest, error) {
defer c.recorder.Record("create_token")
return c.inner.CreateToken(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.ServiceAccount, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ServiceAccountList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.ServiceAccount, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.ServiceAccount, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ServiceAccount, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ServiceAccountInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ServiceAccountApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.ServiceAccount, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.ServiceAccount, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.ServiceAccount, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) CreateToken(arg0 context.Context, arg1 string, arg2 *k8s_io_api_authentication_v1.TokenRequest, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_authentication_v1.TokenRequest, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "CreateToken"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "CreateToken"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.CreateToken(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.ServiceAccount, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ServiceAccountList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.ServiceAccount, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.ServiceAccount, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.ServiceAccount, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,267 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_core_v1 "k8s.io/api/core/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_core_v1 "k8s.io/client-go/applyconfigurations/core/v1"
k8s_io_client_go_kubernetes_typed_core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
k8s_io_client_go_rest "k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_core_v1.ServiceInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_core_v1.ServiceInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_core_v1.ServiceInterface, client, kind string) k8s_io_client_go_kubernetes_typed_core_v1.ServiceInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ServiceInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ServiceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Service, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ServiceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Service, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Service, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Service, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Service, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ServiceList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Service, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) ProxyGet(arg0 string, arg1 string, arg2 string, arg3 string, arg4 map[string]string) k8s_io_client_go_rest.ResponseWrapper {
defer c.recorder.Record("proxy_get")
return c.inner.ProxyGet(arg0, arg1, arg2, arg3, arg4)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Service, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Service, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.Service, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Service, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_core_v1.ServiceInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ServiceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Service, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_core_v1.ServiceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_core_v1.Service, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_core_v1.Service, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_core_v1.Service, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_core_v1.Service, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_core_v1.ServiceList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_core_v1.Service, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ProxyGet(arg0 string, arg1 string, arg2 string, arg3 string, arg4 map[string]string) k8s_io_client_go_rest.ResponseWrapper {
ret0 := c.inner.ProxyGet(arg0, arg1, arg2, arg3, arg4)
return ret0
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_core_v1.Service, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Service, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_core_v1.Service, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_core_v1.Service, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
endpointslices "github.com/kyverno/kyverno/pkg/clients/kube/discoveryv1/endpointslices"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_discovery_v1 "k8s.io/client-go/kubernetes/typed/discovery/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_discovery_v1.DiscoveryV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_discovery_v1.DiscoveryV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_discovery_v1.DiscoveryV1Interface, client string) k8s_io_client_go_kubernetes_typed_discovery_v1.DiscoveryV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_discovery_v1.DiscoveryV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) EndpointSlices(namespace string) k8s_io_client_go_kubernetes_typed_discovery_v1.EndpointSliceInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "EndpointSlice", c.clientType)
return endpointslices.WithMetrics(c.inner.EndpointSlices(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_discovery_v1.DiscoveryV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) EndpointSlices(namespace string) k8s_io_client_go_kubernetes_typed_discovery_v1.EndpointSliceInterface {
return endpointslices.WithTracing(c.inner.EndpointSlices(namespace), c.client, "EndpointSlice")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_discovery_v1 "k8s.io/api/discovery/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_discovery_v1 "k8s.io/client-go/applyconfigurations/discovery/v1"
k8s_io_client_go_kubernetes_typed_discovery_v1 "k8s.io/client-go/kubernetes/typed/discovery/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_discovery_v1.EndpointSliceInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_discovery_v1.EndpointSliceInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_discovery_v1.EndpointSliceInterface, client, kind string) k8s_io_client_go_kubernetes_typed_discovery_v1.EndpointSliceInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_discovery_v1.EndpointSliceInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_discovery_v1.EndpointSliceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_discovery_v1.EndpointSlice, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_discovery_v1.EndpointSlice, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_discovery_v1.EndpointSlice, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_discovery_v1.EndpointSlice, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_discovery_v1.EndpointSliceList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_discovery_v1.EndpointSlice, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_discovery_v1.EndpointSlice, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_discovery_v1.EndpointSlice, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_discovery_v1.EndpointSliceInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_discovery_v1.EndpointSliceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_discovery_v1.EndpointSlice, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_discovery_v1.EndpointSlice, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_discovery_v1.EndpointSlice, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_discovery_v1.EndpointSlice, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_discovery_v1.EndpointSliceList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_discovery_v1.EndpointSlice, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_discovery_v1.EndpointSlice, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_discovery_v1.EndpointSlice, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
endpointslices "github.com/kyverno/kyverno/pkg/clients/kube/discoveryv1beta1/endpointslices"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_discovery_v1beta1 "k8s.io/client-go/kubernetes/typed/discovery/v1beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_discovery_v1beta1.DiscoveryV1beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_discovery_v1beta1.DiscoveryV1beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_discovery_v1beta1.DiscoveryV1beta1Interface, client string) k8s_io_client_go_kubernetes_typed_discovery_v1beta1.DiscoveryV1beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_discovery_v1beta1.DiscoveryV1beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) EndpointSlices(namespace string) k8s_io_client_go_kubernetes_typed_discovery_v1beta1.EndpointSliceInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "EndpointSlice", c.clientType)
return endpointslices.WithMetrics(c.inner.EndpointSlices(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_discovery_v1beta1.DiscoveryV1beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) EndpointSlices(namespace string) k8s_io_client_go_kubernetes_typed_discovery_v1beta1.EndpointSliceInterface {
return endpointslices.WithTracing(c.inner.EndpointSlices(namespace), c.client, "EndpointSlice")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_discovery_v1beta1 "k8s.io/api/discovery/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_discovery_v1beta1 "k8s.io/client-go/applyconfigurations/discovery/v1beta1"
k8s_io_client_go_kubernetes_typed_discovery_v1beta1 "k8s.io/client-go/kubernetes/typed/discovery/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_discovery_v1beta1.EndpointSliceInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_discovery_v1beta1.EndpointSliceInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_discovery_v1beta1.EndpointSliceInterface, client, kind string) k8s_io_client_go_kubernetes_typed_discovery_v1beta1.EndpointSliceInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_discovery_v1beta1.EndpointSliceInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_discovery_v1beta1.EndpointSliceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_discovery_v1beta1.EndpointSlice, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_discovery_v1beta1.EndpointSlice, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_discovery_v1beta1.EndpointSlice, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_discovery_v1beta1.EndpointSlice, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_discovery_v1beta1.EndpointSliceList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_discovery_v1beta1.EndpointSlice, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_discovery_v1beta1.EndpointSlice, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_discovery_v1beta1.EndpointSlice, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_discovery_v1beta1.EndpointSliceInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_discovery_v1beta1.EndpointSliceApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_discovery_v1beta1.EndpointSlice, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_discovery_v1beta1.EndpointSlice, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_discovery_v1beta1.EndpointSlice, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_discovery_v1beta1.EndpointSlice, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_discovery_v1beta1.EndpointSliceList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_discovery_v1beta1.EndpointSlice, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_discovery_v1beta1.EndpointSlice, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_discovery_v1beta1.EndpointSlice, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
events "github.com/kyverno/kyverno/pkg/clients/kube/eventsv1/events"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_events_v1 "k8s.io/client-go/kubernetes/typed/events/v1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_events_v1.EventsV1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_events_v1.EventsV1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_events_v1.EventsV1Interface, client string) k8s_io_client_go_kubernetes_typed_events_v1.EventsV1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_events_v1.EventsV1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) Events(namespace string) k8s_io_client_go_kubernetes_typed_events_v1.EventInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Event", c.clientType)
return events.WithMetrics(c.inner.Events(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_events_v1.EventsV1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) Events(namespace string) k8s_io_client_go_kubernetes_typed_events_v1.EventInterface {
return events.WithTracing(c.inner.Events(namespace), c.client, "Event")
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_events_v1 "k8s.io/api/events/v1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_events_v1 "k8s.io/client-go/applyconfigurations/events/v1"
k8s_io_client_go_kubernetes_typed_events_v1 "k8s.io/client-go/kubernetes/typed/events/v1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_events_v1.EventInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_events_v1.EventInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_events_v1.EventInterface, client, kind string) k8s_io_client_go_kubernetes_typed_events_v1.EventInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_events_v1.EventInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_events_v1.EventApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_events_v1.Event, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_events_v1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_events_v1.Event, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_events_v1.Event, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_events_v1.EventList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_events_v1.Event, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_events_v1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_events_v1.Event, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_events_v1.EventInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_events_v1.EventApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_events_v1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_events_v1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_events_v1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_events_v1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_events_v1.EventList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_events_v1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_events_v1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_events_v1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,42 @@
package client
import (
events "github.com/kyverno/kyverno/pkg/clients/kube/eventsv1beta1/events"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_events_v1beta1 "k8s.io/client-go/kubernetes/typed/events/v1beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_events_v1beta1.EventsV1beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_events_v1beta1.EventsV1beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_events_v1beta1.EventsV1beta1Interface, client string) k8s_io_client_go_kubernetes_typed_events_v1beta1.EventsV1beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_events_v1beta1.EventsV1beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) Events(namespace string) k8s_io_client_go_kubernetes_typed_events_v1beta1.EventInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Event", c.clientType)
return events.WithMetrics(c.inner.Events(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_events_v1beta1.EventsV1beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) Events(namespace string) k8s_io_client_go_kubernetes_typed_events_v1beta1.EventInterface {
return events.WithTracing(c.inner.Events(namespace), c.client, "Event")
}

View file

@ -0,0 +1,260 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_events_v1beta1 "k8s.io/api/events/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_events_v1beta1 "k8s.io/client-go/applyconfigurations/events/v1beta1"
k8s_io_client_go_kubernetes_typed_events_v1beta1 "k8s.io/client-go/kubernetes/typed/events/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_events_v1beta1.EventInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_events_v1beta1.EventInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_events_v1beta1.EventInterface, client, kind string) k8s_io_client_go_kubernetes_typed_events_v1beta1.EventInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_events_v1beta1.EventInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_events_v1beta1.EventApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_events_v1beta1.Event, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_events_v1beta1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_events_v1beta1.Event, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) CreateWithEventNamespace(arg0 *k8s_io_api_events_v1beta1.Event) (*k8s_io_api_events_v1beta1.Event, error) {
defer c.recorder.Record("create_with_event_namespace")
return c.inner.CreateWithEventNamespace(arg0)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_events_v1beta1.Event, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_events_v1beta1.EventList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_events_v1beta1.Event, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) PatchWithEventNamespace(arg0 *k8s_io_api_events_v1beta1.Event, arg1 []uint8) (*k8s_io_api_events_v1beta1.Event, error) {
defer c.recorder.Record("patch_with_event_namespace")
return c.inner.PatchWithEventNamespace(arg0, arg1)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_events_v1beta1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_events_v1beta1.Event, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateWithEventNamespace(arg0 *k8s_io_api_events_v1beta1.Event) (*k8s_io_api_events_v1beta1.Event, error) {
defer c.recorder.Record("update_with_event_namespace")
return c.inner.UpdateWithEventNamespace(arg0)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_events_v1beta1.EventInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_events_v1beta1.EventApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_events_v1beta1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_events_v1beta1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_events_v1beta1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) CreateWithEventNamespace(arg0 *k8s_io_api_events_v1beta1.Event) (*k8s_io_api_events_v1beta1.Event, error) {
ret0, ret1 := c.inner.CreateWithEventNamespace(arg0)
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_events_v1beta1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_events_v1beta1.EventList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_events_v1beta1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) PatchWithEventNamespace(arg0 *k8s_io_api_events_v1beta1.Event, arg1 []uint8) (*k8s_io_api_events_v1beta1.Event, error) {
ret0, ret1 := c.inner.PatchWithEventNamespace(arg0, arg1)
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_events_v1beta1.Event, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_events_v1beta1.Event, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateWithEventNamespace(arg0 *k8s_io_api_events_v1beta1.Event) (*k8s_io_api_events_v1beta1.Event, error) {
ret0, ret1 := c.inner.UpdateWithEventNamespace(arg0)
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,82 @@
package client
import (
daemonsets "github.com/kyverno/kyverno/pkg/clients/kube/extensionsv1beta1/daemonsets"
deployments "github.com/kyverno/kyverno/pkg/clients/kube/extensionsv1beta1/deployments"
ingresses "github.com/kyverno/kyverno/pkg/clients/kube/extensionsv1beta1/ingresses"
networkpolicies "github.com/kyverno/kyverno/pkg/clients/kube/extensionsv1beta1/networkpolicies"
podsecuritypolicies "github.com/kyverno/kyverno/pkg/clients/kube/extensionsv1beta1/podsecuritypolicies"
replicasets "github.com/kyverno/kyverno/pkg/clients/kube/extensionsv1beta1/replicasets"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_extensions_v1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ExtensionsV1beta1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ExtensionsV1beta1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ExtensionsV1beta1Interface, client string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ExtensionsV1beta1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ExtensionsV1beta1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) DaemonSets(namespace string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DaemonSetInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "DaemonSet", c.clientType)
return daemonsets.WithMetrics(c.inner.DaemonSets(namespace), recorder)
}
func (c *withMetrics) Deployments(namespace string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DeploymentInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Deployment", c.clientType)
return deployments.WithMetrics(c.inner.Deployments(namespace), recorder)
}
func (c *withMetrics) Ingresses(namespace string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.IngressInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "Ingress", c.clientType)
return ingresses.WithMetrics(c.inner.Ingresses(namespace), recorder)
}
func (c *withMetrics) NetworkPolicies(namespace string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.NetworkPolicyInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "NetworkPolicy", c.clientType)
return networkpolicies.WithMetrics(c.inner.NetworkPolicies(namespace), recorder)
}
func (c *withMetrics) PodSecurityPolicies() k8s_io_client_go_kubernetes_typed_extensions_v1beta1.PodSecurityPolicyInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "PodSecurityPolicy", c.clientType)
return podsecuritypolicies.WithMetrics(c.inner.PodSecurityPolicies(), recorder)
}
func (c *withMetrics) ReplicaSets(namespace string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ReplicaSetInterface {
recorder := metrics.NamespacedClientQueryRecorder(c.metrics, namespace, "ReplicaSet", c.clientType)
return replicasets.WithMetrics(c.inner.ReplicaSets(namespace), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ExtensionsV1beta1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) DaemonSets(namespace string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DaemonSetInterface {
return daemonsets.WithTracing(c.inner.DaemonSets(namespace), c.client, "DaemonSet")
}
func (c *withTracing) Deployments(namespace string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DeploymentInterface {
return deployments.WithTracing(c.inner.Deployments(namespace), c.client, "Deployment")
}
func (c *withTracing) Ingresses(namespace string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.IngressInterface {
return ingresses.WithTracing(c.inner.Ingresses(namespace), c.client, "Ingress")
}
func (c *withTracing) NetworkPolicies(namespace string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.NetworkPolicyInterface {
return networkpolicies.WithTracing(c.inner.NetworkPolicies(namespace), c.client, "NetworkPolicy")
}
func (c *withTracing) PodSecurityPolicies() k8s_io_client_go_kubernetes_typed_extensions_v1beta1.PodSecurityPolicyInterface {
return podsecuritypolicies.WithTracing(c.inner.PodSecurityPolicies(), c.client, "PodSecurityPolicy")
}
func (c *withTracing) ReplicaSets(namespace string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ReplicaSetInterface {
return replicasets.WithTracing(c.inner.ReplicaSets(namespace), c.client, "ReplicaSet")
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_extensions_v1beta1 "k8s.io/api/extensions/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_extensions_v1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
k8s_io_client_go_kubernetes_typed_extensions_v1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DaemonSetInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DaemonSetInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DaemonSetInterface, client, kind string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DaemonSetInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DaemonSetInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.DaemonSetList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DaemonSetInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.DaemonSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.DaemonSetList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.DaemonSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.DaemonSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,368 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_extensions_v1beta1 "k8s.io/api/extensions/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_extensions_v1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
k8s_io_client_go_kubernetes_typed_extensions_v1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DeploymentInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DeploymentInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DeploymentInterface, client, kind string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DeploymentInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DeploymentInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
defer c.recorder.Record("apply_scale")
return c.inner.ApplyScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
defer c.recorder.Record("get_scale")
return c.inner.GetScale(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.DeploymentList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Rollback(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.DeploymentRollback, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) error {
defer c.recorder.Record("rollback")
return c.inner.Rollback(arg0, arg1, arg2)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_extensions_v1beta1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
defer c.recorder.Record("update_scale")
return c.inner.UpdateScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.DeploymentInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.DeploymentApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "GetScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "GetScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.GetScale(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.DeploymentList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Rollback(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.DeploymentRollback, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Rollback"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Rollback"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Rollback(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_extensions_v1beta1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Deployment, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Deployment, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_extensions_v1beta1 "k8s.io/api/extensions/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_extensions_v1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
k8s_io_client_go_kubernetes_typed_extensions_v1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.IngressInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.IngressInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.IngressInterface, client, kind string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.IngressInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.IngressInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.IngressApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.IngressApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Ingress, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.IngressList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Ingress, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Ingress, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.IngressInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.IngressApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.IngressApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Ingress, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.IngressList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Ingress, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.Ingress, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Ingress, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_extensions_v1beta1 "k8s.io/api/extensions/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_extensions_v1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
k8s_io_client_go_kubernetes_typed_extensions_v1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.NetworkPolicyInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.NetworkPolicyInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.NetworkPolicyInterface, client, kind string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.NetworkPolicyInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.NetworkPolicyInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.NetworkPolicyApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.NetworkPolicyApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.NetworkPolicy, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicyList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.NetworkPolicy, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.NetworkPolicy, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.NetworkPolicyInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.NetworkPolicyApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.NetworkPolicyApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.NetworkPolicy, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicyList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.NetworkPolicy, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.NetworkPolicy, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.NetworkPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,236 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_extensions_v1beta1 "k8s.io/api/extensions/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_extensions_v1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
k8s_io_client_go_kubernetes_typed_extensions_v1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.PodSecurityPolicyInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.PodSecurityPolicyInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.PodSecurityPolicyInterface, client, kind string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.PodSecurityPolicyInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.PodSecurityPolicyInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.PodSecurityPolicyApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicy, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.PodSecurityPolicy, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicy, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicy, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicyList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicy, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.PodSecurityPolicy, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicy, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.PodSecurityPolicyInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.PodSecurityPolicyApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.PodSecurityPolicy, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicyList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.PodSecurityPolicy, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.PodSecurityPolicy, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,346 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_extensions_v1beta1 "k8s.io/api/extensions/v1beta1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_extensions_v1beta1 "k8s.io/client-go/applyconfigurations/extensions/v1beta1"
k8s_io_client_go_kubernetes_typed_extensions_v1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ReplicaSetInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ReplicaSetInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ReplicaSetInterface, client, kind string) k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ReplicaSetInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ReplicaSetInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
defer c.recorder.Record("apply_scale")
return c.inner.ApplyScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
defer c.recorder.Record("get_scale")
return c.inner.GetScale(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSetList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_extensions_v1beta1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
defer c.recorder.Record("update_scale")
return c.inner.UpdateScale(arg0, arg1, arg2, arg3)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_extensions_v1beta1.ReplicaSetInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyScale(arg0 context.Context, arg1 string, arg2 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.ScaleApplyConfiguration, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_extensions_v1beta1.ReplicaSetApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) GetScale(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "GetScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "GetScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.GetScale(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSetList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateScale(arg0 context.Context, arg1 string, arg2 *k8s_io_api_extensions_v1beta1.Scale, arg3 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.Scale, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateScale"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateScale"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateScale(arg0, arg1, arg2, arg3)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_extensions_v1beta1.ReplicaSet, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_extensions_v1beta1.ReplicaSet, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

View file

@ -0,0 +1,50 @@
package client
import (
flowschemas "github.com/kyverno/kyverno/pkg/clients/kube/flowcontrolv1alpha1/flowschemas"
prioritylevelconfigurations "github.com/kyverno/kyverno/pkg/clients/kube/flowcontrolv1alpha1/prioritylevelconfigurations"
"github.com/kyverno/kyverno/pkg/metrics"
k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1"
"k8s.io/client-go/rest"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowcontrolV1alpha1Interface, metrics metrics.MetricsConfigManager, clientType metrics.ClientType) k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowcontrolV1alpha1Interface {
return &withMetrics{inner, metrics, clientType}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowcontrolV1alpha1Interface, client string) k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowcontrolV1alpha1Interface {
return &withTracing{inner, client}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowcontrolV1alpha1Interface
metrics metrics.MetricsConfigManager
clientType metrics.ClientType
}
func (c *withMetrics) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withMetrics) FlowSchemas() k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowSchemaInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "FlowSchema", c.clientType)
return flowschemas.WithMetrics(c.inner.FlowSchemas(), recorder)
}
func (c *withMetrics) PriorityLevelConfigurations() k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.PriorityLevelConfigurationInterface {
recorder := metrics.ClusteredClientQueryRecorder(c.metrics, "PriorityLevelConfiguration", c.clientType)
return prioritylevelconfigurations.WithMetrics(c.inner.PriorityLevelConfigurations(), recorder)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowcontrolV1alpha1Interface
client string
}
func (c *withTracing) RESTClient() rest.Interface {
return c.inner.RESTClient()
}
func (c *withTracing) FlowSchemas() k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowSchemaInterface {
return flowschemas.WithTracing(c.inner.FlowSchemas(), c.client, "FlowSchema")
}
func (c *withTracing) PriorityLevelConfigurations() k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.PriorityLevelConfigurationInterface {
return prioritylevelconfigurations.WithTracing(c.inner.PriorityLevelConfigurations(), c.client, "PriorityLevelConfiguration")
}

View file

@ -0,0 +1,280 @@
package resource
import (
context "context"
"fmt"
"github.com/kyverno/kyverno/pkg/metrics"
"github.com/kyverno/kyverno/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
k8s_io_api_flowcontrol_v1alpha1 "k8s.io/api/flowcontrol/v1alpha1"
k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
k8s_io_apimachinery_pkg_watch "k8s.io/apimachinery/pkg/watch"
k8s_io_client_go_applyconfigurations_flowcontrol_v1alpha1 "k8s.io/client-go/applyconfigurations/flowcontrol/v1alpha1"
k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1"
)
func WithMetrics(inner k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowSchemaInterface, recorder metrics.Recorder) k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowSchemaInterface {
return &withMetrics{inner, recorder}
}
func WithTracing(inner k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowSchemaInterface, client, kind string) k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowSchemaInterface {
return &withTracing{inner, client, kind}
}
type withMetrics struct {
inner k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowSchemaInterface
recorder metrics.Recorder
}
func (c *withMetrics) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_flowcontrol_v1alpha1.FlowSchemaApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
defer c.recorder.Record("apply")
return c.inner.Apply(arg0, arg1, arg2)
}
func (c *withMetrics) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_flowcontrol_v1alpha1.FlowSchemaApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
defer c.recorder.Record("apply_status")
return c.inner.ApplyStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Create(arg0 context.Context, arg1 *k8s_io_api_flowcontrol_v1alpha1.FlowSchema, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
defer c.recorder.Record("create")
return c.inner.Create(arg0, arg1, arg2)
}
func (c *withMetrics) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
defer c.recorder.Record("delete")
return c.inner.Delete(arg0, arg1, arg2)
}
func (c *withMetrics) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
defer c.recorder.Record("delete_collection")
return c.inner.DeleteCollection(arg0, arg1, arg2)
}
func (c *withMetrics) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
defer c.recorder.Record("get")
return c.inner.Get(arg0, arg1, arg2)
}
func (c *withMetrics) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchemaList, error) {
defer c.recorder.Record("list")
return c.inner.List(arg0, arg1)
}
func (c *withMetrics) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
defer c.recorder.Record("patch")
return c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
}
func (c *withMetrics) Update(arg0 context.Context, arg1 *k8s_io_api_flowcontrol_v1alpha1.FlowSchema, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
defer c.recorder.Record("update")
return c.inner.Update(arg0, arg1, arg2)
}
func (c *withMetrics) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_flowcontrol_v1alpha1.FlowSchema, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
defer c.recorder.Record("update_status")
return c.inner.UpdateStatus(arg0, arg1, arg2)
}
func (c *withMetrics) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
defer c.recorder.Record("watch")
return c.inner.Watch(arg0, arg1)
}
type withTracing struct {
inner k8s_io_client_go_kubernetes_typed_flowcontrol_v1alpha1.FlowSchemaInterface
client string
kind string
}
func (c *withTracing) Apply(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_flowcontrol_v1alpha1.FlowSchemaApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Apply"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Apply"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Apply(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) ApplyStatus(arg0 context.Context, arg1 *k8s_io_client_go_applyconfigurations_flowcontrol_v1alpha1.FlowSchemaApplyConfiguration, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ApplyOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "ApplyStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "ApplyStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.ApplyStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Create(arg0 context.Context, arg1 *k8s_io_api_flowcontrol_v1alpha1.FlowSchema, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.CreateOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Create"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Create"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Create(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Delete(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Delete"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Delete"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.Delete(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) DeleteCollection(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) error {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "DeleteCollection"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "DeleteCollection"),
)
defer span.End()
arg0 = ctx
ret0 := c.inner.DeleteCollection(arg0, arg1, arg2)
if ret0 != nil {
span.RecordError(ret0)
span.SetStatus(codes.Error, ret0.Error())
}
return ret0
}
func (c *withTracing) Get(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.GetOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Get"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Get"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Get(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) List(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchemaList, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "List"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "List"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.List(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Patch(arg0 context.Context, arg1 string, arg2 k8s_io_apimachinery_pkg_types.PatchType, arg3 []uint8, arg4 k8s_io_apimachinery_pkg_apis_meta_v1.PatchOptions, arg5 ...string) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Patch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Patch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Patch(arg0, arg1, arg2, arg3, arg4, arg5...)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Update(arg0 context.Context, arg1 *k8s_io_api_flowcontrol_v1alpha1.FlowSchema, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Update"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Update"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Update(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) UpdateStatus(arg0 context.Context, arg1 *k8s_io_api_flowcontrol_v1alpha1.FlowSchema, arg2 k8s_io_apimachinery_pkg_apis_meta_v1.UpdateOptions) (*k8s_io_api_flowcontrol_v1alpha1.FlowSchema, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "UpdateStatus"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "UpdateStatus"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.UpdateStatus(arg0, arg1, arg2)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}
func (c *withTracing) Watch(arg0 context.Context, arg1 k8s_io_apimachinery_pkg_apis_meta_v1.ListOptions) (k8s_io_apimachinery_pkg_watch.Interface, error) {
ctx, span := tracing.StartSpan(
arg0,
"",
fmt.Sprintf("KUBE %s/%s/%s", c.client, c.kind, "Watch"),
attribute.String("client", c.client),
attribute.String("kind", c.kind),
attribute.String("operation", "Watch"),
)
defer span.End()
arg0 = ctx
ret0, ret1 := c.inner.Watch(arg0, arg1)
if ret1 != nil {
span.RecordError(ret1)
span.SetStatus(codes.Error, ret1.Error())
}
return ret0, ret1
}

Some files were not shown because too many files have changed in this diff Show more