@@ -175,6 +175,8 @@ static char* _get_ds3_tape_type_str(ds3_tape_type input) {
175175 return "LTO6";
176176 } else if (input == DS3_TAPE_TYPE_LTO7) {
177177 return "LTO7";
178+ } else if (input == DS3_TAPE_TYPE_LTO8) {
179+ return "LTO8";
178180 } else if (input == DS3_TAPE_TYPE_LTO_CLEANING_TAPE) {
179181 return "LTO_CLEANING_TAPE";
180182 } 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) {
423425 return "FORMAT_FAILED";
424426 } else if (input == DS3_POOL_FAILURE_TYPE_IMPORT_FAILED) {
425427 return "IMPORT_FAILED";
428+ } else if (input == DS3_POOL_FAILURE_TYPE_IMPORT_INCOMPLETE) {
429+ return "IMPORT_INCOMPLETE";
426430 } else if (input == DS3_POOL_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE) {
427431 return "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE";
428432 } 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) {
547551 return "LTO6";
548552 } else if (input == DS3_TAPE_DRIVE_TYPE_LTO7) {
549553 return "LTO7";
554+ } else if (input == DS3_TAPE_DRIVE_TYPE_LTO8) {
555+ return "LTO8";
550556 } else if (input == DS3_TAPE_DRIVE_TYPE_TS1140) {
551557 return "TS1140";
552558 } 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) {
595601 return "GET_TAPE_INFORMATION_FAILED";
596602 } else if (input == DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED) {
597603 return "IMPORT_FAILED";
604+ } else if (input == DS3_TAPE_FAILURE_TYPE_IMPORT_INCOMPLETE) {
605+ return "IMPORT_INCOMPLETE";
598606 } else if (input == DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE) {
599607 return "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE";
600608 } 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
637645 return "TAPE_DRIVE_IN_ERROR";
638646 } else if (input == DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_MISSING) {
639647 return "TAPE_DRIVE_MISSING";
648+ } else if (input == DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_QUIESCED) {
649+ return "TAPE_DRIVE_QUIESCED";
640650 } else if (input == DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_TYPE_MISMATCH) {
641651 return "TAPE_DRIVE_TYPE_MISMATCH";
642652 } 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
693703static char* _get_ds3_target_failure_type_str(ds3_target_failure_type input) {
694704 if (input == DS3_TARGET_FAILURE_TYPE_IMPORT_FAILED) {
695705 return "IMPORT_FAILED";
706+ } else if (input == DS3_TARGET_FAILURE_TYPE_IMPORT_INCOMPLETE) {
707+ return "IMPORT_INCOMPLETE";
696708 } else if (input == DS3_TARGET_FAILURE_TYPE_NOT_ONLINE) {
697709 return "NOT_ONLINE";
698710 } 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
15121524void ds3_request_set_expiration_date(const ds3_request* request, const char * const value) {
15131525 _set_query_param(request, "expiration_date", value);
15141526
1515- }
1516- void ds3_request_set_folder(const ds3_request* request, const char * const value) {
1517- _set_query_param(request, "folder", value);
1518-
15191527}
15201528void ds3_request_set_force(const ds3_request* request, ds3_bool value) {
15211529 _set_query_param_flag(request, "force", value);
@@ -1844,6 +1852,10 @@ void ds3_request_set_secure_media_allocation(const ds3_request* request, ds3_boo
18441852void ds3_request_set_serial_number(const ds3_request* request, const char * const value) {
18451853 _set_query_param(request, "serial_number", value);
18461854
1855+ }
1856+ void ds3_request_set_sort_by(const ds3_request* request, const char * const value) {
1857+ _set_query_param(request, "sort_by", value);
1858+
18471859}
18481860void ds3_request_set_staged_data_expiration_in_days(const ds3_request* request, const int value) {
18491861 _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) {
26782690 struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/completed_job/", NULL, NULL));
26792691 return (ds3_request*) request;
26802692}
2693+ ds3_request* ds3_init_close_aggregating_job_spectra_s3_request(const char *const resource_id) {
2694+ struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/job/", resource_id, NULL));
2695+ _set_query_param((ds3_request*) request, "close_aggregating_job", NULL);
2696+
2697+ return (ds3_request*) request;
2698+ }
26812699ds3_request* ds3_init_get_bulk_job_spectra_s3_request(const char *const resource_id, const ds3_bulk_object_list_response* object_list) {
26822700 struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/bucket/", resource_id, NULL));
26832701 _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
36363654
36373655 return (ds3_request*) request;
36383656}
3657+ ds3_request* ds3_init_modify_tape_drive_spectra_s3_request(const char *const resource_id) {
3658+ struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape_drive/", resource_id, NULL));
3659+ return (ds3_request*) request;
3660+ }
36393661ds3_request* ds3_init_modify_tape_partition_spectra_s3_request(const char *const resource_id) {
36403662 struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape_partition/", resource_id, NULL));
36413663 return (ds3_request*) request;
@@ -4603,6 +4625,8 @@ static ds3_pool_failure_type _match_ds3_pool_failure_type(const ds3_log* log, co
46034625 return DS3_POOL_FAILURE_TYPE_FORMAT_FAILED;
46044626 } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
46054627 return DS3_POOL_FAILURE_TYPE_IMPORT_FAILED;
4628+ } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) {
4629+ return DS3_POOL_FAILURE_TYPE_IMPORT_INCOMPLETE;
46064630 } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE") == 0) {
46074631 return DS3_POOL_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE;
46084632 } 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
47174741 return DS3_TAPE_DRIVE_TYPE_LTO6;
47184742 } else if (xmlStrcmp(text, (const xmlChar*) "LTO7") == 0) {
47194743 return DS3_TAPE_DRIVE_TYPE_LTO7;
4744+ } else if (xmlStrcmp(text, (const xmlChar*) "LTO8") == 0) {
4745+ return DS3_TAPE_DRIVE_TYPE_LTO8;
47204746 } else if (xmlStrcmp(text, (const xmlChar*) "TS1140") == 0) {
47214747 return DS3_TAPE_DRIVE_TYPE_TS1140;
47224748 } 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
47514777 return DS3_TAPE_FAILURE_TYPE_GET_TAPE_INFORMATION_FAILED;
47524778 } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
47534779 return DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED;
4780+ } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) {
4781+ return DS3_TAPE_FAILURE_TYPE_IMPORT_INCOMPLETE;
47544782 } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE") == 0) {
47554783 return DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE;
47564784 } 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
47934821 return DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_IN_ERROR;
47944822 } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_MISSING") == 0) {
47954823 return DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_MISSING;
4824+ } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_QUIESCED") == 0) {
4825+ return DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_QUIESCED;
47964826 } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_TYPE_MISMATCH") == 0) {
47974827 return DS3_TAPE_PARTITION_FAILURE_TYPE_TAPE_DRIVE_TYPE_MISMATCH;
47984828 } 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
48834913 return DS3_TAPE_TYPE_LTO6;
48844914 } else if (xmlStrcmp(text, (const xmlChar*) "LTO7") == 0) {
48854915 return DS3_TAPE_TYPE_LTO7;
4916+ } else if (xmlStrcmp(text, (const xmlChar*) "LTO8") == 0) {
4917+ return DS3_TAPE_TYPE_LTO8;
48864918 } else if (xmlStrcmp(text, (const xmlChar*) "LTO_CLEANING_TAPE") == 0) {
48874919 return DS3_TAPE_TYPE_LTO_CLEANING_TAPE;
48884920 } 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
49214953static ds3_target_failure_type _match_ds3_target_failure_type(const ds3_log* log, const xmlChar* text) {
49224954 if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
49234955 return DS3_TARGET_FAILURE_TYPE_IMPORT_FAILED;
4956+ } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) {
4957+ return DS3_TARGET_FAILURE_TYPE_IMPORT_INCOMPLETE;
49244958 } else if (xmlStrcmp(text, (const xmlChar*) "NOT_ONLINE") == 0) {
49254959 return DS3_TARGET_FAILURE_TYPE_NOT_ONLINE;
49264960 } 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
76067640 response->mfg_serial_number = xml_get_string(doc, child_node);
76077641 } else if (element_equal(child_node, "PartitionId")) {
76087642 response->partition_id = xml_get_string(doc, child_node);
7643+ } else if (element_equal(child_node, "Quiesced")) {
7644+ xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7645+ if (text == NULL) {
7646+ continue;
7647+ }
7648+ response->quiesced = _match_ds3_quiesced(client->log, text);
7649+ xmlFree(text);
76097650 } else if (element_equal(child_node, "SerialNumber")) {
76107651 response->serial_number = xml_get_string(doc, child_node);
76117652 } else if (element_equal(child_node, "State")) {
@@ -7753,6 +7794,8 @@ static ds3_error* _parse_ds3_tape_partition_response(const ds3_client* client, c
77537794 }
77547795 response->quiesced = _match_ds3_quiesced(client->log, text);
77557796 xmlFree(text);
7797+ } else if (element_equal(child_node, "SerialId")) {
7798+ response->serial_id = xml_get_string(doc, child_node);
77567799 } else if (element_equal(child_node, "SerialNumber")) {
77577800 response->serial_number = xml_get_string(doc, child_node);
77587801 } else if (element_equal(child_node, "State")) {
@@ -9026,6 +9069,8 @@ static ds3_error* _parse_ds3_named_detailed_tape_partition_response(const ds3_cl
90269069 }
90279070 response->quiesced = _match_ds3_quiesced(client->log, text);
90289071 xmlFree(text);
9072+ } else if (element_equal(child_node, "SerialId")) {
9073+ response->serial_id = xml_get_string(doc, child_node);
90299074 } else if (element_equal(child_node, "SerialNumber")) {
90309075 response->serial_number = xml_get_string(doc, child_node);
90319076 } 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
1233112376 response->mfg_serial_number = xml_get_string(doc, child_node);
1233212377 } else if (element_equal(child_node, "PartitionId")) {
1233312378 response->partition_id = xml_get_string(doc, child_node);
12379+ } else if (element_equal(child_node, "Quiesced")) {
12380+ xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
12381+ if (text == NULL) {
12382+ continue;
12383+ }
12384+ response->quiesced = _match_ds3_quiesced(client->log, text);
12385+ xmlFree(text);
1233412386 } else if (element_equal(child_node, "SerialNumber")) {
1233512387 response->serial_number = xml_get_string(doc, child_node);
1233612388 } else if (element_equal(child_node, "State")) {
@@ -12458,6 +12510,8 @@ static ds3_error* _parse_top_level_ds3_tape_partition_response(const ds3_client*
1245812510 }
1245912511 response->quiesced = _match_ds3_quiesced(client->log, text);
1246012512 xmlFree(text);
12513+ } else if (element_equal(child_node, "SerialId")) {
12514+ response->serial_id = xml_get_string(doc, child_node);
1246112515 } else if (element_equal(child_node, "SerialNumber")) {
1246212516 response->serial_number = xml_get_string(doc, child_node);
1246312517 } else if (element_equal(child_node, "State")) {
@@ -13180,6 +13234,8 @@ static ds3_error* _parse_top_level_ds3_detailed_tape_partition_response(const ds
1318013234 }
1318113235 response->quiesced = _match_ds3_quiesced(client->log, text);
1318213236 xmlFree(text);
13237+ } else if (element_equal(child_node, "SerialId")) {
13238+ response->serial_id = xml_get_string(doc, child_node);
1318313239 } else if (element_equal(child_node, "SerialNumber")) {
1318413240 response->serial_number = xml_get_string(doc, child_node);
1318513241 } 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
1898119037
1898219038 return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
1898319039}
19040+ ds3_error* ds3_close_aggregating_job_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_master_object_list_response** response) {
19041+ ds3_error* error;
19042+ GByteArray* xml_blob;
19043+
19044+ int num_slashes = num_chars_in_ds3_str(request->path, '/');
19045+ if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19046+ return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19047+ } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19048+ return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19049+ }
19050+
19051+ xml_blob = g_byte_array_new();
19052+ error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19053+ if (error != NULL) {
19054+ g_byte_array_free(xml_blob, TRUE);
19055+ return error;
19056+ }
19057+
19058+ return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
19059+ }
1898419060ds3_error* ds3_get_bulk_job_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_master_object_list_response** response) {
1898519061 ds3_error* error;
1898619062 ds3_xml_send_buff send_buff;
@@ -22227,6 +22303,26 @@ ds3_error* ds3_modify_all_tape_partitions_spectra_s3_request(const ds3_client* c
2222722303
2222822304 return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
2222922305}
22306+ ds3_error* ds3_modify_tape_drive_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_tape_drive_response** response) {
22307+ ds3_error* error;
22308+ GByteArray* xml_blob;
22309+
22310+ int num_slashes = num_chars_in_ds3_str(request->path, '/');
22311+ if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
22312+ return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
22313+ } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
22314+ return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
22315+ }
22316+
22317+ xml_blob = g_byte_array_new();
22318+ error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
22319+ if (error != NULL) {
22320+ g_byte_array_free(xml_blob, TRUE);
22321+ return error;
22322+ }
22323+
22324+ return _parse_top_level_ds3_tape_drive_response(client, request, response, xml_blob);
22325+ }
2223022326ds3_error* ds3_modify_tape_partition_spectra_s3_request(const ds3_client* client, const ds3_request* request, ds3_tape_partition_response** response) {
2223122327 ds3_error* error;
2223222328 GByteArray* xml_blob;
@@ -24160,6 +24256,7 @@ void ds3_tape_partition_response_free(ds3_tape_partition_response* response) {
2416024256 ds3_str_free(response->id);
2416124257 ds3_str_free(response->library_id);
2416224258 ds3_str_free(response->name);
24259+ ds3_str_free(response->serial_id);
2416324260 ds3_str_free(response->serial_number);
2416424261
2416524262 g_free(response);
@@ -24620,6 +24717,7 @@ void ds3_detailed_tape_partition_response_free(ds3_detailed_tape_partition_respo
2462024717 ds3_str_free(response->id);
2462124718 ds3_str_free(response->library_id);
2462224719 ds3_str_free(response->name);
24720+ ds3_str_free(response->serial_id);
2462324721 ds3_str_free(response->serial_number);
2462424722 g_free(response->tape_types);
2462524723
@@ -24716,6 +24814,7 @@ void ds3_named_detailed_tape_partition_response_free(ds3_named_detailed_tape_par
2471624814 ds3_str_free(response->id);
2471724815 ds3_str_free(response->library_id);
2471824816 ds3_str_free(response->name);
24817+ ds3_str_free(response->serial_id);
2471924818 ds3_str_free(response->serial_number);
2472024819 g_free(response->tape_types);
2472124820
0 commit comments