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)
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
}

View File

@ -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: