@@ -26,6 +26,7 @@ import (
2626 "github.com/devtron-labs/common-lib/utils/k8s/commonBean"
2727 "io"
2828 "k8s.io/client-go/dynamic"
29+ "k8s.io/client-go/kubernetes/scheme"
2930 "k8s.io/kubernetes/pkg/api/legacyscheme"
3031 "k8s.io/metrics/pkg/apis/metrics/v1beta1"
3132 metrics "k8s.io/metrics/pkg/client/clientset/versioned"
@@ -1354,31 +1355,6 @@ func (impl *K8sServiceImpl) CreateOrUpdateSecretByName(client *v12.CoreV1Client,
13541355 return nil
13551356}
13561357
1357- func (impl * K8sServiceImpl ) GetGVRForCRD (config * rest.Config , CRDName string ) (schema.GroupVersionResource , error ) {
1358- apiExtClient , err := apiextensionsclient .NewForConfig (config )
1359- if err != nil {
1360- impl .logger .Error ("error in getting api extension client" , "err" , err )
1361- return schema.GroupVersionResource {}, err
1362- }
1363- crd , err := apiExtClient .ApiextensionsV1 ().CustomResourceDefinitions ().Get (context .TODO (), CRDName , metav1.GetOptions {})
1364- if err != nil {
1365- impl .logger .Error ("error in getting terraform crd" , "err" , err )
1366- return schema.GroupVersionResource {}, err
1367- }
1368- var servedVersion string
1369- for _ , v := range crd .Spec .Versions {
1370- if v .Served {
1371- servedVersion = v .Name
1372- break
1373- }
1374- }
1375- return schema.GroupVersionResource {
1376- Group : crd .Spec .Group ,
1377- Version : servedVersion ,
1378- Resource : crd .Spec .Names .Plural ,
1379- }, nil
1380- }
1381-
13821358func (impl * K8sServiceImpl ) GetResourceByGVR (ctx context.Context , config * rest.Config , GVR schema.GroupVersionResource , resourceName , namespace string ) (* unstructured.Unstructured , error ) {
13831359 dynClient , err := dynamic .NewForConfig (config )
13841360 if err != nil {
@@ -1471,3 +1447,61 @@ func (impl *K8sServiceImpl) getEventKindHeader() ([]string, map[int]string) {
14711447 columnIndexes [8 ] = "count"
14721448 return headers , columnIndexes
14731449}
1450+
1451+ func (impl * K8sServiceImpl ) GetGVRForCRD (config * rest.Config , CRDName string ) (schema.GroupVersionResource , error ) {
1452+ apiExtClient , err := apiextensionsclient .NewForConfig (config )
1453+ if err != nil {
1454+ impl .logger .Error ("error in getting api extension client" , "err" , err )
1455+ return schema.GroupVersionResource {}, err
1456+ }
1457+ crd , err := apiExtClient .ApiextensionsV1 ().CustomResourceDefinitions ().Get (context .TODO (), CRDName , metav1.GetOptions {})
1458+ if err != nil {
1459+ impl .logger .Error ("error in getting terraform crd" , "err" , err )
1460+ return schema.GroupVersionResource {}, err
1461+ }
1462+ var servedVersion string
1463+ for _ , v := range crd .Spec .Versions {
1464+ if v .Served {
1465+ servedVersion = v .Name
1466+ break
1467+ }
1468+ }
1469+ return schema.GroupVersionResource {
1470+ Group : crd .Spec .Group ,
1471+ Version : servedVersion ,
1472+ Resource : crd .Spec .Names .Plural ,
1473+ }, nil
1474+ }
1475+
1476+ func (impl * K8sServiceImpl ) GetRestClientForCRD (config * ClusterConfig , groupVersion * schema.GroupVersion ) (* rest.RESTClient , error ) {
1477+
1478+ restConfig , err := impl .GetRestConfigByCluster (config )
1479+ if err != nil {
1480+ return nil , err
1481+ }
1482+
1483+ restConfig .ContentConfig = rest.ContentConfig {
1484+ GroupVersion : groupVersion ,
1485+ NegotiatedSerializer : scheme .Codecs .WithoutConversion (),
1486+ }
1487+ restConfig .APIPath = "/apis"
1488+
1489+ restClient , err := rest .RESTClientFor (restConfig )
1490+ if err != nil {
1491+ impl .logger .Errorw ("error in getting rest client" , "gvr" , groupVersion .String (), "err" , err )
1492+ return nil , err
1493+ }
1494+
1495+ return restClient , nil
1496+ }
1497+
1498+ func (impl * K8sServiceImpl ) PatchResourceByRestClient (restClient * rest.RESTClient , resource , name , namespace string , pt types.PatchType , data []byte , subresources ... string ) rest.Result {
1499+ result := restClient .Patch (pt ).
1500+ Namespace (namespace ).
1501+ Resource (resource ).
1502+ Name (name ).
1503+ SubResource (subresources ... ).
1504+ Body (data ).
1505+ Do (context .Background ())
1506+ return result
1507+ }
0 commit comments