Skip to content

Commit

Permalink
Merge pull request #26 from rking788/feature/update-node-status
Browse files Browse the repository at this point in the history
Update the string used to print node status
  • Loading branch information
mre committed Oct 17, 2018
2 parents d4297d6 + c5a57e4 commit f8803c4
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 41 deletions.
10 changes: 3 additions & 7 deletions internal/commands/logs.go
Expand Up @@ -5,7 +5,6 @@ import (
"strings"

"github.com/bndr/gojenkins"
"github.com/fatih/color"
)

type Logs struct {
Expand All @@ -19,9 +18,6 @@ func NewLogs(jenkins *gojenkins.Jenkins, jobName string, salt bool) *Logs {
}

func (l Logs) Exec() error {
yellow := color.New(color.FgYellow).SprintFunc()
red := color.New(color.FgRed).SprintFunc()
green := color.New(color.FgGreen).SprintFunc()

build, err := l.jenkins.GetJob(l.jobName)
if err != nil {
Expand All @@ -39,11 +35,11 @@ func (l Logs) Exec() error {
var marker string
switch result {
case "SUCCESS":
marker = green("✓")
marker = Good
case "FAILURE":
marker = red("✗")
marker = Bad
default:
marker = yellow("?")
marker = Unknown
}

fmt.Printf("%v %v (%v)\n", marker, l.jobName, lastBuild.GetUrl())
Expand Down
32 changes: 20 additions & 12 deletions internal/commands/nodes.go
Expand Up @@ -5,7 +5,6 @@ import (
"sync"

"github.com/bndr/gojenkins"
"github.com/fatih/color"
)

type Nodes struct {
Expand All @@ -25,16 +24,21 @@ func (n Nodes) Exec() error {
}

var waitGroup sync.WaitGroup
waitGroup.Add(len(nodes))
defer waitGroup.Wait()
for _, node := range nodes {
go printNodeStatus(&waitGroup, *node)

for i := range nodes {
waitGroup.Add(1)
go func(node *gojenkins.Node) {
defer waitGroup.Done()
print(node)
}(nodes[i])
}

waitGroup.Wait()
return nil
}

func printNodeStatus(waitGroup *sync.WaitGroup, node gojenkins.Node) error {
defer waitGroup.Done()
func print(node *gojenkins.Node) error {

// Fetch Node Data
_, err := node.Poll()
if err != nil {
Expand All @@ -46,13 +50,17 @@ func printNodeStatus(waitGroup *sync.WaitGroup, node gojenkins.Node) error {
return err
}

red := color.New(color.FgRed).SprintFunc()
green := color.New(color.FgGreen).SprintFunc()

status := "Unknown"
marker := Unknown
if online {
fmt.Printf("%v %v: Online\n", green("✓"), node.GetName())
status = "Online"
marker = Good
} else {
fmt.Printf("%v %v: Offline\n", red("✗"), node.GetName())
status = "Offline"
marker = Bad
}

fmt.Printf("%s %s: %s\n", marker, node.GetName(), status)

return nil
}
45 changes: 23 additions & 22 deletions internal/commands/status.go
Expand Up @@ -9,6 +9,19 @@ import (
"github.com/mre/riffraff/internal/job"
)

var (
yellow = color.New(color.FgYellow).SprintFunc()
red = color.New(color.FgRed).SprintFunc()
green = color.New(color.FgGreen).SprintFunc()
)

var (
Unknown = yellow("?")
Running = green("↻")
Good = green("✓")
Bad = red("✗")
)

type Status struct {
jenkins *gojenkins.Jenkins
regex string
Expand All @@ -25,50 +38,38 @@ func (s Status) Exec() error {
}

var wg sync.WaitGroup
for _, job := range jobs {
for i := range jobs {
wg.Add(1)
go func(job gojenkins.InnerJob) {
defer wg.Done()
s.print(job)
}(job)
}(jobs[i])
}
wg.Wait()
return nil
}

func (s Status) print(job gojenkins.InnerJob) error {
// Buffer full output to avoid race conditions between jobs
yellow := color.New(color.FgYellow).SprintFunc()
red := color.New(color.FgRed).SprintFunc()
green := color.New(color.FgGreen).SprintFunc()

build, err := s.jenkins.GetJob(job.Name)
if err != nil {
return err
}

lastBuild, err := build.GetLastBuild()
var result string
if err != nil {
result = fmt.Sprintf("UNKNOWN (%v)", err)
} else {
marker := Unknown
if err == nil {
result := lastBuild.GetResult()
if lastBuild.IsRunning() {
result = "RUNNING"
} else {
result = lastBuild.GetResult()
marker = Running
} else if result == "SUCCESS" {
marker = Good
} else if result == "FAILURE" {
marker = Bad
}
}

marker := yellow("?")
switch result {
case "RUNNING":
marker = green("↻")
case "SUCCESS":
marker = green("✓")
case "FAILURE":
marker = red("✗")
}

fmt.Printf("%v %v (%v)\n", marker, job.Name, job.Url)
return nil
}

0 comments on commit f8803c4

Please sign in to comment.