Skip to content

Commit 9148625

Browse files
committed
vendor: Bump k8s to 0.31.0
Other significant bumps that were needed: - controller-runtime to v0.19.3 - kubevirt to v1.4.0 - prometheus-operator to v0.68.0 Updated relevant functions accordingly accordingly. Signed-off-by: Ram Lavi <[email protected]>
1 parent 7d5ed25 commit 9148625

File tree

4,593 files changed

+396534
-179808
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

4,593 files changed

+396534
-179808
lines changed

cmd/manager/main.go

+20-5
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,16 @@ package main
33
import (
44
"flag"
55
"log"
6+
"net/http"
67
"os"
78
"runtime"
89

10+
"k8s.io/apimachinery/pkg/api/meta"
11+
"k8s.io/client-go/rest"
12+
"sigs.k8s.io/controller-runtime/pkg/cache"
13+
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
14+
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
15+
916
"github.com/machadovilaca/operator-observability/pkg/operatormetrics"
1017
osv1 "github.com/openshift/api/operator/v1"
1118
"github.com/spf13/pflag"
@@ -50,7 +57,7 @@ func main() {
5057

5158
printVersion()
5259

53-
namespace, err := k8s.GetWatchNamespace()
60+
watchNamespace, err := k8s.GetWatchNamespace()
5461
if err != nil {
5562
log.Printf("failed to get watch namespace: %v", err)
5663
os.Exit(1)
@@ -65,10 +72,18 @@ func main() {
6572

6673
// Create a new Cmd to provide shared dependencies and start components
6774
mgr, err := manager.New(cfg, manager.Options{
68-
Scheme: scheme,
69-
Namespace: namespace,
70-
MetricsBindAddress: controllerruntimemetrics.DefaultBindAddress,
71-
MapperProvider: k8s.NewDynamicRESTMapper,
75+
Scheme: scheme,
76+
Cache: cache.Options{
77+
DefaultNamespaces: map[string]cache.Config{
78+
watchNamespace: {},
79+
},
80+
},
81+
Metrics: metricsserver.Options{
82+
BindAddress: metricsserver.DefaultBindAddress,
83+
},
84+
MapperProvider: func(c *rest.Config, httpClient *http.Client) (meta.RESTMapper, error) {
85+
return apiutil.NewDynamicRESTMapper(c, httpClient)
86+
},
7287
})
7388
if err != nil {
7489
log.Printf("failed to instantiate new operator manager: %v", err)

go.mod

+121-123
Large diffs are not rendered by default.

go.sum

+2,247-275
Large diffs are not rendered by default.

pkg/controller/networkaddonsconfig/networkaddonsconfig_controller.go

+70-36
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import (
3030
"sigs.k8s.io/controller-runtime/pkg/event"
3131
"sigs.k8s.io/controller-runtime/pkg/handler"
3232
"sigs.k8s.io/controller-runtime/pkg/manager"
33-
"sigs.k8s.io/controller-runtime/pkg/predicate"
3433
"sigs.k8s.io/controller-runtime/pkg/reconcile"
3534
"sigs.k8s.io/controller-runtime/pkg/source"
3635

@@ -107,7 +106,7 @@ func Add(mgr manager.Manager) error {
107106

108107
// newReconciler returns a new ReconcileNetworkAddonsConfig
109108
func newReconciler(mgr manager.Manager, namespace string, clusterInfo *network.ClusterInfo) *ReconcileNetworkAddonsConfig {
110-
// Status manager is shared between both reconcilers and it is used to update conditions of
109+
// Status manager is shared between both reconcilers, and it is used to update conditions of
111110
// NetworkAddonsConfig.State. NetworkAddonsConfig reconciler updates it with progress of rendering
112111
// and applying of manifests. Pods reconciler updates it with progress of deployed pods.
113112
statusManager := statusmanager.New(mgr, names.OPERATOR_CONFIG)
@@ -122,39 +121,66 @@ func newReconciler(mgr manager.Manager, namespace string, clusterInfo *network.C
122121
}
123122
}
124123

124+
type typedPredicateImpl[object any] struct {
125+
CreateFunc func(event.TypedCreateEvent[object]) bool
126+
DeleteFunc func(event.TypedDeleteEvent[object]) bool
127+
UpdateFunc func(event.TypedUpdateEvent[object]) bool
128+
GenericFunc func(event.TypedGenericEvent[object]) bool
129+
}
130+
131+
func (t *typedPredicateImpl[object]) Create(e event.TypedCreateEvent[object]) bool {
132+
return false
133+
}
134+
135+
func (t *typedPredicateImpl[object]) Delete(e event.TypedDeleteEvent[object]) bool {
136+
return false
137+
}
138+
139+
func (t *typedPredicateImpl[object]) Update(e event.TypedUpdateEvent[object]) bool {
140+
oldConfig, err := runtimeObjectToNetworkAddonsConfig(e.ObjectOld)
141+
if err != nil {
142+
log.Printf("Failed to convert runtime.Object to NetworkAddonsConfig (old): %v", err)
143+
return false
144+
}
145+
newConfig, err := runtimeObjectToNetworkAddonsConfig(e.ObjectNew)
146+
if err != nil {
147+
log.Printf("Failed to convert runtime.Object to NetworkAddonsConfig (new): %v", err)
148+
return false
149+
}
150+
return !reflect.DeepEqual(oldConfig.Spec, newConfig.Spec)
151+
}
152+
153+
func (t *typedPredicateImpl[object]) Generic(e event.TypedGenericEvent[object]) bool {
154+
return false
155+
}
156+
125157
// add adds a new Controller to mgr with r as the ReconcileNetworkAddonsConfig
126158
func add(mgr manager.Manager, r *ReconcileNetworkAddonsConfig) error {
127-
// Create a new controller for operator's NetworkAddonsConfig resource
128159
c, err := controller.New("networkaddonsconfig-controller", mgr, controller.Options{Reconciler: r})
129160
if err != nil {
130161
return err
131162
}
132163

133-
// Create custom predicate for NetworkAddonsConfig watcher. This makes sure that Status field
134-
// updates will not trigger reconciling of the object. Reconciliation is trigger only if
135-
// Spec fields differ.
136-
pred := predicate.Funcs{
137-
UpdateFunc: func(e event.UpdateEvent) bool {
138-
oldConfig, err := runtimeObjectToNetworkAddonsConfig(e.ObjectOld)
139-
if err != nil {
140-
log.Printf("Failed to convert runtime.Object to NetworkAddonsConfig: %v", err)
141-
return false
142-
}
143-
newConfig, err := runtimeObjectToNetworkAddonsConfig(e.ObjectNew)
144-
if err != nil {
145-
log.Printf("Failed to convert runtime.Object to NetworkAddonsConfig: %v", err)
146-
return false
147-
}
148-
return !reflect.DeepEqual(oldConfig.Spec, newConfig.Spec)
149-
},
164+
if err := c.Watch(
165+
source.Kind(
166+
mgr.GetCache(),
167+
&cnaov1alpha1.NetworkAddonsConfig{},
168+
&handler.TypedEnqueueRequestForObject[*cnaov1alpha1.NetworkAddonsConfig]{},
169+
&typedPredicateImpl[*cnaov1alpha1.NetworkAddonsConfig]{},
170+
),
171+
); err != nil {
172+
return fmt.Errorf("unable to watch NetworkAddonsConfig v1alpha1: %w", err)
150173
}
151174

152-
// Watch for changes to primary resource NetworkAddonsConfig
153-
if err := c.Watch(&source.Kind{Type: &cnaov1alpha1.NetworkAddonsConfig{}}, &handler.EnqueueRequestForObject{}, pred); err != nil {
154-
return err
155-
}
156-
if err := c.Watch(&source.Kind{Type: &cnaov1.NetworkAddonsConfig{}}, &handler.EnqueueRequestForObject{}, pred); err != nil {
157-
return err
175+
if err := c.Watch(
176+
source.Kind(
177+
mgr.GetCache(),
178+
&cnaov1.NetworkAddonsConfig{},
179+
&handler.TypedEnqueueRequestForObject[*cnaov1.NetworkAddonsConfig]{},
180+
&typedPredicateImpl[*cnaov1.NetworkAddonsConfig]{},
181+
),
182+
); err != nil {
183+
return fmt.Errorf("unable to watch NetworkAddonsConfig v1: %w", err)
158184
}
159185

160186
// Create a new controller for Pod resources, this will be used to track state of deployed components
@@ -163,14 +189,24 @@ func add(mgr manager.Manager, r *ReconcileNetworkAddonsConfig) error {
163189
return err
164190
}
165191

166-
// Watch for changes on DaemonSet and Deployment resources
167-
err = c.Watch(&source.Kind{Type: &appsv1.DaemonSet{}}, &handler.EnqueueRequestForObject{})
168-
if err != nil {
169-
return err
192+
if err := c.Watch(
193+
source.Kind(
194+
mgr.GetCache(),
195+
&appsv1.DaemonSet{},
196+
&handler.TypedEnqueueRequestForObject[*appsv1.DaemonSet]{},
197+
),
198+
); err != nil {
199+
return fmt.Errorf("unable to watch NetworkAddonsConfig v1: %w", err)
170200
}
171-
err = c.Watch(&source.Kind{Type: &appsv1.Deployment{}}, &handler.EnqueueRequestForObject{})
172-
if err != nil {
173-
return err
201+
202+
if err := c.Watch(
203+
source.Kind(
204+
mgr.GetCache(),
205+
&appsv1.Deployment{},
206+
&handler.TypedEnqueueRequestForObject[*appsv1.Deployment]{},
207+
),
208+
); err != nil {
209+
return fmt.Errorf("unable to watch NetworkAddonsConfig v1: %w", err)
174210
}
175211

176212
return nil
@@ -645,14 +681,12 @@ func isResourceAvailable(kubeClient kubernetes.Interface, name string, group str
645681
return true, nil
646682
}
647683

648-
func runtimeObjectToNetworkAddonsConfig(obj runtime.Object) (*cnao.NetworkAddonsConfig, error) {
649-
// convert the runtime.Object to unstructured.Unstructured
684+
func runtimeObjectToNetworkAddonsConfig(obj interface{}) (*cnao.NetworkAddonsConfig, error) {
650685
unstructuredObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(obj)
651686
if err != nil {
652687
return nil, err
653688
}
654689

655-
// convert unstructured.Unstructured to a NetworkAddonsConfig
656690
networkAddonsConfig := &cnao.NetworkAddonsConfig{}
657691
if err = runtime.DefaultUnstructuredConverter.FromUnstructured(unstructuredObj, networkAddonsConfig); err != nil {
658692
return nil, err

pkg/monitoring/rules/alerts/kubemacpool.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@ package alerts
22

33
import (
44
promv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
5+
56
"k8s.io/apimachinery/pkg/util/intstr"
7+
"k8s.io/utils/ptr"
68
)
79

810
var kubemacpoolAlerts = []promv1.Rule{
911
{
1012
Alert: "KubeMacPoolDuplicateMacsFound",
1113
Expr: intstr.FromString("kubevirt_cnao_kubemacpool_duplicate_macs != 0"),
12-
For: "5m",
14+
For: ptr.To(promv1.Duration("5m")),
1315
Annotations: map[string]string{
1416
"summary": "Duplicate macs found.",
1517
},
@@ -21,7 +23,7 @@ var kubemacpoolAlerts = []promv1.Rule{
2123
{
2224
Alert: "KubemacpoolDown",
2325
Expr: intstr.FromString("kubevirt_cnao_cr_kubemacpool_aggregated == 1 and kubevirt_cnao_kubemacpool_manager_up == 0"),
24-
For: "5m",
26+
For: ptr.To(promv1.Duration("5m")),
2527
Annotations: map[string]string{
2628
"summary": "KubeMacpool is deployed by CNAO CR but KubeMacpool pod is down.",
2729
},

pkg/monitoring/rules/alerts/operator.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,18 @@ package alerts
33
import (
44
"fmt"
55

6-
promv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
76
"k8s.io/apimachinery/pkg/util/intstr"
7+
"k8s.io/utils/ptr"
8+
9+
promv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
810
)
911

1012
func operatorAlerts(namespace string) []promv1.Rule {
1113
return []promv1.Rule{
1214
{
1315
Alert: "CnaoDown",
1416
Expr: intstr.FromString("kubevirt_cnao_operator_up == 0"),
15-
For: "5m",
17+
For: ptr.To(promv1.Duration("5m")),
1618
Annotations: map[string]string{
1719
"summary": "CNAO pod is down.",
1820
},
@@ -24,7 +26,7 @@ func operatorAlerts(namespace string) []promv1.Rule {
2426
{
2527
Alert: "NetworkAddonsConfigNotReady",
2628
Expr: intstr.FromString(fmt.Sprintf("sum(kubevirt_cnao_cr_ready{namespace='%s'} or vector(0)) == 0", namespace)),
27-
For: "5m",
29+
For: ptr.To(promv1.Duration("5m")),
2830
Annotations: map[string]string{
2931
"summary": "CNAO CR NetworkAddonsConfig is not ready.",
3032
},

test/e2e/monitoring/alerts_test.go

+6-8
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ import (
1717
k8slabels "k8s.io/apimachinery/pkg/labels"
1818
"k8s.io/apimachinery/pkg/types"
1919
v1 "kubevirt.io/api/core/v1"
20-
kvtests "kubevirt.io/kubevirt/tests"
21-
"kubevirt.io/kubevirt/tests/libvmi"
22-
kvtutil "kubevirt.io/kubevirt/tests/util"
20+
"kubevirt.io/kubevirt/pkg/libvmi"
2321
k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
2422

2523
cnao "github.com/kubevirt/cluster-network-addons-operator/pkg/apis/networkaddonsoperator/shared"
@@ -160,14 +158,14 @@ var _ = Context("Prometheus Alerts", func() {
160158

161159
AfterEach(func() {
162160
By("deleting test namespace")
163-
err = testenv.Client.Delete(context.Background(), &k8sv1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: kvtutil.NamespaceTestDefault}})
161+
err = testenv.Client.Delete(context.Background(), &k8sv1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: testsuite.NamespaceTestDefault}})
164162
Expect(err).ToNot(HaveOccurred())
165163
})
166164

167165
BeforeEach(func() {
168166
By("creating test namespace that is not managed by kubemacpool (opted-out)")
169167
namespace := &k8sv1.Namespace{ObjectMeta: metav1.ObjectMeta{
170-
Name: kvtutil.NamespaceTestDefault,
168+
Name: testsuite.NamespaceTestDefault,
171169
Labels: map[string]string{
172170
"mutatevirtualmachines.kubemacpool.io": "ignore",
173171
},
@@ -182,7 +180,7 @@ var _ = Context("Prometheus Alerts", func() {
182180
Expect(err).ToNot(HaveOccurred())
183181

184182
By("cleaning namespace labels, returning the namespace to managed by kubemacpool")
185-
err = cleanNamespaceLabels(kvtutil.NamespaceTestDefault)
183+
err = cleanNamespaceLabels(testsuite.NamespaceTestDefault)
186184
Expect(err).ToNot(HaveOccurred())
187185

188186
By("restaring kubemacpool pods")
@@ -205,7 +203,7 @@ func newRandomVMI() *v1.VirtualMachineInstance {
205203
libvmi.WithInterface(libvmi.InterfaceDeviceWithMasqueradeBinding()),
206204
libvmi.WithNetwork(v1.DefaultPodNetwork()),
207205
)
208-
vmi.ObjectMeta.Namespace = kvtutil.NamespaceTestDefault
206+
vmi.ObjectMeta.Namespace = testsuite.NamespaceTestDefault
209207
vmi.Spec.Domain.Resources.Requests = k8sv1.ResourceList{}
210208

211209
if checks.IsARM64(testsuite.Arch) {
@@ -220,7 +218,7 @@ func newRandomVMI() *v1.VirtualMachineInstance {
220218

221219
func createVirtualMachineWithPrimaryInterfaceMacAddress(macAddress string) error {
222220
vmi := newRandomVMI()
223-
vm := kvtests.NewRandomVirtualMachine(vmi, true)
221+
vm := libvmi.NewVirtualMachine(vmi, libvmi.WithRunStrategy(v1.RunStrategyAlways))
224222

225223
vm.Spec.Template.Spec.Domain.Devices.Interfaces[0].MacAddress = macAddress
226224
err := testenv.Client.Create(context.Background(), vm)

test/e2e/monitoring/prometheus_utils.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func initializePromClient(prometheusUrl string, token string) promApiv1.API {
109109

110110
c, err := promApi.NewClient(promApi.Config{
111111
Address: prometheusUrl,
112-
RoundTripper: promConfig.NewAuthorizationCredentialsRoundTripper("Bearer", promConfig.Secret(token), defaultRoundTripper),
112+
RoundTripper: promConfig.NewAuthorizationCredentialsRoundTripper("Bearer", promConfig.NewInlineSecret(token), defaultRoundTripper),
113113
})
114114
Expect(err).ToNot(HaveOccurred())
115115

vendor/github.com/VividCortex/ewma/.gitignore

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/VividCortex/ewma/.whitesource

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/VividCortex/ewma/LICENSE

+21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)