Removes dependency on consoleclient

This commit is contained in:
Mikalai Radchuk 2023-01-12 17:19:59 +00:00 коммит произвёл Mikalai Radchuk
Родитель d83450a2ba
Коммит 7f1118c72c
4 изменённых файлов: 44 добавлений и 34 удалений

Просмотреть файл

@ -9,7 +9,6 @@ import (
"fmt"
configclient "github.com/openshift/client-go/config/clientset/versioned"
consoleclient "github.com/openshift/client-go/console/clientset/versioned"
imageregistryclient "github.com/openshift/client-go/imageregistry/clientset/versioned"
machineclient "github.com/openshift/client-go/machine/clientset/versioned"
operatorclient "github.com/openshift/client-go/operator/clientset/versioned"
@ -84,10 +83,6 @@ func operator(ctx context.Context, log *logrus.Entry) error {
if err != nil {
return err
}
consolecli, err := consoleclient.NewForConfig(restConfig)
if err != nil {
return err
}
kubernetescli, err := kubernetes.NewForConfig(restConfig)
if err != nil {
return err
@ -187,7 +182,7 @@ func operator(ctx context.Context, log *logrus.Entry) error {
return fmt.Errorf("unable to create controller %s: %v", machine.ControllerName, err)
}
if err = (banner.NewReconciler(
log.WithField("controller", banner.ControllerName), consolecli)).SetupWithManager(mgr); err != nil {
log.WithField("controller", banner.ControllerName))).SetupWithManager(mgr); err != nil {
return fmt.Errorf("unable to create controller %s: %v", banner.ControllerName, err)
}
if err = (machineset.NewReconciler(

Просмотреть файл

@ -10,37 +10,51 @@ import (
consolev1 "github.com/openshift/api/console/v1"
kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1"
)
func (r *Reconciler) reconcileBanner(ctx context.Context, instance *arov1alpha1.Cluster) (err error) {
func (r *Reconciler) reconcileBanner(ctx context.Context, instance *arov1alpha1.Cluster) error {
var text string
switch instance.Spec.Banner.Content {
case arov1alpha1.BannerDisabled:
err = r.consolecli.ConsoleV1().ConsoleNotifications().Delete(ctx, BannerName, metav1.DeleteOptions{})
banner := &consolev1.ConsoleNotification{
ObjectMeta: metav1.ObjectMeta{
Name: BannerName,
},
}
err := r.client.Delete(ctx, banner)
if err != nil && kerrors.IsNotFound(err) {
// we don't care if the object doesn't exist
return nil
}
return err
case arov1alpha1.BannerContactSupport:
banner := r.newBanner(fmt.Sprintf(TextContactSupport, instance.Spec.ResourceID))
_, err := r.consolecli.ConsoleV1().ConsoleNotifications().Get(ctx, BannerName, metav1.GetOptions{})
if err != nil && !kerrors.IsNotFound(err) {
return err
}
text = fmt.Sprintf(TextContactSupport, instance.Spec.ResourceID)
default:
return fmt.Errorf("wrong banner setting '%s'", instance.Spec.Banner.Content)
}
// if the object doesn't exist Create
if err != nil && kerrors.IsNotFound(err) {
_, err = r.consolecli.ConsoleV1().ConsoleNotifications().Create(ctx, banner, metav1.CreateOptions{})
return err
}
return r.createOrUpdate(ctx, text)
}
// if there's no errors, object found then update
_, err = r.consolecli.ConsoleV1().ConsoleNotifications().Update(ctx, banner, metav1.UpdateOptions{})
func (r *Reconciler) createOrUpdate(ctx context.Context, text string) error {
oldBanner := &consolev1.ConsoleNotification{}
err := r.client.Get(ctx, types.NamespacedName{Name: BannerName}, oldBanner)
if err != nil && !kerrors.IsNotFound(err) {
return err
}
return fmt.Errorf("wrong banner setting '%s'", instance.Spec.Banner.Content)
// if the object doesn't exist Create
if err != nil && kerrors.IsNotFound(err) {
return r.client.Create(ctx, r.newBanner(text))
}
// if there's no errors, object found then update
oldBanner.Spec.Text = text
return r.client.Update(ctx, oldBanner)
}
func (r *Reconciler) newBanner(text string) *consolev1.ConsoleNotification {

Просмотреть файл

@ -7,7 +7,6 @@ import (
"context"
consolev1 "github.com/openshift/api/console/v1"
consoleclient "github.com/openshift/client-go/console/clientset/versioned"
"github.com/sirupsen/logrus"
"k8s.io/apimachinery/pkg/types"
ctrl "sigs.k8s.io/controller-runtime"
@ -31,16 +30,13 @@ const (
type Reconciler struct {
log *logrus.Entry
consolecli consoleclient.Interface
client client.Client
}
// NewReconciler creates a new Reconciler
func NewReconciler(log *logrus.Entry, consolecli consoleclient.Interface) *Reconciler {
func NewReconciler(log *logrus.Entry) *Reconciler {
return &Reconciler{
log: log,
consolecli: consolecli,
log: log,
}
}

Просмотреть файл

@ -10,9 +10,9 @@ import (
"testing"
consolev1 "github.com/openshift/api/console/v1"
consolefake "github.com/openshift/client-go/console/clientset/versioned/fake"
kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
@ -130,6 +130,8 @@ func TestBannerReconcile(t *testing.T) {
},
} {
t.Run(tt.name, func(t *testing.T) {
ctx := context.Background()
instance := arov1alpha1.Cluster{
ObjectMeta: metav1.ObjectMeta{
Name: "cluster",
@ -145,20 +147,23 @@ func TestBannerReconcile(t *testing.T) {
},
}
clientFake := fake.NewClientBuilder().WithObjects(&instance, &tt.oldCN).Build()
r := Reconciler{
log: utillog.GetLogger(),
consolecli: consolefake.NewSimpleClientset(&tt.oldCN),
client: fake.NewClientBuilder().WithObjects(&instance).Build(),
log: utillog.GetLogger(),
client: clientFake,
}
// function under test
_, err := r.Reconcile(context.Background(), ctrl.Request{})
_, err := r.Reconcile(ctx, ctrl.Request{})
if err != nil && err.Error() != tt.wantErr ||
err == nil && tt.wantErr != "" {
t.Error(err)
}
resultBanner, err := r.consolecli.ConsoleV1().ConsoleNotifications().Get(context.Background(), BannerName, metav1.GetOptions{})
resultBanner := &consolev1.ConsoleNotification{}
err = clientFake.Get(ctx, types.NamespacedName{Name: BannerName}, resultBanner)
if tt.expectBanner {
if err != nil {
t.Error(err)
@ -170,7 +175,7 @@ func TestBannerReconcile(t *testing.T) {
if err != nil && !kerrors.IsNotFound(err) {
t.Error(err)
}
if err == nil || !kerrors.IsNotFound(err) || resultBanner != nil {
if err == nil || !kerrors.IsNotFound(err) {
t.Errorf("Expected not to get a ConsoleNotification, but it exists")
}
}