Управление обновлением системы

Обзор

Позволяет управлять обновлением системы. Реализован backup системы при обновлении, откат системы в автоматическом режиме не предусматривается.

Запросы

HTTP verb Endpoint Описание

POST

/api/admin/v1/update/upload

Загрузка обновления

POST

/api/admin/v1/update/copyfrom

Копирование файла обновления с диска

GET

/api/admin/v1/update/get_upstate

Получение состояния обновления

POST

/api/admin/v1/update/prepare

Запуск подготовки к обновлению

POST

/api/admin/v1/update/apply

Применение обновления

GET

/api/admin/v1/update/read

Получение списка файлов обновления

POST

/api/admin/v1/update/delete

Удаление файла обновления

POST

/api/admin/v1/update/cancel

Отмена обновления

Загрузка обновления

Запрос

Пример запроса
POST /api/admin/v1/update/upload HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------boundary_69df8120352a996e

-----------boundary_69df8120352a996e
Content-Type: application/octet-stream
Content-Disposition: form-data; name="filename"; filename="fw_update_era_amd64.zip"
Content-Transfer-Encoding: binary

BINARY BODY OF 'fw_update_era_amd64.zip'
-----------boundary_69df8120352a996e--

Ответ

Пример ответа
HTTP/1.1 200 OK

{
    "resultcode": 0,
    "resultmsg": "OK",
    "data": {
            "mc": "mic@192.168.0.35",
            "filename": "fw_update_era_amd64.zip",
            "uploaded": true
            }
}

Копирование файла обновления с диска

Метод позволяет скопировать файл обновления из указанного пути в папку обновлений на активном mc.

Запрос

Table 1. Параметры запроса
Имя Тип Описание

filepath

str

Полный путь до файла обновления, для копирования (в формате url-encoded).

Пример запроса
POST /api/admin/v1/update/copyfrom HTTP/1.1
Content-Type: application/x-www-form-urlencoded

filepath=%2Fhome%2Fadmin%2Fera_update%fw_update_era_amd64.zip

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": {
    "mic": "mic@192.168.0.35",
    "src_path": "/home/admin/era_update/fw_update_ubuntu_1_2_283_amd64.zip",
    "dst_path": "/var/lib/era/workdir/mc@192.168.0.35/AutoUpdate/fw_updateera_amd64.zip",
    "result": "ok"
  }
}

Получение состояния обновления

Метод возвращает текущее состояние применения обновления по серверам и сайтам.

Запрос

Пример запроса
GET /api/admin/v1/update/get_upstate HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": {
    "slave2": {
      "ic": {
        "node": "ic21@192.168.0.126",
        "state": "idle",
        "current_vsn": "1.4.0"
      },
      "servers": {
        "server3@192.168.0.126": {
          "state": "idle",
          "product": "era",
          "product_vsn": "2018.4.29-nightly"
        },
        "server4@192.168.0.127": {
          "state": "idle",
          "product": "era",
          "product_vsn": "2018.4.29-nightly"
        }
      }
    },
    "central": {
      "mic": {
        "node": "mic@192.168.0.123",
        "state": "idle",
        "upfilename": "undefined"
      },
      "ic": {
        "node": "ic1@192.168.0.123",
        "state": "idle",
        "current_vsn": "1.4.0"
      },
      "servers": {
        "server2@192.168.0.124": {
          "state": "idle",
          "product": "era",
          "product_vsn": "2021.4.29-nightly"
        },
        "server1@192.168.0.123": {
          "state": "idle",
          "product": "era",
          "product_vsn": "2021.4.29-nightly"
        }
      }
    }
  }
}
Table 2. Возможные состояния
Название Описание

Состояния MC

init

происходит инициализация сервиса обновления.

idle

состояние покоя, система не применяет обновление.

download

производится загрузка обновления через ws или копированием с диска.

prepare

производится подготовка к обновлению.

ready

подготовка успешно завершена, MC готов предоставить файл обновления всем SC. Доступна команда отмены и применения обновления.

apply

получена команда применения обновления и перенаправлена всем SC.

cancel

получена команда отмены обновления, происходит переход в idle.

locked

сервер заблокирован, т.к. найден MC более новой версии.

По сайтам (состояния роли SC)

init

происходит инициализация сервиса обновления.

idle

состояние покоя, система не применяет обновление.

prepare

запущена подготовка к обновлению.

download

подготовка прошла не успешно, запущено скачивание файла обновления с MC.

ready

подготовка прошла успешно, SC готов предоставить файл обновления всем SrvC. Доступна команда отмены и применения обновления.

apply

получена команда применения обновления и перенаправлена всем SrvC.

По серверам (состояние SrvC)

init

происходит инициализация сервиса обновления.

idle

состояние покоя, система не применяет обновление.

prepare

запущена подготовка к обновлению.

download

подготовка прошла не успешно, запущено скачивание файла обновления с SC.

ready

подготовка прошла успешно. Доступна команда отмены и применения обновления.

apply

получена команда применения обновления, запущен процесс обновления.

Запуск подготовки к обновлению

Запускает подготовку к обновлению с указанным файлом обновления. Выполняется асинхронно. Текущее состояние подготовки отображается в get_upstate.

Запрос

Table 3. Параметры запроса
Имя Тип Описание

filename

str

имя файла обновления (*.zip) который будет использован для обновления.

Пример запроса
POST /api/admin/v1/update/prepare HTTP/1.1
Content-Type: application/x-www-form-urlencoded

filename=fw_update_era_amd64.zip

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": {
    "mc": "mic@192.168.0.35",
    "result": "preparation_is_started"
  }
}

Применение обновления

Применяет распределенное по серверам системы обновление. Копирование с возможной заменой или удалением файлов нового дистрибутива, после чего происходит перезагрузка каждого сервера.

Запрос

Пример запроса
POST /api/admin/v1/update/apply HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": {
    "mc": "mic@192.168.0.35",
    "result": "upgrade_started"
  }
}

Получение списка файлов обновления

Отображает файлы (и распакованные директории) обновления по сайтам и серверам.

Запрос

Пример запроса
GET /api/admin/v1/update/read HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": {
    "central": [
      {
        "dirs": ["fw_update_era_amd64"],
        "files": ["fw_update_era_amd64.zip"],
        "node": "mic@192.168.0.127",
        "result": "ok"
      },
      {
        "dirs": ["fw_update_era_amd64"],
        "files": ["fw_update_era_amd64.zip"],
        "node": "ic1@192.168.0.127",
        "result": "ok"
      },
      {
        "dirs": ["fw_update_era_amd64"],
        "files": ["fw_update_era_amd64.zip"],
        "node": "server1@192.168.0.127",
        "result": "ok"
      }
    ],
    "slave2": [
      {
        "dirs": ["fw_update_era_amd64"],
        "files": ["fw_update_era_amd64.zip"],
        "node": "ic21@192.168.0.124",
        "result": "ok"
      },
      {
        "dirs": ["fw_update_era_amd64"],
        "files": ["fw_update_era_amd64.zip"],
        "node": "server3@192.168.0.124",
        "result": "ok"
      }
    ]
  }
}

Удаление файла обновления

Позволяет удалить файл обновления (и распакованные директории) со всех серверов системы

Запрос

Table 4. Параметры запроса
Имя Тип Описание

filename

str

имя файла обновления который необходимо удалить (без расширения).

Пример запроса
POST /api/admin/v1/update/delete HTTP/1.1
Content-Type: application/x-www-form-urlencoded

filename=fw_update_1.2.244

Ответ

Пример ответа
HTTP/1.1 200 OK

{
    "resultcode": 0,
    "resultmsg": "OK",
    "data": {
            "description": "delete_files_started",
            "node": "mic@192.168.0.127",
            "result": "ok"
            }
}

Отмена обновления

Позволяет отменить обновление. Выполнение возможно только после команды prepare. После применения команды apply, выполнение не возможно.

Запрос

Пример запроса
POST /api/admin/v1/update/cancel HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": {
    "mc": "mic@192.168.0.127",
    "result": "cancel_started"
  }
}