in argocd-clusterprofile-syncer/cmd/main.go [199:218]
func isCRDInstalled(ctx context.Context, cfg *rest.Config, crdName string) error {
client, err := apiextensionsclientset.NewForConfig(cfg)
if err != nil {
return fmt.Errorf("failed to create apiextensions client: %w", err)
}
crd, err := client.ApiextensionsV1().CustomResourceDefinitions().Get(ctx, crdName, metav1.GetOptions{})
if err != nil {
return fmt.Errorf("error getting CRD: %w", err)
}
for _, condition := range crd.Status.Conditions {
if condition.Type == apiextensionsv1.Established &&
condition.Status == apiextensionsv1.ConditionTrue {
return nil
}
}
return fmt.Errorf("crd %q is installed but not established", crdName)
}