postgres-ai/postgres-checkup

A000 Json structure for mulitple hosts report

ane4ka opened this issue · 12 comments

A000 Json structure for mulitple hosts report
dmius commented

Текущая структура

{
  "checkId": "A003",
  "hosts": [
    "localhost"
  ],
  "dependencies": {
    "null": "null"
  },
  "result": {
    "localhost": []}
}

Где значение в массиве hosts является индексом в объекте result.

А нам для каждого хоста надо хранить роль, хост и данные и при этом простую адресацию.
Самый простой вариант

"hosts": [
    {
        name: "db1" 
         role: master, // всегда должен быть первым
        domain: db1.server.com
     },
    {
         name: "db2" 
         role: replica, // всегда должен быть первым
         domain: db1.server.com
    }
  ],

  result:{
    "db1": {
       data
     }
  }

При этом адресация к данным сохраняется такая же, а вот строка индекса берется из поля name в блоке описания host.

name := hosts[0].name - имя мастер сервера или может id
result[name].* обращение к данным для хоста

@Nastradamus что думаешь?

@dmius мы же хотели отдельный json A000, в котором был бы словарик удобный того, что есть. По всем проверкам бегать и править там то что изменилось - будет жесть же. Давай делать как мы вчера все вместе оговаривали? То есть, проверку, которая генерит маленький словарик.

dmius commented

А нет ли разницы где будет храниться шаблон структуры, может для начала со структурой определимся и я смогу уже парсингом структуры заняться, а как это генериться будет это пока мне не важно.

Ну для меня разница точно есть: менять в одном файле что-то если изменился маппинг "master - alias", или во всех десятках файлов сразу. Я сейчас как раз буду делать поддержку нескольких хостов и для меня это критично.

dmius commented

Ну наверно важнее определиться каков будет интерфейс между нами (твоий программой и моей), а как мы это будет реализовывать каждый у себя то не много не о том вопрос... или я чего то не понимаю

В данный момент, я генерю json'ы и изменяю уже созданные. Если мы сделаем так как ты говоришь - это усложнит мне задачу непредсказуемым образом. Мало того, сломает гибкость.

@dmius давай набросаем просто файлик как мы вчера все вместе договорились и закроем эту задачу.

dmius commented

Смотри мой первый пост.

dmius commented

В данный момент, я генерю json'ы и изменяю уже созданные. Если мы сделаем так как ты говоришь - это усложнит мне задачу непредсказуемым образом. Мало того, сломает гибкость.

См название таска.

Мы не меняем адресацию, а дополняем. Чтобы адресоваться к master, из твоей программы нужно будет прочитать главный json "A000", узнать из него кто сейчас "master" и сгенерить отчет для хоста мастера. Денормализация же.

We decided to keep these json parts in every check.
But I will implement the following structure in the ./check:

{
  "hosts": {
    "hostname": {
      "role": null,
      "alias": null
    }
  },
  "last_check": {
    "id": null,
    "timestamp": null
  }
}