Skip to content

Commit f908db5

Browse files
authored
Move status command to get and logs (#171)
1 parent 26aed4c commit f908db5

File tree

10 files changed

+162
-247
lines changed

10 files changed

+162
-247
lines changed

.github/ISSUE_TEMPLATE/bug-report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ assignees: ''
3737

3838
### Stack Trace
3939

40-
[If applicable, the stack trace which shows the error. Find it with `cortex logs <resource name>`, or use `kubectl get pods -n cortex` and use the name of the failed pod in `kubectl logs <pod name> -n cortex`]
40+
[If applicable, the stack trace which shows the error. Find it with `cortex logs -v <resource name>`, or use `kubectl get pods -n cortex` and use the name of the failed pod in `kubectl logs <pod name> -n cortex`]
4141

4242
```
4343
<paste stack trace here>

cli/cmd/get.go

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ func init() {
4141
addAppNameFlag(getCmd)
4242
addEnvFlag(getCmd)
4343
addWatchFlag(getCmd)
44+
addSummaryFlag(getCmd)
4445
addResourceTypesToHelp(getCmd)
4546
}
4647

@@ -64,6 +65,9 @@ func runGet(cmd *cobra.Command, args []string) (string, error) {
6465

6566
switch len(args) {
6667
case 0:
68+
if flagSummary {
69+
return resourceStatusesStr(resourcesRes), nil
70+
}
6771
return allResourcesStr(resourcesRes), nil
6872

6973
case 1:
@@ -515,3 +519,125 @@ func titleStr(title string) string {
515519
bottom := strings.Repeat("-", titleLength)
516520
return "\n" + top + "\n" + title + "\n" + bottom + "\n\n"
517521
}
522+
523+
func resourceStatusesStr(resourcesRes *schema.GetResourcesResponse) string {
524+
out := "\n"
525+
out += pythonPackageStatusesStr(resourcesRes.DataStatuses, resourcesRes.Context) + "\n"
526+
out += rawColumnStatusesStr(resourcesRes.DataStatuses, resourcesRes.Context) + "\n"
527+
out += aggregateStatusesStr(resourcesRes.DataStatuses, resourcesRes.Context) + "\n"
528+
out += transformedColumnStatusesStr(resourcesRes.DataStatuses, resourcesRes.Context) + "\n"
529+
out += trainingDatasetStatusesStr(resourcesRes.DataStatuses, resourcesRes.Context) + "\n"
530+
out += modelStatusesStr(resourcesRes.DataStatuses, resourcesRes.Context) + "\n"
531+
out += apiStatusesStr(resourcesRes.APIGroupStatuses)
532+
return out
533+
}
534+
535+
func pythonPackageStatusesStr(dataStatuses map[string]*resource.DataStatus, ctx *context.Context) string {
536+
var statuses = make([]resource.Status, len(ctx.PythonPackages))
537+
i := 0
538+
for _, pythonPackage := range ctx.PythonPackages {
539+
statuses[i] = dataStatuses[pythonPackage.GetID()]
540+
i++
541+
}
542+
return "Python Packages: " + StatusStr(statuses)
543+
}
544+
545+
func rawColumnStatusesStr(dataStatuses map[string]*resource.DataStatus, ctx *context.Context) string {
546+
var statuses = make([]resource.Status, len(ctx.RawColumns))
547+
i := 0
548+
for _, rawColumn := range ctx.RawColumns {
549+
statuses[i] = dataStatuses[rawColumn.GetID()]
550+
i++
551+
}
552+
return "Raw Columns: " + StatusStr(statuses)
553+
}
554+
555+
func aggregateStatusesStr(dataStatuses map[string]*resource.DataStatus, ctx *context.Context) string {
556+
var statuses = make([]resource.Status, len(ctx.Aggregates))
557+
i := 0
558+
for _, aggregate := range ctx.Aggregates {
559+
statuses[i] = dataStatuses[aggregate.GetID()]
560+
i++
561+
}
562+
return "Aggregates: " + StatusStr(statuses)
563+
}
564+
565+
func transformedColumnStatusesStr(dataStatuses map[string]*resource.DataStatus, ctx *context.Context) string {
566+
var statuses = make([]resource.Status, len(ctx.TransformedColumns))
567+
i := 0
568+
for _, transformedColumn := range ctx.TransformedColumns {
569+
statuses[i] = dataStatuses[transformedColumn.GetID()]
570+
i++
571+
}
572+
return "Transformed Columns: " + StatusStr(statuses)
573+
}
574+
575+
func trainingDatasetStatusesStr(dataStatuses map[string]*resource.DataStatus, ctx *context.Context) string {
576+
var statuses = make([]resource.Status, len(ctx.Models))
577+
i := 0
578+
for _, model := range ctx.Models {
579+
statuses[i] = dataStatuses[model.Dataset.GetID()]
580+
i++
581+
}
582+
return "Training Datasets: " + StatusStr(statuses)
583+
}
584+
585+
func modelStatusesStr(dataStatuses map[string]*resource.DataStatus, ctx *context.Context) string {
586+
var statuses = make([]resource.Status, len(ctx.Models))
587+
i := 0
588+
for _, model := range ctx.Models {
589+
statuses[i] = dataStatuses[model.GetID()]
590+
i++
591+
}
592+
return "Models: " + StatusStr(statuses)
593+
}
594+
595+
func apiStatusesStr(apiGroupStatuses map[string]*resource.APIGroupStatus) string {
596+
var statuses = make([]resource.Status, len(apiGroupStatuses))
597+
i := 0
598+
for _, apiGroupStatus := range apiGroupStatuses {
599+
statuses[i] = apiGroupStatus
600+
i++
601+
}
602+
return "APIs: " + StatusStr(statuses)
603+
}
604+
605+
func StatusStr(statuses []resource.Status) string {
606+
if len(statuses) == 0 {
607+
return "none"
608+
}
609+
610+
messageBuckets := make(map[int][]string)
611+
for _, status := range statuses {
612+
bucketKey := status.GetCode().SortBucket()
613+
messageBuckets[bucketKey] = append(messageBuckets[bucketKey], status.Message())
614+
}
615+
616+
var bucketKeys []int
617+
for bucketKey := range messageBuckets {
618+
bucketKeys = append(bucketKeys, bucketKey)
619+
}
620+
sort.Ints(bucketKeys)
621+
622+
var messageItems []string
623+
624+
for _, bucketKey := range bucketKeys {
625+
messageCounts := make(map[string]int)
626+
for _, message := range messageBuckets[bucketKey] {
627+
messageCounts[message]++
628+
}
629+
630+
var messages []string
631+
for message := range messageCounts {
632+
messages = append(messages, message)
633+
}
634+
sort.Strings(messages)
635+
636+
for _, message := range messages {
637+
messageItem := fmt.Sprintf("%d %s", messageCounts[message], message)
638+
messageItems = append(messageItems, messageItem)
639+
}
640+
}
641+
642+
return strings.Join(messageItems, " | ")
643+
}

cli/cmd/logs.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
func init() {
2727
addAppNameFlag(logsCmd)
2828
addEnvFlag(logsCmd)
29+
addVerboseFlag(logsCmd)
2930
addResourceTypesToHelp(logsCmd)
3031
}
3132

@@ -58,7 +59,7 @@ var logsCmd = &cobra.Command{
5859
errors.Exit(err)
5960
}
6061

61-
err = StreamLogs(appName, resourceName, resourceTypeStr, true)
62+
err = StreamLogs(appName, resourceName, resourceTypeStr, flagVerbose)
6263
if err != nil {
6364
errors.Exit(err)
6465
}

cli/cmd/root.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ var cmdStr string
3838
var flagEnv string
3939
var flagWatch bool
4040
var flagAppName string
41+
var flagVerbose bool
42+
var flagSummary bool
4143

4244
var configFileExts = []string{"yaml", "yml"}
4345

@@ -73,7 +75,6 @@ func Execute() {
7375
rootCmd.AddCommand(deleteCmd)
7476

7577
rootCmd.AddCommand(getCmd)
76-
rootCmd.AddCommand(statusCmd)
7778
rootCmd.AddCommand(logsCmd)
7879

7980
rootCmd.AddCommand(configureCmd)
@@ -99,6 +100,14 @@ func addAppNameFlag(cmd *cobra.Command) {
99100
cmd.PersistentFlags().StringVarP(&flagAppName, "app", "a", "", "app name")
100101
}
101102

103+
func addVerboseFlag(cmd *cobra.Command) {
104+
cmd.PersistentFlags().BoolVarP(&flagVerbose, "verbose", "v", false, "show verbose output")
105+
}
106+
107+
func addSummaryFlag(cmd *cobra.Command) {
108+
cmd.PersistentFlags().BoolVarP(&flagSummary, "summary", "s", false, "show summarized output")
109+
}
110+
102111
var resourceTypesHelp = fmt.Sprintf("\nResource Types:\n %s\n", strings.Join(resource.VisibleTypes.StringList(), "\n "))
103112

104113
func addResourceTypesToHelp(cmd *cobra.Command) {

0 commit comments

Comments
 (0)