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

k8snetworkplumbingwg / sriov-network-operator / 18002387940

25 Sep 2025 08:59AM UTC coverage: 62.008% (-0.03%) from 62.036%
18002387940

Pull #903

github

web-flow
Merge 1638ca7cd into c49a32c97
Pull Request #903: add validation in e2e for multiple resource injection

8691 of 14016 relevant lines covered (62.01%)

0.69 hits per line

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

93.75
/pkg/daemon/config.go
1
package daemon
2

3
import (
4
        "context"
5

6
        "k8s.io/apimachinery/pkg/api/equality"
7
        "k8s.io/apimachinery/pkg/api/errors"
8
        ctrl "sigs.k8s.io/controller-runtime"
9
        "sigs.k8s.io/controller-runtime/pkg/client"
10
        "sigs.k8s.io/controller-runtime/pkg/log"
11

12
        sriovnetworkv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1"
13
        snolog "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/log"
14
        "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/vars"
15
)
16

17
// OperatorConfigNodeReconcile represents the reconcile struct for the OperatorConfig.
18
type OperatorConfigNodeReconcile struct {
19
        client             client.Client
20
        latestFeatureGates map[string]bool
21
}
22

23
// NewOperatorConfigNodeReconcile creates a new instance of OperatorConfigNodeReconcile with the given client.
24
func NewOperatorConfigNodeReconcile(client client.Client) *OperatorConfigNodeReconcile {
1✔
25
        return &OperatorConfigNodeReconcile{client: client, latestFeatureGates: make(map[string]bool)}
1✔
26
}
1✔
27

28
// Reconcile reconciles the OperatorConfig resource. It updates log level and feature gates as necessary.
29
func (oc *OperatorConfigNodeReconcile) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
1✔
30
        reqLogger := log.FromContext(ctx).WithName("Reconcile")
1✔
31
        operatorConfig := &sriovnetworkv1.SriovOperatorConfig{}
1✔
32
        err := oc.client.Get(ctx, client.ObjectKey{Namespace: req.Namespace, Name: req.Name}, operatorConfig)
1✔
33
        if err != nil {
2✔
34
                if errors.IsNotFound(err) {
2✔
35
                        reqLogger.Info("OperatorConfig doesn't exist", "name", req.Name, "namespace", req.Namespace)
1✔
36
                        return ctrl.Result{}, nil
1✔
37
                }
1✔
38
                reqLogger.Error(err, "Failed to get OperatorConfig", "name", req.Name, "namespace", req.Namespace)
×
39
                return ctrl.Result{}, err
×
40
        }
41

42
        // update log level
43
        snolog.SetLogLevel(operatorConfig.Spec.LogLevel)
1✔
44

1✔
45
        newDisableDrain := operatorConfig.Spec.DisableDrain
1✔
46
        if vars.DisableDrain != newDisableDrain {
2✔
47
                vars.DisableDrain = newDisableDrain
1✔
48
                log.Log.Info("Set Disable Drain", "value", vars.DisableDrain)
1✔
49
        }
1✔
50

51
        if !equality.Semantic.DeepEqual(oc.latestFeatureGates, operatorConfig.Spec.FeatureGates) {
2✔
52
                vars.FeatureGate.Init(operatorConfig.Spec.FeatureGates)
1✔
53
                oc.latestFeatureGates = operatorConfig.Spec.FeatureGates
1✔
54
                log.Log.Info("Updated featureGates", "featureGates", vars.FeatureGate.String())
1✔
55
        }
1✔
56

57
        return ctrl.Result{}, nil
1✔
58
}
59

60
// SetupWithManager sets up the reconciliation logic for this controller using the given manager.
61
func (oc *OperatorConfigNodeReconcile) SetupWithManager(mgr ctrl.Manager) error {
1✔
62
        return ctrl.NewControllerManagedBy(mgr).
1✔
63
                For(&sriovnetworkv1.SriovOperatorConfig{}).
1✔
64
                Complete(oc)
1✔
65
}
1✔
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