From d1d94c19c8465c1ccf8ea6469aabc86ecb8712f0 Mon Sep 17 00:00:00 2001 From: Todd Knight Date: Thu, 1 Oct 2020 15:57:01 -0700 Subject: [PATCH] List sessions CLI reports correct target id and status (#511) * Including some missing session fields and improving reporting of sessions of CLI. --- internal/cmd/commands/sessions/funcs.go | 4 +++- internal/cmd/commands/sessions/session.go | 3 ++- .../servers/controller/handlers/sessions/session_service.go | 3 +++ .../controller/handlers/sessions/session_service_test.go | 6 ++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/internal/cmd/commands/sessions/funcs.go b/internal/cmd/commands/sessions/funcs.go index 8100da88e5..20f41d332e 100644 --- a/internal/cmd/commands/sessions/funcs.go +++ b/internal/cmd/commands/sessions/funcs.go @@ -33,7 +33,9 @@ func generateSessionTableOutput(in *sessions.Session) string { m := map[string]interface{}{ "Status": state.Status, "Start Time": state.StartTime.Local().Format(time.RFC1123), - "End Time": state.EndTime.Local().Format(time.RFC1123), + } + if !state.EndTime.IsZero() { + m["End Time"] = state.EndTime.Local().Format(time.RFC1123) } statesMaps = append(statesMaps, m) } diff --git a/internal/cmd/commands/sessions/session.go b/internal/cmd/commands/sessions/session.go index 911ec1cc0c..d59faa4d92 100644 --- a/internal/cmd/commands/sessions/session.go +++ b/internal/cmd/commands/sessions/session.go @@ -170,11 +170,12 @@ func (c *Command) Run(args []string) int { } output = append(output, fmt.Sprintf(" ID: %s", t.Id), + fmt.Sprintf(" Status: %s", t.Status), fmt.Sprintf(" Created Time: %s", t.CreatedTime.Local().Format(time.RFC3339)), fmt.Sprintf(" Expiration Time: %s", t.ExpirationTime.Local().Format(time.RFC3339)), fmt.Sprintf(" Updated Time: %s", t.UpdatedTime.Local().Format(time.RFC3339)), fmt.Sprintf(" User ID: %s", t.UserId), - fmt.Sprintf(" Target ID: %s", t.UserId), + fmt.Sprintf(" Target ID: %s", t.TargetId), ) } c.UI.Output(base.WrapForHelpText(output)) diff --git a/internal/servers/controller/handlers/sessions/session_service.go b/internal/servers/controller/handlers/sessions/session_service.go index 7cc50ea0d4..d11dc4ff90 100644 --- a/internal/servers/controller/handlers/sessions/session_service.go +++ b/internal/servers/controller/handlers/sessions/session_service.go @@ -12,6 +12,7 @@ import ( "github.com/hashicorp/boundary/internal/servers/controller/common" "github.com/hashicorp/boundary/internal/servers/controller/handlers" "github.com/hashicorp/boundary/internal/session" + "github.com/hashicorp/boundary/internal/target" "github.com/hashicorp/boundary/internal/types/action" "github.com/hashicorp/boundary/internal/types/resource" "github.com/hashicorp/boundary/internal/types/scope" @@ -192,6 +193,8 @@ func toProto(in *session.Session) *pb.Session { HostId: in.HostId, HostSetId: in.HostSetId, AuthTokenId: in.AuthTokenId, + Endpoint: in.Endpoint, + Type: target.SubtypeFromId(in.TargetId).String(), // TODO: Provide the ServerType and the ServerId when that information becomes relevant in the API. CreatedTime: in.CreateTime.GetTimestamp(), diff --git a/internal/servers/controller/handlers/sessions/session_service_test.go b/internal/servers/controller/handlers/sessions/session_service_test.go index 85049cfb55..b185212aeb 100644 --- a/internal/servers/controller/handlers/sessions/session_service_test.go +++ b/internal/servers/controller/handlers/sessions/session_service_test.go @@ -67,6 +67,7 @@ func TestGetSession(t *testing.T) { Id: sess.GetPublicId(), ScopeId: p.GetPublicId(), AuthTokenId: at.GetPublicId(), + Endpoint: sess.Endpoint, UserId: at.GetIamUserId(), TargetId: sess.TargetId, HostSetId: sess.HostSetId, @@ -79,6 +80,7 @@ func TestGetSession(t *testing.T) { Scope: &scopes.ScopeInfo{Id: p.GetPublicId(), Type: scope.Project.String()}, States: []*pb.SessionState{{Status: session.StatusPending.String(), StartTime: sess.CreateTime.GetTimestamp()}}, Certificate: sess.Certificate, + Type: target.TcpSubType.String(), } cases := []struct { @@ -183,6 +185,7 @@ func TestList(t *testing.T) { AuthTokenId: at.GetPublicId(), UserId: at.GetIamUserId(), TargetId: sess.TargetId, + Endpoint: sess.Endpoint, HostSetId: sess.HostSetId, HostId: sess.HostId, Version: sess.Version, @@ -193,6 +196,7 @@ func TestList(t *testing.T) { Status: status, States: states, Certificate: sess.Certificate, + Type: target.TcpSubType.String(), }) } @@ -297,11 +301,13 @@ func TestCancel(t *testing.T) { HostSetId: sess.HostSetId, HostId: sess.HostId, Version: sess.Version, + Endpoint: sess.Endpoint, CreatedTime: sess.CreateTime.GetTimestamp(), ExpirationTime: sess.ExpirationTime.GetTimestamp(), Scope: &scopes.ScopeInfo{Id: p.GetPublicId(), Type: scope.Project.String()}, Status: session.StatusCanceling.String(), Certificate: sess.Certificate, + Type: target.TcpSubType.String(), } version := wireSess.GetVersion()