9.10.1 Обзор
Для создания нового объекта-очереди (см. раздел 11) в определенном контейнере, где имя очереди - идентификатор объекта, присвоенный сервером, следует выполнить запрос:
POST <root URI>/<ContainerName>/
Для создания нового объекта-очереди, где объект не принадлежит контейнеру и доступен только по ID (см. 5.8), следует выполнить запрос:
POST <root URI>/cdmi_objectid/
Где:
- <root URI> путь к облаку CDMI;
- <ContainerName> неотрицательное количество существующих промежуточных контейнеров, имена которых разделены одиночными наклонными чертами (т.е., "/").
В случае создания в "/cdmi_objectid/" к объекту-очереди можно обращаться как <root URI>/cdmi_objectid/<objectlD>.
После создания в контейнере объект-очередь доступен как потомок контейнера с именем, присвоенным сервером; к нему также можно обратиться как <root URI>/cdmi_objectid/<objectlD>.
9.10.2 Отсроченное завершение создания
В ответ на запрос создания объекта-очереди сервер может вернуть код 202 Accepted, что указывает на то, что объект находится в процессе создания. Это полезно в случае длительных операций (например, копирования большого числа элементов очереди из URI источника). Такой ответ означает, что:
- сервер должен вернуть заголовок Location, содержащий URI к создаваемому объекту вместе со статусом HTTP 202 Accepted;
- статус 202 Accepted со стороны сервера удостоверяет, что были пройдены несколько проверок:
- пользователь авторизован для создания нового объекта;
- пользователь авторизован для чтения любого исходного объекта, который необходимо переместить, скопировать, сериализовать или десериализовать;
- достаточно места для создания объекта или, по крайней мере, достаточно места для создания URI к сообщению об ошибке.
Клиент может не иметь опции немедленно обратиться к созданному объекту, например, из-за задержек, вызванных использованием в реализации связности в конечном итоге;
Клиент выполняет операции GET к URI для отслеживания процесса создания. В ответ сервер возвращает два поля в теле сообщения-ответа, которые описывают состояние выполнения операции:
- обязательное текстовое поле completionStatus содержит "Processing", "Complete", либо строку сообщения об ошибке, начинающуюся с "Error";
- опциональное поле percentComplete содержит процент выполнения принятого запроса PUT (от 0 до 100).
GET не возвращает значение объекта, если completionStatus не равно "Complete". Если создание объекта завершается с ошибкой, создается URI, а поле completionStatus устанавливается равным сообщению об ошибке. Удаление URI после обработки ошибки возлагается на клиента.
9.10.3 Опции
Следующие опции описывают поддерживаемые операции при создании нового объекта-очереди по ID в "/cdmi_objectid/":
- поддержка возможности создания нового объекта-очереди посредством данной операции обозначается наличием опции cdmi_post_queue_by_ID в системе;
- если объект, создаваемый в "/cdmi_objectid/", является ссылкой, поддержка этой операции обозначается присутствием опции cdmi_create_reference_by_ID в системе;
- если очередь, создаваемая в "/cdmi_objectid/", является копией существующего объекта-очереди, поддержка этой операции обозначается присутствием опции cdmi_copy_queue_by_ID" в системе;
- если очередь, создаваемая в "/cdmi_objectid/", является результатом выполнения операции перемещения, поддержка этой операции обозначается присутствием опции cdmi_object_move_to_ID в системе;