@@ -53,6 +53,7 @@ import (
5353 v14 "k8s.io/api/apps/v1"
5454 batchV1 "k8s.io/api/batch/v1"
5555 v1 "k8s.io/api/core/v1"
56+ apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
5657 "k8s.io/apimachinery/pkg/api/errors"
5758 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
5859 "k8s.io/apimachinery/pkg/types"
@@ -148,6 +149,7 @@ type K8sService interface {
148149 CreateNsWithLabels (namespace string , labels map [string ]string , client * v12.CoreV1Client ) (ns * v1.Namespace , err error )
149150 CreateNs (namespace string , client * v12.CoreV1Client ) (ns * v1.Namespace , err error )
150151 GetRestClientForCRD (config * ClusterConfig , groupVersion * schema.GroupVersion ) (* rest.RESTClient , error )
152+ GetGVRForCRD (config * rest.Config , CRDName string ) (schema.GroupVersionResource , error )
151153 PatchResourceByRestClient (restClient * rest.RESTClient , resource , name , namespace string , pt types.PatchType , data []byte , opts metav1.PatchOptions , subresources ... string ) rest.Result
152154}
153155
@@ -1909,6 +1911,31 @@ func (impl *K8sServiceImpl) CreateOrUpdateSecretByName(client *v12.CoreV1Client,
19091911 return nil
19101912}
19111913
1914+ func (impl * K8sServiceImpl ) GetGVRForCRD (config * rest.Config , CRDName string ) (schema.GroupVersionResource , error ) {
1915+ apiExtClient , err := apiextensionsclient .NewForConfig (config )
1916+ if err != nil {
1917+ impl .logger .Error ("error in getting api extension client" , "err" , err )
1918+ return schema.GroupVersionResource {}, err
1919+ }
1920+ crd , err := apiExtClient .ApiextensionsV1 ().CustomResourceDefinitions ().Get (context .TODO (), CRDName , metav1.GetOptions {})
1921+ if err != nil {
1922+ impl .logger .Error ("error in getting terraform crd" , "err" , err )
1923+ return schema.GroupVersionResource {}, err
1924+ }
1925+ var servedVersion string
1926+ for _ , v := range crd .Spec .Versions {
1927+ if v .Served {
1928+ servedVersion = v .Name
1929+ break
1930+ }
1931+ }
1932+ return schema.GroupVersionResource {
1933+ Group : crd .Spec .Group ,
1934+ Version : servedVersion ,
1935+ Resource : crd .Spec .Names .Plural ,
1936+ }, nil
1937+ }
1938+
19121939func (impl * K8sServiceImpl ) GetRestClientForCRD (config * ClusterConfig , groupVersion * schema.GroupVersion ) (* rest.RESTClient , error ) {
19131940
19141941 restConfig , err := impl .GetRestConfigByCluster (config )
0 commit comments