Browse Source

Added support for multiple servers per configuration

master
Christopher Ramey 4 years ago
committed by Christopher Ramey
parent
commit
37de744d43
  1. 8
      alias.go
  2. 26
      config.go
  3. 8
      elastic.go
  4. 10
      index.go
  5. 2
      main.go

8
alias.go

@ -25,7 +25,7 @@ func handleAliasCommand() {
listcmd.Parse(os.Args[3:]) listcmd.Parse(os.Args[3:])
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.Elastic)
es := ClientFromConfig(cfg.GetServer(""))
aliases, err := es.CatAliases().Do(context.Background()) aliases, err := es.CatAliases().Do(context.Background())
if err != nil { if err != nil {
@ -64,7 +64,7 @@ func handleAliasCommand() {
} }
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.Elastic)
es := ClientFromConfig(cfg.GetServer(""))
_, err := es.Alias().Add(*iname, *aname).Do(context.Background()) _, err := es.Alias().Add(*iname, *aname).Do(context.Background())
if err != nil { if err != nil {
@ -93,7 +93,7 @@ func handleAliasCommand() {
} }
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.Elastic)
es := ClientFromConfig(cfg.GetServer(""))
_, err := es.Alias().Remove(*iname, *aname).Do(context.Background()) _, err := es.Alias().Remove(*iname, *aname).Do(context.Background())
if err != nil { if err != nil {
@ -125,7 +125,7 @@ func handleAliasCommand() {
} }
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.Elastic)
es := ClientFromConfig(cfg.GetServer(""))
oinames := make([]string, 0, 10) oinames := make([]string, 0, 10)
if *oiname != "" { if *oiname != "" {

26
config.go

@ -7,18 +7,34 @@ import (
"os" "os"
) )
type ESConfiguration struct {
Elastic ElasticConfiguration
type ElasticConfig struct {
Elastic ElasticSettings
Servers map[string]ElasticServer
} }
type ElasticConfiguration struct {
type ElasticSettings struct {
DefaultServer string
}
type ElasticServer struct {
URL string URL string
User string User string
Pass string Pass string
} }
func LoadConfig(cfgpath string) *ESConfiguration {
cfg := ESConfiguration{}
func (ec *ElasticConfig) GetServer(name string) *ElasticServer {
if name == "" {
name = ec.Elastic.DefaultServer
}
if serv, ok := ec.Servers[name]; ok {
return &serv
}
return nil
}
func LoadConfig(cfgpath string) *ElasticConfig {
cfg := ElasticConfig{}
if cfgpath != "" { if cfgpath != "" {
cfgfile, err := ioutil.ReadFile(cfgpath) cfgfile, err := ioutil.ReadFile(cfgpath)
if err != nil { if err != nil {

8
elastic.go

@ -6,15 +6,15 @@ import (
"os" "os"
) )
func ClientFromConfig(cfg ElasticConfiguration) *elastic.Client {
func ClientFromConfig(server *ElasticServer) *elastic.Client {
opts := []elastic.ClientOptionFunc{ opts := []elastic.ClientOptionFunc{
elastic.SetURL(cfg.URL),
elastic.SetURL(server.URL),
elastic.SetSniff(false), elastic.SetSniff(false),
elastic.SetGzip(true), elastic.SetGzip(true),
} }
if cfg.User != "" && cfg.Pass != "" {
if server.User != "" && server.Pass != "" {
opts = append(opts, elastic.SetBasicAuth( opts = append(opts, elastic.SetBasicAuth(
cfg.User, cfg.Pass,
server.User, server.Pass,
)) ))
} }

10
index.go

@ -4,8 +4,8 @@ import (
"context" "context"
"flag" "flag"
"fmt" "fmt"
"os"
"io/ioutil" "io/ioutil"
"os"
"strings" "strings"
) )
@ -25,7 +25,7 @@ func handleIndexCommand() {
listcmd.Parse(os.Args[3:]) listcmd.Parse(os.Args[3:])
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.Elastic)
es := ClientFromConfig(cfg.GetServer(""))
indexes, err := es.IndexNames() indexes, err := es.IndexNames()
if err != nil { if err != nil {
@ -51,7 +51,7 @@ func handleIndexCommand() {
} }
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.Elastic)
es := ClientFromConfig(cfg.GetServer(""))
_, err := es.DeleteIndex(*iname).Do(context.Background()) _, err := es.DeleteIndex(*iname).Do(context.Background())
if err != nil { if err != nil {
@ -93,7 +93,7 @@ func handleIndexCommand() {
} }
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.Elastic)
es := ClientFromConfig(cfg.GetServer(""))
ics := es.CreateIndex(*iname) ics := es.CreateIndex(*iname)
if body != "" { if body != "" {
ics.Body(body) ics.Body(body)
@ -118,7 +118,7 @@ func handleIndexCommand() {
} }
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.Elastic)
es := ClientFromConfig(cfg.GetServer(""))
_, err := es.Refresh(*iname).Do(context.Background()) _, err := es.Refresh(*iname).Do(context.Background())
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error()) fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error())

2
main.go

@ -4,8 +4,6 @@ import (
"fmt" "fmt"
"os" "os"
"strings" "strings"
// elastic "github.com/olivere/elastic/v7"
// toml "github.com/pelletier/go-toml"
) )
func main() { func main() {

Loading…
Cancel
Save