Skip to content

Commit

Permalink
update cma config reference (#163)
Browse files Browse the repository at this point in the history
* update cma config reference

Signed-off-by: haoqing0110 <[email protected]>

* update

Signed-off-by: haoqing0110 <[email protected]>

---------

Signed-off-by: haoqing0110 <[email protected]>
  • Loading branch information
haoqing0110 authored Apr 3, 2023
1 parent 7c87212 commit 549a399
Show file tree
Hide file tree
Showing 16 changed files with 1,636 additions and 121 deletions.
3 changes: 3 additions & 0 deletions deploy/resources/cluster_role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
- apiGroups: [ "addon.open-cluster-management.io" ]
resources: [ "clustermanagementaddons/finalizers" ]
verbs: [ "update" ]
- apiGroups: [ "addon.open-cluster-management.io" ]
resources: [ "clustermanagementaddons/status" ]
verbs: ["update", "patch"]
- apiGroups: ["addon.open-cluster-management.io"]
resources: ["clustermanagementaddons"]
verbs: ["get", "list", "watch"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
- apiGroups: [ "addon.open-cluster-management.io" ]
resources: [ "clustermanagementaddons/finalizers" ]
verbs: [ "update" ]
- apiGroups: ["addon.open-cluster-management.io"]
resources: ["clustermanagementaddons/status"]
verbs: ["update", "patch"]
- apiGroups: ["addon.open-cluster-management.io"]
resources: ["clustermanagementaddons"]
verbs: ["get", "list", "watch"]
Expand Down
3 changes: 3 additions & 0 deletions examples/deploy/addon/helloworld/resources/cluster_role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
- apiGroups: [ "addon.open-cluster-management.io" ]
resources: [ "clustermanagementaddons/finalizers" ]
verbs: [ "update" ]
- apiGroups: [ "addon.open-cluster-management.io" ]
resources: [ "clustermanagementaddons/status" ]
verbs: ["update", "patch"]
- apiGroups: ["addon.open-cluster-management.io"]
resources: ["clustermanagementaddons"]
verbs: ["get", "list", "watch"]
Expand Down
48 changes: 37 additions & 11 deletions pkg/addonmanager/addontesting/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,23 +119,49 @@ func SetAddonFinalizers(addon *addonapiv1alpha1.ManagedClusterAddOn, finalizers
return addon
}

func NewClusterManagementAddon(name, crd, cr string) *addonapiv1alpha1.ClusterManagementAddOn {
return &addonapiv1alpha1.ClusterManagementAddOn{
ObjectMeta: metav1.ObjectMeta{
Name: name,
},
Spec: addonapiv1alpha1.ClusterManagementAddOnSpec{
AddOnConfiguration: addonapiv1alpha1.ConfigCoordinates{
CRDName: crd,
CRName: cr,
type clusterManagementAddonBuilder struct {
clusterManagementAddOn *addonapiv1alpha1.ClusterManagementAddOn
}

func NewClusterManagementAddon(name, crd, cr string) *clusterManagementAddonBuilder {
return &clusterManagementAddonBuilder{
&addonapiv1alpha1.ClusterManagementAddOn{
ObjectMeta: metav1.ObjectMeta{
Name: name,
},
InstallStrategy: addonapiv1alpha1.InstallStrategy{
Type: addonapiv1alpha1.AddonInstallStrategyManual,
Spec: addonapiv1alpha1.ClusterManagementAddOnSpec{
AddOnConfiguration: addonapiv1alpha1.ConfigCoordinates{
CRDName: crd,
CRName: cr,
},
InstallStrategy: addonapiv1alpha1.InstallStrategy{
Type: addonapiv1alpha1.AddonInstallStrategyManual,
},
},
},
}
}

func (b *clusterManagementAddonBuilder) WithSupportedConfigs(supportedConfigs ...addonapiv1alpha1.ConfigMeta) *clusterManagementAddonBuilder {
b.clusterManagementAddOn.Spec.SupportedConfigs = supportedConfigs
return b
}

func (b *clusterManagementAddonBuilder) WithPlacementStrategy(placements ...addonapiv1alpha1.PlacementStrategy) *clusterManagementAddonBuilder {
b.clusterManagementAddOn.Spec.InstallStrategy.Type = addonapiv1alpha1.AddonInstallStrategyPlacements
b.clusterManagementAddOn.Spec.InstallStrategy.Placements = placements
return b
}

func (b *clusterManagementAddonBuilder) WithInstallProgression(installProgressions ...addonapiv1alpha1.InstallProgression) *clusterManagementAddonBuilder {
b.clusterManagementAddOn.Status.InstallProgressions = installProgressions
return b
}

func (b *clusterManagementAddonBuilder) Build() *addonapiv1alpha1.ClusterManagementAddOn {
return b.clusterManagementAddOn
}

func NewManifestWork(name, namespace string, objects ...*unstructured.Unstructured) *workapiv1.ManifestWork {
work := &workapiv1.ManifestWork{
ObjectMeta: metav1.ObjectMeta{
Expand Down
20 changes: 7 additions & 13 deletions pkg/addonmanager/controllers/addonconfig/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ type addonConfigController struct {
addonClient addonv1alpha1client.Interface
addonLister addonlisterv1alpha1.ManagedClusterAddOnLister
addonIndexer cache.Indexer
configListers map[string]dynamiclister.Lister
configListers map[schema.GroupResource]dynamiclister.Lister
queue workqueue.RateLimitingInterface
}

Expand All @@ -55,7 +55,7 @@ func NewAddonConfigController(
addonClient: addonClient,
addonLister: addonInformers.Lister(),
addonIndexer: addonInformers.Informer().GetIndexer(),
configListers: map[string]dynamiclister.Lister{},
configListers: map[schema.GroupResource]dynamiclister.Lister{},
queue: syncCtx.Queue(),
}

Expand Down Expand Up @@ -96,20 +96,20 @@ func (c *addonConfigController) buildConfigInformers(
utilruntime.HandleError(err)
}
configInformers = append(configInformers, indexInformer)
c.configListers[toListerKey(gvr.Group, gvr.Resource)] = dynamiclister.New(indexInformer.GetIndexer(), gvr)
c.configListers[schema.GroupResource{Group: gvr.Group, Resource: gvr.Resource}] = dynamiclister.New(indexInformer.GetIndexer(), gvr)
}
return configInformers
}

func (c *addonConfigController) enqueueAddOnsByConfig(gvr schema.GroupVersionResource) enqueueFunc {
return func(obj interface{}) {
name, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj)
namespaceName, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj)
if err != nil {
utilruntime.HandleError(fmt.Errorf("error to get accessor of object: %v", obj))
return
}

objs, err := c.addonIndexer.ByIndex(byAddOnConfig, fmt.Sprintf("%s/%s/%s", gvr.Group, gvr.Resource, name))
objs, err := c.addonIndexer.ByIndex(byAddOnConfig, fmt.Sprintf("%s/%s/%s", gvr.Group, gvr.Resource, namespaceName))
if err != nil {
utilruntime.HandleError(fmt.Errorf("error to get addons: %v", err))
return
Expand All @@ -119,9 +119,7 @@ func (c *addonConfigController) enqueueAddOnsByConfig(gvr schema.GroupVersionRes
if obj == nil {
continue
}

addon := obj.(*addonapiv1alpha1.ManagedClusterAddOn)
key, _ := cache.MetaNamespaceKeyFunc(addon)
key, _ := cache.MetaNamespaceKeyFunc(obj)
c.queue.Add(key)
}
}
Expand Down Expand Up @@ -183,7 +181,7 @@ func (c *addonConfigController) updateConfigGenerations(addon *addonapiv1alpha1.
}

for index, configReference := range addon.Status.ConfigReferences {
lister, ok := c.configListers[toListerKey(configReference.Group, configReference.Resource)]
lister, ok := c.configListers[schema.GroupResource{Group: configReference.ConfigGroupResource.Group, Resource: configReference.ConfigGroupResource.Resource}]
if !ok {
continue
}
Expand Down Expand Up @@ -266,7 +264,3 @@ func getIndex(config addonapiv1alpha1.ConfigReference) string {

return fmt.Sprintf("%s/%s/%s", config.Group, config.Resource, config.Name)
}

func toListerKey(group, resource string) string {
return fmt.Sprintf("%s/%s", group, resource)
}
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ func TestSync(t *testing.T) {
ctrl := &addonConfigController{
addonClient: fakeAddonClient,
addonLister: addonInformers.Addon().V1alpha1().ManagedClusterAddOns().Lister(),
configListers: map[string]dynamiclister.Lister{},
configListers: map[schema.GroupResource]dynamiclister.Lister{},
}

ctrl.buildConfigInformers(configInformerFactory, map[schema.GroupVersionResource]bool{fakeGVR: true})
Expand Down
Loading

0 comments on commit 549a399

Please sign in to comment.