5.7.5. TaskChangeConfig

Описание

Настройка запущенных задач.

Настройки мониторинга передаются двумя частями …

Архитектура Boro подразумевает, что некоторые настройки передаются задаче индивидуально, а другая часть настроек объединена в профиль порогов. Это позволяет назначить типовой задаче один из предустановленных профилей. Настройки порогов, описанные в методе ProfileInfo, должны быть переданы задаче путем выбора необходимого профиля, а не прямым указанием значения. Все возможные настройки описаны в главе Конфигурация задачи.

В задаче изменяются только те настройки, которые были переданы в методе, остальные настройки остаются без изменений.

Важно

Архитектура зонда не позволяет изменять некоторые настройки:
task_id - идентификатор задачи;
uri или addr - путь к анализируемому потоку (сервису, файлу);
ottAllRenditions - режим анализа OTT сервиса (Player|AllRenditions).
Остановите текущую задачу и запустите новую с корректными настройками.

Важно

Для задач анализа OTT сервисов изменение настроек возможно только в родительской задаче (вкладка Master на странице задачи в интерфейсе Boro). Настройки дочерних задач обновятся автоматически.

Запрос

{
  "user_id":(number),
  "methods":[
    {
      "method":"TaskChangeConfig",
      "params":{
        "project_id":(number),
        "task_ids":[(number)],
        "changes":{
          "name":(string),
          "service":(string),
          "tags":(string),
          "scheduled_time":{
            "start_timestamp":(number),
            "stop_timestamp":(number),
            "timezone":(string),
          },
          "profiles":{
            "alarm":[(number)],
            "email":[(number)],
            "threshold":[(number)],
            "pagerduty":[(number)],
            "record":[(number)],
            "snmp":[(number)],
            "webhook":[(number)],
            "telegram":[(number)],
            "kpi":[(number)]
          },
          "task_config":{
            ...
          }
        }
      }
    }
  ]
}
  • user_id - целое число, идентификатор пользователя;

  • project_id - целое число, идентификатор проекта пользователя;

  • task_ids - идентификаторы задач, поле может задаваться в одном из следующих форматов:
    id1 - целое число, идентификатор задачи;
    [id1,id2] - массив целых чисел, идентификаторы задач.
  • changes - объект, перечень новых настроек. В задаче изменяются только те настройки, которые были переданы в данном объекте, остальные настройки остаются без изменений;

  • name - строка, имя потока (например, название канала);

  • service - строка, идентификационное имя сервиса (канала) для консолидации состояний и ошибок сервиса из разных точек мониторинга. Данное поле связывает задачи проекта от разных зондов на виде MosaicView;

  • tags - строка, список тегов, разделенный запятыми. Теги применяются для фильтрации отображения на различных видах;

  • scheduled_time - объект, содержит параметры для запуска и остановки запланированных задач:
    • start_timestamp - целое число, время запуска задачи. Значение указывается в Unix time. Смотрите примеры в разделе Особенности настройки планировщика;

    • stop_timestamp - целое число, время остановки задачи. Значение указывается в Unix time. Смотрите примеры в разделе Особенности настройки планировщика;

    • timezone - строка, часовой пояс для понимания установленного времени пользователем. Значение указывается в формате tz database / INNA. Если поле отсутствует, обновление часового пояса не произойдет. Если указано значение null, будет использована зона UTC (UTC+00:00).

  • profiles - объект, перечень идентификаторов профилей настроек системы оповещения, записи и доступности сервиса:
    • alarm - массив целых чисел, идентификатор профиля настроек триггеров Alarm оповещения. Текущая реализация позволяет задать только один профиль данного типа;

    • email - массив целых чисел, идентификаторы профилей настроек триггеров E-mail оповещения;

    • threshold - массив целых чисел, идентификатор профиля настроек и пороговых значений зонда. Текущая реализация позволяет задать только один профиль данного типа;

    • pagerduty - массив целых чисел, идентификаторы профилей настроек триггеров оповещения в систему PagerDuty;

    • record - массив целых чисел, идентификаторы профилей настроек записи;

    • snmp - массив целых чисел, идентификаторы профилей настроек триггеров SNMP оповещения;

    • webhook - массив целых чисел, идентификаторы профилей настроек триггеров Webhook оповещения;

    • telegram - массив целых чисел, идентификаторы профилей настроек триггеров оповещения в мессенджер Telegram;

    • kpi - массив целых чисел, идентификатор профиля настроек доступности сервиса. Текущая реализация позволяет задать только один профиль данного типа.

  • task_config - объект, настройки и дополнительная информация о задаче. Смотрите описание структуры в разделе Конфигурация задачи. Некоторые настройки необходимо передавать через профиль thresholds, см. описание метода ProfileInfo.

Ответ

{
  "reply":[
    {
      "method":"TaskChangeConfig",
      "result":{
        "task_ids":[(number)],
        "description":"Config change request was sent to probe",
        "changes":{
          ...
        }
      }
    }
  ]
}
  • task_ids - массив целых чисел, идентификаторы задач;

  • changes - объект, перечень новых настроек, которые прошли проверку на корректность на сервере и были отправлены зонду. Описание содержимого объекта аналогично описанию объекта changes в Запросе.

Ошибки

{
  "reply":[
    {
      "method":"TaskChangeConfig",
      "errors":{
        ...
      }
    }
  ]
}

Объект errors может содержать следующие ошибки:

  • immutable_fields - массив строк, список настроек, которые не могут быть изменены ['taskId', 'addr', 'addr', 'ottAllRenditions']. Остановите текущую задачу и запустите новую с корректными настройками;

  • change_with_threshold - массив строк, список настроек, которые принадлежат профилю порогов. Такие настройки можно установить только выбором одного из преднастроенных профилей thresholds;

  • incorrect_value - массив строк, список настроек, которые имеют некорректное значение;

  • unable_change_tasks - массив целых чисел, список идентификаторов задач, для которых невозможно выполнить метод (задача с таким id не существует, не запущена или принадлежит другому проекту);

  • unable_change_subtasks - массив целых чисел, список идентификаторов задач, которые являются дочерними задачами. Для задач анализа OTT сервисов изменение настроек возможно только в родительской задаче;

  • no_changes_for_tasks - массив целых чисел, список идентификаторов задач. В методе не передается ни одного корректного изменения настроек.

Пример

Запрос утилитой cURL
#1. Настройка одной задачи: изменяется название задачи и список тегов
  curl http://172.16.11.111/ctrl_api/v1/json \
   -H "Content-Type: application/json" \
   --data '{"user_id":4,"methods":[{"method":"TaskChangeConfig","params":{"project_id":23,"task_ids":241555,"changes":{"tags":"HD,IPTV","name":"NewTask"}}}]}'

#2. Настройка нескольких задач: изменяется список тегов, включается захват эскизов и контроль замирания
  curl http://172.16.11.111/ctrl_api/v1/json \
   -H "Content-Type: application/json" \
   --data '{"user_id":4,"methods":[{"method":"TaskChangeConfig","params":{"project_id":23,"task_ids":[241555,241630],"changes":{"tags":"HD, IPTV","profiles":{"alarm":390},"task_config":{"thumbnail":{"enable":true,"default_period":5},"freeze":{"enable":true}}}}}]}'
Ответ на запрос из примера #2
 {
   "reply":[
     {
       "method":"TaskChangeConfig",
       "result":{
         "task_ids":[
           241555,
           241630
         ],
         "description":"Config change request was sent to probe",
         "changes":{
           "tags":"HD, IPTV",
           "profiles":{
             "alarm":390
           },
           "task_config":{
             "thumbnail":{
               "enable":true,
               "default_period":5
             },
             "freeze":{
               "enable":true
             }
           }
         }
       }
     }
   ]
 }

Особенности настройки планировщика

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

Для запланированных задач (задачи, которые еще не были запущены):

Обновление / Исходное

start = time1, stop = time2

start = time1, stop = null

start = time3, stop = time4

start = time3, stop = time4
Обновление времени запуска и остановки
start = time3, stop = time4
Обновление времени запуска и назначение времени остановки

start = null

start = null, stop = time2
Незамедлительный запуск задачи с запланированной остановкой
start = null, stop = null
Незамедлительный запуск «обычной задачи» 1

stop = null

start = time1, stop = null
Удаление запланированной даты остановки

Нет изменений

start = null, stop = null

start = null, stop = null
Незамедлительный запуск «обычной задачи»
start = null, stop = null
Незамедлительный запуск «обычной задачи»

Для уже запущенных задач:

Обновление / Исходное

start = time1, stop = time2

start = time1, stop = null

start = null, stop = null

start = time3 или start = null

Недопустимая операция
Недопустимая операция
Недопустимая операция

stop = time4

start = time1, stop = time4
Обновление времени остановки
start = time1, stop = time4
Назначение времени остановки, задача становится «запланированной»
start = null, stop = time4
Назначение времени остановки, задача становится «запланированной»

stop = null

start = time1, stop = null
Отмена запланированной остановки, задача становится «обычной»

Нет изменений

Нет изменений

1

Здесь и далее по тексту под термином «обычная задача» подразумевается задача в которой отсутствуют запланированные параметры запуска и остановки.