summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-04-14 10:16:56 +0200
committerMartin Polden <mpolden@mpolden.no>2023-04-14 12:24:51 +0200
commit86c3219f28f89a0c5c4c15415b65f4d5a81b8774 (patch)
tree9ef7b3fb93522099ef27232f993654f93aa59558
parent5763fd73d8ad34c4ecd1b75772f136373cdaa733 (diff)
Wire client options
-rw-r--r--client/go/internal/cli/cmd/feed.go39
-rw-r--r--client/go/internal/vespa/document/http.go6
2 files changed, 28 insertions, 17 deletions
diff --git a/client/go/internal/cli/cmd/feed.go b/client/go/internal/cli/cmd/feed.go
index 895a22d2be5..19bf84e492a 100644
--- a/client/go/internal/cli/cmd/feed.go
+++ b/client/go/internal/cli/cmd/feed.go
@@ -14,16 +14,24 @@ import (
"github.com/vespa-engine/vespa/client/go/internal/vespa/document"
)
-func addFeedFlags(cmd *cobra.Command, verbose *bool, connections *int) {
- cmd.PersistentFlags().IntVarP(connections, "connections", "N", 8, "The number of connections to use")
- cmd.PersistentFlags().BoolVarP(verbose, "verbose", "v", false, "Verbose mode. Print errors as they happen")
+func addFeedFlags(cmd *cobra.Command, options *feedOptions) {
+ cmd.PersistentFlags().IntVar(&options.connections, "connections", 8, "The number of connections to use")
+ cmd.PersistentFlags().StringVar(&options.route, "route", "", "Target Vespa route for feed operations")
+ cmd.PersistentFlags().IntVar(&options.traceLevel, "trace", 0, "The trace level of network traffic. 0 to disable")
+ cmd.PersistentFlags().IntVar(&options.timeoutSecs, "timeout", 0, "Feed operation timeout in seconds. 0 to disable")
+ cmd.PersistentFlags().BoolVar(&options.verbose, "verbose", false, "Verbose mode. Print errors as they happen")
+}
+
+type feedOptions struct {
+ connections int
+ route string
+ verbose bool
+ traceLevel int
+ timeoutSecs int
}
func newFeedCmd(cli *CLI) *cobra.Command {
- var (
- verbose bool
- connections int
- )
+ var options feedOptions
cmd := &cobra.Command{
Use: "feed FILE",
Short: "Feed documents to a Vespa cluster",
@@ -56,10 +64,10 @@ $ cat documents.jsonl | vespa feed -
defer f.Close()
r = f
}
- return feed(r, cli, verbose, connections)
+ return feed(r, cli, options)
},
}
- addFeedFlags(cmd, &verbose, &connections)
+ addFeedFlags(cmd, &options)
return cmd
}
@@ -73,20 +81,23 @@ func createServiceClients(service *vespa.Service, n int) []util.HTTPClient {
return clients
}
-func feed(r io.Reader, cli *CLI, verbose bool, connections int) error {
+func feed(r io.Reader, cli *CLI, options feedOptions) error {
service, err := documentService(cli)
if err != nil {
return err
}
- clients := createServiceClients(service, connections)
+ clients := createServiceClients(service, options.connections)
client := document.NewClient(document.ClientOptions{
- BaseURL: service.BaseURL,
+ Timeout: time.Duration(options.timeoutSecs) * time.Second,
+ Route: options.route,
+ TraceLevel: options.traceLevel,
+ BaseURL: service.BaseURL,
}, clients)
- throttler := document.NewThrottler(connections)
+ throttler := document.NewThrottler(options.connections)
// TODO(mpolden): Make doom duration configurable
circuitBreaker := document.NewCircuitBreaker(10*time.Second, 0)
errWriter := io.Discard
- if verbose {
+ if options.verbose {
errWriter = cli.Stderr
}
dispatcher := document.NewDispatcher(client, throttler, circuitBreaker, errWriter)
diff --git a/client/go/internal/vespa/document/http.go b/client/go/internal/vespa/document/http.go
index ae823686a76..d602821d603 100644
--- a/client/go/internal/vespa/document/http.go
+++ b/client/go/internal/vespa/document/http.go
@@ -29,7 +29,7 @@ type ClientOptions struct {
BaseURL string
Timeout time.Duration
Route string
- TraceLevel *int
+ TraceLevel int
}
type countingHTTPClient struct {
@@ -78,8 +78,8 @@ func (c *Client) queryParams() url.Values {
if c.options.Route != "" {
params.Set("route", c.options.Route)
}
- if c.options.TraceLevel != nil {
- params.Set("tracelevel", strconv.Itoa(*c.options.TraceLevel))
+ if c.options.TraceLevel > 0 {
+ params.Set("tracelevel", strconv.Itoa(c.options.TraceLevel))
}
return params
}