A000 Json structure for mulitple hosts report
ane4ka opened this issue · 12 comments
Текущая структура
{
"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, в котором был бы словарик удобный того, что есть. По всем проверкам бегать и править там то что изменилось - будет жесть же. Давай делать как мы вчера все вместе оговаривали? То есть, проверку, которая генерит маленький словарик.
А нет ли разницы где будет храниться шаблон структуры, может для начала со структурой определимся и я смогу уже парсингом структуры заняться, а как это генериться будет это пока мне не важно.
Ну для меня разница точно есть: менять в одном файле что-то если изменился маппинг "master - alias", или во всех десятках файлов сразу. Я сейчас как раз буду делать поддержку нескольких хостов и для меня это критично.
Ну наверно важнее определиться каков будет интерфейс между нами (твоий программой и моей), а как мы это будет реализовывать каждый у себя то не много не о том вопрос... или я чего то не понимаю
В данный момент, я генерю json'ы и изменяю уже созданные. Если мы сделаем так как ты говоришь - это усложнит мне задачу непредсказуемым образом. Мало того, сломает гибкость.
@dmius давай набросаем просто файлик как мы вчера все вместе договорились и закроем эту задачу.
Смотри мой первый пост.
В данный момент, я генерю 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
}
}