3.4.Управление заданиями и задачами 3.4.1.Создание нового задания Для создания новых заданий используется запрос POST к pilot/jobs/, запрос является JSON-объектом, имеющим следующие атрибуты:
definition, объект. Описание задания, и, возможно, задач, согласно спецификации описания заданий, задач и ресурсных требований.
Ответ на запрос соответствует ответу на запрос списка заданий. Возможные коды HTTP ответа: 201, 400, 401, 412.
3.4.2.Получение информации о задании Для получения информации о состоянии задания используется запрос GET к pilot/jobs//, где — идентификатор задания.
Ответ на запрос является объектом, имеющим следующие атрибуты:
created, modified, строка. Дата/время создания задания и дата/время последнего изменения задания или его состояния.
expires, строка. Дата/время автоматического удаления задания с сервера.
server_time, строка. Дата/время на сервере на момент генерации данного ответа сервера.
server_policy_url, строка. URL документа, описывающего политику сервера, применяемую к данному заданию. Политика сервера описывает используемые сервером умолчания, и ограничения.
owner, строка. DN владельца задания
vo, строка. Виртуальная организация, от имени которой запущено задание. null если неизвестно.
state, список объектов. История изменений состояния задания. Каждый объект имеет атрибуты:
s, строка. Состояние задания. Возможные значения:
new: только что созданное задание;
pending: задание ожидает начала выполнения;
running: задание выполняется;
paused: выполнение задания приостановлено;
finished: выполнение задания завершено;
aborted: выполнение задания отменено.
ts, строка. Дата/время, когда наступило соответствующее состояние.
Объект состояния может так же иметь другие атрибуты, не определенные в данном списке. Текущее состояние задания соответствует элементу с наиболее свежей датой/временем. Порядок, в котором объекты присутствуют в списке, может быть произвольным.
operation, список объектов. Текущие операции и история выполнения операций над заданием. Каждый объект имеет атрибуты:
op, строка. Операция. Возможные значения:
start: запуск задания на выполнение;
pause: приостановка выполнения задания;
abort: отмена выполнения задания.
id, строка. Уникальный в рамках одного задания идентификатор операции.
created, строка. Дата и время помещения данной операции в очередь.
completed, строка. Дата и время завершения данной операции.
success, boolean. Было ли завершение операции успешным.
result, объект. Расширенный результат завершения операции, произвольный объект.
Объект операция может так же иметь другие атрибуты, не определенные в данном списке. Операции обрабатываются системой в хронологическом порядке. Порядок, в котором объекты присутствуют в списке, может быть произвольным.
definition, объект. Описание задания, без описания задач, согласно спецификации описания заданий, задач и ресурсных требований.
tasks, объект. URI задач задания. Атрибуты объекта соответствуют идентификаторам задач из описания задания, значения этих атрибутов — URI соответствующих задач (возможно, относительные).
deleted, boolean. Значение True означает, что данное задание помечено как удаленное. Удаленные задания доступны только для чтения.
Возможные коды HTTP ответа: 201, 400, 401, 412.
Ниже приводится пример ответа сервера с информацией о задании.
{ "created": "2009-07-03T10:27:00Z",
"modified": "2009-07-03T10:27:14Z",
"expires": "2009-07-04T10:28:30Z",
"server_time": "2009-07-03T10:28:30Z",
"server_policy_uri": "https://example.ru/policy/job/",
"definition": { "version": 2,
"description": "тестовое задание",
"default_storage_base": "gsiftp://resource.ru/home/shamardin/jt/",
"tasks": [ { "id": "a",
"description": "задача #1",
"definition": { "version": 2,
"executable": "/usr/bin/whoami",
"stdout": "test.txt"
}
}
]
}
"state": [ { "s": "new",
"ts": "2009-07-03T10:27:00Z" },
{ "s": "pending",
"ts": "2009-07-03T10:27:14Z" },
{ "s": "running",
"ts": "2009-07-03T10:27:22Z" } ],
"owner": "/C=RU/O=RDIG/OU=users/OU=sinp.msu.ru/CN=Lev Shamardin",
"operation": [ { "op": "start",
"id": "c9deca6c-3208-4146-848b-2b65b0943127",
"created": "2009-07-03T10:27:03Z",
"completed": "2009-07-03T10:27:14Z",
"success": true
} ],
"tasks": {
"a": "https://example.ru/jobs/912832/a/"
},
"deleted": false
}
3.4.3.Изменение задания и выполнение операций над заданием Для изменения задания, а так же для выполнения операций над заданием (например, запуск задания), используются запросы методом PUT по URI задания, который обычно имеет вид pilot/jobs//.
Запрос является объектом, имеющим следующие атрибуты:
definition, объект, опциональный параметр. Новое описание задания и, возможно, задач, согласно спецификации описания заданий, задач и ресурсных требований. При наличии данного атрибута в запросе произойдет изменение описания задания и, возможно, задач задания. Изменение возможно только для заданий, находящихся в состоянии new. Попытка изменения описания задания, находящегося в другом состоянии вызовет ошибку 403. Все задачи, отсутствующие в новом описании задания, будут сразу же удалены с сервера. Задачи, описания которых отсутствуют в новом описании задания, изменены не будут.
operation, объект, опциональный параметр. При наличии этого параметра будет создана новая операция над заданием, если ее не существовало ранее. Объект имеет следующие атрибуты:
op, строка. Выполняемая операция. Возможные значения:
start: запустить задание на выполнение;
pause: приостановить выполнение задания;
abort: отменить выполнение задания.
id, строка. Уникальный в рамках одного задания идентификатор операции. Генерация уникального id является ответственностью клиента, в качестве id рекомендуется использовать, например, time-based UUID Error: Reference source not found.
Возможные коды HTTP ответа: 204, 401, 404.
Пример запроса на запуск задания:
{ "operation": { "op": "start",
"id": "c9deca6c-3208-4146-848b-2b65b0943127" } }
3.4.4.Получение списка заданий Для получения списка заданий пользователя (в любом состоянии) используется запрос методом GET к pilot/jobs/. Ответом сервера является список объектов, каждый из которых имеет следующие атрибуты:
uri, строка. URI задания.
job_id, строка. идентификатор задания
Возможные коды HTTP ответа: 200, 401.
Пример ответа на запрос получения списка заданий
[ { "uri": "https://example.ru/jobs/199231/" },
{ "uri": "https://example.ru/jobs/912832/" } ]
3.4.5.Удаление задания Для удаления задания используется запрос методом DELETE по URI задания. После удаления задания вся информация о нем и его задачах становится недоступной. При удалении задания, которые выполняется в момент удаления, производится принудительная остановка задания.
Возможные коды HTTP ответа: 204, 401, 404.
3.4.6.Получение информации о задаче Для получения информации о задаче, включающей состояние задачи, используется запрос методом GET по URI задачи, который обычно имеет вид pilot/jobs///. Ответом сервера является объект, имеющий следующие атрибуты:
created, modified, строка. Дата/время создания задачи и дата/время последнего изменения задачи или ее состояния.
job, строка. URI задания, к которому относится данная задача.
state, список объектов. Список состояний задания за все время его существования. Каждое состояние является объектом, имеющим атрибуты:
s, строка. Состояние. Возможные значения:
new: новая необработанная задача;
pending: задача ожидает начала выполнения;
running: задача выполняется;
paused: выполнение задачи приостановлено;
finished: выполнение задачи завершено;
aborted: выполнение задачи отменено.
ts, строка. Дата и время перехода задачи в данное состояние.
Возможно так же наличие дополнительных атрибутов, специфичных для данного состояния.
definition, объект. Описание задачи согласно спецификации описания заданий, задач и ресурсных требований.
exit_code, число. Код завершения задачи, если он известен.
deleted, boolean. Значение True означает, что данная задача помечена как удаленная. Удаленные задачи доступны только для чтения.
Возможные коды HTTP ответа: 200, 401, 404.
Пример ответа с состоянием задачи
{ "created": "2009-07-03T10:27:00Z",
"modified": "2009-07-03T10:27:02Z",
"job": "https://example.ru/jobs/912832/",
"definition": { "version": 2,
"executable": "/usr/bin/whoami",
"stdout": "test.txt"
},
"deleted": false,
"state": [ { "s": "new",
"ts": "2009-07-03T10:27:00Z" },
{ "s": "pending",
"ts": "2009-07-03T10:27:14Z" },
{ "s": "running",
"ts": "2009-07-03T10:27:22Z" },
{ "s": "finished",
"ts": "2009-07-03T10:27:23Z" } ],
"exit_code": 0
}
3.4.7.Изменение задачи Для изменения описания задачи задачи используются запросы методом PUT по URI задачи, который обычно имеет вид pilot/jobs//. Запрос является объектом, имеющим следующие атрибуты:
definition, объект. Новое описания задачи согласно спецификации описания заданий, задач и ресурсных требований. Изменение задачи возможно только в том случае, если задача находится в состоянии new. Попытка изменения описания задачи, находящейся в другом состоянии вызовет ошибку 403.
Пример запроса на изменение задачи
{
"definition": { "version": 2,
"executable": "/usr/bin/whoami",
"stdout": "test.txt"
}
}
3.4.8.Получение информации о доступных ресурсах Для получения информации о доступности ресурсов для выполнения задания, включая всего его задачи с учетом требований, используется запрос методом GET по URI вида pilot/v2/jobs//resources. Ответом является объект, имеющий следующие атрибуты:
runnable, boolean. Можно ли выполнить все задачи задания на существующих в системе ресурсах. Данный атрибут имеет значение истина, если возможно выполнить все задачи задания на существующих ресурсах, и ложь в противном случае.
resources, список объектов. Список объектов, каждый из которых представляет информацию о ресурсах, подходящих для одной из задач задания. Каждый объект имеет следующие атрибуты:
task_id, строка. Идентификатор задачи
resources, список объектов. Список совместимых ресурсов (GRAM'ов). Каждый элемент списка является объектом, имеющим следующие атрибуты:
host, строка. Имя хоста.
port, число. Порт.
lrms_type, строка. Тип lrms.
queue, строка. Название очереди.
Поскольку выполнение поиска ресурсов может занимать определенное время, ответ на такой запрос к серверу может занять существенное время.
|