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  }