Skip to content

Commit d382eb7

Browse files
committed
wip: adding get gvr method
1 parent 1bf8b5c commit d382eb7

4 files changed

Lines changed: 42 additions & 1 deletion

File tree

common-lib/go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ require (
3939
gopkg.in/yaml.v2 v2.4.0
4040
helm.sh/helm/v3 v3.14.3
4141
k8s.io/api v0.29.7
42+
k8s.io/apiextensions-apiserver v0.29.0
4243
k8s.io/apimachinery v0.29.7
4344
k8s.io/client-go v0.29.7
4445
k8s.io/kube-aggregator v0.0.0
@@ -141,7 +142,7 @@ require (
141142
github.com/sirupsen/logrus v1.9.3
142143
github.com/spf13/pflag v1.0.5 // indirect
143144
go.opencensus.io v0.24.0 // indirect
144-
go.opentelemetry.io/otel v1.19.0 // indirect
145+
go.opentelemetry.io/otel v1.19.0
145146
go.opentelemetry.io/otel/metric v1.19.0 // indirect
146147
go.opentelemetry.io/otel/trace v1.19.0 // indirect
147148
golang.org/x/net v0.33.0 // indirect

common-lib/go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,8 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh
659659
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
660660
k8s.io/api v0.29.7 h1:Q2/thp7YYESgy0MGzxT9RvA/6doLJHBXSFH8GGLxSbc=
661661
k8s.io/api v0.29.7/go.mod h1:mPimdbyuIjwoLtBEVIGVUYb4BKOE+44XHt/n4IqKsLA=
662+
k8s.io/apiextensions-apiserver v0.29.7 h1:X62u7vUGfwW5rYJB5jkZDr0uV2XSyEHJRdxnfD5PaLs=
663+
k8s.io/apiextensions-apiserver v0.29.7/go.mod h1:JzBXxlZKKdtEYGr4yiN+s0eXheCTYgKDay8JXPfSGoQ=
662664
k8s.io/apimachinery v0.29.7 h1:ICXzya58Q7hyEEfnTrbmdfX1n1schSepX2KUfC2/ykc=
663665
k8s.io/apimachinery v0.29.7/go.mod h1:i3FJVwhvSp/6n8Fl4K97PJEP8C+MM+aoDq4+ZJBf70Y=
664666
k8s.io/client-go v0.29.7 h1:vTtiFrGBKlcBhxaeZC4eDrqui1e108nsTyue/KU63IY=

common-lib/utils/k8s/K8sUtil.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
19121939
func (impl *K8sServiceImpl) GetRestClientForCRD(config *ClusterConfig, groupVersion *schema.GroupVersion) (*rest.RESTClient, error) {
19131940

19141941
restConfig, err := impl.GetRestConfigByCluster(config)

common-lib/vendor/modules.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -986,6 +986,17 @@ k8s.io/api/scheduling/v1beta1
986986
k8s.io/api/storage/v1
987987
k8s.io/api/storage/v1alpha1
988988
k8s.io/api/storage/v1beta1
989+
# k8s.io/apiextensions-apiserver v0.29.0 => k8s.io/apiextensions-apiserver v0.29.7
990+
## explicit; go 1.21
991+
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
992+
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1
993+
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1
994+
k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1
995+
k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1
996+
k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset
997+
k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme
998+
k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1
999+
k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1
9891000
# k8s.io/apimachinery v0.29.7 => k8s.io/apimachinery v0.29.7
9901001
## explicit; go 1.21
9911002
k8s.io/apimachinery/pkg/api/equality

0 commit comments

Comments
 (0)