Spec-Zone.ru › MariaDB

Автоматизация обновлений с помощью REST API загрузок MariaDB.Org

Фонд MariaDB поддерживает REST API загрузок. Обратитесь к документации API загрузок, чтобы узнать все задачи, которые можно выполнить с помощью этого API. В общем случае можно сказать, что он предоставляет информацию о продуктах MariaDB и доступных версиях. Это позволяет легко автоматизировать обновления для MariaDB и связанных продуктов.

API загрузок предоставляет HTTPS-конечные точки, возвращающие информацию в формате JSON. HTTP и JSON — это чрезвычайно распространенные стандарты, которые легко использовать с любым языком программирования. Вся информация, предоставляемая API, является общедоступной, поэтому аутентификация не требуется.

Использование API с оболочкой Unix

Оболочки Linux отлично подходят для написания простых скриптов. Они в какой-то степени совместимы друг с другом, поэтому простые скрипты можно запускать практически на любой системе Unix/Linux. В следующих примерах мы будем использовать Bash.

В Linux для работы с любым REST API обычно необходимы следующие программы:

  • curl, для вызова HTTP-URL и получения их вывода.
  • jq, для извлечения или преобразования информации из JSON-документа.

Пример: Проверка появления новой GA-версии

Тривиальным случаем использования является написание скрипта, который проверяет список основных GA-версий MariaDB и, когда что-то изменяется, отправляет нам электронное письмо. Таким образом, мы можем протестировать самую новую GA-версию и, возможно, установить ее.

Скрипт в этом примере будет чрезвычайно простым. Мы сделаем это так:

  • Получение JSON-объекта, описывающего все версии MariaDB.
  • Для каждого элемента массива отображаются только свойства release_id и release_status, и они конкатенируются.
  • Применяется фильтр, так что выбираются только строки, содержащие 'stable', но не 'old' (чтобы исключить 'Old Stable').
  • Из оставшихся строк отображается только первый столбец (номер версии).
  • Если полученные результаты отличаются от ранее записанных в файл (см. последний пункт), отправляется электронное письмо.
  • Сохранение результатов в файл.

Это то, что мы можем легко сделать с помощью оболочки Unix:

#!/bin/bash

current_ga_versions=$(
    curl https://downloads.mariadb.org/rest-api/mariadb/ | \
    jq -r '.major_releases[] | .release_id + " " + .release_status' | \
    grep -i 'stable' | grep -vi 'old' | \
    cut -d ' ' -f 1
)

# create file if it doesn't exist, then compare version lists
touch ga_versions
previous_ga_versions=$( cat ga_versions )

echo "$current_ga_versions" > ga_versions

if [ "$current_ga_versions" != "$previous_ga_versions" ];
then
    mail -s 'NOTE: New MariaDB GA Versions' devops@example.com <<< 'There seems to be a new MariaDB GA version! Yay!'
fi

Единственной нестандартной командой здесь является jq. Это отличный способ манипулирования JSON-документами, поэтому, если вы не знакомы с ним, вы можете ознакомиться с документацией jq.

Использование API с Python-скриптом

Для использования API с Python нам нужен модуль, который может отправлять HTTP-запросы и анализировать JSON-вывод. Модуль requests обладает обеими этими функциями. Его можно установить следующим образом:

pip install requests

Следующий скрипт выводит стабильные версии в стандартный вывод:

#!/usr/bin/env python

import requests

response = requests.get('https://downloads.mariadb.org/rest-api/mariadb/').json()

for x in response['major_releases']:
    if x['release_status'] == 'Stable':
        print(x['release_id'])

requests.get() выполняет HTTP-вызов типа GET, а requests.json() возвращает словарь, представляющий ранее полученный JSON-документ.


Контент первоначально предоставлен Vettabase Ltd.

Контент, воспроизведенный на этом сайте, является собственностью соответствующих владельцев, и этот контент не предварительно просматривается MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/automating-upgrades-with-mariadborg-downloads-rest-api/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API