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

26
config.go

@ -7,18 +7,34 @@ import (
"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
User 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 != "" {
cfgfile, err := ioutil.ReadFile(cfgpath)
if err != nil {

8
elastic.go

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

10
index.go

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

2
main.go

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

Loading…
Cancel
Save