Skip to content

Commit

Permalink
Zui 80x24 (#1052)
Browse files Browse the repository at this point in the history
* Staging rewrite of zui for 80x24 fixed size

* zui: fix panic

* use real values for cpu / mem usage, hide storage table

* remove wait for capacityd to start zui

* aggregate cpu values in zui

* fix cpu percentage

* refactor cpu rendering

* fix types

* fix cpu monitor

Co-authored-by: Maxime Daniel <[email protected]>
Co-authored-by: Muhamad Azamy <[email protected]>
  • Loading branch information
3 people authored Nov 26, 2020
1 parent 3fbbc8e commit 82374ea
Show file tree
Hide file tree
Showing 10 changed files with 86 additions and 221 deletions.
68 changes: 0 additions & 68 deletions cmds/zui/cpu.go

This file was deleted.

1 change: 1 addition & 0 deletions cmds/zui/disk.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ func diskRender(client zbus.Client, grid *ui.Grid, render *Flag) error {
pools := widgets.NewTable()
pools.Title = "Storage Pools"
pools.RowSeparator = false
pools.TextAlignment = ui.AlignCenter
pools.Rows = [][]string{
{"POOL", "TOTAL", "USED"},
}
Expand Down
18 changes: 10 additions & 8 deletions cmds/zui/header.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/threefoldtech/zos/pkg/stubs"
)

// func headerRenderer(c zbus.Client, h *widgets.Paragraph, r *Flag) error {
func headerRenderer(c zbus.Client, h *widgets.Paragraph, r *Flag) error {
env, err := environment.Get()
if err != nil {
Expand All @@ -22,14 +23,18 @@ func headerRenderer(c zbus.Client, h *widgets.Paragraph, r *Flag) error {
var farm string
farmID, err := identity.FarmID()
if err != nil {
farm = "not attached to a farm"
farm = "not set"
} else {
farm = fmt.Sprintf("%d", farmID)
}

format := fmt.Sprintf("Zero OS [%s] Version: %%s NodeID: %s FarmID: %s", env.RunningMode.String(), nodeID.Identity(), farm)
h.Text = "\n Fetching realtime node information... please wait."

h.Text = "Zero OS"
var s string
s = " Welcome to [Zero-OS](fg:yellow), [ThreeFold](fg:blue) Autonomous Operating System\n" +
"\n" +
" This is node [%s](fg:green) (farmer [%s](fg:green))\n" +
" running Zero-OS version [%s](fg:blue) (mode [%s](fg:cyan))"

host := stubs.NewVersionMonitorStub(c)
ctx := context.Background()
Expand All @@ -40,11 +45,8 @@ func headerRenderer(c zbus.Client, h *widgets.Paragraph, r *Flag) error {

go func() {
for version := range ch {
v := fmt.Sprintf(format, version.String())
if h.Text != v {
h.Text = v
r.Signal()
}
h.Text = fmt.Sprintf(s, nodeID, farm, version.String(), env.RunningMode.String())
r.Signal()
}
}()

Expand Down
79 changes: 14 additions & 65 deletions cmds/zui/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,78 +60,28 @@ func main() {

defer ui.Close()

width, height := ui.TerminalDimensions()
header := widgets.NewParagraph()
header.Border = false
grid := ui.NewGrid()

headerHeight := 3
header.SetRect(0, -1, width, headerHeight)
//header.Text = "ZeroOS"
header.TextStyle = ui.Style{
Fg: ui.ColorBlue,
Bg: ui.ColorClear,
Modifier: ui.ModifierBold,
}
grid.Title = "System"

grid.SetRect(0, headerHeight-2, width, height)

cpu := ui.NewGrid()
cpu.Title = "CPU"
cpu.Border = true
width, _ := ui.TerminalDimensions()

mem := ui.NewGrid()
mem.Title = "Memory"
mem.Border = true

net := ui.NewGrid()
net.Title = "Network"
net.Border = true
header := widgets.NewParagraph()
header.Border = true
header.SetRect(0, 0, width, 6)

disk := ui.NewGrid()
disk.Title = "Disk"
disk.Border = true
netgrid := ui.NewGrid()
netgrid.Title = "Network"
netgrid.SetRect(0, 6, width, 12)

provision := ui.NewGrid()
// split in 10 parts
cell := ui.NewGrid()

cell.Set(
ui.NewRow(4.5/6, disk),
ui.NewRow(1.5/6, provision),
)

grid.Set(
ui.NewRow(2.0/10,
ui.NewCol(1, cpu),
),
ui.NewRow(1.0/10,
ui.NewCol(1, mem),
),
ui.NewRow(7.0/10,
ui.NewCol(1.0/2, net),
ui.NewCol(1.0/2, cell),
),
)
provision.Title = "Provision"
provision.SetRect(0, 12, width, 18)
provision.Border = false

var flag Flag

if err := headerRenderer(client, header, &flag); err != nil {
log.Error().Err(err).Msg("failed to start header renderer")
}
if err := cpuRender(client, cpu, &flag); err != nil {
log.Error().Err(err).Msg("failed to start cpu renderer")
}
if err := memRender(client, mem, &flag); err != nil {
log.Error().Err(err).Msg("failed to start mem renderer")
}

if err := netRender(client, net, &flag); err != nil {
log.Error().Err(err).Msg("failed to start net renderer")
}

if err := diskRender(client, disk, &flag); err != nil {
if err := netRender(client, netgrid, &flag); err != nil {
log.Error().Err(err).Msg("failed to start net renderer")
}

Expand All @@ -140,10 +90,9 @@ func main() {
}

render := func() {
ui.Render(header, grid)
ui.Render(header, netgrid, provision)
}

ui.Clear()
render()

uiEvents := ui.PollEvents()
Expand All @@ -155,8 +104,8 @@ func main() {
return
case "<Resize>":
payload := e.Payload.(ui.Resize)
header.SetRect(0, 0, payload.Width, headerHeight)
grid.SetRect(0, headerHeight, payload.Width, payload.Height-headerHeight)
header.SetRect(0, 0, payload.Width, 3)
// grid.SetRect(0, 3, payload.Width, payload.Height)
ui.Clear()
render()
}
Expand Down
55 changes: 8 additions & 47 deletions cmds/zui/net.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,27 @@ package main

import (
"context"
"fmt"
_ "fmt"
"strings"

ui "github.com/gizak/termui/v3"
"github.com/gizak/termui/v3/widgets"
"github.com/pkg/errors"
_ "github.com/pkg/errors"
"github.com/threefoldtech/zbus"
"github.com/threefoldtech/zos/pkg"
"github.com/threefoldtech/zos/pkg/stubs"
)

func addressRender(ctx context.Context, table *widgets.Table, client zbus.Client, render *Flag) error {
table.Title = "Addresses"
table.Title = "Network"
table.FillRow = true
table.RowSeparator = false

table.Rows = [][]string{
{"ZOS", "Not Configured"},
{"DMZ", "Not Configured"},
{"Ygg", "Not Configured"},
{"Public", "Not Configured"},
{"ZOS", "Not configured"},
{"DMZ", "Not configured"},
{"YGG", "Not configured"},
{"PUB", "Not configured"},
}

stub := stubs.NewNetworkerStub(client)
Expand Down Expand Up @@ -82,56 +82,17 @@ func addressRender(ctx context.Context, table *widgets.Table, client zbus.Client

func netRender(client zbus.Client, grid *ui.Grid, render *Flag) error {
addresses := widgets.NewTable()
statistics := widgets.NewTable()

statistics.Title = "Traffic"
statistics.RowSeparator = false
statistics.Rows = [][]string{
{"NIC", "SENT", "RECV"},
}

grid.Set(
ui.NewRow(1./6,
ui.NewRow(1,
ui.NewCol(1, addresses),
),
ui.NewRow(5.0/6,
ui.NewCol(1, statistics),
),
)

ctx := context.Background()

if err := addressRender(ctx, addresses, client, render); err != nil {
return err
}

monitor := stubs.NewSystemMonitorStub(client)
stats, err := monitor.Nics(ctx)
if err != nil {
return errors.Wrap(err, "failed to start net monitor stream")
}

go func() {
for s := range stats {
// keep the header
rows := statistics.Rows[:1]
for _, nic := range s {
if nic.Name == "lo" {
continue
}
rows = append(rows,
[]string{
nic.Name,
fmt.Sprintf("%d KB", nic.RateOut/1024),
fmt.Sprintf("%d KB", nic.RateIn/1024),
},
)
}

statistics.Rows = rows
render.Signal()
}
}()

return nil
}
51 changes: 38 additions & 13 deletions cmds/zui/prov.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,15 @@ import (
)

func provisionRender(client zbus.Client, grid *ui.Grid, render *Flag) error {

prov := widgets.NewTable()
prov.Title = "Workloads"
prov.Title = "System Load"
prov.RowSeparator = false

prov.Rows = [][]string{
{"Containers", ""},
{"Volumes", ""},
{"Networks", ""},
{"VMs", ""},
{"ZDB Namespaces", ""},
{"Debug", ""},
{"CPU Usage", "", "Memory Usage", ""},
{"Containers", "", "Volumes", ""},
{"Networks", "", "VMs", ""},
{"ZDB NS", "", "Debug", ""},
}

grid.Set(
Expand All @@ -43,13 +40,41 @@ func provisionRender(client zbus.Client, grid *ui.Grid, render *Flag) error {
go func() {
for counter := range counters {
rows := prov.Rows
rows[0][1] = fmt.Sprint(counter.Container)
rows[1][1] = fmt.Sprint(counter.Volume)
rows[1][1] = fmt.Sprint(counter.Container)
rows[1][3] = fmt.Sprint(counter.Volume)
rows[2][1] = fmt.Sprint(counter.Network)
rows[3][1] = fmt.Sprint(counter.VM)
rows[4][1] = fmt.Sprint(counter.ZDB)
rows[5][1] = fmt.Sprint(counter.Debug)
rows[2][3] = fmt.Sprint(counter.VM)
rows[3][1] = fmt.Sprint(counter.ZDB)
rows[3][3] = fmt.Sprint(counter.Debug)

render.Signal()
}
}()

sysMonitor := stubs.NewSystemMonitorStub(client)
stream, err := sysMonitor.CPU(context.Background())
if err != nil {
return errors.Wrap(err, "failed to start cpu monitor stream")
}

go func() {
for point := range stream {
prov.Mutex.Lock()
prov.Rows[0][1] = fmt.Sprintf("%0.00f%%", point.Percent)
render.Signal()
prov.Mutex.Unlock()
}
}()

memoryMonitor := stubs.NewSystemMonitorStub(client)
memStream, err := memoryMonitor.Memory(context.Background())
if err != nil {
return errors.Wrap(err, "failed to start mem monitor stream")
}

go func() {
for point := range memStream {
prov.Rows[0][3] = fmt.Sprintf("%0.00f%%", point.UsedPercent)
render.Signal()
}
}()
Expand Down
Loading

0 comments on commit 82374ea

Please sign in to comment.