feat(influx): add pkger list stacks command

pull/18015/head
Johnny Steenbergen 2020-05-07 14:42:06 -07:00 committed by Johnny Steenbergen
parent 8c72f1e5e1
commit e668524847
1 changed files with 73 additions and 1 deletions

View File

@ -47,10 +47,12 @@ type cmdPkgBuilder struct {
hideHeaders bool
json bool
name string
names []string
org organization
quiet bool
recurse bool
stackID string
stackIDs []string
urls []string
applyOpts struct {
@ -364,7 +366,10 @@ func (b *cmdPkgBuilder) cmdPkgValidate() *cobra.Command {
func (b *cmdPkgBuilder) cmdStack() *cobra.Command {
cmd := b.newCmd("stack", nil, false)
cmd.Short = "Stack management commands"
cmd.AddCommand(b.cmdStackInit())
cmd.AddCommand(
b.cmdStackInit(),
b.cmdStackList(),
)
return cmd
}
@ -426,6 +431,73 @@ func (b *cmdPkgBuilder) stackInitRunEFn(cmd *cobra.Command, args []string) error
return nil
}
func (b *cmdPkgBuilder) cmdStackList() *cobra.Command {
cmd := b.newCmd("list [flags]", b.stackListRunEFn, true)
cmd.Short = "List stack(s) and associated resources"
cmd.Aliases = []string{"ls"}
cmd.Flags().StringArrayVar(&b.stackIDs, "stack-id", nil, "Stack IDs to filter by")
cmd.Flags().StringArrayVar(&b.names, "stack-name", nil, "Stack names to filter by")
registerPrintOptions(cmd, &b.hideHeaders, &b.json)
b.org.register(cmd, false)
return cmd
}
func (b *cmdPkgBuilder) stackListRunEFn(cmd *cobra.Command, args []string) error {
pkgSVC, orgSVC, err := b.svcFn()
if err != nil {
return err
}
orgID, err := b.org.getID(orgSVC)
if err != nil {
return err
}
var stackIDs []influxdb.ID
for _, rawID := range b.stackIDs {
id, err := influxdb.IDFromString(rawID)
if err != nil {
return err
}
stackIDs = append(stackIDs, *id)
}
stacks, err := pkgSVC.ListStacks(context.Background(), orgID, pkger.ListFilter{
StackIDs: stackIDs,
Names: b.names,
})
if err != nil {
return err
}
if b.json {
return b.writeJSON(stacks)
}
tabW := b.newTabWriter()
defer tabW.Flush()
tabW.HideHeaders(b.hideHeaders)
tabW.WriteHeaders("ID", "OrgID", "Name", "Description", "Num Resources", "URLs", "Created At")
for _, stack := range stacks {
tabW.Write(map[string]interface{}{
"ID": stack.ID,
"OrgID": stack.OrgID,
"Name": stack.Name,
"Description": stack.Description,
"Num Resources": len(stack.Resources),
"URLs": stack.URLs,
"Created At": stack.CreatedAt,
})
}
return nil
}
func (b *cmdPkgBuilder) registerPkgPrintOpts(cmd *cobra.Command) {
cmd.Flags().BoolVarP(&b.disableColor, "disable-color", "c", false, "Disable color in output")
cmd.Flags().BoolVar(&b.disableTableBorders, "disable-table-borders", false, "Disable table borders")