From: norbert.bizet Date: Tue, 26 Jul 2022 10:45:34 +0000 (-0400) Subject: cloud: object tier passed to generic aws driver X-Git-Tag: Beta-15.0.0~541 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1d7fcfb724615ab6ba2f2d06b85f8d8e25f59a38;p=thirdparty%2Fbacula.git cloud: object tier passed to generic aws driver --- diff --git a/bacula/scripts/aws_cloud_driver.in b/bacula/scripts/aws_cloud_driver.in index e17d659fa..f9a6d27fa 100755 --- a/bacula/scripts/aws_cloud_driver.in +++ b/bacula/scripts/aws_cloud_driver.in @@ -156,7 +156,8 @@ def upload(): try: logging.info("enter upload") proc = Popen(["aws", "s3", "cp", - "-", os.path.join(cloud_path, volume, part), "--only-show-errors"], stdout=PIPE, stderr=PIPE, universal_newlines=True) + "-", os.path.join(cloud_path, volume, part), + "--storage-class", objects_default_tier, "--only-show-errors"], stdout=PIPE, stderr=PIPE, universal_newlines=True) output,err = proc.communicate() logging.debug("upload proc communicate output:{0} , err:{1}".format(output,err)) # sort out only exception errors since progress is reported into stderr (yuck!) @@ -325,12 +326,24 @@ if __name__ == '__main__': t_prio = os.environ['CLOUD_TRANSFER_PRIORITY'] transfer_priority = transfer_priority_switcher[t_prio] transfer_retention_days = os.environ['CLOUD_TRANSFER_RETENTION_DAYS'] + objects_default_tier_switcher = { + "0":"STANDARD", + "1":"STANDARD_IA", + "2":"INTELLIGENT_TIERING", + "3":"ONEZONE_IA", + "4":"GLACIER_IR", + "5":"GLACIER", + "6":"DEEP_ARCHIVE", + "7":"REDUCED_REDUNDANCY" + } + t_tier_idx = os.environ['CLOUD_OBJECTS_DEFAULT_TIER'] + objects_default_tier = objects_default_tier_switcher[t_tier_idx] os.environ['AWS_DEFAULT_REGION'] = region os.environ['AWS_ACCESS_KEY_ID'] = access_key os.environ['AWS_SECRET_ACCESS_KEY'] = secret_key - logging.info("bucket {0}, cloud_path {1}, access_key {2}, secret_key {3}, region {4}, protocol {5}, uri_type {6}, transfer_prio {7}, tranfer_ret {8}".format(bucket, cloud_path, access_key, "XXX", region, protocol, uri_type, transfer_priority, transfer_retention_days)) + logging.info("bucket {0}, cloud_path {1}, access_key {2}, secret_key {3}, region {4}, protocol {5}, uri_type {6}, transfer_prio {7}, tranfer_ret {8}, default_tier {9}".format(bucket, cloud_path, access_key, "XXX", region, protocol, uri_type, transfer_priority, transfer_retention_days, objects_default_tier)) switcher = { "vol_ls":vol_ls, diff --git a/bacula/src/stored/generic_driver.c b/bacula/src/stored/generic_driver.c index 2e034c6f4..a7347aecc 100644 --- a/bacula/src/stored/generic_driver.c +++ b/bacula/src/stored/generic_driver.c @@ -114,6 +114,7 @@ generic_driver::generic_driver() debug_env = get_pool_memory(PM_NAME); working_path_env = get_pool_memory(PM_NAME); home_path_env = get_pool_memory(PM_NAME); + objects_default_tier_env = get_pool_memory(PM_NAME); } generic_driver::~generic_driver() @@ -140,6 +141,7 @@ generic_driver::~generic_driver() free_pool_memory(debug_env); free_pool_memory(working_path_env); free_pool_memory(home_path_env); + free_pool_memory(objects_default_tier_env); } bool generic_driver::init(CLOUD *cloud, POOLMEM *&err) { @@ -264,13 +266,18 @@ bool generic_driver::init(CLOUD *cloud, POOLMEM *&err) { pm_strcat(home_path_env, working_directory); envs[20] = home_path_env; + sprintf(b, "%d", objects_default_tier); + pm_strcpy(objects_default_tier_env, "CLOUD_OBJECTS_DEFAULT_TIER="); /* child default home location */ + pm_strcat(objects_default_tier_env, b); + envs[21] = objects_default_tier_env; + if (driver_command && strstr(driver_command, "was_cloud_driver") != NULL) { pm_strcpy(unset_lctime_env, "LC_TIME="); - envs[21] = unset_lctime_env; + envs[22] = unset_lctime_env; } else { - envs[21] = NULL; + envs[22] = NULL; } - envs[22] = NULL; + envs[23] = NULL; return true; } diff --git a/bacula/src/stored/generic_driver.h b/bacula/src/stored/generic_driver.h index bd6d582e7..f13cff8e4 100644 --- a/bacula/src/stored/generic_driver.h +++ b/bacula/src/stored/generic_driver.h @@ -148,7 +148,8 @@ private: POOLMEM *debug_env; POOLMEM *working_path_env; POOLMEM *home_path_env; - char *envs[23]; + POOLMEM *objects_default_tier_env; + char *envs[24]; }; #endif /* GENERIC_CLOUD_DRIVER_H*/