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:
Generate a report with multiple namespace-based results.
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_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
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:
Affected Version:
\<=v0.10.4
Text Output:
JSON Output:
Proposed Solution:
Include the namespace in the JSON path to ensure unique addressing for each result. The modified code snippet is as follows: https://github.com/aws-samples/hardeneks/blob/b0451e906f095a4247171600bec1e271df587a9f/hardeneks/__init__.py#L100
https://github.com/aws-samples/hardeneks/commit/bc6a1d5f8b0c9c5942cfebb2313513d3b4a7ba92 This change ensures that results for different namespaces are stored under their respective namespace keys, preventing data overwrites.