141 lines
3.2 KiB
Go
141 lines
3.2 KiB
Go
package targets
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/hashicorp/boundary/api/scopes"
|
|
"github.com/hashicorp/boundary/api/targets"
|
|
"github.com/hashicorp/boundary/internal/cmd/base"
|
|
)
|
|
|
|
func generateTargetTableOutput(in *targets.Target) string {
|
|
nonAttributeMap := map[string]interface{}{
|
|
"ID": in.Id,
|
|
"Version": in.Version,
|
|
"Type": in.Type,
|
|
"Created Time": in.CreatedTime.Local().Format(time.RFC1123),
|
|
"Updated Time": in.UpdatedTime.Local().Format(time.RFC1123),
|
|
"Session Connection Limit": in.SessionConnectionLimit,
|
|
"Session Max Seconds": in.SessionMaxSeconds,
|
|
}
|
|
|
|
if in.Name != "" {
|
|
nonAttributeMap["Name"] = in.Name
|
|
}
|
|
if in.Description != "" {
|
|
nonAttributeMap["Description"] = in.Description
|
|
}
|
|
|
|
maxLength := base.MaxAttributesLength(nonAttributeMap, in.Attributes, keySubstMap)
|
|
|
|
var hostSetMaps []map[string]interface{}
|
|
if len(in.HostSets) > 0 {
|
|
for _, set := range in.HostSets {
|
|
m := map[string]interface{}{
|
|
"ID": set.Id,
|
|
"Host Catalog ID": set.HostCatalogId,
|
|
}
|
|
hostSetMaps = append(hostSetMaps, m)
|
|
}
|
|
if l := len("Host Catalog ID"); l > maxLength {
|
|
maxLength = l
|
|
}
|
|
}
|
|
|
|
ret := []string{
|
|
"",
|
|
"Target information:",
|
|
base.WrapMap(2, maxLength+2, nonAttributeMap),
|
|
"",
|
|
" Scope:",
|
|
base.ScopeInfoForOutput(in.Scope, maxLength),
|
|
}
|
|
|
|
if len(in.HostSets) > 0 {
|
|
ret = append(ret,
|
|
"",
|
|
" Host Sets:",
|
|
)
|
|
for _, m := range hostSetMaps {
|
|
ret = append(ret,
|
|
base.WrapMap(4, maxLength, m),
|
|
"",
|
|
)
|
|
}
|
|
}
|
|
|
|
if len(in.Attributes) > 0 {
|
|
ret = append(ret,
|
|
"",
|
|
" Attributes:",
|
|
base.WrapMap(4, maxLength, in.Attributes),
|
|
)
|
|
}
|
|
|
|
return base.WrapForHelpText(ret)
|
|
}
|
|
|
|
func generateAuthorizationTableOutput(in *targets.SessionAuthorization) string {
|
|
var ret []string
|
|
|
|
nonAttributeMap := map[string]interface{}{
|
|
"Session ID": in.SessionId,
|
|
"Target ID": in.TargetId,
|
|
"Scope ID": in.Scope.Id,
|
|
"Created Time": in.CreatedTime.Local().Format(time.RFC3339),
|
|
"Type": in.Type,
|
|
"Authorization Token": in.AuthorizationToken,
|
|
}
|
|
|
|
maxLength := 0
|
|
for k := range nonAttributeMap {
|
|
if len(k) > maxLength {
|
|
maxLength = len(k)
|
|
}
|
|
}
|
|
|
|
ret = append(ret, "", "Target information:")
|
|
|
|
ret = append(ret,
|
|
// We do +2 because there is another +2 offset for host sets below
|
|
base.WrapMap(2, maxLength+2, nonAttributeMap),
|
|
)
|
|
|
|
return base.WrapForHelpText(ret)
|
|
}
|
|
|
|
var keySubstMap = map[string]string{
|
|
"default_port": "Default Port",
|
|
}
|
|
|
|
func exampleOutput() string {
|
|
in := &targets.Target{
|
|
Id: "ttcp_1234567890",
|
|
ScopeId: "global",
|
|
Scope: &scopes.ScopeInfo{
|
|
Id: "global",
|
|
},
|
|
Name: "foo",
|
|
Description: "The bar of foos",
|
|
CreatedTime: time.Now().Add(-5 * time.Minute),
|
|
UpdatedTime: time.Now(),
|
|
Version: 3,
|
|
Type: "tcp",
|
|
HostSetIds: []string{"hsst_1234567890", "hsst_0987654321"},
|
|
HostSets: []*targets.HostSet{
|
|
{
|
|
Id: "hsst_1234567890",
|
|
HostCatalogId: "hcst_1234567890",
|
|
},
|
|
{
|
|
Id: "hsst_0987654321",
|
|
HostCatalogId: "hcst_1234567890",
|
|
},
|
|
},
|
|
Attributes: map[string]interface{}{
|
|
"default_port": 22,
|
|
},
|
|
}
|
|
return generateTargetTableOutput(in)
|
|
}
|