Skip to content

Commit

Permalink
react to changes
Browse files Browse the repository at this point in the history
  • Loading branch information
p0lyn0mial committed Nov 20, 2024
1 parent 2b56e94 commit 03cc5e6
Show file tree
Hide file tree
Showing 12 changed files with 30 additions and 19 deletions.
3 changes: 2 additions & 1 deletion pkg/cmd/operator/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apiserver/pkg/server/healthz"
"k8s.io/client-go/tools/record"
"k8s.io/utils/clock"
)

func NewOperator() *cobra.Command {
cmd := controllercmd.
NewControllerCommandConfig("openshift-cluster-etcd-operator", version.Get(), operator.RunOperator).
NewControllerCommandConfig("openshift-cluster-etcd-operator", version.Get(), operator.RunOperator, clock.RealClock{}).
WithEventRecorderOptions(EtcdOperatorCorrelatorOptions()).
WithHealthChecks(healthz.NamedCheck("controller-aliveness", func(_ *http.Request) error {
if !operator.AlivenessChecker.Alive() {
Expand Down
3 changes: 2 additions & 1 deletion pkg/cmd/render/certs.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/component-base/metrics"
"k8s.io/utils/clock"
)

// createCertSecrets will run the etcdcertsigner.EtcdCertSignerController once and collect all respective certs created.
Expand All @@ -42,7 +43,7 @@ func createCertSecrets(nodes []*corev1.Node) ([]corev1.Secret, []corev1.ConfigMa

kubeInformers := v1helpers.NewKubeInformersForNamespaces(fakeKubeClient, "", "kube-system",
operatorclient.TargetNamespace, operatorclient.OperatorNamespace, operatorclient.GlobalUserSpecifiedConfigNamespace)
recorder := events.NewInMemoryRecorder("etcd")
recorder := events.NewInMemoryRecorder("etcd", clock.RealClock{})
nodeSelector, err := labels.Parse("node-role.kubernetes.io/master")
if err != nil {
return nil, nil, fmt.Errorf("could not parse master node labels: %w", err)
Expand Down
3 changes: 2 additions & 1 deletion pkg/etcdenvvar/envvarcontroller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"k8s.io/client-go/kubernetes/fake"
corev1listers "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/utils/clock"

"github.com/stretchr/testify/require"

Expand Down Expand Up @@ -175,7 +176,7 @@ func TestEnvVarController(t *testing.T) {

fakeKubeClient := fake.NewSimpleClientset(scenario.objects...)
eventRecorder := events.NewRecorder(fakeKubeClient.CoreV1().Events(operatorclient.TargetNamespace),
"test-envvarcontroller", &corev1.ObjectReference{})
"test-envvarcontroller", &corev1.ObjectReference{}, clock.RealClock{})
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
for _, obj := range defaultObjects {
require.NoError(t, indexer.Add(obj))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"k8s.io/client-go/kubernetes/fake"
corev1listers "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/utils/clock"
)

type fakePodLister struct {
Expand Down Expand Up @@ -557,7 +558,7 @@ func TestEnsureEtcdLearnerPromotion(t *testing.T) {
t.Run(scenario.name, func(t *testing.T) {
// test data
fakeMachineAPIChecker := &fakeMachineAPI{isMachineAPIFunctional: scenario.isFunctionalMachineAPIFn}
eventRecorder := events.NewRecorder(fake.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-member-controller", &corev1.ObjectReference{})
eventRecorder := events.NewRecorder(fake.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-member-controller", &corev1.ObjectReference{}, clock.RealClock{})
machineIndexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
for _, initialObj := range scenario.initialObjectsForMachineLister {
machineIndexer.Add(initialObj)
Expand Down Expand Up @@ -794,7 +795,7 @@ func TestReconcileMembers(t *testing.T) {
for _, scenario := range scenarios {
t.Run(scenario.name, func(t *testing.T) {
// test data
eventRecorder := events.NewRecorder(fake.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-member-controller", &corev1.ObjectReference{})
eventRecorder := events.NewRecorder(fake.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-member-controller", &corev1.ObjectReference{}, clock.RealClock{})
fakeMachineAPIChecker := &fakeMachineAPI{isMachineAPIFunctional: scenario.isFunctionalMachineAPIFn}

machineIndexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"k8s.io/client-go/kubernetes/fake"
corev1listers "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/utils/clock"
)

var (
Expand Down Expand Up @@ -133,7 +134,7 @@ func TestAttemptToRemoveLearningMember(t *testing.T) {
for _, scenario := range scenarios {
t.Run(scenario.name, func(t *testing.T) {
// test data
eventRecorder := events.NewRecorder(fake.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-member-removal-controller", &corev1.ObjectReference{})
eventRecorder := events.NewRecorder(fake.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-member-removal-controller", &corev1.ObjectReference{}, clock.RealClock{})
configMapTargetNSIndexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
for _, initialObj := range scenario.initialObjectsForConfigMapTargetNSLister {
configMapTargetNSIndexer.Add(initialObj)
Expand Down Expand Up @@ -1011,7 +1012,7 @@ func TestAttemptToScaleDown(t *testing.T) {
for _, scenario := range scenarios {
t.Run(scenario.name, func(t *testing.T) {
// test data
eventRecorder := events.NewRecorder(fake.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-member-removal-controller", &corev1.ObjectReference{})
eventRecorder := events.NewRecorder(fake.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-member-removal-controller", &corev1.ObjectReference{}, clock.RealClock{})
configMapTargetNSIndexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
for _, initialObj := range scenario.initialObjectsForConfigMapTargetNSLister {
configMapTargetNSIndexer.Add(initialObj)
Expand Down
5 changes: 3 additions & 2 deletions pkg/operator/defragcontroller/defragcontroller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
corev1listers "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/utils/clock"

"github.com/openshift/cluster-etcd-operator/pkg/etcdcli"
u "github.com/openshift/cluster-etcd-operator/pkg/testutils"
Expand Down Expand Up @@ -165,7 +166,7 @@ func TestNewDefragController(t *testing.T) {
etcdcli.WithFakeClusterHealth(scenario.memberHealth),
etcdcli.WithFakeStatus(status),
)
eventRecorder := events.NewInMemoryRecorder(t.Name())
eventRecorder := events.NewInMemoryRecorder(t.Name(), clock.RealClock{})
require.NoError(t, err)
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
for _, obj := range scenario.objects {
Expand Down Expand Up @@ -324,7 +325,7 @@ func TestNewDefragControllerMultiSyncs(t *testing.T) {
}

fakeEtcdClient, _ := etcdcli.NewFakeEtcdClient(etcdMembers, fakeOpts...)
eventRecorder := events.NewInMemoryRecorder(t.Name())
eventRecorder := events.NewInMemoryRecorder(t.Name(), clock.RealClock{})
require.NoError(t, err)
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
for _, obj := range scenario.objects {
Expand Down
2 changes: 2 additions & 0 deletions pkg/operator/etcdcertsigner/etcdcertsignercontroller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"k8s.io/client-go/tools/cache"
"k8s.io/component-base/metrics"
"k8s.io/component-base/metrics/legacyregistry"
"k8s.io/utils/clock"

"github.com/openshift/library-go/pkg/crypto"
"github.com/openshift/library-go/pkg/operator/events"
Expand Down Expand Up @@ -592,6 +593,7 @@ func setupController(t *testing.T, objects []runtime.Object, forceSkipRollout bo
fakeKubeClient.CoreV1().Events(operatorclient.TargetNamespace),
"test-cert-signer",
&corev1.ObjectReference{},
clock.RealClock{},
)

nodeSelector, err := labels.Parse("node-role.kubernetes.io/master")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
corev1listers "k8s.io/client-go/listers/core/v1"
clientgotesting "k8s.io/client-go/testing"
"k8s.io/client-go/tools/cache"
"k8s.io/utils/clock"
"k8s.io/utils/diff"

"github.com/openshift/library-go/pkg/controller/factory"
Expand Down Expand Up @@ -324,7 +325,7 @@ func TestBootstrapAnnotationRemoval(t *testing.T) {
if err != nil {
t.Fatal(err)
}
eventRecorder := events.NewRecorder(fakeKubeClient.CoreV1().Events(operatorclient.TargetNamespace), "test-etcdendpointscontroller", &corev1.ObjectReference{})
eventRecorder := events.NewRecorder(fakeKubeClient.CoreV1().Events(operatorclient.TargetNamespace), "test-etcdendpointscontroller", &corev1.ObjectReference{}, clock.RealClock{})
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})

for _, obj := range defaultObjects {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
k8sfakeclient "k8s.io/client-go/kubernetes/fake"
clientgotesting "k8s.io/client-go/testing"
"k8s.io/client-go/tools/cache"
"k8s.io/utils/clock"

machinev1beta1 "github.com/openshift/api/machine/v1beta1"
machinev1beta1fakeclient "github.com/openshift/client-go/machine/clientset/versioned/fake"
Expand All @@ -31,7 +32,7 @@ import (
)

func TestSyncMethod(t *testing.T) {
eventRecorder := events.NewRecorder(k8sfakeclient.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-machine-deletion-hooks-controller", &corev1.ObjectReference{})
eventRecorder := events.NewRecorder(k8sfakeclient.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-machine-deletion-hooks-controller", &corev1.ObjectReference{}, clock.RealClock{})
fakeMachineAPIChecker := &fakeMachineAPI{isMachineAPIFunctional: func() (bool, error) {
return false, nil
}}
Expand Down Expand Up @@ -429,7 +430,7 @@ func TestAttemptToDeleteMachineDeletionHook(t *testing.T) {

for _, scenario := range scenarios {
// test data
eventRecorder := events.NewRecorder(k8sfakeclient.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-machine-deletion-hooks-controller", &corev1.ObjectReference{})
eventRecorder := events.NewRecorder(k8sfakeclient.NewSimpleClientset().CoreV1().Events("operator"), "test-cluster-machine-deletion-hooks-controller", &corev1.ObjectReference{}, clock.RealClock{})
machineIndexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
for _, initialObj := range scenario.initialObjectsForMachineLister {
machineIndexer.Add(initialObj)
Expand Down Expand Up @@ -658,7 +659,7 @@ func TestAttemptToDeleteQuorumGuard(t *testing.T) {
for _, scenario := range scenarios {
t.Run(scenario.name, func(t *testing.T) {
// We only expect a single event.
eventRecorder := events.NewInMemoryRecorder("test-cluster-machine-deletion-hooks-controller")
eventRecorder := events.NewInMemoryRecorder("test-cluster-machine-deletion-hooks-controller", clock.RealClock{})

machineIndexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
for _, initialObj := range scenario.initialObjectsForMachineLister {
Expand Down
7 changes: 3 additions & 4 deletions pkg/operator/starter.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ import (
"github.com/openshift/library-go/pkg/operator/status"
"github.com/openshift/library-go/pkg/operator/unsupportedconfigoverridescontroller"
"github.com/openshift/library-go/pkg/operator/v1helpers"
"k8s.io/utils/clock"

"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
Expand Down Expand Up @@ -174,7 +172,7 @@ func RunOperator(ctx context.Context, controllerContext *controllercmd.Controlle
// we keep the default behavior of exiting the controller once a gate changes
featureGateAccessor.SetChangeHandler(featuregates.ForceExit)

operatorClient, dynamicInformers, err := genericoperatorclient.NewStaticPodOperatorClient(clock.RealClock{}, controllerContext.KubeConfig, operatorv1.GroupVersion.WithResource("etcds"), operatorv1.GroupVersion.WithKind("Etcd"), ExtractStaticPodOperatorSpec, ExtractStaticPodOperatorStatus)
operatorClient, dynamicInformers, err := genericoperatorclient.NewStaticPodOperatorClient(controllerContext.Clock, controllerContext.KubeConfig, operatorv1.GroupVersion.WithResource("etcds"), operatorv1.GroupVersion.WithKind("Etcd"), ExtractStaticPodOperatorSpec, ExtractStaticPodOperatorStatus)
if err != nil {
return err
}
Expand Down Expand Up @@ -304,7 +302,7 @@ func RunOperator(ctx context.Context, controllerContext *controllercmd.Controlle
return quorumChecker.IsSafeToUpdateRevision()
}

staticPodControllers, err := staticpod.NewBuilder(operatorClient, kubeClient, kubeInformersForNamespaces, configInformers).
staticPodControllers, err := staticpod.NewBuilder(operatorClient, kubeClient, kubeInformersForNamespaces, configInformers, controllerContext.Clock).
WithEvents(controllerContext.EventRecorder).
WithInstaller([]string{"cluster-etcd-operator", "installer"}).
WithPruning([]string{"cluster-etcd-operator", "prune"}, "etcd-pod").
Expand Down Expand Up @@ -429,6 +427,7 @@ func RunOperator(ctx context.Context, controllerContext *controllercmd.Controlle
)

unsupportedConfigOverridesController := unsupportedconfigoverridescontroller.NewUnsupportedConfigOverridesController(
"etcd",
operatorClient,
controllerContext.EventRecorder,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/tools/cache"
"k8s.io/utils/clock"

"github.com/stretchr/testify/require"
)
Expand Down Expand Up @@ -151,7 +152,7 @@ func getController(t *testing.T, staticPodStatus *operatorv1.StaticPodOperatorSt
}

eventRecorder := events.NewRecorder(fakeKubeClient.CoreV1().Events(operatorclient.TargetNamespace),
"test-targetconfigcontroller", &corev1.ObjectReference{})
"test-targetconfigcontroller", &corev1.ObjectReference{}, clock.RealClock{})
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
for _, obj := range defaultObjects {
require.NoError(t, indexer.Add(obj))
Expand Down
3 changes: 2 additions & 1 deletion pkg/tlshelpers/target_cert_creator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
kubefake "k8s.io/client-go/kubernetes/fake"
corev1listers "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/utils/clock"
)

type testEmbed struct {
Expand Down Expand Up @@ -111,7 +112,7 @@ func TestSignerSignatureRotation(t *testing.T) {

Client: client.CoreV1(),
Lister: corev1listers.NewSecretLister(indexer),
EventRecorder: events.NewInMemoryRecorder("test"),
EventRecorder: events.NewInMemoryRecorder("test", clock.RealClock{}),
}

ca, err := test.caFn()
Expand Down

0 comments on commit 03cc5e6

Please sign in to comment.