Skip to content

Commit

Permalink
Merge pull request #253 from legionus/fix-cluster-operator-status-v1
Browse files Browse the repository at this point in the history
Use generator for ClusterOperator
  • Loading branch information
openshift-merge-robot committed Apr 24, 2019
2 parents bdd444b + 65ef942 commit d8947f7
Show file tree
Hide file tree
Showing 21 changed files with 558 additions and 360 deletions.
1 change: 1 addition & 0 deletions manifests/02-rbac.yaml
Expand Up @@ -13,6 +13,7 @@ rules:
- apiGroups:
- config.openshift.io
resources:
- "clusteroperators"
- "images"
- "images/status"
verbs:
Expand Down
1 change: 1 addition & 0 deletions pkg/client/listers.go
Expand Up @@ -23,6 +23,7 @@ type Listers struct {
ClusterRoleBindings krbaclisters.ClusterRoleBindingLister
OpenShiftConfig kcorelisters.ConfigMapNamespaceLister
ImageConfigs configlisters.ImageLister
ClusterOperators configlisters.ClusterOperatorLister
RegistryConfigs regoplisters.ConfigLister
InstallerSecrets kcorelisters.SecretNamespaceLister
}
180 changes: 0 additions & 180 deletions pkg/clusteroperator/clusteroperator.go

This file was deleted.

64 changes: 42 additions & 22 deletions pkg/operator/controller.go
Expand Up @@ -23,13 +23,14 @@ import (
routeset "github.com/openshift/client-go/route/clientset/versioned"
routeinformers "github.com/openshift/client-go/route/informers/externalversions"

configapiv1 "github.com/openshift/api/config/v1"
imageregistryv1 "github.com/openshift/cluster-image-registry-operator/pkg/apis/imageregistry/v1"
regopclient "github.com/openshift/cluster-image-registry-operator/pkg/client"
"github.com/openshift/cluster-image-registry-operator/pkg/clusteroperator"
regopset "github.com/openshift/cluster-image-registry-operator/pkg/generated/clientset/versioned"
regopinformers "github.com/openshift/cluster-image-registry-operator/pkg/generated/informers/externalversions"
"github.com/openshift/cluster-image-registry-operator/pkg/parameters"
"github.com/openshift/cluster-image-registry-operator/pkg/resource"
"github.com/openshift/cluster-image-registry-operator/pkg/resource/object"
"github.com/openshift/cluster-image-registry-operator/pkg/resource/strategy"
"github.com/openshift/cluster-image-registry-operator/pkg/storage"
"github.com/openshift/cluster-image-registry-operator/pkg/util"
Expand Down Expand Up @@ -79,16 +80,13 @@ func NewController(kubeconfig *restclient.Config) (*Controller, error) {
p.ImageConfig.Name = "cluster"
p.CAConfig.Name = imageregistryv1.ImageRegistryCertificatesName

clusterStatus := clusteroperator.NewStatusHandler(kubeconfig, imageregistryv1.ImageRegistryClusterOperatorResourceName)

listers := &regopclient.Listers{}
c := &Controller{
kubeconfig: kubeconfig,
params: p,
generator: resource.NewGenerator(kubeconfig, listers, &p, clusterStatus),
clusterStatus: clusterStatus,
workqueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "Changes"),
listers: listers,
kubeconfig: kubeconfig,
params: p,
generator: resource.NewGenerator(kubeconfig, listers, &p),
workqueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "Changes"),
listers: listers,
}

// Initial event to bootstrap CR if it doesn't exist.
Expand All @@ -98,12 +96,11 @@ func NewController(kubeconfig *restclient.Config) (*Controller, error) {
}

type Controller struct {
kubeconfig *restclient.Config
params parameters.Globals
generator *resource.Generator
clusterStatus *clusteroperator.StatusHandler
workqueue workqueue.RateLimitingInterface
listers *regopclient.Listers
kubeconfig *restclient.Config
params parameters.Globals
generator *resource.Generator
workqueue workqueue.RateLimitingInterface
listers *regopclient.Listers
}

func (c *Controller) createOrUpdateResources(cr *imageregistryv1.Config) error {
Expand Down Expand Up @@ -167,7 +164,11 @@ func (c *Controller) sync() error {
metadataChanged := strategy.Metadata(&prevCR.ObjectMeta, &cr.ObjectMeta)
specChanged := !reflect.DeepEqual(prevCR.Spec, cr.Spec)
if metadataChanged || specChanged {
glog.Infof("object changed: %s (metadata=%t, spec=%t)", util.ObjectInfo(cr), metadataChanged, specChanged)
difference, err := object.DiffString(prevCR, cr)
if err != nil {
glog.Errorf("unable to calculate difference in %s: %s", util.ObjectInfo(cr), err)
}
glog.Infof("object changed: %s (metadata=%t, spec=%t): %s", util.ObjectInfo(cr), metadataChanged, specChanged, difference)

client, err := regopset.NewForConfig(c.kubeconfig)
if err != nil {
Expand All @@ -190,7 +191,11 @@ func (c *Controller) sync() error {
cr.Status.ObservedGeneration = cr.Generation
statusChanged := !reflect.DeepEqual(prevCR.Status, cr.Status)
if statusChanged {
glog.Infof("object changed: %s (status=%t)", util.ObjectInfo(cr), statusChanged)
difference, err := object.DiffString(prevCR, cr)
if err != nil {
glog.Errorf("unable to calculate difference in %s: %s", util.ObjectInfo(cr), err)
}
glog.Infof("object changed: %s (status=%t): %s", util.ObjectInfo(cr), statusChanged, difference)

client, err := regopset.NewForConfig(c.kubeconfig)
if err != nil {
Expand Down Expand Up @@ -244,6 +249,11 @@ func (c *Controller) eventProcessor() {
func (c *Controller) handler() cache.ResourceEventHandlerFuncs {
return cache.ResourceEventHandlerFuncs{
AddFunc: func(o interface{}) {
if clusterOperator, ok := o.(*configapiv1.ClusterOperator); ok {
if clusterOperator.GetName() != imageregistryv1.ImageRegistryClusterOperatorResourceName {
return
}
}
glog.V(1).Infof("add event to workqueue due to %s (add)", util.ObjectInfo(o))
c.workqueue.Add(workqueueKey)
},
Expand All @@ -263,6 +273,11 @@ func (c *Controller) handler() cache.ResourceEventHandlerFuncs {
// Two different versions of the same resource will always have different RVs.
return
}
if clusterOperator, ok := o.(*configapiv1.ClusterOperator); ok {
if clusterOperator.GetName() != imageregistryv1.ImageRegistryClusterOperatorResourceName {
return
}
}
glog.V(1).Infof("add event to workqueue due to %s (update)", util.ObjectInfo(n))
c.workqueue.Add(workqueueKey)
},
Expand All @@ -281,6 +296,11 @@ func (c *Controller) handler() cache.ResourceEventHandlerFuncs {
}
glog.V(4).Infof("recovered deleted object %q from tombstone", object.GetName())
}
if clusterOperator, ok := o.(*configapiv1.ClusterOperator); ok {
if clusterOperator.GetName() != imageregistryv1.ImageRegistryClusterOperatorResourceName {
return
}
}
glog.V(1).Infof("add event to workqueue due to %s (delete)", util.ObjectInfo(object))
c.workqueue.Add(workqueueKey)
},
Expand All @@ -290,11 +310,6 @@ func (c *Controller) handler() cache.ResourceEventHandlerFuncs {
func (c *Controller) Run(stopCh <-chan struct{}) error {
defer c.workqueue.ShutDown()

err := c.clusterStatus.Create()
if err != nil {
glog.Errorf("unable to create cluster operator resource: %s", err)
}

kubeClient, err := kubeset.NewForConfig(c.kubeconfig)
if err != nil {
return err
Expand Down Expand Up @@ -379,6 +394,11 @@ func (c *Controller) Run(stopCh <-chan struct{}) error {
c.listers.ImageConfigs = informer.Lister()
return informer.Informer()
},
func() cache.SharedIndexInformer {
informer := configInformerFactory.Config().V1().ClusterOperators()
c.listers.ClusterOperators = informer.Lister()
return informer.Informer()
},
func() cache.SharedIndexInformer {
informer := regopInformerFactory.Imageregistry().V1().Configs()
c.listers.RegistryConfigs = informer.Lister()
Expand Down

0 comments on commit d8947f7

Please sign in to comment.