The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

WebService::CEPH

DESCRIPTION

CEPH client for simple workflow, supporting multipart uploads. Most docs are in Russian.

Клинт для CEPH, без низкоуровневого кода для общения с библиотекой Amazon S3 (она вынесена в отдельный класс).

Обработка ошибок (исключения их тип итп; повторы неудачных запросов) - на совести более низкоуровневой библиотеки, если иное не гарантируется в этой документации.

Параметры конструктора:

Обязательные параметры:

protocol - http/https

host - хост бэкэнда

key - ключ для входа

secret - secret для входа

Необязательные параметры:

bucket - имя бакета (не нужен только для получения списка бакетов)

driver_name - в данный момент только 'NetAmazonS3'

multipart_threshold - после какого размера файла (в байтах) начинать multipart upload

multisegment_threshold - после какого размера файла (в байтах) будет multisegment download

query_string_authentication_host_replace - протокол-хост на который заменять URL в query_string_authentication_uri должен начинаться с протокола (http/https), затем хост, на конце может быть, а может не быть слэша. нужен если вы хотите сменить хост для отдачи клиентам (у вас кластер) или протокол (https внешним клиентам)

new

Конструктор. Параметры см. выше.

upload

Загружает файл в CEPH. Если файл уже существует - он заменяется. Если данные больше определённого размера, происходим multipart upload Ничего не возвращает

Параметры:

0-й - $self

1-й - имя ключа

2-й - скаляр, данные ключа

3-й - Content-type. Если undef, используется дефолтный binary/octet-stream

upload_from_file

То же, что upload, но происходит чтение из файла.

Параметры:

0-й - $self

1-й - имя ключа

2-й - имя файла (если скаляр), иначе открытый filehandle

3-й - Content-type. Если undef, используется дефолтный binary/octet-stream

Дваждый проходит по файлу, высчитывая md5. Файл не должен быть пайпом, его размер не должен меняться.

_upload

Приватный метод для upload/upload_from_file

Параметры

1) self

2) ключ

3) итератор с интерфейсом (данные, оффсет, длина). "данные" должны соответствовать последнему параметру этой функции (т.е. (6))

4) длина данных

5) заранее высчитанный md5 от данных

6) Content-type. Если undef, используется дефолтный binary/octet-stream

7) данные. или скаляр. или filehandle

download

Скачивает данные объекта с именем $key и возвращает их. Если объект не существует, возвращает undef.

Если размер объекта по факту окажется больше multisegment_threshold, объект будет скачан несколькими запросами с заголовком Range (т.е. multi segment download).

В данный момент есть workaround для бага http://lists.ceph.com/pipermail/ceph-users-ceph.com/2016-June/010704.html, в связи с ним всегда делается лишний HTTP запрос - запрос длины файла. Плюс не исключён Race condition.

download_to_file

Скачивает данные объекта с именем $key в файл $fh_or_filename. Если объект не существует, возвращает undef (при этом выходной файл всё равно будет испорчен и, возможно, частично записан в случае race condition - удаляйте эти данные сами; если удалять тяжело - пользуйтесь методом download) Иначе возвращает размер записанных данных.

Выходной файл открывается в режиме перезаписи, если это имя файла, если это filehandle, то образается на нулевую длину и пишется с начала.

Если размер объекта по факту окажется больше multisegment_threshold, объект будет скачан несколькими запросами с заголовком Range (т.е. multi segment download).

В данный момент есть workaround для бага http://lists.ceph.com/pipermail/ceph-users-ceph.com/2016-June/010704.html, в связи с ним всегда делается лишний HTTP запрос - запрос длины файла. Плюс не исключён Race condition.

_download

Приватный метод для download/download_to_file

Параметры:

1) self

2) имя ключа

3) appender - замыкание в которое будут передаваться данные для записи. оно должно аккумулировать их куда-то себе или писать в файл, который оно само знает.

size

Возвращает размер объекта с именем $key в байтах, если ключ не существует, возвращает undef

delete

Удаляет объект с именем $key, ничего не возвращает. Если объект не существует, не выдаёт ошибку

query_string_authentication_uri

Возвращает Query String Authentication URL для ключа $key, с экспайром $expires

$expires - epoch время. но низкоуровневая библиотека может принимать другие форматы. убедитесь что входные данные валидированы и вы передаёте именно epoch

Заменяет хост, если есть опция query_string_authentication_host_replace (см. конструктор)

get_buckets_list

Returns buckets list

WARNING

Метод падает c ошибкой Attribute (owner_id) does not pass the type constraint because: Validation failed for 'OwnerId' Уведомления направлены разрабтчикам: http://tracker.ceph.com/issues/16806 и https://github.com/rustyconover/net-amazon-s3/issues/18

list_multipart_uploads

Возвращает список multipart загрузок в бакете

delete_multipart_upload

Удаляет multipart загрузку в бакете

Параметры позиционные: $key, $upload_id

Ничего не возвращает