From 6fc6db0549eccdca668c06f933f650327b653e85 Mon Sep 17 00:00:00 2001 From: Marc Campbell Date: Wed, 17 Jul 2019 22:09:26 +0000 Subject: [PATCH] crd client --- pkg/collect/cluster_resources.go | 40 +++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/pkg/collect/cluster_resources.go b/pkg/collect/cluster_resources.go index ed29b3db..3e122232 100644 --- a/pkg/collect/cluster_resources.go +++ b/pkg/collect/cluster_resources.go @@ -5,18 +5,21 @@ import ( "fmt" corev1 "k8s.io/api/core/v1" + apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + apiextensionsv1beta1clientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "sigs.k8s.io/controller-runtime/pkg/client/config" ) type ClusterResourcesOutput struct { - Namespaces []byte `json:"cluster-resources/namespaces.json,omitempty"` - Pods map[string][]byte `json:"cluster-resources/pods,omitempty"` - Services map[string][]byte `json:"cluster-resources/services,omitempty"` - Deployments map[string][]byte `json:"cluster-resources/deployments,omitempty"` - Ingress map[string][]byte `json:"cluster-resources/ingress,omitempty"` - StorageClasses []byte `json:"cluster-resources/storage-classes.json,omitempty"` + Namespaces []byte `json:"cluster-resources/namespaces.json,omitempty"` + Pods map[string][]byte `json:"cluster-resources/pods,omitempty"` + Services map[string][]byte `json:"cluster-resources/services,omitempty"` + Deployments map[string][]byte `json:"cluster-resources/deployments,omitempty"` + Ingress map[string][]byte `json:"cluster-resources/ingress,omitempty"` + StorageClasses []byte `json:"cluster-resources/storage-classes.json,omitempty"` + CustomResourceDefinitions []byte `json:"cluster-resources/custom-resource-definitions.json,omitempty"` } func ClusterResources() error { @@ -78,6 +81,17 @@ func ClusterResources() error { } clusterResourcesOutput.StorageClasses = storageClasses + // crds + crdClient, err := apiextensionsv1beta1.NewForConfig(cfg) + if err != nil { + return err + } + customResourceDefinitions, err := crds(crdClient) + if err != nil { + return err + } + clusterResourcesOutput.CustomResourceDefinitions = customResourceDefinitions + b, err := json.MarshalIndent(clusterResourcesOutput, "", " ") if err != nil { return err @@ -195,3 +209,17 @@ func storageClasses(client *kubernetes.Clientset) ([]byte, error) { return b, nil } + +func crds(client *apiextensionsv1beta1clientset.ApiextensionsV1beta1Client) ([]byte, error) { + crds, err := client.CustomResourceDefinitions().List(metav1.ListOptions{}) + if err != nil { + return nil, err + } + + b, err := json.MarshalIndent(crds.Items, "", " ") + if err != nil { + return nil, err + } + + return b, nil +}