diff --git a/CMakeLists.txt b/CMakeLists.txt index c656f2c4..3218c8dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ project(libds3) set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/modules/") set (DS3SDK_VERSION_MAJOR 5) -set (DS3SDK_VERSION_MINOR 3) +set (DS3SDK_VERSION_MINOR 4) set (DS3SDK_VERSION_PATCH 0) add_subdirectory(src) diff --git a/README.md b/README.md index 9f87e91f..34fd9dde 100644 --- a/README.md +++ b/README.md @@ -384,3 +384,13 @@ int main (int args, char * argv[]) { The structure of the code is very similar to the previous examples. Setup the client, setup the call, perform the call. Every request follows this same pattern. Additional examples are available here: [samples](sample) + +Creating a New Release +---------------------- + +Update the version of the SDK before creating a new release. The format is `..`, where the +`.` numbers must match the version of BP. The `` is an incrementing number that increments with +each SDK release for a given major/minor release. + +The version is specified in `CMakeLists.txt`. + diff --git a/src/ds3.h b/src/ds3.h index 290bf36f..e535bf77 100644 --- a/src/ds3.h +++ b/src/ds3.h @@ -740,8 +740,10 @@ typedef struct { ds3_bool default_verify_data_prior_to_import; ds3_str* id; ds3_str* instance_id; + float iom_cache_limitation_percent; ds3_bool iom_enabled; ds3_str* last_heartbeat; + int max_aggregated_blobs_per_chunk; int partially_verify_last_percent_of_tapes; ds3_unavailable_media_usage_policy unavailable_media_policy; int unavailable_pool_max_job_retry_in_mins; @@ -2558,6 +2560,7 @@ LIBRARY_API void ds3_request_set_implicit_job_id_resolution(const ds3_request* r LIBRARY_API void ds3_request_set_import_export_configuration_ds3_import_export_configuration(const ds3_request* request, const ds3_import_export_configuration value); LIBRARY_API void ds3_request_set_include_physical_placement(const ds3_request* request, ds3_bool value); LIBRARY_API void ds3_request_set_initial_data_placement_ds3_s3_initial_data_placement_policy(const ds3_request* request, const ds3_s3_initial_data_placement_policy value); +LIBRARY_API void ds3_request_set_iom_cache_limitation_percent(const ds3_request* request, const float value); LIBRARY_API void ds3_request_set_iom_enabled(const ds3_request* request, ds3_bool value); LIBRARY_API void ds3_request_set_isolation_level_ds3_data_isolation_level(const ds3_request* request, const ds3_data_isolation_level value); LIBRARY_API void ds3_request_set_job(const ds3_request* request, const char * const value); @@ -2572,6 +2575,7 @@ LIBRARY_API void ds3_request_set_library_id(const ds3_request* request, const ch LIBRARY_API void ds3_request_set_ltfs_file_naming_ds3_ltfs_file_naming_mode(const ds3_request* request, const ds3_ltfs_file_naming_mode value); LIBRARY_API void ds3_request_set_management_url(const ds3_request* request, const char * const value); LIBRARY_API void ds3_request_set_marker(const ds3_request* request, const char * const value); +LIBRARY_API void ds3_request_set_max_aggregated_blobs_per_chunk(const ds3_request* request, const int value); LIBRARY_API void ds3_request_set_max_blob_part_size_in_bytes(const ds3_request* request, const uint64_t value); LIBRARY_API void ds3_request_set_max_buckets(const ds3_request* request, const int value); LIBRARY_API void ds3_request_set_max_capacity_in_bytes(const ds3_request* request, const uint64_t value); @@ -2960,7 +2964,9 @@ LIBRARY_API ds3_error* ds3_get_data_planner_blob_store_tasks_spectra_s3_request( * void ds3_request_set_cache_available_retry_after_in_seconds(const ds3_request* request, const int value) * void ds3_request_set_default_verify_data_after_import_ds3_priority(const ds3_request* request, const ds3_priority value) * void ds3_request_set_default_verify_data_prior_to_import(const ds3_request* request, ds3_bool value) + * void ds3_request_set_iom_cache_limitation_percent(const ds3_request* request, const float value) * void ds3_request_set_iom_enabled(const ds3_request* request, ds3_bool value) + * void ds3_request_set_max_aggregated_blobs_per_chunk(const ds3_request* request, const int value) * void ds3_request_set_partially_verify_last_percent_of_tapes(const ds3_request* request, const int value) * void ds3_request_set_unavailable_media_policy_ds3_unavailable_media_usage_policy(const ds3_request* request, const ds3_unavailable_media_usage_policy value) * void ds3_request_set_unavailable_pool_max_job_retry_in_mins(const ds3_request* request, const int value) diff --git a/src/ds3_init_requests.c b/src/ds3_init_requests.c index c11a97ac..51cef215 100644 --- a/src/ds3_init_requests.c +++ b/src/ds3_init_requests.c @@ -1212,6 +1212,10 @@ void ds3_request_set_include_physical_placement(const ds3_request* request, ds3_ void ds3_request_set_initial_data_placement_ds3_s3_initial_data_placement_policy(const ds3_request* request, const ds3_s3_initial_data_placement_policy value) { _set_query_param(request, "initial_data_placement", (const char*)_get_ds3_s3_initial_data_placement_policy_str(value)); +} +void ds3_request_set_iom_cache_limitation_percent(const ds3_request* request, const float value) { + _set_query_param_float(request, "iom_cache_limitation_percent", value); + } void ds3_request_set_iom_enabled(const ds3_request* request, ds3_bool value) { _set_query_param_flag(request, "iom_enabled", value); @@ -1268,6 +1272,10 @@ void ds3_request_set_management_url(const ds3_request* request, const char * con void ds3_request_set_marker(const ds3_request* request, const char * const value) { _set_query_param(request, "marker", value); +} +void ds3_request_set_max_aggregated_blobs_per_chunk(const ds3_request* request, const int value) { + _set_query_param_int(request, "max_aggregated_blobs_per_chunk", value); + } void ds3_request_set_max_blob_part_size_in_bytes(const ds3_request* request, const uint64_t value) { _set_query_param_uint64_t(request, "max_blob_part_size_in_bytes", value); diff --git a/src/ds3_requests.c b/src/ds3_requests.c index 507e8859..7b70e200 100644 --- a/src/ds3_requests.c +++ b/src/ds3_requests.c @@ -6535,10 +6535,14 @@ static ds3_error* _parse_top_level_ds3_data_path_backend_response(const ds3_clie response->id = xml_get_string(doc, child_node); } else if (element_equal(child_node, "InstanceId")) { response->instance_id = xml_get_string(doc, child_node); + } else if (element_equal(child_node, "IomCacheLimitationPercent")) { + response->iom_cache_limitation_percent = xml_get_uint64(doc, child_node); } else if (element_equal(child_node, "IomEnabled")) { response->iom_enabled = xml_get_bool(client->log, doc, child_node); } else if (element_equal(child_node, "LastHeartbeat")) { response->last_heartbeat = xml_get_string(doc, child_node); + } else if (element_equal(child_node, "MaxAggregatedBlobsPerChunk")) { + response->max_aggregated_blobs_per_chunk = xml_get_uint16(doc, child_node); } else if (element_equal(child_node, "PartiallyVerifyLastPercentOfTapes")) { response->partially_verify_last_percent_of_tapes = xml_get_uint16(doc, child_node); } else if (element_equal(child_node, "UnavailableMediaPolicy")) {