Skip to content

JSON Output Overwrites Results for Different Namespaces #51

@andrewtengson

Description

@andrewtengson

Problem:

The JSON output for namespace-based results overwrites previous entries, leading to loss of data for different namespaces. This occurs because the namespace is not included in the JSON path.

Expected Behavior:

Each namespace-based result should be independently added to the JSON output without overwriting others.

Actual Behavior:

Only the last namespace-based result is retained in the JSON output.

Steps to Reproduce:

  1. Generate a report with multiple namespace-based results.
  2. Observe the JSON output.

Affected Version:

<=v0.10.4

Text Output:

│ applications │ argo           │ Deploy horizontal pod autoscaler for deployments. │ argo-cd-argocd-applicationset-controller │ Deployment    │ Link       │ 
│ applications │ dynatrace      │ Deploy horizontal pod autoscaler for deployments. │ dynatrace-operator                       │ Deployment    │ Link       │ 
│ applications │ port           │ Deploy horizontal pod autoscaler for deployments. │                                          │ Deployment    │ Link       │ 

JSON Output:

{
  "namespace_based": {
    "reliability": {
      "applications": {
        {
          "Deploy horizontal pod autoscaler for deployments.": {
            "status": true,
            "resources": [
              ""
            ],
            "resource_type": "Deployment",
            "namespace": "port",
            "resolution": "https://aws.github.io/aws-eks-best-practices/reliability/docs/application/#horizontal-pod-autoscaler-hpa"
          }
        }
      }
    }
  }
}

Proposed Solution:

Include the namespace in the JSON path to ensure unique addressing for each result. The modified code snippet is as follows:

json_blob[rule._type][rule.pillar][rule.section][rule.message] = result

-        json_blob[rule._type][rule.pillar][rule.section][rule.message] = result
+        if rule._type == "namespace_based":
+            json_blob[rule._type][rule.pillar][rule.section][rule.result.namespace][rule.message] = result
+        else:
+            json_blob[rule._type][rule.pillar][rule.section][rule.message] = result

bc6a1d5
This change ensures that results for different namespaces are stored under their respective namespace keys, preventing data overwrites.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions