check at bootstrap which cluster is reachable, fix current cluster

This commit is contained in:
2026-05-06 13:02:28 +02:00
parent af75bfa192
commit 8109481e23
3 changed files with 37 additions and 5 deletions

View File

@@ -3,3 +3,5 @@
- Fix index names custom completion - Fix index names custom completion
- add cluster default <name> which would add a flag to the config, so that no -C is needed subsequently - add cluster default <name> which would add a flag to the config, so that no -C is needed subsequently
- add `cluster stats` from `/_cluster/stats` like mem, procs, open files, num indices, shards etc
- add version[s] to `cluster status`

View File

@@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package cfg package cfg
import ( import (
"context"
"crypto/tls" "crypto/tls"
"errors" "errors"
"fmt" "fmt"
@@ -76,6 +77,8 @@ func (conf *Config) Init() error {
} }
} }
conf.SetupES()
if conf.CurrentCluster != "" { if conf.CurrentCluster != "" {
current, exists := conf.Clusters[conf.CurrentCluster] current, exists := conf.Clusters[conf.CurrentCluster]
if !exists { if !exists {
@@ -83,14 +86,29 @@ func (conf *Config) Init() error {
} else { } else {
conf.DefaultCluster = current conf.DefaultCluster = current
} }
} else {
if len(conf.Clusters) == 1 {
for _, cluster := range conf.Clusters {
conf.DefaultCluster = cluster
}
} else {
for _, cluster := range conf.Clusters {
_, err := cluster.ES.Cluster.Health().
Header("content-type", "application/json").
Header("accept", "application/json").
Do(context.Background())
if err == nil {
conf.DefaultCluster = cluster
}
}
}
} }
if conf.Debug { if conf.Debug {
repr.Println(conf) repr.Println(conf)
} }
conf.SetupES()
return nil return nil
} }

View File

@@ -75,12 +75,24 @@ func ClusterCompare(conf *cfg.Config, leader, follower string) error {
} }
func ClusterList(conf *cfg.Config) error { func ClusterList(conf *cfg.Config) error {
table := NewTable(2, len(conf.Clusters)) table := NewTable(3, len(conf.Clusters))
table.Addheaders("cluster", "uri")
table.Addheaders("cluster", "uri", "default")
idx := 0 idx := 0
for name, cluster := range conf.Clusters { for name, cluster := range conf.Clusters {
table.entries[idx] = []string{name, cluster.Uri} current := name == "default" || name == conf.CurrentCluster
_, err := cluster.ES.Cluster.Health().
Header("content-type", "application/json").
Header("accept", "application/json").
Do(context.Background())
if err == nil {
name = Colorize("green", name)
}
table.entries[idx] = []string{name, cluster.Uri, fmt.Sprintf("%t", current)}
idx++ idx++
} }