Skip to content

Commit

Permalink
Add app_server support to tctl get/rm commands (#23137)
Browse files Browse the repository at this point in the history
This PR adds support for `app_server` get and remove commands through
`tctl`.
  • Loading branch information
tigrato committed Mar 15, 2023
1 parent 65da783 commit 117236a
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 5 deletions.
2 changes: 2 additions & 0 deletions lib/services/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,8 @@ func ParseShortcut(in string) (string, error) {
return types.KindDatabase, nil
case types.KindApp, "apps":
return types.KindApp, nil
case types.KindAppServer, "app_servers":
return types.KindAppServer, nil
case types.KindWindowsDesktopService, "windows_service", "win_desktop_service", "win_service":
return types.KindWindowsDesktopService, nil
case types.KindWindowsDesktop, "win_desktop":
Expand Down
12 changes: 8 additions & 4 deletions tool/tctl/common/collection.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ func (r *roleCollection) writeText(w io.Writer) error {
r.GetMetadata().Name,
strings.Join(r.GetLogins(types.Allow), ","),
printNodeLabels(r.GetNodeLabels(types.Allow)),
printActions(r.GetRules(types.Allow))})
printActions(r.GetRules(types.Allow)),
})
}

headers := []string{"Role", "Allowed to login as", "Node Labels", "Access to resources"}
Expand Down Expand Up @@ -359,7 +360,8 @@ func (c *trustedClusterCollection) resources() (r []types.Resource) {

func (c *trustedClusterCollection) writeText(w io.Writer) error {
t := asciitable.MakeTable([]string{
"Name", "Enabled", "Token", "Proxy Address", "Reverse Tunnel Address", "Role Map"})
"Name", "Enabled", "Token", "Proxy Address", "Reverse Tunnel Address", "Role Map",
})
for _, tc := range c.trustedClusters {
t.AddRow([]string{
tc.GetName(),
Expand Down Expand Up @@ -482,7 +484,8 @@ func (a *appServerCollection) writeText(w io.Writer) error {
app := server.GetApp()
labels := stripInternalTeleportLabels(a.verbose, app.GetAllLabels())
rows = append(rows, []string{
server.GetHostname(), app.GetName(), app.GetProtocol(), app.GetPublicAddr(), app.GetURI(), labels, server.GetTeleportVersion()})
server.GetHostname(), app.GetName(), app.GetProtocol(), app.GetPublicAddr(), app.GetURI(), labels, server.GetTeleportVersion(),
})
}
var t asciitable.Table
headers := []string{"Host", "Name", "Type", "Public Address", "URI", "Labels", "Version"}
Expand Down Expand Up @@ -521,7 +524,8 @@ func (c *appCollection) writeText(w io.Writer) error {
for _, app := range c.apps {
labels := stripInternalTeleportLabels(c.verbose, app.GetAllLabels())
rows = append(rows, []string{
app.GetName(), app.GetDescription(), app.GetURI(), app.GetPublicAddr(), labels, app.GetVersion()})
app.GetName(), app.GetDescription(), app.GetURI(), app.GetPublicAddr(), labels, app.GetVersion(),
})
}
headers := []string{"Name", "Description", "URI", "Public Address", "Labels", "Version"}
var t asciitable.Table
Expand Down
39 changes: 38 additions & 1 deletion tool/tctl/common/resource_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -885,7 +885,24 @@ func (rc *ResourceCommand) Delete(ctx context.Context, client auth.ClientI) (err
return trail.FromGRPC(err)
}
fmt.Printf("login rule %q has been deleted\n", rc.ref.Name)

case types.KindAppServer:
appServers, err := client.GetApplicationServers(ctx, rc.namespace)
if err != nil {
return trace.Wrap(err)
}
deleted := false
for _, server := range appServers {
if server.GetName() == rc.ref.Name {
if err := client.DeleteApplicationServer(ctx, server.GetNamespace(), server.GetHostID(), server.GetName()); err != nil {
return trace.Wrap(err)
}
deleted = true
}
}
if !deleted {
return trace.NotFound("application server %q not found", rc.ref.Name)
}
fmt.Printf("application server %q has been deleted\n", rc.ref.Name)
default:
return trace.BadParameter("deleting resources of type %q is not supported", rc.ref.Kind)
}
Expand Down Expand Up @@ -1290,6 +1307,26 @@ func (rc *ResourceCommand) getCollection(ctx context.Context, client auth.Client
return nil, trace.NotFound("kubernetes server %q not found", rc.ref.Name)
}
return &kubeServerCollection{servers: out}, nil

case types.KindAppServer:
servers, err := client.GetApplicationServers(ctx, rc.namespace)
if err != nil {
return nil, trace.Wrap(err)
}
if rc.ref.Name == "" {
return &appServerCollection{servers: servers}, nil
}

var out []types.AppServer
for _, server := range servers {
if server.GetName() == rc.ref.Name || server.GetHostname() == rc.ref.Name {
out = append(out, server)
}
}
if len(out) == 0 {
return nil, trace.NotFound("application server %q not found", rc.ref.Name)
}
return &appServerCollection{servers: out}, nil
case types.KindNetworkRestrictions:
nr, err := client.GetNetworkRestrictions(ctx)
if err != nil {
Expand Down

0 comments on commit 117236a

Please sign in to comment.