cilium
70 строк · 1.7 Кб
1// SPDX-License-Identifier: Apache-2.0
2// Copyright Authors of Cilium
3
4package cmd
5
6import (
7"os"
8"text/tabwriter"
9
10"github.com/spf13/cobra"
11
12"github.com/cilium/cilium/api/v1/health/models"
13"github.com/cilium/cilium/pkg/command"
14clientPkg "github.com/cilium/cilium/pkg/health/client"
15)
16
17var (
18probe bool
19succinct bool
20verbose bool
21)
22
23// statusGetCmd represents the status command
24var statusGetCmd = &cobra.Command{
25Use: "status",
26Aliases: []string{"connectivity"},
27Short: "Display cilium connectivity to other nodes",
28Run: func(cmd *cobra.Command, args []string) {
29var sr *models.HealthStatusResponse
30
31if client == nil {
32Fatalf("Invalid combination of arguments")
33}
34
35if probe {
36result, err := client.Connectivity.PutStatusProbe(nil)
37if err != nil {
38Fatalf("Cannot get status/probe: %s\n", err)
39}
40sr = result.Payload
41} else {
42result, err := client.Connectivity.GetStatus(nil)
43if err != nil {
44Fatalf("Cannot get status: %s\n", err)
45}
46sr = result.Payload
47}
48
49if command.OutputOption() {
50if err := command.PrintOutput(sr); err != nil {
51os.Exit(1)
52}
53} else {
54w := tabwriter.NewWriter(os.Stdout, 2, 0, 3, ' ', 0)
55clientPkg.FormatHealthStatusResponse(w, sr, true, succinct, verbose, 0)
56w.Flush()
57}
58},
59}
60
61func init() {
62rootCmd.AddCommand(statusGetCmd)
63statusGetCmd.Flags().BoolVarP(&probe, "probe", "", false,
64"Synchronously probe connectivity status")
65statusGetCmd.Flags().BoolVarP(&succinct, "succinct", "", false,
66"Print the result succinctly (one node per line)")
67statusGetCmd.Flags().BoolVarP(&verbose, "verbose", "", false,
68"Print more information in results")
69command.AddOutputOption(statusGetCmd)
70}
71