Add Sandbox ID to `service ls` output

Currently ther `service ls` output does not show the
sandbox ID. This adds that to the output so that it can
be used in dnet program.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
This commit is contained in:
Jana Radhakrishnan 2015-09-23 19:29:56 -07:00
parent 24f1845a18
commit 50ec2d3a50
1 changed files with 8 additions and 5 deletions

View File

@ -236,21 +236,22 @@ func (cli *NetworkCli) CmdServiceLs(chain string, args ...string) error {
wr := tabwriter.NewWriter(cli.out, 20, 1, 3, ' ', 0) wr := tabwriter.NewWriter(cli.out, 20, 1, 3, ' ', 0)
// unless quiet (-q) is specified, print field titles // unless quiet (-q) is specified, print field titles
if !*quiet { if !*quiet {
fmt.Fprintln(wr, "SERVICE ID\tNAME\tNETWORK\tCONTAINER") fmt.Fprintln(wr, "SERVICE ID\tNAME\tNETWORK\tCONTAINER\tSANDBOX")
} }
for _, sr := range serviceResources { for _, sr := range serviceResources {
ID := sr.ID ID := sr.ID
bkID, err := getBackendID(cli, ID) bkID, sbID, err := getBackendID(cli, ID)
if err != nil { if err != nil {
return err return err
} }
if !*noTrunc { if !*noTrunc {
ID = stringid.TruncateID(ID) ID = stringid.TruncateID(ID)
bkID = stringid.TruncateID(bkID) bkID = stringid.TruncateID(bkID)
sbID = stringid.TruncateID(sbID)
} }
if !*quiet { if !*quiet {
fmt.Fprintf(wr, "%s\t%s\t%s\t%s\n", ID, sr.Name, sr.Network, bkID) fmt.Fprintf(wr, "%s\t%s\t%s\t%s\t%s\n", ID, sr.Name, sr.Network, bkID, sbID)
} else { } else {
fmt.Fprintln(wr, ID) fmt.Fprintln(wr, ID)
} }
@ -260,24 +261,26 @@ func (cli *NetworkCli) CmdServiceLs(chain string, args ...string) error {
return nil return nil
} }
func getBackendID(cli *NetworkCli, servID string) (string, error) { func getBackendID(cli *NetworkCli, servID string) (string, string, error) {
var ( var (
obj []byte obj []byte
err error err error
bk string bk string
sb string
) )
if obj, _, err = readBody(cli.call("GET", "/services/"+servID+"/backend", nil, nil)); err == nil { if obj, _, err = readBody(cli.call("GET", "/services/"+servID+"/backend", nil, nil)); err == nil {
var sr SandboxResource var sr SandboxResource
if err := json.NewDecoder(bytes.NewReader(obj)).Decode(&sr); err == nil { if err := json.NewDecoder(bytes.NewReader(obj)).Decode(&sr); err == nil {
bk = sr.ContainerID bk = sr.ContainerID
sb = sr.ID
} else { } else {
// Only print a message, don't make the caller cli fail for this // Only print a message, don't make the caller cli fail for this
fmt.Fprintf(cli.out, "Failed to retrieve backend list for service %s (%v)\n", servID, err) fmt.Fprintf(cli.out, "Failed to retrieve backend list for service %s (%v)\n", servID, err)
} }
} }
return bk, err return bk, sb, err
} }
// CmdServiceInfo handles service info UI // CmdServiceInfo handles service info UI