summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Demeester <vincent@sbr.pm>2016-07-24 10:53:52 +0200
committerTibor Vass <tibor@docker.com>2016-07-26 04:37:31 -0700
commita91bc28e6225fb0d943451b8bdafca8b6bbb047d (patch)
tree312ca055b7b2bbb330e3ff898076e3ed317c5947
parent0ffa19daa874d129a7e834f29c3f7ea1f2bdccfb (diff)
downloaddocker-a91bc28e6225fb0d943451b8bdafca8b6bbb047d.tar.gz
Remove swarm inspect and use info instead
Remove the swarm inspect command and use docker info instead to display swarm information if the current node is a manager. Signed-off-by: Vincent Demeester <vincent@sbr.pm> (cherry picked from commit e6923f6d75c2bd1b22cc1229214ffceca3251cc6) Signed-off-by: Tibor Vass <tibor@docker.com>
-rw-r--r--api/client/swarm/cmd.go1
-rw-r--r--api/client/swarm/inspect.go47
-rw-r--r--api/client/system/info.go16
-rw-r--r--daemon/cluster/cluster.go5
-rw-r--r--integration-cli/daemon_swarm.go8
-rw-r--r--integration-cli/docker_cli_swarm_test.go17
-rw-r--r--vendor/src/github.com/docker/engine-api/types/swarm/swarm.go2
7 files changed, 32 insertions, 64 deletions
diff --git a/api/client/swarm/cmd.go b/api/client/swarm/cmd.go
index 2d15e8737f..37b035b495 100644
--- a/api/client/swarm/cmd.go
+++ b/api/client/swarm/cmd.go
@@ -25,7 +25,6 @@ func NewSwarmCommand(dockerCli *client.DockerCli) *cobra.Command {
newJoinTokenCommand(dockerCli),
newUpdateCommand(dockerCli),
newLeaveCommand(dockerCli),
- newInspectCommand(dockerCli),
)
return cmd
}
diff --git a/api/client/swarm/inspect.go b/api/client/swarm/inspect.go
deleted file mode 100644
index 03c3c12c12..0000000000
--- a/api/client/swarm/inspect.go
+++ /dev/null
@@ -1,47 +0,0 @@
-package swarm
-
-import (
- "golang.org/x/net/context"
-
- "github.com/docker/docker/api/client"
- "github.com/docker/docker/api/client/inspect"
- "github.com/docker/docker/cli"
- "github.com/spf13/cobra"
-)
-
-type inspectOptions struct {
- format string
-}
-
-func newInspectCommand(dockerCli *client.DockerCli) *cobra.Command {
- var opts inspectOptions
-
- cmd := &cobra.Command{
- Use: "inspect [OPTIONS]",
- Short: "Inspect the swarm",
- Args: cli.NoArgs,
- RunE: func(cmd *cobra.Command, args []string) error {
- return runInspect(dockerCli, opts)
- },
- }
-
- flags := cmd.Flags()
- flags.StringVarP(&opts.format, "format", "f", "", "Format the output using the given go template")
- return cmd
-}
-
-func runInspect(dockerCli *client.DockerCli, opts inspectOptions) error {
- client := dockerCli.Client()
- ctx := context.Background()
-
- swarm, err := client.SwarmInspect(ctx)
- if err != nil {
- return err
- }
-
- getRef := func(_ string) (interface{}, []byte, error) {
- return swarm, nil, nil
- }
-
- return inspect.Inspect(dockerCli.Out(), []string{""}, opts.format, getRef)
-}
diff --git a/api/client/system/info.go b/api/client/system/info.go
index f8b3ebb062..f8c8323335 100644
--- a/api/client/system/info.go
+++ b/api/client/system/info.go
@@ -3,6 +3,7 @@ package system
import (
"fmt"
"strings"
+ "time"
"golang.org/x/net/context"
@@ -30,7 +31,8 @@ func NewInfoCommand(dockerCli *client.DockerCli) *cobra.Command {
}
func runInfo(dockerCli *client.DockerCli) error {
- info, err := dockerCli.Client().Info(context.Background())
+ ctx := context.Background()
+ info, err := dockerCli.Client().Info(ctx)
if err != nil {
return err
}
@@ -83,8 +85,20 @@ func runInfo(dockerCli *client.DockerCli) error {
}
fmt.Fprintf(dockerCli.Out(), " Is Manager: %v\n", info.Swarm.ControlAvailable)
if info.Swarm.ControlAvailable {
+ fmt.Fprintf(dockerCli.Out(), " ClusterID: %s\n", info.Swarm.Cluster.ID)
fmt.Fprintf(dockerCli.Out(), " Managers: %d\n", info.Swarm.Managers)
fmt.Fprintf(dockerCli.Out(), " Nodes: %d\n", info.Swarm.Nodes)
+ fmt.Fprintf(dockerCli.Out(), " Name: %s\n", info.Swarm.Cluster.Spec.Annotations.Name)
+ fmt.Fprintf(dockerCli.Out(), " Orchestration:\n")
+ fmt.Fprintf(dockerCli.Out(), " Task History Retention: %d\n", info.Swarm.Cluster.Spec.Orchestration.TaskHistoryRetentionLimit)
+ fmt.Fprintf(dockerCli.Out(), " Raft:\n")
+ fmt.Fprintf(dockerCli.Out(), " Snapshot interval: %d\n", info.Swarm.Cluster.Spec.Raft.SnapshotInterval)
+ fmt.Fprintf(dockerCli.Out(), " Heartbeat tick: %d\n", info.Swarm.Cluster.Spec.Raft.HeartbeatTick)
+ fmt.Fprintf(dockerCli.Out(), " Election tick: %d\n", info.Swarm.Cluster.Spec.Raft.ElectionTick)
+ fmt.Fprintf(dockerCli.Out(), " Dispatcher:\n")
+ fmt.Fprintf(dockerCli.Out(), " Heartbeat period: %s\n", units.HumanDuration(time.Duration(info.Swarm.Cluster.Spec.Dispatcher.HeartbeatPeriod)))
+ fmt.Fprintf(dockerCli.Out(), " CA configuration:\n")
+ fmt.Fprintf(dockerCli.Out(), " Expiry duration: %s\n", units.HumanDuration(info.Swarm.Cluster.Spec.CAConfig.NodeCertExpiry))
}
fmt.Fprintf(dockerCli.Out(), " Node Address: %s\n", info.Swarm.NodeAddr)
}
diff --git a/daemon/cluster/cluster.go b/daemon/cluster/cluster.go
index 0b2696c451..6c15659e33 100644
--- a/daemon/cluster/cluster.go
+++ b/daemon/cluster/cluster.go
@@ -729,6 +729,11 @@ func (c *Cluster) Info() types.Info {
if c.isActiveManager() {
info.ControlAvailable = true
+ swarm, err := c.Inspect()
+ if err != nil {
+ info.Error = err.Error()
+ }
+ info.Cluster = swarm
if r, err := c.client.ListNodes(ctx, &swarmapi.ListNodesRequest{}); err == nil {
info.Nodes = len(r.Nodes)
for _, n := range r.Nodes {
diff --git a/integration-cli/daemon_swarm.go b/integration-cli/daemon_swarm.go
index b30642bd8d..39505a8dbf 100644
--- a/integration-cli/daemon_swarm.go
+++ b/integration-cli/daemon_swarm.go
@@ -246,18 +246,22 @@ func (d *SwarmDaemon) listServices(c *check.C) []swarm.Service {
return services
}
-func (d *SwarmDaemon) updateSwarm(c *check.C, f ...specConstructor) {
+func (d *SwarmDaemon) getSwarm(c *check.C) swarm.Swarm {
var sw swarm.Swarm
status, out, err := d.SockRequest("GET", "/swarm", nil)
c.Assert(err, checker.IsNil)
c.Assert(status, checker.Equals, http.StatusOK, check.Commentf("output: %q", string(out)))
c.Assert(json.Unmarshal(out, &sw), checker.IsNil)
+ return sw
+}
+func (d *SwarmDaemon) updateSwarm(c *check.C, f ...specConstructor) {
+ sw := d.getSwarm(c)
for _, fn := range f {
fn(&sw.Spec)
}
url := fmt.Sprintf("/swarm/update?version=%d", sw.Version.Index)
- status, out, err = d.SockRequest("POST", url, sw.Spec)
+ status, out, err := d.SockRequest("POST", url, sw.Spec)
c.Assert(err, checker.IsNil)
c.Assert(status, checker.Equals, http.StatusOK, check.Commentf("output: %q", string(out)))
}
diff --git a/integration-cli/docker_cli_swarm_test.go b/integration-cli/docker_cli_swarm_test.go
index 087efa1262..e44a2102d7 100644
--- a/integration-cli/docker_cli_swarm_test.go
+++ b/integration-cli/docker_cli_swarm_test.go
@@ -3,7 +3,6 @@
package main
import (
- "encoding/json"
"io/ioutil"
"strings"
"time"
@@ -17,12 +16,8 @@ func (s *DockerSwarmSuite) TestSwarmUpdate(c *check.C) {
d := s.AddDaemon(c, true, true)
getSpec := func() swarm.Spec {
- out, err := d.Cmd("swarm", "inspect")
- c.Assert(err, checker.IsNil)
- var sw []swarm.Swarm
- c.Assert(json.Unmarshal([]byte(out), &sw), checker.IsNil)
- c.Assert(len(sw), checker.Equals, 1)
- return sw[0].Spec
+ sw := d.getSwarm(c)
+ return sw.Spec
}
out, err := d.Cmd("swarm", "update", "--cert-expiry", "30h", "--dispatcher-heartbeat", "11s")
@@ -44,12 +39,8 @@ func (s *DockerSwarmSuite) TestSwarmInit(c *check.C) {
d := s.AddDaemon(c, false, false)
getSpec := func() swarm.Spec {
- out, err := d.Cmd("swarm", "inspect")
- c.Assert(err, checker.IsNil)
- var sw []swarm.Swarm
- c.Assert(json.Unmarshal([]byte(out), &sw), checker.IsNil)
- c.Assert(len(sw), checker.Equals, 1)
- return sw[0].Spec
+ sw := d.getSwarm(c)
+ return sw.Spec
}
out, err := d.Cmd("swarm", "init", "--cert-expiry", "30h", "--dispatcher-heartbeat", "11s")
diff --git a/vendor/src/github.com/docker/engine-api/types/swarm/swarm.go b/vendor/src/github.com/docker/engine-api/types/swarm/swarm.go
index 92f05a2802..56887cc01d 100644
--- a/vendor/src/github.com/docker/engine-api/types/swarm/swarm.go
+++ b/vendor/src/github.com/docker/engine-api/types/swarm/swarm.go
@@ -118,6 +118,8 @@ type Info struct {
RemoteManagers []Peer
Nodes int
Managers int
+
+ Cluster Swarm
}
// Peer represents a peer.