Update .gitreview file
[src/xds/xds-cli.git] / cmd-misc.go
index 1a5d6d4..5470dff 100644 (file)
@@ -1,9 +1,27 @@
+/*
+ * Copyright (C) 2017-2018 "IoT.bzh"
+ * Author Sebastien Douheret <sebastien@iot.bzh>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
 package main
 
 import (
        "fmt"
 
-       "github.com/iotbzh/xds-agent/lib/xaapiv1"
+       "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent.git/lib/xaapiv1"
        "github.com/urfave/cli"
 )
 
@@ -25,6 +43,18 @@ func initCmdMisc(cmdDef *[]cli.Command) {
                                        },
                                },
                        },
+                       {
+                               Name:    "status",
+                               Aliases: []string{"sts"},
+                               Usage:   "Get XDS configuration status (including XDS server connection)",
+                               Action:  xdsStatus,
+                               Flags: []cli.Flag{
+                                       cli.BoolFlag{
+                                               Name:  "verbose, v",
+                                               Usage: "display verbose output",
+                                       },
+                               },
+                       },
                },
        })
 }
@@ -39,7 +69,8 @@ func xdsVersion(ctx *cli.Context) error {
        }
 
        writer := NewTableWriter()
-       fmt.Fprintln(writer, "Agent ID:\t", ver.Client.ID)
+       fmt.Fprintln(writer, "Agent:")
+       fmt.Fprintln(writer, "      ID:\t", ver.Client.ID)
        v := ver.Client.Version
        if verbose {
                v += " (" + ver.Client.VersionGitTag + ")"
@@ -50,7 +81,8 @@ func xdsVersion(ctx *cli.Context) error {
        }
 
        for _, svr := range ver.Server {
-               fmt.Fprintln(writer, "Server ID:\t", svr.ID)
+               fmt.Fprintln(writer, "Server:")
+               fmt.Fprintln(writer, "       ID:\t", svr.ID)
                v = svr.Version
                if verbose {
                        v += " (" + svr.VersionGitTag + ")"
@@ -64,3 +96,23 @@ func xdsVersion(ctx *cli.Context) error {
 
        return nil
 }
+
+func xdsStatus(ctx *cli.Context) error {
+       cfg := xaapiv1.APIConfig{}
+       if err := XdsConfigGet(&cfg); err != nil {
+               return cli.NewExitError(err.Error(), 1)
+       }
+
+       writer := NewTableWriter()
+       fmt.Fprintln(writer, "XDS Server:")
+       for _, svr := range cfg.Servers {
+               fmt.Fprintln(writer, "       ID:\t", svr.ID)
+               fmt.Fprintln(writer, "       URL:\t", svr.URL)
+               fmt.Fprintln(writer, "       Connected:\t", svr.Connected)
+               fmt.Fprintln(writer, "       Connection retry:\t", svr.ConnRetry)
+               fmt.Fprintln(writer, "       Disabled:\t", svr.Disabled)
+       }
+       writer.Flush()
+
+       return nil
+}