mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-03 10:11:03 +00:00
probe/kubernetes: Propagate errors in getting label selectors
This commit is contained in:
@@ -18,7 +18,7 @@ const (
|
||||
// DaemonSet represents a Kubernetes daemonset
|
||||
type DaemonSet interface {
|
||||
Meta
|
||||
Selector() labels.Selector
|
||||
Selector() (labels.Selector, error)
|
||||
GetNode() report.Node
|
||||
}
|
||||
|
||||
@@ -35,13 +35,12 @@ func NewDaemonSet(d *extensions.DaemonSet) DaemonSet {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *daemonSet) Selector() labels.Selector {
|
||||
func (d *daemonSet) Selector() (labels.Selector, error) {
|
||||
selector, err := unversioned.LabelSelectorAsSelector(d.Spec.Selector)
|
||||
if err != nil {
|
||||
// TODO(paulbellamy): Remove the panic!
|
||||
panic(err)
|
||||
return nil, err
|
||||
}
|
||||
return selector
|
||||
return selector, nil
|
||||
}
|
||||
|
||||
func (d *daemonSet) GetNode() report.Node {
|
||||
|
||||
@@ -21,7 +21,7 @@ const (
|
||||
// Deployment represents a Kubernetes deployment
|
||||
type Deployment interface {
|
||||
Meta
|
||||
Selector() labels.Selector
|
||||
Selector() (labels.Selector, error)
|
||||
GetNode(probeID string) report.Node
|
||||
}
|
||||
|
||||
@@ -36,13 +36,12 @@ func NewDeployment(d *extensions.Deployment) Deployment {
|
||||
return &deployment{Deployment: d, Meta: meta{d.ObjectMeta}}
|
||||
}
|
||||
|
||||
func (d *deployment) Selector() labels.Selector {
|
||||
func (d *deployment) Selector() (labels.Selector, error) {
|
||||
selector, err := unversioned.LabelSelectorAsSelector(d.Spec.Selector)
|
||||
if err != nil {
|
||||
// TODO(paulbellamy): Remove the panic!
|
||||
panic(err)
|
||||
return nil, err
|
||||
}
|
||||
return selector
|
||||
return selector, nil
|
||||
}
|
||||
|
||||
func (d *deployment) GetNode(probeID string) report.Node {
|
||||
|
||||
@@ -18,7 +18,7 @@ const (
|
||||
// ReplicaSet represents a Kubernetes replica set
|
||||
type ReplicaSet interface {
|
||||
Meta
|
||||
Selector() labels.Selector
|
||||
Selector() (labels.Selector, error)
|
||||
AddParent(topology, id string)
|
||||
GetNode(probeID string) report.Node
|
||||
}
|
||||
@@ -39,13 +39,12 @@ func NewReplicaSet(r *extensions.ReplicaSet) ReplicaSet {
|
||||
}
|
||||
}
|
||||
|
||||
func (r *replicaSet) Selector() labels.Selector {
|
||||
func (r *replicaSet) Selector() (labels.Selector, error) {
|
||||
selector, err := unversioned.LabelSelectorAsSelector(r.Spec.Selector)
|
||||
if err != nil {
|
||||
// TODO(paulbellamy): Remove the panic!
|
||||
panic(err)
|
||||
return nil, err
|
||||
}
|
||||
return selector
|
||||
return selector, nil
|
||||
}
|
||||
|
||||
func (r *replicaSet) AddParent(topology, id string) {
|
||||
|
||||
@@ -11,11 +11,12 @@ import (
|
||||
// ReplicationController represents a Kubernetes replication controller
|
||||
type ReplicationController interface {
|
||||
Meta
|
||||
Selector() labels.Selector
|
||||
Selector() (labels.Selector, error)
|
||||
AddParent(topology, id string)
|
||||
GetNode(probeID string) report.Node
|
||||
}
|
||||
|
||||
// replicationController implements both ReplicationController and ReplicaSet
|
||||
type replicationController struct {
|
||||
*api.ReplicationController
|
||||
Meta
|
||||
@@ -32,11 +33,11 @@ func NewReplicationController(r *api.ReplicationController) ReplicationControlle
|
||||
}
|
||||
}
|
||||
|
||||
func (r *replicationController) Selector() labels.Selector {
|
||||
func (r *replicationController) Selector() (labels.Selector, error) {
|
||||
if r.Spec.Selector == nil {
|
||||
return labels.Nothing()
|
||||
return labels.Nothing(), nil
|
||||
}
|
||||
return labels.SelectorFromSet(labels.Set(r.Spec.Selector))
|
||||
return labels.SelectorFromSet(labels.Set(r.Spec.Selector)), nil
|
||||
}
|
||||
|
||||
func (r *replicationController) AddParent(topology, id string) {
|
||||
|
||||
@@ -317,9 +317,14 @@ func (r *Reporter) replicaSetTopology(probeID string, deployments []Deployment)
|
||||
result.Controls.AddControls(ScalingControls)
|
||||
|
||||
for _, deployment := range deployments {
|
||||
selector, err := deployment.Selector()
|
||||
if err != nil {
|
||||
return result, replicaSets, err
|
||||
}
|
||||
|
||||
selectors = append(selectors, match(
|
||||
deployment.Namespace(),
|
||||
deployment.Selector(),
|
||||
selector,
|
||||
report.Deployment,
|
||||
report.MakeDeploymentNodeID(deployment.UID()),
|
||||
))
|
||||
@@ -392,17 +397,25 @@ func (r *Reporter) podTopology(services []Service, replicaSets []ReplicaSet, dae
|
||||
))
|
||||
}
|
||||
for _, replicaSet := range replicaSets {
|
||||
selector, err := replicaSet.Selector()
|
||||
if err != nil {
|
||||
return pods, err
|
||||
}
|
||||
selectors = append(selectors, match(
|
||||
replicaSet.Namespace(),
|
||||
replicaSet.Selector(),
|
||||
selector,
|
||||
report.ReplicaSet,
|
||||
report.MakeReplicaSetNodeID(replicaSet.UID()),
|
||||
))
|
||||
}
|
||||
for _, daemonSet := range daemonSets {
|
||||
selector, err := daemonSet.Selector()
|
||||
if err != nil {
|
||||
return pods, err
|
||||
}
|
||||
selectors = append(selectors, match(
|
||||
daemonSet.Namespace(),
|
||||
daemonSet.Selector(),
|
||||
selector,
|
||||
report.DaemonSet,
|
||||
report.MakeDaemonSetNodeID(daemonSet.UID()),
|
||||
))
|
||||
|
||||
Reference in New Issue
Block a user