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  }