diff --git a/src/collectors/proxcluster/proxcluster_linux.go b/src/collectors/proxcluster/proxcluster_linux.go index d0bd05d..c3eafdd 100644 --- a/src/collectors/proxcluster/proxcluster_linux.go +++ b/src/collectors/proxcluster/proxcluster_linux.go @@ -26,39 +26,34 @@ import ( // 2. nodes - вся информация по нодам // Примечание: services, storages, logs, gpu, disks, network, vms вынесены в отдельные коллекторы func collectProxCluster(ctx context.Context) (map[string]any, error) { - result := map[string]any{ - "collector_name": "proxcluster", - } - // Основная информация о кластере из corosync.conf clusterInfo, err := collectClusterInfo(ctx) - if err == nil { - for k, v := range clusterInfo { - result[k] = v - } + if err != nil { + return nil, err } // Получаем данные для агрегированных ресурсов clusterUUID := "" clusterName := "" - if uuid, ok := result["cluster_uuid"].(string); ok { + if uuid, ok := clusterInfo["cluster_uuid"].(string); ok { clusterUUID = uuid } - if name, ok := result["name"].(string); ok { + if name, ok := clusterInfo["name"].(string); ok { clusterName = name } - // Собираем информацию о нодах для агрегации + // Собираем информацию о нодах nodesInfo, err := collectDetailedNodesInfo(ctx, clusterName, clusterUUID) + if err != nil { + return nil, err + } - // Создаем блок summary с информацией о кластере - summary := map[string]any{} - - // Копируем основную информацию о кластере - for k, v := range result { - if k != "collector_name" && k != "nodes" { - summary[k] = v - } + // Создаем блок summary с точной структурой + summary := map[string]any{ + "cluster_id": clusterInfo["cluster_id"], + "cluster_uuid": clusterInfo["cluster_uuid"], + "name": clusterInfo["name"], + "version": clusterInfo["version"], } // Агрегированная информация о ресурсах кластера @@ -81,16 +76,11 @@ func collectProxCluster(ctx context.Context) (map[string]any, error) { summary["corosync"] = corosyncInfo } - // Формируем финальный результат - result["summary"] = summary - - // Подробная информация о нодах - if nodesInfo != nil { - result["nodes"] = nodesInfo - } - - if len(result) == 0 { - return nil, errors.New("no cluster data found") + // Формируем финальный результат с точной структурой + result := map[string]any{ + "collector_name": "proxcluster", + "summary": summary, + "nodes": nodesInfo, } return result, nil