From 806e5c2d218534b9d8fc1c485afeefa8715aa27d Mon Sep 17 00:00:00 2001 From: MegaByte875 Date: Tue, 22 Aug 2023 18:10:43 +0800 Subject: [PATCH] update status while scaling --- .../templates/controller-manager-rbac.yaml | 12 ++++++++++++ pkg/controller/component/storaged_cluster.go | 1 + pkg/controller/component/storaged_scaler.go | 17 +++++++++++++---- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/charts/nebula-operator/templates/controller-manager-rbac.yaml b/charts/nebula-operator/templates/controller-manager-rbac.yaml index b83c4ae1..430a9043 100644 --- a/charts/nebula-operator/templates/controller-manager-rbac.yaml +++ b/charts/nebula-operator/templates/controller-manager-rbac.yaml @@ -62,6 +62,18 @@ metadata: labels: {{- include "controller-manager.labels" . | nindent 4 }} rules: + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch - apiGroups: - "" resources: diff --git a/pkg/controller/component/storaged_cluster.go b/pkg/controller/component/storaged_cluster.go index 8fdd52f6..2580c2a3 100644 --- a/pkg/controller/component/storaged_cluster.go +++ b/pkg/controller/component/storaged_cluster.go @@ -138,6 +138,7 @@ func (c *storagedCluster) syncStoragedWorkload(nc *v1alpha1.NebulaCluster) error if *newReplicas > *oldReplicas { if err := c.addStorageHosts(nc, *oldReplicas, *newReplicas); err != nil { + klog.Errorf("add storage hosts failed: %v", err) return err } klog.Infof("storaged cluster [%s/%s] add hosts succeed", namespace, componentName) diff --git a/pkg/controller/component/storaged_scaler.go b/pkg/controller/component/storaged_scaler.go index 432d5a96..b26c4847 100644 --- a/pkg/controller/component/storaged_scaler.go +++ b/pkg/controller/component/storaged_scaler.go @@ -108,6 +108,7 @@ func (ss *storageScaler) ScaleOut(nc *v1alpha1.NebulaCluster) error { continue } if err := ss.balanceSpace(metaClient, nc, *space.Id.SpaceID); err != nil { + klog.Errorf("balance space %d failed: %v", *space.Id.SpaceID, err) return err } } @@ -150,7 +151,7 @@ func (ss *storageScaler) ScaleIn(nc *v1alpha1.NebulaCluster, oldReplicas, newRep } if oldReplicas-newReplicas > 0 { - scaleSets := sets.NewString() + scaleSets := sets.New[string]() hosts := make([]*nebulago.HostAddr, 0, oldReplicas-newReplicas) port := nc.StoragedComponent().GetPort(v1alpha1.StoragedPortNameThrift) for i := oldReplicas - 1; i >= newReplicas; i-- { @@ -167,17 +168,19 @@ func (ss *storageScaler) ScaleIn(nc *v1alpha1.NebulaCluster, oldReplicas, newRep if err != nil { return err } - removed := filterRemovedHosts(sets.NewString(leaderSets...), scaleSets, hosts) + removed := filterRemovedHosts(sets.New[string](leaderSets...), scaleSets, hosts) if len(removed) == 0 { continue } if err := ss.removeHost(metaClient, nc, *space.Id.SpaceID, hosts); err != nil { + klog.Errorf("remove hosts %v failed: %v", hosts, err) return err } klog.Infof("cluster [%s/%s] remove hosts from space %s successfully", ns, ncName, space.Name) } } if err := metaClient.DropHosts(hosts); err != nil { + klog.Errorf("drop hosts %v failed: %v", hosts, err) return err } klog.Infof("cluster [%s/%s] drop hosts successfully", ns, ncName) @@ -245,6 +248,9 @@ func (ss *storageScaler) balanceSpace(mc nebula.MetaInterface, nc *v1alpha1.Nebu SpaceID: spaceID, JobID: jobID, } + if err := ss.clientSet.NebulaCluster().UpdateNebulaClusterStatus(nc.DeepCopy()); err != nil { + return err + } } return err } @@ -267,14 +273,17 @@ func (ss *storageScaler) removeHost( SpaceID: spaceID, JobID: jobID, } + if err := ss.clientSet.NebulaCluster().UpdateNebulaClusterStatus(nc.DeepCopy()); err != nil { + return err + } } return err } return nil } -func filterRemovedHosts(leaderSets, scaleSets sets.String, scaledHosts []*nebulago.HostAddr) []*nebulago.HostAddr { - result := sets.NewString() +func filterRemovedHosts(leaderSets, scaleSets sets.Set[string], scaledHosts []*nebulago.HostAddr) []*nebulago.HostAddr { + result := sets.New[string]() for key := range scaleSets { if leaderSets.Has(key) { result.Insert(key)