From eac37bbe6bca9ca825f3d30cb52d5a39cbf404e1 Mon Sep 17 00:00:00 2001 From: derailed Date: Fri, 21 Jun 2019 18:59:08 -0600 Subject: [PATCH] refact clusterinfo --- internal/views/cluster_info.go | 22 +++++++++++++++++---- internal/views/flash.go | 36 ++++++++++++++++++---------------- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/internal/views/cluster_info.go b/internal/views/cluster_info.go index 90addf96..a6971f83 100644 --- a/internal/views/cluster_info.go +++ b/internal/views/cluster_info.go @@ -43,6 +43,7 @@ func (v *clusterInfoView) init(version string) { cluster := resource.NewCluster(v.app.conn(), &log.Logger, v.mxs) row := v.initInfo(version, cluster) + row = v.initVersion(row, version, cluster) v.SetCell(row, 0, v.sectionCell("CPU")) v.SetCell(row, 1, v.infoCell(resource.NAValue)) @@ -67,6 +68,10 @@ func (v *clusterInfoView) initInfo(version string, cluster *resource.Cluster) in v.SetCell(row, 1, v.infoCell(cluster.UserName())) row++ + return row +} + +func (v *clusterInfoView) initVersion(row int, version string, cluster *resource.Cluster) int { v.SetCell(row, 0, v.sectionCell("K9s Rev")) v.SetCell(row, 1, v.infoCell(version)) row++ @@ -119,15 +124,24 @@ func (v *clusterInfoView) refresh() { v.refreshMetrics(cluster, row) } -func (v *clusterInfoView) refreshMetrics(cluster *resource.Cluster, row int) { +func (v *clusterInfoView) fetchResources() (k8s.Collection, k8s.Collection, error) { nos, err := v.app.informer.List(watch.NodeIndex, "", metav1.ListOptions{}) if err != nil { - log.Warn().Err(err).Msg("ListNodes") - return + return nil, nil, err } + nmx, err := v.app.informer.List(watch.NodeMXIndex, "", metav1.ListOptions{}) if err != nil { - log.Warn().Err(err).Msg("ListNodeMetrics") + return nil, nil, err + } + + return nos, nmx, nil +} + +func (v *clusterInfoView) refreshMetrics(cluster *resource.Cluster, row int) { + nos, nmx, err := v.fetchResources() + if err != nil { + log.Warn().Err(err).Msg("NodeMetrics") return } diff --git a/internal/views/flash.go b/internal/views/flash.go index 43884b06..ca0760bd 100644 --- a/internal/views/flash.go +++ b/internal/views/flash.go @@ -88,23 +88,7 @@ func (v *flashView) setMessage(level flashLevel, msg ...string) { var timerCancel context.CancelFunc ctx1, v.cancel = context.WithCancel(context.TODO()) ctx2, timerCancel = context.WithTimeout(context.TODO(), flashDelay*time.Second) - go func(ctx1, ctx2 context.Context, timerCancel context.CancelFunc) { - defer timerCancel() - for { - select { - // Timer canceled bail now - case <-ctx1.Done(): - return - // Timed out clear and bail - case <-ctx2.Done(): - v.app.QueueUpdateDraw(func() { - v.Clear() - v.app.Draw() - }) - return - } - } - }(ctx1, ctx2, timerCancel) + go v.refresh(ctx1, ctx2, timerCancel) } _, _, width, _ := v.GetRect() if width <= 15 { @@ -115,6 +99,24 @@ func (v *flashView) setMessage(level flashLevel, msg ...string) { v.SetText(resource.Truncate(flashEmoji(level)+" "+m, width-3)) } +func (v *flashView) refresh(ctx1, ctx2 context.Context, cancel context.CancelFunc) { + defer cancel() + for { + select { + // Timer canceled bail now + case <-ctx1.Done(): + return + // Timed out clear and bail + case <-ctx2.Done(): + v.app.QueueUpdateDraw(func() { + v.Clear() + v.app.Draw() + }) + return + } + } +} + func flashEmoji(l flashLevel) string { switch l { case flashWarn: