Skip to content

Commit 53891d2

Browse files
Arta AsadiArta Asadi
authored andcommitted
fix: fix cluster discovery and table tags
1 parent e5821f4 commit 53891d2

File tree

2 files changed

+118
-131
lines changed

2 files changed

+118
-131
lines changed

discovery/describers/kubernetes_cluster.go

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ type KubeConfigInfo struct {
176176
// GetClusterInfo connects to the Kubernetes cluster using the validated configuration,
177177
// retrieves metadata including the server version, and determines the authentication method used.
178178
// It *always* returns a JSON string: ClusterInfo on success, or ErrorInfo on failure.
179-
func GetClusterInfo(ctx context.Context, configAPI *api.Config, restConfig *rest.Config, logger *zap.Logger) string {
179+
func GetClusterInfo(ctx context.Context, configAPI *api.Config, restConfig *rest.Config, logger *zap.Logger) (*ClusterInfo, error) {
180180
fields := []zap.Field{
181181
zap.String("current_context", configAPI.CurrentContext),
182182
}
@@ -230,9 +230,7 @@ func GetClusterInfo(ctx context.Context, configAPI *api.Config, restConfig *rest
230230

231231
clientset, err := kubernetes.NewForConfig(&clientRestConfig)
232232
if err != nil {
233-
wrappedErr := xerrors.Errorf("failed to create Kubernetes clientset from REST config: %w", err)
234-
l.Error("Cannot create Kubernetes clientset", zap.Error(wrappedErr))
235-
return createErrorJSON("Internal error: Failed to create Kubernetes client", err, logger)
233+
return nil, err
236234
}
237235

238236
// 3. Get Server Version (with Retries)
@@ -292,24 +290,11 @@ func GetClusterInfo(ctx context.Context, configAPI *api.Config, restConfig *rest
292290
}
293291

294292
if lastErr != nil {
295-
errMsg := "Failed to connect to cluster or get server version after retries"
296-
if contextCancelled || xerrors.Is(lastErr, context.Canceled) {
297-
errMsg = "Operation cancelled while trying to get server version"
298-
}
299-
l.Error(errMsg, zap.Int("retries_attempted", MaxRetries), zap.Error(lastErr)) // Logged at Error level
300-
return createErrorJSON(errMsg, lastErr, logger)
301-
}
302-
303-
// 4. Marshal Success JSON
304-
successJSONBytes, err := json.Marshal(output)
305-
if err != nil {
306-
wrappedErr := xerrors.Errorf("internal error: failed to marshal successful cluster info: %w", err)
307-
l.Error("Failed to marshal success response", zap.Error(wrappedErr)) // Logged at Error level
308-
return createErrorJSON("Internal error: Failed to create success JSON response", err, logger)
293+
return nil, lastErr
309294
}
310295

311296
// 5. Return Success JSON
312-
return string(successJSONBytes)
297+
return &output, nil
313298
}
314299

315300
func DoDiscovery(kubeConfig string) (*model.KubernetesClusterDescription, error) {
@@ -353,14 +338,10 @@ func DoDiscovery(kubeConfig string) (*model.KubernetesClusterDescription, error)
353338
}
354339

355340
// --- Execute Action Based on Flag ---
356-
var resultJSON string
357341

358342
logger.Info("Fetching cluster information...", zap.String("kubeconfig_path", kubeconfigPath)) // Logged at Info level
359-
resultJSON = GetClusterInfo(ctx, configAPI, restConfig, logger)
360-
361-
// --- Determine Exit Code Based on Result ---
362-
var result model.KubernetesClusterDescription
363-
if err := json.Unmarshal([]byte(resultJSON), &result); err != nil {
343+
result, err := GetClusterInfo(ctx, configAPI, restConfig, logger)
344+
if err != nil {
364345
return nil, err
365346
}
366347

@@ -369,5 +350,11 @@ func DoDiscovery(kubeConfig string) (*model.KubernetesClusterDescription, error)
369350
return nil, err
370351
}
371352

372-
return &result, nil
353+
return &model.KubernetesClusterDescription{
354+
AuthMethod: result.AuthMethod,
355+
ContextName: result.ContextName,
356+
Endpoint: result.Endpoint,
357+
ServerVersion: result.ServerVersion,
358+
TLSServerVerification: result.TLSServerVerification,
359+
}, nil
373360
}

global/maps/table_index_map.gen.go

Lines changed: 105 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -5,115 +5,115 @@ import (
55
)
66

77
var ResourceTypesToTables = map[string]string{
8-
"Kubernetes/Resource": "kubernetes_resource",
9-
"Kubernetes/Node": "kubernetes_node",
10-
"Kubernetes/PersistentVolume": "kubernetes_persistent_volume",
11-
"Kubernetes/PersistentVolumeClaim": "kubernetes_persistent_volume_claim",
12-
"Kubernetes/Pod": "kubernetes_pod",
13-
"Kubernetes/Secret": "kubernetes_secret",
14-
"Kubernetes/Service": "kubernetes_service",
15-
"Kubernetes/ConfigMap": "kubernetes_config_map",
16-
"Kubernetes/ServiceAccount": "kubernetes_service_account",
17-
"Kubernetes/StatefulSet": "kubernetes_stateful_set",
18-
"Kubernetes/Deployment": "kubernetes_deployment",
19-
"Kubernetes/ReplicaSet": "kubernetes_replicaset",
20-
"Kubernetes/DaemonSet": "kubernetes_daemonset",
21-
"Kubernetes/Endpoint": "kubernetes_endpoints",
22-
"Kubernetes/EndpointSlice": "kubernetes_endpoint_slice",
23-
"Kubernetes/Event": "kubernetes_event",
24-
"Kubernetes/Job": "kubernetes_job",
25-
"Kubernetes/CronJob": "kubernetes_cronjob",
26-
"Kubernetes/Ingress": "kubernetes_ingress",
27-
"Kubernetes/NetworkPolicy": "kubernetes_network_policy",
28-
"Kubernetes/Role": "kubernetes_role",
29-
"Kubernetes/RoleBinding": "kubernetes_role_binding",
30-
"Kubernetes/Cluster": "kubernetes_cluster",
31-
"Kubernetes/ClusterRole": "kubernetes_cluster_role",
32-
"Kubernetes/ClusterRoleBinding": "kubernetes_cluster_role_binding",
33-
"Kubernetes/PodDisruptionBudget": "kubernetes_pod_disruption_budget",
34-
"Kubernetes/PodTemplate": "kubernetes_pod_template",
35-
"Kubernetes/HorizontalPodAutoscaler": "kubernetes_horizontal_pod_autoscaler",
36-
"Kubernetes/CustomResourceDefinition": "kubernetes_custom_resource_definition",
37-
"Kubernetes/CustomResource": "kubernetes_custom_resource",
38-
"Kubernetes/StorageClass": "kubernetes_storage_class",
39-
"Kubernetes/LimitRange": "kubernetes_limit_range",
40-
"Kubernetes/Namespace": "kubernetes_namespace",
41-
"Kubernetes/ReplicationController": "kubernetes_replication_controller",
42-
"Kubernetes/RessourceQuota": "kubernetes_resource_quota",
8+
"Kubernetes/Resource": "k8_resource",
9+
"Kubernetes/Node": "k8_node",
10+
"Kubernetes/PersistentVolume": "k8_persistent_volume",
11+
"Kubernetes/PersistentVolumeClaim": "k8_persistent_volume_claim",
12+
"Kubernetes/Pod": "k8_pod",
13+
"Kubernetes/Secret": "k8_secret",
14+
"Kubernetes/Service": "k8_service",
15+
"Kubernetes/ConfigMap": "k8_config_map",
16+
"Kubernetes/ServiceAccount": "k8_service_account",
17+
"Kubernetes/StatefulSet": "k8_stateful_set",
18+
"Kubernetes/Deployment": "k8_deployment",
19+
"Kubernetes/ReplicaSet": "k8_replicaset",
20+
"Kubernetes/DaemonSet": "k8_daemonset",
21+
"Kubernetes/Endpoint": "k8_endpoints",
22+
"Kubernetes/EndpointSlice": "k8_endpoint_slice",
23+
"Kubernetes/Event": "k8_event",
24+
"Kubernetes/Job": "k8_job",
25+
"Kubernetes/CronJob": "k8_cronjob",
26+
"Kubernetes/Ingress": "k8_ingress",
27+
"Kubernetes/NetworkPolicy": "k8_network_policy",
28+
"Kubernetes/Role": "k8_role",
29+
"Kubernetes/RoleBinding": "k8_role_binding",
30+
"Kubernetes/Cluster": "k8_cluster",
31+
"Kubernetes/ClusterRole": "k8_cluster_role",
32+
"Kubernetes/ClusterRoleBinding": "k8_cluster_role_binding",
33+
"Kubernetes/PodDisruptionBudget": "k8_pod_disruption_budget",
34+
"Kubernetes/PodTemplate": "k8_pod_template",
35+
"Kubernetes/HorizontalPodAutoscaler": "k8_horizontal_pod_autoscaler",
36+
"Kubernetes/CustomResourceDefinition": "k8_custom_resource_definition",
37+
"Kubernetes/CustomResource": "k8_custom_resource",
38+
"Kubernetes/StorageClass": "k8_storage_class",
39+
"Kubernetes/LimitRange": "k8_limit_range",
40+
"Kubernetes/Namespace": "k8_namespace",
41+
"Kubernetes/ReplicationController": "k8_replication_controller",
42+
"Kubernetes/RessourceQuota": "k8_resource_quota",
4343
}
4444

4545
var ResourceTypeToDescription = map[string]interface{}{
46-
"Kubernetes/Resource": opengovernance.KubernetesResource{},
47-
"Kubernetes/Node": opengovernance.KubernetesNode{},
48-
"Kubernetes/PersistentVolume": opengovernance.KubernetesPersistentVolume{},
49-
"Kubernetes/PersistentVolumeClaim": opengovernance.KubernetesPersistentVolumeClaim{},
50-
"Kubernetes/Pod": opengovernance.KubernetesPod{},
51-
"Kubernetes/Secret": opengovernance.KubernetesSecret{},
52-
"Kubernetes/Service": opengovernance.KubernetesService{},
53-
"Kubernetes/ConfigMap": opengovernance.KubernetesConfigMap{},
54-
"Kubernetes/ServiceAccount": opengovernance.KubernetesServiceAccount{},
55-
"Kubernetes/StatefulSet": opengovernance.KubernetesStatefulSet{},
56-
"Kubernetes/Deployment": opengovernance.KubernetesDeployment{},
57-
"Kubernetes/ReplicaSet": opengovernance.KubernetesReplicaSet{},
58-
"Kubernetes/DaemonSet": opengovernance.KubernetesDaemonSet{},
59-
"Kubernetes/Endpoint": opengovernance.KubernetesEndpoint{},
60-
"Kubernetes/EndpointSlice": opengovernance.KubernetesEndpointSlice{},
61-
"Kubernetes/Event": opengovernance.KubernetesEvent{},
62-
"Kubernetes/Job": opengovernance.KubernetesJob{},
63-
"Kubernetes/CronJob": opengovernance.KubernetesCronJob{},
64-
"Kubernetes/Ingress": opengovernance.KubernetesIngress{},
65-
"Kubernetes/NetworkPolicy": opengovernance.KubernetesNetworkPolicy{},
66-
"Kubernetes/Role": opengovernance.KubernetesRole{},
67-
"Kubernetes/RoleBinding": opengovernance.KubernetesRoleBinding{},
68-
"Kubernetes/Cluster": opengovernance.KubernetesCluster{},
69-
"Kubernetes/ClusterRole": opengovernance.KubernetesClusterRole{},
70-
"Kubernetes/ClusterRoleBinding": opengovernance.KubernetesClusterRoleBinding{},
71-
"Kubernetes/PodDisruptionBudget": opengovernance.KubernetesPodDisruptionBudget{},
72-
"Kubernetes/PodTemplate": opengovernance.KubernetesPodTemplate{},
73-
"Kubernetes/HorizontalPodAutoscaler": opengovernance.KubernetesHorizontalPodAutoscaler{},
74-
"Kubernetes/CustomResourceDefinition": opengovernance.KubernetesCustomResourceDefinition{},
75-
"Kubernetes/CustomResource": opengovernance.KubernetesCustomResource{},
76-
"Kubernetes/StorageClass": opengovernance.KubernetesStorageClass{},
77-
"Kubernetes/LimitRange": opengovernance.KubernetesLimitRange{},
78-
"Kubernetes/Namespace": opengovernance.KubernetesNamespace{},
79-
"Kubernetes/ReplicationController": opengovernance.KubernetesReplicationController{},
80-
"Kubernetes/RessourceQuota": opengovernance.KubernetesResourceQuota{},
46+
"Kubernetes/Resource": opengovernance.KubernetesResource{},
47+
"Kubernetes/Node": opengovernance.KubernetesNode{},
48+
"Kubernetes/PersistentVolume": opengovernance.KubernetesPersistentVolume{},
49+
"Kubernetes/PersistentVolumeClaim": opengovernance.KubernetesPersistentVolumeClaim{},
50+
"Kubernetes/Pod": opengovernance.KubernetesPod{},
51+
"Kubernetes/Secret": opengovernance.KubernetesSecret{},
52+
"Kubernetes/Service": opengovernance.KubernetesService{},
53+
"Kubernetes/ConfigMap": opengovernance.KubernetesConfigMap{},
54+
"Kubernetes/ServiceAccount": opengovernance.KubernetesServiceAccount{},
55+
"Kubernetes/StatefulSet": opengovernance.KubernetesStatefulSet{},
56+
"Kubernetes/Deployment": opengovernance.KubernetesDeployment{},
57+
"Kubernetes/ReplicaSet": opengovernance.KubernetesReplicaSet{},
58+
"Kubernetes/DaemonSet": opengovernance.KubernetesDaemonSet{},
59+
"Kubernetes/Endpoint": opengovernance.KubernetesEndpoint{},
60+
"Kubernetes/EndpointSlice": opengovernance.KubernetesEndpointSlice{},
61+
"Kubernetes/Event": opengovernance.KubernetesEvent{},
62+
"Kubernetes/Job": opengovernance.KubernetesJob{},
63+
"Kubernetes/CronJob": opengovernance.KubernetesCronJob{},
64+
"Kubernetes/Ingress": opengovernance.KubernetesIngress{},
65+
"Kubernetes/NetworkPolicy": opengovernance.KubernetesNetworkPolicy{},
66+
"Kubernetes/Role": opengovernance.KubernetesRole{},
67+
"Kubernetes/RoleBinding": opengovernance.KubernetesRoleBinding{},
68+
"Kubernetes/Cluster": opengovernance.KubernetesCluster{},
69+
"Kubernetes/ClusterRole": opengovernance.KubernetesClusterRole{},
70+
"Kubernetes/ClusterRoleBinding": opengovernance.KubernetesClusterRoleBinding{},
71+
"Kubernetes/PodDisruptionBudget": opengovernance.KubernetesPodDisruptionBudget{},
72+
"Kubernetes/PodTemplate": opengovernance.KubernetesPodTemplate{},
73+
"Kubernetes/HorizontalPodAutoscaler": opengovernance.KubernetesHorizontalPodAutoscaler{},
74+
"Kubernetes/CustomResourceDefinition": opengovernance.KubernetesCustomResourceDefinition{},
75+
"Kubernetes/CustomResource": opengovernance.KubernetesCustomResource{},
76+
"Kubernetes/StorageClass": opengovernance.KubernetesStorageClass{},
77+
"Kubernetes/LimitRange": opengovernance.KubernetesLimitRange{},
78+
"Kubernetes/Namespace": opengovernance.KubernetesNamespace{},
79+
"Kubernetes/ReplicationController": opengovernance.KubernetesReplicationController{},
80+
"Kubernetes/RessourceQuota": opengovernance.KubernetesResourceQuota{},
8181
}
8282

8383
var TablesToResourceTypes = map[string]string{
84-
"kubernetes_resource": "Kubernetes/Resource",
85-
"kubernetes_node": "Kubernetes/Node",
86-
"kubernetes_persistent_volume": "Kubernetes/PersistentVolume",
87-
"kubernetes_persistent_volume_claim": "Kubernetes/PersistentVolumeClaim",
88-
"kubernetes_pod": "Kubernetes/Pod",
89-
"kubernetes_secret": "Kubernetes/Secret",
90-
"kubernetes_service": "Kubernetes/Service",
91-
"kubernetes_config_map": "Kubernetes/ConfigMap",
92-
"kubernetes_service_account": "Kubernetes/ServiceAccount",
93-
"kubernetes_stateful_set": "Kubernetes/StatefulSet",
94-
"kubernetes_deployment": "Kubernetes/Deployment",
95-
"kubernetes_replicaset": "Kubernetes/ReplicaSet",
96-
"kubernetes_daemonset": "Kubernetes/DaemonSet",
97-
"kubernetes_endpoints": "Kubernetes/Endpoint",
98-
"kubernetes_endpoint_slice": "Kubernetes/EndpointSlice",
99-
"kubernetes_event": "Kubernetes/Event",
100-
"kubernetes_job": "Kubernetes/Job",
101-
"kubernetes_cronjob": "Kubernetes/CronJob",
102-
"kubernetes_ingress": "Kubernetes/Ingress",
103-
"kubernetes_network_policy": "Kubernetes/NetworkPolicy",
104-
"kubernetes_role": "Kubernetes/Role",
105-
"kubernetes_role_binding": "Kubernetes/RoleBinding",
106-
"kubernetes_cluster": "Kubernetes/Cluster",
107-
"kubernetes_cluster_role": "Kubernetes/ClusterRole",
108-
"kubernetes_cluster_role_binding": "Kubernetes/ClusterRoleBinding",
109-
"kubernetes_pod_disruption_budget": "Kubernetes/PodDisruptionBudget",
110-
"kubernetes_pod_template": "Kubernetes/PodTemplate",
111-
"kubernetes_horizontal_pod_autoscaler": "Kubernetes/HorizontalPodAutoscaler",
112-
"kubernetes_custom_resource_definition": "Kubernetes/CustomResourceDefinition",
113-
"kubernetes_custom_resource": "Kubernetes/CustomResource",
114-
"kubernetes_storage_class": "Kubernetes/StorageClass",
115-
"kubernetes_limit_range": "Kubernetes/LimitRange",
116-
"kubernetes_namespace": "Kubernetes/Namespace",
117-
"kubernetes_replication_controller": "Kubernetes/ReplicationController",
118-
"kubernetes_resource_quota": "Kubernetes/RessourceQuota",
84+
"k8_resource": "Kubernetes/Resource",
85+
"k8_node": "Kubernetes/Node",
86+
"k8_persistent_volume": "Kubernetes/PersistentVolume",
87+
"k8_persistent_volume_claim": "Kubernetes/PersistentVolumeClaim",
88+
"k8_pod": "Kubernetes/Pod",
89+
"k8_secret": "Kubernetes/Secret",
90+
"k8_service": "Kubernetes/Service",
91+
"k8_config_map": "Kubernetes/ConfigMap",
92+
"k8_service_account": "Kubernetes/ServiceAccount",
93+
"k8_stateful_set": "Kubernetes/StatefulSet",
94+
"k8_deployment": "Kubernetes/Deployment",
95+
"k8_replicaset": "Kubernetes/ReplicaSet",
96+
"k8_daemonset": "Kubernetes/DaemonSet",
97+
"k8_endpoints": "Kubernetes/Endpoint",
98+
"k8_endpoint_slice": "Kubernetes/EndpointSlice",
99+
"k8_event": "Kubernetes/Event",
100+
"k8_job": "Kubernetes/Job",
101+
"k8_cronjob": "Kubernetes/CronJob",
102+
"k8_ingress": "Kubernetes/Ingress",
103+
"k8_network_policy": "Kubernetes/NetworkPolicy",
104+
"k8_role": "Kubernetes/Role",
105+
"k8_role_binding": "Kubernetes/RoleBinding",
106+
"k8_cluster": "Kubernetes/Cluster",
107+
"k8_cluster_role": "Kubernetes/ClusterRole",
108+
"k8_cluster_role_binding": "Kubernetes/ClusterRoleBinding",
109+
"k8_pod_disruption_budget": "Kubernetes/PodDisruptionBudget",
110+
"k8_pod_template": "Kubernetes/PodTemplate",
111+
"k8_horizontal_pod_autoscaler": "Kubernetes/HorizontalPodAutoscaler",
112+
"k8_custom_resource_definition": "Kubernetes/CustomResourceDefinition",
113+
"k8_custom_resource": "Kubernetes/CustomResource",
114+
"k8_storage_class": "Kubernetes/StorageClass",
115+
"k8_limit_range": "Kubernetes/LimitRange",
116+
"k8_namespace": "Kubernetes/Namespace",
117+
"k8_replication_controller": "Kubernetes/ReplicationController",
118+
"k8_resource_quota": "Kubernetes/RessourceQuota",
119119
}

0 commit comments

Comments
 (0)