Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
rfbr:rest:jobschema [07/122010 13:27] demichev created |
rfbr:rest:jobschema [08/122010 15:11] (current) demichev [Атрибуты описания заданий] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | = JSON схема для описания задания = | + | ====== Формат описания грид-заданий на языке JSON ====== |
- | | [wiki:PilotJsonJobDescription задание] | [wiki:PilotJsonTaskDescription задача] | [wiki:PilotJsonRequirements требования] | | + | ===== Атрибуты описания заданий ===== |
- | == Пример описания задания типа "ромб" == | + | Описание задания не может иметь атрибутов, отличных от перечисленных ниже:љ |
+ | * version, число - версия используемой схемы описания задания. Версия данной схемы 2.љ | ||
+ | * description, строка, опциональный параметр - описание задания в произвольной форме, для понимания человеком.љ | ||
+ | * default_storage_base, строка, опциональный параметр - относительные пути, встречающиеся во вложенных описаниях используют данный URI в качестве базы.љ | ||
+ | * tasks, список объектов, не менее 1 элемента - задачи, из которых состоит задание. Каждый элемент списка является объектом со следующими свойствами:љ | ||
+ | * id, строка, разрешается использовать только символы [a-zA-Z0-9_] - идентификатор задачи. Используется при обращении к задачам задания, а так же при указании связей задач.љ | ||
+ | * description, строка, опциональный параметр - описание задачи в произвольной форме, для понимания человеком.љ | ||
+ | * definition, объект, опциональный параметр - описание задачи (см. [[rfbr:rest:taskschema|Формат описания грид-задач на языке JSON]]). Если данный параметр отсутствует, это может означать, что описание задачи будет загружено на сервер отдельно (например, из внешнего файла).љ | ||
+ | * children, список строк, опциональный параметр - список идентификаторов задач (id), дочерних для данной задачи.љ | ||
+ | * filename, строка, опциональный параметр - имя файла, содержащего описание задачи. При наличии одновременно атрибутов filename и definition, предпочтение отдается описанию задачи из файла, указанного в данном отрибуте.љ | ||
+ | * meta, объект, опциональный - данный атрибут предназначен для хранения любых пользовательских параметров экземпляра задачи, и может иметь любое содержимое.љ | ||
+ | * requirements, список объектов, опциональный параметр - объект требований к ресурсам (согласно схеме описания требований к ресурсам).љ | ||
+ | ===== JSON Schema для описания заданий ===== | ||
- | Само задание:љ | + | JSON Schema описания заданий:љ |
- | љ | + | <code>љ |
- | {{{љ | + | { "description": "Задание",љ |
- | #!graphvizљ | + | "type": "object",љ |
- | digraph G {љ | + | "properties":љ |
- | rankdir=LR;љ | + | { "created": { "type": "string", "format": "date-time" },љ |
- | A -> B;љ | + | "modified": { "type": "string", "format": "date-time", "optional": true },љ |
- | A -> C;љ | + | "expires": { "type": "string", "format": "date-time", љ |
- | B -> D;љ | + | "description": "Дата, когда данная задача будет удалена с сервера." },љ |
- | C -> D;љ | + | "server_time": { "type": "string", "format": "date-time",љ |
- | }љ | + | "description": "Текущие дата и время на сервере" },љ |
- | }}}љ | + | "server_policy_uri": { "type": "string", "format": "uri",љ |
- | љ | + | "description": "URI ресурса с описанием политики работы сервера" },љ |
- | Пример описания:љ | + | "owner": { "type": "string", љ |
- | љ | + | "description": "DN пользователя, создавшего задание",љ |
- | {{{љ | + | "maxLength": 256 },љ |
- | #!jsљ | + | "vo": { "type": "string", љ |
- | { "version": 2,љ | + | "description": "Виртуальная организация задания",љ |
- | "description": "человеческое описание задания",љ | + | "maxLength": 64 },љ |
- | "default_storage_base": "gsiftp://tb01.ngrid.ru/home/shamardin/job-58a8a28b/",љ | + | "state": { "type": "array", љ |
- | "tasks": [ { "id": "a",љ | + | "description": "Состояние задания, со всей историей его изменений", љ |
- | "description": "человеческое описание задачи",љ | + | "items": { "type": "object",љ |
- | "children": [ "b", "c" ] | + | "description": "Запись о состоянии задания.",љ |
+ | "properties":љ | ||
+ | { "s": { "type": "string", љ | ||
+ | "description": "состояние",љ | ||
+ | "enum": [ "new", "pending", "running", "paused", "finished", "aborted"] },љ | ||
+ | "ts": { "type": "string",љ | ||
+ | "format": "date-time",љ | ||
+ | "description": "время, когда наступило данное состояние" }љ | ||
+ | },љ | ||
+ | "additionalProperties": trueљ | ||
+ | } | ||
}, | }, | ||
- | { "id": "b",љ | + | "operation": { "type": "array",љ |
- | "children": ["d"],љ | + | "description": "операции, которые должны быть выполнены с данным заданием",љ |
- | "filename": "b.jt"љ | + | "items": { "type": "object",љ |
- | },љ | + | "description": "Операция с заданием",љ |
- | { "id": "c",љ | + | "properties":љ |
- | "description": "задача C" ,љ | + | { "op": { "type": "string",љ |
- | "children": ["d"],љ | + | "description": "операция",љ |
- | "definition": { "version": 2,љ | + | "enum": [ "start", "pause", "abort" ] },љ |
- | "executable": "/bin/ls",љ | + | "id": { "type": "string",љ |
- | "stdout_file": "%(base)s/c/out.txt"љ | + | "description": "id операции",љ |
- | }љ | + | "maxLength": 36 },љ |
- | },љ | + | "created": { "type": "string",љ |
- | { "id": "d",љ | + | "format": "date-time",љ |
- | "definition": { "version": 2,љ | + | "description": "время, когда была запрошена данная операция" },љ |
- | "executable": "/bin/ls",љ | + | "completed": { "type": "string",љ |
- | "stdout_file": "out-d.txt",љ | + | "format": "date-time",љ |
- | "requirements": [љ | + | "description": "время, когда была выполнена данная операция",љ |
- | { "hostname": ["tb01.ngrid.ru"] }љ | + | "optional": true,љ |
- | ]љ | + | "requires": "success" },љ |
- | } | + | "success": { "type": "boolean",љ |
+ | "description": "было ли выполнение операции успешным",љ | ||
+ | "optional": true,љ | ||
+ | "requires": "completed" },љ | ||
+ | "result": { "type": "object",љ | ||
+ | "description": "результат завершения операции",љ | ||
+ | "optional": true,љ | ||
+ | "requires": "completed" }љ | ||
+ | љ | ||
+ | },љ | ||
+ | "additionalProperties": trueљ | ||
+ | }љ | ||
+ | },љ | ||
+ | "definition": { "type": "string",љ | ||
+ | "description": "описание задания на языке описания заданий",љ | ||
+ | "format": "application/octet-stream"љ | ||
+ | },љ | ||
+ | "tasks": { "type": "array",љ | ||
+ | "description": "список URI задач задания",љ | ||
+ | "items": { "type": "string",љ | ||
+ | "format": "uri" } | ||
} | } | ||
- | ],љ | + | },љ |
- | "requirements": { "hostname": ["tb01.ngrid.ru", "tb10.ngrid.ru"] } | + | "additionalProperties": false |
} | } | ||
- | }}}љ | + | </code> |
- | љ | + | |
- | {{{љ | + | |
- | #!rstљ | + | |
- | Описание заданияљ | + | |
- | ================љ | + | |
- | љ | + | |
- | Описание задания не может иметь атрибутов, отличных от перечисленныхљ | + | |
- | ниже.љ | + | |
- | љ | + | |
- | * **version**, *число*љ | + | |
- | љ | + | |
- | Версия используемой схемы описания задания. Версия данной схемы 2.љ | + | |
- | љ | + | |
- | * **description**, *строка, опциональный параметр*љ | + | |
- | љ | + | |
- | Описание задания в произвольной форме, для понимания человеком.љ | + | |
- | љ | + | |
- | * **default_storage_base**, *строка, опциональный параметр*љ | + | |
- | љ | + | |
- | Относительные пути, встречающиеся во вложенных описаниях используютљ | + | |
- | данный URI в качестве базы.љ | + | |
- | љ | + | |
- | * **tasks**, *список объектов, не менее 1 элемента*љ | + | |
- | љ | + | |
- | Задачи, из которых состоит задание. Каждый элемент списка являетсяљ | + | |
- | объектом со следующими свойствами:љ | + | |
- | љ | + | |
- | - **id**, *строка, разрешается использовать только символы [a-zA-Z0-9_]*љ | + | |
- | љ | + | |
- | Идентификатор задачи. Используется при обращении к задачамљ | + | |
- | задания, а так же при указании связей задач.љ | + | |
- | љ | + | |
- | - **description**, *строка, опциональный параметр*љ | + | |
- | љ | + | |
- | Описание задачи в произвольной форме, для понимания человеком.љ | + | |
- | љ | + | |
- | - **definition**, *объект, опциональный параметр*љ | + | |
- | љ | + | |
- | Описание задачи (согласно схеме описания задачи `PilotJsonTaskDescription`:trac:). Если данныйљ | + | |
- | параметр отсутствует, это может означать, что описание задачиљ | + | |
- | будет загружено на сервер отдельно (например, из внешнего файла).љ | + | |
- | љ | + | |
- | - **children**, *список строк, опциональный парамтер*љ | + | |
- | љ | + | |
- | Список идентификаторов задач (**id**), дочерних для даннойљ | + | |
- | задачи.љ | + | |
- | љ | + | |
- | - **filename**, *строка, опциональный параметр*љ | + | |
- | љ | + | |
- | Имя файла, содержащего описание задачи. При наличии одновременнољ | + | |
- | атрибутов **filename** и **definition**, предпочтение отдаетсяљ | + | |
- | описанию задачи из файла, указанного в данном отрибуте.љ | + | |
- | љ | + | |
- | Данный атрибут целиком обрабатывается в ``pilot_cli`` в процессељ | + | |
- | запуска задания командной ``pilot-job-submit``.љ | + | |
- | љ | + | |
- | - **meta**, *объект, опциональный*љ | + | |
- | љ | + | |
- | Данный атрибут предназначен для хранения любых пользовательскихљ | + | |
- | параметров экземпляра задачи, и может иметь любое содержимое.љ | + | |
- | љ | + | |
- | * **requirements**, *список объектов, опциональный параметр**љ | + | |
- | љ | + | |
- | Объект требований к ресурсам (согласно схеме описания требований кљ | + | |
- | ресурсам).љ | + | |
- | љ | + | |
- | * **meta**, *объект, опциональный*љ | + | |
- | љ | + | |
- | Данный атрибут предназначен для хранения любых пользовательскихљ | + | |
- | параметров задания, и может иметь любое содержимое.љ | + | |
- | }}}љ | + |