2022-11-09 11:52:20 +01:00
|
|
|
package handlers
|
|
|
|
|
|
|
|
import (
|
2022-11-17 16:17:52 +01:00
|
|
|
"context"
|
2022-11-09 11:52:20 +01:00
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/go-logr/logr"
|
|
|
|
"github.com/kyverno/kyverno/pkg/metrics"
|
|
|
|
admissionRequests "github.com/kyverno/kyverno/pkg/metrics/admissionrequests"
|
|
|
|
admissionReviewDuration "github.com/kyverno/kyverno/pkg/metrics/admissionreviewduration"
|
|
|
|
admissionv1 "k8s.io/api/admission/v1"
|
|
|
|
)
|
|
|
|
|
2022-11-23 07:50:55 +01:00
|
|
|
func (inner AdmissionHandler) WithMetrics(metricsConfig *metrics.MetricsConfig) AdmissionHandler {
|
|
|
|
return inner.withMetrics(metricsConfig).WithTrace("METRICS")
|
2022-11-09 11:52:20 +01:00
|
|
|
}
|
|
|
|
|
2022-11-23 07:50:55 +01:00
|
|
|
func (inner AdmissionHandler) withMetrics(metricsConfig *metrics.MetricsConfig) AdmissionHandler {
|
2022-11-17 16:17:52 +01:00
|
|
|
return func(ctx context.Context, logger logr.Logger, request *admissionv1.AdmissionRequest, startTime time.Time) *admissionv1.AdmissionResponse {
|
2022-11-28 09:59:05 +01:00
|
|
|
response := inner(ctx, logger, request, startTime)
|
2022-11-28 11:30:14 +01:00
|
|
|
defer admissionReviewDuration.Process(ctx, metricsConfig, request, response, int64(time.Since(startTime)))
|
|
|
|
admissionRequests.Process(ctx, metricsConfig, request, response)
|
2022-11-28 09:59:05 +01:00
|
|
|
return response
|
2022-11-09 11:52:20 +01:00
|
|
|
}
|
|
|
|
}
|