2022-12-22 07:39:54 +01:00
|
|
|
package kube
|
|
|
|
|
|
|
|
import (
|
2023-02-10 16:38:34 +01:00
|
|
|
"context"
|
2023-06-06 17:47:28 +02:00
|
|
|
"fmt"
|
2022-12-22 07:39:54 +01:00
|
|
|
|
2023-06-06 17:47:28 +02:00
|
|
|
"go.uber.org/multierr"
|
2023-02-10 16:38:34 +01:00
|
|
|
apiserver "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
2022-12-22 07:39:54 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
// CRDsInstalled checks if the Kyverno CRDs are installed or not
|
2024-02-01 15:44:05 +05:30
|
|
|
func CRDsInstalled(apiserverClient apiserver.Interface, names ...string) error {
|
2023-06-06 17:47:28 +02:00
|
|
|
var errs []error
|
2024-02-01 15:44:05 +05:30
|
|
|
for _, crd := range names {
|
2023-06-06 17:47:28 +02:00
|
|
|
err := isCRDInstalled(apiserverClient, crd)
|
|
|
|
if err != nil {
|
|
|
|
errs = append(errs, fmt.Errorf("failed to check CRD %s is installed: %s", crd, err))
|
2022-12-22 07:39:54 +01:00
|
|
|
}
|
|
|
|
}
|
2023-06-06 17:47:28 +02:00
|
|
|
return multierr.Combine(errs...)
|
2022-12-22 07:39:54 +01:00
|
|
|
}
|
|
|
|
|
2023-06-06 17:47:28 +02:00
|
|
|
func isCRDInstalled(apiserverClient apiserver.Interface, kind string) error {
|
2023-02-10 16:38:34 +01:00
|
|
|
_, err := apiserverClient.ApiextensionsV1().CustomResourceDefinitions().Get(context.Background(), kind, metav1.GetOptions{})
|
2023-06-06 17:47:28 +02:00
|
|
|
return err
|
2022-12-22 07:39:54 +01:00
|
|
|
}
|