9.2.1 Обзор
Для создания нового объекта-контейнера следует выполнить запрос:
PUT <root URI>/<ContainerName>/<NewContainerName>/
где:
- <root URI> путь к облаку CDMI;
- <ContainerName> неотрицательное число уже существующих объектов-контейнеров, разделенных одной наклонной чертой (т.е., "/");
- <NewContainerName> имя нового создаваемого объекта-контейнера.
После создания, к контейнеру можно обращаться как <root URI>/cdmi_objectid/<objectlD>/.
9.2.2 Отсроченное завершение создания
В ответ на запрос создания объекта-контейнера, сервер может вернуть код 202 Accepted, что указывает на то, что объект находится в процессе создания. Это полезно в случае длительных операций (например, десериализации исходного объекта данных для создания сложной иерархии объектов). Такой ответ означает, что:
- сервер должен вернуть заголовок 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.2.3 Опции
Следующие опции описывают поддерживаемые операции при создании нового объекта:
- поддержка возможности создания нового объекта-контейнера обозначается наличием опции cdmi_create_container в родительском контейнере;
- если объект, создаваемый в родительском контейнере, является ссылкой, поддержка этой операции обозначается наличием опции cdmi_create_reference в родительском контейнере;
- если новый объект является копией существующего, поддержка копирования обозначается наличием опции cdmi_copy_container в родительском контейнере;
- если новый контейнер создается в результате перемещения, поддержка этой операции обозначается наличием опции cdmi_move_container у родительского контейнера;
- если новый объект создается в результате операции десериализации, поддержка этой операции обозначается наличием опции cdmi_deserialize_container в родительском контейнере.
9.2.4 Заголовки запроса