Я пытаюсь установить срок действия объекта во время загрузки PUT моих объектов в мое кольцо Swift с помощью jclouds, чтобы объекты были удалены из Swift в назначенную дату/время.
Я могу сделать это вручную с помощью cURL и поместить объект в Swift с датой истечения срока действия. При этом используются заголовки X-Delete-At или X-Delete-After. См. документацию по openstack 1 и документы openstack 2 для получения подробной информации об этих заголовках.
Однако мне не повезло сделать то же самое через jclouds. Быстрый поиск в jclouds не обнаружил ни одного из заголовков X-Delete-, поэтому я предполагаю, что это не поддерживается напрямую, за исключением ручной установки этих заголовков в полезной нагрузке сообщения.
Пояснение: эти заголовки не могут быть установлены как метаданные пользователя объекта. Установка ключа метаданных пользователя X-Delete-At для объекта, например, приведет к созданию заголовка в форме X-Object-Meta-x-delete-at, который swift не распознает как истечение срока действия объекта.
Я пытаюсь выяснить, есть ли способ добавить для этого собственный заголовок в операцию HTTP PUT (не пользовательские метаданные). С cURL это так же просто, как добавить:
-H "X-Delete-After:60"
to the cURL command for the PUT operation (i.e., expire the object in 60 seconds). I assume the same can be done with jclouds. This is what I have so far:
public String writeToStore(String name, InputStream payload) { BlobStore bs = prepareContext(). getBlobStore(); Blob b = bs. blobBuilder(name). // userMetadata(mymeta). payload(payload). contentType("image/jpeg"). build(); // Get current headers Multimap<String,String> headers = b.getAllHeaders(); // Add new header & set expire date to 1 year in the future (seconds since epoch) headers.put("X-Delete-At", "1418148027"); // Set headers including new header just added b.setAllHeaders(headers); return bs.putBlob(containerName, b); }
Несмотря на добавление заголовка X-Delete-At, похоже, что это не имеет никакого эффекта. Я вообще не вижу заголовка X-Delete-At в захвате пакета Wireshark.
Любая помощь приветствуется. Спасибо!