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 754680848..9480decc7 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 = &dbserverCount + } + 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)