Skip to content

Commit 8532e21

Browse files
author
Cui Shuaijie
committed
fix(platform): add needUpdate func in cluster/machine provider
1 parent 48967e3 commit 8532e21

File tree

4 files changed

+38
-4
lines changed

4 files changed

+38
-4
lines changed

pkg/platform/controller/cluster/cluster_controller.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"k8s.io/apimachinery/pkg/util/wait"
3535
"k8s.io/client-go/tools/cache"
3636
"k8s.io/client-go/util/workqueue"
37+
3738
platformversionedclient "tkestack.io/tke/api/client/clientset/versioned/typed/platform/v1"
3839
platformv1informer "tkestack.io/tke/api/client/informers/externalversions/platform/v1"
3940
platformv1lister "tkestack.io/tke/api/client/listers/platform/v1"
@@ -131,9 +132,18 @@ func (c *Controller) addCluster(obj interface{}) {
131132
func (c *Controller) updateCluster(old, obj interface{}) {
132133
oldCluster := old.(*platformv1.Cluster)
133134
cluster := obj.(*platformv1.Cluster)
134-
if !c.needsUpdate(oldCluster, cluster) {
135-
return
135+
provider, err := clusterprovider.GetProvider(cluster.Spec.Type)
136+
if err != nil || provider == nil {
137+
c.log.Error(err, "checking cluster needUpdate", "provider ", provider)
138+
if !c.needsUpdate(oldCluster, cluster) {
139+
return
140+
}
141+
} else {
142+
if !c.needsUpdate(oldCluster, cluster) && !provider.NeedUpdate(oldCluster, cluster) {
143+
return
144+
}
136145
}
146+
137147
c.log.Info("Updating cluster", "clusterName", cluster.Name)
138148
c.enqueue(cluster)
139149
}

pkg/platform/controller/machine/machine_controller.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,19 @@ func (c *Controller) addMachine(obj interface{}) {
109109
func (c *Controller) updateMachine(old, obj interface{}) {
110110
oldMachine := old.(*platformv1.Machine)
111111
machine := obj.(*platformv1.Machine)
112-
if !c.needsUpdate(oldMachine, machine) {
113-
return
112+
113+
provider, err := machineprovider.GetProvider(machine.Spec.Type)
114+
if err != nil || provider == nil {
115+
c.log.Error(err, "checking machine needUpdate", "provider ", provider)
116+
if !c.needsUpdate(oldMachine, machine) {
117+
return
118+
}
119+
} else {
120+
if !c.needsUpdate(oldMachine, machine) && !provider.NeedUpdate(oldMachine, machine) {
121+
return
122+
}
114123
}
124+
115125
c.log.Info("Updating machine", "machine", machine.Name)
116126
c.enqueue(machine)
117127
}

pkg/platform/provider/cluster/interface.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ type CredentialProvider interface {
9090
type Provider interface {
9191
Name() string
9292

93+
// NeedUpdate could be implemented by user to judge whether cluster need update or not.
94+
NeedUpdate(old, new *platformv1.Cluster) bool
95+
9396
APIProvider
9497
ControllerProvider
9598
CredentialProvider
@@ -339,6 +342,10 @@ func (p *DelegateProvider) OnFilter(ctx context.Context, cluster *platformv1.Clu
339342
return true
340343
}
341344

345+
func (p *DelegateProvider) NeedUpdate(old, new *platformv1.Cluster) bool {
346+
return false
347+
}
348+
342349
func (p *DelegateProvider) getNextConditionType(conditionType string, handlers []Handler) string {
343350
var (
344351
i int

pkg/platform/provider/machine/interface.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ type Provider interface {
5959
OnCreate(ctx context.Context, machine *platformv1.Machine, cluster *typesv1.Cluster) error
6060
OnUpdate(ctx context.Context, machine *platformv1.Machine, cluster *typesv1.Cluster) error
6161
OnDelete(ctx context.Context, machine *platformv1.Machine, cluster *typesv1.Cluster) error
62+
63+
// NeedUpdate could be implemented by user to judge whether machine need update or not.
64+
NeedUpdate(old, new *platformv1.Machine) bool
6265
}
6366

6467
var _ Provider = &DelegateProvider{}
@@ -213,6 +216,10 @@ func (p *DelegateProvider) OnDelete(ctx context.Context, machine *platformv1.Mac
213216
return nil
214217
}
215218

219+
func (p *DelegateProvider) NeedUpdate(old, new *platformv1.Machine) bool {
220+
return false
221+
}
222+
216223
func (p *DelegateProvider) getNextConditionType(conditionType string) string {
217224
var (
218225
i int

0 commit comments

Comments
 (0)