fix metrics update
parent
8fedc42304
commit
7d703ba434
|
|
@ -48,7 +48,7 @@ func init() {
|
|||
if err := flag.Set("log_file", config.K9sLogs); err != nil {
|
||||
log.Error().Err(err)
|
||||
}
|
||||
if err := flag.Set("stderrthreshold", "fatal"); err != nil {
|
||||
if err := flag.Set("stderrthreshold", "error"); err != nil {
|
||||
log.Error().Err(err)
|
||||
}
|
||||
if err := flag.Set("alsologtostderr", falseFlag); err != nil {
|
||||
|
|
|
|||
|
|
@ -99,6 +99,10 @@ func (m *MetricsServer) FetchNodesMetrics() (*mv1beta1.NodeMetricsList, error) {
|
|||
// FetchPodsMetrics return all metrics for pods in a given namespace.
|
||||
func (m *MetricsServer) FetchPodsMetrics(ns string) (*mv1beta1.PodMetricsList, error) {
|
||||
var mx mv1beta1.PodMetricsList
|
||||
if m.Connection == nil {
|
||||
return &mx, fmt.Errorf("no client connection")
|
||||
}
|
||||
|
||||
if !m.HasMetrics() {
|
||||
return &mx, fmt.Errorf("No metrics-server detected on cluster")
|
||||
}
|
||||
|
|
@ -123,12 +127,16 @@ func (m *MetricsServer) FetchPodsMetrics(ns string) (*mv1beta1.PodMetricsList, e
|
|||
}
|
||||
|
||||
// FetchPodMetrics return all metrics for pods in a given namespace.
|
||||
func (m *MetricsServer) FetchPodMetrics(ns, sel string) (*mv1beta1.PodMetrics, error) {
|
||||
func (m *MetricsServer) FetchPodMetrics(fqn string) (*mv1beta1.PodMetrics, error) {
|
||||
var mx mv1beta1.PodMetrics
|
||||
if m.Connection == nil {
|
||||
return &mx, fmt.Errorf("no client connection")
|
||||
}
|
||||
if !m.HasMetrics() {
|
||||
return &mx, fmt.Errorf("No metrics-server detected on cluster")
|
||||
}
|
||||
|
||||
ns, _ := Namespaced(fqn)
|
||||
if ns == NamespaceAll {
|
||||
ns = AllNamespaces
|
||||
}
|
||||
|
|
@ -145,7 +153,7 @@ func (m *MetricsServer) FetchPodMetrics(ns, sel string) (*mv1beta1.PodMetrics, e
|
|||
return &mx, err
|
||||
}
|
||||
|
||||
return client.MetricsV1beta1().PodMetricses(ns).Get(sel, metav1.GetOptions{})
|
||||
return client.MetricsV1beta1().PodMetricses(ns).Get(fqn, metav1.GetOptions{})
|
||||
}
|
||||
|
||||
// PodsMetrics retrieves metrics for all pods in a given namespace.
|
||||
|
|
|
|||
|
|
@ -38,15 +38,14 @@ func (c *Container) List(ctx context.Context, _ string) ([]runtime.Object, error
|
|||
return nil, err
|
||||
}
|
||||
|
||||
ns, _ := client.Namespaced(fqn)
|
||||
var pmx *mv1beta1.PodMetrics
|
||||
if c.Client().HasMetrics() {
|
||||
mx := client.NewMetricsServer(c.Client())
|
||||
if c.Client() != nil {
|
||||
var err error
|
||||
pmx, err = mx.FetchPodMetrics(ns, po.Name)
|
||||
pmx, err = mx.FetchPodMetrics(fqn)
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msgf("No metrics found for pod %q:%q", ns, po.Name)
|
||||
log.Warn().Err(err).Msgf("No metrics found for pod %q", fqn)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,16 +36,16 @@ func (n *Node) List(ctx context.Context, ns string) ([]runtime.Object, error) {
|
|||
log.Warn().Msgf("No label selector found in context")
|
||||
}
|
||||
|
||||
nmx, ok := ctx.Value(internal.KeyMetrics).(*mv1beta1.NodeMetricsList)
|
||||
if !ok {
|
||||
log.Warn().Msgf("No node metrics available in context")
|
||||
mx := client.NewMetricsServer(n.Client())
|
||||
nmx, err := mx.FetchNodesMetrics()
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msgf("No node metrics")
|
||||
}
|
||||
|
||||
nn, err := FetchNodes(n.Factory, labels)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
oo := make([]runtime.Object, len(nn.Items))
|
||||
for i, no := range nn.Items {
|
||||
o, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&nn.Items[i])
|
||||
|
|
|
|||
|
|
@ -50,9 +50,13 @@ func (p *Pod) Get(ctx context.Context, path string) (runtime.Object, error) {
|
|||
}
|
||||
|
||||
// No Deal!
|
||||
pmx, _ := ctx.Value(internal.KeyMetrics).(*mv1beta1.PodMetricsList)
|
||||
mx := client.NewMetricsServer(p.Client())
|
||||
pmx, err := mx.FetchPodMetrics(path)
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msgf("No pods metrics")
|
||||
}
|
||||
|
||||
return &render.PodWithMetrics{Raw: u, MX: podMetricsFor(o, pmx)}, nil
|
||||
return &render.PodWithMetrics{Raw: u, MX: pmx}, nil
|
||||
}
|
||||
|
||||
// List returns a collection of nodes.
|
||||
|
|
@ -72,8 +76,11 @@ func (p *Pod) List(ctx context.Context, ns string) ([]runtime.Object, error) {
|
|||
return oo, err
|
||||
}
|
||||
|
||||
// No Deal!
|
||||
pmx, _ := ctx.Value(internal.KeyMetrics).(*mv1beta1.PodMetricsList)
|
||||
mx := client.NewMetricsServer(p.Client())
|
||||
pmx, err := mx.FetchPodsMetrics(ns)
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msgf("No pods metrics")
|
||||
}
|
||||
|
||||
var res []runtime.Object
|
||||
for _, o := range oo {
|
||||
|
|
|
|||
|
|
@ -89,7 +89,6 @@ func (c *Configurator) RefreshStyles(context string) {
|
|||
if err := c.Styles.Load(clusterSkins); err != nil {
|
||||
log.Info().Msgf("No context specific skin file found -- %s", clusterSkins)
|
||||
} else {
|
||||
log.Debug().Msgf("Found context skins %s", clusterSkins)
|
||||
c.updateStyles(clusterSkins)
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@ func (s *StatusIndicator) ClusterInfoUpdated(data model.ClusterMeta) {
|
|||
data.Cluster,
|
||||
data.User,
|
||||
data.K8sVer,
|
||||
render.AsPerc(data.Cpu)+"%",
|
||||
render.AsPerc(data.Mem)+"%",
|
||||
render.AsPerc(data.Cpu),
|
||||
render.AsPerc(data.Mem),
|
||||
))
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,10 @@
|
|||
package view
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/derailed/k9s/internal"
|
||||
"github.com/derailed/k9s/internal/client"
|
||||
"github.com/derailed/k9s/internal/dao"
|
||||
"github.com/derailed/k9s/internal/ui"
|
||||
"github.com/gdamore/tcell"
|
||||
"github.com/rs/zerolog/log"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
|
|
@ -24,7 +20,6 @@ func NewNode(gvr client.GVR) ResourceViewer {
|
|||
}
|
||||
n.SetBindKeysFn(n.bindKeys)
|
||||
n.GetTable().SetEnterFn(n.showPods)
|
||||
n.SetContextFn(n.nodeContext)
|
||||
|
||||
return &n
|
||||
}
|
||||
|
|
@ -40,20 +35,6 @@ func (n *Node) bindKeys(aa ui.KeyActions) {
|
|||
})
|
||||
}
|
||||
|
||||
func (n *Node) nodeContext(ctx context.Context) context.Context {
|
||||
if !n.App().Conn().HasMetrics() {
|
||||
return ctx
|
||||
}
|
||||
|
||||
mx := client.NewMetricsServer(n.App().factory.Client())
|
||||
nmx, err := mx.FetchNodesMetrics()
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msgf("No node metrics")
|
||||
}
|
||||
|
||||
return context.WithValue(ctx, internal.KeyMetrics, nmx)
|
||||
}
|
||||
|
||||
func (n *Node) showPods(app *App, _ ui.Tabular, _, path string) {
|
||||
showPods(app, n.GetTable().GetSelectedItem(), "", "spec.nodeName="+path)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ func NewPod(gvr client.GVR) ResourceViewer {
|
|||
p.SetBindKeysFn(p.bindKeys)
|
||||
p.GetTable().SetEnterFn(p.showContainers)
|
||||
p.GetTable().SetColorerFn(render.Pod{}.ColorerFunc())
|
||||
p.SetContextFn(p.podContext)
|
||||
|
||||
return &p
|
||||
}
|
||||
|
|
@ -64,20 +63,6 @@ func (p *Pod) showContainers(app *App, model ui.Tabular, gvr, path string) {
|
|||
}
|
||||
}
|
||||
|
||||
func (p *Pod) podContext(ctx context.Context) context.Context {
|
||||
ns, ok := ctx.Value(internal.KeyNamespace).(string)
|
||||
if !ok {
|
||||
log.Error().Err(fmt.Errorf("Expecting context namespace"))
|
||||
}
|
||||
|
||||
mx := client.NewMetricsServer(p.App().factory.Client())
|
||||
nmx, err := mx.FetchPodsMetrics(ns)
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msgf("No pods metrics")
|
||||
}
|
||||
return context.WithValue(ctx, internal.KeyMetrics, nmx)
|
||||
}
|
||||
|
||||
func (p *Pod) coContext(ctx context.Context) context.Context {
|
||||
return context.WithValue(ctx, internal.KeyPath, p.GetTable().GetSelectedItem())
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue