@@ -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+ }
0 commit comments