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

kubevirt / hyperconverged-cluster-operator / 22618055699

03 Mar 2026 10:06AM UTC coverage: 79.031%. First build
22618055699

Pull #4063

github

web-flow
Merge 46a578e49 into c24cc7c74
Pull Request #4063: CNV-78904: Add webhooks for v1 + conversion webhook

555 of 660 new or added lines in 7 files covered. (84.09%)

9294 of 11760 relevant lines covered (79.03%)

1.95 hits per line

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

93.94
/pkg/webhooks/setup.go
1
package webhooks
2

3
import (
4
        "os"
5

6
        ctrl "sigs.k8s.io/controller-runtime"
7
        logf "sigs.k8s.io/controller-runtime/pkg/log"
8
        "sigs.k8s.io/controller-runtime/pkg/webhook"
9
        "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
10

11
        hcov1beta1 "github.com/kubevirt/hyperconverged-cluster-operator/api/v1beta1"
12
        hcoutil "github.com/kubevirt/hyperconverged-cluster-operator/pkg/util"
13
        "github.com/kubevirt/hyperconverged-cluster-operator/pkg/webhooks/mutator"
14
        "github.com/kubevirt/hyperconverged-cluster-operator/pkg/webhooks/validator"
15
)
16

17
const (
18
        webHookCertDirEnv = "WEBHOOK_CERT_DIR"
19
)
20

21
var (
22
        logger = logf.Log.WithName("webhook-setup")
23
)
24

25
func SetupWebhookWithManager(mgr ctrl.Manager, isOpenshift bool) error {
1✔
26
        operatorNsEnv := hcoutil.GetOperatorNamespaceFromEnv()
1✔
27

1✔
28
        decoder := admission.NewDecoder(mgr.GetScheme())
1✔
29

1✔
30
        v1Beta1WHHandler := validator.NewWebhookV1Beta1Handler(logger, mgr.GetClient(), decoder, operatorNsEnv, isOpenshift)
1✔
31
        v1WHHandler := validator.NewWebhookHandler(logger, mgr.GetClient(), decoder, operatorNsEnv, isOpenshift, v1Beta1WHHandler)
1✔
32
        nsMutator := mutator.NewNsMutator(mgr.GetClient(), decoder, operatorNsEnv)
1✔
33
        v1HCMutator := mutator.NewHyperConvergedMutator(mgr.GetClient(), decoder)
1✔
34
        v1Beta1HCMutator := mutator.NewHyperConvergedV1Beta1Mutator(mgr.GetClient(), decoder)
1✔
35

1✔
36
        // add the conversion webhook
1✔
37
        // this is working because hcov1beta1.HyperConverged implements the
1✔
38
        // sigs.k8s.io/controller-runtime/pkg/conversion.Convertible interface, and hcov1.HyperConverged
1✔
39
        // implements the sigs.k8s.io/controller-runtime/pkg/conversion.Hub interface.
1✔
40
        if err := ctrl.NewWebhookManagedBy[*hcov1beta1.HyperConverged](mgr, &hcov1beta1.HyperConverged{}).Complete(); err != nil {
1✔
NEW
41
                return err
×
NEW
42
        }
×
43

44
        srv := mgr.GetWebhookServer()
1✔
45

1✔
46
        srv.Register(hcoutil.HCONSWebhookPath, &webhook.Admission{Handler: nsMutator})
1✔
47
        srv.Register(hcoutil.HCOV1Beta1MutatingWebhookPath, &webhook.Admission{Handler: v1Beta1HCMutator})
1✔
48
        srv.Register(hcoutil.HCOV1MutatingWebhookPath, &webhook.Admission{Handler: v1HCMutator})
1✔
49
        srv.Register(hcoutil.HCOV1Beta1WebhookPath, &webhook.Admission{Handler: v1Beta1WHHandler})
1✔
50
        srv.Register(hcoutil.HCOV1WebhookPath, &webhook.Admission{Handler: v1WHHandler})
1✔
51

1✔
52
        return nil
1✔
53
}
54

55
func GetWebhookCertDir() string {
1✔
56
        webhookCertDir := os.Getenv(webHookCertDirEnv)
1✔
57
        if webhookCertDir != "" {
2✔
58
                return webhookCertDir
1✔
59
        }
1✔
60

61
        return hcoutil.DefaultWebhookCertDir
1✔
62
}
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