diff --git a/k8sinterface/k8sconfig.go b/k8sinterface/k8sconfig.go index 7ea855b..6be67d7 100644 --- a/k8sinterface/k8sconfig.go +++ b/k8sinterface/k8sconfig.go @@ -73,6 +73,15 @@ func NewKubernetesApi() *KubernetesApi { K8SConfig: k8sConfig, } } +func (k8sAPI *KubernetesApi) GetKubernetesClient() kubernetes.Interface { + return k8sAPI.KubernetesClient +} +func (k8sAPI *KubernetesApi) GetDynamicClient() dynamic.Interface { + return k8sAPI.DynamicClient +} +func (k8sAPI *KubernetesApi) GetDiscoveryClient() discovery.DiscoveryInterface { + return k8sAPI.DiscoveryClient +} // RunningIncluster whether running in cluster var RunningIncluster bool diff --git a/k8sinterface/k8sconfig_mock.go b/k8sinterface/k8sconfig_mock.go new file mode 100644 index 0000000..51e268b --- /dev/null +++ b/k8sinterface/k8sconfig_mock.go @@ -0,0 +1,21 @@ +package k8sinterface + +import ( + "context" + + // DO NOT REMOVE - load cloud providers auth + "k8s.io/apimachinery/pkg/runtime" + discoveryfake "k8s.io/client-go/discovery/fake" + dynamicfake "k8s.io/client-go/dynamic/fake" + kubernetesfake "k8s.io/client-go/kubernetes/fake" +) + +func NewKubernetesApiMock() *KubernetesApi { + InitializeMapResourcesMock() + return &KubernetesApi{ + KubernetesClient: kubernetesfake.NewSimpleClientset(), + DynamicClient: dynamicfake.NewSimpleDynamicClient(&runtime.Scheme{}), + DiscoveryClient: &discoveryfake.FakeDiscovery{}, + Context: context.Background(), + } +} diff --git a/k8sinterface/k8sdiscovery_mock.go b/k8sinterface/k8sdiscovery_mock.go index af708f0..eca144e 100644 --- a/k8sinterface/k8sdiscovery_mock.go +++ b/k8sinterface/k8sdiscovery_mock.go @@ -15,7 +15,7 @@ func InitializeMapResourcesMock() { } func GetResourceListMock() ([]*metav1.APIResourceList, error) { - rl := `[{"groupVersion":"v1","resources":[{"name":"endpoints","singularName":"","namespaced":true,"kind":"Endpoints","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ep"],"storageVersionHash":"fWeeMqaN/OA="},{"name":"pods","singularName":"","namespaced":true,"kind":"Pod","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["po"],"categories":["all"],"storageVersionHash":"xPOwRZ+Yhw8="},{"name":"persistentvolumes","singularName":"","namespaced":false,"kind":"PersistentVolume","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["pv"],"storageVersionHash":"HN/zwEC+JgM="},{"name":"componentstatuses","singularName":"","namespaced":false,"kind":"ComponentStatus","verbs":["get","list"],"shortNames":["cs"]},{"name":"configmaps","singularName":"","namespaced":true,"kind":"ConfigMap","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["cm"],"storageVersionHash":"qFsyl6wFWjQ="},{"name":"namespaces","singularName":"","namespaced":false,"kind":"Namespace","verbs":["create","delete","get","list","patch","update","watch"],"shortNames":["ns"],"storageVersionHash":"Q3oi5N2YM8M="},{"name":"resourcequotas","singularName":"","namespaced":true,"kind":"ResourceQuota","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["quota"],"storageVersionHash":"8uhSgffRX6w="},{"name":"replicationcontrollers","singularName":"","namespaced":true,"kind":"ReplicationController","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["rc"],"categories":["all"],"storageVersionHash":"Jond2If31h0="},{"name":"bindings","singularName":"","namespaced":true,"kind":"Binding","verbs":["create"]},{"name":"nodes","singularName":"","namespaced":false,"kind":"Node","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["no"],"storageVersionHash":"XwShjMxG9Fs="},{"name":"limitranges","singularName":"","namespaced":true,"kind":"LimitRange","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["limits"],"storageVersionHash":"EBKMFVe6cwo="},{"name":"persistentvolumeclaims","singularName":"","namespaced":true,"kind":"PersistentVolumeClaim","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["pvc"],"storageVersionHash":"QWTyNDq0dC4="},{"name":"services","singularName":"","namespaced":true,"kind":"Service","verbs":["create","delete","get","list","patch","update","watch"],"shortNames":["svc"],"categories":["all"],"storageVersionHash":"0/CO1lhkEBI="},{"name":"podtemplates","singularName":"","namespaced":true,"kind":"PodTemplate","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"LIXB2x4IFpk="},{"name":"secrets","singularName":"","namespaced":true,"kind":"Secret","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"S6u1pOWzb84="},{"name":"events","singularName":"","namespaced":true,"kind":"Event","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ev"],"storageVersionHash":"r2yiGXH7wu8="},{"name":"serviceaccounts","singularName":"","namespaced":true,"kind":"ServiceAccount","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["sa"],"storageVersionHash":"pbx9ZvyFpBE="}]},{"groupVersion":"apiregistration.k8s.io/v1","resources":[{"name":"apiservices","singularName":"","namespaced":false,"kind":"APIService","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"categories":["api-extensions"],"storageVersionHash":"C+s2HXXP47k="}]},{"groupVersion":"apiregistration.k8s.io/v1beta1","resources":null},{"groupVersion":"apps/v1","resources":[{"name":"daemonsets","singularName":"","namespaced":true,"kind":"DaemonSet","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ds"],"categories":["all"],"storageVersionHash":"dd7pWHUlMKQ="},{"name":"statefulsets","singularName":"","namespaced":true,"kind":"StatefulSet","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["sts"],"categories":["all"],"storageVersionHash":"H+vl74LkKdo="},{"name":"controllerrevisions","singularName":"","namespaced":true,"kind":"ControllerRevision","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"85nkx63pcBU="},{"name":"deployments","singularName":"","namespaced":true,"kind":"Deployment","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["deploy"],"categories":["all"],"storageVersionHash":"8aSe+NMegvE="},{"name":"replicasets","singularName":"","namespaced":true,"kind":"ReplicaSet","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["rs"],"categories":["all"],"storageVersionHash":"P1RzHs8/mWQ="}]},{"groupVersion":"events.k8s.io/v1","resources":[{"name":"events","singularName":"","namespaced":true,"kind":"Event","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ev"],"storageVersionHash":"r2yiGXH7wu8="}]},{"groupVersion":"authentication.k8s.io/v1","resources":[{"name":"tokenreviews","singularName":"","namespaced":false,"kind":"TokenReview","verbs":["create"]}]},{"groupVersion":"authentication.k8s.io/v1beta1","resources":null},{"groupVersion":"authorization.k8s.io/v1","resources":[{"name":"selfsubjectrulesreviews","singularName":"","namespaced":false,"kind":"SelfSubjectRulesReview","verbs":["create"]},{"name":"selfsubjectaccessreviews","singularName":"","namespaced":false,"kind":"SelfSubjectAccessReview","verbs":["create"]},{"name":"subjectaccessreviews","singularName":"","namespaced":false,"kind":"SubjectAccessReview","verbs":["create"]},{"name":"localsubjectaccessreviews","singularName":"","namespaced":true,"kind":"LocalSubjectAccessReview","verbs":["create"]}]},{"groupVersion":"authorization.k8s.io/v1beta1","resources":null},{"groupVersion":"autoscaling/v1","resources":[{"name":"horizontalpodautoscalers","singularName":"","namespaced":true,"kind":"HorizontalPodAutoscaler","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["hpa"],"categories":["all"],"storageVersionHash":"oQlkt7f5j/A="}]},{"groupVersion":"autoscaling/v2beta1","resources":null},{"groupVersion":"autoscaling/v2beta2","resources":null},{"groupVersion":"batch/v1","resources":[{"name":"jobs","singularName":"","namespaced":true,"kind":"Job","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"categories":["all"],"storageVersionHash":"mudhfqk/qZY="}]},{"groupVersion":"batch/v1","resources":[{"name":"cronjobs","singularName":"","namespaced":true,"kind":"CronJob","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["cj"],"categories":["all"],"storageVersionHash":"h/JlFAZkyyY="}]},{"groupVersion":"certificates.k8s.io/v1","resources":[{"name":"certificatesigningrequests","singularName":"","namespaced":false,"kind":"CertificateSigningRequest","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["csr"],"storageVersionHash":"UQh3YTCDIf0="}]},{"groupVersion":"certificates.k8s.io/v1beta1","resources":null},{"groupVersion":"networking.k8s.io/v1","resources":[{"name":"networkpolicies","singularName":"","namespaced":true,"kind":"NetworkPolicy","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["netpol"],"storageVersionHash":"YpfwF18m1G8="},{"name":"ingressclasses","singularName":"","namespaced":false,"kind":"IngressClass","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"6upRfBq0FOI="},{"name":"ingresses","singularName":"","namespaced":true,"kind":"Ingress","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ing"],"storageVersionHash":"ZOAfGflaKd0="}]},{"groupVersion":"networking.k8s.io/v1beta1","resources":null},{"groupVersion":"extensions/v1beta1","resources":[{"name":"ingresses","singularName":"","namespaced":true,"kind":"Ingress","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ing"],"storageVersionHash":"ZOAfGflaKd0="}]},{"groupVersion":"policy/v1beta1","resources":[{"name":"podsecuritypolicies","singularName":"","namespaced":false,"kind":"PodSecurityPolicy","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["psp"],"storageVersionHash":"khBLobUXkqA="},{"name":"poddisruptionbudgets","singularName":"","namespaced":true,"kind":"PodDisruptionBudget","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["pdb"],"storageVersionHash":"6BGBu0kpHtk="}]},{"groupVersion":"rbac.authorization.k8s.io/v1","resources":[{"name":"clusterrolebindings","singularName":"","namespaced":false,"kind":"ClusterRoleBinding","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"48tpQ8gZHFc="},{"name":"clusterroles","singularName":"","namespaced":false,"kind":"ClusterRole","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"bYE5ZWDrJ44="},{"name":"rolebindings","singularName":"","namespaced":true,"kind":"RoleBinding","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"eGsCzGH6b1g="},{"name":"roles","singularName":"","namespaced":true,"kind":"Role","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"7FuwZcIIItM="}]},{"groupVersion":"rbac.authorization.k8s.io/v1beta1","resources":null},{"groupVersion":"storage.k8s.io/v1","resources":[{"name":"csinodes","singularName":"","namespaced":false,"kind":"CSINode","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"Pe62DkZtjuo="},{"name":"storageclasses","singularName":"","namespaced":false,"kind":"StorageClass","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["sc"],"storageVersionHash":"K+m6uJwbjGY="},{"name":"csidrivers","singularName":"","namespaced":false,"kind":"CSIDriver","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"Z7aeXSiaYTw="},{"name":"volumeattachments","singularName":"","namespaced":false,"kind":"VolumeAttachment","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"tJx/ezt6UDU="}]},{"groupVersion":"storage.k8s.io/v1beta1","resources":null},{"groupVersion":"admissionregistration.k8s.io/v1","resources":[{"name":"mutatingwebhookconfigurations","singularName":"","namespaced":false,"kind":"MutatingWebhookConfiguration","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"categories":["api-extensions"],"storageVersionHash":"yxW1cpLtfp8="},{"name":"validatingwebhookconfigurations","singularName":"","namespaced":false,"kind":"ValidatingWebhookConfiguration","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"categories":["api-extensions"],"storageVersionHash":"P9NhrezfnWE="}]},{"groupVersion":"admissionregistration.k8s.io/v1beta1","resources":null},{"groupVersion":"apiextensions.k8s.io/v1","resources":[{"name":"customresourcedefinitions","singularName":"","namespaced":false,"kind":"CustomResourceDefinition","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["crd","crds"],"categories":["api-extensions"],"storageVersionHash":"jfWCUB31mvA="}]},{"groupVersion":"apiextensions.k8s.io/v1beta1","resources":null},{"groupVersion":"scheduling.k8s.io/v1","resources":[{"name":"priorityclasses","singularName":"","namespaced":false,"kind":"PriorityClass","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["pc"],"storageVersionHash":"1QwjyaZjj3Y="}]},{"groupVersion":"scheduling.k8s.io/v1beta1","resources":null},{"groupVersion":"coordination.k8s.io/v1","resources":[{"name":"leases","singularName":"","namespaced":true,"kind":"Lease","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"/sY7hl8ol1U="}]},{"groupVersion":"coordination.k8s.io/v1beta1","resources":null},{"groupVersion":"node.k8s.io/v1","resources":[{"name":"runtimeclasses","singularName":"","namespaced":false,"kind":"RuntimeClass","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"8nMHWqj34s0="}]},{"groupVersion":"node.k8s.io/v1beta1","resources":null},{"groupVersion":"discovery.k8s.io/v1beta1","resources":[{"name":"endpointslices","singularName":"","namespaced":true,"kind":"EndpointSlice","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"Nx3SIv6I0mE="}]},{"groupVersion":"flowcontrol.apiserver.k8s.io/v1beta1","resources":[{"name":"flowschemas","singularName":"","namespaced":false,"kind":"FlowSchema","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"9bSnTLYweJ0="},{"name":"prioritylevelconfigurations","singularName":"","namespaced":false,"kind":"PriorityLevelConfiguration","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"BFVwf8eYnsw="}]},{"groupVersion":"cloud.google.com/v1","resources":[{"name":"backendconfigs","singularName":"backendconfig","namespaced":true,"kind":"BackendConfig","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["bc"],"storageVersionHash":"iT6Z2sUMGkM="}]},{"groupVersion":"cloud.google.com/v1beta1","resources":null},{"groupVersion":"networking.gke.io/v1","resources":[{"name":"managedcertificates","singularName":"managedcertificate","namespaced":true,"kind":"ManagedCertificate","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["mcrt"],"storageVersionHash":"FD3rYAFSqMY="}]},{"groupVersion":"networking.gke.io/v1beta2","resources":null},{"groupVersion":"networking.gke.io/v1beta1","resources":[{"name":"frontendconfigs","singularName":"frontendconfig","namespaced":true,"kind":"FrontendConfig","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"VvPxTD2ZFfI="},{"name":"servicenetworkendpointgroups","singularName":"servicenetworkendpointgroup","namespaced":true,"kind":"ServiceNetworkEndpointGroup","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["svcneg"],"storageVersionHash":"jrELN7g4fSY="}]},{"groupVersion":"operators.coreos.com/v1","resources":[{"name":"operatorconditions","singularName":"operatorcondition","namespaced":true,"kind":"OperatorCondition","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["condition"],"categories":["olm"],"storageVersionHash":"FTUxZd413Oo="},{"name":"operators","singularName":"operator","namespaced":false,"kind":"Operator","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"categories":["olm"],"storageVersionHash":"G7jRFeS6JKo="},{"name":"operatorgroups","singularName":"operatorgroup","namespaced":true,"kind":"OperatorGroup","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["og"],"categories":["olm"],"storageVersionHash":"smrHN4vKoms="}]},{"groupVersion":"operators.coreos.com/v1alpha2","resources":null},{"groupVersion":"operators.coreos.com/v1alpha1","resources":[{"name":"clusterserviceversions","singularName":"clusterserviceversion","namespaced":true,"kind":"ClusterServiceVersion","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["csv","csvs"],"categories":["olm"],"storageVersionHash":"bafXBXMPCeY="},{"name":"installplans","singularName":"installplan","namespaced":true,"kind":"InstallPlan","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["ip"],"categories":["olm"],"storageVersionHash":"6gw8IwttiW4="},{"name":"catalogsources","singularName":"catalogsource","namespaced":true,"kind":"CatalogSource","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["catsrc"],"categories":["olm"],"storageVersionHash":"58Nwkl8WW7w="},{"name":"subscriptions","singularName":"subscription","namespaced":true,"kind":"Subscription","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["sub","subs"],"categories":["olm"],"storageVersionHash":"cJUAl67Y7C4="}]},{"groupVersion":"snapshot.storage.k8s.io/v1","resources":[{"name":"volumesnapshots","singularName":"volumesnapshot","namespaced":true,"kind":"VolumeSnapshot","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"TSKmYoNn2SQ="},{"name":"volumesnapshotcontents","singularName":"volumesnapshotcontent","namespaced":false,"kind":"VolumeSnapshotContent","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"nRPzLkINbss="},{"name":"volumesnapshotclasses","singularName":"volumesnapshotclass","namespaced":false,"kind":"VolumeSnapshotClass","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"Auz1oPjhi6Y="}]},{"groupVersion":"snapshot.storage.k8s.io/v1beta1","resources":null},{"groupVersion":"migration.k8s.io/v1alpha1","resources":[{"name":"storageversionmigrations","singularName":"storageversionmigration","namespaced":false,"kind":"StorageVersionMigration","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"X3bkZSayqxI="},{"name":"storagestates","singularName":"storagestate","namespaced":false,"kind":"StorageState","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"7abAo0yHdNM="}]},{"groupVersion":"nodemanagement.gke.io/v1alpha1","resources":[{"name":"updateinfos","singularName":"updateinfo","namespaced":true,"kind":"UpdateInfo","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["updinf"],"storageVersionHash":"QtwKBHoi/B8="}]},{"groupVersion":"px.dev/v1alpha1","resources":[{"name":"viziers","singularName":"vizier","namespaced":true,"kind":"Vizier","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"QpuIyiRCLPo="}]},{"groupVersion":"nats.io/v1alpha2","resources":[{"name":"natsclusters","singularName":"natscluster","namespaced":true,"kind":"NatsCluster","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["nats"],"storageVersionHash":"H2XCjwje5DI="},{"name":"natsserviceroles","singularName":"natsservicerole","namespaced":true,"kind":"NatsServiceRole","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"IN4lhR37528="}]},{"groupVersion":"metrics.k8s.io/v1beta1","resources":[{"name":"pods","singularName":"","namespaced":true,"kind":"PodMetrics","verbs":["get","list"]},{"name":"nodes","singularName":"","namespaced":false,"kind":"NodeMetrics","verbs":["get","list"]}]}]` + rl := `[{"groupVersion":"v1","resources":[{"name":"endpoints","singularName":"","namespaced":true,"kind":"Endpoints","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ep"],"storageVersionHash":"fWeeMqaN/OA="},{"name":"pods","singularName":"","namespaced":true,"kind":"Pod","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["po"],"categories":["all"],"storageVersionHash":"xPOwRZ+Yhw8="},{"name":"persistentvolumes","singularName":"","namespaced":false,"kind":"PersistentVolume","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["pv"],"storageVersionHash":"HN/zwEC+JgM="},{"name":"componentstatuses","singularName":"","namespaced":false,"kind":"ComponentStatus","verbs":["get","list"],"shortNames":["cs"]},{"name":"configmaps","singularName":"","namespaced":true,"kind":"ConfigMap","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["cm"],"storageVersionHash":"qFsyl6wFWjQ="},{"name":"namespaces","singularName":"","namespaced":false,"kind":"Namespace","verbs":["create","delete","get","list","patch","update","watch"],"shortNames":["ns"],"storageVersionHash":"Q3oi5N2YM8M="},{"name":"resourcequotas","singularName":"","namespaced":true,"kind":"ResourceQuota","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["quota"],"storageVersionHash":"8uhSgffRX6w="},{"name":"replicationcontrollers","singularName":"","namespaced":true,"kind":"ReplicationController","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["rc"],"categories":["all"],"storageVersionHash":"Jond2If31h0="},{"name":"bindings","singularName":"","namespaced":true,"kind":"Binding","verbs":["create"]},{"name":"nodes","singularName":"","namespaced":false,"kind":"Node","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["no"],"storageVersionHash":"XwShjMxG9Fs="},{"name":"limitranges","singularName":"","namespaced":true,"kind":"LimitRange","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["limits"],"storageVersionHash":"EBKMFVe6cwo="},{"name":"persistentvolumeclaims","singularName":"","namespaced":true,"kind":"PersistentVolumeClaim","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["pvc"],"storageVersionHash":"QWTyNDq0dC4="},{"name":"services","singularName":"","namespaced":true,"kind":"Service","verbs":["create","delete","get","list","patch","update","watch"],"shortNames":["svc"],"categories":["all"],"storageVersionHash":"0/CO1lhkEBI="},{"name":"podtemplates","singularName":"","namespaced":true,"kind":"PodTemplate","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"LIXB2x4IFpk="},{"name":"secrets","singularName":"","namespaced":true,"kind":"Secret","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"S6u1pOWzb84="},{"name":"events","singularName":"","namespaced":true,"kind":"Event","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ev"],"storageVersionHash":"r2yiGXH7wu8="},{"name":"serviceaccounts","singularName":"","namespaced":true,"kind":"ServiceAccount","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["sa"],"storageVersionHash":"pbx9ZvyFpBE="}]},{"groupVersion":"apiregistration.k8s.io/v1","resources":[{"name":"apiservices","singularName":"","namespaced":false,"kind":"APIService","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"categories":["api-extensions"],"storageVersionHash":"C+s2HXXP47k="}]},{"groupVersion":"apiregistration.k8s.io/v1beta1","resources":null},{"groupVersion":"apps/v1","resources":[{"name":"daemonsets","singularName":"","namespaced":true,"kind":"DaemonSet","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ds"],"categories":["all"],"storageVersionHash":"dd7pWHUlMKQ="},{"name":"statefulsets","singularName":"","namespaced":true,"kind":"StatefulSet","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["sts"],"categories":["all"],"storageVersionHash":"H+vl74LkKdo="},{"name":"controllerrevisions","singularName":"","namespaced":true,"kind":"ControllerRevision","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"85nkx63pcBU="},{"name":"deployments","singularName":"","namespaced":true,"kind":"Deployment","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["deploy"],"categories":["all"],"storageVersionHash":"8aSe+NMegvE="},{"name":"replicasets","singularName":"","namespaced":true,"kind":"ReplicaSet","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["rs"],"categories":["all"],"storageVersionHash":"P1RzHs8/mWQ="}]},{"groupVersion":"events.k8s.io/v1","resources":[{"name":"events","singularName":"","namespaced":true,"kind":"Event","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ev"],"storageVersionHash":"r2yiGXH7wu8="}]},{"groupVersion":"authentication.k8s.io/v1","resources":[{"name":"tokenreviews","singularName":"","namespaced":false,"kind":"TokenReview","verbs":["create"]}]},{"groupVersion":"authentication.k8s.io/v1beta1","resources":null},{"groupVersion":"authorization.k8s.io/v1","resources":[{"name":"selfsubjectrulesreviews","singularName":"","namespaced":false,"kind":"SelfSubjectRulesReview","verbs":["create"]},{"name":"selfsubjectaccessreviews","singularName":"","namespaced":false,"kind":"SelfSubjectAccessReview","verbs":["create"]},{"name":"subjectaccessreviews","singularName":"","namespaced":false,"kind":"SubjectAccessReview","verbs":["create"]},{"name":"localsubjectaccessreviews","singularName":"","namespaced":true,"kind":"LocalSubjectAccessReview","verbs":["create"]}]},{"groupVersion":"authorization.k8s.io/v1beta1","resources":null},{"groupVersion":"autoscaling/v1","resources":[{"name":"horizontalpodautoscalers","singularName":"","namespaced":true,"kind":"HorizontalPodAutoscaler","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["hpa"],"categories":["all"],"storageVersionHash":"oQlkt7f5j/A="}]},{"groupVersion":"autoscaling/v2beta1","resources":null},{"groupVersion":"autoscaling/v2beta2","resources":null},{"groupVersion":"batch/v1","resources":[{"name":"jobs","singularName":"","namespaced":true,"kind":"Job","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"categories":["all"],"storageVersionHash":"mudhfqk/qZY="}]},{"groupVersion":"batch/v1","resources":[{"name":"cronjobs","singularName":"","namespaced":true,"kind":"CronJob","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["cj"],"categories":["all"],"storageVersionHash":"h/JlFAZkyyY="}]},{"groupVersion":"certificates.k8s.io/v1","resources":[{"name":"certificatesigningrequests","singularName":"","namespaced":false,"kind":"CertificateSigningRequest","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["csr"],"storageVersionHash":"UQh3YTCDIf0="}]},{"groupVersion":"certificates.k8s.io/v1beta1","resources":null},{"groupVersion":"networking.k8s.io/v1","resources":[{"name":"networkpolicies","singularName":"","namespaced":true,"kind":"NetworkPolicy","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["netpol"],"storageVersionHash":"YpfwF18m1G8="},{"name":"ingressclasses","singularName":"","namespaced":false,"kind":"IngressClass","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"6upRfBq0FOI="},{"name":"ingresses","singularName":"","namespaced":true,"kind":"Ingress","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ing"],"storageVersionHash":"ZOAfGflaKd0="}]},{"groupVersion":"networking.k8s.io/v1beta1","resources":null},{"groupVersion":"extensions/v1beta1","resources":[{"name":"ingresses","singularName":"","namespaced":true,"kind":"Ingress","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ing"],"storageVersionHash":"ZOAfGflaKd0="}]},{"groupVersion":"policy/v1beta1","resources":[{"name":"podsecuritypolicies","singularName":"","namespaced":false,"kind":"PodSecurityPolicy","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["psp"],"storageVersionHash":"khBLobUXkqA="},{"name":"poddisruptionbudgets","singularName":"","namespaced":true,"kind":"PodDisruptionBudget","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["pdb"],"storageVersionHash":"6BGBu0kpHtk="}]},{"groupVersion":"rbac.authorization.k8s.io/v1","resources":[{"name":"clusterrolebindings","singularName":"","namespaced":false,"kind":"ClusterRoleBinding","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"48tpQ8gZHFc="},{"name":"clusterroles","singularName":"","namespaced":false,"kind":"ClusterRole","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"bYE5ZWDrJ44="},{"name":"rolebindings","singularName":"","namespaced":true,"kind":"RoleBinding","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"eGsCzGH6b1g="},{"name":"roles","singularName":"","namespaced":true,"kind":"Role","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"7FuwZcIIItM="}]},{"groupVersion":"rbac.authorization.k8s.io/v1beta1","resources":null},{"groupVersion":"storage.k8s.io/v1","resources":[{"name":"csinodes","singularName":"","namespaced":false,"kind":"CSINode","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"Pe62DkZtjuo="},{"name":"storageclasses","singularName":"","namespaced":false,"kind":"StorageClass","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["sc"],"storageVersionHash":"K+m6uJwbjGY="},{"name":"csidrivers","singularName":"","namespaced":false,"kind":"CSIDriver","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"Z7aeXSiaYTw="},{"name":"volumeattachments","singularName":"","namespaced":false,"kind":"VolumeAttachment","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"tJx/ezt6UDU="}]},{"groupVersion":"storage.k8s.io/v1","resources":null},{"groupVersion":"admissionregistration.k8s.io/v1","resources":[{"name":"mutatingwebhookconfigurations","singularName":"","namespaced":false,"kind":"MutatingWebhookConfiguration","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"categories":["api-extensions"],"storageVersionHash":"yxW1cpLtfp8="},{"name":"validatingwebhookconfigurations","singularName":"","namespaced":false,"kind":"ValidatingWebhookConfiguration","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"categories":["api-extensions"],"storageVersionHash":"P9NhrezfnWE="}]},{"groupVersion":"admissionregistration.k8s.io/v1beta1","resources":null},{"groupVersion":"apiextensions.k8s.io/v1","resources":[{"name":"customresourcedefinitions","singularName":"","namespaced":false,"kind":"CustomResourceDefinition","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["crd","crds"],"categories":["api-extensions"],"storageVersionHash":"jfWCUB31mvA="}]},{"groupVersion":"apiextensions.k8s.io/v1beta1","resources":null},{"groupVersion":"scheduling.k8s.io/v1","resources":[{"name":"priorityclasses","singularName":"","namespaced":false,"kind":"PriorityClass","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["pc"],"storageVersionHash":"1QwjyaZjj3Y="}]},{"groupVersion":"scheduling.k8s.io/v1beta1","resources":null},{"groupVersion":"coordination.k8s.io/v1","resources":[{"name":"leases","singularName":"","namespaced":true,"kind":"Lease","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"/sY7hl8ol1U="}]},{"groupVersion":"coordination.k8s.io/v1beta1","resources":null},{"groupVersion":"node.k8s.io/v1","resources":[{"name":"runtimeclasses","singularName":"","namespaced":false,"kind":"RuntimeClass","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"8nMHWqj34s0="}]},{"groupVersion":"node.k8s.io/v1beta1","resources":null},{"groupVersion":"discovery.k8s.io/v1beta1","resources":[{"name":"endpointslices","singularName":"","namespaced":true,"kind":"EndpointSlice","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"Nx3SIv6I0mE="}]},{"groupVersion":"flowcontrol.apiserver.k8s.io/v1beta1","resources":[{"name":"flowschemas","singularName":"","namespaced":false,"kind":"FlowSchema","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"9bSnTLYweJ0="},{"name":"prioritylevelconfigurations","singularName":"","namespaced":false,"kind":"PriorityLevelConfiguration","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"storageVersionHash":"BFVwf8eYnsw="}]},{"groupVersion":"cloud.google.com/v1","resources":[{"name":"backendconfigs","singularName":"backendconfig","namespaced":true,"kind":"BackendConfig","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["bc"],"storageVersionHash":"iT6Z2sUMGkM="}]},{"groupVersion":"cloud.google.com/v1beta1","resources":null},{"groupVersion":"networking.gke.io/v1","resources":[{"name":"managedcertificates","singularName":"managedcertificate","namespaced":true,"kind":"ManagedCertificate","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["mcrt"],"storageVersionHash":"FD3rYAFSqMY="}]},{"groupVersion":"networking.gke.io/v1beta2","resources":null},{"groupVersion":"networking.gke.io/v1beta1","resources":[{"name":"frontendconfigs","singularName":"frontendconfig","namespaced":true,"kind":"FrontendConfig","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"VvPxTD2ZFfI="},{"name":"servicenetworkendpointgroups","singularName":"servicenetworkendpointgroup","namespaced":true,"kind":"ServiceNetworkEndpointGroup","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["svcneg"],"storageVersionHash":"jrELN7g4fSY="}]},{"groupVersion":"operators.coreos.com/v1","resources":[{"name":"operatorconditions","singularName":"operatorcondition","namespaced":true,"kind":"OperatorCondition","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["condition"],"categories":["olm"],"storageVersionHash":"FTUxZd413Oo="},{"name":"operators","singularName":"operator","namespaced":false,"kind":"Operator","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"categories":["olm"],"storageVersionHash":"G7jRFeS6JKo="},{"name":"operatorgroups","singularName":"operatorgroup","namespaced":true,"kind":"OperatorGroup","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["og"],"categories":["olm"],"storageVersionHash":"smrHN4vKoms="}]},{"groupVersion":"operators.coreos.com/v1alpha2","resources":null},{"groupVersion":"operators.coreos.com/v1alpha1","resources":[{"name":"clusterserviceversions","singularName":"clusterserviceversion","namespaced":true,"kind":"ClusterServiceVersion","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["csv","csvs"],"categories":["olm"],"storageVersionHash":"bafXBXMPCeY="},{"name":"installplans","singularName":"installplan","namespaced":true,"kind":"InstallPlan","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["ip"],"categories":["olm"],"storageVersionHash":"6gw8IwttiW4="},{"name":"catalogsources","singularName":"catalogsource","namespaced":true,"kind":"CatalogSource","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["catsrc"],"categories":["olm"],"storageVersionHash":"58Nwkl8WW7w="},{"name":"subscriptions","singularName":"subscription","namespaced":true,"kind":"Subscription","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["sub","subs"],"categories":["olm"],"storageVersionHash":"cJUAl67Y7C4="}]},{"groupVersion":"snapshot.storage.k8s.io/v1","resources":[{"name":"volumesnapshots","singularName":"volumesnapshot","namespaced":true,"kind":"VolumeSnapshot","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"TSKmYoNn2SQ="},{"name":"volumesnapshotcontents","singularName":"volumesnapshotcontent","namespaced":false,"kind":"VolumeSnapshotContent","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"nRPzLkINbss="},{"name":"volumesnapshotclasses","singularName":"volumesnapshotclass","namespaced":false,"kind":"VolumeSnapshotClass","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"Auz1oPjhi6Y="}]},{"groupVersion":"snapshot.storage.k8s.io/v1beta1","resources":null},{"groupVersion":"migration.k8s.io/v1alpha1","resources":[{"name":"storageversionmigrations","singularName":"storageversionmigration","namespaced":false,"kind":"StorageVersionMigration","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"X3bkZSayqxI="},{"name":"storagestates","singularName":"storagestate","namespaced":false,"kind":"StorageState","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"7abAo0yHdNM="}]},{"groupVersion":"nodemanagement.gke.io/v1alpha1","resources":[{"name":"updateinfos","singularName":"updateinfo","namespaced":true,"kind":"UpdateInfo","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["updinf"],"storageVersionHash":"QtwKBHoi/B8="}]},{"groupVersion":"px.dev/v1alpha1","resources":[{"name":"viziers","singularName":"vizier","namespaced":true,"kind":"Vizier","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"QpuIyiRCLPo="}]},{"groupVersion":"nats.io/v1alpha2","resources":[{"name":"natsclusters","singularName":"natscluster","namespaced":true,"kind":"NatsCluster","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["nats"],"storageVersionHash":"H2XCjwje5DI="},{"name":"natsserviceroles","singularName":"natsservicerole","namespaced":true,"kind":"NatsServiceRole","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"storageVersionHash":"IN4lhR37528="}]},{"groupVersion":"metrics.k8s.io/v1beta1","resources":[{"name":"pods","singularName":"","namespaced":true,"kind":"PodMetrics","verbs":["get","list"]},{"name":"nodes","singularName":"","namespaced":false,"kind":"NodeMetrics","verbs":["get","list"]}]}]` rlMock := []metav1.APIResourceList{} if err := json.Unmarshal([]byte(rl), &rlMock); err != nil { return nil, err diff --git a/k8sinterface/k8sdynamic_test.go b/k8sinterface/k8sdynamic_test.go index 277c424..ba7d9bd 100644 --- a/k8sinterface/k8sdynamic_test.go +++ b/k8sinterface/k8sdynamic_test.go @@ -1,15 +1,11 @@ package k8sinterface import ( - "context" "testing" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/kubescape/k8s-interface/workloadinterface" - "k8s.io/apimachinery/pkg/runtime" - dynamicfake "k8s.io/client-go/dynamic/fake" - kubernetesfake "k8s.io/client-go/kubernetes/fake" // // metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" // Uncomment to load all auth plugins @@ -22,16 +18,6 @@ import ( // _ "k8s.io/client-go/plugin/pkg/client/auth/openstack" ) -// NewKubernetesApi - -func NewKubernetesApiMock() *KubernetesApi { - InitializeMapResourcesMock() - return &KubernetesApi{ - KubernetesClient: kubernetesfake.NewSimpleClientset(), - DynamicClient: dynamicfake.NewSimpleDynamicClient(&runtime.Scheme{}), - Context: context.Background(), - } -} - func TestListDynamic(t *testing.T) { if !IsConnectedToCluster() { return