8.2.1 Обзор
Для создания нового объекта данных следует выполнить запрос:
PUT <root URI>/<ContainerName>/<DataObjectName>
Создание нового объекта по ID, см. 9.9.
где:
- <root URI> путь к облаку CDMI.
- <ContainerName> неотрицательное число промежуточных уже существующих контейнеров, с наклонной чертой "/", разделяющей каждую пару контейнеров.
- <DataObjectName> имя создаваемого объекта данных.
После создания к объекту можно обращаться как <root URI>/cdmi_objectid/<objectlD>.
8.2.2 Отложенное завершение создания
В ответ на операцию создания объекта сервер может вернуть код 202 Accepted, указывающий на то, что объект находится в стадии создания. Этот ответ полезен в случае длительных операций (например, копирование большого объекта данных из URI источника). Этот ответ имеет следующие последствия:
- сервер вернет заголовок Location с URI создаваемого объекта вместе с кодом HTTP 202 Accepted;
- код 202 Accepted от сервера означает, что были пройдены следующие проверки:
- пользователь авторизован создавать объект;
- пользователь авторизован считывать любые источники, которые должны быть скопированы, перемещены, сериализованы или десериализованы
- доступно достаточно места для создания объекта, или, по крайней мере, достаточно места, чтобы создать URI и сообщение об ошибке.
- Клиент, возможно, не сможет немедленно обратиться к создаваемому объекту, например, из-за задержек вследствие использования в данной реализации целостности в конечном итоге.
Клиент выполняет операции GET по указанному URI для отслеживания хода выполнения операции. В ответ сервер возвращает два поля в теле сообщения-ответа, указывающие на состояние процесса:
- обязательное текстовое поле completionStatus содержит "Processing", "Complete", либо сообщение об ошибке, начинающееся с "Error";
- опциональное поле percentComplete, содержащее процент выполнения операции (от 0 до 100).
GET не должен возвращать никакого значения в объект, если его статус не completionStatus = "Complete". Если конечный результат операции создания - ошибка, то создается URI с полем completionStatus, содержащим сообщение об ошибке. Удаление URI после обнаружения ошибки - обязанность клиента.
8.2.3 Опции
Следующие опции перечисляют операции, которые могут выполняться при создании нового объекта данных:
- поддержка функции создания нового объекта данных обозначена наличием в родительском контейнере опции cdmi_create_dataobject;
- если создаваемый объект - ссылка в родительском контейнере, поддержка этой функции обозначена наличием в родительском контейнере опции cdmi_create_reference;
- если новый объект должен быть копией существующего объекта, поддержка этой функции обозначена наличием в родительском контейнере опции cdmi_copy_dataobject;
- если создаваемый объект - результат перемещения существующего объекта, поддержка этой функции обозначена наличием в родительском контейнере опции cdmi_move_dataobject;
- если создаваемый объект - результат операции десериализации исходного объекта, поддержка этой функции обозначена наличием в родительском контейнере опции cdmi_deserialize_dataobject;