diff --git a/src/ds3.c b/src/ds3.c index 2bca9492..c3115279 100644 --- a/src/ds3.c +++ b/src/ds3.c @@ -175,6 +175,8 @@ static char* _get_ds3_tape_type_str(ds3_tape_type input) { return "LTO6"; } else if (input == DS3_TAPE_TYPE_LTO7) { return "LTO7"; + } else if (input == DS3_TAPE_TYPE_LTO8) { + return "LTO8"; } else if (input == DS3_TAPE_TYPE_LTO_CLEANING_TAPE) { return "LTO_CLEANING_TAPE"; } else if (input == DS3_TAPE_TYPE_TS_JC) { @@ -423,6 +425,8 @@ static char* _get_ds3_pool_failure_type_str(ds3_pool_failure_type input) { return "FORMAT_FAILED"; } else if (input == DS3_POOL_FAILURE_TYPE_IMPORT_FAILED) { return "IMPORT_FAILED"; + } else if (input == DS3_POOL_FAILURE_TYPE_IMPORT_INCOMPLETE) { + return "IMPORT_INCOMPLETE"; } else if (input == DS3_POOL_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE) { return "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE"; } else if (input == DS3_POOL_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_DATA_INTEGRITY) { @@ -547,6 +551,8 @@ static char* _get_ds3_tape_drive_type_str(ds3_tape_drive_type input) { return "LTO6"; } else if (input == DS3_TAPE_DRIVE_TYPE_LTO7) { return "LTO7"; + } else if (input == DS3_TAPE_DRIVE_TYPE_LTO8) { + return "LTO8"; } else if (input == DS3_TAPE_DRIVE_TYPE_TS1140) { return "TS1140"; } else if (input == DS3_TAPE_DRIVE_TYPE_TS1150) { @@ -595,6 +601,8 @@ static char* _get_ds3_tape_failure_type_str(ds3_tape_failure_type input) { return "GET_TAPE_INFORMATION_FAILED"; } else if (input == DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED) { return "IMPORT_FAILED"; + } else if (input == DS3_TAPE_FAILURE_TYPE_IMPORT_INCOMPLETE) { + return "IMPORT_INCOMPLETE"; } else if (input == DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE) { return "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE"; } else if (input == DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_DATA_INTEGRITY) { @@ -637,6 +645,8 @@ static char* _get_ds3_tape_partition_failure_type_str(ds3_tape_partition_failure return "TAPE_DRIVE_IN_ERROR"; } else if (input == DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_MISSING) { return "TAPE_DRIVE_MISSING"; + } else if (input == DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_QUIESCED) { + return "TAPE_DRIVE_QUIESCED"; } else if (input == DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_TYPE_MISMATCH) { return "TAPE_DRIVE_TYPE_MISMATCH"; } else if (input == DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_EJECTION_BY_OPERATOR_REQUIRED) { @@ -693,6 +703,8 @@ static char* _get_ds3_target_read_preference_type_str(ds3_target_read_preference static char* _get_ds3_target_failure_type_str(ds3_target_failure_type input) { if (input == DS3_TARGET_FAILURE_TYPE_IMPORT_FAILED) { return "IMPORT_FAILED"; + } else if (input == DS3_TARGET_FAILURE_TYPE_IMPORT_INCOMPLETE) { + return "IMPORT_INCOMPLETE"; } else if (input == DS3_TARGET_FAILURE_TYPE_NOT_ONLINE) { return "NOT_ONLINE"; } else if (input == DS3_TARGET_FAILURE_TYPE_WRITE_FAILED) { @@ -1512,10 +1524,6 @@ void ds3_request_set_error_message(const ds3_request* request, const char * cons void ds3_request_set_expiration_date(const ds3_request* request, const char * const value) { _set_query_param(request, "expiration_date", value); -} -void ds3_request_set_folder(const ds3_request* request, const char * const value) { - _set_query_param(request, "folder", value); - } void ds3_request_set_force(const ds3_request* request, ds3_bool value) { _set_query_param_flag(request, "force", value); @@ -1844,6 +1852,10 @@ void ds3_request_set_secure_media_allocation(const ds3_request* request, ds3_boo void ds3_request_set_serial_number(const ds3_request* request, const char * const value) { _set_query_param(request, "serial_number", value); +} +void ds3_request_set_sort_by(const ds3_request* request, const char * const value) { + _set_query_param(request, "sort_by", value); + } void ds3_request_set_staged_data_expiration_in_days(const ds3_request* request, const int value) { _set_query_param_int(request, "staged_data_expiration_in_days", value); @@ -2678,6 +2690,12 @@ ds3_request* ds3_init_clear_all_completed_jobs_spectra_s3_request(void) { struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/completed_job/", NULL, NULL)); return (ds3_request*) request; } +ds3_request* ds3_init_close_aggregating_job_spectra_s3_request(const char *const resource_id) { + struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/job/", resource_id, NULL)); + _set_query_param((ds3_request*) request, "close_aggregating_job", NULL); + + return (ds3_request*) request; +} ds3_request* ds3_init_get_bulk_job_spectra_s3_request(const char *const resource_id, const ds3_bulk_object_list_response* object_list) { struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/bucket/", resource_id, NULL)); _set_query_param((ds3_request*) request, "operation", "START_BULK_GET"); @@ -3636,6 +3654,10 @@ ds3_request* ds3_init_modify_all_tape_partitions_spectra_s3_request(const ds3_qu return (ds3_request*) request; } +ds3_request* ds3_init_modify_tape_drive_spectra_s3_request(const char *const resource_id) { + struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape_drive/", resource_id, NULL)); + return (ds3_request*) request; +} ds3_request* ds3_init_modify_tape_partition_spectra_s3_request(const char *const resource_id) { struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape_partition/", resource_id, NULL)); return (ds3_request*) request; @@ -4603,6 +4625,8 @@ static ds3_pool_failure_type _match_ds3_pool_failure_type(const ds3_log* log, co return DS3_POOL_FAILURE_TYPE_FORMAT_FAILED; } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) { return DS3_POOL_FAILURE_TYPE_IMPORT_FAILED; + } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) { + return DS3_POOL_FAILURE_TYPE_IMPORT_INCOMPLETE; } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE") == 0) { return DS3_POOL_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE; } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_DATA_INTEGRITY") == 0) { @@ -4717,6 +4741,8 @@ static ds3_tape_drive_type _match_ds3_tape_drive_type(const ds3_log* log, const return DS3_TAPE_DRIVE_TYPE_LTO6; } else if (xmlStrcmp(text, (const xmlChar*) "LTO7") == 0) { return DS3_TAPE_DRIVE_TYPE_LTO7; + } else if (xmlStrcmp(text, (const xmlChar*) "LTO8") == 0) { + return DS3_TAPE_DRIVE_TYPE_LTO8; } else if (xmlStrcmp(text, (const xmlChar*) "TS1140") == 0) { return DS3_TAPE_DRIVE_TYPE_TS1140; } else if (xmlStrcmp(text, (const xmlChar*) "TS1150") == 0) { @@ -4751,6 +4777,8 @@ static ds3_tape_failure_type _match_ds3_tape_failure_type(const ds3_log* log, co return DS3_TAPE_FAILURE_TYPE_GET_TAPE_INFORMATION_FAILED; } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) { return DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED; + } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) { + return DS3_TAPE_FAILURE_TYPE_IMPORT_INCOMPLETE; } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE") == 0) { return DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE; } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_DATA_INTEGRITY") == 0) { @@ -4793,6 +4821,8 @@ static ds3_tape_partition_failure_type _match_ds3_tape_partition_failure_type(co return DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_IN_ERROR; } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_MISSING") == 0) { return DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_MISSING; + } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_QUIESCED") == 0) { + return DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_QUIESCED; } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_TYPE_MISMATCH") == 0) { return DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_TYPE_MISMATCH; } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_EJECTION_BY_OPERATOR_REQUIRED") == 0) { @@ -4883,6 +4913,8 @@ static ds3_tape_type _match_ds3_tape_type(const ds3_log* log, const xmlChar* tex return DS3_TAPE_TYPE_LTO6; } else if (xmlStrcmp(text, (const xmlChar*) "LTO7") == 0) { return DS3_TAPE_TYPE_LTO7; + } else if (xmlStrcmp(text, (const xmlChar*) "LTO8") == 0) { + return DS3_TAPE_TYPE_LTO8; } else if (xmlStrcmp(text, (const xmlChar*) "LTO_CLEANING_TAPE") == 0) { return DS3_TAPE_TYPE_LTO_CLEANING_TAPE; } else if (xmlStrcmp(text, (const xmlChar*) "TS_JC") == 0) { @@ -4921,6 +4953,8 @@ static ds3_target_access_control_replication _match_ds3_target_access_control_re static ds3_target_failure_type _match_ds3_target_failure_type(const ds3_log* log, const xmlChar* text) { if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) { return DS3_TARGET_FAILURE_TYPE_IMPORT_FAILED; + } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) { + return DS3_TARGET_FAILURE_TYPE_IMPORT_INCOMPLETE; } else if (xmlStrcmp(text, (const xmlChar*) "NOT_ONLINE") == 0) { return DS3_TARGET_FAILURE_TYPE_NOT_ONLINE; } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_FAILED") == 0) { @@ -7606,6 +7640,13 @@ static ds3_error* _parse_ds3_tape_drive_response(const ds3_client* client, const response->mfg_serial_number = xml_get_string(doc, child_node); } else if (element_equal(child_node, "PartitionId")) { response->partition_id = xml_get_string(doc, child_node); + } else if (element_equal(child_node, "Quiesced")) { + xmlChar* text = xmlNodeListGetString(doc, child_node, 1); + if (text == NULL) { + continue; + } + response->quiesced = _match_ds3_quiesced(client->log, text); + xmlFree(text); } else if (element_equal(child_node, "SerialNumber")) { response->serial_number = xml_get_string(doc, child_node); } else if (element_equal(child_node, "State")) { @@ -7753,6 +7794,8 @@ static ds3_error* _parse_ds3_tape_partition_response(const ds3_client* client, c } response->quiesced = _match_ds3_quiesced(client->log, text); xmlFree(text); + } else if (element_equal(child_node, "SerialId")) { + response->serial_id = xml_get_string(doc, child_node); } else if (element_equal(child_node, "SerialNumber")) { response->serial_number = xml_get_string(doc, child_node); } else if (element_equal(child_node, "State")) { @@ -9026,6 +9069,8 @@ static ds3_error* _parse_ds3_named_detailed_tape_partition_response(const ds3_cl } response->quiesced = _match_ds3_quiesced(client->log, text); xmlFree(text); + } else if (element_equal(child_node, "SerialId")) { + response->serial_id = xml_get_string(doc, child_node); } else if (element_equal(child_node, "SerialNumber")) { response->serial_number = xml_get_string(doc, child_node); } else if (element_equal(child_node, "State")) { @@ -12331,6 +12376,13 @@ static ds3_error* _parse_top_level_ds3_tape_drive_response(const ds3_client* cli response->mfg_serial_number = xml_get_string(doc, child_node); } else if (element_equal(child_node, "PartitionId")) { response->partition_id = xml_get_string(doc, child_node); + } else if (element_equal(child_node, "Quiesced")) { + xmlChar* text = xmlNodeListGetString(doc, child_node, 1); + if (text == NULL) { + continue; + } + response->quiesced = _match_ds3_quiesced(client->log, text); + xmlFree(text); } else if (element_equal(child_node, "SerialNumber")) { response->serial_number = xml_get_string(doc, child_node); } else if (element_equal(child_node, "State")) { @@ -12458,6 +12510,8 @@ static ds3_error* _parse_top_level_ds3_tape_partition_response(const ds3_client* } response->quiesced = _match_ds3_quiesced(client->log, text); xmlFree(text); + } else if (element_equal(child_node, "SerialId")) { + response->serial_id = xml_get_string(doc, child_node); } else if (element_equal(child_node, "SerialNumber")) { response->serial_number = xml_get_string(doc, child_node); } else if (element_equal(child_node, "State")) { @@ -13180,6 +13234,8 @@ static ds3_error* _parse_top_level_ds3_detailed_tape_partition_response(const ds } response->quiesced = _match_ds3_quiesced(client->log, text); xmlFree(text); + } else if (element_equal(child_node, "SerialId")) { + response->serial_id = xml_get_string(doc, child_node); } else if (element_equal(child_node, "SerialNumber")) { response->serial_number = xml_get_string(doc, child_node); } else if (element_equal(child_node, "State")) { @@ -18981,6 +19037,26 @@ ds3_error* ds3_clear_all_completed_jobs_spectra_s3_request(const ds3_client* cli return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL); } +ds3_error* ds3_close_aggregating_job_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_master_object_list_response** response) { + ds3_error* error; + GByteArray* xml_blob; + + int num_slashes = num_chars_in_ds3_str(request->path, '/'); + if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) { + return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required."); + } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) { + return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required."); + } + + xml_blob = g_byte_array_new(); + error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL); + if (error != NULL) { + g_byte_array_free(xml_blob, TRUE); + return error; + } + + return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob); +} ds3_error* ds3_get_bulk_job_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_master_object_list_response** response) { ds3_error* error; ds3_xml_send_buff send_buff; @@ -22227,6 +22303,26 @@ ds3_error* ds3_modify_all_tape_partitions_spectra_s3_request(const ds3_client* c return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL); } +ds3_error* ds3_modify_tape_drive_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_tape_drive_response** response) { + ds3_error* error; + GByteArray* xml_blob; + + int num_slashes = num_chars_in_ds3_str(request->path, '/'); + if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) { + return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required."); + } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) { + return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required."); + } + + xml_blob = g_byte_array_new(); + error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL); + if (error != NULL) { + g_byte_array_free(xml_blob, TRUE); + return error; + } + + return _parse_top_level_ds3_tape_drive_response(client, request, response, xml_blob); +} ds3_error* ds3_modify_tape_partition_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_tape_partition_response** response) { ds3_error* error; GByteArray* xml_blob; @@ -24160,6 +24256,7 @@ void ds3_tape_partition_response_free(ds3_tape_partition_response* response) { ds3_str_free(response->id); ds3_str_free(response->library_id); ds3_str_free(response->name); + ds3_str_free(response->serial_id); ds3_str_free(response->serial_number); g_free(response); @@ -24620,6 +24717,7 @@ void ds3_detailed_tape_partition_response_free(ds3_detailed_tape_partition_respo ds3_str_free(response->id); ds3_str_free(response->library_id); ds3_str_free(response->name); + ds3_str_free(response->serial_id); ds3_str_free(response->serial_number); g_free(response->tape_types); @@ -24716,6 +24814,7 @@ void ds3_named_detailed_tape_partition_response_free(ds3_named_detailed_tape_par ds3_str_free(response->id); ds3_str_free(response->library_id); ds3_str_free(response->name); + ds3_str_free(response->serial_id); ds3_str_free(response->serial_number); g_free(response->tape_types); diff --git a/src/ds3.h b/src/ds3.h index 85134628..e8b5d554 100644 --- a/src/ds3.h +++ b/src/ds3.h @@ -251,6 +251,7 @@ typedef enum { DS3_POOL_FAILURE_TYPE_DATA_CHECKPOINT_MISSING, DS3_POOL_FAILURE_TYPE_FORMAT_FAILED, DS3_POOL_FAILURE_TYPE_IMPORT_FAILED, + DS3_POOL_FAILURE_TYPE_IMPORT_INCOMPLETE, DS3_POOL_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE, DS3_POOL_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_DATA_INTEGRITY, DS3_POOL_FAILURE_TYPE_INSPECT_FAILED, @@ -288,7 +289,9 @@ typedef enum { typedef enum { DS3_SEVERITY_CRITICAL, DS3_SEVERITY_WARNING, - DS3_SEVERITY_ALERT + DS3_SEVERITY_ALERT, + DS3_SEVERITY_SUCCESS, + DS3_SEVERITY_INFO }ds3_severity; typedef enum { DS3_IMPORT_EXPORT_CONFIGURATION_SUPPORTED, @@ -305,6 +308,7 @@ typedef enum { DS3_TAPE_DRIVE_TYPE_LTO5, DS3_TAPE_DRIVE_TYPE_LTO6, DS3_TAPE_DRIVE_TYPE_LTO7, + DS3_TAPE_DRIVE_TYPE_LTO8, DS3_TAPE_DRIVE_TYPE_TS1140, DS3_TAPE_DRIVE_TYPE_TS1150 }ds3_tape_drive_type; @@ -321,6 +325,7 @@ typedef enum { DS3_TAPE_FAILURE_TYPE_FORMAT_FAILED, DS3_TAPE_FAILURE_TYPE_GET_TAPE_INFORMATION_FAILED, DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED, + DS3_TAPE_FAILURE_TYPE_IMPORT_INCOMPLETE, DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE, DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_DATA_INTEGRITY, DS3_TAPE_FAILURE_TYPE_INSPECT_FAILED, @@ -341,6 +346,7 @@ typedef enum { DS3_TAPE_PARTITION_FAILURE_TYPE_ONLINE_STALLED_DUE_TO_NO_STORAGE_SLOTS, DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_IN_ERROR, DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_MISSING, + DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_QUIESCED, DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_TYPE_MISMATCH, DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_EJECTION_BY_OPERATOR_REQUIRED, DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_MEDIA_TYPE_INCOMPATIBLE, @@ -383,6 +389,7 @@ typedef enum { DS3_TAPE_TYPE_LTO5, DS3_TAPE_TYPE_LTO6, DS3_TAPE_TYPE_LTO7, + DS3_TAPE_TYPE_LTO8, DS3_TAPE_TYPE_LTO_CLEANING_TAPE, DS3_TAPE_TYPE_TS_JC, DS3_TAPE_TYPE_TS_JY, @@ -400,6 +407,7 @@ typedef enum { }ds3_target_access_control_replication; typedef enum { DS3_TARGET_FAILURE_TYPE_IMPORT_FAILED, + DS3_TARGET_FAILURE_TYPE_IMPORT_INCOMPLETE, DS3_TARGET_FAILURE_TYPE_NOT_ONLINE, DS3_TARGET_FAILURE_TYPE_WRITE_FAILED, DS3_TARGET_FAILURE_TYPE_WRITE_INITIATE_FAILED, @@ -1185,6 +1193,7 @@ typedef struct { ds3_str* last_cleaned; ds3_str* mfg_serial_number; ds3_str* partition_id; + ds3_quiesced quiesced; ds3_str* serial_number; ds3_tape_drive_state state; ds3_str* tape_id; @@ -1212,6 +1221,7 @@ typedef struct { ds3_str* library_id; ds3_str* name; ds3_quiesced quiesced; + ds3_str* serial_id; ds3_str* serial_number; ds3_tape_partition_state state; }ds3_tape_partition_response; @@ -1485,6 +1495,7 @@ typedef struct { ds3_str* library_id; ds3_str* name; ds3_quiesced quiesced; + ds3_str* serial_id; ds3_str* serial_number; ds3_tape_partition_state state; ds3_tape_type* tape_types; @@ -1542,6 +1553,7 @@ typedef struct { ds3_str* library_id; ds3_str* name; ds3_quiesced quiesced; + ds3_str* serial_id; ds3_str* serial_number; ds3_tape_partition_state state; ds3_tape_type* tape_types; @@ -2404,7 +2416,6 @@ LIBRARY_API void ds3_request_set_eject_location(const ds3_request* request, cons LIBRARY_API void ds3_request_set_end_to_end_crc_required(const ds3_request* request, ds3_bool value); LIBRARY_API void ds3_request_set_error_message(const ds3_request* request, const char * const value); LIBRARY_API void ds3_request_set_expiration_date(const ds3_request* request, const char * const value); -LIBRARY_API void ds3_request_set_folder(const ds3_request* request, const char * const value); LIBRARY_API void ds3_request_set_force(const ds3_request* request, ds3_bool value); LIBRARY_API void ds3_request_set_format_ds3_http_response_format_type(const ds3_request* request, const ds3_http_response_format_type value); LIBRARY_API void ds3_request_set_full_details(const ds3_request* request, ds3_bool value); @@ -2487,6 +2498,7 @@ LIBRARY_API void ds3_request_set_roll_back(const ds3_request* request, ds3_bool LIBRARY_API void ds3_request_set_secret_key(const ds3_request* request, const char * const value); LIBRARY_API void ds3_request_set_secure_media_allocation(const ds3_request* request, ds3_bool value); LIBRARY_API void ds3_request_set_serial_number(const ds3_request* request, const char * const value); +LIBRARY_API void ds3_request_set_sort_by(const ds3_request* request, const char * const value); LIBRARY_API void ds3_request_set_staged_data_expiration_in_days(const ds3_request* request, const int value); LIBRARY_API void ds3_request_set_state_ds3_data_placement_rule_state(const ds3_request* request, const ds3_data_placement_rule_state value); LIBRARY_API void ds3_request_set_state_ds3_pool_state(const ds3_request* request, const ds3_pool_state value); @@ -3331,6 +3343,8 @@ LIBRARY_API ds3_request* ds3_init_clear_all_canceled_jobs_spectra_s3_request(voi LIBRARY_API ds3_error* ds3_clear_all_canceled_jobs_spectra_s3_request(const ds3_client* client, const ds3_request* request); LIBRARY_API ds3_request* ds3_init_clear_all_completed_jobs_spectra_s3_request(void); LIBRARY_API ds3_error* ds3_clear_all_completed_jobs_spectra_s3_request(const ds3_client* client, const ds3_request* request); +LIBRARY_API ds3_request* ds3_init_close_aggregating_job_spectra_s3_request(const char *const resource_id); +LIBRARY_API ds3_error* ds3_close_aggregating_job_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_master_object_list_response** response); /** * Optional Request Modifiers for ds3_init_get_bulk_job_spectra_s3_request * @@ -3873,7 +3887,6 @@ LIBRARY_API ds3_error* ds3_get_object_details_spectra_s3_request(const ds3_clien * Optional Request Modifiers for ds3_init_get_objects_details_spectra_s3_request * * void ds3_request_set_bucket_id(const ds3_request* request, const char * const value) - * void ds3_request_set_folder(const ds3_request* request, const char * const value) * void ds3_request_set_last_page(const ds3_request* request, ds3_bool value) * void ds3_request_set_latest(const ds3_request* request, ds3_bool value) * void ds3_request_set_name(const ds3_request* request, const char * const value) @@ -3889,7 +3902,6 @@ LIBRARY_API ds3_error* ds3_get_objects_details_spectra_s3_request(const ds3_clie * Optional Request Modifiers for ds3_init_get_objects_with_full_details_spectra_s3_request * * void ds3_request_set_bucket_id(const ds3_request* request, const char * const value) - * void ds3_request_set_folder(const ds3_request* request, const char * const value) * void ds3_request_set_include_physical_placement(const ds3_request* request, ds3_bool value) * void ds3_request_set_last_page(const ds3_request* request, ds3_bool value) * void ds3_request_set_latest(const ds3_request* request, ds3_bool value) @@ -4443,6 +4455,7 @@ LIBRARY_API ds3_error* ds3_get_tape_spectra_s3_request(const ds3_client* client, * void ds3_request_set_partition_id(const ds3_request* request, const char * const value) * void ds3_request_set_previous_state_ds3_tape_state(const ds3_request* request, const ds3_tape_state value) * void ds3_request_set_serial_number(const ds3_request* request, const char * const value) + * void ds3_request_set_sort_by(const ds3_request* request, const char * const value) * void ds3_request_set_state_ds3_tape_state(const ds3_request* request, const ds3_tape_state value) * void ds3_request_set_storage_domain_id(const ds3_request* request, const char * const value) * void ds3_request_set_type_ds3_tape_type(const ds3_request* request, const ds3_tape_type value) @@ -4493,6 +4506,13 @@ LIBRARY_API ds3_request* ds3_init_inspect_tape_spectra_s3_request(const char *co LIBRARY_API ds3_error* ds3_inspect_tape_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_tape_response** response); LIBRARY_API ds3_request* ds3_init_modify_all_tape_partitions_spectra_s3_request(const ds3_quiesced quiesced); LIBRARY_API ds3_error* ds3_modify_all_tape_partitions_spectra_s3_request(const ds3_client* client, const ds3_request* request); +/** + * Optional Request Modifiers for ds3_init_modify_tape_drive_spectra_s3_request + * + * void ds3_request_set_quiesced_ds3_quiesced(const ds3_request* request, const ds3_quiesced value) + */ +LIBRARY_API ds3_request* ds3_init_modify_tape_drive_spectra_s3_request(const char *const resource_id); +LIBRARY_API ds3_error* ds3_modify_tape_drive_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_tape_drive_response** response); /** * Optional Request Modifiers for ds3_init_modify_tape_partition_spectra_s3_request * diff --git a/src/ds3_connection.c b/src/ds3_connection.c index 42a7be61..a90fb3b4 100644 --- a/src/ds3_connection.c +++ b/src/ds3_connection.c @@ -17,12 +17,12 @@ /* This Code is Auto-Generated; DO NOT MODIFY! */ -#include #include #include #include #include "ds3_net.h" + ds3_connection_pool* ds3_connection_pool_init(void) { return ds3_connection_pool_init_with_size(CONNECTION_POOL_SIZE); } @@ -68,7 +68,6 @@ static int _pool_full(ds3_connection_pool* pool) { return (_pool_inc(pool->head, pool->num_connections) == pool->tail); } - ds3_connection* ds3_connection_acquire(ds3_connection_pool* pool) { ds3_connection* connection = NULL; @@ -93,6 +92,7 @@ ds3_connection* ds3_connection_acquire(ds3_connection_pool* pool) { void ds3_connection_release(ds3_connection_pool* pool, ds3_connection* connection) { g_mutex_lock(&pool->mutex); + curl_easy_reset(connection); pool->tail = _pool_inc(pool->tail, pool->num_connections);