• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kubeovn / kube-ovn / 21623048013

03 Feb 2026 08:37AM UTC coverage: 23.043%. Remained the same
21623048013

push

github

web-flow
fix typo (#6253)

Signed-off-by: Mengxin Liu <liumengxinfly@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

12 of 152 new or added lines in 51 files covered. (7.89%)

1 existing line in 1 file now uncovered.

12411 of 53860 relevant lines covered (23.04%)

0.27 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/pkg/webhook/webhook.go
1
package webhook
2

3
import (
4
        "context"
5

6
        admissionv1 "k8s.io/api/admission/v1"
7
        "k8s.io/apimachinery/pkg/runtime"
8
        "k8s.io/apimachinery/pkg/runtime/schema"
9
        "k8s.io/klog/v2"
10
        "sigs.k8s.io/controller-runtime/pkg/cache"
11
        "sigs.k8s.io/controller-runtime/pkg/client"
12
        ctrlwebhook "sigs.k8s.io/controller-runtime/pkg/webhook"
13
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
14
)
15

16
var (
17
        createHooks = make(map[schema.GroupVersionKind]admission.HandlerFunc)
18
        updateHooks = make(map[schema.GroupVersionKind]admission.HandlerFunc)
19
        deleteHooks = make(map[schema.GroupVersionKind]admission.HandlerFunc)
20
)
21

22
type ValidatingHook struct {
23
        client  client.Client
24
        decoder admission.Decoder
25
        cache   cache.Cache
26
}
27

28
func NewValidatingHook(client client.Client, scheme *runtime.Scheme, cache cache.Cache) (*ValidatingHook, error) {
×
29
        v := &ValidatingHook{
×
30
                client:  client,
×
31
                decoder: admission.NewDecoder(scheme),
×
32
                cache:   cache,
×
33
        }
×
34

×
35
        // initialize hook handlers mapping
×
36
        createHooks[deploymentGVK] = v.DeploymentCreateHook
×
37
        createHooks[statefulSetGVK] = v.StatefulSetCreateHook
×
38
        createHooks[daemonSetGVK] = v.DaemonSetCreateHook
×
39
        createHooks[cronJobGVK] = v.CronJobCreateHook
×
40
        createHooks[jobGVK] = v.JobCreateHook
×
41
        createHooks[podGVK] = v.PodCreateHook
×
42

×
43
        createHooks[subnetGVK] = v.SubnetCreateHook
×
44
        updateHooks[subnetGVK] = v.SubnetUpdateHook
×
45
        deleteHooks[subnetGVK] = v.SubnetDeleteHook
×
46

×
47
        createHooks[vpcGVK] = v.VpcCreateHook
×
48
        updateHooks[vpcGVK] = v.VpcUpdateHook
×
49
        deleteHooks[vpcGVK] = v.VpcDeleteHook
×
50

×
51
        createHooks[ipGVK] = v.IPCreateHook
×
52
        updateHooks[ipGVK] = v.IPUpdateHook
×
53

×
54
        createHooks[vipGVK] = v.VipCreateHook
×
55
        updateHooks[vipGVK] = v.VipUpdateHook
×
56

×
57
        createHooks[vpcNatGatewayGVK] = v.VpcNatGwCreateOrUpdateHook
×
58
        updateHooks[vpcNatGatewayGVK] = v.VpcNatGwCreateOrUpdateHook
×
59
        deleteHooks[vpcNatGatewayGVK] = v.VpcNatGwDeleteHook
×
60
        createHooks[iptablesEIPGVK] = v.iptablesEIPCreateHook
×
61
        updateHooks[iptablesEIPGVK] = v.iptablesEIPUpdateHook
×
62
        deleteHooks[iptablesEIPGVK] = v.iptablesEIPDeleteHook
×
63
        createHooks[iptablesSnatRule] = v.iptablesSnatCreateHook
×
64
        updateHooks[iptablesSnatRule] = v.iptablesSnatUpdateHook
×
65
        createHooks[iptablesDnatRule] = v.iptablesDnatCreateHook
×
66
        updateHooks[iptablesDnatRule] = v.iptablesDnatUpdateHook
×
67
        createHooks[iptablesFIPRule] = v.iptablesFipCreateHook
×
68
        updateHooks[iptablesFIPRule] = v.iptablesFipUpdateHook
×
69

×
70
        createHooks[ovnEip] = v.ovnEipCreateHook
×
71
        updateHooks[ovnEip] = v.ovnEipUpdateHook
×
72
        deleteHooks[ovnEip] = v.ovnEipDeleteHook
×
73
        createHooks[ovnFip] = v.ovnFipCreateHook
×
74
        updateHooks[ovnFip] = v.ovnFipUpdateHook
×
75
        createHooks[ovnSnat] = v.ovnSnatCreateHook
×
76
        updateHooks[ovnSnat] = v.ovnSnatUpdateHook
×
77
        createHooks[ovnDnat] = v.ovnDnatCreateHook
×
78
        updateHooks[ovnDnat] = v.ovnDnatUpdateHook
×
79
        return v, nil
×
80
}
×
81

82
func (v *ValidatingHook) Handle(ctx context.Context, req admission.Request) (resp admission.Response) {
×
83
        defer func() {
×
84
                if resp.Allowed {
×
85
                        klog.V(3).Info("result: allowed")
×
86
                } else {
×
87
                        klog.V(3).Infof("result: reject, reason: %s", resp.Result.Reason)
×
88
                }
×
89
        }()
90

91
        key := client.ObjectKey{
×
92
                Namespace: req.Namespace,
×
93
                Name:      req.Name,
×
94
        }.String()
×
95
        gvk := schema.GroupVersionKind{
×
96
                Group:   req.Kind.Group,
×
97
                Version: req.Kind.Version,
×
98
                Kind:    req.Kind.Kind,
×
99
        }
×
100
        klog.V(3).Infof("admission request for %s %s: operation=%s, uid=%s", gvk.String(), key, req.Operation, req.UID)
×
101
        switch req.Operation {
×
102
        case admissionv1.Create:
×
103
                if createHooks[gvk] != nil {
×
104
                        klog.Infof("handle create %s %s", gvk, key)
×
105
                        resp = createHooks[gvk](ctx, req)
×
106
                        return resp
×
107
                }
×
108
        case admissionv1.Update:
×
109
                if updateHooks[gvk] != nil {
×
110
                        klog.Infof("handle update %s %s", gvk, key)
×
111
                        resp = updateHooks[gvk](ctx, req)
×
112
                        return resp
×
113
                }
×
114
        case admissionv1.Delete:
×
115
                if deleteHooks[gvk] != nil {
×
116
                        klog.Infof("handle delete %s %s", gvk, key)
×
117
                        resp = deleteHooks[gvk](ctx, req)
×
118
                        return resp
×
119
                }
×
120
        }
NEW
121
        resp = ctrlwebhook.Allowed("bypass")
×
122
        return resp
×
123
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc