mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-07 00:17:13 +00:00
* refactor: move util func in sub packages Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * fix Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * Update pkg/utils/kube/crd.go Signed-off-by: shuting <shutting06@gmail.com> Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> Signed-off-by: shuting <shutting06@gmail.com> Co-authored-by: shuting <shutting06@gmail.com>
35 lines
885 B
Go
35 lines
885 B
Go
package kube
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/kyverno/kyverno/pkg/logging"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
)
|
|
|
|
type disco interface {
|
|
GetGVRFromKind(string) (schema.GroupVersionResource, error)
|
|
}
|
|
|
|
// CRDsInstalled checks if the Kyverno CRDs are installed or not
|
|
func CRDsInstalled(discovery disco) bool {
|
|
kyvernoCRDs := []string{"ClusterPolicy", "Policy", "ClusterPolicyReport", "PolicyReport", "AdmissionReport", "BackgroundScanReport", "ClusterAdmissionReport", "ClusterBackgroundScanReport"}
|
|
for _, crd := range kyvernoCRDs {
|
|
if !isCRDInstalled(discovery, crd) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
func isCRDInstalled(discovery disco, kind string) bool {
|
|
gvr, err := discovery.GetGVRFromKind(kind)
|
|
if gvr.Empty() {
|
|
if err == nil {
|
|
err = fmt.Errorf("not found")
|
|
}
|
|
logging.Error(err, "failed to retrieve CRD", "kind", kind)
|
|
return false
|
|
}
|
|
return true
|
|
}
|