github.com/wtfutil/wtf@v0.43.0/modules/cds/status/display.go (about) 1 package cdsstatus 2 3 import ( 4 "fmt" 5 "strings" 6 7 "github.com/ovh/cds/sdk" 8 ) 9 10 func (widget *Widget) display() { 11 widget.TextWidget.Redraw(widget.content) 12 } 13 14 func (widget *Widget) content() (string, string, bool) { 15 if len(widget.View.GetHighlights()) > 0 { 16 widget.View.ScrollToHighlight() 17 } else { 18 widget.View.ScrollToBeginning() 19 } 20 21 widget.Items = make([]sdk.MonitoringStatusLine, 0) 22 str := widget.displayStatus() 23 title := widget.CommonSettings().Title 24 return title, str, false 25 } 26 27 func (widget *Widget) displayStatus() string { 28 status, err := widget.client.MonStatus() 29 30 if err != nil || len(status.Lines) == 0 { 31 return fmt.Sprintf(" [red]Error: %v[white]\n", err.Error()) 32 } 33 34 widget.SetItemCount(len(status.Lines)) 35 36 var ( 37 global []string 38 globalWarn []string 39 globalRed []string 40 ok []string 41 warn []string 42 red []string 43 ) 44 45 for _, line := range status.Lines { 46 switch { 47 case line.Status == sdk.MonitoringStatusWarn && strings.Contains(line.Component, "Global"): 48 globalWarn = append(globalWarn, line.String()) 49 case line.Status != sdk.MonitoringStatusOK && strings.Contains(line.Component, "Global"): 50 globalRed = append(globalRed, line.String()) 51 case strings.Contains(line.Component, "Global"): 52 global = append(global, line.String()) 53 case line.Status == sdk.MonitoringStatusWarn: 54 warn = append(warn, line.String()) 55 case line.Status == sdk.MonitoringStatusOK: 56 ok = append(ok, line.String()) 57 default: 58 red = append(red, line.String()) 59 } 60 } 61 var idx int 62 var content string 63 for _, v := range globalRed { 64 content += fmt.Sprintf("[grey][\"%d\"][red]%s\n", idx, v) 65 idx++ 66 } 67 for _, v := range globalWarn { 68 content += fmt.Sprintf("[grey][\"%d\"][yellow]%s\n", idx, v) 69 idx++ 70 } 71 for _, v := range global { 72 content += fmt.Sprintf("[grey][\"%d\"][grey]%s\n", idx, v) 73 idx++ 74 } 75 for _, v := range red { 76 content += fmt.Sprintf("[grey][\"%d\"][red]%s\n", idx, v) 77 idx++ 78 } 79 for _, v := range warn { 80 content += fmt.Sprintf("[grey][\"%d\"][yellow]%s\n", idx, v) 81 idx++ 82 } 83 for _, v := range ok { 84 content += fmt.Sprintf("[grey][\"%d\"][grey]%s\n", idx, v) 85 idx++ 86 } 87 return content 88 }