@@ -30,7 +30,10 @@ import (
3030 "github.com/gin-gonic/gin"
3131 "github.com/go-logr/logr"
3232 corev1 "k8s.io/api/core/v1"
33+ apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
34+ apierrors "k8s.io/apimachinery/pkg/api/errors"
3335 "k8s.io/apimachinery/pkg/labels"
36+ "k8s.io/apimachinery/pkg/types"
3437 clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
3538
3639 configv1beta1 "github.com/projectsveltos/addon-controller/api/v1beta1"
5760 getManagedCAPIClusters = func (c * gin.Context ) {
5861 ginLogger .V (logs .LogDebug ).Info ("get managed ClusterAPI Clusters" )
5962
63+ manager := GetManagerInstance ()
64+
65+ // Verify if CAPI CRD is deployed
66+ clusterCRD := & apiextensionsv1.CustomResourceDefinition {}
67+ err := manager .client .Get (c .Request .Context (), types.NamespacedName {Name : "clusters.cluster.x-k8s.io" }, clusterCRD )
68+ if err != nil {
69+ if apierrors .IsNotFound (err ) {
70+ response := ClusterResult {
71+ TotalClusters : 0 ,
72+ ManagedClusters : []ManagedCluster {},
73+ }
74+
75+ // Return JSON response
76+ c .JSON (http .StatusOK , response )
77+ }
78+
79+ _ = c .AbortWithError (http .StatusBadRequest , err )
80+ return
81+ }
82+
6083 limit , skip := getLimitAndSkipFromQuery (c )
6184 ginLogger .V (logs .LogDebug ).Info (fmt .Sprintf ("limit %d skip %d" , limit , skip ))
6285 filters , err := getClusterFiltersFromQuery (c )
7497 return
7598 }
7699
77- manager := GetManagerInstance ()
78-
79100 canListAll , err := manager .canListCAPIClusters (user )
80101 if err != nil {
81102 ginLogger .V (logs .LogInfo ).Info (fmt .Sprintf ("failed to verify permissions %s: %v" , c .Request .URL , err ))
0 commit comments