From 9ec362c824ab948bf2a3c52acda293808b3dc230 Mon Sep 17 00:00:00 2001 From: lamai93 Date: Thu, 22 Aug 2019 11:06:38 +0200 Subject: [PATCH 1/2] Do not display scaling buttons if scaling is not possible. --- pkg/deployment/cluster_scaling_integration.go | 18 +++++++++++++++++- pkg/util/arangod/cluster.go | 6 +++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/pkg/deployment/cluster_scaling_integration.go b/pkg/deployment/cluster_scaling_integration.go index 754680848..4ba30b991 100644 --- a/pkg/deployment/cluster_scaling_integration.go +++ b/pkg/deployment/cluster_scaling_integration.go @@ -204,16 +204,32 @@ func (ci *clusterScalingIntegration) updateClusterServerCount(ctx context.Contex if err != nil { return false, maskAny(err) } + + var coordinatorCountPtr *int + var dbserverCountPtr *int + coordinatorCount := spec.Coordinators.GetCount() dbserverCount := spec.DBServers.GetCount() + if spec.Coordinators.GetMaxCount() == spec.Coordinators.GetMinCount() { + coordinatorCountPtr = nil + } else { + coordinatorCountPtr = &coordinatorCount + } + + if spec.DBServers.GetMaxCount() == spec.DBServers.GetMinCount() { + dbserverCountPtr = nil + } else { + dbserverCountPtr = &coordinatorCount + } + ci.lastNumberOfServers.mutex.Lock() lastNumberOfServers := ci.lastNumberOfServers.NumberOfServers ci.lastNumberOfServers.mutex.Unlock() // This is to prevent unneseccary updates that may override some values written by the WebUI (in the case of a update loop) if coordinatorCount != lastNumberOfServers.GetCoordinators() || dbserverCount != lastNumberOfServers.GetDBServers() { - if err := arangod.SetNumberOfServers(ctx, c.Connection(), coordinatorCount, dbserverCount); err != nil { + if err := arangod.SetNumberOfServers(ctx, c.Connection(), coordinatorCountPtr, dbserverCountPtr); err != nil { if expectSuccess { log.Debug().Err(err).Msg("Failed to set number of servers") } diff --git a/pkg/util/arangod/cluster.go b/pkg/util/arangod/cluster.go index 4874e3cdc..b4ebbcb9c 100644 --- a/pkg/util/arangod/cluster.go +++ b/pkg/util/arangod/cluster.go @@ -71,14 +71,14 @@ func GetNumberOfServers(ctx context.Context, conn driver.Connection) (NumberOfSe } // SetNumberOfServers updates the number of servers the cluster has. -func SetNumberOfServers(ctx context.Context, conn driver.Connection, noCoordinators, noDBServers int) error { +func SetNumberOfServers(ctx context.Context, conn driver.Connection, noCoordinators, noDBServers *int) error { req, err := conn.NewRequest("PUT", "_admin/cluster/numberOfServers") if err != nil { return maskAny(err) } input := NumberOfServers{ - Coordinators: &noCoordinators, - DBServers: &noDBServers, + Coordinators: noCoordinators, + DBServers: noDBServers, } if _, err := req.SetBody(input); err != nil { return maskAny(err) From 733df1465ed27c13e2e0244a899d96d9d9cc4580 Mon Sep 17 00:00:00 2001 From: lamai93 Date: Tue, 1 Oct 2019 14:37:55 +0200 Subject: [PATCH 2/2] Small fix. --- CHANGELOG.md | 2 ++ pkg/deployment/cluster_scaling_integration.go | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa394c335..de683a754 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +- Disable scaling buttons if scaling is not possible. + ## [0.3.16](https://github.com/arangodb/kube-arangodb/tree/0.3.16) (2019-09-25) - Revised helm charts. - Use separate service account for operator. diff --git a/pkg/deployment/cluster_scaling_integration.go b/pkg/deployment/cluster_scaling_integration.go index 4ba30b991..9480decc7 100644 --- a/pkg/deployment/cluster_scaling_integration.go +++ b/pkg/deployment/cluster_scaling_integration.go @@ -220,7 +220,7 @@ func (ci *clusterScalingIntegration) updateClusterServerCount(ctx context.Contex if spec.DBServers.GetMaxCount() == spec.DBServers.GetMinCount() { dbserverCountPtr = nil } else { - dbserverCountPtr = &coordinatorCount + dbserverCountPtr = &dbserverCount } ci.lastNumberOfServers.mutex.Lock()