refact clusterinfo

mine
derailed 2019-06-21 18:59:08 -06:00
parent b77661a0cb
commit eac37bbe6b
2 changed files with 37 additions and 21 deletions

View File

@ -43,6 +43,7 @@ func (v *clusterInfoView) init(version string) {
cluster := resource.NewCluster(v.app.conn(), &log.Logger, v.mxs) cluster := resource.NewCluster(v.app.conn(), &log.Logger, v.mxs)
row := v.initInfo(version, cluster) row := v.initInfo(version, cluster)
row = v.initVersion(row, version, cluster)
v.SetCell(row, 0, v.sectionCell("CPU")) v.SetCell(row, 0, v.sectionCell("CPU"))
v.SetCell(row, 1, v.infoCell(resource.NAValue)) 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())) v.SetCell(row, 1, v.infoCell(cluster.UserName()))
row++ 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, 0, v.sectionCell("K9s Rev"))
v.SetCell(row, 1, v.infoCell(version)) v.SetCell(row, 1, v.infoCell(version))
row++ row++
@ -119,15 +124,24 @@ func (v *clusterInfoView) refresh() {
v.refreshMetrics(cluster, row) 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{}) nos, err := v.app.informer.List(watch.NodeIndex, "", metav1.ListOptions{})
if err != nil { if err != nil {
log.Warn().Err(err).Msg("ListNodes") return nil, nil, err
return
} }
nmx, err := v.app.informer.List(watch.NodeMXIndex, "", metav1.ListOptions{}) nmx, err := v.app.informer.List(watch.NodeMXIndex, "", metav1.ListOptions{})
if err != nil { 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 return
} }

View File

@ -88,23 +88,7 @@ func (v *flashView) setMessage(level flashLevel, msg ...string) {
var timerCancel context.CancelFunc var timerCancel context.CancelFunc
ctx1, v.cancel = context.WithCancel(context.TODO()) ctx1, v.cancel = context.WithCancel(context.TODO())
ctx2, timerCancel = context.WithTimeout(context.TODO(), flashDelay*time.Second) ctx2, timerCancel = context.WithTimeout(context.TODO(), flashDelay*time.Second)
go func(ctx1, ctx2 context.Context, timerCancel context.CancelFunc) { go v.refresh(ctx1, ctx2, timerCancel)
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)
} }
_, _, width, _ := v.GetRect() _, _, width, _ := v.GetRect()
if width <= 15 { if width <= 15 {
@ -115,6 +99,24 @@ func (v *flashView) setMessage(level flashLevel, msg ...string) {
v.SetText(resource.Truncate(flashEmoji(level)+" "+m, width-3)) 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 { func flashEmoji(l flashLevel) string {
switch l { switch l {
case flashWarn: case flashWarn: