2021-07-23 21:46:50 +05:30
|
|
|
package admissionreviewduration
|
|
|
|
|
|
|
|
import (
|
2022-11-28 11:30:14 +01:00
|
|
|
"context"
|
2022-11-09 11:52:20 +01:00
|
|
|
"strings"
|
2021-09-11 03:09:12 +05:30
|
|
|
|
2021-07-23 21:46:50 +05:30
|
|
|
"github.com/kyverno/kyverno/pkg/metrics"
|
2022-11-09 11:52:20 +01:00
|
|
|
admissionv1 "k8s.io/api/admission/v1"
|
2021-07-23 21:46:50 +05:30
|
|
|
)
|
|
|
|
|
2022-11-28 11:30:14 +01:00
|
|
|
func registerAdmissionReviewDurationMetric(ctx context.Context, m *metrics.MetricsConfig, resourceKind, resourceNamespace string, resourceRequestOperation metrics.ResourceRequestOperation, admissionRequestLatency float64, allowed bool) {
|
2022-11-28 16:53:26 +01:00
|
|
|
if m.Config.CheckNamespace(resourceNamespace) {
|
|
|
|
m.RecordAdmissionReviewDuration(ctx, resourceKind, resourceNamespace, string(resourceRequestOperation), admissionRequestLatency, allowed)
|
2021-09-11 03:09:12 +05:30
|
|
|
}
|
2021-07-23 21:46:50 +05:30
|
|
|
}
|
|
|
|
|
2022-11-28 11:30:14 +01:00
|
|
|
func Process(ctx context.Context, m *metrics.MetricsConfig, request *admissionv1.AdmissionRequest, response *admissionv1.AdmissionResponse, latency int64) {
|
2022-11-09 11:52:20 +01:00
|
|
|
op := strings.ToLower(string(request.Operation))
|
|
|
|
admissionReviewLatencyDurationInSeconds := float64(latency) / float64(1000*1000*1000)
|
2022-11-28 11:30:14 +01:00
|
|
|
registerAdmissionReviewDurationMetric(ctx, m, request.Kind.Kind, request.Namespace, metrics.ResourceRequestOperation(op), admissionReviewLatencyDurationInSeconds, response.Allowed)
|
2021-07-23 21:46:50 +05:30
|
|
|
}
|