2023-09-05 01:25:06 +02:00
|
|
|
package test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/go-git/go-billy/v5"
|
|
|
|
"github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/resource"
|
|
|
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
|
|
)
|
|
|
|
|
2024-10-15 12:29:18 +05:30
|
|
|
func getAndCompareResource(actualResources []*unstructured.Unstructured, fs billy.Filesystem, path string) (bool, error) {
|
|
|
|
expectedResources, err := resource.GetResourceFromPath(fs, path)
|
2023-09-05 01:25:06 +02:00
|
|
|
if err != nil {
|
2024-05-21 00:17:49 -07:00
|
|
|
return false, fmt.Errorf("error: failed to load resource (%s)", err)
|
2023-09-05 01:25:06 +02:00
|
|
|
}
|
2024-10-15 12:29:18 +05:30
|
|
|
|
|
|
|
expectedResourcesMap := map[string]unstructured.Unstructured{}
|
|
|
|
for _, expectedResource := range expectedResources {
|
|
|
|
if expectedResource == nil {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
r := *expectedResource
|
|
|
|
resource.FixupGenerateLabels(r)
|
|
|
|
expectedResourcesMap[expectedResource.GetNamespace()+"/"+expectedResource.GetName()] = r
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, actualResource := range actualResources {
|
|
|
|
if actualResource == nil {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
r := *actualResource
|
|
|
|
resource.FixupGenerateLabels(r)
|
|
|
|
equals, err := resource.Compare(r, expectedResourcesMap[r.GetNamespace()+"/"+r.GetName()], true)
|
|
|
|
if err != nil {
|
|
|
|
return false, fmt.Errorf("error: failed to compare resources (%s)", err)
|
|
|
|
}
|
|
|
|
if !equals {
|
|
|
|
return false, nil
|
|
|
|
}
|
2023-09-05 01:25:06 +02:00
|
|
|
}
|
2024-10-15 12:29:18 +05:30
|
|
|
return true, nil
|
2023-09-05 01:25:06 +02:00
|
|
|
}
|