mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-02 17:50:39 +00:00
Merge pull request #918 from weaveworks/k8s-efficiency
Compile k8s selectors once (not for each pod)
This commit is contained in:
@@ -2,6 +2,7 @@ package kubernetes
|
||||
|
||||
import (
|
||||
"github.com/weaveworks/scope/report"
|
||||
"k8s.io/kubernetes/pkg/labels"
|
||||
)
|
||||
|
||||
// Reporter generate Reports containing Container and ContainerImage topologies
|
||||
@@ -52,10 +53,14 @@ func (r *Reporter) serviceTopology() (report.Topology, []Service, error) {
|
||||
|
||||
func (r *Reporter) podTopology(services []Service) (report.Topology, report.Topology, error) {
|
||||
pods, containers := report.MakeTopology(), report.MakeTopology()
|
||||
selectors := map[string]labels.Selector{}
|
||||
for _, service := range services {
|
||||
selectors[service.ID()] = service.Selector()
|
||||
}
|
||||
err := r.client.WalkPods(func(p Pod) error {
|
||||
for _, service := range services {
|
||||
if service.Selector().Matches(p.Labels()) {
|
||||
p.AddServiceID(service.ID())
|
||||
for serviceID, selector := range selectors {
|
||||
if selector.Matches(p.Labels()) {
|
||||
p.AddServiceID(serviceID)
|
||||
}
|
||||
}
|
||||
nodeID := report.MakePodNodeID(p.Namespace(), p.Name())
|
||||
|
||||
Reference in New Issue
Block a user