github.com/cilium/cilium@v1.16.2/clustermesh-apiserver/kvstoremesh-dbg/root.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package dbg 5 6 import ( 7 "context" 8 "fmt" 9 "os" 10 "os/signal" 11 12 "github.com/go-openapi/strfmt" 13 "github.com/spf13/cobra" 14 netutil "k8s.io/apimachinery/pkg/util/net" 15 16 clientapi "github.com/cilium/cilium/api/v1/kvstoremesh/client" 17 "github.com/cilium/cilium/clustermesh-apiserver/kvstoremesh" 18 ) 19 20 var ( 21 client *clientapi.KvstoreMesh 22 ) 23 24 var RootCmd = func() *cobra.Command { 25 var host string 26 27 cmd := &cobra.Command{ 28 Use: "kvstoremesh-dbg", 29 Short: "CLI for interacting with KVStoreMesh", 30 31 PersistentPreRun: func(cmd *cobra.Command, args []string) { 32 ctx, _ := signal.NotifyContext(context.Background(), os.Interrupt) 33 cmd.SetContext(ctx) 34 35 cfg := clientapi.DefaultTransportConfig().WithHost(host) 36 client = clientapi.NewHTTPClientWithConfig(strfmt.Default, cfg) 37 }, 38 } 39 40 flags := cmd.PersistentFlags() 41 flags.StringVarP(&host, "host", "H", kvstoremesh.DefaultAPIServeAddr, "URI to server-side API") 42 43 return cmd 44 }() 45 46 func clientErrorHint(err error) error { 47 if netutil.IsConnectionRefused(err) { 48 return fmt.Errorf("is KVStoreMesh running and serving the API on %s?", kvstoremesh.DefaultAPIServeAddr) 49 } 50 return err 51 }