Additions and enhancements (#14)

- add interactive API repl
- enhance cluster status output (use -v)
- add more ccr commands
- refactoring
This commit is contained in:
T. von Dein
2026-05-13 13:51:09 +02:00
parent dd619ab815
commit 15e0f9dc90
16 changed files with 557 additions and 13 deletions

View File

@@ -85,3 +85,50 @@ func CcrStatus(conf *cfg.Config, leader, follower string) error {
return nil
}
func CcrRemoteInfo(conf *cfg.Config, index string) error {
res, err := conf.DefaultCluster.ES.Cluster.RemoteInfo().
Header("content-type", "application/json").
Header("accept", "application/json").
Do(context.Background())
if err != nil {
return fmt.Errorf("failed to retrieve follower info: %s", err)
}
slog.Debug("ccr remote info", "info", res)
remote := ""
var info *types.ClusterRemoteProxyInfo
for name, data := range res {
remote = name
info = data.(*types.ClusterRemoteProxyInfo)
break
}
if remote == "" {
return fmt.Errorf("cluster doesn't follow any other: %s", err)
}
mode := "follower"
if checkClusterIsLeader(conf, conf.CurrentCluster) {
mode = "leader"
}
table := NewTable(2, 5)
table.Addheaders("field", "value")
table.entries = [][]string{
{"Remote Cluster", remote},
{"CCR Mode", mode},
{"Connected", fmt.Sprintf("%t", info.Connected)},
{"Num Proxy Sockets Connected", fmt.Sprintf("%d", info.NumProxySocketsConnected)},
{"Proxy Address", info.ProxyAddress},
}
if err := table.PrintMarkdown(); err != nil {
return err
}
return nil
}