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

k8snetworkplumbingwg / sriov-network-operator / 3751025296

pending completion
3751025296

Pull #365

github

GitHub
Merge 421284b55 into 788d76f7e
Pull Request #365: Implementation for new systemd configuration method

958 of 958 new or added lines in 18 files covered. (100.0%)

1971 of 8330 relevant lines covered (23.66%)

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
        "encoding/json"
5
        "os"
6

7
        "github.com/golang/glog"
8
        v1 "k8s.io/api/admission/v1"
9
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10

11
        sriovnetworkv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1"
12
)
13

14
var namespace = os.Getenv("NAMESPACE")
15

16
func RetriveSupportedNics() error {
×
17
        if err := sriovnetworkv1.InitNicIDMapFromConfigMap(kubeclient, namespace); err != nil {
×
18
                return err
×
19
        }
×
20
        return nil
×
21
}
22

23
func MutateCustomResource(ar v1.AdmissionReview) *v1.AdmissionResponse {
×
24
        glog.V(2).Info("mutating custom resource")
×
25

×
26
        cr := map[string]interface{}{}
×
27

×
28
        raw := ar.Request.Object.Raw
×
29
        err := json.Unmarshal(raw, &cr)
×
30
        if err != nil {
×
31
                glog.Error(err)
×
32
                return toV1AdmissionResponse(err)
×
33
        }
×
34
        var reviewResp *v1.AdmissionResponse
×
35
        if reviewResp, err = mutateSriovNetworkNodePolicy(cr); err != nil {
×
36
                glog.Error(err)
×
37
                return toV1AdmissionResponse(err)
×
38
        }
×
39

40
        return reviewResp
×
41
}
42

43
func ValidateCustomResource(ar v1.AdmissionReview) *v1.AdmissionResponse {
×
44
        glog.V(2).Info("validating custom resource")
×
45
        var err error
×
46
        var raw []byte
×
47

×
48
        raw = ar.Request.Object.Raw
×
49
        reviewResponse := v1.AdmissionResponse{}
×
50
        reviewResponse.Allowed = true
×
51

×
52
        if ar.Request.Operation == v1.Delete {
×
53
                raw = ar.Request.OldObject.Raw
×
54
        }
×
55

56
        switch ar.Request.Kind.Kind {
×
57
        case "SriovNetworkNodePolicy":
×
58
                policy := sriovnetworkv1.SriovNetworkNodePolicy{}
×
59

×
60
                err = json.Unmarshal(raw, &policy)
×
61
                if err != nil {
×
62
                        glog.Error(err)
×
63
                        return toV1AdmissionResponse(err)
×
64
                }
×
65

66
                if reviewResponse.Allowed, reviewResponse.Warnings, err = validateSriovNetworkNodePolicy(&policy, ar.Request.Operation); err != nil {
×
67
                        reviewResponse.Result = &metav1.Status{
×
68
                                Reason: metav1.StatusReason(err.Error()),
×
69
                        }
×
70
                }
×
71
        case "SriovOperatorConfig":
×
72
                config := sriovnetworkv1.SriovOperatorConfig{}
×
73

×
74
                err = json.Unmarshal(raw, &config)
×
75
                if err != nil {
×
76
                        glog.Error(err)
×
77
                        return toV1AdmissionResponse(err)
×
78
                }
×
79

80
                if reviewResponse.Allowed, reviewResponse.Warnings, err = validateSriovOperatorConfig(&config, ar.Request.Operation); err != nil {
×
81
                        reviewResponse.Result = &metav1.Status{
×
82
                                Reason: metav1.StatusReason(err.Error()),
×
83
                        }
×
84
                }
×
85
        }
86

87
        return &reviewResponse
×
88
}
89

90
func toV1AdmissionResponse(err error) *v1.AdmissionResponse {
×
91
        return &v1.AdmissionResponse{
×
92
                Result: &metav1.Status{
×
93
                        Message: err.Error(),
×
94
                },
×
95
        }
×
96
}
×
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

© 2025 Coveralls, Inc