]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
cloud: object tier passed to generic aws driver
authornorbert.bizet <norbert.bizet@baculasystems.com>
Tue, 26 Jul 2022 10:45:34 +0000 (06:45 -0400)
committerEric Bollengier <eric@baculasystems.com>
Thu, 14 Sep 2023 11:56:58 +0000 (13:56 +0200)
bacula/scripts/aws_cloud_driver.in
bacula/src/stored/generic_driver.c
bacula/src/stored/generic_driver.h

index e17d659fa432cbc21c068e11dc40e2341100395c..f9a6d27fa90531d074c6753dba0fe3a85f5617e4 100755 (executable)
@@ -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,
index 2e034c6f45a56032a928119ac1dc5349018e443f..a7347aeccc3360815dbb56380850c4e077caa310 100644 (file)
@@ -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;
    }
index bd6d582e7c1907ec7ab3faf2a484fde9079322c5..f13cff8e4169f987a65ed956be5c13f5a5484730 100644 (file)
@@ -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*/