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
- 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
import (
"context"
"crypto/tls"
"errors"
"fmt"
@@ -76,6 +77,8 @@ func (conf *Config) Init() error {
}
}
conf.SetupES()
if conf.CurrentCluster != "" {
current, exists := conf.Clusters[conf.CurrentCluster]
if !exists {
@@ -83,14 +86,29 @@ func (conf *Config) Init() error {
} else {
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 {
repr.Println(conf)
}
conf.SetupES()
return nil
}

View File

@@ -75,12 +75,24 @@ func ClusterCompare(conf *cfg.Config, leader, follower string) error {
}
func ClusterList(conf *cfg.Config) error {
table := NewTable(2, len(conf.Clusters))
table.Addheaders("cluster", "uri")
table := NewTable(3, len(conf.Clusters))
table.Addheaders("cluster", "uri", "default")
idx := 0
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++
}