From 39102608aa606e2deb9838c72bf6dac772bd777b Mon Sep 17 00:00:00 2001 From: Andrei Precup Date: Sat, 4 Jan 2020 15:40:40 +0200 Subject: [PATCH] Add intelligent tiering as option for storage class Resolves Issue #1219 --- src/curl.cpp | 6 ++++++ src/curl.h | 3 ++- src/s3fs.cpp | 2 ++ src/s3fs_util.cpp | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/curl.cpp b/src/curl.cpp index 35c32fa..7ef1dce 100644 --- a/src/curl.cpp +++ b/src/curl.cpp @@ -3149,6 +3149,8 @@ int S3fsCurl::PutHeadRequest(const char* tpath, headers_t& meta, bool is_copy) requestHeaders = curl_slist_sort_insert(requestHeaders, "x-amz-storage-class", "STANDARD_IA"); } else if(ONEZONE_IA == GetStorageClass()){ requestHeaders = curl_slist_sort_insert(requestHeaders, "x-amz-storage-class", "ONEZONE_IA"); + } else if(INTELLIGENT_TIERING == GetStorageClass()) { + requestHeaders = curl_slist_sort_insert(requestHeaders, "x-amz-storage-class", "INTELLIGENT_TIERING"); } // SSE if(!is_copy){ @@ -3278,6 +3280,8 @@ int S3fsCurl::PutRequest(const char* tpath, headers_t& meta, int fd) requestHeaders = curl_slist_sort_insert(requestHeaders, "x-amz-storage-class", "STANDARD_IA"); } else if(ONEZONE_IA == GetStorageClass()){ requestHeaders = curl_slist_sort_insert(requestHeaders, "x-amz-storage-class", "ONEZONE_IA"); + } else if(INTELLIGENT_TIERING == GetStorageClass()) { + requestHeaders = curl_slist_sort_insert(requestHeaders, "x-amz-storage-class", "INTELLIGENT_TIERING"); } // SSE string ssevalue; @@ -3536,6 +3540,8 @@ int S3fsCurl::PreMultipartPostRequest(const char* tpath, headers_t& meta, string requestHeaders = curl_slist_sort_insert(requestHeaders, "x-amz-storage-class", "STANDARD_IA"); } else if(ONEZONE_IA == GetStorageClass()){ requestHeaders = curl_slist_sort_insert(requestHeaders, "x-amz-storage-class", "ONEZONE_IA"); + } else if(INTELLIGENT_TIERING == GetStorageClass()) { + requestHeaders = curl_slist_sort_insert(requestHeaders, "x-amz-storage-class", "INTELLIGENT_TIERING"); } // SSE if(!is_copy){ diff --git a/src/curl.h b/src/curl.h index 5ccba90..fbb8b85 100644 --- a/src/curl.h +++ b/src/curl.h @@ -201,7 +201,8 @@ enum storage_class_t { STANDARD, STANDARD_IA, ONEZONE_IA, - REDUCED_REDUNDANCY + REDUCED_REDUNDANCY, + INTELLIGENT_TIERING }; enum acl_t { diff --git a/src/s3fs.cpp b/src/s3fs.cpp index 1a787b3..26319a0 100644 --- a/src/s3fs.cpp +++ b/src/s3fs.cpp @@ -4617,6 +4617,8 @@ static int my_fuse_opt_proc(void* data, const char* arg, int key, struct fuse_ar S3fsCurl::SetStorageClass(ONEZONE_IA); }else if(0 == strcmp(storage_class, "reduced_redundancy")){ S3fsCurl::SetStorageClass(REDUCED_REDUNDANCY); + }else if(0 == strcmp(storage_class, "intelligent_tiering")){ + S3fsCurl::SetStorageClass(INTELLIGENT_TIERING); }else{ S3FS_PRN_EXIT("unknown value for storage_class: %s", storage_class); return -1; diff --git a/src/s3fs_util.cpp b/src/s3fs_util.cpp index 1e5b3bf..0263096 100644 --- a/src/s3fs_util.cpp +++ b/src/s3fs_util.cpp @@ -1097,7 +1097,7 @@ void show_help () "\n" " storage_class (default=\"standard\")\n" " - store object with specified storage class. Possible values:\n" - " standard, standard_ia, onezone_ia and reduced_redundancy.\n" + " standard, standard_ia, onezone_ia, reduced_redundancy and intelligent_tiering.\n" "\n" " use_rrs (default is disable)\n" " - use Amazon's Reduced Redundancy Storage.\n"