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

bakito / k8s-event-logger-operator / 12982588012

27 Jan 2025 05:23AM UTC coverage: 62.219%. Remained the same
12982588012

Pull #498

github

web-flow
chore(deps): bump sigs.k8s.io/controller-runtime from 0.20.0 to 0.20.1

Bumps [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) from 0.20.0 to 0.20.1.
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](https://github.com/kubernetes-sigs/controller-runtime/compare/v0.20.0...v0.20.1)

---
updated-dependencies:
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Pull Request #498: chore(deps): bump sigs.k8s.io/controller-runtime from 0.20.0 to 0.20.1

746 of 1199 relevant lines covered (62.22%)

0.7 hits per line

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

48.1
/controllers/setup/eventlogger_controller.go
1
/*
2

3

4
Licensed under the Apache License, Version 2.0 (the "License");
5
you may not use this file except in compliance with the License.
6
You may obtain a copy of the License at
7

8
    http://www.apache.org/licenses/LICENSE-2.0
9

10
Unless required by applicable law or agreed to in writing, software
11
distributed under the License is distributed on an "AS IS" BASIS,
12
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
See the License for the specific language governing permissions and
14
limitations under the License.
15
*/
16

17
package setup
18

19
import (
20
        "context"
21

22
        eventloggerv1 "github.com/bakito/k8s-event-logger-operator/api/v1"
23
        "github.com/bakito/k8s-event-logger-operator/version"
24
        "github.com/go-logr/logr"
25
        corev1 "k8s.io/api/core/v1"
26
        rbacv1 "k8s.io/api/rbac/v1"
27
        "k8s.io/apimachinery/pkg/api/errors"
28
        "k8s.io/apimachinery/pkg/runtime"
29
        ctrl "sigs.k8s.io/controller-runtime"
30
        "sigs.k8s.io/controller-runtime/pkg/client"
31
        "sigs.k8s.io/controller-runtime/pkg/reconcile"
32
)
33

34
var gracePeriod int64
35

36
// Reconciler reconciles a Pod object
37
type Reconciler struct {
38
        client.Client
39
        Log    logr.Logger
40
        Scheme *runtime.Scheme
41

42
        Config context.Context
43
}
44

45
// +kubebuilder:rbac:groups=eventlogger.bakito.ch,resources=eventloggers,verbs=get;list;watch;create;update;patch;delete
46

47
// Reconcile EventLogger to setup event logger pods
48
func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
1✔
49
        reqLogger := r.Log.WithValues("namespace", req.Namespace, "name", req.Name)
1✔
50

1✔
51
        // Fetch the EventLogger cr
1✔
52
        cr := &eventloggerv1.EventLogger{}
1✔
53
        err := r.Get(ctx, req.NamespacedName, cr)
1✔
54
        if err != nil {
1✔
55
                if errors.IsNotFound(err) {
×
56
                        // Request object not found, could have been deleted after reconcile req.
×
57
                        // Owned objects are automatically garbage collected. For additional cleanup logic use finalizers.
×
58
                        // Return and don't requeue
×
59
                        return reconcile.Result{}, nil
×
60
                }
×
61
                // Error reading the object - requeue the req.
62
                return r.updateCR(ctx, cr, reqLogger, err)
×
63
        }
64

65
        if err = cr.Spec.Validate(); err != nil {
1✔
66
                return r.updateCR(ctx, cr, reqLogger, err)
×
67
        }
×
68

69
        saccChanged, roleChanged, rbChanged, err := r.setupRbac(ctx, cr)
1✔
70
        if err != nil {
1✔
71
                return r.updateCR(ctx, cr, reqLogger, err)
×
72
        }
×
73

74
        // Define a new Pod object
75
        pod := r.podForCR(cr)
1✔
76

1✔
77
        // set owner reference for pod
1✔
78
        if err := ctrl.SetControllerReference(cr, pod, r.Scheme); err != nil {
1✔
79
                return r.updateCR(ctx, cr, reqLogger, err)
×
80
        }
×
81

82
        // Check if this Pod already exists
83
        podChanged, err := r.createOrReplacePod(ctx, cr, pod, reqLogger)
1✔
84
        if err != nil {
1✔
85
                return r.updateCR(ctx, cr, reqLogger, err)
×
86
        }
×
87

88
        if cr.HasChanged() || saccChanged || roleChanged || rbChanged || podChanged {
2✔
89
                reqLogger.Info("Reconciling event logger")
1✔
90
                return r.updateCR(ctx, cr, reqLogger, nil)
1✔
91
        }
1✔
92

93
        return reconcile.Result{}, nil
×
94
}
95

96
func (r *Reconciler) updateCR(
97
        ctx context.Context,
98
        cr *eventloggerv1.EventLogger,
99
        logger logr.Logger,
100
        err error,
101
) (reconcile.Result, error) {
1✔
102
        if err != nil {
1✔
103
                logger.Error(err, "")
×
104
        }
×
105
        cr.Apply(err)
1✔
106
        cr.Status.Hash = cr.Spec.Hash()
1✔
107
        cr.Status.OperatorVersion = version.Version
1✔
108
        err = r.Update(ctx, cr)
1✔
109
        return reconcile.Result{}, err
1✔
110
}
111

112
func (r *Reconciler) saveDelete(ctx context.Context, obj client.Object) error {
1✔
113
        err := r.Delete(ctx, obj)
1✔
114
        if err != nil {
1✔
115
                if !errors.IsNotFound(err) {
×
116
                        return err
×
117
                }
×
118
        }
119
        return nil
1✔
120
}
121

122
func loggerName(cr *eventloggerv1.EventLogger) string {
1✔
123
        return "event-logger-" + cr.Name
1✔
124
}
1✔
125

126
func podChanged(old, new *corev1.Pod) bool {
1✔
127
        if old.Spec.ServiceAccountName != new.Spec.ServiceAccountName {
2✔
128
                return true
1✔
129
        }
1✔
130
        if len(old.Spec.Containers) > 0 && len(new.Spec.Containers) > 0 &&
×
131
                old.Spec.Containers[0].Image != new.Spec.Containers[0].Image {
×
132
                return true
×
133
        }
×
134

135
        return podEnv(old, "WATCH_NAMESPACE") != podEnv(new, "WATCH_NAMESPACE")
×
136
}
137

138
func podEnv(pod *corev1.Pod, name string) string {
×
139
        for _, env := range pod.Spec.Containers[0].Env {
×
140
                if env.Name == name {
×
141
                        return env.Value
×
142
                }
×
143
        }
144
        return "N/A"
×
145
}
146

147
// SetupWithManager setup with manager
148
func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error {
×
149
        return ctrl.NewControllerManagedBy(mgr).
×
150
                For(&eventloggerv1.EventLogger{}).
×
151
                Owns(&corev1.Pod{}).
×
152
                Owns(&corev1.ServiceAccount{}).
×
153
                Owns(&rbacv1.Role{}).
×
154
                Owns(&rbacv1.RoleBinding{}).
×
155
                Complete(r)
×
156
}
×
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