fix(container): avoid duplicate Wayne workload rows
This commit is contained in:
@@ -65,6 +65,7 @@ func (s *WayneRoleBindingService) ContainerServiceData(ctx context.Context, quer
|
|||||||
}
|
}
|
||||||
workloads := make([]ContainerWorkload, 0)
|
workloads := make([]ContainerWorkload, 0)
|
||||||
clusterNodes := map[string]wayneNodeSummary{}
|
clusterNodes := map[string]wayneNodeSummary{}
|
||||||
|
seenWorkloads := map[string]struct{}{}
|
||||||
errors := make([]string, 0)
|
errors := make([]string, 0)
|
||||||
|
|
||||||
for _, binding := range query.Namespaces {
|
for _, binding := range query.Namespaces {
|
||||||
@@ -88,6 +89,11 @@ func (s *WayneRoleBindingService) ContainerServiceData(ctx context.Context, quer
|
|||||||
errors = append(errors, fmt.Sprintf("namespace %d apps: %v", binding.WayneNamespaceID, err))
|
errors = append(errors, fmt.Sprintf("namespace %d apps: %v", binding.WayneNamespaceID, err))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if len(apps) == 0 {
|
||||||
|
errors = append(errors, fmt.Sprintf("namespace %d has no apps for deployment query", binding.WayneNamespaceID))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
appID := apps[0].ID
|
||||||
for _, cluster := range clusters {
|
for _, cluster := range clusters {
|
||||||
if _, ok := clusterNodes[cluster]; !ok {
|
if _, ok := clusterNodes[cluster]; !ok {
|
||||||
nodes, err := s.getWayneNodes(ctx, cluster)
|
nodes, err := s.getWayneNodes(ctx, cluster)
|
||||||
@@ -97,21 +103,24 @@ func (s *WayneRoleBindingService) ContainerServiceData(ctx context.Context, quer
|
|||||||
clusterNodes[cluster] = nodes
|
clusterNodes[cluster] = nodes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, app := range apps {
|
items, err := s.listWayneDeployments(ctx, appID, kubeNamespace, cluster)
|
||||||
items, err := s.listWayneDeployments(ctx, app.ID, kubeNamespace, cluster)
|
if err != nil {
|
||||||
if err != nil {
|
errors = append(errors, fmt.Sprintf("namespace %d cluster %s app %d deployments: %v", binding.WayneNamespaceID, cluster, appID, err))
|
||||||
errors = append(errors, fmt.Sprintf("namespace %d cluster %s app %d deployments: %v", binding.WayneNamespaceID, cluster, app.ID, err))
|
continue
|
||||||
|
}
|
||||||
|
for _, item := range items {
|
||||||
|
workload := containerWorkloadFromMap(item, cluster, kubeNamespace, query.BusinessLineName)
|
||||||
|
if workload.Name == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for _, item := range items {
|
key := strings.Join([]string{workload.Cluster, workload.Namespace, workload.Workload, workload.Name}, "\x00")
|
||||||
workload := containerWorkloadFromMap(item, cluster, kubeNamespace, query.BusinessLineName)
|
if _, ok := seenWorkloads[key]; ok {
|
||||||
if workload.Name == "" {
|
continue
|
||||||
continue
|
|
||||||
}
|
|
||||||
workloads = append(workloads, workload)
|
|
||||||
summary.Pods += workload.Pods
|
|
||||||
summary.ReadyPods += workload.ReadyPods
|
|
||||||
}
|
}
|
||||||
|
seenWorkloads[key] = struct{}{}
|
||||||
|
workloads = append(workloads, workload)
|
||||||
|
summary.Pods += workload.Pods
|
||||||
|
summary.ReadyPods += workload.ReadyPods
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user