Fix kubectl describe for controllerRef

This commit is contained in:
Deyuan Deng
2017-05-08 09:42:11 +08:00
parent 5eccc7ae80
commit c73b535d16
2 changed files with 105 additions and 5 deletions

View File

@@ -1421,7 +1421,7 @@ func (d *ReplicationControllerDescriber) Describe(namespace, name string, descri
return "", err
}
running, waiting, succeeded, failed, err := getPodStatusForController(pc, labels.SelectorFromSet(controller.Spec.Selector))
running, waiting, succeeded, failed, err := getPodStatusForController(pc, labels.SelectorFromSet(controller.Spec.Selector), controller.UID)
if err != nil {
return "", err
}
@@ -1498,7 +1498,7 @@ func (d *ReplicaSetDescriber) Describe(namespace, name string, describerSettings
return "", err
}
running, waiting, succeeded, failed, getPodErr := getPodStatusForController(pc, selector)
running, waiting, succeeded, failed, getPodErr := getPodStatusForController(pc, selector, rs.UID)
var events *api.EventList
if describerSettings.ShowEvents {
@@ -1698,7 +1698,7 @@ func (d *DaemonSetDescriber) Describe(namespace, name string, describerSettings
if err != nil {
return "", err
}
running, waiting, succeeded, failed, err := getPodStatusForController(pc, selector)
running, waiting, succeeded, failed, err := getPodStatusForController(pc, selector, daemon.UID)
if err != nil {
return "", err
}
@@ -2452,7 +2452,7 @@ func (p *StatefulSetDescriber) Describe(namespace, name string, describerSetting
return "", err
}
running, waiting, succeeded, failed, err := getPodStatusForController(pc, selector)
running, waiting, succeeded, failed, err := getPodStatusForController(pc, selector, ps.UID)
if err != nil {
return "", err
}
@@ -2837,13 +2837,18 @@ func printReplicaSetsByLabels(matchingRSs []*versionedextension.ReplicaSet) stri
return list
}
func getPodStatusForController(c coreclient.PodInterface, selector labels.Selector) (running, waiting, succeeded, failed int, err error) {
func getPodStatusForController(c coreclient.PodInterface, selector labels.Selector, uid types.UID) (running, waiting, succeeded, failed int, err error) {
options := metav1.ListOptions{LabelSelector: selector.String()}
rcPods, err := c.List(options)
if err != nil {
return
}
for _, pod := range rcPods.Items {
controllerRef := controller.GetControllerOf(&pod)
// Skip pods that are orphans or owned by other controllers.
if controllerRef == nil || controllerRef.UID != uid {
continue
}
switch pod.Status.Phase {
case api.PodRunning:
running++