func checkRequiredCRDs()

in cmd/aws-application-networking-k8s/main.go [97:140]


func checkRequiredCRDs(mgr ctrl.Manager) error {
	// Add or update the required CRDs when new CRDs are added to the project
	requiredCRDs := []schema.GroupVersionKind{
		{
			Group:   gwv1.GroupVersion.Group,
			Version: gwv1.GroupVersion.Version,
			Kind:    "Gateway",
		},
		{
			Group:   gwv1.GroupVersion.Group,
			Version: gwv1.GroupVersion.Version,
			Kind:    "GatewayClass",
		},
		{
			Group:   gwv1.GroupVersion.Group,
			Version: gwv1.GroupVersion.Version,
			Kind:    "HTTPRoute",
		},
		{
			Group:   gwv1.GroupVersion.Group,
			Version: gwv1.GroupVersion.Version,
			Kind:    "GRPCRoute",
		},
		{
			Group:   gwv1alpha2.GroupVersion.Group,
			Version: gwv1alpha2.GroupVersion.Version,
			Kind:    "TLSRoute",
		},
	}
	missingCRDs := make([]string, 0, len(requiredCRDs))
	for _, crd := range requiredCRDs {
		ok, err := k8s.IsGVKSupported(mgr, crd.GroupVersion().String(), crd.Kind)
		if err != nil {
			return fmt.Errorf("error checking required CRD %s: %w", crd, err)
		}
		if !ok {
			missingCRDs = append(missingCRDs, crd.String())
		}
	}
	if len(missingCRDs) > 0 {
		return fmt.Errorf("missing required CRDs: %s", strings.Join(missingCRDs, ", "))
	}
	return nil
}