Browse Source

Expanded multiple server support

master
Christopher Ramey 4 years ago
committed by Christopher Ramey
parent
commit
67d1f2e4bb
  1. 12
      alias.go
  2. 35
      config.go
  3. 28
      elastic.go
  4. 14
      index.go

12
alias.go

@ -21,11 +21,12 @@ func handleAliasCommand() {
listcmd := flag.NewFlagSet("alias list", flag.ExitOnError)
listcmd.SetOutput(os.Stdout)
cfgpath := listcmd.String("config", "", "path to configuration")
server := listcmd.String("server", "", "server name to use")
aname := listcmd.String("name", "", "filter list to named alias")
listcmd.Parse(os.Args[3:])
cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.GetServer(""))
es := cfg.GetClient(*server)
aliases, err := es.CatAliases().Do(context.Background())
if err != nil {
@ -47,6 +48,7 @@ func handleAliasCommand() {
createcmd := flag.NewFlagSet("alias create", flag.ExitOnError)
createcmd.SetOutput(os.Stdout)
cfgpath := createcmd.String("config", "", "path to configuration")
server := createcmd.String("server", "", "server name to use")
aname := createcmd.String("name", "", "(required) name of alias")
iname := createcmd.String("index", "", "(required) name of index")
createcmd.Parse(os.Args[3:])
@ -64,7 +66,7 @@ func handleAliasCommand() {
}
cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.GetServer(""))
es := cfg.GetClient(*server)
_, err := es.Alias().Add(*iname, *aname).Do(context.Background())
if err != nil {
@ -76,6 +78,7 @@ func handleAliasCommand() {
deletecmd := flag.NewFlagSet("alias delete", flag.ExitOnError)
deletecmd.SetOutput(os.Stdout)
cfgpath := deletecmd.String("config", "", "path to configuration")
server := deletecmd.String("server", "", "server name to use")
aname := deletecmd.String("name", "", "(required) name of alias")
iname := deletecmd.String("index", "", "(required) name of index")
deletecmd.Parse(os.Args[3:])
@ -93,7 +96,7 @@ func handleAliasCommand() {
}
cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.GetServer(""))
es := cfg.GetClient(*server)
_, err := es.Alias().Remove(*iname, *aname).Do(context.Background())
if err != nil {
@ -105,6 +108,7 @@ func handleAliasCommand() {
replacecmd := flag.NewFlagSet("alias replace", flag.ExitOnError)
replacecmd.SetOutput(os.Stdout)
cfgpath := replacecmd.String("config", "", "path to configuration")
server := replacecmd.String("server", "", "server name to use")
aname := replacecmd.String("name", "", "(required) name of alias")
oiname := replacecmd.String("oldindex", "", "name of the old index")
niname := replacecmd.String("newindex", "",
@ -125,7 +129,7 @@ func handleAliasCommand() {
}
cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.GetServer(""))
es := cfg.GetClient(*server)
oinames := make([]string, 0, 10)
if *oiname != "" {

35
config.go

@ -3,6 +3,7 @@ package main
import (
"fmt"
toml "github.com/pelletier/go-toml"
elastic "github.com/olivere/elastic/v7"
"io/ioutil"
"os"
)
@ -22,17 +23,43 @@ type ElasticServer struct {
Pass string
}
func (ec *ElasticConfig) GetServer(name string) *ElasticServer {
func (ec *ElasticConfig) GetClient(name string) *elastic.Client {
if name == "" {
if ec.Elastic.DefaultServer == "" {
fmt.Fprintf(os.Stderr, "no server name provided\n")
os.Exit(1)
}
name = ec.Elastic.DefaultServer
}
if serv, ok := ec.Servers[name]; ok {
return &serv
if _, ok := ec.Servers[name]; !ok {
fmt.Fprintf(os.Stderr, "no configuration found for server \"%s\"\n", name)
os.Exit(1)
}
return nil
server := ec.Servers[name]
opts := []elastic.ClientOptionFunc{
elastic.SetURL(server.URL),
elastic.SetSniff(false),
elastic.SetGzip(true),
}
if server.User != "" && server.Pass != "" {
opts = append(opts, elastic.SetBasicAuth(
server.User, server.Pass,
))
}
es, err := elastic.NewClient(opts...)
if err != nil {
fmt.Fprintf(os.Stderr, "elastic connection error: %s\n", err.Error())
os.Exit(1)
}
return es
}
func LoadConfig(cfgpath string) *ElasticConfig {
cfg := ElasticConfig{}
if cfgpath != "" {

28
elastic.go

@ -1,28 +0,0 @@
package main
import (
"fmt"
elastic "github.com/olivere/elastic/v7"
"os"
)
func ClientFromConfig(server *ElasticServer) *elastic.Client {
opts := []elastic.ClientOptionFunc{
elastic.SetURL(server.URL),
elastic.SetSniff(false),
elastic.SetGzip(true),
}
if server.User != "" && server.Pass != "" {
opts = append(opts, elastic.SetBasicAuth(
server.User, server.Pass,
))
}
es, err := elastic.NewClient(opts...)
if err != nil {
fmt.Fprintf(os.Stderr, "Elastic connection error: %s\n", err.Error())
os.Exit(1)
}
return es
}

14
index.go

@ -22,10 +22,11 @@ func handleIndexCommand() {
listcmd := flag.NewFlagSet("index list", flag.ExitOnError)
listcmd.SetOutput(os.Stdout)
cfgpath := listcmd.String("config", "", "path to configuration")
server := listcmd.String("server", "", "server name to use")
listcmd.Parse(os.Args[3:])
cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.GetServer(""))
es := cfg.GetClient(*server)
indexes, err := es.IndexNames()
if err != nil {
@ -41,6 +42,7 @@ func handleIndexCommand() {
deletecmd := flag.NewFlagSet("index delete", flag.ExitOnError)
deletecmd.SetOutput(os.Stdout)
cfgpath := deletecmd.String("config", "", "path to configuration")
server := deletecmd.String("server", "", "server name to use")
iname := deletecmd.String("name", "", "(required) index name to delete")
deletecmd.Parse(os.Args[3:])
@ -51,7 +53,7 @@ func handleIndexCommand() {
}
cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.GetServer(""))
es := cfg.GetClient(*server)
_, err := es.DeleteIndex(*iname).Do(context.Background())
if err != nil {
@ -63,6 +65,7 @@ func handleIndexCommand() {
createcmd := flag.NewFlagSet("index create", flag.ExitOnError)
createcmd.SetOutput(os.Stdout)
cfgpath := createcmd.String("config", "", "path to configuration")
server := createcmd.String("server", "", "server name to use")
iname := createcmd.String("name", "", "(required) index name to create")
bodystr := createcmd.String("body", "",
"json string to use as body options during create")
@ -93,7 +96,8 @@ func handleIndexCommand() {
}
cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.GetServer(""))
es := cfg.GetClient(*server)
ics := es.CreateIndex(*iname)
if body != "" {
ics.Body(body)
@ -108,6 +112,7 @@ func handleIndexCommand() {
refreshcmd := flag.NewFlagSet("index refresh", flag.ExitOnError)
refreshcmd.SetOutput(os.Stdout)
cfgpath := refreshcmd.String("config", "", "path to configuration")
server := refreshcmd.String("server", "", "server name to use")
iname := refreshcmd.String("name", "", "(required) index name to refresh")
refreshcmd.Parse(os.Args[3:])
@ -118,7 +123,8 @@ func handleIndexCommand() {
}
cfg := LoadConfig(*cfgpath)
es := ClientFromConfig(cfg.GetServer(""))
es := cfg.GetClient(*server)
_, err := es.Refresh(*iname).Do(context.Background())
if err != nil {
fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error())

Loading…
Cancel
Save