fix: invalid ParentObj in output (#1068)

* Fix invalid ParentObj in output

Signed-off-by: Peter Pan <Peter.Pan@daocloud.io>

* fix UT as well for ParentObj changes

Signed-off-by: Peter Pan <Peter.Pan@daocloud.io>

* remove meta.Name in false output

Signed-off-by: Peter Pan <Peter.Pan@daocloud.io>

* fix UT as well

Signed-off-by: Peter Pan <Peter.Pan@daocloud.io>

---------

Signed-off-by: Peter Pan <Peter.Pan@daocloud.io>
Co-authored-by: Aris Boutselis <arisboutselis08@gmail.com>
This commit is contained in:
Peter Pan
2024-04-26 14:26:06 +08:00
committed by GitHub
parent 9a73d1923f
commit b2ab94375e
14 changed files with 62 additions and 34 deletions

View File

@@ -140,8 +140,10 @@ func (HpaAnalyzer) Analyze(a common.Analyzer) ([]common.Result, error) {
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.HorizontalPodAutoscalers.ObjectMeta) parent, found := util.GetParent(a.Client, value.HorizontalPodAutoscalers.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }

View File

@@ -163,8 +163,10 @@ func (IngressAnalyzer) Analyze(a common.Analyzer) ([]common.Result, error) {
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.Ingress.ObjectMeta) parent, found := util.GetParent(a.Client, value.Ingress.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }

View File

@@ -96,8 +96,10 @@ func (LogAnalyzer) Analyze(a common.Analyzer) ([]common.Result, error) {
Name: key, Name: key,
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.Pod.ObjectMeta) parent, found := util.GetParent(a.Client, value.Pod.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }

View File

@@ -151,8 +151,10 @@ func (MutatingWebhookAnalyzer) Analyze(a common.Analyzer) ([]common.Result, erro
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.MutatingWebhook.ObjectMeta) parent, found := util.GetParent(a.Client, value.MutatingWebhook.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }

View File

@@ -74,8 +74,10 @@ func (NodeAnalyzer) Analyze(a common.Analyzer) ([]common.Result, error) {
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.Node.ObjectMeta) parent, found := util.GetParent(a.Client, value.Node.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }

View File

@@ -99,8 +99,10 @@ func (PdbAnalyzer) Analyze(a common.Analyzer) ([]common.Result, error) {
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.PodDisruptionBudget.ObjectMeta) parent, found := util.GetParent(a.Client, value.PodDisruptionBudget.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }

View File

@@ -80,8 +80,10 @@ func (PodAnalyzer) Analyze(a common.Analyzer) ([]common.Result, error) {
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.Pod.ObjectMeta) parent, found := util.GetParent(a.Client, value.Pod.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }

View File

@@ -74,8 +74,10 @@ func (PvcAnalyzer) Analyze(a common.Analyzer) ([]common.Result, error) {
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.PersistentVolumeClaim.ObjectMeta) parent, found := util.GetParent(a.Client, value.PersistentVolumeClaim.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }

View File

@@ -72,8 +72,10 @@ func (ReplicaSetAnalyzer) Analyze(a common.Analyzer) ([]common.Result, error) {
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.ReplicaSet.ObjectMeta) parent, found := util.GetParent(a.Client, value.ReplicaSet.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }
return a.Results, nil return a.Results, nil

View File

@@ -128,8 +128,10 @@ func (ServiceAnalyzer) Analyze(a common.Analyzer) ([]common.Result, error) {
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.Endpoint.ObjectMeta) parent, found := util.GetParent(a.Client, value.Endpoint.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }
return a.Results, nil return a.Results, nil

View File

@@ -109,8 +109,10 @@ func (StatefulSetAnalyzer) Analyze(a common.Analyzer) ([]common.Result, error) {
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.StatefulSet.ObjectMeta) parent, found := util.GetParent(a.Client, value.StatefulSet.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }

View File

@@ -149,8 +149,10 @@ func (ValidatingWebhookAnalyzer) Analyze(a common.Analyzer) ([]common.Result, er
Error: value.FailureDetails, Error: value.FailureDetails,
} }
parent, _ := util.GetParent(a.Client, value.ValidatingWebhook.ObjectMeta) parent, found := util.GetParent(a.Client, value.ValidatingWebhook.ObjectMeta)
if found {
currentAnalysis.ParentObject = parent currentAnalysis.ParentObject = parent
}
a.Results = append(a.Results, currentAnalysis) a.Results = append(a.Results, currentAnalysis)
} }

View File

@@ -45,7 +45,7 @@ func GetParent(client *kubernetes.Client, meta metav1.ObjectMeta) (string, bool)
if rs.OwnerReferences != nil { if rs.OwnerReferences != nil {
return GetParent(client, rs.ObjectMeta) return GetParent(client, rs.ObjectMeta)
} }
return "ReplicaSet/" + rs.Name, false return "ReplicaSet/" + rs.Name, true
case "Deployment": case "Deployment":
dep, err := client.GetClient().AppsV1().Deployments(meta.Namespace).Get(context.Background(), owner.Name, metav1.GetOptions{}) dep, err := client.GetClient().AppsV1().Deployments(meta.Namespace).Get(context.Background(), owner.Name, metav1.GetOptions{})
@@ -55,7 +55,7 @@ func GetParent(client *kubernetes.Client, meta metav1.ObjectMeta) (string, bool)
if dep.OwnerReferences != nil { if dep.OwnerReferences != nil {
return GetParent(client, dep.ObjectMeta) return GetParent(client, dep.ObjectMeta)
} }
return "Deployment/" + dep.Name, false return "Deployment/" + dep.Name, true
case "StatefulSet": case "StatefulSet":
sts, err := client.GetClient().AppsV1().StatefulSets(meta.Namespace).Get(context.Background(), owner.Name, metav1.GetOptions{}) sts, err := client.GetClient().AppsV1().StatefulSets(meta.Namespace).Get(context.Background(), owner.Name, metav1.GetOptions{})
@@ -65,7 +65,7 @@ func GetParent(client *kubernetes.Client, meta metav1.ObjectMeta) (string, bool)
if sts.OwnerReferences != nil { if sts.OwnerReferences != nil {
return GetParent(client, sts.ObjectMeta) return GetParent(client, sts.ObjectMeta)
} }
return "StatefulSet/" + sts.Name, false return "StatefulSet/" + sts.Name, true
case "DaemonSet": case "DaemonSet":
ds, err := client.GetClient().AppsV1().DaemonSets(meta.Namespace).Get(context.Background(), owner.Name, metav1.GetOptions{}) ds, err := client.GetClient().AppsV1().DaemonSets(meta.Namespace).Get(context.Background(), owner.Name, metav1.GetOptions{})
@@ -75,7 +75,7 @@ func GetParent(client *kubernetes.Client, meta metav1.ObjectMeta) (string, bool)
if ds.OwnerReferences != nil { if ds.OwnerReferences != nil {
return GetParent(client, ds.ObjectMeta) return GetParent(client, ds.ObjectMeta)
} }
return "DaemonSet/" + ds.Name, false return "DaemonSet/" + ds.Name, true
case "Ingress": case "Ingress":
ds, err := client.GetClient().NetworkingV1().Ingresses(meta.Namespace).Get(context.Background(), owner.Name, metav1.GetOptions{}) ds, err := client.GetClient().NetworkingV1().Ingresses(meta.Namespace).Get(context.Background(), owner.Name, metav1.GetOptions{})
@@ -85,7 +85,7 @@ func GetParent(client *kubernetes.Client, meta metav1.ObjectMeta) (string, bool)
if ds.OwnerReferences != nil { if ds.OwnerReferences != nil {
return GetParent(client, ds.ObjectMeta) return GetParent(client, ds.ObjectMeta)
} }
return "Ingress/" + ds.Name, false return "Ingress/" + ds.Name, true
case "MutatingWebhookConfiguration": case "MutatingWebhookConfiguration":
mw, err := client.GetClient().AdmissionregistrationV1().MutatingWebhookConfigurations().Get(context.Background(), owner.Name, metav1.GetOptions{}) mw, err := client.GetClient().AdmissionregistrationV1().MutatingWebhookConfigurations().Get(context.Background(), owner.Name, metav1.GetOptions{})
@@ -95,7 +95,7 @@ func GetParent(client *kubernetes.Client, meta metav1.ObjectMeta) (string, bool)
if mw.OwnerReferences != nil { if mw.OwnerReferences != nil {
return GetParent(client, mw.ObjectMeta) return GetParent(client, mw.ObjectMeta)
} }
return "MutatingWebhook/" + mw.Name, false return "MutatingWebhook/" + mw.Name, true
case "ValidatingWebhookConfiguration": case "ValidatingWebhookConfiguration":
vw, err := client.GetClient().AdmissionregistrationV1().ValidatingWebhookConfigurations().Get(context.Background(), owner.Name, metav1.GetOptions{}) vw, err := client.GetClient().AdmissionregistrationV1().ValidatingWebhookConfigurations().Get(context.Background(), owner.Name, metav1.GetOptions{})
@@ -105,11 +105,11 @@ func GetParent(client *kubernetes.Client, meta metav1.ObjectMeta) (string, bool)
if vw.OwnerReferences != nil { if vw.OwnerReferences != nil {
return GetParent(client, vw.ObjectMeta) return GetParent(client, vw.ObjectMeta)
} }
return "ValidatingWebhook/" + vw.Name, false return "ValidatingWebhook/" + vw.Name, true
} }
} }
} }
return meta.Name, false return "", false
} }
func RemoveDuplicates(slice []string) ([]string, []string) { func RemoveDuplicates(slice []string) ([]string, []string) {

View File

@@ -82,7 +82,7 @@ func TestGetParent(t *testing.T) {
}{ }{
{ {
kind: "Unknown", kind: "Unknown",
expectedOutput: ownerName, expectedOutput: "",
}, },
{ {
kind: "ReplicaSet", kind: "ReplicaSet",
@@ -155,8 +155,12 @@ func TestGetParent(t *testing.T) {
}, },
} }
output, ok := GetParent(&kubeClient, meta) output, ok := GetParent(&kubeClient, meta)
require.Equal(t, tt.expectedOutput, output) if meta.OwnerReferences[0].Name != "" {
require.Equal(t, true, ok)
} else {
require.Equal(t, false, ok) require.Equal(t, false, ok)
}
require.Equal(t, tt.expectedOutput, output)
}) })
} }
} }