Небольшая утилита, позволяющая менять тэги внутри JSON файла. Рекомендуется использовать для работы с Grafana Dashboard JSON Model
В корневом каталоге проекта следует создать config.json
{
"Destination": "your-grafana.server",
"API_KEY": "your-personal-api-key"
}
Этот файл необходим для работы с сервером (получение, отправка, восстановление дашбордов)
git clone https://github.com/VorobevPavel-dev/GrafanaSwitcher.git
cd GrafanaSwitcher
go build
Уникальный идентификатор дашборда. Необходим для большинства операций
Имя тэга, которое нужно изменить
Значение, которое будет применено ко всем полям с именем -tag
Используется для отправки изменений на сервер
Если этот флаг указан, то программа поместит список всех UID в файл с именем UIDList.txt
Программа только получит копию JSONModel и поместит её в папку ./Backups с именем UID_backups.json
Используется для отката JSON Model на предыдущюю версию. Для использования необходим заполненный тэг -uid
Структура, которая инициализирует пользователя по его API ключу из config.json.
- APIKey
- Destination (адрес сервера Grafana)
Позволяет прочитать config.json и поместить все данные в структуру. Необходимо использовать каждый раз при запуске программы Возвращает ошибку, если не существует config.json, его невозможно прочитать или он имеет неверный формат
Отправляет GET запрос. Получает ответ в виде JSON. Если тэг "message" не пуст, то невозможно авторизоваться. Возвращает ошибку, если невозможно получить ответ, невозможно его прочитать, или "message" != nil
Отправляет GET запрос. Получает ответ в виде JSON со всеми известными структурами на сервере. Из этого выбираются только те, что имеют тип "dash-db" Возвращает массив строк - список всех UID "dash-db" Возвращает ошибку, если невозможно подключиться (UserSessoin.TestConnection)
Структура, которая инициализирует дашборд по файлу или его UID.
- UID - уникальный ID дашборда
- ID - простой ID дашборда
- Version - версия данного JSONModel
- Backup - адрес локального неизменённого файла
- Changed - адрес изменённого файла
- MainMap - представление данного JSONModel файла в виде карты тэгов
Инициализирует дашборд. Если он был уже получен (существует файл ./Backups/uid_backup.json), то заполняет абсолютно все поля исходя из этих данных. Если файл не существует, то прописывает автоматически поля Backup и Changed, даже если файл не будет получен.
Все функции, которые работают с API должны получать UserSession как параметр для подключения к серверу.
Фунция получает JSONModel с сервера по Dashboard.UID и сохраняет файл в ./Backups/Dashboard.UID_backup.json. Форматирует полученные данные путём удаления тэга "meta". Также заполняет все поля экземпляра Dashboard необходимыми данными.
Возвращает ошибку, если невозможно авторизоваться, ответ содержит тэг "message", пришёл некорректный ответ
Функция отправляет файл ./Changed/uid.json на сервер.
Возвращает ошибку, если файл не существует, невозмонжо подключиться, пришёл некорректный ответ
Функция берёт данные из файла ./Backups/uid_backup.json, меняет все значения тэга tagName на newValue
Пример:
{
"name": "test123",
"panel":
{
"name": "qwerty"
}
}
dashboard.ChangeTag("name", "hello")
{
"name": "hello",
"panel":
{
"name": "hello"
}
}
Изменённые данные записывает в файл ./Changed/uid.json
Функция откатывает изменения на один коммит назад.
Можно было бы просто отправить файл ./Backups/uid_backup.json, однако в том файле не изменен тэг "version"
Restore вытаскивает dashboard.Version, уменьшает его на один и через POST запрос откатывает изменения. Они отображаются на вкладке Versions в Grafana