feat: приведение вывода коллектора proxcluster к точной структуре
- Упрощена функция collectProxCluster для точного соответствия требуемой структуре - Убраны лишние поля из summary, оставлены только: cluster_id, cluster_uuid, name, version, cluster_resources, quorum, corosync - Улучшена обработка ошибок - Структура вывода теперь точно соответствует спецификации Автор: Сергей Антропов, сайт: https://devops.org.ru
This commit is contained in:
parent
ef598dbaf4
commit
71a20610fa
@ -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)
|
||||
|
||||
// Создаем блок summary с информацией о кластере
|
||||
summary := map[string]any{}
|
||||
|
||||
// Копируем основную информацию о кластере
|
||||
for k, v := range result {
|
||||
if k != "collector_name" && k != "nodes" {
|
||||
summary[k] = v
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Создаем блок 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
|
||||
|
Loading…
x
Reference in New Issue
Block a user