Files
weave-scope/probe/kubernetes/deployment.go
Mike Lang 889972c48a Display node type on k8s controller nodes
Since there are multiple types in the same topology, displaying the type is important.
We do this in multiple places:

* Add node type to minor label

* Add node type as metadata and include in metadata template.
  Even though this will always be the same for every node of that topology, this was
  the easiest way to add it so it displays in the table view.
  Note we can't control ordering of columns in table view, it's always alphabetical.
2017-06-27 10:19:04 -07:00

60 lines
1.7 KiB
Go

package kubernetes
import (
"fmt"
"github.com/weaveworks/scope/report"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/labels"
)
// These constants are keys used in node metadata
const (
UpdatedReplicas = "kubernetes_updated_replicas"
AvailableReplicas = "kubernetes_available_replicas"
UnavailableReplicas = "kubernetes_unavailable_replicas"
Strategy = "kubernetes_strategy"
)
// Deployment represents a Kubernetes deployment
type Deployment interface {
Meta
Selector() (labels.Selector, error)
GetNode(probeID string) report.Node
}
type deployment struct {
*extensions.Deployment
Meta
Node *api.Node
}
// NewDeployment creates a new Deployment
func NewDeployment(d *extensions.Deployment) Deployment {
return &deployment{Deployment: d, Meta: meta{d.ObjectMeta}}
}
func (d *deployment) Selector() (labels.Selector, error) {
selector, err := unversioned.LabelSelectorAsSelector(d.Spec.Selector)
if err != nil {
return nil, err
}
return selector, nil
}
func (d *deployment) GetNode(probeID string) report.Node {
return d.MetaNode(report.MakeDeploymentNodeID(d.UID())).WithLatests(map[string]string{
ObservedGeneration: fmt.Sprint(d.Status.ObservedGeneration),
DesiredReplicas: fmt.Sprint(d.Spec.Replicas),
Replicas: fmt.Sprint(d.Status.Replicas),
UpdatedReplicas: fmt.Sprint(d.Status.UpdatedReplicas),
AvailableReplicas: fmt.Sprint(d.Status.AvailableReplicas),
UnavailableReplicas: fmt.Sprint(d.Status.UnavailableReplicas),
Strategy: string(d.Spec.Strategy.Type),
report.ControlProbeID: probeID,
NodeType: "Deployment",
}).WithLatestActiveControls(ScaleUp, ScaleDown)
}