Skip to content

Commit

Permalink
Remove old config parsing and switch to new client
Browse files Browse the repository at this point in the history
  • Loading branch information
damemi committed Sep 23, 2020
1 parent f7a97b8 commit c0e9ddf
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 477 deletions.
70 changes: 0 additions & 70 deletions pkg/operator/operatorclient/interfaces.go
@@ -1,74 +1,4 @@
package operatorclient

import (
"context"

operatorv1 "github.com/openshift/api/operator/v1"
operatorconfigclientv1beta1 "github.com/openshift/cluster-kube-descheduler-operator/pkg/generated/clientset/versioned/typed/descheduler/v1beta1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/cache"
)

const OperatorNamespace = "openshift-kube-descheduler-operator"
const OperatorConfigName = "cluster"

type DeschedulerClient struct {
Ctx context.Context
SharedInformer cache.SharedIndexInformer
OperatorClient operatorconfigclientv1beta1.KubedeschedulersV1beta1Interface
}

func (c *DeschedulerClient) Informer() cache.SharedIndexInformer {
return c.SharedInformer
}

func (c *DeschedulerClient) GetOperatorState() (spec *operatorv1.OperatorSpec, status *operatorv1.OperatorStatus, resourceVersion string, err error) {
instance, err := c.OperatorClient.KubeDeschedulers(OperatorNamespace).Get(c.Ctx, OperatorConfigName, metav1.GetOptions{})
if err != nil {
return nil, nil, "", err
}
return &instance.Spec.OperatorSpec, &instance.Status.OperatorStatus, instance.ResourceVersion, nil
}

func (c *DeschedulerClient) UpdateOperatorSpec(resourceVersion string, spec *operatorv1.OperatorSpec) (out *operatorv1.OperatorSpec, newResourceVersion string, err error) {
original, err := c.OperatorClient.KubeDeschedulers(OperatorNamespace).Get(c.Ctx, OperatorConfigName, metav1.GetOptions{})
if err != nil {
return nil, "", err
}
copy := original.DeepCopy()
copy.ResourceVersion = resourceVersion
copy.Spec.OperatorSpec = *spec

ret, err := c.OperatorClient.KubeDeschedulers(OperatorNamespace).Update(c.Ctx, copy, v1.UpdateOptions{})
if err != nil {
return nil, "", err
}

return &ret.Spec.OperatorSpec, ret.ResourceVersion, nil
}

func (c *DeschedulerClient) UpdateOperatorStatus(resourceVersion string, status *operatorv1.OperatorStatus) (out *operatorv1.OperatorStatus, err error) {
original, err := c.OperatorClient.KubeDeschedulers(OperatorNamespace).Get(c.Ctx, OperatorConfigName, metav1.GetOptions{})
if err != nil {
return nil, err
}
copy := original.DeepCopy()
copy.ResourceVersion = resourceVersion
copy.Status.OperatorStatus = *status

ret, err := c.OperatorClient.KubeDeschedulers(OperatorNamespace).UpdateStatus(c.Ctx, copy, v1.UpdateOptions{})
if err != nil {
return nil, err
}

return &ret.Status.OperatorStatus, nil
}

func (c *DeschedulerClient) GetObjectMeta() (meta *metav1.ObjectMeta, err error) {
instance, err := c.OperatorClient.KubeDeschedulers(OperatorNamespace).Get(c.Ctx, OperatorConfigName, metav1.GetOptions{})
if err != nil {
return nil, err
}
return &instance.ObjectMeta, nil
}
23 changes: 12 additions & 11 deletions pkg/operator/starter.go
Expand Up @@ -6,10 +6,12 @@ import (

"k8s.io/client-go/kubernetes"

operatorconfigclient "github.com/openshift/cluster-kube-descheduler-operator/pkg/generated/clientset/versioned"
operatorclientinformers "github.com/openshift/cluster-kube-descheduler-operator/pkg/generated/informers/externalversions"
operatorv1 "github.com/openshift/api/operator/v1"
operatorconfigclient "github.com/openshift/client-go/operator/clientset/versioned"
operatorclientinformers "github.com/openshift/client-go/operator/informers/externalversions"
"github.com/openshift/cluster-kube-descheduler-operator/pkg/operator/operatorclient"
"github.com/openshift/library-go/pkg/controller/controllercmd"
"github.com/openshift/library-go/pkg/operator/genericoperatorclient"
"github.com/openshift/library-go/pkg/operator/v1helpers"
)

Expand All @@ -28,23 +30,22 @@ func RunOperator(ctx context.Context, cc *controllercmd.ControllerContext) error
operatorclient.OperatorNamespace,
)

operatorConfigClient, err := operatorconfigclient.NewForConfig(cc.KubeConfig)
operatorClient, _, err := genericoperatorclient.NewClusterScopedOperatorClient(cc.KubeConfig, operatorv1.GroupVersion.WithResource("kubedeschedulers"))
if err != nil {
return err
}
operatorConfigInformers := operatorclientinformers.NewSharedInformerFactory(operatorConfigClient, 10*time.Minute)

deschedulerClient := &operatorclient.DeschedulerClient{
Ctx: ctx,
SharedInformer: operatorConfigInformers.Kubedeschedulers().V1beta1().KubeDeschedulers().Informer(),
OperatorClient: operatorConfigClient.KubedeschedulersV1beta1(),
operatorConfigClient, err := operatorconfigclient.NewForConfig(cc.KubeConfig)
if err != nil {
return err
}
operatorConfigInformers := operatorclientinformers.NewSharedInformerFactory(operatorConfigClient, 10*time.Minute)

targetConfigReconciler := NewTargetConfigReconciler(
ctx,
operatorConfigClient.KubedeschedulersV1beta1(),
operatorConfigInformers.Kubedeschedulers().V1beta1().KubeDeschedulers(),
deschedulerClient,
operatorConfigClient.OperatorV1().KubeDeschedulers(),
operatorConfigInformers.Operator().V1().KubeDeschedulers(),
operatorClient,
kubeClient,
cc.EventRecorder,
)
Expand Down

0 comments on commit c0e9ddf

Please sign in to comment.