Skip to content

Commit

Permalink
Bug 1961317: Adding static assets to related objects
Browse files Browse the repository at this point in the history
  • Loading branch information
Elbehery committed Jun 10, 2021
1 parent 0775fb6 commit 0c32190
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 13 deletions.
16 changes: 16 additions & 0 deletions pkg/csoclients/csoclients.go
@@ -1,6 +1,10 @@
package csoclients

import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/client-go/discovery"
"k8s.io/client-go/discovery/cached/memory"
"k8s.io/client-go/restmapper"
"time"

cfgclientset "github.com/openshift/client-go/config/clientset/versioned"
Expand Down Expand Up @@ -48,6 +52,10 @@ type Clients struct {

// Dynamic client for OLM and old CSI operator APIs
DynamicClient dynamic.Interface

// Rest Mapper for mapping GVK to GVR
RestMapper meta.RESTMapper
CategoryExpander restmapper.CategoryExpander
}

const (
Expand Down Expand Up @@ -116,6 +124,14 @@ func NewClients(controllerConfig *controllercmd.ControllerContext, resync time.D
Informers: c.OperatorInformers,
Client: c.OperatorClientSet,
}

dc, err := discovery.NewDiscoveryClientForConfig(controllerConfig.KubeConfig)
if err != nil {
return nil, err
}
c.RestMapper = restmapper.NewDeferredDiscoveryRESTMapper(memory.NewMemCacheClient(dc))
c.CategoryExpander = restmapper.NewDiscoveryCategoryExpander(dc)

return c, nil
}

Expand Down
40 changes: 27 additions & 13 deletions pkg/operator/csidriveroperator/driverstarter.go
Expand Up @@ -56,8 +56,9 @@ type csiDriverControllerManager struct {
operatorConfig csioperatorclient.CSIOperatorConfig
// ControllerManager that installs the CSI driver operator and all its
// objects.
mgr manager.ControllerManager
running bool
mgr manager.ControllerManager
running bool
ctrlRelatedObjects func() ([]configv1.ObjectReference, error)
}

func NewCSIDriverStarterController(
Expand Down Expand Up @@ -86,10 +87,12 @@ func NewCSIDriverStarterController(
// started in sync() when their platform is detected.
c.controllers = []csiDriverControllerManager{}
for _, cfg := range driverConfigs {
mgr, ctrlRelatedObjects := c.createCSIControllerManager(cfg, clients, resyncInterval)
c.controllers = append(c.controllers, csiDriverControllerManager{
operatorConfig: cfg,
mgr: c.createCSIControllerManager(cfg, clients, resyncInterval),
running: false,
operatorConfig: cfg,
mgr: mgr,
running: false,
ctrlRelatedObjects: ctrlRelatedObjects,
})
}

Expand Down Expand Up @@ -148,6 +151,12 @@ func (c *CSIDriverStarterController) sync(ctx context.Context, syncCtx factory.S
Resource: "clustercsidrivers",
Name: ctrl.operatorConfig.CSIDriverName,
})
// add static assets
objs, err := ctrl.ctrlRelatedObjects()
if err != nil {
return err
}
relatedObjects = append(relatedObjects, objs...)
klog.V(2).Infof("Starting ControllerManager for %s", ctrl.operatorConfig.ConditionPrefix)
go ctrl.mgr.Start(ctx)
ctrl.running = true
Expand All @@ -159,16 +168,21 @@ func (c *CSIDriverStarterController) sync(ctx context.Context, syncCtx factory.S
func (c *CSIDriverStarterController) createCSIControllerManager(
cfg csioperatorclient.CSIOperatorConfig,
clients *csoclients.Clients,
resyncInterval time.Duration) manager.ControllerManager {
resyncInterval time.Duration) (manager.ControllerManager, func() ([]configv1.ObjectReference, error)) {

manager := manager.NewControllerManager()
manager = manager.WithController(staticresourcecontroller.NewStaticResourceController(

src := staticresourcecontroller.NewStaticResourceController(
cfg.ConditionPrefix+"CSIDriverOperatorStaticController",
generated.Asset,
cfg.StaticAssets,
resourceapply.NewKubeClientHolder(clients.KubeClient),
c.operatorClient,
c.eventRecorder).AddKubeInformers(clients.KubeInformers), 1)
generated.Asset, cfg.StaticAssets, resourceapply.NewKubeClientHolder(clients.KubeClient), c.operatorClient, c.eventRecorder).
AddKubeInformers(clients.KubeInformers).
AddRESTMapper(clients.RestMapper).
AddCategoryExpander(clients.CategoryExpander)

manager = manager.WithController(src, 1)
ctrlRelatedObjects := func() ([]configv1.ObjectReference, error) {
return src.RelatedObjects()
}

crController := NewCSIDriverOperatorCRController(
cfg.ConditionPrefix,
Expand Down Expand Up @@ -197,7 +211,7 @@ func (c *CSIDriverStarterController) createCSIControllerManager(
manager = manager.WithController(cfg.ExtraControllers[i], 1)
}

return manager
return manager, ctrlRelatedObjects
}

func RelatedObjectFunc() func() (isset bool, objs []configv1.ObjectReference) {
Expand Down
2 changes: 2 additions & 0 deletions vendor/modules.txt
Expand Up @@ -751,6 +751,7 @@ k8s.io/client-go/applyconfigurations/storage/v1
k8s.io/client-go/applyconfigurations/storage/v1alpha1
k8s.io/client-go/applyconfigurations/storage/v1beta1
k8s.io/client-go/discovery
k8s.io/client-go/discovery/cached/memory
k8s.io/client-go/discovery/fake
k8s.io/client-go/dynamic
k8s.io/client-go/informers
Expand Down Expand Up @@ -948,6 +949,7 @@ k8s.io/client-go/plugin/pkg/client/auth/exec
k8s.io/client-go/rest
k8s.io/client-go/rest/fake
k8s.io/client-go/rest/watch
k8s.io/client-go/restmapper
k8s.io/client-go/testing
k8s.io/client-go/tools/auth
k8s.io/client-go/tools/cache
Expand Down

0 comments on commit 0c32190

Please sign in to comment.