mirror of
https://codeberg.org/scip/esctl.git
synced 2026-08-24 11:24:17 +02:00
Additions and enhancements (#14)
- add interactive API repl - enhance cluster status output (use -v) - add more ccr commands - refactoring
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user