DS3 C SDK  4.1.0
Provides access to the Spectra S3 API with C
ds3_requests.c
Go to the documentation of this file.
1 /*
2  * ******************************************************************************
3  * Copyright 2014-2017 Spectra Logic Corporation. All Rights Reserved.
4  * Licensed under the Apache License, Version 2.0 (the "License"). You may not use
5  * this file except in compliance with the License. A copy of the License is located at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * or in the "license" file accompanying this file.
10  * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
11  * CONDITIONS OF ANY KIND, either express or implied. See the License for the
12  * specific language governing permissions and limitations under the License.
13  * ****************************************************************************
14  */
15 
16 /* This Code is Auto-Generated; DO NOT MODIFY! */
17 
18 
19 #include <glib.h>
20 #include <stdlib.h>
21 #include <stdbool.h>
22 #include <libxml/parser.h>
23 
24 #include "ds3.h"
25 #include "ds3_net.h"
26 #include "ds3_request.h"
28 #include "ds3_utils.h"
29 
30 #ifdef _WIN32
31  #include <io.h>
32  #ifndef PRIu64
33  #define PRIu64 "I64u"
34  #endif
35 #else
36  #include <inttypes.h>
37 #endif
38 
39 
40 //The max size of an uint32_t is 10 characters + NULL
41 //The max size of an uint64_t is 20 characters + NULL
42 #define STRING_BUFFER_SIZE 32
43 
44 
45 struct _ds3_metadata {
46  GHashTable* metadata;
47 };
48 
49 static void _ds3_metadata_entry_free(gpointer pointer) {
50  ds3_metadata_entry* entry;
51  if (pointer == NULL) {
52  return; // do nothing
53  }
54 
55  entry = (ds3_metadata_entry*) pointer;
56 
58 }
59 
60 /*
61  * This copies all the header values in the ds3_string_multimap_entry struct so that they may be safely returned to the user
62  * without having to worry about if the data is freed internally.
63  */
64 static const char* METADATA_PREFIX = "x-amz-meta-";
66  guint i;
67  ds3_str* header_value;
68  GPtrArray* values = g_ptr_array_new();
69  ds3_str* key_name;
70  ds3_str* full_key;
71  ds3_metadata_entry* response = g_new0(ds3_metadata_entry, 1);
72  int metadata_prefix_length = strlen(METADATA_PREFIX);
73 
74  unsigned int num_values = ds3_string_multimap_entry_get_num_values(header_entry);
75  for (i = 0; i < num_values; i++) {
76  header_value = ds3_string_multimap_entry_get_value_by_index(header_entry, i);
77  g_ptr_array_add(values, header_value);
78  }
79 
80  full_key = ds3_string_multimap_entry_get_key(header_entry);
81  key_name = ds3_str_init(full_key->value + metadata_prefix_length);
82  ds3_str_free(full_key);
83 
84  response->num_values = num_values;
85  response->name = key_name;
86  response->values = (ds3_str**) g_ptr_array_free(values, FALSE);
87  return response;
88 }
89 
90 /* The headers hash table contains all the response headers which have the following types:
91  * Key - char*
92  * Value - ds3_response_header
93  *
94  * All values should be copied from the struct to avoid memory issues
95  */
96 static ds3_metadata* _init_metadata(ds3_string_multimap* response_headers) {
97  struct _ds3_metadata* metadata = g_new0(struct _ds3_metadata, 1);
98  GHashTableIter iter;
99  gpointer _key, _value;
100  ds3_str* key;
101  ds3_metadata_entry* entry;
102  metadata->metadata = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, _ds3_metadata_entry_free);
103 
104  if (response_headers == NULL) {
105  fprintf(stderr, "response headers was null\n");
106  }
107 
108  g_hash_table_iter_init(&iter, ds3_string_multimap_get_hashtable(response_headers));
109  while(g_hash_table_iter_next(&iter, &_key, &_value)) {
110  key = (ds3_str*) _key;
111  if (g_str_has_prefix(key->value, "x-amz-meta-")) {
112  ds3_string_multimap_entry* mm_entry = ds3_string_multimap_lookup(response_headers, key);
113  entry = ds3_metadata_entry_init(mm_entry);
114  g_hash_table_insert(metadata->metadata, g_strdup(entry->name->value), entry);
116  }
117  }
118 
119  return (ds3_metadata*) metadata;
120 }
121 
122 ds3_metadata_entry* ds3_metadata_get_entry(const ds3_metadata* _metadata, const char* name) {
123  ds3_metadata_entry* copy;
124  ds3_metadata_entry* orig;
125  ds3_str** metadata_copy;
126  uint64_t i;
127  struct _ds3_metadata* metadata = (struct _ds3_metadata*) _metadata;
128 
129  if (_metadata == NULL) {
130  return NULL;
131  }
132 
133  orig = (ds3_metadata_entry*) g_hash_table_lookup(metadata->metadata, name);
134  if (orig == NULL) {
135  return NULL;
136  }
137  copy = g_new0(ds3_metadata_entry, 1);
138  metadata_copy = g_new0(ds3_str*, (gsize)orig->num_values);
139 
140  for (i = 0; i < orig->num_values; i++) {
141  metadata_copy[i] = ds3_str_dup(orig->values[i]);
142  }
143 
144  copy->num_values = orig->num_values;
145  copy->name = ds3_str_dup(orig->name);
146  copy->values = metadata_copy;
147 
148  return copy;
149 }
150 
151 unsigned int ds3_metadata_size(const ds3_metadata* _metadata) {
152  struct _ds3_metadata* metadata = (struct _ds3_metadata*) _metadata;
153  if (metadata == NULL) {
154  return 0;
155  }
156  return g_hash_table_size(metadata->metadata);
157 }
158 
160  GPtrArray* return_keys;
161  ds3_metadata_keys_result* result;
162  struct _ds3_metadata* metadata;
163  GList* keys;
164  GList* tmp_key;
165 
166  if (_metadata == NULL) {
167  return NULL;
168  }
169 
170  return_keys = g_ptr_array_new();
171  result = g_new0(ds3_metadata_keys_result, 1);
172  metadata = (struct _ds3_metadata*) _metadata;
173  keys = g_hash_table_get_keys(metadata->metadata);
174  tmp_key = keys;
175 
176  while(tmp_key != NULL) {
177  g_ptr_array_add(return_keys, ds3_str_init((char*)tmp_key->data));
178  tmp_key = tmp_key->next;
179  }
180 
181  g_list_free(keys);
182  result->num_keys = return_keys->len;
183  result->keys = (ds3_str**) g_ptr_array_free(return_keys, FALSE);
184  return result;
185 }
186 
187 void ds3_metadata_free(ds3_metadata* _metadata) {
188  struct _ds3_metadata* metadata;
189  if (_metadata == NULL) return;
190 
191  metadata = (struct _ds3_metadata*) _metadata;
192 
193  if (metadata->metadata == NULL) return;
194 
195  g_hash_table_destroy(metadata->metadata);
196 
197  g_free(metadata);
198 }
199 
201  if (entry == NULL) {
202  return;
203  }
204 
205  int value_index;
206  ds3_str* value;
207  if (entry->name != NULL) {
208  ds3_str_free(entry->name);
209  }
210 
211  if (entry->values != NULL) {
212  for (value_index = 0; value_index < entry->num_values; value_index++) {
213  value = entry->values[value_index];
214  ds3_str_free(value);
215  }
216  g_free(entry->values);
217  }
218  g_free(entry);
219 }
220 
222  uint64_t key_index;
223  if (metadata_keys == NULL) {
224  return;
225  }
226 
227  if (metadata_keys->keys != NULL) {
228  for (key_index = 0; key_index < metadata_keys->num_keys; key_index++) {
229  ds3_str_free(metadata_keys->keys[key_index]);
230  }
231  g_free(metadata_keys->keys);
232  }
233  g_free(metadata_keys);
234 }
235 static bool attribute_equal(const struct _xmlAttr* attribute, const char* attribute_name) {
236  return xmlStrcmp(attribute->name, (const xmlChar*) attribute_name) == 0;
237 }
238 
239 static bool element_equal(const xmlNodePtr xml_node, const char* element_name) {
240  return xmlStrcmp(xml_node->name, (const xmlChar*) element_name) == 0;
241 }
242 
243 static uint16_t xml_get_uint16(xmlDocPtr doc, xmlNodePtr child_node) {
244  xmlChar* text;
245  uint16_t size;
246  text = xmlNodeListGetString(doc, child_node->xmlChildrenNode, 1);
247  if (text == NULL) {
248  return 0;
249  }
250  size = atoi((char*)text);
251  xmlFree(text);
252  return size;
253 }
254 
255 static uint64_t xml_get_uint16_from_attribute(xmlDocPtr doc, struct _xmlAttr* attribute) {
256  return xml_get_uint16(doc, (xmlNodePtr) attribute);
257 }
258 
259 static uint64_t xml_get_uint64(xmlDocPtr doc, xmlNodePtr child_node) {
260  xmlChar* text;
261  uint64_t size;
262  text = xmlNodeListGetString(doc, child_node->xmlChildrenNode, 1);
263  if (text == NULL) {
264  return 0;
265  }
266  size = g_ascii_strtoull((const char*)text, NULL, 10);
267  xmlFree(text);
268  return size;
269 }
270 
271 static uint64_t xml_get_uint64_from_attribute(xmlDocPtr doc, struct _xmlAttr* attribute) {
272  return xml_get_uint64(doc, (xmlNodePtr) attribute);
273 }
274 
275 static ds3_str* xml_get_string(xmlDocPtr doc, xmlNodePtr child_node) {
276  xmlChar* text;
277  ds3_str* result;
278  text = xmlNodeListGetString(doc, child_node->xmlChildrenNode, 1);
279  if (text == NULL) {
280  // Element is found, but is empty: <name />
281  return NULL;
282  }
283  result = ds3_str_init((const char*) text);
284  xmlFree(text);
285  return result;
286 }
287 
288 static ds3_str* xml_get_string_from_attribute(xmlDocPtr doc, struct _xmlAttr* attribute) {
289  return xml_get_string(doc, (xmlNodePtr) attribute);
290 }
291 
292 static ds3_bool xml_get_bool(const ds3_log* log, xmlDocPtr doc, const xmlNodePtr xml_node) {
293  xmlChar* text;
294  ds3_bool result;
295  text = xmlNodeListGetString(doc, xml_node->xmlChildrenNode, 1);
296  if (xmlStrcmp(text, (xmlChar*)"true") == 0) {
297  result = True;
298  } else if (xmlStrcmp(text, (xmlChar*)"false") == 0) {
299  result = False;
300  } else {
301  ds3_log_message(log, DS3_ERROR, "Unknown boolean value");
302  result = False;
303  }
304  xmlFree(text);
305  return result;
306 }
307 
308 static ds3_bool xml_get_bool_from_attribute(const ds3_log* log, xmlDocPtr doc, struct _xmlAttr* attribute) {
309  return xml_get_bool(log, doc, (xmlNodePtr) attribute);
310 }
311 
312 typedef struct {
313  char* buff;
314  size_t size;
315  size_t total_read;
316 }ds3_xml_send_buff;
317 
318 
319 static size_t _ds3_send_xml_buff(void* buffer, size_t size, size_t nmemb, void* user_data) {
320  size_t to_read;
321  size_t remaining;
322  ds3_xml_send_buff* xml_buff;
323 
324  xml_buff = (ds3_xml_send_buff*) user_data;
325  to_read = size * nmemb;
326  remaining = xml_buff->size - xml_buff->total_read;
327 
328  if (remaining < to_read) {
329  to_read = remaining;
330  }
331 
332  strncpy((char*)buffer, xml_buff->buff + xml_buff->total_read, to_read);
333  xml_buff->total_read += to_read;
334  return to_read;
335 }
336 
337 typedef enum {
347 
349  const ds3_client* client,
350  const ds3_request* request,
351  void* read_user_struct,
352  size_t (*read_handler_func)(void*, size_t, size_t, void*),
353  void* write_user_struct,
354  size_t (*write_handler_func)(void*, size_t, size_t, void*),
355  ds3_string_multimap** return_headers) {
356  if (client == NULL || request == NULL) {
357  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "All arguments must be filled in for request processing");
358  }
359  return net_process_request(client, request, read_user_struct, read_handler_func, write_user_struct, write_handler_func, return_headers);
360 }
361 
362 static int num_chars_in_ds3_str(const ds3_str *const str, char ch) {
363  int num_matches = 0;
364  size_t index;
365 
366  for (index = 0; index < str->size; index++) {
367  if (str->value[index] == '/') {
368  num_matches++;
369  }
370  }
371 
372  return num_matches;
373 }
374 
376  GByteArray* xml_blob,
377  xmlDocPtr* _doc,
378  xmlNodePtr* _root,
379  char* root_element_name) {
380  xmlNodePtr root;
381 
382  xmlDocPtr doc = xmlParseMemory((const char*) xml_blob->data, xml_blob->len);
383  if (doc == NULL) {
384  char* message = g_strconcat("Failed to parse response document. The actual response is: ", xml_blob->data, NULL);
385  g_byte_array_free(xml_blob, TRUE);
387  g_free(message);
388  return error;
389  }
390 
391  root = xmlDocGetRootElement(doc);
392  if (element_equal(root, root_element_name) == false) {
393  char* message = g_strconcat("Expected the root element to be '", root_element_name, "'. The actual response is: ", xml_blob->data, NULL);
394  xmlFreeDoc(doc);
395  g_byte_array_free(xml_blob, TRUE);
397  g_free(message);
398  return error;
399  }
400 
401  *_doc = doc;
402  *_root = root;
403 
404  g_byte_array_free(xml_blob, TRUE);
405  return NULL;
406 }
407 
409  char size_buff[STRING_BUFFER_SIZE];
410  xmlDocPtr doc;
412  xmlNodePtr objects_node, object_node;
413  size_t obj_index;
414 
415  // Start creating the xml body to send to the server.
416  doc = xmlNewDoc((xmlChar*)"1.0");
417  objects_node = xmlNewNode(NULL, (xmlChar*) "Objects");
418 
419  if (list_type == BULK_GET) {
421  xmlSetProp(objects_node, (xmlChar*) "ChunkClientProcessingOrderGuarantee", (const xmlChar *) "NONE");
423  xmlSetProp(objects_node, (xmlChar*) "ChunkClientProcessingOrderGuarantee", (const xmlChar *) "IN_ORDER");
424  } else {
425  return NULL;
426  }
427  }
428 
429 
430  for (obj_index = 0; obj_index < obj_list->num_objects; obj_index++) {
431  obj = obj_list->objects[obj_index];
432  memset(size_buff, 0, sizeof(size_buff));
433  g_snprintf(size_buff, STRING_BUFFER_SIZE, "%" PRIu64, obj->length);
434 
435  object_node = xmlNewNode(NULL, (xmlChar*) "Object");
436  xmlAddChild(objects_node, object_node);
437 
438  xmlSetProp(object_node, (xmlChar*) "Name", (xmlChar*) obj->name->value);
439  if (list_type == BULK_PUT) {
440  xmlSetProp(object_node, (xmlChar*) "Size", (xmlChar*) size_buff);
441  }
442  }
443 
444  xmlDocSetRootElement(doc, objects_node);
445 
446  return doc;
447 }
448 
450  char size_buff[STRING_BUFFER_SIZE];
451  xmlDocPtr doc;
453  xmlNodePtr parts_node, part_node;
454  int part_num;
455 
456  // Start creating the xml body to send to the server.
457  doc = xmlNewDoc((xmlChar*)"1.0");
458  parts_node = xmlNewNode(NULL, (xmlChar*) "CompleteMultipartUpload");
459 
460  for (part_num = 0; part_num < mpu_list->num_parts; part_num++) {
461  part = mpu_list->parts[part_num];
462 
463  part_node = xmlNewNode(NULL, (xmlChar*) "Part");
464  xmlAddChild(parts_node, part_node);
465 
466  g_snprintf(size_buff, STRING_BUFFER_SIZE, "%d", part->part_number);
467  xmlNewTextChild(part_node, NULL, (xmlChar*) "PartNumber", (xmlChar*) size_buff);
468 
469  xmlNewTextChild(part_node, NULL, (xmlChar*) "ETag", (xmlChar*) part->etag->value);
470  }
471 
472  xmlDocSetRootElement(doc, parts_node);
473  return doc;
474 }
475 
477  xmlDocPtr doc;
478  ds3_str* key;
479  xmlNodePtr del_node, obj_node;
480  int key_num;
481 
482  // Start creating the xml body to send to the server.
483  doc = xmlNewDoc((xmlChar*)"1.0");
484  del_node = xmlNewNode(NULL, (xmlChar*) "Delete");
485 
486  for (key_num = 0; key_num < keys_list->num_strings; key_num++) {
487  key = keys_list->strings_list[key_num];
488 
489  obj_node = xmlNewNode(NULL, (xmlChar*) "Object");
490  xmlAddChild(del_node, obj_node);
491 
492  xmlNewTextChild(obj_node, NULL, (xmlChar*) "Key", (xmlChar*) key->value);
493  }
494 
495  xmlDocSetRootElement(doc, del_node);
496  return doc;
497 }
498 
500  ds3_xml_send_buff* send_buff,
501  const object_list_type operation_type) {
502  xmlDocPtr doc;
503 
504  struct _ds3_request* request = (struct _ds3_request*) _request;
505 
506  // Clear send_buff
507  memset(send_buff, 0, sizeof(ds3_xml_send_buff));
508 
509  switch(operation_type) {
510  case BULK_PUT:
511  case BULK_GET:
513  if (request->object_list == NULL || request->object_list->num_objects == 0) {
514  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bulk command requires a list of objects to process");
515  }
516  doc = _generate_xml_bulk_objects_list(request->object_list, operation_type, request->chunk_ordering);
517  break;
518 
519  case COMPLETE_MPU:
520  if (request->mpu_list == NULL || request->mpu_list->num_parts == 0) {
521  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The complete multipart upload command requires a list of objects to process");
522  }
523  doc = _generate_xml_complete_mpu(request->mpu_list);
524  break;
525 
526  case BULK_DELETE:
527  case STRING_LIST:
528  if (request->delete_objects == NULL || request->delete_objects->num_strings == 0) {
529  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The delete objects command requires a list of objects to process");
530  }
532  break;
533 
534  case STRING: // *** not XML - do not interpret
535  send_buff->buff = request->delete_objects->strings_list[0]->value;
536  send_buff->size = request->delete_objects->strings_list[0]->size;
537  request->length = send_buff->size;
538  return NULL;
539  break;
540 
541  default:
542  return ds3_create_error(DS3_ERROR_INVALID_XML, "Unknown request payload type");
543  }
544 
545  xmlDocDumpFormatMemory(doc, (xmlChar**) &send_buff->buff, (int*) &send_buff->size, 1);
546  request->length = send_buff->size; // make sure to set the size of the request.
547 
548  xmlFreeDoc(doc);
549 
550  return NULL;
551 }
552 
553 
554 static ds3_auto_inspect_mode _match_ds3_auto_inspect_mode(const ds3_log* log, const xmlChar* text) {
555  if (xmlStrcmp(text, (const xmlChar*) "NEVER") == 0) {
557  } else if (xmlStrcmp(text, (const xmlChar*) "MINIMAL") == 0) {
559  } else if (xmlStrcmp(text, (const xmlChar*) "FULL") == 0) {
561  } else {
562  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_AUTO_INSPECT_MODE_NEVER for safety.", text);
564  }
565 }
566 static ds3_priority _match_ds3_priority(const ds3_log* log, const xmlChar* text) {
567  if (xmlStrcmp(text, (const xmlChar*) "CRITICAL") == 0) {
568  return DS3_PRIORITY_CRITICAL;
569  } else if (xmlStrcmp(text, (const xmlChar*) "URGENT") == 0) {
570  return DS3_PRIORITY_URGENT;
571  } else if (xmlStrcmp(text, (const xmlChar*) "HIGH") == 0) {
572  return DS3_PRIORITY_HIGH;
573  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
574  return DS3_PRIORITY_NORMAL;
575  } else if (xmlStrcmp(text, (const xmlChar*) "LOW") == 0) {
576  return DS3_PRIORITY_LOW;
577  } else if (xmlStrcmp(text, (const xmlChar*) "BACKGROUND") == 0) {
579  } else {
580  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_PRIORITY_CRITICAL for safety.", text);
581  return DS3_PRIORITY_CRITICAL;
582  }
583 }
584 static ds3_bucket_acl_permission _match_ds3_bucket_acl_permission(const ds3_log* log, const xmlChar* text) {
585  if (xmlStrcmp(text, (const xmlChar*) "LIST") == 0) {
587  } else if (xmlStrcmp(text, (const xmlChar*) "READ") == 0) {
589  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE") == 0) {
591  } else if (xmlStrcmp(text, (const xmlChar*) "DELETE") == 0) {
593  } else if (xmlStrcmp(text, (const xmlChar*) "JOB") == 0) {
595  } else if (xmlStrcmp(text, (const xmlChar*) "OWNER") == 0) {
597  } else {
598  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_BUCKET_ACL_PERMISSION_LIST for safety.", text);
600  }
601 }
602 static ds3_data_isolation_level _match_ds3_data_isolation_level(const ds3_log* log, const xmlChar* text) {
603  if (xmlStrcmp(text, (const xmlChar*) "STANDARD") == 0) {
605  } else if (xmlStrcmp(text, (const xmlChar*) "BUCKET_ISOLATED") == 0) {
607  } else {
608  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_ISOLATION_LEVEL_STANDARD for safety.", text);
610  }
611 }
613  if (xmlStrcmp(text, (const xmlChar*) "PERMANENT") == 0) {
615  } else if (xmlStrcmp(text, (const xmlChar*) "TEMPORARY") == 0) {
617  } else if (xmlStrcmp(text, (const xmlChar*) "RETIRED") == 0) {
619  } else {
620  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_PERSISTENCE_RULE_TYPE_PERMANENT for safety.", text);
622  }
623 }
625  if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
627  } else if (xmlStrcmp(text, (const xmlChar*) "INCLUSION_IN_PROGRESS") == 0) {
629  } else {
630  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_PLACEMENT_RULE_STATE_NORMAL for safety.", text);
632  }
633 }
635  if (xmlStrcmp(text, (const xmlChar*) "PERMANENT") == 0) {
637  } else if (xmlStrcmp(text, (const xmlChar*) "RETIRED") == 0) {
639  } else {
640  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_REPLICATION_RULE_TYPE_PERMANENT for safety.", text);
642  }
643 }
644 static ds3_feature_key_type _match_ds3_feature_key_type(const ds3_log* log, const xmlChar* text) {
645  if (xmlStrcmp(text, (const xmlChar*) "AWS_S3_CLOUD_OUT") == 0) {
647  } else if (xmlStrcmp(text, (const xmlChar*) "MICROSOFT_AZURE_CLOUD_OUT") == 0) {
649  } else {
650  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_FEATURE_KEY_TYPE_AWS_S3_CLOUD_OUT for safety.", text);
652  }
653 }
655  if (xmlStrcmp(text, (const xmlChar*) "PENDING") == 0) {
657  } else if (xmlStrcmp(text, (const xmlChar*) "IN_PROGRESS") == 0) {
659  } else if (xmlStrcmp(text, (const xmlChar*) "COMPLETED") == 0) {
661  } else {
662  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_CHUNK_BLOB_STORE_STATE_PENDING for safety.", text);
664  }
665 }
667  if (xmlStrcmp(text, (const xmlChar*) "NONE") == 0) {
669  } else if (xmlStrcmp(text, (const xmlChar*) "IN_ORDER") == 0) {
671  } else {
672  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_CHUNK_CLIENT_PROCESSING_ORDER_GUARANTEE_NONE for safety.", text);
674  }
675 }
676 static ds3_job_request_type _match_ds3_job_request_type(const ds3_log* log, const xmlChar* text) {
677  if (xmlStrcmp(text, (const xmlChar*) "PUT") == 0) {
679  } else if (xmlStrcmp(text, (const xmlChar*) "GET") == 0) {
681  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY") == 0) {
683  } else {
684  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_REQUEST_TYPE_PUT for safety.", text);
686  }
687 }
688 static ds3_ltfs_file_naming_mode _match_ds3_ltfs_file_naming_mode(const ds3_log* log, const xmlChar* text) {
689  if (xmlStrcmp(text, (const xmlChar*) "OBJECT_NAME") == 0) {
691  } else if (xmlStrcmp(text, (const xmlChar*) "OBJECT_ID") == 0) {
693  } else {
694  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_LTFS_FILE_NAMING_MODE_OBJECT_NAME for safety.", text);
696  }
697 }
699  if (xmlStrcmp(text, (const xmlChar*) "STANDARD") == 0) {
701  } else if (xmlStrcmp(text, (const xmlChar*) "REDUCED_REDUNDANCY") == 0) {
703  } else if (xmlStrcmp(text, (const xmlChar*) "STANDARD_IA") == 0) {
705  } else if (xmlStrcmp(text, (const xmlChar*) "GLACIER") == 0) {
707  } else {
708  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_S3_INITIAL_DATA_PLACEMENT_POLICY_STANDARD for safety.", text);
710  }
711 }
712 static ds3_s3_object_type _match_ds3_s3_object_type(const ds3_log* log, const xmlChar* text) {
713  if (xmlStrcmp(text, (const xmlChar*) "DATA") == 0) {
715  } else if (xmlStrcmp(text, (const xmlChar*) "FOLDER") == 0) {
717  } else {
718  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_S3_OBJECT_TYPE_DATA for safety.", text);
720  }
721 }
722 static ds3_s3_region _match_ds3_s3_region(const ds3_log* log, const xmlChar* text) {
723  if (xmlStrcmp(text, (const xmlChar*) "GOV_CLOUD") == 0) {
725  } else if (xmlStrcmp(text, (const xmlChar*) "US_EAST_1") == 0) {
727  } else if (xmlStrcmp(text, (const xmlChar*) "US_WEST_1") == 0) {
729  } else if (xmlStrcmp(text, (const xmlChar*) "US_WEST_2") == 0) {
731  } else if (xmlStrcmp(text, (const xmlChar*) "EU_WEST_1") == 0) {
733  } else if (xmlStrcmp(text, (const xmlChar*) "EU_CENTRAL_1") == 0) {
735  } else if (xmlStrcmp(text, (const xmlChar*) "AP_SOUTH_1") == 0) {
737  } else if (xmlStrcmp(text, (const xmlChar*) "AP_SOUTHEAST_1") == 0) {
739  } else if (xmlStrcmp(text, (const xmlChar*) "AP_SOUTHEAST_2") == 0) {
741  } else if (xmlStrcmp(text, (const xmlChar*) "AP_NORTHEAST_1") == 0) {
743  } else if (xmlStrcmp(text, (const xmlChar*) "AP_NORTHEAST_2") == 0) {
745  } else if (xmlStrcmp(text, (const xmlChar*) "SA_EAST_1") == 0) {
747  } else if (xmlStrcmp(text, (const xmlChar*) "CN_NORTH_1") == 0) {
749  } else {
750  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_S3_REGION_GOV_CLOUD for safety.", text);
752  }
753 }
755  if (xmlStrcmp(text, (const xmlChar*) "ILLEGAL_EJECTION_OCCURRED") == 0) {
757  } else if (xmlStrcmp(text, (const xmlChar*) "MEMBER_BECAME_READ_ONLY") == 0) {
759  } else if (xmlStrcmp(text, (const xmlChar*) "WRITES_STALLED_DUE_TO_NO_FREE_MEDIA_REMAINING") == 0) {
761  } else {
762  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_STORAGE_DOMAIN_FAILURE_TYPE_ILLEGAL_EJECTION_OCCURRED for safety.", text);
764  }
765 }
767  if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
769  } else if (xmlStrcmp(text, (const xmlChar*) "EXCLUSION_IN_PROGRESS") == 0) {
771  } else {
772  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_STORAGE_DOMAIN_MEMBER_STATE_NORMAL for safety.", text);
774  }
775 }
776 static ds3_system_failure_type _match_ds3_system_failure_type(const ds3_log* log, const xmlChar* text) {
777  if (xmlStrcmp(text, (const xmlChar*) "RECONCILE_TAPE_ENVIRONMENT_FAILED") == 0) {
779  } else if (xmlStrcmp(text, (const xmlChar*) "RECONCILE_POOL_ENVIRONMENT_FAILED") == 0) {
781  } else if (xmlStrcmp(text, (const xmlChar*) "CRITICAL_DATA_VERIFICATION_ERROR_REQUIRES_USER_CONFIRMATION") == 0) {
783  } else if (xmlStrcmp(text, (const xmlChar*) "MICROSOFT_AZURE_WRITES_REQUIRE_FEATURE_LICENSE") == 0) {
785  } else if (xmlStrcmp(text, (const xmlChar*) "AWS_S3_WRITES_REQUIRE_FEATURE_LICENSE") == 0) {
787  } else if (xmlStrcmp(text, (const xmlChar*) "DATABASE_RUNNING_OUT_OF_SPACE") == 0) {
789  } else {
790  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_SYSTEM_FAILURE_TYPE_RECONCILE_TAPE_ENVIRONMENT_FAILED for safety.", text);
792  }
793 }
795  if (xmlStrcmp(text, (const xmlChar*) "ALLOW") == 0) {
797  } else if (xmlStrcmp(text, (const xmlChar*) "DISCOURAGED") == 0) {
799  } else if (xmlStrcmp(text, (const xmlChar*) "DISALLOW") == 0) {
801  } else {
802  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_UNAVAILABLE_MEDIA_USAGE_POLICY_ALLOW for safety.", text);
804  }
805 }
806 static ds3_versioning_level _match_ds3_versioning_level(const ds3_log* log, const xmlChar* text) {
807  if (xmlStrcmp(text, (const xmlChar*) "NONE") == 0) {
809  } else if (xmlStrcmp(text, (const xmlChar*) "KEEP_LATEST") == 0) {
811  } else {
812  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_VERSIONING_LEVEL_NONE for safety.", text);
814  }
815 }
816 static ds3_write_optimization _match_ds3_write_optimization(const ds3_log* log, const xmlChar* text) {
817  if (xmlStrcmp(text, (const xmlChar*) "CAPACITY") == 0) {
819  } else if (xmlStrcmp(text, (const xmlChar*) "PERFORMANCE") == 0) {
821  } else {
822  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_WRITE_OPTIMIZATION_CAPACITY for safety.", text);
824  }
825 }
827  if (xmlStrcmp(text, (const xmlChar*) "HIGH") == 0) {
829  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
831  } else if (xmlStrcmp(text, (const xmlChar*) "LOW") == 0) {
833  } else if (xmlStrcmp(text, (const xmlChar*) "NEVER_SELECT") == 0) {
835  } else {
836  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_WRITE_PREFERENCE_LEVEL_HIGH for safety.", text);
838  }
839 }
840 static ds3_pool_failure_type _match_ds3_pool_failure_type(const ds3_log* log, const xmlChar* text) {
841  if (xmlStrcmp(text, (const xmlChar*) "BLOB_READ_FAILED") == 0) {
843  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE") == 0) {
845  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_MISSING") == 0) {
847  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_FAILED") == 0) {
849  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
851  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) {
853  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE") == 0) {
855  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_DATA_INTEGRITY") == 0) {
857  } else if (xmlStrcmp(text, (const xmlChar*) "INSPECT_FAILED") == 0) {
859  } else if (xmlStrcmp(text, (const xmlChar*) "QUIESCED") == 0) {
861  } else if (xmlStrcmp(text, (const xmlChar*) "READ_FAILED") == 0) {
863  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY_FAILED") == 0) {
865  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_FAILED") == 0) {
867  } else {
868  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_FAILURE_TYPE_BLOB_READ_FAILED for safety.", text);
870  }
871 }
872 static ds3_pool_health _match_ds3_pool_health(const ds3_log* log, const xmlChar* text) {
873  if (xmlStrcmp(text, (const xmlChar*) "OK") == 0) {
874  return DS3_POOL_HEALTH_OK;
875  } else if (xmlStrcmp(text, (const xmlChar*) "DEGRADED") == 0) {
877  } else {
878  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_HEALTH_OK for safety.", text);
879  return DS3_POOL_HEALTH_OK;
880  }
881 }
882 static ds3_pool_state _match_ds3_pool_state(const ds3_log* log, const xmlChar* text) {
883  if (xmlStrcmp(text, (const xmlChar*) "BLANK") == 0) {
884  return DS3_POOL_STATE_BLANK;
885  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
886  return DS3_POOL_STATE_NORMAL;
887  } else if (xmlStrcmp(text, (const xmlChar*) "LOST") == 0) {
888  return DS3_POOL_STATE_LOST;
889  } else if (xmlStrcmp(text, (const xmlChar*) "FOREIGN") == 0) {
890  return DS3_POOL_STATE_FOREIGN;
891  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_PENDING") == 0) {
893  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_IN_PROGRESS") == 0) {
895  } else {
896  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_STATE_BLANK for safety.", text);
897  return DS3_POOL_STATE_BLANK;
898  }
899 }
900 static ds3_pool_type _match_ds3_pool_type(const ds3_log* log, const xmlChar* text) {
901  if (xmlStrcmp(text, (const xmlChar*) "NEARLINE") == 0) {
902  return DS3_POOL_TYPE_NEARLINE;
903  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE") == 0) {
904  return DS3_POOL_TYPE_ONLINE;
905  } else {
906  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_TYPE_NEARLINE for safety.", text);
907  return DS3_POOL_TYPE_NEARLINE;
908  }
909 }
911  if (xmlStrcmp(text, (const xmlChar*) "CANCEL") == 0) {
913  } else if (xmlStrcmp(text, (const xmlChar*) "ACCEPT_MOST_RECENT") == 0) {
915  } else if (xmlStrcmp(text, (const xmlChar*) "ACCEPT_EXISTING") == 0) {
917  } else {
918  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_IMPORT_CONFLICT_RESOLUTION_MODE_CANCEL for safety.", text);
920  }
921 }
922 static ds3_quiesced _match_ds3_quiesced(const ds3_log* log, const xmlChar* text) {
923  if (xmlStrcmp(text, (const xmlChar*) "NO") == 0) {
924  return DS3_QUIESCED_NO;
925  } else if (xmlStrcmp(text, (const xmlChar*) "PENDING") == 0) {
926  return DS3_QUIESCED_PENDING;
927  } else if (xmlStrcmp(text, (const xmlChar*) "YES") == 0) {
928  return DS3_QUIESCED_YES;
929  } else {
930  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_QUIESCED_NO for safety.", text);
931  return DS3_QUIESCED_NO;
932  }
933 }
934 static ds3_reserved_task_type _match_ds3_reserved_task_type(const ds3_log* log, const xmlChar* text) {
935  if (xmlStrcmp(text, (const xmlChar*) "ANY") == 0) {
937  } else if (xmlStrcmp(text, (const xmlChar*) "READ") == 0) {
939  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE") == 0) {
941  } else {
942  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_RESERVED_TASK_TYPE_ANY for safety.", text);
944  }
945 }
947  if (xmlStrcmp(text, (const xmlChar*) "SUPPORTED") == 0) {
949  } else if (xmlStrcmp(text, (const xmlChar*) "NOT_SUPPORTED") == 0) {
951  } else {
952  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_IMPORT_EXPORT_CONFIGURATION_SUPPORTED for safety.", text);
954  }
955 }
956 static ds3_tape_drive_state _match_ds3_tape_drive_state(const ds3_log* log, const xmlChar* text) {
957  if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
959  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
961  } else if (xmlStrcmp(text, (const xmlChar*) "ERROR") == 0) {
963  } else if (xmlStrcmp(text, (const xmlChar*) "NOT_COMPATIBLE_IN_PARTITION_DUE_TO_NEWER_TAPE_DRIVES") == 0) {
965  } else {
966  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_DRIVE_STATE_OFFLINE for safety.", text);
968  }
969 }
970 static ds3_tape_drive_type _match_ds3_tape_drive_type(const ds3_log* log, const xmlChar* text) {
971  if (xmlStrcmp(text, (const xmlChar*) "UNKNOWN") == 0) {
973  } else if (xmlStrcmp(text, (const xmlChar*) "LTO5") == 0) {
975  } else if (xmlStrcmp(text, (const xmlChar*) "LTO6") == 0) {
977  } else if (xmlStrcmp(text, (const xmlChar*) "LTO7") == 0) {
979  } else if (xmlStrcmp(text, (const xmlChar*) "LTO8") == 0) {
981  } else if (xmlStrcmp(text, (const xmlChar*) "TS1140") == 0) {
983  } else if (xmlStrcmp(text, (const xmlChar*) "TS1150") == 0) {
985  } else if (xmlStrcmp(text, (const xmlChar*) "TS1155") == 0) {
987  } else {
988  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_DRIVE_TYPE_UNKNOWN for safety.", text);
990  }
991 }
992 static ds3_tape_failure_type _match_ds3_tape_failure_type(const ds3_log* log, const xmlChar* text) {
993  if (xmlStrcmp(text, (const xmlChar*) "BAR_CODE_CHANGED") == 0) {
995  } else if (xmlStrcmp(text, (const xmlChar*) "BAR_CODE_DUPLICATE") == 0) {
997  } else if (xmlStrcmp(text, (const xmlChar*) "BLOB_READ_FAILED") == 0) {
999  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE") == 0) {
1001  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE_DUE_TO_READ_ONLY") == 0) {
1003  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_MISSING") == 0) {
1005  } else if (xmlStrcmp(text, (const xmlChar*) "DELAYED_OWNERSHIP_FAILURE") == 0) {
1007  } else if (xmlStrcmp(text, (const xmlChar*) "DRIVE_CLEAN_FAILED") == 0) {
1009  } else if (xmlStrcmp(text, (const xmlChar*) "DRIVE_CLEANED") == 0) {
1011  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_FAILED") == 0) {
1013  } else if (xmlStrcmp(text, (const xmlChar*) "GET_TAPE_INFORMATION_FAILED") == 0) {
1015  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
1017  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) {
1019  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE") == 0) {
1021  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_DATA_INTEGRITY") == 0) {
1023  } else if (xmlStrcmp(text, (const xmlChar*) "INSPECT_FAILED") == 0) {
1025  } else if (xmlStrcmp(text, (const xmlChar*) "READ_FAILED") == 0) {
1027  } else if (xmlStrcmp(text, (const xmlChar*) "REIMPORT_REQUIRED") == 0) {
1029  } else if (xmlStrcmp(text, (const xmlChar*) "SERIAL_NUMBER_MISMATCH") == 0) {
1031  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY_FAILED") == 0) {
1033  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_FAILED") == 0) {
1035  } else {
1036  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_FAILURE_TYPE_BAR_CODE_CHANGED for safety.", text);
1038  }
1039 }
1041  if (xmlStrcmp(text, (const xmlChar*) "CLEANING_TAPE_REQUIRED") == 0) {
1043  } else if (xmlStrcmp(text, (const xmlChar*) "DUPLICATE_TAPE_BAR_CODES_DETECTED") == 0) {
1045  } else if (xmlStrcmp(text, (const xmlChar*) "EJECT_STALLED_DUE_TO_OFFLINE_TAPES") == 0) {
1047  } else if (xmlStrcmp(text, (const xmlChar*) "MINIMUM_DRIVE_COUNT_NOT_MET") == 0) {
1049  } else if (xmlStrcmp(text, (const xmlChar*) "MOVE_FAILED") == 0) {
1051  } else if (xmlStrcmp(text, (const xmlChar*) "MOVE_FAILED_DUE_TO_PREPARE_TAPE_FOR_REMOVAL_FAILURE") == 0) {
1053  } else if (xmlStrcmp(text, (const xmlChar*) "NO_USABLE_DRIVES") == 0) {
1055  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE_STALLED_DUE_TO_NO_STORAGE_SLOTS") == 0) {
1057  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_IN_ERROR") == 0) {
1059  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_MISSING") == 0) {
1061  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_QUIESCED") == 0) {
1063  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_TYPE_MISMATCH") == 0) {
1065  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_EJECTION_BY_OPERATOR_REQUIRED") == 0) {
1067  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_MEDIA_TYPE_INCOMPATIBLE") == 0) {
1069  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_REMOVAL_UNEXPECTED") == 0) {
1071  } else {
1072  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_PARTITION_FAILURE_TYPE_CLEANING_TAPE_REQUIRED for safety.", text);
1074  }
1075 }
1076 static ds3_tape_partition_state _match_ds3_tape_partition_state(const ds3_log* log, const xmlChar* text) {
1077  if (xmlStrcmp(text, (const xmlChar*) "ONLINE") == 0) {
1079  } else if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
1081  } else if (xmlStrcmp(text, (const xmlChar*) "ERROR") == 0) {
1083  } else {
1084  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_PARTITION_STATE_ONLINE for safety.", text);
1086  }
1087 }
1088 static ds3_tape_state _match_ds3_tape_state(const ds3_log* log, const xmlChar* text) {
1089  if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
1090  return DS3_TAPE_STATE_NORMAL;
1091  } else if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
1092  return DS3_TAPE_STATE_OFFLINE;
1093  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE_PENDING") == 0) {
1095  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE_IN_PROGRESS") == 0) {
1097  } else if (xmlStrcmp(text, (const xmlChar*) "PENDING_INSPECTION") == 0) {
1099  } else if (xmlStrcmp(text, (const xmlChar*) "UNKNOWN") == 0) {
1100  return DS3_TAPE_STATE_UNKNOWN;
1101  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE") == 0) {
1103  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE_DUE_TO_READ_ONLY") == 0) {
1105  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_MISSING") == 0) {
1107  } else if (xmlStrcmp(text, (const xmlChar*) "LTFS_WITH_FOREIGN_DATA") == 0) {
1109  } else if (xmlStrcmp(text, (const xmlChar*) "RAW_IMPORT_PENDING") == 0) {
1111  } else if (xmlStrcmp(text, (const xmlChar*) "RAW_IMPORT_IN_PROGRESS") == 0) {
1113  } else if (xmlStrcmp(text, (const xmlChar*) "FOREIGN") == 0) {
1114  return DS3_TAPE_STATE_FOREIGN;
1115  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_PENDING") == 0) {
1117  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_IN_PROGRESS") == 0) {
1119  } else if (xmlStrcmp(text, (const xmlChar*) "INCOMPATIBLE") == 0) {
1121  } else if (xmlStrcmp(text, (const xmlChar*) "LOST") == 0) {
1122  return DS3_TAPE_STATE_LOST;
1123  } else if (xmlStrcmp(text, (const xmlChar*) "BAD") == 0) {
1124  return DS3_TAPE_STATE_BAD;
1125  } else if (xmlStrcmp(text, (const xmlChar*) "CANNOT_FORMAT_DUE_TO_WRITE_PROTECTION") == 0) {
1127  } else if (xmlStrcmp(text, (const xmlChar*) "SERIAL_NUMBER_MISMATCH") == 0) {
1129  } else if (xmlStrcmp(text, (const xmlChar*) "BAR_CODE_MISSING") == 0) {
1131  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_PENDING") == 0) {
1133  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_IN_PROGRESS") == 0) {
1135  } else if (xmlStrcmp(text, (const xmlChar*) "EJECT_TO_EE_IN_PROGRESS") == 0) {
1137  } else if (xmlStrcmp(text, (const xmlChar*) "EJECT_FROM_EE_PENDING") == 0) {
1139  } else if (xmlStrcmp(text, (const xmlChar*) "EJECTED") == 0) {
1140  return DS3_TAPE_STATE_EJECTED;
1141  } else {
1142  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_STATE_NORMAL for safety.", text);
1143  return DS3_TAPE_STATE_NORMAL;
1144  }
1145 }
1146 static ds3_tape_type _match_ds3_tape_type(const ds3_log* log, const xmlChar* text) {
1147  if (xmlStrcmp(text, (const xmlChar*) "LTO5") == 0) {
1148  return DS3_TAPE_TYPE_LTO5;
1149  } else if (xmlStrcmp(text, (const xmlChar*) "LTO6") == 0) {
1150  return DS3_TAPE_TYPE_LTO6;
1151  } else if (xmlStrcmp(text, (const xmlChar*) "LTO7") == 0) {
1152  return DS3_TAPE_TYPE_LTO7;
1153  } else if (xmlStrcmp(text, (const xmlChar*) "LTOM8") == 0) {
1154  return DS3_TAPE_TYPE_LTOM8;
1155  } else if (xmlStrcmp(text, (const xmlChar*) "LTO8") == 0) {
1156  return DS3_TAPE_TYPE_LTO8;
1157  } else if (xmlStrcmp(text, (const xmlChar*) "LTO_CLEANING_TAPE") == 0) {
1159  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JC") == 0) {
1160  return DS3_TAPE_TYPE_TS_JC;
1161  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JY") == 0) {
1162  return DS3_TAPE_TYPE_TS_JY;
1163  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JK") == 0) {
1164  return DS3_TAPE_TYPE_TS_JK;
1165  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JD") == 0) {
1166  return DS3_TAPE_TYPE_TS_JD;
1167  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JZ") == 0) {
1168  return DS3_TAPE_TYPE_TS_JZ;
1169  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JL") == 0) {
1170  return DS3_TAPE_TYPE_TS_JL;
1171  } else if (xmlStrcmp(text, (const xmlChar*) "TS_CLEANING_TAPE") == 0) {
1173  } else if (xmlStrcmp(text, (const xmlChar*) "UNKNOWN") == 0) {
1174  return DS3_TAPE_TYPE_UNKNOWN;
1175  } else if (xmlStrcmp(text, (const xmlChar*) "FORBIDDEN") == 0) {
1176  return DS3_TAPE_TYPE_FORBIDDEN;
1177  } else {
1178  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_TYPE_LTO5 for safety.", text);
1179  return DS3_TAPE_TYPE_LTO5;
1180  }
1181 }
1183  if (xmlStrcmp(text, (const xmlChar*) "NONE") == 0) {
1185  } else if (xmlStrcmp(text, (const xmlChar*) "USERS") == 0) {
1187  } else {
1188  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TARGET_ACCESS_CONTROL_REPLICATION_NONE for safety.", text);
1190  }
1191 }
1192 static ds3_target_failure_type _match_ds3_target_failure_type(const ds3_log* log, const xmlChar* text) {
1193  if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
1195  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) {
1197  } else if (xmlStrcmp(text, (const xmlChar*) "NOT_ONLINE") == 0) {
1199  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_FAILED") == 0) {
1201  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_INITIATE_FAILED") == 0) {
1203  } else if (xmlStrcmp(text, (const xmlChar*) "READ_FAILED") == 0) {
1205  } else if (xmlStrcmp(text, (const xmlChar*) "READ_INITIATE_FAILED") == 0) {
1207  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY_FAILED") == 0) {
1209  } else {
1210  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TARGET_FAILURE_TYPE_IMPORT_FAILED for safety.", text);
1212  }
1213 }
1215  if (xmlStrcmp(text, (const xmlChar*) "MINIMUM_LATENCY") == 0) {
1217  } else if (xmlStrcmp(text, (const xmlChar*) "AFTER_ONLINE_POOL") == 0) {
1219  } else if (xmlStrcmp(text, (const xmlChar*) "AFTER_NEARLINE_POOL") == 0) {
1221  } else if (xmlStrcmp(text, (const xmlChar*) "AFTER_NON_EJECTABLE_TAPE") == 0) {
1223  } else if (xmlStrcmp(text, (const xmlChar*) "LAST_RESORT") == 0) {
1225  } else if (xmlStrcmp(text, (const xmlChar*) "NEVER") == 0) {
1227  } else {
1228  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TARGET_READ_PREFERENCE_TYPE_MINIMUM_LATENCY for safety.", text);
1230  }
1231 }
1232 static ds3_target_state _match_ds3_target_state(const ds3_log* log, const xmlChar* text) {
1233  if (xmlStrcmp(text, (const xmlChar*) "ONLINE") == 0) {
1234  return DS3_TARGET_STATE_ONLINE;
1235  } else if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
1236  return DS3_TARGET_STATE_OFFLINE;
1237  } else {
1238  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TARGET_STATE_ONLINE for safety.", text);
1239  return DS3_TARGET_STATE_ONLINE;
1240  }
1241 }
1242 static ds3_blob_store_task_state _match_ds3_blob_store_task_state(const ds3_log* log, const xmlChar* text) {
1243  if (xmlStrcmp(text, (const xmlChar*) "NOT_READY") == 0) {
1245  } else if (xmlStrcmp(text, (const xmlChar*) "READY") == 0) {
1247  } else if (xmlStrcmp(text, (const xmlChar*) "PENDING_EXECUTION") == 0) {
1249  } else if (xmlStrcmp(text, (const xmlChar*) "IN_PROGRESS") == 0) {
1251  } else if (xmlStrcmp(text, (const xmlChar*) "COMPLETED") == 0) {
1253  } else {
1254  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_BLOB_STORE_TASK_STATE_NOT_READY for safety.", text);
1256  }
1257 }
1258 static ds3_cache_entry_state _match_ds3_cache_entry_state(const ds3_log* log, const xmlChar* text) {
1259  if (xmlStrcmp(text, (const xmlChar*) "ALLOCATED") == 0) {
1261  } else if (xmlStrcmp(text, (const xmlChar*) "IN_CACHE") == 0) {
1263  } else {
1264  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_CACHE_ENTRY_STATE_ALLOCATED for safety.", text);
1266  }
1267 }
1268 static ds3_job_status _match_ds3_job_status(const ds3_log* log, const xmlChar* text) {
1269  if (xmlStrcmp(text, (const xmlChar*) "IN_PROGRESS") == 0) {
1271  } else if (xmlStrcmp(text, (const xmlChar*) "COMPLETED") == 0) {
1272  return DS3_JOB_STATUS_COMPLETED;
1273  } else if (xmlStrcmp(text, (const xmlChar*) "CANCELED") == 0) {
1274  return DS3_JOB_STATUS_CANCELED;
1275  } else {
1276  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_STATUS_IN_PROGRESS for safety.", text);
1278  }
1279 }
1281  if (xmlStrcmp(text, (const xmlChar*) "CRITICAL") == 0) {
1283  } else if (xmlStrcmp(text, (const xmlChar*) "LOW") == 0) {
1285  } else if (xmlStrcmp(text, (const xmlChar*) "NEAR_LOW") == 0) {
1287  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
1289  } else {
1290  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATABASE_PHYSICAL_SPACE_STATE_CRITICAL for safety.", text);
1292  }
1293 }
1295  if (xmlStrcmp(text, (const xmlChar*) "DEFAULT") == 0) {
1297  } else if (xmlStrcmp(text, (const xmlChar*) "JSON") == 0) {
1299  } else if (xmlStrcmp(text, (const xmlChar*) "XML") == 0) {
1301  } else {
1302  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_HTTP_RESPONSE_FORMAT_TYPE_DEFAULT for safety.", text);
1304  }
1305 }
1306 static ds3_request_type _match_ds3_request_type(const ds3_log* log, const xmlChar* text) {
1307  if (xmlStrcmp(text, (const xmlChar*) "DELETE") == 0) {
1308  return DS3_REQUEST_TYPE_DELETE;
1309  } else if (xmlStrcmp(text, (const xmlChar*) "GET") == 0) {
1310  return DS3_REQUEST_TYPE_GET;
1311  } else if (xmlStrcmp(text, (const xmlChar*) "HEAD") == 0) {
1312  return DS3_REQUEST_TYPE_HEAD;
1313  } else if (xmlStrcmp(text, (const xmlChar*) "POST") == 0) {
1314  return DS3_REQUEST_TYPE_POST;
1315  } else if (xmlStrcmp(text, (const xmlChar*) "PUT") == 0) {
1316  return DS3_REQUEST_TYPE_PUT;
1317  } else {
1318  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_REQUEST_TYPE_DELETE for safety.", text);
1319  return DS3_REQUEST_TYPE_DELETE;
1320  }
1321 }
1323  if (xmlStrcmp(text, (const xmlChar*) "CONCAT_LOWERCASE") == 0) {
1325  } else if (xmlStrcmp(text, (const xmlChar*) "CONSTANT") == 0) {
1327  } else if (xmlStrcmp(text, (const xmlChar*) "UNDERSCORED") == 0) {
1329  } else if (xmlStrcmp(text, (const xmlChar*) "CAMEL_CASE_WITH_FIRST_LETTER_UPPERCASE") == 0) {
1331  } else if (xmlStrcmp(text, (const xmlChar*) "CAMEL_CASE_WITH_FIRST_LETTER_LOWERCASE") == 0) {
1333  } else {
1334  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_NAMING_CONVENTION_TYPE_CONCAT_LOWERCASE for safety.", text);
1336  }
1337 }
1338 static ds3_checksum_type _match_ds3_checksum_type(const ds3_log* log, const xmlChar* text) {
1339  if (xmlStrcmp(text, (const xmlChar*) "CRC_32") == 0) {
1340  return DS3_CHECKSUM_TYPE_CRC_32;
1341  } else if (xmlStrcmp(text, (const xmlChar*) "CRC_32C") == 0) {
1343  } else if (xmlStrcmp(text, (const xmlChar*) "MD5") == 0) {
1344  return DS3_CHECKSUM_TYPE_MD5;
1345  } else if (xmlStrcmp(text, (const xmlChar*) "SHA_256") == 0) {
1347  } else if (xmlStrcmp(text, (const xmlChar*) "SHA_512") == 0) {
1349  } else {
1350  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_CHECKSUM_TYPE_CRC_32 for safety.", text);
1351  return DS3_CHECKSUM_TYPE_CRC_32;
1352  }
1353 }
1354 
1355 //************ STRUCT PARSERS **************
1356 static ds3_error* _parse_ds3_azure_data_replication_rule_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_data_replication_rule_response** _response) {
1358  xmlNodePtr child_node;
1359  ds3_error* error = NULL;
1360 
1361  response = g_new0(ds3_azure_data_replication_rule_response, 1);
1362 
1363 
1364  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1365  if (element_equal(child_node, "DataPolicyId")) {
1366  response->data_policy_id = xml_get_string(doc, child_node);
1367  } else if (element_equal(child_node, "Id")) {
1368  response->id = xml_get_string(doc, child_node);
1369  } else if (element_equal(child_node, "MaxBlobPartSizeInBytes")) {
1370  response->max_blob_part_size_in_bytes = xml_get_uint64(doc, child_node);
1371  } else if (element_equal(child_node, "ReplicateDeletes")) {
1372  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
1373  } else if (element_equal(child_node, "State")) {
1374  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1375  if (text == NULL) {
1376  continue;
1377  }
1378  response->state = _match_ds3_data_placement_rule_state(client->log, text);
1379  xmlFree(text);
1380  } else if (element_equal(child_node, "TargetId")) {
1381  response->target_id = xml_get_string(doc, child_node);
1382  } else if (element_equal(child_node, "Type")) {
1383  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1384  if (text == NULL) {
1385  continue;
1386  }
1387  response->type = _match_ds3_data_replication_rule_type(client->log, text);
1388  xmlFree(text);
1389  } else {
1390  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_data_replication_rule_response [%s]\n", child_node->name, root->name);
1391  }
1392 
1393  if (error != NULL) {
1394  break;
1395  }
1396 
1397  }
1398 
1399 
1400  *_response = response;
1401 
1402  return error;
1403 }
1404 
1405 static ds3_error* _parse_ds3_blob_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_blob_response** _response) {
1406  ds3_blob_response* response;
1407  xmlNodePtr child_node;
1408  ds3_error* error = NULL;
1409 
1410  response = g_new0(ds3_blob_response, 1);
1411 
1412 
1413  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1414  if (element_equal(child_node, "ByteOffset")) {
1415  response->byte_offset = xml_get_uint64(doc, child_node);
1416  } else if (element_equal(child_node, "Checksum")) {
1417  response->checksum = xml_get_string(doc, child_node);
1418  } else if (element_equal(child_node, "ChecksumType")) {
1419  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1420  if (text == NULL) {
1421  continue;
1422  }
1423  response->checksum_type = _match_ds3_checksum_type(client->log, text);
1424  xmlFree(text);
1425  } else if (element_equal(child_node, "Id")) {
1426  response->id = xml_get_string(doc, child_node);
1427  } else if (element_equal(child_node, "Length")) {
1428  response->length = xml_get_uint64(doc, child_node);
1429  } else if (element_equal(child_node, "ObjectId")) {
1430  response->object_id = xml_get_string(doc, child_node);
1431  } else {
1432  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_blob_response [%s]\n", child_node->name, root->name);
1433  }
1434 
1435  if (error != NULL) {
1436  break;
1437  }
1438 
1439  }
1440 
1441 
1442  *_response = response;
1443 
1444  return error;
1445 }
1446 
1447 static ds3_error* _parse_ds3_bucket_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_response** _response) {
1448  ds3_bucket_response* response;
1449  xmlNodePtr child_node;
1450  ds3_error* error = NULL;
1451 
1452  response = g_new0(ds3_bucket_response, 1);
1453 
1454 
1455  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1456  if (element_equal(child_node, "CreationDate")) {
1457  response->creation_date = xml_get_string(doc, child_node);
1458  } else if (element_equal(child_node, "DataPolicyId")) {
1459  response->data_policy_id = xml_get_string(doc, child_node);
1460  } else if (element_equal(child_node, "Empty")) {
1461  response->empty = xml_get_bool(client->log, doc, child_node);
1462  } else if (element_equal(child_node, "Id")) {
1463  response->id = xml_get_string(doc, child_node);
1464  } else if (element_equal(child_node, "LastPreferredChunkSizeInBytes")) {
1465  response->last_preferred_chunk_size_in_bytes = xml_get_uint64(doc, child_node);
1466  } else if (element_equal(child_node, "LogicalUsedCapacity")) {
1467  response->logical_used_capacity = xml_get_uint64(doc, child_node);
1468  } else if (element_equal(child_node, "Name")) {
1469  response->name = xml_get_string(doc, child_node);
1470  } else if (element_equal(child_node, "UserId")) {
1471  response->user_id = xml_get_string(doc, child_node);
1472  } else {
1473  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_response [%s]\n", child_node->name, root->name);
1474  }
1475 
1476  if (error != NULL) {
1477  break;
1478  }
1479 
1480  }
1481 
1482 
1483  *_response = response;
1484 
1485  return error;
1486 }
1487 
1488 static ds3_error* _parse_ds3_bucket_acl_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_acl_response** _response) {
1489  ds3_bucket_acl_response* response;
1490  xmlNodePtr child_node;
1491  ds3_error* error = NULL;
1492 
1493  response = g_new0(ds3_bucket_acl_response, 1);
1494 
1495 
1496  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1497  if (element_equal(child_node, "BucketId")) {
1498  response->bucket_id = xml_get_string(doc, child_node);
1499  } else if (element_equal(child_node, "GroupId")) {
1500  response->group_id = xml_get_string(doc, child_node);
1501  } else if (element_equal(child_node, "Id")) {
1502  response->id = xml_get_string(doc, child_node);
1503  } else if (element_equal(child_node, "Permission")) {
1504  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1505  if (text == NULL) {
1506  continue;
1507  }
1508  response->permission = _match_ds3_bucket_acl_permission(client->log, text);
1509  xmlFree(text);
1510  } else if (element_equal(child_node, "UserId")) {
1511  response->user_id = xml_get_string(doc, child_node);
1512  } else {
1513  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_acl_response [%s]\n", child_node->name, root->name);
1514  }
1515 
1516  if (error != NULL) {
1517  break;
1518  }
1519 
1520  }
1521 
1522 
1523  *_response = response;
1524 
1525  return error;
1526 }
1527 
1528 static ds3_error* _parse_ds3_canceled_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_canceled_job_response** _response) {
1529  ds3_canceled_job_response* response;
1530  xmlNodePtr child_node;
1531  ds3_error* error = NULL;
1532 
1533  response = g_new0(ds3_canceled_job_response, 1);
1534 
1535 
1536  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1537  if (element_equal(child_node, "BucketId")) {
1538  response->bucket_id = xml_get_string(doc, child_node);
1539  } else if (element_equal(child_node, "CachedSizeInBytes")) {
1540  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
1541  } else if (element_equal(child_node, "CanceledDueToTimeout")) {
1542  response->canceled_due_to_timeout = xml_get_bool(client->log, doc, child_node);
1543  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
1544  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1545  if (text == NULL) {
1546  continue;
1547  }
1549  xmlFree(text);
1550  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
1551  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
1552  } else if (element_equal(child_node, "CreatedAt")) {
1553  response->created_at = xml_get_string(doc, child_node);
1554  } else if (element_equal(child_node, "DateCanceled")) {
1555  response->date_canceled = xml_get_string(doc, child_node);
1556  } else if (element_equal(child_node, "ErrorMessage")) {
1557  response->error_message = xml_get_string(doc, child_node);
1558  } else if (element_equal(child_node, "Id")) {
1559  response->id = xml_get_string(doc, child_node);
1560  } else if (element_equal(child_node, "Naked")) {
1561  response->naked = xml_get_bool(client->log, doc, child_node);
1562  } else if (element_equal(child_node, "Name")) {
1563  response->name = xml_get_string(doc, child_node);
1564  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
1565  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
1566  } else if (element_equal(child_node, "Priority")) {
1567  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1568  if (text == NULL) {
1569  continue;
1570  }
1571  response->priority = _match_ds3_priority(client->log, text);
1572  xmlFree(text);
1573  } else if (element_equal(child_node, "Rechunked")) {
1574  response->rechunked = xml_get_string(doc, child_node);
1575  } else if (element_equal(child_node, "RequestType")) {
1576  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1577  if (text == NULL) {
1578  continue;
1579  }
1580  response->request_type = _match_ds3_job_request_type(client->log, text);
1581  xmlFree(text);
1582  } else if (element_equal(child_node, "Truncated")) {
1583  response->truncated = xml_get_bool(client->log, doc, child_node);
1584  } else if (element_equal(child_node, "UserId")) {
1585  response->user_id = xml_get_string(doc, child_node);
1586  } else {
1587  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_canceled_job_response [%s]\n", child_node->name, root->name);
1588  }
1589 
1590  if (error != NULL) {
1591  break;
1592  }
1593 
1594  }
1595 
1596 
1597  *_response = response;
1598 
1599  return error;
1600 }
1601 
1602 static ds3_error* _parse_ds3_completed_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_completed_job_response** _response) {
1603  ds3_completed_job_response* response;
1604  xmlNodePtr child_node;
1605  ds3_error* error = NULL;
1606 
1607  response = g_new0(ds3_completed_job_response, 1);
1608 
1609 
1610  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1611  if (element_equal(child_node, "BucketId")) {
1612  response->bucket_id = xml_get_string(doc, child_node);
1613  } else if (element_equal(child_node, "CachedSizeInBytes")) {
1614  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
1615  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
1616  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1617  if (text == NULL) {
1618  continue;
1619  }
1621  xmlFree(text);
1622  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
1623  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
1624  } else if (element_equal(child_node, "CreatedAt")) {
1625  response->created_at = xml_get_string(doc, child_node);
1626  } else if (element_equal(child_node, "DateCompleted")) {
1627  response->date_completed = xml_get_string(doc, child_node);
1628  } else if (element_equal(child_node, "ErrorMessage")) {
1629  response->error_message = xml_get_string(doc, child_node);
1630  } else if (element_equal(child_node, "Id")) {
1631  response->id = xml_get_string(doc, child_node);
1632  } else if (element_equal(child_node, "Naked")) {
1633  response->naked = xml_get_bool(client->log, doc, child_node);
1634  } else if (element_equal(child_node, "Name")) {
1635  response->name = xml_get_string(doc, child_node);
1636  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
1637  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
1638  } else if (element_equal(child_node, "Priority")) {
1639  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1640  if (text == NULL) {
1641  continue;
1642  }
1643  response->priority = _match_ds3_priority(client->log, text);
1644  xmlFree(text);
1645  } else if (element_equal(child_node, "Rechunked")) {
1646  response->rechunked = xml_get_string(doc, child_node);
1647  } else if (element_equal(child_node, "RequestType")) {
1648  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1649  if (text == NULL) {
1650  continue;
1651  }
1652  response->request_type = _match_ds3_job_request_type(client->log, text);
1653  xmlFree(text);
1654  } else if (element_equal(child_node, "Truncated")) {
1655  response->truncated = xml_get_bool(client->log, doc, child_node);
1656  } else if (element_equal(child_node, "UserId")) {
1657  response->user_id = xml_get_string(doc, child_node);
1658  } else {
1659  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_completed_job_response [%s]\n", child_node->name, root->name);
1660  }
1661 
1662  if (error != NULL) {
1663  break;
1664  }
1665 
1666  }
1667 
1668 
1669  *_response = response;
1670 
1671  return error;
1672 }
1673 
1674 static ds3_error* _parse_ds3_data_persistence_rule_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_persistence_rule_response** _response) {
1676  xmlNodePtr child_node;
1677  ds3_error* error = NULL;
1678 
1679  response = g_new0(ds3_data_persistence_rule_response, 1);
1680 
1681 
1682  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1683  if (element_equal(child_node, "DataPolicyId")) {
1684  response->data_policy_id = xml_get_string(doc, child_node);
1685  } else if (element_equal(child_node, "Id")) {
1686  response->id = xml_get_string(doc, child_node);
1687  } else if (element_equal(child_node, "IsolationLevel")) {
1688  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1689  if (text == NULL) {
1690  continue;
1691  }
1692  response->isolation_level = _match_ds3_data_isolation_level(client->log, text);
1693  xmlFree(text);
1694  } else if (element_equal(child_node, "MinimumDaysToRetain")) {
1695  response->minimum_days_to_retain = xml_get_uint16(doc, child_node);
1696  } else if (element_equal(child_node, "State")) {
1697  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1698  if (text == NULL) {
1699  continue;
1700  }
1701  response->state = _match_ds3_data_placement_rule_state(client->log, text);
1702  xmlFree(text);
1703  } else if (element_equal(child_node, "StorageDomainId")) {
1704  response->storage_domain_id = xml_get_string(doc, child_node);
1705  } else if (element_equal(child_node, "Type")) {
1706  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1707  if (text == NULL) {
1708  continue;
1709  }
1710  response->type = _match_ds3_data_persistence_rule_type(client->log, text);
1711  xmlFree(text);
1712  } else {
1713  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_persistence_rule_response [%s]\n", child_node->name, root->name);
1714  }
1715 
1716  if (error != NULL) {
1717  break;
1718  }
1719 
1720  }
1721 
1722 
1723  *_response = response;
1724 
1725  return error;
1726 }
1727 
1728 static ds3_error* _parse_ds3_data_policy_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_policy_response** _response) {
1729  ds3_data_policy_response* response;
1730  xmlNodePtr child_node;
1731  ds3_error* error = NULL;
1732 
1733  response = g_new0(ds3_data_policy_response, 1);
1734 
1735 
1736  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1737  if (element_equal(child_node, "AlwaysForcePutJobCreation")) {
1738  response->always_force_put_job_creation = xml_get_bool(client->log, doc, child_node);
1739  } else if (element_equal(child_node, "AlwaysMinimizeSpanningAcrossMedia")) {
1740  response->always_minimize_spanning_across_media = xml_get_bool(client->log, doc, child_node);
1741  } else if (element_equal(child_node, "AlwaysReplicateDeletes")) {
1742  response->always_replicate_deletes = xml_get_bool(client->log, doc, child_node);
1743  } else if (element_equal(child_node, "BlobbingEnabled")) {
1744  response->blobbing_enabled = xml_get_bool(client->log, doc, child_node);
1745  } else if (element_equal(child_node, "ChecksumType")) {
1746  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1747  if (text == NULL) {
1748  continue;
1749  }
1750  response->checksum_type = _match_ds3_checksum_type(client->log, text);
1751  xmlFree(text);
1752  } else if (element_equal(child_node, "CreationDate")) {
1753  response->creation_date = xml_get_string(doc, child_node);
1754  } else if (element_equal(child_node, "DefaultBlobSize")) {
1755  response->default_blob_size = xml_get_uint64(doc, child_node);
1756  } else if (element_equal(child_node, "DefaultGetJobPriority")) {
1757  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1758  if (text == NULL) {
1759  continue;
1760  }
1761  response->default_get_job_priority = _match_ds3_priority(client->log, text);
1762  xmlFree(text);
1763  } else if (element_equal(child_node, "DefaultPutJobPriority")) {
1764  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1765  if (text == NULL) {
1766  continue;
1767  }
1768  response->default_put_job_priority = _match_ds3_priority(client->log, text);
1769  xmlFree(text);
1770  } else if (element_equal(child_node, "DefaultVerifyAfterWrite")) {
1771  response->default_verify_after_write = xml_get_bool(client->log, doc, child_node);
1772  } else if (element_equal(child_node, "DefaultVerifyJobPriority")) {
1773  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1774  if (text == NULL) {
1775  continue;
1776  }
1777  response->default_verify_job_priority = _match_ds3_priority(client->log, text);
1778  xmlFree(text);
1779  } else if (element_equal(child_node, "EndToEndCrcRequired")) {
1780  response->end_to_end_crc_required = xml_get_bool(client->log, doc, child_node);
1781  } else if (element_equal(child_node, "Id")) {
1782  response->id = xml_get_string(doc, child_node);
1783  } else if (element_equal(child_node, "LtfsObjectNamingAllowed")) {
1784  response->ltfs_object_naming_allowed = xml_get_bool(client->log, doc, child_node);
1785  } else if (element_equal(child_node, "Name")) {
1786  response->name = xml_get_string(doc, child_node);
1787  } else if (element_equal(child_node, "RebuildPriority")) {
1788  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1789  if (text == NULL) {
1790  continue;
1791  }
1792  response->rebuild_priority = _match_ds3_priority(client->log, text);
1793  xmlFree(text);
1794  } else if (element_equal(child_node, "Versioning")) {
1795  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1796  if (text == NULL) {
1797  continue;
1798  }
1799  response->versioning = _match_ds3_versioning_level(client->log, text);
1800  xmlFree(text);
1801  } else {
1802  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_response [%s]\n", child_node->name, root->name);
1803  }
1804 
1805  if (error != NULL) {
1806  break;
1807  }
1808 
1809  }
1810 
1811 
1812  *_response = response;
1813 
1814  return error;
1815 }
1816 
1817 static ds3_error* _parse_ds3_data_policy_acl_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_policy_acl_response** _response) {
1818  ds3_data_policy_acl_response* response;
1819  xmlNodePtr child_node;
1820  ds3_error* error = NULL;
1821 
1822  response = g_new0(ds3_data_policy_acl_response, 1);
1823 
1824 
1825  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1826  if (element_equal(child_node, "DataPolicyId")) {
1827  response->data_policy_id = xml_get_string(doc, child_node);
1828  } else if (element_equal(child_node, "GroupId")) {
1829  response->group_id = xml_get_string(doc, child_node);
1830  } else if (element_equal(child_node, "Id")) {
1831  response->id = xml_get_string(doc, child_node);
1832  } else if (element_equal(child_node, "UserId")) {
1833  response->user_id = xml_get_string(doc, child_node);
1834  } else {
1835  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_acl_response [%s]\n", child_node->name, root->name);
1836  }
1837 
1838  if (error != NULL) {
1839  break;
1840  }
1841 
1842  }
1843 
1844 
1845  *_response = response;
1846 
1847  return error;
1848 }
1849 
1850 static ds3_error* _parse_ds3_degraded_blob_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_degraded_blob_response** _response) {
1851  ds3_degraded_blob_response* response;
1852  xmlNodePtr child_node;
1853  ds3_error* error = NULL;
1854 
1855  response = g_new0(ds3_degraded_blob_response, 1);
1856 
1857 
1858  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1859  if (element_equal(child_node, "AzureReplicationRuleId")) {
1860  response->azure_replication_rule_id = xml_get_string(doc, child_node);
1861  } else if (element_equal(child_node, "BlobId")) {
1862  response->blob_id = xml_get_string(doc, child_node);
1863  } else if (element_equal(child_node, "BucketId")) {
1864  response->bucket_id = xml_get_string(doc, child_node);
1865  } else if (element_equal(child_node, "Ds3ReplicationRuleId")) {
1866  response->ds3_replication_rule_id = xml_get_string(doc, child_node);
1867  } else if (element_equal(child_node, "Id")) {
1868  response->id = xml_get_string(doc, child_node);
1869  } else if (element_equal(child_node, "PersistenceRuleId")) {
1870  response->persistence_rule_id = xml_get_string(doc, child_node);
1871  } else if (element_equal(child_node, "S3ReplicationRuleId")) {
1872  response->s3_replication_rule_id = xml_get_string(doc, child_node);
1873  } else {
1874  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_degraded_blob_response [%s]\n", child_node->name, root->name);
1875  }
1876 
1877  if (error != NULL) {
1878  break;
1879  }
1880 
1881  }
1882 
1883 
1884  *_response = response;
1885 
1886  return error;
1887 }
1888 
1889 static ds3_error* _parse_ds3_data_replication_rule_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_replication_rule_response** _response) {
1891  xmlNodePtr child_node;
1892  ds3_error* error = NULL;
1893 
1894  response = g_new0(ds3_data_replication_rule_response, 1);
1895 
1896 
1897  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1898  if (element_equal(child_node, "DataPolicyId")) {
1899  response->data_policy_id = xml_get_string(doc, child_node);
1900  } else if (element_equal(child_node, "Id")) {
1901  response->id = xml_get_string(doc, child_node);
1902  } else if (element_equal(child_node, "ReplicateDeletes")) {
1903  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
1904  } else if (element_equal(child_node, "State")) {
1905  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1906  if (text == NULL) {
1907  continue;
1908  }
1909  response->state = _match_ds3_data_placement_rule_state(client->log, text);
1910  xmlFree(text);
1911  } else if (element_equal(child_node, "TargetDataPolicy")) {
1912  response->target_data_policy = xml_get_string(doc, child_node);
1913  } else if (element_equal(child_node, "TargetId")) {
1914  response->target_id = xml_get_string(doc, child_node);
1915  } else if (element_equal(child_node, "Type")) {
1916  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1917  if (text == NULL) {
1918  continue;
1919  }
1920  response->type = _match_ds3_data_replication_rule_type(client->log, text);
1921  xmlFree(text);
1922  } else {
1923  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_replication_rule_response [%s]\n", child_node->name, root->name);
1924  }
1925 
1926  if (error != NULL) {
1927  break;
1928  }
1929 
1930  }
1931 
1932 
1933  *_response = response;
1934 
1935  return error;
1936 }
1937 
1938 static ds3_error* _parse_ds3_feature_key_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_feature_key_response** _response) {
1939  ds3_feature_key_response* response;
1940  xmlNodePtr child_node;
1941  ds3_error* error = NULL;
1942 
1943  response = g_new0(ds3_feature_key_response, 1);
1944 
1945 
1946  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1947  if (element_equal(child_node, "CurrentValue")) {
1948  response->current_value = xml_get_uint64(doc, child_node);
1949  } else if (element_equal(child_node, "ErrorMessage")) {
1950  response->error_message = xml_get_string(doc, child_node);
1951  } else if (element_equal(child_node, "ExpirationDate")) {
1952  response->expiration_date = xml_get_string(doc, child_node);
1953  } else if (element_equal(child_node, "Id")) {
1954  response->id = xml_get_string(doc, child_node);
1955  } else if (element_equal(child_node, "Key")) {
1956  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1957  if (text == NULL) {
1958  continue;
1959  }
1960  response->key = _match_ds3_feature_key_type(client->log, text);
1961  xmlFree(text);
1962  } else if (element_equal(child_node, "LimitValue")) {
1963  response->limit_value = xml_get_uint64(doc, child_node);
1964  } else {
1965  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_feature_key_response [%s]\n", child_node->name, root->name);
1966  }
1967 
1968  if (error != NULL) {
1969  break;
1970  }
1971 
1972  }
1973 
1974 
1975  *_response = response;
1976 
1977  return error;
1978 }
1979 
1980 static ds3_error* _parse_ds3_group_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_group_response** _response) {
1981  ds3_group_response* response;
1982  xmlNodePtr child_node;
1983  ds3_error* error = NULL;
1984 
1985  response = g_new0(ds3_group_response, 1);
1986 
1987 
1988  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1989  if (element_equal(child_node, "BuiltIn")) {
1990  response->built_in = xml_get_bool(client->log, doc, child_node);
1991  } else if (element_equal(child_node, "Id")) {
1992  response->id = xml_get_string(doc, child_node);
1993  } else if (element_equal(child_node, "Name")) {
1994  response->name = xml_get_string(doc, child_node);
1995  } else {
1996  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_response [%s]\n", child_node->name, root->name);
1997  }
1998 
1999  if (error != NULL) {
2000  break;
2001  }
2002 
2003  }
2004 
2005 
2006  *_response = response;
2007 
2008  return error;
2009 }
2010 
2011 static ds3_error* _parse_ds3_group_member_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_group_member_response** _response) {
2012  ds3_group_member_response* response;
2013  xmlNodePtr child_node;
2014  ds3_error* error = NULL;
2015 
2016  response = g_new0(ds3_group_member_response, 1);
2017 
2018 
2019  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2020  if (element_equal(child_node, "GroupId")) {
2021  response->group_id = xml_get_string(doc, child_node);
2022  } else if (element_equal(child_node, "Id")) {
2023  response->id = xml_get_string(doc, child_node);
2024  } else if (element_equal(child_node, "MemberGroupId")) {
2025  response->member_group_id = xml_get_string(doc, child_node);
2026  } else if (element_equal(child_node, "MemberUserId")) {
2027  response->member_user_id = xml_get_string(doc, child_node);
2028  } else {
2029  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_member_response [%s]\n", child_node->name, root->name);
2030  }
2031 
2032  if (error != NULL) {
2033  break;
2034  }
2035 
2036  }
2037 
2038 
2039  *_response = response;
2040 
2041  return error;
2042 }
2043 
2044 static ds3_error* _parse_ds3_active_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_active_job_response** _response) {
2045  ds3_active_job_response* response;
2046  xmlNodePtr child_node;
2047  ds3_error* error = NULL;
2048 
2049  response = g_new0(ds3_active_job_response, 1);
2050 
2051 
2052  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2053  if (element_equal(child_node, "Aggregating")) {
2054  response->aggregating = xml_get_bool(client->log, doc, child_node);
2055  } else if (element_equal(child_node, "BucketId")) {
2056  response->bucket_id = xml_get_string(doc, child_node);
2057  } else if (element_equal(child_node, "CachedSizeInBytes")) {
2058  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
2059  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
2060  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2061  if (text == NULL) {
2062  continue;
2063  }
2065  xmlFree(text);
2066  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
2067  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
2068  } else if (element_equal(child_node, "CreatedAt")) {
2069  response->created_at = xml_get_string(doc, child_node);
2070  } else if (element_equal(child_node, "DeadJobCleanupAllowed")) {
2071  response->dead_job_cleanup_allowed = xml_get_bool(client->log, doc, child_node);
2072  } else if (element_equal(child_node, "ErrorMessage")) {
2073  response->error_message = xml_get_string(doc, child_node);
2074  } else if (element_equal(child_node, "Id")) {
2075  response->id = xml_get_string(doc, child_node);
2076  } else if (element_equal(child_node, "ImplicitJobIdResolution")) {
2077  response->implicit_job_id_resolution = xml_get_bool(client->log, doc, child_node);
2078  } else if (element_equal(child_node, "MinimizeSpanningAcrossMedia")) {
2079  response->minimize_spanning_across_media = xml_get_bool(client->log, doc, child_node);
2080  } else if (element_equal(child_node, "Naked")) {
2081  response->naked = xml_get_bool(client->log, doc, child_node);
2082  } else if (element_equal(child_node, "Name")) {
2083  response->name = xml_get_string(doc, child_node);
2084  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
2085  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
2086  } else if (element_equal(child_node, "Priority")) {
2087  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2088  if (text == NULL) {
2089  continue;
2090  }
2091  response->priority = _match_ds3_priority(client->log, text);
2092  xmlFree(text);
2093  } else if (element_equal(child_node, "Rechunked")) {
2094  response->rechunked = xml_get_string(doc, child_node);
2095  } else if (element_equal(child_node, "Replicating")) {
2096  response->replicating = xml_get_bool(client->log, doc, child_node);
2097  } else if (element_equal(child_node, "RequestType")) {
2098  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2099  if (text == NULL) {
2100  continue;
2101  }
2102  response->request_type = _match_ds3_job_request_type(client->log, text);
2103  xmlFree(text);
2104  } else if (element_equal(child_node, "Truncated")) {
2105  response->truncated = xml_get_bool(client->log, doc, child_node);
2106  } else if (element_equal(child_node, "TruncatedDueToTimeout")) {
2107  response->truncated_due_to_timeout = xml_get_bool(client->log, doc, child_node);
2108  } else if (element_equal(child_node, "UserId")) {
2109  response->user_id = xml_get_string(doc, child_node);
2110  } else if (element_equal(child_node, "VerifyAfterWrite")) {
2111  response->verify_after_write = xml_get_bool(client->log, doc, child_node);
2112  } else {
2113  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_active_job_response [%s]\n", child_node->name, root->name);
2114  }
2115 
2116  if (error != NULL) {
2117  break;
2118  }
2119 
2120  }
2121 
2122 
2123  *_response = response;
2124 
2125  return error;
2126 }
2127 
2128 static ds3_error* _parse_ds3_node_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_node_response** _response) {
2129  ds3_node_response* response;
2130  xmlNodePtr child_node;
2131  ds3_error* error = NULL;
2132 
2133  response = g_new0(ds3_node_response, 1);
2134 
2135 
2136  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2137  if (element_equal(child_node, "DataPathHttpPort")) {
2138  response->data_path_http_port = xml_get_uint16(doc, child_node);
2139  } else if (element_equal(child_node, "DataPathHttpsPort")) {
2140  response->data_path_https_port = xml_get_uint16(doc, child_node);
2141  } else if (element_equal(child_node, "DataPathIpAddress")) {
2142  response->data_path_ip_address = xml_get_string(doc, child_node);
2143  } else if (element_equal(child_node, "DnsName")) {
2144  response->dns_name = xml_get_string(doc, child_node);
2145  } else if (element_equal(child_node, "Id")) {
2146  response->id = xml_get_string(doc, child_node);
2147  } else if (element_equal(child_node, "LastHeartbeat")) {
2148  response->last_heartbeat = xml_get_string(doc, child_node);
2149  } else if (element_equal(child_node, "Name")) {
2150  response->name = xml_get_string(doc, child_node);
2151  } else if (element_equal(child_node, "SerialNumber")) {
2152  response->serial_number = xml_get_string(doc, child_node);
2153  } else {
2154  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_node_response [%s]\n", child_node->name, root->name);
2155  }
2156 
2157  if (error != NULL) {
2158  break;
2159  }
2160 
2161  }
2162 
2163 
2164  *_response = response;
2165 
2166  return error;
2167 }
2168 
2169 static ds3_error* _parse_ds3_s3_data_replication_rule_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_data_replication_rule_response** _response) {
2171  xmlNodePtr child_node;
2172  ds3_error* error = NULL;
2173 
2174  response = g_new0(ds3_s3_data_replication_rule_response, 1);
2175 
2176 
2177  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2178  if (element_equal(child_node, "DataPolicyId")) {
2179  response->data_policy_id = xml_get_string(doc, child_node);
2180  } else if (element_equal(child_node, "Id")) {
2181  response->id = xml_get_string(doc, child_node);
2182  } else if (element_equal(child_node, "InitialDataPlacement")) {
2183  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2184  if (text == NULL) {
2185  continue;
2186  }
2188  xmlFree(text);
2189  } else if (element_equal(child_node, "MaxBlobPartSizeInBytes")) {
2190  response->max_blob_part_size_in_bytes = xml_get_uint64(doc, child_node);
2191  } else if (element_equal(child_node, "ReplicateDeletes")) {
2192  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
2193  } else if (element_equal(child_node, "State")) {
2194  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2195  if (text == NULL) {
2196  continue;
2197  }
2198  response->state = _match_ds3_data_placement_rule_state(client->log, text);
2199  xmlFree(text);
2200  } else if (element_equal(child_node, "TargetId")) {
2201  response->target_id = xml_get_string(doc, child_node);
2202  } else if (element_equal(child_node, "Type")) {
2203  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2204  if (text == NULL) {
2205  continue;
2206  }
2207  response->type = _match_ds3_data_replication_rule_type(client->log, text);
2208  xmlFree(text);
2209  } else {
2210  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_data_replication_rule_response [%s]\n", child_node->name, root->name);
2211  }
2212 
2213  if (error != NULL) {
2214  break;
2215  }
2216 
2217  }
2218 
2219 
2220  *_response = response;
2221 
2222  return error;
2223 }
2224 
2225 static ds3_error* _parse_ds3_s3_object_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_object_response** _response) {
2226  ds3_s3_object_response* response;
2227  xmlNodePtr child_node;
2228  ds3_error* error = NULL;
2229 
2230  response = g_new0(ds3_s3_object_response, 1);
2231 
2232 
2233  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2234  if (element_equal(child_node, "BucketId")) {
2235  response->bucket_id = xml_get_string(doc, child_node);
2236  } else if (element_equal(child_node, "CreationDate")) {
2237  response->creation_date = xml_get_string(doc, child_node);
2238  } else if (element_equal(child_node, "Id")) {
2239  response->id = xml_get_string(doc, child_node);
2240  } else if (element_equal(child_node, "Latest")) {
2241  response->latest = xml_get_bool(client->log, doc, child_node);
2242  } else if (element_equal(child_node, "Name")) {
2243  response->name = xml_get_string(doc, child_node);
2244  } else if (element_equal(child_node, "Type")) {
2245  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2246  if (text == NULL) {
2247  continue;
2248  }
2249  response->type = _match_ds3_s3_object_type(client->log, text);
2250  xmlFree(text);
2251  } else if (element_equal(child_node, "Version")) {
2252  response->version = xml_get_uint64(doc, child_node);
2253  } else {
2254  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_response [%s]\n", child_node->name, root->name);
2255  }
2256 
2257  if (error != NULL) {
2258  break;
2259  }
2260 
2261  }
2262 
2263 
2264  *_response = response;
2265 
2266  return error;
2267 }
2268 
2269 static ds3_error* _parse_ds3_storage_domain_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_response** _response) {
2270  ds3_storage_domain_response* response;
2271  xmlNodePtr child_node;
2272  ds3_error* error = NULL;
2273 
2274  response = g_new0(ds3_storage_domain_response, 1);
2275 
2276 
2277  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2278  if (element_equal(child_node, "AutoEjectMediaFullThreshold")) {
2279  response->auto_eject_media_full_threshold = xml_get_uint64(doc, child_node);
2280  } else if (element_equal(child_node, "AutoEjectUponCron")) {
2281  response->auto_eject_upon_cron = xml_get_string(doc, child_node);
2282  } else if (element_equal(child_node, "AutoEjectUponJobCancellation")) {
2283  response->auto_eject_upon_job_cancellation = xml_get_bool(client->log, doc, child_node);
2284  } else if (element_equal(child_node, "AutoEjectUponJobCompletion")) {
2285  response->auto_eject_upon_job_completion = xml_get_bool(client->log, doc, child_node);
2286  } else if (element_equal(child_node, "AutoEjectUponMediaFull")) {
2287  response->auto_eject_upon_media_full = xml_get_bool(client->log, doc, child_node);
2288  } else if (element_equal(child_node, "Id")) {
2289  response->id = xml_get_string(doc, child_node);
2290  } else if (element_equal(child_node, "LtfsFileNaming")) {
2291  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2292  if (text == NULL) {
2293  continue;
2294  }
2295  response->ltfs_file_naming = _match_ds3_ltfs_file_naming_mode(client->log, text);
2296  xmlFree(text);
2297  } else if (element_equal(child_node, "MaxTapeFragmentationPercent")) {
2298  response->max_tape_fragmentation_percent = xml_get_uint16(doc, child_node);
2299  } else if (element_equal(child_node, "MaximumAutoVerificationFrequencyInDays")) {
2300  response->maximum_auto_verification_frequency_in_days = xml_get_uint16(doc, child_node);
2301  } else if (element_equal(child_node, "MediaEjectionAllowed")) {
2302  response->media_ejection_allowed = xml_get_bool(client->log, doc, child_node);
2303  } else if (element_equal(child_node, "Name")) {
2304  response->name = xml_get_string(doc, child_node);
2305  } else if (element_equal(child_node, "SecureMediaAllocation")) {
2306  response->secure_media_allocation = xml_get_bool(client->log, doc, child_node);
2307  } else if (element_equal(child_node, "VerifyPriorToAutoEject")) {
2308  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2309  if (text == NULL) {
2310  continue;
2311  }
2312  response->verify_prior_to_auto_eject = _match_ds3_priority(client->log, text);
2313  xmlFree(text);
2314  } else if (element_equal(child_node, "WriteOptimization")) {
2315  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2316  if (text == NULL) {
2317  continue;
2318  }
2319  response->write_optimization = _match_ds3_write_optimization(client->log, text);
2320  xmlFree(text);
2321  } else {
2322  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_response [%s]\n", child_node->name, root->name);
2323  }
2324 
2325  if (error != NULL) {
2326  break;
2327  }
2328 
2329  }
2330 
2331 
2332  *_response = response;
2333 
2334  return error;
2335 }
2336 
2337 static ds3_error* _parse_ds3_storage_domain_capacity_summary_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_capacity_summary_response** _response) {
2339  xmlNodePtr child_node;
2340  ds3_error* error = NULL;
2341 
2342  response = g_new0(ds3_storage_domain_capacity_summary_response, 1);
2343 
2344 
2345  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2346  if (element_equal(child_node, "PhysicalAllocated")) {
2347  response->physical_allocated = xml_get_uint64(doc, child_node);
2348  } else if (element_equal(child_node, "PhysicalFree")) {
2349  response->physical_free = xml_get_uint64(doc, child_node);
2350  } else if (element_equal(child_node, "PhysicalUsed")) {
2351  response->physical_used = xml_get_uint64(doc, child_node);
2352  } else {
2353  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_capacity_summary_response [%s]\n", child_node->name, root->name);
2354  }
2355 
2356  if (error != NULL) {
2357  break;
2358  }
2359 
2360  }
2361 
2362 
2363  *_response = response;
2364 
2365  return error;
2366 }
2367 
2368 static ds3_error* _parse_ds3_storage_domain_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_failure_response** _response) {
2370  xmlNodePtr child_node;
2371  ds3_error* error = NULL;
2372 
2373  response = g_new0(ds3_storage_domain_failure_response, 1);
2374 
2375 
2376  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2377  if (element_equal(child_node, "Date")) {
2378  response->date = xml_get_string(doc, child_node);
2379  } else if (element_equal(child_node, "ErrorMessage")) {
2380  response->error_message = xml_get_string(doc, child_node);
2381  } else if (element_equal(child_node, "Id")) {
2382  response->id = xml_get_string(doc, child_node);
2383  } else if (element_equal(child_node, "StorageDomainId")) {
2384  response->storage_domain_id = xml_get_string(doc, child_node);
2385  } else if (element_equal(child_node, "Type")) {
2386  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2387  if (text == NULL) {
2388  continue;
2389  }
2390  response->type = _match_ds3_storage_domain_failure_type(client->log, text);
2391  xmlFree(text);
2392  } else {
2393  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_failure_response [%s]\n", child_node->name, root->name);
2394  }
2395 
2396  if (error != NULL) {
2397  break;
2398  }
2399 
2400  }
2401 
2402 
2403  *_response = response;
2404 
2405  return error;
2406 }
2407 
2408 static ds3_error* _parse_ds3_storage_domain_member_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_member_response** _response) {
2410  xmlNodePtr child_node;
2411  ds3_error* error = NULL;
2412 
2413  response = g_new0(ds3_storage_domain_member_response, 1);
2414 
2415 
2416  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2417  if (element_equal(child_node, "Id")) {
2418  response->id = xml_get_string(doc, child_node);
2419  } else if (element_equal(child_node, "PoolPartitionId")) {
2420  response->pool_partition_id = xml_get_string(doc, child_node);
2421  } else if (element_equal(child_node, "State")) {
2422  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2423  if (text == NULL) {
2424  continue;
2425  }
2426  response->state = _match_ds3_storage_domain_member_state(client->log, text);
2427  xmlFree(text);
2428  } else if (element_equal(child_node, "StorageDomainId")) {
2429  response->storage_domain_id = xml_get_string(doc, child_node);
2430  } else if (element_equal(child_node, "TapePartitionId")) {
2431  response->tape_partition_id = xml_get_string(doc, child_node);
2432  } else if (element_equal(child_node, "TapeType")) {
2433  response->tape_type = xml_get_string(doc, child_node);
2434  } else if (element_equal(child_node, "WritePreference")) {
2435  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2436  if (text == NULL) {
2437  continue;
2438  }
2439  response->write_preference = _match_ds3_write_preference_level(client->log, text);
2440  xmlFree(text);
2441  } else {
2442  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_member_response [%s]\n", child_node->name, root->name);
2443  }
2444 
2445  if (error != NULL) {
2446  break;
2447  }
2448 
2449  }
2450 
2451 
2452  *_response = response;
2453 
2454  return error;
2455 }
2456 
2457 static ds3_error* _parse_ds3_system_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_system_failure_response** _response) {
2458  ds3_system_failure_response* response;
2459  xmlNodePtr child_node;
2460  ds3_error* error = NULL;
2461 
2462  response = g_new0(ds3_system_failure_response, 1);
2463 
2464 
2465  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2466  if (element_equal(child_node, "Date")) {
2467  response->date = xml_get_string(doc, child_node);
2468  } else if (element_equal(child_node, "ErrorMessage")) {
2469  response->error_message = xml_get_string(doc, child_node);
2470  } else if (element_equal(child_node, "Id")) {
2471  response->id = xml_get_string(doc, child_node);
2472  } else if (element_equal(child_node, "Type")) {
2473  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2474  if (text == NULL) {
2475  continue;
2476  }
2477  response->type = _match_ds3_system_failure_type(client->log, text);
2478  xmlFree(text);
2479  } else {
2480  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_response [%s]\n", child_node->name, root->name);
2481  }
2482 
2483  if (error != NULL) {
2484  break;
2485  }
2486 
2487  }
2488 
2489 
2490  *_response = response;
2491 
2492  return error;
2493 }
2494 
2495 static ds3_error* _parse_ds3_spectra_user_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_spectra_user_response** _response) {
2496  ds3_spectra_user_response* response;
2497  xmlNodePtr child_node;
2498  ds3_error* error = NULL;
2499 
2500  response = g_new0(ds3_spectra_user_response, 1);
2501 
2502 
2503  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2504  if (element_equal(child_node, "AuthId")) {
2505  response->auth_id = xml_get_string(doc, child_node);
2506  } else if (element_equal(child_node, "DefaultDataPolicyId")) {
2507  response->default_data_policy_id = xml_get_string(doc, child_node);
2508  } else if (element_equal(child_node, "Id")) {
2509  response->id = xml_get_string(doc, child_node);
2510  } else if (element_equal(child_node, "Name")) {
2511  response->name = xml_get_string(doc, child_node);
2512  } else if (element_equal(child_node, "SecretKey")) {
2513  response->secret_key = xml_get_string(doc, child_node);
2514  } else {
2515  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_spectra_user_response [%s]\n", child_node->name, root->name);
2516  }
2517 
2518  if (error != NULL) {
2519  break;
2520  }
2521 
2522  }
2523 
2524 
2525  *_response = response;
2526 
2527  return error;
2528 }
2529 
2532  xmlNodePtr child_node;
2533  ds3_error* error = NULL;
2534 
2536 
2537 
2538  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2539  if (element_equal(child_node, "CreationDate")) {
2540  response->creation_date = xml_get_string(doc, child_node);
2541  } else if (element_equal(child_node, "Format")) {
2542  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2543  if (text == NULL) {
2544  continue;
2545  }
2546  response->format = _match_ds3_http_response_format_type(client->log, text);
2547  xmlFree(text);
2548  } else if (element_equal(child_node, "Id")) {
2549  response->id = xml_get_string(doc, child_node);
2550  } else if (element_equal(child_node, "LastFailure")) {
2551  response->last_failure = xml_get_string(doc, child_node);
2552  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2553  response->last_http_response_code = xml_get_uint16(doc, child_node);
2554  } else if (element_equal(child_node, "LastNotification")) {
2555  response->last_notification = xml_get_string(doc, child_node);
2556  } else if (element_equal(child_node, "NamingConvention")) {
2557  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2558  if (text == NULL) {
2559  continue;
2560  }
2561  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2562  xmlFree(text);
2563  } else if (element_equal(child_node, "NotificationEndPoint")) {
2564  response->notification_end_point = xml_get_string(doc, child_node);
2565  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2566  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2567  if (text == NULL) {
2568  continue;
2569  }
2570  response->notification_http_method = _match_ds3_request_type(client->log, text);
2571  xmlFree(text);
2572  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2573  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2574  } else if (element_equal(child_node, "UserId")) {
2575  response->user_id = xml_get_string(doc, child_node);
2576  } else {
2577  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_failure_notification_registration_response [%s]\n", child_node->name, root->name);
2578  }
2579 
2580  if (error != NULL) {
2581  break;
2582  }
2583 
2584  }
2585 
2586 
2587  *_response = response;
2588 
2589  return error;
2590 }
2591 
2594  xmlNodePtr child_node;
2595  ds3_error* error = NULL;
2596 
2598 
2599 
2600  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2601  if (element_equal(child_node, "CreationDate")) {
2602  response->creation_date = xml_get_string(doc, child_node);
2603  } else if (element_equal(child_node, "Format")) {
2604  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2605  if (text == NULL) {
2606  continue;
2607  }
2608  response->format = _match_ds3_http_response_format_type(client->log, text);
2609  xmlFree(text);
2610  } else if (element_equal(child_node, "Id")) {
2611  response->id = xml_get_string(doc, child_node);
2612  } else if (element_equal(child_node, "LastFailure")) {
2613  response->last_failure = xml_get_string(doc, child_node);
2614  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2615  response->last_http_response_code = xml_get_uint16(doc, child_node);
2616  } else if (element_equal(child_node, "LastNotification")) {
2617  response->last_notification = xml_get_string(doc, child_node);
2618  } else if (element_equal(child_node, "NamingConvention")) {
2619  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2620  if (text == NULL) {
2621  continue;
2622  }
2623  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2624  xmlFree(text);
2625  } else if (element_equal(child_node, "NotificationEndPoint")) {
2626  response->notification_end_point = xml_get_string(doc, child_node);
2627  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2628  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2629  if (text == NULL) {
2630  continue;
2631  }
2632  response->notification_http_method = _match_ds3_request_type(client->log, text);
2633  xmlFree(text);
2634  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2635  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2636  } else if (element_equal(child_node, "UserId")) {
2637  response->user_id = xml_get_string(doc, child_node);
2638  } else {
2639  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_failure_notification_registration_response [%s]\n", child_node->name, root->name);
2640  }
2641 
2642  if (error != NULL) {
2643  break;
2644  }
2645 
2646  }
2647 
2648 
2649  *_response = response;
2650 
2651  return error;
2652 }
2653 
2656  xmlNodePtr child_node;
2657  ds3_error* error = NULL;
2658 
2660 
2661 
2662  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2663  if (element_equal(child_node, "CreationDate")) {
2664  response->creation_date = xml_get_string(doc, child_node);
2665  } else if (element_equal(child_node, "Format")) {
2666  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2667  if (text == NULL) {
2668  continue;
2669  }
2670  response->format = _match_ds3_http_response_format_type(client->log, text);
2671  xmlFree(text);
2672  } else if (element_equal(child_node, "Id")) {
2673  response->id = xml_get_string(doc, child_node);
2674  } else if (element_equal(child_node, "JobId")) {
2675  response->job_id = xml_get_string(doc, child_node);
2676  } else if (element_equal(child_node, "LastFailure")) {
2677  response->last_failure = xml_get_string(doc, child_node);
2678  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2679  response->last_http_response_code = xml_get_uint16(doc, child_node);
2680  } else if (element_equal(child_node, "LastNotification")) {
2681  response->last_notification = xml_get_string(doc, child_node);
2682  } else if (element_equal(child_node, "NamingConvention")) {
2683  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2684  if (text == NULL) {
2685  continue;
2686  }
2687  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2688  xmlFree(text);
2689  } else if (element_equal(child_node, "NotificationEndPoint")) {
2690  response->notification_end_point = xml_get_string(doc, child_node);
2691  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2692  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2693  if (text == NULL) {
2694  continue;
2695  }
2696  response->notification_http_method = _match_ds3_request_type(client->log, text);
2697  xmlFree(text);
2698  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2699  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2700  } else if (element_equal(child_node, "UserId")) {
2701  response->user_id = xml_get_string(doc, child_node);
2702  } else {
2703  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_completed_notification_registration_response [%s]\n", child_node->name, root->name);
2704  }
2705 
2706  if (error != NULL) {
2707  break;
2708  }
2709 
2710  }
2711 
2712 
2713  *_response = response;
2714 
2715  return error;
2716 }
2717 
2720  xmlNodePtr child_node;
2721  ds3_error* error = NULL;
2722 
2724 
2725 
2726  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2727  if (element_equal(child_node, "CreationDate")) {
2728  response->creation_date = xml_get_string(doc, child_node);
2729  } else if (element_equal(child_node, "Format")) {
2730  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2731  if (text == NULL) {
2732  continue;
2733  }
2734  response->format = _match_ds3_http_response_format_type(client->log, text);
2735  xmlFree(text);
2736  } else if (element_equal(child_node, "Id")) {
2737  response->id = xml_get_string(doc, child_node);
2738  } else if (element_equal(child_node, "LastFailure")) {
2739  response->last_failure = xml_get_string(doc, child_node);
2740  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2741  response->last_http_response_code = xml_get_uint16(doc, child_node);
2742  } else if (element_equal(child_node, "LastNotification")) {
2743  response->last_notification = xml_get_string(doc, child_node);
2744  } else if (element_equal(child_node, "NamingConvention")) {
2745  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2746  if (text == NULL) {
2747  continue;
2748  }
2749  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2750  xmlFree(text);
2751  } else if (element_equal(child_node, "NotificationEndPoint")) {
2752  response->notification_end_point = xml_get_string(doc, child_node);
2753  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2754  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2755  if (text == NULL) {
2756  continue;
2757  }
2758  response->notification_http_method = _match_ds3_request_type(client->log, text);
2759  xmlFree(text);
2760  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2761  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2762  } else if (element_equal(child_node, "UserId")) {
2763  response->user_id = xml_get_string(doc, child_node);
2764  } else {
2765  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_created_notification_registration_response [%s]\n", child_node->name, root->name);
2766  }
2767 
2768  if (error != NULL) {
2769  break;
2770  }
2771 
2772  }
2773 
2774 
2775  *_response = response;
2776 
2777  return error;
2778 }
2779 
2782  xmlNodePtr child_node;
2783  ds3_error* error = NULL;
2784 
2786 
2787 
2788  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2789  if (element_equal(child_node, "CreationDate")) {
2790  response->creation_date = xml_get_string(doc, child_node);
2791  } else if (element_equal(child_node, "Format")) {
2792  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2793  if (text == NULL) {
2794  continue;
2795  }
2796  response->format = _match_ds3_http_response_format_type(client->log, text);
2797  xmlFree(text);
2798  } else if (element_equal(child_node, "Id")) {
2799  response->id = xml_get_string(doc, child_node);
2800  } else if (element_equal(child_node, "LastFailure")) {
2801  response->last_failure = xml_get_string(doc, child_node);
2802  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2803  response->last_http_response_code = xml_get_uint16(doc, child_node);
2804  } else if (element_equal(child_node, "LastNotification")) {
2805  response->last_notification = xml_get_string(doc, child_node);
2806  } else if (element_equal(child_node, "NamingConvention")) {
2807  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2808  if (text == NULL) {
2809  continue;
2810  }
2811  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2812  xmlFree(text);
2813  } else if (element_equal(child_node, "NotificationEndPoint")) {
2814  response->notification_end_point = xml_get_string(doc, child_node);
2815  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2816  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2817  if (text == NULL) {
2818  continue;
2819  }
2820  response->notification_http_method = _match_ds3_request_type(client->log, text);
2821  xmlFree(text);
2822  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2823  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2824  } else if (element_equal(child_node, "UserId")) {
2825  response->user_id = xml_get_string(doc, child_node);
2826  } else {
2827  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_creation_failed_notification_registration_response [%s]\n", child_node->name, root->name);
2828  }
2829 
2830  if (error != NULL) {
2831  break;
2832  }
2833 
2834  }
2835 
2836 
2837  *_response = response;
2838 
2839  return error;
2840 }
2841 
2844  xmlNodePtr child_node;
2845  ds3_error* error = NULL;
2846 
2848 
2849 
2850  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2851  if (element_equal(child_node, "CreationDate")) {
2852  response->creation_date = xml_get_string(doc, child_node);
2853  } else if (element_equal(child_node, "Format")) {
2854  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2855  if (text == NULL) {
2856  continue;
2857  }
2858  response->format = _match_ds3_http_response_format_type(client->log, text);
2859  xmlFree(text);
2860  } else if (element_equal(child_node, "Id")) {
2861  response->id = xml_get_string(doc, child_node);
2862  } else if (element_equal(child_node, "LastFailure")) {
2863  response->last_failure = xml_get_string(doc, child_node);
2864  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2865  response->last_http_response_code = xml_get_uint16(doc, child_node);
2866  } else if (element_equal(child_node, "LastNotification")) {
2867  response->last_notification = xml_get_string(doc, child_node);
2868  } else if (element_equal(child_node, "NamingConvention")) {
2869  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2870  if (text == NULL) {
2871  continue;
2872  }
2873  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2874  xmlFree(text);
2875  } else if (element_equal(child_node, "NotificationEndPoint")) {
2876  response->notification_end_point = xml_get_string(doc, child_node);
2877  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2878  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2879  if (text == NULL) {
2880  continue;
2881  }
2882  response->notification_http_method = _match_ds3_request_type(client->log, text);
2883  xmlFree(text);
2884  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2885  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2886  } else if (element_equal(child_node, "UserId")) {
2887  response->user_id = xml_get_string(doc, child_node);
2888  } else {
2889  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_notification_registration_response [%s]\n", child_node->name, root->name);
2890  }
2891 
2892  if (error != NULL) {
2893  break;
2894  }
2895 
2896  }
2897 
2898 
2899  *_response = response;
2900 
2901  return error;
2902 }
2903 
2906  xmlNodePtr child_node;
2907  ds3_error* error = NULL;
2908 
2910 
2911 
2912  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2913  if (element_equal(child_node, "CreationDate")) {
2914  response->creation_date = xml_get_string(doc, child_node);
2915  } else if (element_equal(child_node, "Format")) {
2916  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2917  if (text == NULL) {
2918  continue;
2919  }
2920  response->format = _match_ds3_http_response_format_type(client->log, text);
2921  xmlFree(text);
2922  } else if (element_equal(child_node, "Id")) {
2923  response->id = xml_get_string(doc, child_node);
2924  } else if (element_equal(child_node, "JobId")) {
2925  response->job_id = xml_get_string(doc, child_node);
2926  } else if (element_equal(child_node, "LastFailure")) {
2927  response->last_failure = xml_get_string(doc, child_node);
2928  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2929  response->last_http_response_code = xml_get_uint16(doc, child_node);
2930  } else if (element_equal(child_node, "LastNotification")) {
2931  response->last_notification = xml_get_string(doc, child_node);
2932  } else if (element_equal(child_node, "NamingConvention")) {
2933  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2934  if (text == NULL) {
2935  continue;
2936  }
2937  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2938  xmlFree(text);
2939  } else if (element_equal(child_node, "NotificationEndPoint")) {
2940  response->notification_end_point = xml_get_string(doc, child_node);
2941  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2942  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2943  if (text == NULL) {
2944  continue;
2945  }
2946  response->notification_http_method = _match_ds3_request_type(client->log, text);
2947  xmlFree(text);
2948  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2949  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2950  } else if (element_equal(child_node, "UserId")) {
2951  response->user_id = xml_get_string(doc, child_node);
2952  } else {
2953  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_cached_notification_registration_response [%s]\n", child_node->name, root->name);
2954  }
2955 
2956  if (error != NULL) {
2957  break;
2958  }
2959 
2960  }
2961 
2962 
2963  *_response = response;
2964 
2965  return error;
2966 }
2967 
2970  xmlNodePtr child_node;
2971  ds3_error* error = NULL;
2972 
2974 
2975 
2976  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2977  if (element_equal(child_node, "CreationDate")) {
2978  response->creation_date = xml_get_string(doc, child_node);
2979  } else if (element_equal(child_node, "Format")) {
2980  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2981  if (text == NULL) {
2982  continue;
2983  }
2984  response->format = _match_ds3_http_response_format_type(client->log, text);
2985  xmlFree(text);
2986  } else if (element_equal(child_node, "Id")) {
2987  response->id = xml_get_string(doc, child_node);
2988  } else if (element_equal(child_node, "LastFailure")) {
2989  response->last_failure = xml_get_string(doc, child_node);
2990  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2991  response->last_http_response_code = xml_get_uint16(doc, child_node);
2992  } else if (element_equal(child_node, "LastNotification")) {
2993  response->last_notification = xml_get_string(doc, child_node);
2994  } else if (element_equal(child_node, "NamingConvention")) {
2995  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2996  if (text == NULL) {
2997  continue;
2998  }
2999  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3000  xmlFree(text);
3001  } else if (element_equal(child_node, "NotificationEndPoint")) {
3002  response->notification_end_point = xml_get_string(doc, child_node);
3003  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3004  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3005  if (text == NULL) {
3006  continue;
3007  }
3008  response->notification_http_method = _match_ds3_request_type(client->log, text);
3009  xmlFree(text);
3010  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3011  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3012  } else if (element_equal(child_node, "UserId")) {
3013  response->user_id = xml_get_string(doc, child_node);
3014  } else {
3015  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_lost_notification_registration_response [%s]\n", child_node->name, root->name);
3016  }
3017 
3018  if (error != NULL) {
3019  break;
3020  }
3021 
3022  }
3023 
3024 
3025  *_response = response;
3026 
3027  return error;
3028 }
3029 
3032  xmlNodePtr child_node;
3033  ds3_error* error = NULL;
3034 
3036 
3037 
3038  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3039  if (element_equal(child_node, "CreationDate")) {
3040  response->creation_date = xml_get_string(doc, child_node);
3041  } else if (element_equal(child_node, "Format")) {
3042  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3043  if (text == NULL) {
3044  continue;
3045  }
3046  response->format = _match_ds3_http_response_format_type(client->log, text);
3047  xmlFree(text);
3048  } else if (element_equal(child_node, "Id")) {
3049  response->id = xml_get_string(doc, child_node);
3050  } else if (element_equal(child_node, "JobId")) {
3051  response->job_id = xml_get_string(doc, child_node);
3052  } else if (element_equal(child_node, "LastFailure")) {
3053  response->last_failure = xml_get_string(doc, child_node);
3054  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3055  response->last_http_response_code = xml_get_uint16(doc, child_node);
3056  } else if (element_equal(child_node, "LastNotification")) {
3057  response->last_notification = xml_get_string(doc, child_node);
3058  } else if (element_equal(child_node, "NamingConvention")) {
3059  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3060  if (text == NULL) {
3061  continue;
3062  }
3063  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3064  xmlFree(text);
3065  } else if (element_equal(child_node, "NotificationEndPoint")) {
3066  response->notification_end_point = xml_get_string(doc, child_node);
3067  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3068  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3069  if (text == NULL) {
3070  continue;
3071  }
3072  response->notification_http_method = _match_ds3_request_type(client->log, text);
3073  xmlFree(text);
3074  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3075  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3076  } else if (element_equal(child_node, "UserId")) {
3077  response->user_id = xml_get_string(doc, child_node);
3078  } else {
3079  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_persisted_notification_registration_response [%s]\n", child_node->name, root->name);
3080  }
3081 
3082  if (error != NULL) {
3083  break;
3084  }
3085 
3086  }
3087 
3088 
3089  *_response = response;
3090 
3091  return error;
3092 }
3093 
3096  xmlNodePtr child_node;
3097  ds3_error* error = NULL;
3098 
3100 
3101 
3102  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3103  if (element_equal(child_node, "CreationDate")) {
3104  response->creation_date = xml_get_string(doc, child_node);
3105  } else if (element_equal(child_node, "Format")) {
3106  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3107  if (text == NULL) {
3108  continue;
3109  }
3110  response->format = _match_ds3_http_response_format_type(client->log, text);
3111  xmlFree(text);
3112  } else if (element_equal(child_node, "Id")) {
3113  response->id = xml_get_string(doc, child_node);
3114  } else if (element_equal(child_node, "LastFailure")) {
3115  response->last_failure = xml_get_string(doc, child_node);
3116  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3117  response->last_http_response_code = xml_get_uint16(doc, child_node);
3118  } else if (element_equal(child_node, "LastNotification")) {
3119  response->last_notification = xml_get_string(doc, child_node);
3120  } else if (element_equal(child_node, "NamingConvention")) {
3121  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3122  if (text == NULL) {
3123  continue;
3124  }
3125  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3126  xmlFree(text);
3127  } else if (element_equal(child_node, "NotificationEndPoint")) {
3128  response->notification_end_point = xml_get_string(doc, child_node);
3129  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3130  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3131  if (text == NULL) {
3132  continue;
3133  }
3134  response->notification_http_method = _match_ds3_request_type(client->log, text);
3135  xmlFree(text);
3136  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3137  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3138  } else if (element_equal(child_node, "UserId")) {
3139  response->user_id = xml_get_string(doc, child_node);
3140  } else {
3141  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_failure_notification_registration_response [%s]\n", child_node->name, root->name);
3142  }
3143 
3144  if (error != NULL) {
3145  break;
3146  }
3147 
3148  }
3149 
3150 
3151  *_response = response;
3152 
3153  return error;
3154 }
3155 
3158  xmlNodePtr child_node;
3159  ds3_error* error = NULL;
3160 
3162 
3163 
3164  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3165  if (element_equal(child_node, "CreationDate")) {
3166  response->creation_date = xml_get_string(doc, child_node);
3167  } else if (element_equal(child_node, "Format")) {
3168  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3169  if (text == NULL) {
3170  continue;
3171  }
3172  response->format = _match_ds3_http_response_format_type(client->log, text);
3173  xmlFree(text);
3174  } else if (element_equal(child_node, "Id")) {
3175  response->id = xml_get_string(doc, child_node);
3176  } else if (element_equal(child_node, "LastFailure")) {
3177  response->last_failure = xml_get_string(doc, child_node);
3178  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3179  response->last_http_response_code = xml_get_uint16(doc, child_node);
3180  } else if (element_equal(child_node, "LastNotification")) {
3181  response->last_notification = xml_get_string(doc, child_node);
3182  } else if (element_equal(child_node, "NamingConvention")) {
3183  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3184  if (text == NULL) {
3185  continue;
3186  }
3187  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3188  xmlFree(text);
3189  } else if (element_equal(child_node, "NotificationEndPoint")) {
3190  response->notification_end_point = xml_get_string(doc, child_node);
3191  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3192  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3193  if (text == NULL) {
3194  continue;
3195  }
3196  response->notification_http_method = _match_ds3_request_type(client->log, text);
3197  xmlFree(text);
3198  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3199  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3200  } else if (element_equal(child_node, "UserId")) {
3201  response->user_id = xml_get_string(doc, child_node);
3202  } else {
3203  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_failure_notification_registration_response [%s]\n", child_node->name, root->name);
3204  }
3205 
3206  if (error != NULL) {
3207  break;
3208  }
3209 
3210  }
3211 
3212 
3213  *_response = response;
3214 
3215  return error;
3216 }
3217 
3220  xmlNodePtr child_node;
3221  ds3_error* error = NULL;
3222 
3224 
3225 
3226  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3227  if (element_equal(child_node, "CreationDate")) {
3228  response->creation_date = xml_get_string(doc, child_node);
3229  } else if (element_equal(child_node, "Format")) {
3230  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3231  if (text == NULL) {
3232  continue;
3233  }
3234  response->format = _match_ds3_http_response_format_type(client->log, text);
3235  xmlFree(text);
3236  } else if (element_equal(child_node, "Id")) {
3237  response->id = xml_get_string(doc, child_node);
3238  } else if (element_equal(child_node, "LastFailure")) {
3239  response->last_failure = xml_get_string(doc, child_node);
3240  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3241  response->last_http_response_code = xml_get_uint16(doc, child_node);
3242  } else if (element_equal(child_node, "LastNotification")) {
3243  response->last_notification = xml_get_string(doc, child_node);
3244  } else if (element_equal(child_node, "NamingConvention")) {
3245  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3246  if (text == NULL) {
3247  continue;
3248  }
3249  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3250  xmlFree(text);
3251  } else if (element_equal(child_node, "NotificationEndPoint")) {
3252  response->notification_end_point = xml_get_string(doc, child_node);
3253  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3254  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3255  if (text == NULL) {
3256  continue;
3257  }
3258  response->notification_http_method = _match_ds3_request_type(client->log, text);
3259  xmlFree(text);
3260  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3261  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3262  } else if (element_equal(child_node, "UserId")) {
3263  response->user_id = xml_get_string(doc, child_node);
3264  } else {
3265  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_notification_registration_response [%s]\n", child_node->name, root->name);
3266  }
3267 
3268  if (error != NULL) {
3269  break;
3270  }
3271 
3272  }
3273 
3274 
3275  *_response = response;
3276 
3277  return error;
3278 }
3279 
3282  xmlNodePtr child_node;
3283  ds3_error* error = NULL;
3284 
3286 
3287 
3288  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3289  if (element_equal(child_node, "CreationDate")) {
3290  response->creation_date = xml_get_string(doc, child_node);
3291  } else if (element_equal(child_node, "Format")) {
3292  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3293  if (text == NULL) {
3294  continue;
3295  }
3296  response->format = _match_ds3_http_response_format_type(client->log, text);
3297  xmlFree(text);
3298  } else if (element_equal(child_node, "Id")) {
3299  response->id = xml_get_string(doc, child_node);
3300  } else if (element_equal(child_node, "LastFailure")) {
3301  response->last_failure = xml_get_string(doc, child_node);
3302  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3303  response->last_http_response_code = xml_get_uint16(doc, child_node);
3304  } else if (element_equal(child_node, "LastNotification")) {
3305  response->last_notification = xml_get_string(doc, child_node);
3306  } else if (element_equal(child_node, "NamingConvention")) {
3307  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3308  if (text == NULL) {
3309  continue;
3310  }
3311  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3312  xmlFree(text);
3313  } else if (element_equal(child_node, "NotificationEndPoint")) {
3314  response->notification_end_point = xml_get_string(doc, child_node);
3315  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3316  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3317  if (text == NULL) {
3318  continue;
3319  }
3320  response->notification_http_method = _match_ds3_request_type(client->log, text);
3321  xmlFree(text);
3322  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3323  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3324  } else if (element_equal(child_node, "UserId")) {
3325  response->user_id = xml_get_string(doc, child_node);
3326  } else {
3327  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_notification_registration_response [%s]\n", child_node->name, root->name);
3328  }
3329 
3330  if (error != NULL) {
3331  break;
3332  }
3333 
3334  }
3335 
3336 
3337  *_response = response;
3338 
3339  return error;
3340 }
3341 
3344  xmlNodePtr child_node;
3345  ds3_error* error = NULL;
3346 
3348 
3349 
3350  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3351  if (element_equal(child_node, "CreationDate")) {
3352  response->creation_date = xml_get_string(doc, child_node);
3353  } else if (element_equal(child_node, "Format")) {
3354  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3355  if (text == NULL) {
3356  continue;
3357  }
3358  response->format = _match_ds3_http_response_format_type(client->log, text);
3359  xmlFree(text);
3360  } else if (element_equal(child_node, "Id")) {
3361  response->id = xml_get_string(doc, child_node);
3362  } else if (element_equal(child_node, "LastFailure")) {
3363  response->last_failure = xml_get_string(doc, child_node);
3364  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3365  response->last_http_response_code = xml_get_uint16(doc, child_node);
3366  } else if (element_equal(child_node, "LastNotification")) {
3367  response->last_notification = xml_get_string(doc, child_node);
3368  } else if (element_equal(child_node, "NamingConvention")) {
3369  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3370  if (text == NULL) {
3371  continue;
3372  }
3373  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3374  xmlFree(text);
3375  } else if (element_equal(child_node, "NotificationEndPoint")) {
3376  response->notification_end_point = xml_get_string(doc, child_node);
3377  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3378  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3379  if (text == NULL) {
3380  continue;
3381  }
3382  response->notification_http_method = _match_ds3_request_type(client->log, text);
3383  xmlFree(text);
3384  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3385  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3386  } else if (element_equal(child_node, "UserId")) {
3387  response->user_id = xml_get_string(doc, child_node);
3388  } else {
3389  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_failure_notification_registration_response [%s]\n", child_node->name, root->name);
3390  }
3391 
3392  if (error != NULL) {
3393  break;
3394  }
3395 
3396  }
3397 
3398 
3399  *_response = response;
3400 
3401  return error;
3402 }
3403 
3404 static ds3_error* _parse_ds3_cache_filesystem_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_cache_filesystem_response** _response) {
3406  xmlNodePtr child_node;
3407  ds3_error* error = NULL;
3408 
3409  response = g_new0(ds3_cache_filesystem_response, 1);
3410 
3411 
3412  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3413  if (element_equal(child_node, "AutoReclaimInitiateThreshold")) {
3414  response->auto_reclaim_initiate_threshold = xml_get_uint64(doc, child_node);
3415  } else if (element_equal(child_node, "AutoReclaimTerminateThreshold")) {
3416  response->auto_reclaim_terminate_threshold = xml_get_uint64(doc, child_node);
3417  } else if (element_equal(child_node, "BurstThreshold")) {
3418  response->burst_threshold = xml_get_uint64(doc, child_node);
3419  } else if (element_equal(child_node, "Id")) {
3420  response->id = xml_get_string(doc, child_node);
3421  } else if (element_equal(child_node, "MaxCapacityInBytes")) {
3422  response->max_capacity_in_bytes = xml_get_uint64(doc, child_node);
3423  } else if (element_equal(child_node, "MaxPercentUtilizationOfFilesystem")) {
3424  response->max_percent_utilization_of_filesystem = xml_get_uint64(doc, child_node);
3425  } else if (element_equal(child_node, "NodeId")) {
3426  response->node_id = xml_get_string(doc, child_node);
3427  } else if (element_equal(child_node, "Path")) {
3428  response->path = xml_get_string(doc, child_node);
3429  } else {
3430  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_response [%s]\n", child_node->name, root->name);
3431  }
3432 
3433  if (error != NULL) {
3434  break;
3435  }
3436 
3437  }
3438 
3439 
3440  *_response = response;
3441 
3442  return error;
3443 }
3444 
3445 static ds3_error* _parse_ds3_pool_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_response** _response) {
3446  ds3_pool_response* response;
3447  xmlNodePtr child_node;
3448  ds3_error* error = NULL;
3449 
3450  response = g_new0(ds3_pool_response, 1);
3451 
3452 
3453  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3454  if (element_equal(child_node, "AssignedToStorageDomain")) {
3455  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
3456  } else if (element_equal(child_node, "AvailableCapacity")) {
3457  response->available_capacity = xml_get_uint64(doc, child_node);
3458  } else if (element_equal(child_node, "BucketId")) {
3459  response->bucket_id = xml_get_string(doc, child_node);
3460  } else if (element_equal(child_node, "Guid")) {
3461  response->guid = xml_get_string(doc, child_node);
3462  } else if (element_equal(child_node, "Health")) {
3463  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3464  if (text == NULL) {
3465  continue;
3466  }
3467  response->health = _match_ds3_pool_health(client->log, text);
3468  xmlFree(text);
3469  } else if (element_equal(child_node, "Id")) {
3470  response->id = xml_get_string(doc, child_node);
3471  } else if (element_equal(child_node, "LastAccessed")) {
3472  response->last_accessed = xml_get_string(doc, child_node);
3473  } else if (element_equal(child_node, "LastModified")) {
3474  response->last_modified = xml_get_string(doc, child_node);
3475  } else if (element_equal(child_node, "LastVerified")) {
3476  response->last_verified = xml_get_string(doc, child_node);
3477  } else if (element_equal(child_node, "Mountpoint")) {
3478  response->mountpoint = xml_get_string(doc, child_node);
3479  } else if (element_equal(child_node, "Name")) {
3480  response->name = xml_get_string(doc, child_node);
3481  } else if (element_equal(child_node, "PartitionId")) {
3482  response->partition_id = xml_get_string(doc, child_node);
3483  } else if (element_equal(child_node, "PoweredOn")) {
3484  response->powered_on = xml_get_bool(client->log, doc, child_node);
3485  } else if (element_equal(child_node, "Quiesced")) {
3486  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3487  if (text == NULL) {
3488  continue;
3489  }
3490  response->quiesced = _match_ds3_quiesced(client->log, text);
3491  xmlFree(text);
3492  } else if (element_equal(child_node, "ReservedCapacity")) {
3493  response->reserved_capacity = xml_get_uint64(doc, child_node);
3494  } else if (element_equal(child_node, "State")) {
3495  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3496  if (text == NULL) {
3497  continue;
3498  }
3499  response->state = _match_ds3_pool_state(client->log, text);
3500  xmlFree(text);
3501  } else if (element_equal(child_node, "StorageDomainId")) {
3502  response->storage_domain_id = xml_get_string(doc, child_node);
3503  } else if (element_equal(child_node, "TotalCapacity")) {
3504  response->total_capacity = xml_get_uint64(doc, child_node);
3505  } else if (element_equal(child_node, "Type")) {
3506  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3507  if (text == NULL) {
3508  continue;
3509  }
3510  response->type = _match_ds3_pool_type(client->log, text);
3511  xmlFree(text);
3512  } else if (element_equal(child_node, "UsedCapacity")) {
3513  response->used_capacity = xml_get_uint64(doc, child_node);
3514  } else {
3515  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_response [%s]\n", child_node->name, root->name);
3516  }
3517 
3518  if (error != NULL) {
3519  break;
3520  }
3521 
3522  }
3523 
3524 
3525  *_response = response;
3526 
3527  return error;
3528 }
3529 
3530 static ds3_error* _parse_ds3_pool_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
3531  ds3_error* error = NULL;
3532  xmlNodePtr child_node;
3533  GPtrArray* ds3_pool_response_array = g_ptr_array_new();
3534 
3535  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3536  ds3_pool_response* response = NULL;
3537  error = _parse_ds3_pool_response(client, doc, child_node, &response);
3538  g_ptr_array_add(ds3_pool_response_array, response);
3539 
3540  if (error != NULL) {
3541  break;
3542  }
3543  }
3544 
3545  *_response = ds3_pool_response_array;
3546 
3547  return error;
3548 }
3549 static ds3_error* _parse_ds3_pool_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_failure_response** _response) {
3550  ds3_pool_failure_response* response;
3551  xmlNodePtr child_node;
3552  ds3_error* error = NULL;
3553 
3554  response = g_new0(ds3_pool_failure_response, 1);
3555 
3556 
3557  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3558  if (element_equal(child_node, "Date")) {
3559  response->date = xml_get_string(doc, child_node);
3560  } else if (element_equal(child_node, "ErrorMessage")) {
3561  response->error_message = xml_get_string(doc, child_node);
3562  } else if (element_equal(child_node, "Id")) {
3563  response->id = xml_get_string(doc, child_node);
3564  } else if (element_equal(child_node, "PoolId")) {
3565  response->pool_id = xml_get_string(doc, child_node);
3566  } else if (element_equal(child_node, "Type")) {
3567  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3568  if (text == NULL) {
3569  continue;
3570  }
3571  response->type = _match_ds3_pool_failure_type(client->log, text);
3572  xmlFree(text);
3573  } else {
3574  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_response [%s]\n", child_node->name, root->name);
3575  }
3576 
3577  if (error != NULL) {
3578  break;
3579  }
3580 
3581  }
3582 
3583 
3584  *_response = response;
3585 
3586  return error;
3587 }
3588 
3589 static ds3_error* _parse_ds3_pool_partition_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_partition_response** _response) {
3590  ds3_pool_partition_response* response;
3591  xmlNodePtr child_node;
3592  ds3_error* error = NULL;
3593 
3594  response = g_new0(ds3_pool_partition_response, 1);
3595 
3596 
3597  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3598  if (element_equal(child_node, "Id")) {
3599  response->id = xml_get_string(doc, child_node);
3600  } else if (element_equal(child_node, "Name")) {
3601  response->name = xml_get_string(doc, child_node);
3602  } else if (element_equal(child_node, "Type")) {
3603  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3604  if (text == NULL) {
3605  continue;
3606  }
3607  response->type = _match_ds3_pool_type(client->log, text);
3608  xmlFree(text);
3609  } else {
3610  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_partition_response [%s]\n", child_node->name, root->name);
3611  }
3612 
3613  if (error != NULL) {
3614  break;
3615  }
3616 
3617  }
3618 
3619 
3620  *_response = response;
3621 
3622  return error;
3623 }
3624 
3625 static ds3_error* _parse_ds3_suspect_blob_pool_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_suspect_blob_pool_response** _response) {
3627  xmlNodePtr child_node;
3628  ds3_error* error = NULL;
3629 
3630  response = g_new0(ds3_suspect_blob_pool_response, 1);
3631 
3632 
3633  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3634  if (element_equal(child_node, "BlobId")) {
3635  response->blob_id = xml_get_string(doc, child_node);
3636  } else if (element_equal(child_node, "BucketId")) {
3637  response->bucket_id = xml_get_string(doc, child_node);
3638  } else if (element_equal(child_node, "DateWritten")) {
3639  response->date_written = xml_get_string(doc, child_node);
3640  } else if (element_equal(child_node, "Id")) {
3641  response->id = xml_get_string(doc, child_node);
3642  } else if (element_equal(child_node, "LastAccessed")) {
3643  response->last_accessed = xml_get_string(doc, child_node);
3644  } else if (element_equal(child_node, "PoolId")) {
3645  response->pool_id = xml_get_string(doc, child_node);
3646  } else {
3647  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_pool_response [%s]\n", child_node->name, root->name);
3648  }
3649 
3650  if (error != NULL) {
3651  break;
3652  }
3653 
3654  }
3655 
3656 
3657  *_response = response;
3658 
3659  return error;
3660 }
3661 
3662 static ds3_error* _parse_ds3_suspect_blob_tape_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_suspect_blob_tape_response** _response) {
3664  xmlNodePtr child_node;
3665  ds3_error* error = NULL;
3666 
3667  response = g_new0(ds3_suspect_blob_tape_response, 1);
3668 
3669 
3670  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3671  if (element_equal(child_node, "BlobId")) {
3672  response->blob_id = xml_get_string(doc, child_node);
3673  } else if (element_equal(child_node, "Id")) {
3674  response->id = xml_get_string(doc, child_node);
3675  } else if (element_equal(child_node, "OrderIndex")) {
3676  response->order_index = xml_get_uint16(doc, child_node);
3677  } else if (element_equal(child_node, "TapeId")) {
3678  response->tape_id = xml_get_string(doc, child_node);
3679  } else {
3680  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_tape_response [%s]\n", child_node->name, root->name);
3681  }
3682 
3683  if (error != NULL) {
3684  break;
3685  }
3686 
3687  }
3688 
3689 
3690  *_response = response;
3691 
3692  return error;
3693 }
3694 
3695 static ds3_error* _parse_ds3_tape_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_response** _response) {
3696  ds3_tape_response* response;
3697  xmlNodePtr child_node;
3698  ds3_error* error = NULL;
3699 
3700  response = g_new0(ds3_tape_response, 1);
3701 
3702 
3703  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3704  if (element_equal(child_node, "AssignedToStorageDomain")) {
3705  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
3706  } else if (element_equal(child_node, "AvailableRawCapacity")) {
3707  response->available_raw_capacity = xml_get_uint64(doc, child_node);
3708  } else if (element_equal(child_node, "BarCode")) {
3709  response->bar_code = xml_get_string(doc, child_node);
3710  } else if (element_equal(child_node, "BucketId")) {
3711  response->bucket_id = xml_get_string(doc, child_node);
3712  } else if (element_equal(child_node, "DescriptionForIdentification")) {
3713  response->description_for_identification = xml_get_string(doc, child_node);
3714  } else if (element_equal(child_node, "EjectDate")) {
3715  response->eject_date = xml_get_string(doc, child_node);
3716  } else if (element_equal(child_node, "EjectLabel")) {
3717  response->eject_label = xml_get_string(doc, child_node);
3718  } else if (element_equal(child_node, "EjectLocation")) {
3719  response->eject_location = xml_get_string(doc, child_node);
3720  } else if (element_equal(child_node, "EjectPending")) {
3721  response->eject_pending = xml_get_string(doc, child_node);
3722  } else if (element_equal(child_node, "FullOfData")) {
3723  response->full_of_data = xml_get_bool(client->log, doc, child_node);
3724  } else if (element_equal(child_node, "Id")) {
3725  response->id = xml_get_string(doc, child_node);
3726  } else if (element_equal(child_node, "LastAccessed")) {
3727  response->last_accessed = xml_get_string(doc, child_node);
3728  } else if (element_equal(child_node, "LastCheckpoint")) {
3729  response->last_checkpoint = xml_get_string(doc, child_node);
3730  } else if (element_equal(child_node, "LastModified")) {
3731  response->last_modified = xml_get_string(doc, child_node);
3732  } else if (element_equal(child_node, "LastVerified")) {
3733  response->last_verified = xml_get_string(doc, child_node);
3734  } else if (element_equal(child_node, "PartiallyVerifiedEndOfTape")) {
3735  response->partially_verified_end_of_tape = xml_get_string(doc, child_node);
3736  } else if (element_equal(child_node, "PartitionId")) {
3737  response->partition_id = xml_get_string(doc, child_node);
3738  } else if (element_equal(child_node, "PreviousState")) {
3739  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3740  if (text == NULL) {
3741  continue;
3742  }
3743  response->previous_state = _match_ds3_tape_state(client->log, text);
3744  xmlFree(text);
3745  } else if (element_equal(child_node, "SerialNumber")) {
3746  response->serial_number = xml_get_string(doc, child_node);
3747  } else if (element_equal(child_node, "State")) {
3748  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3749  if (text == NULL) {
3750  continue;
3751  }
3752  response->state = _match_ds3_tape_state(client->log, text);
3753  xmlFree(text);
3754  } else if (element_equal(child_node, "StorageDomainId")) {
3755  response->storage_domain_id = xml_get_string(doc, child_node);
3756  } else if (element_equal(child_node, "TakeOwnershipPending")) {
3757  response->take_ownership_pending = xml_get_bool(client->log, doc, child_node);
3758  } else if (element_equal(child_node, "TotalRawCapacity")) {
3759  response->total_raw_capacity = xml_get_uint64(doc, child_node);
3760  } else if (element_equal(child_node, "Type")) {
3761  response->type = xml_get_string(doc, child_node);
3762  } else if (element_equal(child_node, "VerifyPending")) {
3763  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3764  if (text == NULL) {
3765  continue;
3766  }
3767  response->verify_pending = _match_ds3_priority(client->log, text);
3768  xmlFree(text);
3769  } else if (element_equal(child_node, "WriteProtected")) {
3770  response->write_protected = xml_get_bool(client->log, doc, child_node);
3771  } else {
3772  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_response [%s]\n", child_node->name, root->name);
3773  }
3774 
3775  if (error != NULL) {
3776  break;
3777  }
3778 
3779  }
3780 
3781 
3782  *_response = response;
3783 
3784  return error;
3785 }
3786 
3787 static ds3_error* _parse_ds3_tape_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
3788  ds3_error* error = NULL;
3789  xmlNodePtr child_node;
3790  GPtrArray* ds3_tape_response_array = g_ptr_array_new();
3791 
3792  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3793  ds3_tape_response* response = NULL;
3794  error = _parse_ds3_tape_response(client, doc, child_node, &response);
3795  g_ptr_array_add(ds3_tape_response_array, response);
3796 
3797  if (error != NULL) {
3798  break;
3799  }
3800  }
3801 
3802  *_response = ds3_tape_response_array;
3803 
3804  return error;
3805 }
3806 static ds3_error* _parse_ds3_tape_density_directive_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_density_directive_response** _response) {
3808  xmlNodePtr child_node;
3809  ds3_error* error = NULL;
3810 
3811  response = g_new0(ds3_tape_density_directive_response, 1);
3812 
3813 
3814  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3815  if (element_equal(child_node, "Density")) {
3816  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3817  if (text == NULL) {
3818  continue;
3819  }
3820  response->density = _match_ds3_tape_drive_type(client->log, text);
3821  xmlFree(text);
3822  } else if (element_equal(child_node, "Id")) {
3823  response->id = xml_get_string(doc, child_node);
3824  } else if (element_equal(child_node, "PartitionId")) {
3825  response->partition_id = xml_get_string(doc, child_node);
3826  } else if (element_equal(child_node, "TapeType")) {
3827  response->tape_type = xml_get_string(doc, child_node);
3828  } else {
3829  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_density_directive_response [%s]\n", child_node->name, root->name);
3830  }
3831 
3832  if (error != NULL) {
3833  break;
3834  }
3835 
3836  }
3837 
3838 
3839  *_response = response;
3840 
3841  return error;
3842 }
3843 
3844 static ds3_error* _parse_ds3_tape_drive_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_drive_response** _response) {
3845  ds3_tape_drive_response* response;
3846  xmlNodePtr child_node;
3847  ds3_error* error = NULL;
3848 
3849  response = g_new0(ds3_tape_drive_response, 1);
3850 
3851 
3852  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3853  if (element_equal(child_node, "CleaningRequired")) {
3854  response->cleaning_required = xml_get_bool(client->log, doc, child_node);
3855  } else if (element_equal(child_node, "ErrorMessage")) {
3856  response->error_message = xml_get_string(doc, child_node);
3857  } else if (element_equal(child_node, "ForceTapeRemoval")) {
3858  response->force_tape_removal = xml_get_bool(client->log, doc, child_node);
3859  } else if (element_equal(child_node, "Id")) {
3860  response->id = xml_get_string(doc, child_node);
3861  } else if (element_equal(child_node, "LastCleaned")) {
3862  response->last_cleaned = xml_get_string(doc, child_node);
3863  } else if (element_equal(child_node, "MfgSerialNumber")) {
3864  response->mfg_serial_number = xml_get_string(doc, child_node);
3865  } else if (element_equal(child_node, "PartitionId")) {
3866  response->partition_id = xml_get_string(doc, child_node);
3867  } else if (element_equal(child_node, "Quiesced")) {
3868  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3869  if (text == NULL) {
3870  continue;
3871  }
3872  response->quiesced = _match_ds3_quiesced(client->log, text);
3873  xmlFree(text);
3874  } else if (element_equal(child_node, "ReservedTaskType")) {
3875  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3876  if (text == NULL) {
3877  continue;
3878  }
3879  response->reserved_task_type = _match_ds3_reserved_task_type(client->log, text);
3880  xmlFree(text);
3881  } else if (element_equal(child_node, "SerialNumber")) {
3882  response->serial_number = xml_get_string(doc, child_node);
3883  } else if (element_equal(child_node, "State")) {
3884  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3885  if (text == NULL) {
3886  continue;
3887  }
3888  response->state = _match_ds3_tape_drive_state(client->log, text);
3889  xmlFree(text);
3890  } else if (element_equal(child_node, "TapeId")) {
3891  response->tape_id = xml_get_string(doc, child_node);
3892  } else if (element_equal(child_node, "Type")) {
3893  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3894  if (text == NULL) {
3895  continue;
3896  }
3897  response->type = _match_ds3_tape_drive_type(client->log, text);
3898  xmlFree(text);
3899  } else {
3900  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_drive_response [%s]\n", child_node->name, root->name);
3901  }
3902 
3903  if (error != NULL) {
3904  break;
3905  }
3906 
3907  }
3908 
3909 
3910  *_response = response;
3911 
3912  return error;
3913 }
3914 
3915 static ds3_error* _parse_ds3_detailed_tape_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_detailed_tape_failure_response** _response) {
3917  xmlNodePtr child_node;
3918  ds3_error* error = NULL;
3919 
3920  response = g_new0(ds3_detailed_tape_failure_response, 1);
3921 
3922 
3923  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3924  if (element_equal(child_node, "Date")) {
3925  response->date = xml_get_string(doc, child_node);
3926  } else if (element_equal(child_node, "ErrorMessage")) {
3927  response->error_message = xml_get_string(doc, child_node);
3928  } else if (element_equal(child_node, "Id")) {
3929  response->id = xml_get_string(doc, child_node);
3930  } else if (element_equal(child_node, "TapeDriveId")) {
3931  response->tape_drive_id = xml_get_string(doc, child_node);
3932  } else if (element_equal(child_node, "TapeId")) {
3933  response->tape_id = xml_get_string(doc, child_node);
3934  } else if (element_equal(child_node, "Type")) {
3935  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3936  if (text == NULL) {
3937  continue;
3938  }
3939  response->type = _match_ds3_tape_failure_type(client->log, text);
3940  xmlFree(text);
3941  } else {
3942  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_tape_failure_response [%s]\n", child_node->name, root->name);
3943  }
3944 
3945  if (error != NULL) {
3946  break;
3947  }
3948 
3949  }
3950 
3951 
3952  *_response = response;
3953 
3954  return error;
3955 }
3956 
3957 static ds3_error* _parse_ds3_tape_library_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_library_response** _response) {
3958  ds3_tape_library_response* response;
3959  xmlNodePtr child_node;
3960  ds3_error* error = NULL;
3961 
3962  response = g_new0(ds3_tape_library_response, 1);
3963 
3964 
3965  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3966  if (element_equal(child_node, "Id")) {
3967  response->id = xml_get_string(doc, child_node);
3968  } else if (element_equal(child_node, "ManagementUrl")) {
3969  response->management_url = xml_get_string(doc, child_node);
3970  } else if (element_equal(child_node, "Name")) {
3971  response->name = xml_get_string(doc, child_node);
3972  } else if (element_equal(child_node, "SerialNumber")) {
3973  response->serial_number = xml_get_string(doc, child_node);
3974  } else {
3975  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_library_response [%s]\n", child_node->name, root->name);
3976  }
3977 
3978  if (error != NULL) {
3979  break;
3980  }
3981 
3982  }
3983 
3984 
3985  *_response = response;
3986 
3987  return error;
3988 }
3989 
3990 static ds3_error* _parse_ds3_tape_partition_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_partition_response** _response) {
3991  ds3_tape_partition_response* response;
3992  xmlNodePtr child_node;
3993  ds3_error* error = NULL;
3994 
3995  response = g_new0(ds3_tape_partition_response, 1);
3996 
3997 
3998  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3999  if (element_equal(child_node, "DriveType")) {
4000  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4001  if (text == NULL) {
4002  continue;
4003  }
4004  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
4005  xmlFree(text);
4006  } else if (element_equal(child_node, "ErrorMessage")) {
4007  response->error_message = xml_get_string(doc, child_node);
4008  } else if (element_equal(child_node, "Id")) {
4009  response->id = xml_get_string(doc, child_node);
4010  } else if (element_equal(child_node, "ImportExportConfiguration")) {
4011  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4012  if (text == NULL) {
4013  continue;
4014  }
4016  xmlFree(text);
4017  } else if (element_equal(child_node, "LibraryId")) {
4018  response->library_id = xml_get_string(doc, child_node);
4019  } else if (element_equal(child_node, "MinimumReadReservedDrives")) {
4020  response->minimum_read_reserved_drives = xml_get_uint16(doc, child_node);
4021  } else if (element_equal(child_node, "MinimumWriteReservedDrives")) {
4022  response->minimum_write_reserved_drives = xml_get_uint16(doc, child_node);
4023  } else if (element_equal(child_node, "Name")) {
4024  response->name = xml_get_string(doc, child_node);
4025  } else if (element_equal(child_node, "Quiesced")) {
4026  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4027  if (text == NULL) {
4028  continue;
4029  }
4030  response->quiesced = _match_ds3_quiesced(client->log, text);
4031  xmlFree(text);
4032  } else if (element_equal(child_node, "SerialId")) {
4033  response->serial_id = xml_get_string(doc, child_node);
4034  } else if (element_equal(child_node, "SerialNumber")) {
4035  response->serial_number = xml_get_string(doc, child_node);
4036  } else if (element_equal(child_node, "State")) {
4037  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4038  if (text == NULL) {
4039  continue;
4040  }
4041  response->state = _match_ds3_tape_partition_state(client->log, text);
4042  xmlFree(text);
4043  } else {
4044  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_response [%s]\n", child_node->name, root->name);
4045  }
4046 
4047  if (error != NULL) {
4048  break;
4049  }
4050 
4051  }
4052 
4053 
4054  *_response = response;
4055 
4056  return error;
4057 }
4058 
4059 static ds3_error* _parse_ds3_tape_partition_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_partition_failure_response** _response) {
4061  xmlNodePtr child_node;
4062  ds3_error* error = NULL;
4063 
4064  response = g_new0(ds3_tape_partition_failure_response, 1);
4065 
4066 
4067  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4068  if (element_equal(child_node, "Date")) {
4069  response->date = xml_get_string(doc, child_node);
4070  } else if (element_equal(child_node, "ErrorMessage")) {
4071  response->error_message = xml_get_string(doc, child_node);
4072  } else if (element_equal(child_node, "Id")) {
4073  response->id = xml_get_string(doc, child_node);
4074  } else if (element_equal(child_node, "PartitionId")) {
4075  response->partition_id = xml_get_string(doc, child_node);
4076  } else if (element_equal(child_node, "Type")) {
4077  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4078  if (text == NULL) {
4079  continue;
4080  }
4081  response->type = _match_ds3_tape_partition_failure_type(client->log, text);
4082  xmlFree(text);
4083  } else {
4084  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_failure_response [%s]\n", child_node->name, root->name);
4085  }
4086 
4087  if (error != NULL) {
4088  break;
4089  }
4090 
4091  }
4092 
4093 
4094  *_response = response;
4095 
4096  return error;
4097 }
4098 
4099 static ds3_error* _parse_ds3_azure_target_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_target_response** _response) {
4100  ds3_azure_target_response* response;
4101  xmlNodePtr child_node;
4102  ds3_error* error = NULL;
4103 
4104  response = g_new0(ds3_azure_target_response, 1);
4105 
4106 
4107  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4108  if (element_equal(child_node, "AccountKey")) {
4109  response->account_key = xml_get_string(doc, child_node);
4110  } else if (element_equal(child_node, "AccountName")) {
4111  response->account_name = xml_get_string(doc, child_node);
4112  } else if (element_equal(child_node, "AutoVerifyFrequencyInDays")) {
4113  response->auto_verify_frequency_in_days = xml_get_uint16(doc, child_node);
4114  } else if (element_equal(child_node, "CloudBucketPrefix")) {
4115  response->cloud_bucket_prefix = xml_get_string(doc, child_node);
4116  } else if (element_equal(child_node, "CloudBucketSuffix")) {
4117  response->cloud_bucket_suffix = xml_get_string(doc, child_node);
4118  } else if (element_equal(child_node, "DefaultReadPreference")) {
4119  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4120  if (text == NULL) {
4121  continue;
4122  }
4124  xmlFree(text);
4125  } else if (element_equal(child_node, "Https")) {
4126  response->https = xml_get_bool(client->log, doc, child_node);
4127  } else if (element_equal(child_node, "Id")) {
4128  response->id = xml_get_string(doc, child_node);
4129  } else if (element_equal(child_node, "LastFullyVerified")) {
4130  response->last_fully_verified = xml_get_string(doc, child_node);
4131  } else if (element_equal(child_node, "Name")) {
4132  response->name = xml_get_string(doc, child_node);
4133  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
4134  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
4135  } else if (element_equal(child_node, "Quiesced")) {
4136  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4137  if (text == NULL) {
4138  continue;
4139  }
4140  response->quiesced = _match_ds3_quiesced(client->log, text);
4141  xmlFree(text);
4142  } else if (element_equal(child_node, "State")) {
4143  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4144  if (text == NULL) {
4145  continue;
4146  }
4147  response->state = _match_ds3_target_state(client->log, text);
4148  xmlFree(text);
4149  } else {
4150  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_response [%s]\n", child_node->name, root->name);
4151  }
4152 
4153  if (error != NULL) {
4154  break;
4155  }
4156 
4157  }
4158 
4159 
4160  *_response = response;
4161 
4162  return error;
4163 }
4164 
4165 static ds3_error* _parse_ds3_azure_target_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4166  ds3_error* error = NULL;
4167  xmlNodePtr child_node;
4168  GPtrArray* ds3_azure_target_response_array = g_ptr_array_new();
4169 
4170  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4171  ds3_azure_target_response* response = NULL;
4172  error = _parse_ds3_azure_target_response(client, doc, child_node, &response);
4173  g_ptr_array_add(ds3_azure_target_response_array, response);
4174 
4175  if (error != NULL) {
4176  break;
4177  }
4178  }
4179 
4180  *_response = ds3_azure_target_response_array;
4181 
4182  return error;
4183 }
4184 static ds3_error* _parse_ds3_azure_target_bucket_name_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_target_bucket_name_response** _response) {
4186  xmlNodePtr child_node;
4187  ds3_error* error = NULL;
4188 
4189  response = g_new0(ds3_azure_target_bucket_name_response, 1);
4190 
4191 
4192  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4193  if (element_equal(child_node, "BucketId")) {
4194  response->bucket_id = xml_get_string(doc, child_node);
4195  } else if (element_equal(child_node, "Id")) {
4196  response->id = xml_get_string(doc, child_node);
4197  } else if (element_equal(child_node, "Name")) {
4198  response->name = xml_get_string(doc, child_node);
4199  } else if (element_equal(child_node, "TargetId")) {
4200  response->target_id = xml_get_string(doc, child_node);
4201  } else {
4202  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_bucket_name_response [%s]\n", child_node->name, root->name);
4203  }
4204 
4205  if (error != NULL) {
4206  break;
4207  }
4208 
4209  }
4210 
4211 
4212  *_response = response;
4213 
4214  return error;
4215 }
4216 
4217 static ds3_error* _parse_ds3_azure_target_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_target_failure_response** _response) {
4219  xmlNodePtr child_node;
4220  ds3_error* error = NULL;
4221 
4222  response = g_new0(ds3_azure_target_failure_response, 1);
4223 
4224 
4225  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4226  if (element_equal(child_node, "Date")) {
4227  response->date = xml_get_string(doc, child_node);
4228  } else if (element_equal(child_node, "ErrorMessage")) {
4229  response->error_message = xml_get_string(doc, child_node);
4230  } else if (element_equal(child_node, "Id")) {
4231  response->id = xml_get_string(doc, child_node);
4232  } else if (element_equal(child_node, "TargetId")) {
4233  response->target_id = xml_get_string(doc, child_node);
4234  } else if (element_equal(child_node, "Type")) {
4235  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4236  if (text == NULL) {
4237  continue;
4238  }
4239  response->type = _match_ds3_target_failure_type(client->log, text);
4240  xmlFree(text);
4241  } else {
4242  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_failure_response [%s]\n", child_node->name, root->name);
4243  }
4244 
4245  if (error != NULL) {
4246  break;
4247  }
4248 
4249  }
4250 
4251 
4252  *_response = response;
4253 
4254  return error;
4255 }
4256 
4257 static ds3_error* _parse_ds3_azure_target_read_preference_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_target_read_preference_response** _response) {
4259  xmlNodePtr child_node;
4260  ds3_error* error = NULL;
4261 
4262  response = g_new0(ds3_azure_target_read_preference_response, 1);
4263 
4264 
4265  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4266  if (element_equal(child_node, "BucketId")) {
4267  response->bucket_id = xml_get_string(doc, child_node);
4268  } else if (element_equal(child_node, "Id")) {
4269  response->id = xml_get_string(doc, child_node);
4270  } else if (element_equal(child_node, "ReadPreference")) {
4271  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4272  if (text == NULL) {
4273  continue;
4274  }
4275  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
4276  xmlFree(text);
4277  } else if (element_equal(child_node, "TargetId")) {
4278  response->target_id = xml_get_string(doc, child_node);
4279  } else {
4280  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_read_preference_response [%s]\n", child_node->name, root->name);
4281  }
4282 
4283  if (error != NULL) {
4284  break;
4285  }
4286 
4287  }
4288 
4289 
4290  *_response = response;
4291 
4292  return error;
4293 }
4294 
4295 static ds3_error* _parse_ds3_target_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_target_response** _response) {
4296  ds3_target_response* response;
4297  xmlNodePtr child_node;
4298  ds3_error* error = NULL;
4299 
4300  response = g_new0(ds3_target_response, 1);
4301 
4302 
4303  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4304  if (element_equal(child_node, "AccessControlReplication")) {
4305  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4306  if (text == NULL) {
4307  continue;
4308  }
4310  xmlFree(text);
4311  } else if (element_equal(child_node, "AdminAuthId")) {
4312  response->admin_auth_id = xml_get_string(doc, child_node);
4313  } else if (element_equal(child_node, "AdminSecretKey")) {
4314  response->admin_secret_key = xml_get_string(doc, child_node);
4315  } else if (element_equal(child_node, "DataPathEndPoint")) {
4316  response->data_path_end_point = xml_get_string(doc, child_node);
4317  } else if (element_equal(child_node, "DataPathHttps")) {
4318  response->data_path_https = xml_get_bool(client->log, doc, child_node);
4319  } else if (element_equal(child_node, "DataPathPort")) {
4320  response->data_path_port = xml_get_uint16(doc, child_node);
4321  } else if (element_equal(child_node, "DataPathProxy")) {
4322  response->data_path_proxy = xml_get_string(doc, child_node);
4323  } else if (element_equal(child_node, "DataPathVerifyCertificate")) {
4324  response->data_path_verify_certificate = xml_get_bool(client->log, doc, child_node);
4325  } else if (element_equal(child_node, "DefaultReadPreference")) {
4326  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4327  if (text == NULL) {
4328  continue;
4329  }
4331  xmlFree(text);
4332  } else if (element_equal(child_node, "Id")) {
4333  response->id = xml_get_string(doc, child_node);
4334  } else if (element_equal(child_node, "Name")) {
4335  response->name = xml_get_string(doc, child_node);
4336  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
4337  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
4338  } else if (element_equal(child_node, "Quiesced")) {
4339  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4340  if (text == NULL) {
4341  continue;
4342  }
4343  response->quiesced = _match_ds3_quiesced(client->log, text);
4344  xmlFree(text);
4345  } else if (element_equal(child_node, "ReplicatedUserDefaultDataPolicy")) {
4346  response->replicated_user_default_data_policy = xml_get_string(doc, child_node);
4347  } else if (element_equal(child_node, "State")) {
4348  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4349  if (text == NULL) {
4350  continue;
4351  }
4352  response->state = _match_ds3_target_state(client->log, text);
4353  xmlFree(text);
4354  } else {
4355  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_response [%s]\n", child_node->name, root->name);
4356  }
4357 
4358  if (error != NULL) {
4359  break;
4360  }
4361 
4362  }
4363 
4364 
4365  *_response = response;
4366 
4367  return error;
4368 }
4369 
4370 static ds3_error* _parse_ds3_target_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4371  ds3_error* error = NULL;
4372  xmlNodePtr child_node;
4373  GPtrArray* ds3_target_response_array = g_ptr_array_new();
4374 
4375  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4376  ds3_target_response* response = NULL;
4377  error = _parse_ds3_target_response(client, doc, child_node, &response);
4378  g_ptr_array_add(ds3_target_response_array, response);
4379 
4380  if (error != NULL) {
4381  break;
4382  }
4383  }
4384 
4385  *_response = ds3_target_response_array;
4386 
4387  return error;
4388 }
4389 static ds3_error* _parse_ds3_target_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_target_failure_response** _response) {
4390  ds3_target_failure_response* response;
4391  xmlNodePtr child_node;
4392  ds3_error* error = NULL;
4393 
4394  response = g_new0(ds3_target_failure_response, 1);
4395 
4396 
4397  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4398  if (element_equal(child_node, "Date")) {
4399  response->date = xml_get_string(doc, child_node);
4400  } else if (element_equal(child_node, "ErrorMessage")) {
4401  response->error_message = xml_get_string(doc, child_node);
4402  } else if (element_equal(child_node, "Id")) {
4403  response->id = xml_get_string(doc, child_node);
4404  } else if (element_equal(child_node, "TargetId")) {
4405  response->target_id = xml_get_string(doc, child_node);
4406  } else if (element_equal(child_node, "Type")) {
4407  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4408  if (text == NULL) {
4409  continue;
4410  }
4411  response->type = _match_ds3_target_failure_type(client->log, text);
4412  xmlFree(text);
4413  } else {
4414  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_failure_response [%s]\n", child_node->name, root->name);
4415  }
4416 
4417  if (error != NULL) {
4418  break;
4419  }
4420 
4421  }
4422 
4423 
4424  *_response = response;
4425 
4426  return error;
4427 }
4428 
4429 static ds3_error* _parse_ds3_target_read_preference_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_target_read_preference_response** _response) {
4431  xmlNodePtr child_node;
4432  ds3_error* error = NULL;
4433 
4434  response = g_new0(ds3_target_read_preference_response, 1);
4435 
4436 
4437  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4438  if (element_equal(child_node, "BucketId")) {
4439  response->bucket_id = xml_get_string(doc, child_node);
4440  } else if (element_equal(child_node, "Id")) {
4441  response->id = xml_get_string(doc, child_node);
4442  } else if (element_equal(child_node, "ReadPreference")) {
4443  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4444  if (text == NULL) {
4445  continue;
4446  }
4447  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
4448  xmlFree(text);
4449  } else if (element_equal(child_node, "TargetId")) {
4450  response->target_id = xml_get_string(doc, child_node);
4451  } else {
4452  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_read_preference_response [%s]\n", child_node->name, root->name);
4453  }
4454 
4455  if (error != NULL) {
4456  break;
4457  }
4458 
4459  }
4460 
4461 
4462  *_response = response;
4463 
4464  return error;
4465 }
4466 
4467 static ds3_error* _parse_ds3_s3_target_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_target_response** _response) {
4468  ds3_s3_target_response* response;
4469  xmlNodePtr child_node;
4470  ds3_error* error = NULL;
4471 
4472  response = g_new0(ds3_s3_target_response, 1);
4473 
4474 
4475  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4476  if (element_equal(child_node, "AccessKey")) {
4477  response->access_key = xml_get_string(doc, child_node);
4478  } else if (element_equal(child_node, "AutoVerifyFrequencyInDays")) {
4479  response->auto_verify_frequency_in_days = xml_get_uint16(doc, child_node);
4480  } else if (element_equal(child_node, "CloudBucketPrefix")) {
4481  response->cloud_bucket_prefix = xml_get_string(doc, child_node);
4482  } else if (element_equal(child_node, "CloudBucketSuffix")) {
4483  response->cloud_bucket_suffix = xml_get_string(doc, child_node);
4484  } else if (element_equal(child_node, "DataPathEndPoint")) {
4485  response->data_path_end_point = xml_get_string(doc, child_node);
4486  } else if (element_equal(child_node, "DefaultReadPreference")) {
4487  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4488  if (text == NULL) {
4489  continue;
4490  }
4492  xmlFree(text);
4493  } else if (element_equal(child_node, "Https")) {
4494  response->https = xml_get_bool(client->log, doc, child_node);
4495  } else if (element_equal(child_node, "Id")) {
4496  response->id = xml_get_string(doc, child_node);
4497  } else if (element_equal(child_node, "LastFullyVerified")) {
4498  response->last_fully_verified = xml_get_string(doc, child_node);
4499  } else if (element_equal(child_node, "Name")) {
4500  response->name = xml_get_string(doc, child_node);
4501  } else if (element_equal(child_node, "OfflineDataStagingWindowInTb")) {
4502  response->offline_data_staging_window_in_tb = xml_get_uint16(doc, child_node);
4503  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
4504  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
4505  } else if (element_equal(child_node, "ProxyDomain")) {
4506  response->proxy_domain = xml_get_string(doc, child_node);
4507  } else if (element_equal(child_node, "ProxyHost")) {
4508  response->proxy_host = xml_get_string(doc, child_node);
4509  } else if (element_equal(child_node, "ProxyPassword")) {
4510  response->proxy_password = xml_get_string(doc, child_node);
4511  } else if (element_equal(child_node, "ProxyPort")) {
4512  response->proxy_port = xml_get_uint16(doc, child_node);
4513  } else if (element_equal(child_node, "ProxyUsername")) {
4514  response->proxy_username = xml_get_string(doc, child_node);
4515  } else if (element_equal(child_node, "Quiesced")) {
4516  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4517  if (text == NULL) {
4518  continue;
4519  }
4520  response->quiesced = _match_ds3_quiesced(client->log, text);
4521  xmlFree(text);
4522  } else if (element_equal(child_node, "Region")) {
4523  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4524  if (text == NULL) {
4525  continue;
4526  }
4527  response->region = _match_ds3_s3_region(client->log, text);
4528  xmlFree(text);
4529  } else if (element_equal(child_node, "SecretKey")) {
4530  response->secret_key = xml_get_string(doc, child_node);
4531  } else if (element_equal(child_node, "StagedDataExpirationInDays")) {
4532  response->staged_data_expiration_in_days = xml_get_uint16(doc, child_node);
4533  } else if (element_equal(child_node, "State")) {
4534  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4535  if (text == NULL) {
4536  continue;
4537  }
4538  response->state = _match_ds3_target_state(client->log, text);
4539  xmlFree(text);
4540  } else {
4541  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_response [%s]\n", child_node->name, root->name);
4542  }
4543 
4544  if (error != NULL) {
4545  break;
4546  }
4547 
4548  }
4549 
4550 
4551  *_response = response;
4552 
4553  return error;
4554 }
4555 
4556 static ds3_error* _parse_ds3_s3_target_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4557  ds3_error* error = NULL;
4558  xmlNodePtr child_node;
4559  GPtrArray* ds3_s3_target_response_array = g_ptr_array_new();
4560 
4561  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4562  ds3_s3_target_response* response = NULL;
4563  error = _parse_ds3_s3_target_response(client, doc, child_node, &response);
4564  g_ptr_array_add(ds3_s3_target_response_array, response);
4565 
4566  if (error != NULL) {
4567  break;
4568  }
4569  }
4570 
4571  *_response = ds3_s3_target_response_array;
4572 
4573  return error;
4574 }
4575 static ds3_error* _parse_ds3_s3_target_bucket_name_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_target_bucket_name_response** _response) {
4577  xmlNodePtr child_node;
4578  ds3_error* error = NULL;
4579 
4580  response = g_new0(ds3_s3_target_bucket_name_response, 1);
4581 
4582 
4583  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4584  if (element_equal(child_node, "BucketId")) {
4585  response->bucket_id = xml_get_string(doc, child_node);
4586  } else if (element_equal(child_node, "Id")) {
4587  response->id = xml_get_string(doc, child_node);
4588  } else if (element_equal(child_node, "Name")) {
4589  response->name = xml_get_string(doc, child_node);
4590  } else if (element_equal(child_node, "TargetId")) {
4591  response->target_id = xml_get_string(doc, child_node);
4592  } else {
4593  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_bucket_name_response [%s]\n", child_node->name, root->name);
4594  }
4595 
4596  if (error != NULL) {
4597  break;
4598  }
4599 
4600  }
4601 
4602 
4603  *_response = response;
4604 
4605  return error;
4606 }
4607 
4608 static ds3_error* _parse_ds3_s3_target_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_target_failure_response** _response) {
4610  xmlNodePtr child_node;
4611  ds3_error* error = NULL;
4612 
4613  response = g_new0(ds3_s3_target_failure_response, 1);
4614 
4615 
4616  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4617  if (element_equal(child_node, "Date")) {
4618  response->date = xml_get_string(doc, child_node);
4619  } else if (element_equal(child_node, "ErrorMessage")) {
4620  response->error_message = xml_get_string(doc, child_node);
4621  } else if (element_equal(child_node, "Id")) {
4622  response->id = xml_get_string(doc, child_node);
4623  } else if (element_equal(child_node, "TargetId")) {
4624  response->target_id = xml_get_string(doc, child_node);
4625  } else if (element_equal(child_node, "Type")) {
4626  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4627  if (text == NULL) {
4628  continue;
4629  }
4630  response->type = _match_ds3_target_failure_type(client->log, text);
4631  xmlFree(text);
4632  } else {
4633  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_failure_response [%s]\n", child_node->name, root->name);
4634  }
4635 
4636  if (error != NULL) {
4637  break;
4638  }
4639 
4640  }
4641 
4642 
4643  *_response = response;
4644 
4645  return error;
4646 }
4647 
4648 static ds3_error* _parse_ds3_s3_target_read_preference_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_target_read_preference_response** _response) {
4650  xmlNodePtr child_node;
4651  ds3_error* error = NULL;
4652 
4653  response = g_new0(ds3_s3_target_read_preference_response, 1);
4654 
4655 
4656  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4657  if (element_equal(child_node, "BucketId")) {
4658  response->bucket_id = xml_get_string(doc, child_node);
4659  } else if (element_equal(child_node, "Id")) {
4660  response->id = xml_get_string(doc, child_node);
4661  } else if (element_equal(child_node, "ReadPreference")) {
4662  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4663  if (text == NULL) {
4664  continue;
4665  }
4666  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
4667  xmlFree(text);
4668  } else if (element_equal(child_node, "TargetId")) {
4669  response->target_id = xml_get_string(doc, child_node);
4670  } else {
4671  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_read_preference_response [%s]\n", child_node->name, root->name);
4672  }
4673 
4674  if (error != NULL) {
4675  break;
4676  }
4677 
4678  }
4679 
4680 
4681  *_response = response;
4682 
4683  return error;
4684 }
4685 
4686 static ds3_error* _parse_ds3_suspect_blob_azure_target_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_suspect_blob_azure_target_response** _response) {
4688  xmlNodePtr child_node;
4689  ds3_error* error = NULL;
4690 
4691  response = g_new0(ds3_suspect_blob_azure_target_response, 1);
4692 
4693 
4694  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4695  if (element_equal(child_node, "BlobId")) {
4696  response->blob_id = xml_get_string(doc, child_node);
4697  } else if (element_equal(child_node, "Id")) {
4698  response->id = xml_get_string(doc, child_node);
4699  } else if (element_equal(child_node, "TargetId")) {
4700  response->target_id = xml_get_string(doc, child_node);
4701  } else {
4702  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_azure_target_response [%s]\n", child_node->name, root->name);
4703  }
4704 
4705  if (error != NULL) {
4706  break;
4707  }
4708 
4709  }
4710 
4711 
4712  *_response = response;
4713 
4714  return error;
4715 }
4716 
4717 static ds3_error* _parse_ds3_suspect_blob_ds3_target_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_suspect_blob_ds3_target_response** _response) {
4719  xmlNodePtr child_node;
4720  ds3_error* error = NULL;
4721 
4722  response = g_new0(ds3_suspect_blob_ds3_target_response, 1);
4723 
4724 
4725  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4726  if (element_equal(child_node, "BlobId")) {
4727  response->blob_id = xml_get_string(doc, child_node);
4728  } else if (element_equal(child_node, "Id")) {
4729  response->id = xml_get_string(doc, child_node);
4730  } else if (element_equal(child_node, "TargetId")) {
4731  response->target_id = xml_get_string(doc, child_node);
4732  } else {
4733  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_ds3_target_response [%s]\n", child_node->name, root->name);
4734  }
4735 
4736  if (error != NULL) {
4737  break;
4738  }
4739 
4740  }
4741 
4742 
4743  *_response = response;
4744 
4745  return error;
4746 }
4747 
4748 static ds3_error* _parse_ds3_suspect_blob_s3_target_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_suspect_blob_s3_target_response** _response) {
4750  xmlNodePtr child_node;
4751  ds3_error* error = NULL;
4752 
4753  response = g_new0(ds3_suspect_blob_s3_target_response, 1);
4754 
4755 
4756  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4757  if (element_equal(child_node, "BlobId")) {
4758  response->blob_id = xml_get_string(doc, child_node);
4759  } else if (element_equal(child_node, "Id")) {
4760  response->id = xml_get_string(doc, child_node);
4761  } else if (element_equal(child_node, "TargetId")) {
4762  response->target_id = xml_get_string(doc, child_node);
4763  } else {
4764  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_s3_target_response [%s]\n", child_node->name, root->name);
4765  }
4766 
4767  if (error != NULL) {
4768  break;
4769  }
4770 
4771  }
4772 
4773 
4774  *_response = response;
4775 
4776  return error;
4777 }
4778 
4779 static ds3_error* _parse_ds3_build_information_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_build_information_response** _response) {
4781  xmlNodePtr child_node;
4782  ds3_error* error = NULL;
4783 
4784  response = g_new0(ds3_build_information_response, 1);
4785 
4786 
4787  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4788  if (element_equal(child_node, "Branch")) {
4789  response->branch = xml_get_string(doc, child_node);
4790  } else if (element_equal(child_node, "Revision")) {
4791  response->revision = xml_get_string(doc, child_node);
4792  } else if (element_equal(child_node, "Version")) {
4793  response->version = xml_get_string(doc, child_node);
4794  } else {
4795  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_build_information_response [%s]\n", child_node->name, root->name);
4796  }
4797 
4798  if (error != NULL) {
4799  break;
4800  }
4801 
4802  }
4803 
4804 
4805  *_response = response;
4806 
4807  return error;
4808 }
4809 
4810 static ds3_error* _parse_ds3_set_of_tape_bar_codes_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_set_of_tape_bar_codes_response** _response) {
4812  xmlNodePtr child_node;
4813  ds3_error* error = NULL;
4814  GPtrArray* tape_bar_codes_array = g_ptr_array_new();
4815 
4816  response = g_new0(ds3_set_of_tape_bar_codes_response, 1);
4817 
4818 
4819  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4820  if (element_equal(child_node, "TapeBarCodes")) {
4821  xmlNodePtr loop_node;
4822  GPtrArray* tape_bar_codes_array = g_ptr_array_new();
4823  int num_nodes = 0;
4824  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
4825  ds3_str* tape_bar_codes = xml_get_string(doc, loop_node);
4826  g_ptr_array_add(tape_bar_codes_array, tape_bar_codes);
4827  }
4828  response->tape_bar_codes = (ds3_str**)tape_bar_codes_array->pdata;
4829  response->num_tape_bar_codes = tape_bar_codes_array->len;
4830  g_ptr_array_free(tape_bar_codes_array, FALSE);
4831  } else {
4832  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_set_of_tape_bar_codes_response [%s]\n", child_node->name, root->name);
4833  }
4834 
4835  if (error != NULL) {
4836  break;
4837  }
4838 
4839  }
4840 
4841  response->tape_bar_codes = (ds3_str**)tape_bar_codes_array->pdata;
4842  response->num_tape_bar_codes = tape_bar_codes_array->len;
4843  g_ptr_array_free(tape_bar_codes_array, FALSE);
4844 
4845  *_response = response;
4846 
4847  return error;
4848 }
4849 
4850 static ds3_error* _parse_ds3_tapes_must_be_onlined_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tapes_must_be_onlined_response** _response) {
4852  xmlNodePtr child_node;
4853  ds3_error* error = NULL;
4854  GPtrArray* tapes_to_online_array = g_ptr_array_new();
4855 
4856  response = g_new0(ds3_tapes_must_be_onlined_response, 1);
4857 
4858 
4859  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4860  if (element_equal(child_node, "TapesToOnline")) {
4861  ds3_set_of_tape_bar_codes_response* tapes_to_online_response = NULL;
4862  error = _parse_ds3_set_of_tape_bar_codes_response(client, doc, child_node, &tapes_to_online_response);
4863  response->tapes_to_online = (ds3_set_of_tape_bar_codes_response**)tapes_to_online_array->pdata;
4864  g_ptr_array_add(tapes_to_online_array, tapes_to_online_response);
4865  } else {
4866  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tapes_must_be_onlined_response [%s]\n", child_node->name, root->name);
4867  }
4868 
4869  if (error != NULL) {
4870  break;
4871  }
4872 
4873  }
4874 
4875  response->tapes_to_online = (ds3_set_of_tape_bar_codes_response**)tapes_to_online_array->pdata;
4876  response->num_tapes_to_online = tapes_to_online_array->len;
4877  g_ptr_array_free(tapes_to_online_array, FALSE);
4878 
4879  if (error == NULL) {
4880  *_response = response;
4881  } else {
4883  }
4884 
4885  return error;
4886 }
4887 
4888 static ds3_error* _parse_ds3_blob_store_task_information_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_blob_store_task_information_response** _response) {
4890  xmlNodePtr child_node;
4891  ds3_error* error = NULL;
4892 
4893  response = g_new0(ds3_blob_store_task_information_response, 1);
4894 
4895 
4896  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4897  if (element_equal(child_node, "DateScheduled")) {
4898  response->date_scheduled = xml_get_string(doc, child_node);
4899  } else if (element_equal(child_node, "DateStarted")) {
4900  response->date_started = xml_get_string(doc, child_node);
4901  } else if (element_equal(child_node, "Description")) {
4902  response->description = xml_get_string(doc, child_node);
4903  } else if (element_equal(child_node, "DriveId")) {
4904  response->drive_id = xml_get_string(doc, child_node);
4905  } else if (element_equal(child_node, "Id")) {
4906  response->id = xml_get_uint64(doc, child_node);
4907  } else if (element_equal(child_node, "Name")) {
4908  response->name = xml_get_string(doc, child_node);
4909  } else if (element_equal(child_node, "PoolId")) {
4910  response->pool_id = xml_get_string(doc, child_node);
4911  } else if (element_equal(child_node, "Priority")) {
4912  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4913  if (text == NULL) {
4914  continue;
4915  }
4916  response->priority = _match_ds3_priority(client->log, text);
4917  xmlFree(text);
4918  } else if (element_equal(child_node, "State")) {
4919  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4920  if (text == NULL) {
4921  continue;
4922  }
4923  response->state = _match_ds3_blob_store_task_state(client->log, text);
4924  xmlFree(text);
4925  } else if (element_equal(child_node, "TapeId")) {
4926  response->tape_id = xml_get_string(doc, child_node);
4927  } else if (element_equal(child_node, "TargetId")) {
4928  response->target_id = xml_get_string(doc, child_node);
4929  } else if (element_equal(child_node, "TargetType")) {
4930  response->target_type = xml_get_string(doc, child_node);
4931  } else {
4932  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_blob_store_task_information_response [%s]\n", child_node->name, root->name);
4933  }
4934 
4935  if (error != NULL) {
4936  break;
4937  }
4938 
4939  }
4940 
4941 
4942  *_response = response;
4943 
4944  return error;
4945 }
4946 
4947 static ds3_error* _parse_ds3_cache_entry_information_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_cache_entry_information_response** _response) {
4949  xmlNodePtr child_node;
4950  ds3_error* error = NULL;
4951 
4952  response = g_new0(ds3_cache_entry_information_response, 1);
4953 
4954 
4955  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4956  if (element_equal(child_node, "Blob")) {
4957  error = _parse_ds3_blob_response(client, doc, child_node, &response->blob);
4958  } else if (element_equal(child_node, "State")) {
4959  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4960  if (text == NULL) {
4961  continue;
4962  }
4963  response->state = _match_ds3_cache_entry_state(client->log, text);
4964  xmlFree(text);
4965  } else {
4966  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_entry_information_response [%s]\n", child_node->name, root->name);
4967  }
4968 
4969  if (error != NULL) {
4970  break;
4971  }
4972 
4973  }
4974 
4975 
4976  if (error == NULL) {
4977  *_response = response;
4978  } else {
4980  }
4981 
4982  return error;
4983 }
4984 
4985 static ds3_error* _parse_ds3_cache_filesystem_information_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_cache_filesystem_information_response** _response) {
4987  xmlNodePtr child_node;
4988  ds3_error* error = NULL;
4989  GPtrArray* entries_array = g_ptr_array_new();
4990 
4991  response = g_new0(ds3_cache_filesystem_information_response, 1);
4992 
4993 
4994  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4995  if (element_equal(child_node, "AvailableCapacityInBytes")) {
4996  response->available_capacity_in_bytes = xml_get_uint64(doc, child_node);
4997  } else if (element_equal(child_node, "CacheFilesystem")) {
4998  error = _parse_ds3_cache_filesystem_response(client, doc, child_node, &response->cache_filesystem);
4999  } else if (element_equal(child_node, "Entries")) {
5000  ds3_cache_entry_information_response* entries_response = NULL;
5001  error = _parse_ds3_cache_entry_information_response(client, doc, child_node, &entries_response);
5002  response->entries = (ds3_cache_entry_information_response**)entries_array->pdata;
5003  g_ptr_array_add(entries_array, entries_response);
5004  } else if (element_equal(child_node, "Summary")) {
5005  response->summary = xml_get_string(doc, child_node);
5006  } else if (element_equal(child_node, "TotalCapacityInBytes")) {
5007  response->total_capacity_in_bytes = xml_get_uint64(doc, child_node);
5008  } else if (element_equal(child_node, "UnavailableCapacityInBytes")) {
5009  response->unavailable_capacity_in_bytes = xml_get_uint64(doc, child_node);
5010  } else if (element_equal(child_node, "UsedCapacityInBytes")) {
5011  response->used_capacity_in_bytes = xml_get_uint64(doc, child_node);
5012  } else {
5013  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_information_response [%s]\n", child_node->name, root->name);
5014  }
5015 
5016  if (error != NULL) {
5017  break;
5018  }
5019 
5020  }
5021 
5022  response->entries = (ds3_cache_entry_information_response**)entries_array->pdata;
5023  response->num_entries = entries_array->len;
5024  g_ptr_array_free(entries_array, FALSE);
5025 
5026  if (error == NULL) {
5027  *_response = response;
5028  } else {
5030  }
5031 
5032  return error;
5033 }
5034 
5035 static ds3_error* _parse_ds3_bucket_details_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_details_response** _response) {
5036  ds3_bucket_details_response* response;
5037  xmlNodePtr child_node;
5038  ds3_error* error = NULL;
5039 
5040  response = g_new0(ds3_bucket_details_response, 1);
5041 
5042 
5043  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5044  if (element_equal(child_node, "CreationDate")) {
5045  response->creation_date = xml_get_string(doc, child_node);
5046  } else if (element_equal(child_node, "Name")) {
5047  response->name = xml_get_string(doc, child_node);
5048  } else {
5049  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_details_response [%s]\n", child_node->name, root->name);
5050  }
5051 
5052  if (error != NULL) {
5053  break;
5054  }
5055 
5056  }
5057 
5058 
5059  *_response = response;
5060 
5061  return error;
5062 }
5063 
5064 static ds3_error* _parse_ds3_bucket_details_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5065  ds3_error* error = NULL;
5066  xmlNodePtr child_node;
5067  GPtrArray* ds3_bucket_details_response_array = g_ptr_array_new();
5068 
5069  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5070  ds3_bucket_details_response* response = NULL;
5071  error = _parse_ds3_bucket_details_response(client, doc, child_node, &response);
5072  g_ptr_array_add(ds3_bucket_details_response_array, response);
5073 
5074  if (error != NULL) {
5075  break;
5076  }
5077  }
5078 
5079  *_response = ds3_bucket_details_response_array;
5080 
5081  return error;
5082 }
5083 static ds3_error* _parse_ds3_delete_object_error_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_delete_object_error_response** _response) {
5085  xmlNodePtr child_node;
5086  ds3_error* error = NULL;
5087 
5088  response = g_new0(ds3_delete_object_error_response, 1);
5089 
5090 
5091  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5092  if (element_equal(child_node, "Code")) {
5093  response->code = xml_get_string(doc, child_node);
5094  } else if (element_equal(child_node, "Key")) {
5095  response->key = xml_get_string(doc, child_node);
5096  } else if (element_equal(child_node, "Message")) {
5097  response->message = xml_get_string(doc, child_node);
5098  } else {
5099  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_delete_object_error_response [%s]\n", child_node->name, root->name);
5100  }
5101 
5102  if (error != NULL) {
5103  break;
5104  }
5105 
5106  }
5107 
5108 
5109  *_response = response;
5110 
5111  return error;
5112 }
5113 
5114 static ds3_error* _parse_ds3_multi_part_upload_part_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_multi_part_upload_part_response** _response) {
5116  xmlNodePtr child_node;
5117  ds3_error* error = NULL;
5118 
5119  response = g_new0(ds3_multi_part_upload_part_response, 1);
5120 
5121 
5122  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5123  if (element_equal(child_node, "ETag")) {
5124  response->e_tag = xml_get_string(doc, child_node);
5125  } else if (element_equal(child_node, "LastModified")) {
5126  response->last_modified = xml_get_string(doc, child_node);
5127  } else if (element_equal(child_node, "PartNumber")) {
5128  response->part_number = xml_get_uint16(doc, child_node);
5129  } else {
5130  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_multi_part_upload_part_response [%s]\n", child_node->name, root->name);
5131  }
5132 
5133  if (error != NULL) {
5134  break;
5135  }
5136 
5137  }
5138 
5139 
5140  *_response = response;
5141 
5142  return error;
5143 }
5144 
5145 static ds3_error* _parse_ds3_job_node_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_node_response** _response) {
5146  ds3_job_node_response* response;
5147  struct _xmlAttr* attribute;
5148  ds3_error* error = NULL;
5149 
5150  response = g_new0(ds3_job_node_response, 1);
5151 
5152  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
5153  if (attribute_equal(attribute, "EndPoint") == true) {
5154  response->end_point = xml_get_string_from_attribute(doc, attribute);
5155  } else if (attribute_equal(attribute, "HttpPort") == true) {
5156  response->http_port = xml_get_uint16_from_attribute(doc, attribute);
5157  } else if (attribute_equal(attribute, "HttpsPort") == true) {
5158  response->https_port = xml_get_uint16_from_attribute(doc, attribute);
5159  } else if (attribute_equal(attribute, "Id") == true) {
5160  response->id = xml_get_string_from_attribute(doc, attribute);
5161  } else {
5162  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_job_node_response [%s]\n", attribute->name, root->name);
5163  }
5164 
5165  if (error != NULL) {
5166  break;
5167  }
5168 
5169  }
5170 
5171 
5172 
5173  *_response = response;
5174 
5175  return error;
5176 }
5177 
5178 static ds3_error* _parse_ds3_job_node_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5179  ds3_error* error = NULL;
5180  xmlNodePtr child_node;
5181  GPtrArray* ds3_job_node_response_array = g_ptr_array_new();
5182 
5183  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5184  ds3_job_node_response* response = NULL;
5185  error = _parse_ds3_job_node_response(client, doc, child_node, &response);
5186  g_ptr_array_add(ds3_job_node_response_array, response);
5187 
5188  if (error != NULL) {
5189  break;
5190  }
5191  }
5192 
5193  *_response = ds3_job_node_response_array;
5194 
5195  return error;
5196 }
5197 static ds3_error* _parse_ds3_s3_object_to_delete_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_object_to_delete_response** _response) {
5199  xmlNodePtr child_node;
5200  ds3_error* error = NULL;
5201 
5202  response = g_new0(ds3_s3_object_to_delete_response, 1);
5203 
5204 
5205  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5206  if (element_equal(child_node, "Key")) {
5207  response->key = xml_get_string(doc, child_node);
5208  } else {
5209  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_to_delete_response [%s]\n", child_node->name, root->name);
5210  }
5211 
5212  if (error != NULL) {
5213  break;
5214  }
5215 
5216  }
5217 
5218 
5219  *_response = response;
5220 
5221  return error;
5222 }
5223 
5224 static ds3_error* _parse_ds3_user_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_user_response** _response) {
5225  ds3_user_response* response;
5226  xmlNodePtr child_node;
5227  ds3_error* error = NULL;
5228 
5229  response = g_new0(ds3_user_response, 1);
5230 
5231 
5232  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5233  if (element_equal(child_node, "DisplayName")) {
5234  response->display_name = xml_get_string(doc, child_node);
5235  } else if (element_equal(child_node, "ID")) {
5236  response->id = xml_get_string(doc, child_node);
5237  } else {
5238  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_user_response [%s]\n", child_node->name, root->name);
5239  }
5240 
5241  if (error != NULL) {
5242  break;
5243  }
5244 
5245  }
5246 
5247 
5248  *_response = response;
5249 
5250  return error;
5251 }
5252 
5253 static ds3_error* _parse_ds3_named_detailed_tape_partition_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_named_detailed_tape_partition_response** _response) {
5255  xmlNodePtr child_node;
5256  ds3_error* error = NULL;
5257  GPtrArray* tape_types_array = g_ptr_array_new();
5258 
5259  response = g_new0(ds3_named_detailed_tape_partition_response, 1);
5260 
5261 
5262  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5263  if (element_equal(child_node, "DriveType")) {
5264  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5265  if (text == NULL) {
5266  continue;
5267  }
5268  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
5269  xmlFree(text);
5270  } else if (element_equal(child_node, "DriveTypes")) {
5271  xmlNodePtr loop_node;
5272  int num_nodes = 0;
5273  GByteArray* enum_array = g_byte_array_new();
5274  ds3_tape_drive_type drive_types;
5275  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
5276  xmlChar* text = xmlNodeListGetString(doc, loop_node, 1);
5277  if (text == NULL) {
5278  continue;
5279  }
5280  drive_types = _match_ds3_tape_drive_type(client->log, text);
5281  g_byte_array_append(enum_array, (const guint8*) &drive_types, sizeof(ds3_tape_drive_type));
5282  }
5283  response->drive_types = (ds3_tape_drive_type*)enum_array->data;
5284  response->num_drive_types = enum_array->len;
5285  g_byte_array_free(enum_array, FALSE);
5286  } else if (element_equal(child_node, "ErrorMessage")) {
5287  response->error_message = xml_get_string(doc, child_node);
5288  } else if (element_equal(child_node, "Id")) {
5289  response->id = xml_get_string(doc, child_node);
5290  } else if (element_equal(child_node, "ImportExportConfiguration")) {
5291  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5292  if (text == NULL) {
5293  continue;
5294  }
5296  xmlFree(text);
5297  } else if (element_equal(child_node, "LibraryId")) {
5298  response->library_id = xml_get_string(doc, child_node);
5299  } else if (element_equal(child_node, "MinimumReadReservedDrives")) {
5300  response->minimum_read_reserved_drives = xml_get_uint16(doc, child_node);
5301  } else if (element_equal(child_node, "MinimumWriteReservedDrives")) {
5302  response->minimum_write_reserved_drives = xml_get_uint16(doc, child_node);
5303  } else if (element_equal(child_node, "Name")) {
5304  response->name = xml_get_string(doc, child_node);
5305  } else if (element_equal(child_node, "Quiesced")) {
5306  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5307  if (text == NULL) {
5308  continue;
5309  }
5310  response->quiesced = _match_ds3_quiesced(client->log, text);
5311  xmlFree(text);
5312  } else if (element_equal(child_node, "SerialId")) {
5313  response->serial_id = xml_get_string(doc, child_node);
5314  } else if (element_equal(child_node, "SerialNumber")) {
5315  response->serial_number = xml_get_string(doc, child_node);
5316  } else if (element_equal(child_node, "State")) {
5317  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5318  if (text == NULL) {
5319  continue;
5320  }
5321  response->state = _match_ds3_tape_partition_state(client->log, text);
5322  xmlFree(text);
5323  } else if (element_equal(child_node, "TapeTypes")) {
5324  xmlNodePtr loop_node;
5325  GPtrArray* tape_types_array = g_ptr_array_new();
5326  int num_nodes = 0;
5327  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
5328  ds3_str* tape_types = xml_get_string(doc, loop_node);
5329  g_ptr_array_add(tape_types_array, tape_types);
5330  }
5331  response->tape_types = (ds3_str**)tape_types_array->pdata;
5332  response->num_tape_types = tape_types_array->len;
5333  g_ptr_array_free(tape_types_array, FALSE);
5334  } else {
5335  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_named_detailed_tape_partition_response [%s]\n", child_node->name, root->name);
5336  }
5337 
5338  if (error != NULL) {
5339  break;
5340  }
5341 
5342  }
5343 
5344  response->tape_types = (ds3_str**)tape_types_array->pdata;
5345  response->num_tape_types = tape_types_array->len;
5346  g_ptr_array_free(tape_types_array, FALSE);
5347 
5348  if (error == NULL) {
5349  *_response = response;
5350  } else {
5352  }
5353 
5354  return error;
5355 }
5356 
5357 static ds3_error* _parse_ds3_tape_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_failure_response** _response) {
5358  ds3_tape_failure_response* response;
5359  xmlNodePtr child_node;
5360  ds3_error* error = NULL;
5361 
5362  response = g_new0(ds3_tape_failure_response, 1);
5363 
5364 
5365  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5366  if (element_equal(child_node, "Cause")) {
5367  response->cause = xml_get_string(doc, child_node);
5368  } else if (element_equal(child_node, "Tape")) {
5369  error = _parse_ds3_tape_response(client, doc, child_node, &response->tape);
5370  } else {
5371  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_response [%s]\n", child_node->name, root->name);
5372  }
5373 
5374  if (error != NULL) {
5375  break;
5376  }
5377 
5378  }
5379 
5380 
5381  if (error == NULL) {
5382  *_response = response;
5383  } else {
5385  }
5386 
5387  return error;
5388 }
5389 
5390 static ds3_error* _parse_ds3_type_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_type_response** _response) {
5391  ds3_type_response* response;
5392  xmlNodePtr child_node;
5393  ds3_error* error = NULL;
5394 
5395  response = g_new0(ds3_type_response, 1);
5396 
5397 
5398  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5399  if (element_equal(child_node, "BeansRetrieverName")) {
5400  response->beans_retriever_name = xml_get_string(doc, child_node);
5401  } else if (element_equal(child_node, "DomainName")) {
5402  response->domain_name = xml_get_string(doc, child_node);
5403  } else if (element_equal(child_node, "NumberOfType")) {
5404  response->number_of_type = xml_get_uint16(doc, child_node);
5405  } else {
5406  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_type_response [%s]\n", child_node->name, root->name);
5407  }
5408 
5409  if (error != NULL) {
5410  break;
5411  }
5412 
5413  }
5414 
5415 
5416  *_response = response;
5417 
5418  return error;
5419 }
5420 
5421 static ds3_error* _parse_ds3_physical_placement_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_physical_placement_response** _response) {
5423  xmlNodePtr child_node;
5424  ds3_error* error = NULL;
5425 
5426  response = g_new0(ds3_physical_placement_response, 1);
5427 
5428 
5429  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5430  if (element_equal(child_node, "AzureTargets")) {
5431  GPtrArray* azure_targets_array;
5432  error = _parse_ds3_azure_target_response_array(client, doc, child_node, &azure_targets_array);
5433  response->azure_targets = (ds3_azure_target_response**)azure_targets_array->pdata;
5434  response->num_azure_targets = azure_targets_array->len;
5435  g_ptr_array_free(azure_targets_array, FALSE);
5436  } else if (element_equal(child_node, "Ds3Targets")) {
5437  GPtrArray* ds3_targets_array;
5438  error = _parse_ds3_target_response_array(client, doc, child_node, &ds3_targets_array);
5439  response->ds3_targets = (ds3_target_response**)ds3_targets_array->pdata;
5440  response->num_ds3_targets = ds3_targets_array->len;
5441  g_ptr_array_free(ds3_targets_array, FALSE);
5442  } else if (element_equal(child_node, "Pools")) {
5443  GPtrArray* pools_array;
5444  error = _parse_ds3_pool_response_array(client, doc, child_node, &pools_array);
5445  response->pools = (ds3_pool_response**)pools_array->pdata;
5446  response->num_pools = pools_array->len;
5447  g_ptr_array_free(pools_array, FALSE);
5448  } else if (element_equal(child_node, "S3Targets")) {
5449  GPtrArray* s3_targets_array;
5450  error = _parse_ds3_s3_target_response_array(client, doc, child_node, &s3_targets_array);
5451  response->s3_targets = (ds3_s3_target_response**)s3_targets_array->pdata;
5452  response->num_s3_targets = s3_targets_array->len;
5453  g_ptr_array_free(s3_targets_array, FALSE);
5454  } else if (element_equal(child_node, "Tapes")) {
5455  GPtrArray* tapes_array;
5456  error = _parse_ds3_tape_response_array(client, doc, child_node, &tapes_array);
5457  response->tapes = (ds3_tape_response**)tapes_array->pdata;
5458  response->num_tapes = tapes_array->len;
5459  g_ptr_array_free(tapes_array, FALSE);
5460  } else {
5461  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_physical_placement_response [%s]\n", child_node->name, root->name);
5462  }
5463 
5464  if (error != NULL) {
5465  break;
5466  }
5467 
5468  }
5469 
5470 
5471  if (error == NULL) {
5472  *_response = response;
5473  } else {
5475  }
5476 
5477  return error;
5478 }
5479 
5480 static ds3_error* _parse_ds3_bulk_object_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bulk_object_response** _response) {
5481  ds3_bulk_object_response* response;
5482  struct _xmlAttr* attribute;
5483  xmlNodePtr child_node;
5484  ds3_error* error = NULL;
5485 
5486  response = g_new0(ds3_bulk_object_response, 1);
5487 
5488  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
5489  if (attribute_equal(attribute, "Bucket") == true) {
5490  response->bucket = xml_get_string_from_attribute(doc, attribute);
5491  } else if (attribute_equal(attribute, "Id") == true) {
5492  response->id = xml_get_string_from_attribute(doc, attribute);
5493  } else if (attribute_equal(attribute, "InCache") == true) {
5494  response->in_cache = xml_get_bool_from_attribute(client->log, doc, attribute);
5495  } else if (attribute_equal(attribute, "Latest") == true) {
5496  response->latest = xml_get_bool_from_attribute(client->log, doc, attribute);
5497  } else if (attribute_equal(attribute, "Length") == true) {
5498  response->length = xml_get_uint64_from_attribute(doc, attribute);
5499  } else if (attribute_equal(attribute, "Name") == true) {
5500  response->name = xml_get_string_from_attribute(doc, attribute);
5501  } else if (attribute_equal(attribute, "Offset") == true) {
5502  response->offset = xml_get_uint64_from_attribute(doc, attribute);
5503  } else if (attribute_equal(attribute, "Version") == true) {
5504  response->version = xml_get_uint64_from_attribute(doc, attribute);
5505  } else {
5506  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_bulk_object_response [%s]\n", attribute->name, root->name);
5507  }
5508 
5509  if (error != NULL) {
5510  break;
5511  }
5512 
5513  }
5514 
5515  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5516  if (element_equal(child_node, "PhysicalPlacement")) {
5517  error = _parse_ds3_physical_placement_response(client, doc, child_node, &response->physical_placement);
5518  } else {
5519  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bulk_object_response [%s]\n", child_node->name, root->name);
5520  }
5521 
5522  if (error != NULL) {
5523  break;
5524  }
5525 
5526  }
5527 
5528 
5529  if (error == NULL) {
5530  *_response = response;
5531  } else {
5533  }
5534 
5535  return error;
5536 }
5537 
5538 static ds3_error* _parse_ds3_bulk_object_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5539  ds3_error* error = NULL;
5540  xmlNodePtr child_node;
5541  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
5542 
5543  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5544  ds3_bulk_object_response* response = NULL;
5545  error = _parse_ds3_bulk_object_response(client, doc, child_node, &response);
5546  g_ptr_array_add(ds3_bulk_object_response_array, response);
5547 
5548  if (error != NULL) {
5549  break;
5550  }
5551  }
5552 
5553  *_response = ds3_bulk_object_response_array;
5554 
5555  return error;
5556 }
5557 static ds3_error* _parse_ds3_bulk_object_list_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bulk_object_list_response** _response) {
5559  xmlNodePtr child_node;
5560  ds3_error* error = NULL;
5561  GPtrArray* objects_array = g_ptr_array_new();
5562 
5563  response = g_new0(ds3_bulk_object_list_response, 1);
5564 
5565 
5566  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5567  if (element_equal(child_node, "Object")) {
5568  ds3_bulk_object_response* objects_response = NULL;
5569  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
5570  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
5571  g_ptr_array_add(objects_array, objects_response);
5572  } else {
5573  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bulk_object_list_response [%s]\n", child_node->name, root->name);
5574  }
5575 
5576  if (error != NULL) {
5577  break;
5578  }
5579 
5580  }
5581 
5582  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
5583  response->num_objects = objects_array->len;
5584  g_ptr_array_free(objects_array, FALSE);
5585 
5586  if (error == NULL) {
5587  *_response = response;
5588  } else {
5590  }
5591 
5592  return error;
5593 }
5594 
5595 static ds3_error* _parse_ds3_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_response** _response) {
5596  ds3_job_response* response;
5597  struct _xmlAttr* attribute;
5598  xmlNodePtr child_node;
5599  ds3_error* error = NULL;
5600 
5601  response = g_new0(ds3_job_response, 1);
5602 
5603  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
5604  if (attribute_equal(attribute, "Aggregating") == true) {
5605  response->aggregating = xml_get_bool_from_attribute(client->log, doc, attribute);
5606  } else if (attribute_equal(attribute, "BucketName") == true) {
5607  response->bucket_name = xml_get_string_from_attribute(doc, attribute);
5608  } else if (attribute_equal(attribute, "CachedSizeInBytes") == true) {
5609  response->cached_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
5610  } else if (attribute_equal(attribute, "ChunkClientProcessingOrderGuarantee") == true) {
5611  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
5612  if (text == NULL) {
5613  continue;
5614  }
5616  xmlFree(text);
5617  } else if (attribute_equal(attribute, "CompletedSizeInBytes") == true) {
5618  response->completed_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
5619  } else if (attribute_equal(attribute, "EntirelyInCache") == true) {
5620  response->entirely_in_cache = xml_get_bool_from_attribute(client->log, doc, attribute);
5621  } else if (attribute_equal(attribute, "JobId") == true) {
5622  response->job_id = xml_get_string_from_attribute(doc, attribute);
5623  } else if (attribute_equal(attribute, "Naked") == true) {
5624  response->naked = xml_get_bool_from_attribute(client->log, doc, attribute);
5625  } else if (attribute_equal(attribute, "Name") == true) {
5626  response->name = xml_get_string_from_attribute(doc, attribute);
5627  } else if (attribute_equal(attribute, "OriginalSizeInBytes") == true) {
5628  response->original_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
5629  } else if (attribute_equal(attribute, "Priority") == true) {
5630  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
5631  if (text == NULL) {
5632  continue;
5633  }
5634  response->priority = _match_ds3_priority(client->log, text);
5635  xmlFree(text);
5636  } else if (attribute_equal(attribute, "RequestType") == true) {
5637  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
5638  if (text == NULL) {
5639  continue;
5640  }
5641  response->request_type = _match_ds3_job_request_type(client->log, text);
5642  xmlFree(text);
5643  } else if (attribute_equal(attribute, "StartDate") == true) {
5644  response->start_date = xml_get_string_from_attribute(doc, attribute);
5645  } else if (attribute_equal(attribute, "Status") == true) {
5646  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
5647  if (text == NULL) {
5648  continue;
5649  }
5650  response->status = _match_ds3_job_status(client->log, text);
5651  xmlFree(text);
5652  } else if (attribute_equal(attribute, "UserId") == true) {
5653  response->user_id = xml_get_string_from_attribute(doc, attribute);
5654  } else if (attribute_equal(attribute, "UserName") == true) {
5655  response->user_name = xml_get_string_from_attribute(doc, attribute);
5656  } else {
5657  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_job_response [%s]\n", attribute->name, root->name);
5658  }
5659 
5660  if (error != NULL) {
5661  break;
5662  }
5663 
5664  }
5665 
5666  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5667  if (element_equal(child_node, "Nodes")) {
5668  GPtrArray* nodes_array;
5669  error = _parse_ds3_job_node_response_array(client, doc, child_node, &nodes_array);
5670  response->nodes = (ds3_job_node_response**)nodes_array->pdata;
5671  response->num_nodes = nodes_array->len;
5672  g_ptr_array_free(nodes_array, FALSE);
5673  } else {
5674  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_response [%s]\n", child_node->name, root->name);
5675  }
5676 
5677  if (error != NULL) {
5678  break;
5679  }
5680 
5681  }
5682 
5683 
5684  if (error == NULL) {
5685  *_response = response;
5686  } else {
5687  ds3_job_response_free(response);
5688  }
5689 
5690  return error;
5691 }
5692 
5693 static ds3_error* _parse_ds3_job_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5694  ds3_error* error = NULL;
5695  xmlNodePtr child_node;
5696  GPtrArray* ds3_job_response_array = g_ptr_array_new();
5697 
5698  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5699  ds3_job_response* response = NULL;
5700  error = _parse_ds3_job_response(client, doc, child_node, &response);
5701  g_ptr_array_add(ds3_job_response_array, response);
5702 
5703  if (error != NULL) {
5704  break;
5705  }
5706  }
5707 
5708  *_response = ds3_job_response_array;
5709 
5710  return error;
5711 }
5712 static ds3_error* _parse_ds3_objects_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_objects_response** _response) {
5713  ds3_objects_response* response;
5714  struct _xmlAttr* attribute;
5715  xmlNodePtr child_node;
5716  ds3_error* error = NULL;
5717  GPtrArray* objects_array = g_ptr_array_new();
5718 
5719  response = g_new0(ds3_objects_response, 1);
5720 
5721  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
5722  if (attribute_equal(attribute, "ChunkId") == true) {
5723  response->chunk_id = xml_get_string_from_attribute(doc, attribute);
5724  } else if (attribute_equal(attribute, "ChunkNumber") == true) {
5725  response->chunk_number = xml_get_uint16_from_attribute(doc, attribute);
5726  } else if (attribute_equal(attribute, "NodeId") == true) {
5727  response->node_id = xml_get_string_from_attribute(doc, attribute);
5728  } else {
5729  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_objects_response [%s]\n", attribute->name, root->name);
5730  }
5731 
5732  if (error != NULL) {
5733  break;
5734  }
5735 
5736  }
5737 
5738  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5739  if (element_equal(child_node, "Object")) {
5740  ds3_bulk_object_response* objects_response = NULL;
5741  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
5742  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
5743  g_ptr_array_add(objects_array, objects_response);
5744  } else {
5745  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_objects_response [%s]\n", child_node->name, root->name);
5746  }
5747 
5748  if (error != NULL) {
5749  break;
5750  }
5751 
5752  }
5753 
5754  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
5755  response->num_objects = objects_array->len;
5756  g_ptr_array_free(objects_array, FALSE);
5757 
5758  if (error == NULL) {
5759  *_response = response;
5760  } else {
5761  ds3_objects_response_free(response);
5762  }
5763 
5764  return error;
5765 }
5766 
5767 static ds3_error* _parse_ds3_multi_part_upload_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_multi_part_upload_response** _response) {
5769  xmlNodePtr child_node;
5770  ds3_error* error = NULL;
5771 
5772  response = g_new0(ds3_multi_part_upload_response, 1);
5773 
5774 
5775  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5776  if (element_equal(child_node, "Initiated")) {
5777  response->initiated = xml_get_string(doc, child_node);
5778  } else if (element_equal(child_node, "Key")) {
5779  response->key = xml_get_string(doc, child_node);
5780  } else if (element_equal(child_node, "Owner")) {
5781  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
5782  } else if (element_equal(child_node, "UploadId")) {
5783  response->upload_id = xml_get_string(doc, child_node);
5784  } else {
5785  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_multi_part_upload_response [%s]\n", child_node->name, root->name);
5786  }
5787 
5788  if (error != NULL) {
5789  break;
5790  }
5791 
5792  }
5793 
5794 
5795  if (error == NULL) {
5796  *_response = response;
5797  } else {
5799  }
5800 
5801  return error;
5802 }
5803 
5804 static ds3_error* _parse_ds3_contents_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_contents_response** _response) {
5805  ds3_contents_response* response;
5806  xmlNodePtr child_node;
5807  ds3_error* error = NULL;
5808 
5809  response = g_new0(ds3_contents_response, 1);
5810 
5811 
5812  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5813  if (element_equal(child_node, "ETag")) {
5814  response->e_tag = xml_get_string(doc, child_node);
5815  } else if (element_equal(child_node, "Key")) {
5816  response->key = xml_get_string(doc, child_node);
5817  } else if (element_equal(child_node, "LastModified")) {
5818  response->last_modified = xml_get_string(doc, child_node);
5819  } else if (element_equal(child_node, "Owner")) {
5820  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
5821  } else if (element_equal(child_node, "Size")) {
5822  response->size = xml_get_uint64(doc, child_node);
5823  } else if (element_equal(child_node, "StorageClass")) {
5824  response->storage_class = xml_get_string(doc, child_node);
5825  } else {
5826  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_contents_response [%s]\n", child_node->name, root->name);
5827  }
5828 
5829  if (error != NULL) {
5830  break;
5831  }
5832 
5833  }
5834 
5835 
5836  if (error == NULL) {
5837  *_response = response;
5838  } else {
5839  ds3_contents_response_free(response);
5840  }
5841 
5842  return error;
5843 }
5844 
5845 static ds3_error* _parse_ds3_detailed_s3_object_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_detailed_s3_object_response** _response) {
5847  xmlNodePtr child_node;
5848  ds3_error* error = NULL;
5849 
5850  response = g_new0(ds3_detailed_s3_object_response, 1);
5851 
5852 
5853  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5854  if (element_equal(child_node, "Blobs")) {
5855  error = _parse_ds3_bulk_object_list_response(client, doc, child_node, &response->blobs);
5856  } else if (element_equal(child_node, "BlobsBeingPersisted")) {
5857  response->blobs_being_persisted = xml_get_uint16(doc, child_node);
5858  } else if (element_equal(child_node, "BlobsDegraded")) {
5859  response->blobs_degraded = xml_get_uint16(doc, child_node);
5860  } else if (element_equal(child_node, "BlobsInCache")) {
5861  response->blobs_in_cache = xml_get_uint16(doc, child_node);
5862  } else if (element_equal(child_node, "BlobsTotal")) {
5863  response->blobs_total = xml_get_uint16(doc, child_node);
5864  } else if (element_equal(child_node, "BucketId")) {
5865  response->bucket_id = xml_get_string(doc, child_node);
5866  } else if (element_equal(child_node, "CreationDate")) {
5867  response->creation_date = xml_get_string(doc, child_node);
5868  } else if (element_equal(child_node, "ETag")) {
5869  response->e_tag = xml_get_string(doc, child_node);
5870  } else if (element_equal(child_node, "Id")) {
5871  response->id = xml_get_string(doc, child_node);
5872  } else if (element_equal(child_node, "Latest")) {
5873  response->latest = xml_get_bool(client->log, doc, child_node);
5874  } else if (element_equal(child_node, "Name")) {
5875  response->name = xml_get_string(doc, child_node);
5876  } else if (element_equal(child_node, "Owner")) {
5877  response->owner = xml_get_string(doc, child_node);
5878  } else if (element_equal(child_node, "Size")) {
5879  response->size = xml_get_uint64(doc, child_node);
5880  } else if (element_equal(child_node, "Type")) {
5881  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5882  if (text == NULL) {
5883  continue;
5884  }
5885  response->type = _match_ds3_s3_object_type(client->log, text);
5886  xmlFree(text);
5887  } else if (element_equal(child_node, "Version")) {
5888  response->version = xml_get_uint64(doc, child_node);
5889  } else {
5890  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_s3_object_response [%s]\n", child_node->name, root->name);
5891  }
5892 
5893  if (error != NULL) {
5894  break;
5895  }
5896 
5897  }
5898 
5899 
5900  if (error == NULL) {
5901  *_response = response;
5902  } else {
5904  }
5905 
5906  return error;
5907 }
5908 
5909 
5910 //************ TOP LEVEL STRUCT PARSERS **************
5912  xmlDocPtr doc;
5913  xmlNodePtr root;
5914  xmlNodePtr child_node;
5916  ds3_error* error = NULL;
5917 
5918  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
5919  if (error != NULL) {
5920  return error;
5921  }
5922 
5923  response = g_new0(ds3_azure_data_replication_rule_response, 1);
5924 
5925  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5926  if (element_equal(child_node, "DataPolicyId")) {
5927  response->data_policy_id = xml_get_string(doc, child_node);
5928  } else if (element_equal(child_node, "Id")) {
5929  response->id = xml_get_string(doc, child_node);
5930  } else if (element_equal(child_node, "MaxBlobPartSizeInBytes")) {
5931  response->max_blob_part_size_in_bytes = xml_get_uint64(doc, child_node);
5932  } else if (element_equal(child_node, "ReplicateDeletes")) {
5933  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
5934  } else if (element_equal(child_node, "State")) {
5935  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5936  if (text == NULL) {
5937  continue;
5938  }
5939  response->state = _match_ds3_data_placement_rule_state(client->log, text);
5940  xmlFree(text);
5941  } else if (element_equal(child_node, "TargetId")) {
5942  response->target_id = xml_get_string(doc, child_node);
5943  } else if (element_equal(child_node, "Type")) {
5944  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5945  if (text == NULL) {
5946  continue;
5947  }
5948  response->type = _match_ds3_data_replication_rule_type(client->log, text);
5949  xmlFree(text);
5950  } else {
5951  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_data_replication_rule_response [%s]\n", child_node->name, root->name);
5952  }
5953 
5954  if (error != NULL) {
5955  break;
5956  }
5957 
5958  }
5959 
5960 
5961  xmlFreeDoc(doc);
5962 
5963  if (error == NULL) {
5964  *_response = response;
5965  } else {
5967  }
5968 
5969  return error;
5970 }
5971 static ds3_error* _parse_top_level_ds3_bucket_response(const ds3_client* client, const ds3_request* request, ds3_bucket_response** _response, GByteArray* xml_blob) {
5972  xmlDocPtr doc;
5973  xmlNodePtr root;
5974  xmlNodePtr child_node;
5975  ds3_bucket_response* response;
5976  ds3_error* error = NULL;
5977 
5978  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
5979  if (error != NULL) {
5980  return error;
5981  }
5982 
5983  response = g_new0(ds3_bucket_response, 1);
5984 
5985  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5986  if (element_equal(child_node, "CreationDate")) {
5987  response->creation_date = xml_get_string(doc, child_node);
5988  } else if (element_equal(child_node, "DataPolicyId")) {
5989  response->data_policy_id = xml_get_string(doc, child_node);
5990  } else if (element_equal(child_node, "Empty")) {
5991  response->empty = xml_get_bool(client->log, doc, child_node);
5992  } else if (element_equal(child_node, "Id")) {
5993  response->id = xml_get_string(doc, child_node);
5994  } else if (element_equal(child_node, "LastPreferredChunkSizeInBytes")) {
5995  response->last_preferred_chunk_size_in_bytes = xml_get_uint64(doc, child_node);
5996  } else if (element_equal(child_node, "LogicalUsedCapacity")) {
5997  response->logical_used_capacity = xml_get_uint64(doc, child_node);
5998  } else if (element_equal(child_node, "Name")) {
5999  response->name = xml_get_string(doc, child_node);
6000  } else if (element_equal(child_node, "UserId")) {
6001  response->user_id = xml_get_string(doc, child_node);
6002  } else {
6003  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_response [%s]\n", child_node->name, root->name);
6004  }
6005 
6006  if (error != NULL) {
6007  break;
6008  }
6009 
6010  }
6011 
6012 
6013  xmlFreeDoc(doc);
6014 
6015  if (error == NULL) {
6016  *_response = response;
6017  } else {
6018  ds3_bucket_response_free(response);
6019  }
6020 
6021  return error;
6022 }
6023 static ds3_error* _parse_top_level_ds3_bucket_acl_response(const ds3_client* client, const ds3_request* request, ds3_bucket_acl_response** _response, GByteArray* xml_blob) {
6024  xmlDocPtr doc;
6025  xmlNodePtr root;
6026  xmlNodePtr child_node;
6027  ds3_bucket_acl_response* response;
6028  ds3_error* error = NULL;
6029 
6030  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6031  if (error != NULL) {
6032  return error;
6033  }
6034 
6035  response = g_new0(ds3_bucket_acl_response, 1);
6036 
6037  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6038  if (element_equal(child_node, "BucketId")) {
6039  response->bucket_id = xml_get_string(doc, child_node);
6040  } else if (element_equal(child_node, "GroupId")) {
6041  response->group_id = xml_get_string(doc, child_node);
6042  } else if (element_equal(child_node, "Id")) {
6043  response->id = xml_get_string(doc, child_node);
6044  } else if (element_equal(child_node, "Permission")) {
6045  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6046  if (text == NULL) {
6047  continue;
6048  }
6049  response->permission = _match_ds3_bucket_acl_permission(client->log, text);
6050  xmlFree(text);
6051  } else if (element_equal(child_node, "UserId")) {
6052  response->user_id = xml_get_string(doc, child_node);
6053  } else {
6054  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_acl_response [%s]\n", child_node->name, root->name);
6055  }
6056 
6057  if (error != NULL) {
6058  break;
6059  }
6060 
6061  }
6062 
6063 
6064  xmlFreeDoc(doc);
6065 
6066  if (error == NULL) {
6067  *_response = response;
6068  } else {
6069  ds3_bucket_acl_response_free(response);
6070  }
6071 
6072  return error;
6073 }
6074 static ds3_error* _parse_top_level_ds3_canceled_job_response(const ds3_client* client, const ds3_request* request, ds3_canceled_job_response** _response, GByteArray* xml_blob) {
6075  xmlDocPtr doc;
6076  xmlNodePtr root;
6077  xmlNodePtr child_node;
6078  ds3_canceled_job_response* response;
6079  ds3_error* error = NULL;
6080 
6081  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6082  if (error != NULL) {
6083  return error;
6084  }
6085 
6086  response = g_new0(ds3_canceled_job_response, 1);
6087 
6088  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6089  if (element_equal(child_node, "BucketId")) {
6090  response->bucket_id = xml_get_string(doc, child_node);
6091  } else if (element_equal(child_node, "CachedSizeInBytes")) {
6092  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
6093  } else if (element_equal(child_node, "CanceledDueToTimeout")) {
6094  response->canceled_due_to_timeout = xml_get_bool(client->log, doc, child_node);
6095  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
6096  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6097  if (text == NULL) {
6098  continue;
6099  }
6101  xmlFree(text);
6102  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
6103  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
6104  } else if (element_equal(child_node, "CreatedAt")) {
6105  response->created_at = xml_get_string(doc, child_node);
6106  } else if (element_equal(child_node, "DateCanceled")) {
6107  response->date_canceled = xml_get_string(doc, child_node);
6108  } else if (element_equal(child_node, "ErrorMessage")) {
6109  response->error_message = xml_get_string(doc, child_node);
6110  } else if (element_equal(child_node, "Id")) {
6111  response->id = xml_get_string(doc, child_node);
6112  } else if (element_equal(child_node, "Naked")) {
6113  response->naked = xml_get_bool(client->log, doc, child_node);
6114  } else if (element_equal(child_node, "Name")) {
6115  response->name = xml_get_string(doc, child_node);
6116  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
6117  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
6118  } else if (element_equal(child_node, "Priority")) {
6119  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6120  if (text == NULL) {
6121  continue;
6122  }
6123  response->priority = _match_ds3_priority(client->log, text);
6124  xmlFree(text);
6125  } else if (element_equal(child_node, "Rechunked")) {
6126  response->rechunked = xml_get_string(doc, child_node);
6127  } else if (element_equal(child_node, "RequestType")) {
6128  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6129  if (text == NULL) {
6130  continue;
6131  }
6132  response->request_type = _match_ds3_job_request_type(client->log, text);
6133  xmlFree(text);
6134  } else if (element_equal(child_node, "Truncated")) {
6135  response->truncated = xml_get_bool(client->log, doc, child_node);
6136  } else if (element_equal(child_node, "UserId")) {
6137  response->user_id = xml_get_string(doc, child_node);
6138  } else {
6139  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_canceled_job_response [%s]\n", child_node->name, root->name);
6140  }
6141 
6142  if (error != NULL) {
6143  break;
6144  }
6145 
6146  }
6147 
6148 
6149  xmlFreeDoc(doc);
6150 
6151  if (error == NULL) {
6152  *_response = response;
6153  } else {
6155  }
6156 
6157  return error;
6158 }
6159 static ds3_error* _parse_top_level_ds3_completed_job_response(const ds3_client* client, const ds3_request* request, ds3_completed_job_response** _response, GByteArray* xml_blob) {
6160  xmlDocPtr doc;
6161  xmlNodePtr root;
6162  xmlNodePtr child_node;
6163  ds3_completed_job_response* response;
6164  ds3_error* error = NULL;
6165 
6166  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6167  if (error != NULL) {
6168  return error;
6169  }
6170 
6171  response = g_new0(ds3_completed_job_response, 1);
6172 
6173  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6174  if (element_equal(child_node, "BucketId")) {
6175  response->bucket_id = xml_get_string(doc, child_node);
6176  } else if (element_equal(child_node, "CachedSizeInBytes")) {
6177  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
6178  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
6179  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6180  if (text == NULL) {
6181  continue;
6182  }
6184  xmlFree(text);
6185  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
6186  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
6187  } else if (element_equal(child_node, "CreatedAt")) {
6188  response->created_at = xml_get_string(doc, child_node);
6189  } else if (element_equal(child_node, "DateCompleted")) {
6190  response->date_completed = xml_get_string(doc, child_node);
6191  } else if (element_equal(child_node, "ErrorMessage")) {
6192  response->error_message = xml_get_string(doc, child_node);
6193  } else if (element_equal(child_node, "Id")) {
6194  response->id = xml_get_string(doc, child_node);
6195  } else if (element_equal(child_node, "Naked")) {
6196  response->naked = xml_get_bool(client->log, doc, child_node);
6197  } else if (element_equal(child_node, "Name")) {
6198  response->name = xml_get_string(doc, child_node);
6199  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
6200  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
6201  } else if (element_equal(child_node, "Priority")) {
6202  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6203  if (text == NULL) {
6204  continue;
6205  }
6206  response->priority = _match_ds3_priority(client->log, text);
6207  xmlFree(text);
6208  } else if (element_equal(child_node, "Rechunked")) {
6209  response->rechunked = xml_get_string(doc, child_node);
6210  } else if (element_equal(child_node, "RequestType")) {
6211  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6212  if (text == NULL) {
6213  continue;
6214  }
6215  response->request_type = _match_ds3_job_request_type(client->log, text);
6216  xmlFree(text);
6217  } else if (element_equal(child_node, "Truncated")) {
6218  response->truncated = xml_get_bool(client->log, doc, child_node);
6219  } else if (element_equal(child_node, "UserId")) {
6220  response->user_id = xml_get_string(doc, child_node);
6221  } else {
6222  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_completed_job_response [%s]\n", child_node->name, root->name);
6223  }
6224 
6225  if (error != NULL) {
6226  break;
6227  }
6228 
6229  }
6230 
6231 
6232  xmlFreeDoc(doc);
6233 
6234  if (error == NULL) {
6235  *_response = response;
6236  } else {
6238  }
6239 
6240  return error;
6241 }
6242 static ds3_error* _parse_top_level_ds3_data_path_backend_response(const ds3_client* client, const ds3_request* request, ds3_data_path_backend_response** _response, GByteArray* xml_blob) {
6243  xmlDocPtr doc;
6244  xmlNodePtr root;
6245  xmlNodePtr child_node;
6247  ds3_error* error = NULL;
6248 
6249  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6250  if (error != NULL) {
6251  return error;
6252  }
6253 
6254  response = g_new0(ds3_data_path_backend_response, 1);
6255 
6256  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6257  if (element_equal(child_node, "Activated")) {
6258  response->activated = xml_get_bool(client->log, doc, child_node);
6259  } else if (element_equal(child_node, "AllowNewJobRequests")) {
6260  response->allow_new_job_requests = xml_get_bool(client->log, doc, child_node);
6261  } else if (element_equal(child_node, "AutoActivateTimeoutInMins")) {
6262  response->auto_activate_timeout_in_mins = xml_get_uint16(doc, child_node);
6263  } else if (element_equal(child_node, "AutoInspect")) {
6264  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6265  if (text == NULL) {
6266  continue;
6267  }
6268  response->auto_inspect = _match_ds3_auto_inspect_mode(client->log, text);
6269  xmlFree(text);
6270  } else if (element_equal(child_node, "CacheAvailableRetryAfterInSeconds")) {
6271  response->cache_available_retry_after_in_seconds = xml_get_uint16(doc, child_node);
6272  } else if (element_equal(child_node, "DefaultImportConflictResolutionMode")) {
6273  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6274  if (text == NULL) {
6275  continue;
6276  }
6278  xmlFree(text);
6279  } else if (element_equal(child_node, "DefaultVerifyDataAfterImport")) {
6280  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6281  if (text == NULL) {
6282  continue;
6283  }
6284  response->default_verify_data_after_import = _match_ds3_priority(client->log, text);
6285  xmlFree(text);
6286  } else if (element_equal(child_node, "DefaultVerifyDataPriorToImport")) {
6287  response->default_verify_data_prior_to_import = xml_get_bool(client->log, doc, child_node);
6288  } else if (element_equal(child_node, "Id")) {
6289  response->id = xml_get_string(doc, child_node);
6290  } else if (element_equal(child_node, "InstanceId")) {
6291  response->instance_id = xml_get_string(doc, child_node);
6292  } else if (element_equal(child_node, "LastHeartbeat")) {
6293  response->last_heartbeat = xml_get_string(doc, child_node);
6294  } else if (element_equal(child_node, "PartiallyVerifyLastPercentOfTapes")) {
6295  response->partially_verify_last_percent_of_tapes = xml_get_uint16(doc, child_node);
6296  } else if (element_equal(child_node, "UnavailableMediaPolicy")) {
6297  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6298  if (text == NULL) {
6299  continue;
6300  }
6302  xmlFree(text);
6303  } else if (element_equal(child_node, "UnavailablePoolMaxJobRetryInMins")) {
6304  response->unavailable_pool_max_job_retry_in_mins = xml_get_uint16(doc, child_node);
6305  } else if (element_equal(child_node, "UnavailableTapePartitionMaxJobRetryInMins")) {
6307  } else {
6308  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_path_backend_response [%s]\n", child_node->name, root->name);
6309  }
6310 
6311  if (error != NULL) {
6312  break;
6313  }
6314 
6315  }
6316 
6317 
6318  xmlFreeDoc(doc);
6319 
6320  if (error == NULL) {
6321  *_response = response;
6322  } else {
6324  }
6325 
6326  return error;
6327 }
6328 static ds3_error* _parse_top_level_ds3_data_persistence_rule_response(const ds3_client* client, const ds3_request* request, ds3_data_persistence_rule_response** _response, GByteArray* xml_blob) {
6329  xmlDocPtr doc;
6330  xmlNodePtr root;
6331  xmlNodePtr child_node;
6333  ds3_error* error = NULL;
6334 
6335  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6336  if (error != NULL) {
6337  return error;
6338  }
6339 
6340  response = g_new0(ds3_data_persistence_rule_response, 1);
6341 
6342  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6343  if (element_equal(child_node, "DataPolicyId")) {
6344  response->data_policy_id = xml_get_string(doc, child_node);
6345  } else if (element_equal(child_node, "Id")) {
6346  response->id = xml_get_string(doc, child_node);
6347  } else if (element_equal(child_node, "IsolationLevel")) {
6348  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6349  if (text == NULL) {
6350  continue;
6351  }
6352  response->isolation_level = _match_ds3_data_isolation_level(client->log, text);
6353  xmlFree(text);
6354  } else if (element_equal(child_node, "MinimumDaysToRetain")) {
6355  response->minimum_days_to_retain = xml_get_uint16(doc, child_node);
6356  } else if (element_equal(child_node, "State")) {
6357  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6358  if (text == NULL) {
6359  continue;
6360  }
6361  response->state = _match_ds3_data_placement_rule_state(client->log, text);
6362  xmlFree(text);
6363  } else if (element_equal(child_node, "StorageDomainId")) {
6364  response->storage_domain_id = xml_get_string(doc, child_node);
6365  } else if (element_equal(child_node, "Type")) {
6366  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6367  if (text == NULL) {
6368  continue;
6369  }
6370  response->type = _match_ds3_data_persistence_rule_type(client->log, text);
6371  xmlFree(text);
6372  } else {
6373  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_persistence_rule_response [%s]\n", child_node->name, root->name);
6374  }
6375 
6376  if (error != NULL) {
6377  break;
6378  }
6379 
6380  }
6381 
6382 
6383  xmlFreeDoc(doc);
6384 
6385  if (error == NULL) {
6386  *_response = response;
6387  } else {
6389  }
6390 
6391  return error;
6392 }
6393 static ds3_error* _parse_top_level_ds3_data_policy_response(const ds3_client* client, const ds3_request* request, ds3_data_policy_response** _response, GByteArray* xml_blob) {
6394  xmlDocPtr doc;
6395  xmlNodePtr root;
6396  xmlNodePtr child_node;
6397  ds3_data_policy_response* response;
6398  ds3_error* error = NULL;
6399 
6400  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6401  if (error != NULL) {
6402  return error;
6403  }
6404 
6405  response = g_new0(ds3_data_policy_response, 1);
6406 
6407  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6408  if (element_equal(child_node, "AlwaysForcePutJobCreation")) {
6409  response->always_force_put_job_creation = xml_get_bool(client->log, doc, child_node);
6410  } else if (element_equal(child_node, "AlwaysMinimizeSpanningAcrossMedia")) {
6411  response->always_minimize_spanning_across_media = xml_get_bool(client->log, doc, child_node);
6412  } else if (element_equal(child_node, "AlwaysReplicateDeletes")) {
6413  response->always_replicate_deletes = xml_get_bool(client->log, doc, child_node);
6414  } else if (element_equal(child_node, "BlobbingEnabled")) {
6415  response->blobbing_enabled = xml_get_bool(client->log, doc, child_node);
6416  } else if (element_equal(child_node, "ChecksumType")) {
6417  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6418  if (text == NULL) {
6419  continue;
6420  }
6421  response->checksum_type = _match_ds3_checksum_type(client->log, text);
6422  xmlFree(text);
6423  } else if (element_equal(child_node, "CreationDate")) {
6424  response->creation_date = xml_get_string(doc, child_node);
6425  } else if (element_equal(child_node, "DefaultBlobSize")) {
6426  response->default_blob_size = xml_get_uint64(doc, child_node);
6427  } else if (element_equal(child_node, "DefaultGetJobPriority")) {
6428  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6429  if (text == NULL) {
6430  continue;
6431  }
6432  response->default_get_job_priority = _match_ds3_priority(client->log, text);
6433  xmlFree(text);
6434  } else if (element_equal(child_node, "DefaultPutJobPriority")) {
6435  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6436  if (text == NULL) {
6437  continue;
6438  }
6439  response->default_put_job_priority = _match_ds3_priority(client->log, text);
6440  xmlFree(text);
6441  } else if (element_equal(child_node, "DefaultVerifyAfterWrite")) {
6442  response->default_verify_after_write = xml_get_bool(client->log, doc, child_node);
6443  } else if (element_equal(child_node, "DefaultVerifyJobPriority")) {
6444  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6445  if (text == NULL) {
6446  continue;
6447  }
6448  response->default_verify_job_priority = _match_ds3_priority(client->log, text);
6449  xmlFree(text);
6450  } else if (element_equal(child_node, "EndToEndCrcRequired")) {
6451  response->end_to_end_crc_required = xml_get_bool(client->log, doc, child_node);
6452  } else if (element_equal(child_node, "Id")) {
6453  response->id = xml_get_string(doc, child_node);
6454  } else if (element_equal(child_node, "LtfsObjectNamingAllowed")) {
6455  response->ltfs_object_naming_allowed = xml_get_bool(client->log, doc, child_node);
6456  } else if (element_equal(child_node, "Name")) {
6457  response->name = xml_get_string(doc, child_node);
6458  } else if (element_equal(child_node, "RebuildPriority")) {
6459  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6460  if (text == NULL) {
6461  continue;
6462  }
6463  response->rebuild_priority = _match_ds3_priority(client->log, text);
6464  xmlFree(text);
6465  } else if (element_equal(child_node, "Versioning")) {
6466  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6467  if (text == NULL) {
6468  continue;
6469  }
6470  response->versioning = _match_ds3_versioning_level(client->log, text);
6471  xmlFree(text);
6472  } else {
6473  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_response [%s]\n", child_node->name, root->name);
6474  }
6475 
6476  if (error != NULL) {
6477  break;
6478  }
6479 
6480  }
6481 
6482 
6483  xmlFreeDoc(doc);
6484 
6485  if (error == NULL) {
6486  *_response = response;
6487  } else {
6489  }
6490 
6491  return error;
6492 }
6493 static ds3_error* _parse_top_level_ds3_data_policy_acl_response(const ds3_client* client, const ds3_request* request, ds3_data_policy_acl_response** _response, GByteArray* xml_blob) {
6494  xmlDocPtr doc;
6495  xmlNodePtr root;
6496  xmlNodePtr child_node;
6497  ds3_data_policy_acl_response* response;
6498  ds3_error* error = NULL;
6499 
6500  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6501  if (error != NULL) {
6502  return error;
6503  }
6504 
6505  response = g_new0(ds3_data_policy_acl_response, 1);
6506 
6507  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6508  if (element_equal(child_node, "DataPolicyId")) {
6509  response->data_policy_id = xml_get_string(doc, child_node);
6510  } else if (element_equal(child_node, "GroupId")) {
6511  response->group_id = xml_get_string(doc, child_node);
6512  } else if (element_equal(child_node, "Id")) {
6513  response->id = xml_get_string(doc, child_node);
6514  } else if (element_equal(child_node, "UserId")) {
6515  response->user_id = xml_get_string(doc, child_node);
6516  } else {
6517  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_acl_response [%s]\n", child_node->name, root->name);
6518  }
6519 
6520  if (error != NULL) {
6521  break;
6522  }
6523 
6524  }
6525 
6526 
6527  xmlFreeDoc(doc);
6528 
6529  if (error == NULL) {
6530  *_response = response;
6531  } else {
6533  }
6534 
6535  return error;
6536 }
6537 static ds3_error* _parse_top_level_ds3_data_replication_rule_response(const ds3_client* client, const ds3_request* request, ds3_data_replication_rule_response** _response, GByteArray* xml_blob) {
6538  xmlDocPtr doc;
6539  xmlNodePtr root;
6540  xmlNodePtr child_node;
6542  ds3_error* error = NULL;
6543 
6544  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6545  if (error != NULL) {
6546  return error;
6547  }
6548 
6549  response = g_new0(ds3_data_replication_rule_response, 1);
6550 
6551  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6552  if (element_equal(child_node, "DataPolicyId")) {
6553  response->data_policy_id = xml_get_string(doc, child_node);
6554  } else if (element_equal(child_node, "Id")) {
6555  response->id = xml_get_string(doc, child_node);
6556  } else if (element_equal(child_node, "ReplicateDeletes")) {
6557  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
6558  } else if (element_equal(child_node, "State")) {
6559  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6560  if (text == NULL) {
6561  continue;
6562  }
6563  response->state = _match_ds3_data_placement_rule_state(client->log, text);
6564  xmlFree(text);
6565  } else if (element_equal(child_node, "TargetDataPolicy")) {
6566  response->target_data_policy = xml_get_string(doc, child_node);
6567  } else if (element_equal(child_node, "TargetId")) {
6568  response->target_id = xml_get_string(doc, child_node);
6569  } else if (element_equal(child_node, "Type")) {
6570  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6571  if (text == NULL) {
6572  continue;
6573  }
6574  response->type = _match_ds3_data_replication_rule_type(client->log, text);
6575  xmlFree(text);
6576  } else {
6577  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_replication_rule_response [%s]\n", child_node->name, root->name);
6578  }
6579 
6580  if (error != NULL) {
6581  break;
6582  }
6583 
6584  }
6585 
6586 
6587  xmlFreeDoc(doc);
6588 
6589  if (error == NULL) {
6590  *_response = response;
6591  } else {
6593  }
6594 
6595  return error;
6596 }
6597 static ds3_error* _parse_top_level_ds3_group_response(const ds3_client* client, const ds3_request* request, ds3_group_response** _response, GByteArray* xml_blob) {
6598  xmlDocPtr doc;
6599  xmlNodePtr root;
6600  xmlNodePtr child_node;
6601  ds3_group_response* response;
6602  ds3_error* error = NULL;
6603 
6604  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6605  if (error != NULL) {
6606  return error;
6607  }
6608 
6609  response = g_new0(ds3_group_response, 1);
6610 
6611  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6612  if (element_equal(child_node, "BuiltIn")) {
6613  response->built_in = xml_get_bool(client->log, doc, child_node);
6614  } else if (element_equal(child_node, "Id")) {
6615  response->id = xml_get_string(doc, child_node);
6616  } else if (element_equal(child_node, "Name")) {
6617  response->name = xml_get_string(doc, child_node);
6618  } else {
6619  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_response [%s]\n", child_node->name, root->name);
6620  }
6621 
6622  if (error != NULL) {
6623  break;
6624  }
6625 
6626  }
6627 
6628 
6629  xmlFreeDoc(doc);
6630 
6631  if (error == NULL) {
6632  *_response = response;
6633  } else {
6634  ds3_group_response_free(response);
6635  }
6636 
6637  return error;
6638 }
6639 static ds3_error* _parse_top_level_ds3_group_member_response(const ds3_client* client, const ds3_request* request, ds3_group_member_response** _response, GByteArray* xml_blob) {
6640  xmlDocPtr doc;
6641  xmlNodePtr root;
6642  xmlNodePtr child_node;
6643  ds3_group_member_response* response;
6644  ds3_error* error = NULL;
6645 
6646  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6647  if (error != NULL) {
6648  return error;
6649  }
6650 
6651  response = g_new0(ds3_group_member_response, 1);
6652 
6653  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6654  if (element_equal(child_node, "GroupId")) {
6655  response->group_id = xml_get_string(doc, child_node);
6656  } else if (element_equal(child_node, "Id")) {
6657  response->id = xml_get_string(doc, child_node);
6658  } else if (element_equal(child_node, "MemberGroupId")) {
6659  response->member_group_id = xml_get_string(doc, child_node);
6660  } else if (element_equal(child_node, "MemberUserId")) {
6661  response->member_user_id = xml_get_string(doc, child_node);
6662  } else {
6663  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_member_response [%s]\n", child_node->name, root->name);
6664  }
6665 
6666  if (error != NULL) {
6667  break;
6668  }
6669 
6670  }
6671 
6672 
6673  xmlFreeDoc(doc);
6674 
6675  if (error == NULL) {
6676  *_response = response;
6677  } else {
6679  }
6680 
6681  return error;
6682 }
6683 static ds3_error* _parse_top_level_ds3_active_job_response(const ds3_client* client, const ds3_request* request, ds3_active_job_response** _response, GByteArray* xml_blob) {
6684  xmlDocPtr doc;
6685  xmlNodePtr root;
6686  xmlNodePtr child_node;
6687  ds3_active_job_response* response;
6688  ds3_error* error = NULL;
6689 
6690  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6691  if (error != NULL) {
6692  return error;
6693  }
6694 
6695  response = g_new0(ds3_active_job_response, 1);
6696 
6697  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6698  if (element_equal(child_node, "Aggregating")) {
6699  response->aggregating = xml_get_bool(client->log, doc, child_node);
6700  } else if (element_equal(child_node, "BucketId")) {
6701  response->bucket_id = xml_get_string(doc, child_node);
6702  } else if (element_equal(child_node, "CachedSizeInBytes")) {
6703  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
6704  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
6705  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6706  if (text == NULL) {
6707  continue;
6708  }
6710  xmlFree(text);
6711  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
6712  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
6713  } else if (element_equal(child_node, "CreatedAt")) {
6714  response->created_at = xml_get_string(doc, child_node);
6715  } else if (element_equal(child_node, "DeadJobCleanupAllowed")) {
6716  response->dead_job_cleanup_allowed = xml_get_bool(client->log, doc, child_node);
6717  } else if (element_equal(child_node, "ErrorMessage")) {
6718  response->error_message = xml_get_string(doc, child_node);
6719  } else if (element_equal(child_node, "Id")) {
6720  response->id = xml_get_string(doc, child_node);
6721  } else if (element_equal(child_node, "ImplicitJobIdResolution")) {
6722  response->implicit_job_id_resolution = xml_get_bool(client->log, doc, child_node);
6723  } else if (element_equal(child_node, "MinimizeSpanningAcrossMedia")) {
6724  response->minimize_spanning_across_media = xml_get_bool(client->log, doc, child_node);
6725  } else if (element_equal(child_node, "Naked")) {
6726  response->naked = xml_get_bool(client->log, doc, child_node);
6727  } else if (element_equal(child_node, "Name")) {
6728  response->name = xml_get_string(doc, child_node);
6729  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
6730  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
6731  } else if (element_equal(child_node, "Priority")) {
6732  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6733  if (text == NULL) {
6734  continue;
6735  }
6736  response->priority = _match_ds3_priority(client->log, text);
6737  xmlFree(text);
6738  } else if (element_equal(child_node, "Rechunked")) {
6739  response->rechunked = xml_get_string(doc, child_node);
6740  } else if (element_equal(child_node, "Replicating")) {
6741  response->replicating = xml_get_bool(client->log, doc, child_node);
6742  } else if (element_equal(child_node, "RequestType")) {
6743  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6744  if (text == NULL) {
6745  continue;
6746  }
6747  response->request_type = _match_ds3_job_request_type(client->log, text);
6748  xmlFree(text);
6749  } else if (element_equal(child_node, "Truncated")) {
6750  response->truncated = xml_get_bool(client->log, doc, child_node);
6751  } else if (element_equal(child_node, "TruncatedDueToTimeout")) {
6752  response->truncated_due_to_timeout = xml_get_bool(client->log, doc, child_node);
6753  } else if (element_equal(child_node, "UserId")) {
6754  response->user_id = xml_get_string(doc, child_node);
6755  } else if (element_equal(child_node, "VerifyAfterWrite")) {
6756  response->verify_after_write = xml_get_bool(client->log, doc, child_node);
6757  } else {
6758  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_active_job_response [%s]\n", child_node->name, root->name);
6759  }
6760 
6761  if (error != NULL) {
6762  break;
6763  }
6764 
6765  }
6766 
6767 
6768  xmlFreeDoc(doc);
6769 
6770  if (error == NULL) {
6771  *_response = response;
6772  } else {
6773  ds3_active_job_response_free(response);
6774  }
6775 
6776  return error;
6777 }
6778 static ds3_error* _parse_top_level_ds3_job_chunk_response(const ds3_client* client, const ds3_request* request, ds3_job_chunk_response** _response, GByteArray* xml_blob) {
6779  xmlDocPtr doc;
6780  xmlNodePtr root;
6781  xmlNodePtr child_node;
6782  ds3_job_chunk_response* response;
6783  ds3_error* error = NULL;
6784 
6785  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6786  if (error != NULL) {
6787  return error;
6788  }
6789 
6790  response = g_new0(ds3_job_chunk_response, 1);
6791 
6792  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6793  if (element_equal(child_node, "BlobStoreState")) {
6794  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6795  if (text == NULL) {
6796  continue;
6797  }
6798  response->blob_store_state = _match_ds3_job_chunk_blob_store_state(client->log, text);
6799  xmlFree(text);
6800  } else if (element_equal(child_node, "ChunkNumber")) {
6801  response->chunk_number = xml_get_uint16(doc, child_node);
6802  } else if (element_equal(child_node, "Id")) {
6803  response->id = xml_get_string(doc, child_node);
6804  } else if (element_equal(child_node, "JobCreationDate")) {
6805  response->job_creation_date = xml_get_string(doc, child_node);
6806  } else if (element_equal(child_node, "JobId")) {
6807  response->job_id = xml_get_string(doc, child_node);
6808  } else if (element_equal(child_node, "NodeId")) {
6809  response->node_id = xml_get_string(doc, child_node);
6810  } else if (element_equal(child_node, "PendingTargetCommit")) {
6811  response->pending_target_commit = xml_get_bool(client->log, doc, child_node);
6812  } else if (element_equal(child_node, "ReadFromAzureTargetId")) {
6813  response->read_from_azure_target_id = xml_get_string(doc, child_node);
6814  } else if (element_equal(child_node, "ReadFromDs3TargetId")) {
6815  response->read_from_ds3_target_id = xml_get_string(doc, child_node);
6816  } else if (element_equal(child_node, "ReadFromPoolId")) {
6817  response->read_from_pool_id = xml_get_string(doc, child_node);
6818  } else if (element_equal(child_node, "ReadFromS3TargetId")) {
6819  response->read_from_s3_target_id = xml_get_string(doc, child_node);
6820  } else if (element_equal(child_node, "ReadFromTapeId")) {
6821  response->read_from_tape_id = xml_get_string(doc, child_node);
6822  } else {
6823  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_chunk_response [%s]\n", child_node->name, root->name);
6824  }
6825 
6826  if (error != NULL) {
6827  break;
6828  }
6829 
6830  }
6831 
6832 
6833  xmlFreeDoc(doc);
6834 
6835  if (error == NULL) {
6836  *_response = response;
6837  } else {
6838  ds3_job_chunk_response_free(response);
6839  }
6840 
6841  return error;
6842 }
6843 static ds3_error* _parse_top_level_ds3_node_response(const ds3_client* client, const ds3_request* request, ds3_node_response** _response, GByteArray* xml_blob) {
6844  xmlDocPtr doc;
6845  xmlNodePtr root;
6846  xmlNodePtr child_node;
6847  ds3_node_response* response;
6848  ds3_error* error = NULL;
6849 
6850  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6851  if (error != NULL) {
6852  return error;
6853  }
6854 
6855  response = g_new0(ds3_node_response, 1);
6856 
6857  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6858  if (element_equal(child_node, "DataPathHttpPort")) {
6859  response->data_path_http_port = xml_get_uint16(doc, child_node);
6860  } else if (element_equal(child_node, "DataPathHttpsPort")) {
6861  response->data_path_https_port = xml_get_uint16(doc, child_node);
6862  } else if (element_equal(child_node, "DataPathIpAddress")) {
6863  response->data_path_ip_address = xml_get_string(doc, child_node);
6864  } else if (element_equal(child_node, "DnsName")) {
6865  response->dns_name = xml_get_string(doc, child_node);
6866  } else if (element_equal(child_node, "Id")) {
6867  response->id = xml_get_string(doc, child_node);
6868  } else if (element_equal(child_node, "LastHeartbeat")) {
6869  response->last_heartbeat = xml_get_string(doc, child_node);
6870  } else if (element_equal(child_node, "Name")) {
6871  response->name = xml_get_string(doc, child_node);
6872  } else if (element_equal(child_node, "SerialNumber")) {
6873  response->serial_number = xml_get_string(doc, child_node);
6874  } else {
6875  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_node_response [%s]\n", child_node->name, root->name);
6876  }
6877 
6878  if (error != NULL) {
6879  break;
6880  }
6881 
6882  }
6883 
6884 
6885  xmlFreeDoc(doc);
6886 
6887  if (error == NULL) {
6888  *_response = response;
6889  } else {
6890  ds3_node_response_free(response);
6891  }
6892 
6893  return error;
6894 }
6896  xmlDocPtr doc;
6897  xmlNodePtr root;
6898  xmlNodePtr child_node;
6900  ds3_error* error = NULL;
6901 
6902  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6903  if (error != NULL) {
6904  return error;
6905  }
6906 
6907  response = g_new0(ds3_s3_data_replication_rule_response, 1);
6908 
6909  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6910  if (element_equal(child_node, "DataPolicyId")) {
6911  response->data_policy_id = xml_get_string(doc, child_node);
6912  } else if (element_equal(child_node, "Id")) {
6913  response->id = xml_get_string(doc, child_node);
6914  } else if (element_equal(child_node, "InitialDataPlacement")) {
6915  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6916  if (text == NULL) {
6917  continue;
6918  }
6920  xmlFree(text);
6921  } else if (element_equal(child_node, "MaxBlobPartSizeInBytes")) {
6922  response->max_blob_part_size_in_bytes = xml_get_uint64(doc, child_node);
6923  } else if (element_equal(child_node, "ReplicateDeletes")) {
6924  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
6925  } else if (element_equal(child_node, "State")) {
6926  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6927  if (text == NULL) {
6928  continue;
6929  }
6930  response->state = _match_ds3_data_placement_rule_state(client->log, text);
6931  xmlFree(text);
6932  } else if (element_equal(child_node, "TargetId")) {
6933  response->target_id = xml_get_string(doc, child_node);
6934  } else if (element_equal(child_node, "Type")) {
6935  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6936  if (text == NULL) {
6937  continue;
6938  }
6939  response->type = _match_ds3_data_replication_rule_type(client->log, text);
6940  xmlFree(text);
6941  } else {
6942  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_data_replication_rule_response [%s]\n", child_node->name, root->name);
6943  }
6944 
6945  if (error != NULL) {
6946  break;
6947  }
6948 
6949  }
6950 
6951 
6952  xmlFreeDoc(doc);
6953 
6954  if (error == NULL) {
6955  *_response = response;
6956  } else {
6958  }
6959 
6960  return error;
6961 }
6962 static ds3_error* _parse_top_level_ds3_s3_object_response(const ds3_client* client, const ds3_request* request, ds3_s3_object_response** _response, GByteArray* xml_blob) {
6963  xmlDocPtr doc;
6964  xmlNodePtr root;
6965  xmlNodePtr child_node;
6966  ds3_s3_object_response* response;
6967  ds3_error* error = NULL;
6968 
6969  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6970  if (error != NULL) {
6971  return error;
6972  }
6973 
6974  response = g_new0(ds3_s3_object_response, 1);
6975 
6976  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6977  if (element_equal(child_node, "BucketId")) {
6978  response->bucket_id = xml_get_string(doc, child_node);
6979  } else if (element_equal(child_node, "CreationDate")) {
6980  response->creation_date = xml_get_string(doc, child_node);
6981  } else if (element_equal(child_node, "Id")) {
6982  response->id = xml_get_string(doc, child_node);
6983  } else if (element_equal(child_node, "Latest")) {
6984  response->latest = xml_get_bool(client->log, doc, child_node);
6985  } else if (element_equal(child_node, "Name")) {
6986  response->name = xml_get_string(doc, child_node);
6987  } else if (element_equal(child_node, "Type")) {
6988  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6989  if (text == NULL) {
6990  continue;
6991  }
6992  response->type = _match_ds3_s3_object_type(client->log, text);
6993  xmlFree(text);
6994  } else if (element_equal(child_node, "Version")) {
6995  response->version = xml_get_uint64(doc, child_node);
6996  } else {
6997  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_response [%s]\n", child_node->name, root->name);
6998  }
6999 
7000  if (error != NULL) {
7001  break;
7002  }
7003 
7004  }
7005 
7006 
7007  xmlFreeDoc(doc);
7008 
7009  if (error == NULL) {
7010  *_response = response;
7011  } else {
7012  ds3_s3_object_response_free(response);
7013  }
7014 
7015  return error;
7016 }
7017 static ds3_error* _parse_top_level_ds3_storage_domain_response(const ds3_client* client, const ds3_request* request, ds3_storage_domain_response** _response, GByteArray* xml_blob) {
7018  xmlDocPtr doc;
7019  xmlNodePtr root;
7020  xmlNodePtr child_node;
7021  ds3_storage_domain_response* response;
7022  ds3_error* error = NULL;
7023 
7024  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7025  if (error != NULL) {
7026  return error;
7027  }
7028 
7029  response = g_new0(ds3_storage_domain_response, 1);
7030 
7031  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7032  if (element_equal(child_node, "AutoEjectMediaFullThreshold")) {
7033  response->auto_eject_media_full_threshold = xml_get_uint64(doc, child_node);
7034  } else if (element_equal(child_node, "AutoEjectUponCron")) {
7035  response->auto_eject_upon_cron = xml_get_string(doc, child_node);
7036  } else if (element_equal(child_node, "AutoEjectUponJobCancellation")) {
7037  response->auto_eject_upon_job_cancellation = xml_get_bool(client->log, doc, child_node);
7038  } else if (element_equal(child_node, "AutoEjectUponJobCompletion")) {
7039  response->auto_eject_upon_job_completion = xml_get_bool(client->log, doc, child_node);
7040  } else if (element_equal(child_node, "AutoEjectUponMediaFull")) {
7041  response->auto_eject_upon_media_full = xml_get_bool(client->log, doc, child_node);
7042  } else if (element_equal(child_node, "Id")) {
7043  response->id = xml_get_string(doc, child_node);
7044  } else if (element_equal(child_node, "LtfsFileNaming")) {
7045  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7046  if (text == NULL) {
7047  continue;
7048  }
7049  response->ltfs_file_naming = _match_ds3_ltfs_file_naming_mode(client->log, text);
7050  xmlFree(text);
7051  } else if (element_equal(child_node, "MaxTapeFragmentationPercent")) {
7052  response->max_tape_fragmentation_percent = xml_get_uint16(doc, child_node);
7053  } else if (element_equal(child_node, "MaximumAutoVerificationFrequencyInDays")) {
7054  response->maximum_auto_verification_frequency_in_days = xml_get_uint16(doc, child_node);
7055  } else if (element_equal(child_node, "MediaEjectionAllowed")) {
7056  response->media_ejection_allowed = xml_get_bool(client->log, doc, child_node);
7057  } else if (element_equal(child_node, "Name")) {
7058  response->name = xml_get_string(doc, child_node);
7059  } else if (element_equal(child_node, "SecureMediaAllocation")) {
7060  response->secure_media_allocation = xml_get_bool(client->log, doc, child_node);
7061  } else if (element_equal(child_node, "VerifyPriorToAutoEject")) {
7062  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7063  if (text == NULL) {
7064  continue;
7065  }
7066  response->verify_prior_to_auto_eject = _match_ds3_priority(client->log, text);
7067  xmlFree(text);
7068  } else if (element_equal(child_node, "WriteOptimization")) {
7069  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7070  if (text == NULL) {
7071  continue;
7072  }
7073  response->write_optimization = _match_ds3_write_optimization(client->log, text);
7074  xmlFree(text);
7075  } else {
7076  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_response [%s]\n", child_node->name, root->name);
7077  }
7078 
7079  if (error != NULL) {
7080  break;
7081  }
7082 
7083  }
7084 
7085 
7086  xmlFreeDoc(doc);
7087 
7088  if (error == NULL) {
7089  *_response = response;
7090  } else {
7092  }
7093 
7094  return error;
7095 }
7096 static ds3_error* _parse_top_level_ds3_storage_domain_member_response(const ds3_client* client, const ds3_request* request, ds3_storage_domain_member_response** _response, GByteArray* xml_blob) {
7097  xmlDocPtr doc;
7098  xmlNodePtr root;
7099  xmlNodePtr child_node;
7101  ds3_error* error = NULL;
7102 
7103  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7104  if (error != NULL) {
7105  return error;
7106  }
7107 
7108  response = g_new0(ds3_storage_domain_member_response, 1);
7109 
7110  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7111  if (element_equal(child_node, "Id")) {
7112  response->id = xml_get_string(doc, child_node);
7113  } else if (element_equal(child_node, "PoolPartitionId")) {
7114  response->pool_partition_id = xml_get_string(doc, child_node);
7115  } else if (element_equal(child_node, "State")) {
7116  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7117  if (text == NULL) {
7118  continue;
7119  }
7120  response->state = _match_ds3_storage_domain_member_state(client->log, text);
7121  xmlFree(text);
7122  } else if (element_equal(child_node, "StorageDomainId")) {
7123  response->storage_domain_id = xml_get_string(doc, child_node);
7124  } else if (element_equal(child_node, "TapePartitionId")) {
7125  response->tape_partition_id = xml_get_string(doc, child_node);
7126  } else if (element_equal(child_node, "TapeType")) {
7127  response->tape_type = xml_get_string(doc, child_node);
7128  } else if (element_equal(child_node, "WritePreference")) {
7129  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7130  if (text == NULL) {
7131  continue;
7132  }
7133  response->write_preference = _match_ds3_write_preference_level(client->log, text);
7134  xmlFree(text);
7135  } else {
7136  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_member_response [%s]\n", child_node->name, root->name);
7137  }
7138 
7139  if (error != NULL) {
7140  break;
7141  }
7142 
7143  }
7144 
7145 
7146  xmlFreeDoc(doc);
7147 
7148  if (error == NULL) {
7149  *_response = response;
7150  } else {
7152  }
7153 
7154  return error;
7155 }
7156 static ds3_error* _parse_top_level_ds3_spectra_user_response(const ds3_client* client, const ds3_request* request, ds3_spectra_user_response** _response, GByteArray* xml_blob) {
7157  xmlDocPtr doc;
7158  xmlNodePtr root;
7159  xmlNodePtr child_node;
7160  ds3_spectra_user_response* response;
7161  ds3_error* error = NULL;
7162 
7163  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7164  if (error != NULL) {
7165  return error;
7166  }
7167 
7168  response = g_new0(ds3_spectra_user_response, 1);
7169 
7170  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7171  if (element_equal(child_node, "AuthId")) {
7172  response->auth_id = xml_get_string(doc, child_node);
7173  } else if (element_equal(child_node, "DefaultDataPolicyId")) {
7174  response->default_data_policy_id = xml_get_string(doc, child_node);
7175  } else if (element_equal(child_node, "Id")) {
7176  response->id = xml_get_string(doc, child_node);
7177  } else if (element_equal(child_node, "Name")) {
7178  response->name = xml_get_string(doc, child_node);
7179  } else if (element_equal(child_node, "SecretKey")) {
7180  response->secret_key = xml_get_string(doc, child_node);
7181  } else {
7182  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_spectra_user_response [%s]\n", child_node->name, root->name);
7183  }
7184 
7185  if (error != NULL) {
7186  break;
7187  }
7188 
7189  }
7190 
7191 
7192  xmlFreeDoc(doc);
7193 
7194  if (error == NULL) {
7195  *_response = response;
7196  } else {
7198  }
7199 
7200  return error;
7201 }
7203  xmlDocPtr doc;
7204  xmlNodePtr root;
7205  xmlNodePtr child_node;
7207  ds3_error* error = NULL;
7208 
7209  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7210  if (error != NULL) {
7211  return error;
7212  }
7213 
7215 
7216  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7217  if (element_equal(child_node, "CreationDate")) {
7218  response->creation_date = xml_get_string(doc, child_node);
7219  } else if (element_equal(child_node, "Format")) {
7220  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7221  if (text == NULL) {
7222  continue;
7223  }
7224  response->format = _match_ds3_http_response_format_type(client->log, text);
7225  xmlFree(text);
7226  } else if (element_equal(child_node, "Id")) {
7227  response->id = xml_get_string(doc, child_node);
7228  } else if (element_equal(child_node, "LastFailure")) {
7229  response->last_failure = xml_get_string(doc, child_node);
7230  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7231  response->last_http_response_code = xml_get_uint16(doc, child_node);
7232  } else if (element_equal(child_node, "LastNotification")) {
7233  response->last_notification = xml_get_string(doc, child_node);
7234  } else if (element_equal(child_node, "NamingConvention")) {
7235  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7236  if (text == NULL) {
7237  continue;
7238  }
7239  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7240  xmlFree(text);
7241  } else if (element_equal(child_node, "NotificationEndPoint")) {
7242  response->notification_end_point = xml_get_string(doc, child_node);
7243  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7244  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7245  if (text == NULL) {
7246  continue;
7247  }
7248  response->notification_http_method = _match_ds3_request_type(client->log, text);
7249  xmlFree(text);
7250  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7251  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7252  } else if (element_equal(child_node, "UserId")) {
7253  response->user_id = xml_get_string(doc, child_node);
7254  } else {
7255  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_failure_notification_registration_response [%s]\n", child_node->name, root->name);
7256  }
7257 
7258  if (error != NULL) {
7259  break;
7260  }
7261 
7262  }
7263 
7264 
7265  xmlFreeDoc(doc);
7266 
7267  if (error == NULL) {
7268  *_response = response;
7269  } else {
7271  }
7272 
7273  return error;
7274 }
7276  xmlDocPtr doc;
7277  xmlNodePtr root;
7278  xmlNodePtr child_node;
7280  ds3_error* error = NULL;
7281 
7282  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7283  if (error != NULL) {
7284  return error;
7285  }
7286 
7288 
7289  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7290  if (element_equal(child_node, "CreationDate")) {
7291  response->creation_date = xml_get_string(doc, child_node);
7292  } else if (element_equal(child_node, "Format")) {
7293  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7294  if (text == NULL) {
7295  continue;
7296  }
7297  response->format = _match_ds3_http_response_format_type(client->log, text);
7298  xmlFree(text);
7299  } else if (element_equal(child_node, "Id")) {
7300  response->id = xml_get_string(doc, child_node);
7301  } else if (element_equal(child_node, "LastFailure")) {
7302  response->last_failure = xml_get_string(doc, child_node);
7303  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7304  response->last_http_response_code = xml_get_uint16(doc, child_node);
7305  } else if (element_equal(child_node, "LastNotification")) {
7306  response->last_notification = xml_get_string(doc, child_node);
7307  } else if (element_equal(child_node, "NamingConvention")) {
7308  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7309  if (text == NULL) {
7310  continue;
7311  }
7312  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7313  xmlFree(text);
7314  } else if (element_equal(child_node, "NotificationEndPoint")) {
7315  response->notification_end_point = xml_get_string(doc, child_node);
7316  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7317  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7318  if (text == NULL) {
7319  continue;
7320  }
7321  response->notification_http_method = _match_ds3_request_type(client->log, text);
7322  xmlFree(text);
7323  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7324  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7325  } else if (element_equal(child_node, "UserId")) {
7326  response->user_id = xml_get_string(doc, child_node);
7327  } else {
7328  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_failure_notification_registration_response [%s]\n", child_node->name, root->name);
7329  }
7330 
7331  if (error != NULL) {
7332  break;
7333  }
7334 
7335  }
7336 
7337 
7338  xmlFreeDoc(doc);
7339 
7340  if (error == NULL) {
7341  *_response = response;
7342  } else {
7344  }
7345 
7346  return error;
7347 }
7349  xmlDocPtr doc;
7350  xmlNodePtr root;
7351  xmlNodePtr child_node;
7353  ds3_error* error = NULL;
7354 
7355  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7356  if (error != NULL) {
7357  return error;
7358  }
7359 
7361 
7362  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7363  if (element_equal(child_node, "CreationDate")) {
7364  response->creation_date = xml_get_string(doc, child_node);
7365  } else if (element_equal(child_node, "Format")) {
7366  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7367  if (text == NULL) {
7368  continue;
7369  }
7370  response->format = _match_ds3_http_response_format_type(client->log, text);
7371  xmlFree(text);
7372  } else if (element_equal(child_node, "Id")) {
7373  response->id = xml_get_string(doc, child_node);
7374  } else if (element_equal(child_node, "JobId")) {
7375  response->job_id = xml_get_string(doc, child_node);
7376  } else if (element_equal(child_node, "LastFailure")) {
7377  response->last_failure = xml_get_string(doc, child_node);
7378  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7379  response->last_http_response_code = xml_get_uint16(doc, child_node);
7380  } else if (element_equal(child_node, "LastNotification")) {
7381  response->last_notification = xml_get_string(doc, child_node);
7382  } else if (element_equal(child_node, "NamingConvention")) {
7383  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7384  if (text == NULL) {
7385  continue;
7386  }
7387  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7388  xmlFree(text);
7389  } else if (element_equal(child_node, "NotificationEndPoint")) {
7390  response->notification_end_point = xml_get_string(doc, child_node);
7391  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7392  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7393  if (text == NULL) {
7394  continue;
7395  }
7396  response->notification_http_method = _match_ds3_request_type(client->log, text);
7397  xmlFree(text);
7398  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7399  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7400  } else if (element_equal(child_node, "UserId")) {
7401  response->user_id = xml_get_string(doc, child_node);
7402  } else {
7403  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_completed_notification_registration_response [%s]\n", child_node->name, root->name);
7404  }
7405 
7406  if (error != NULL) {
7407  break;
7408  }
7409 
7410  }
7411 
7412 
7413  xmlFreeDoc(doc);
7414 
7415  if (error == NULL) {
7416  *_response = response;
7417  } else {
7419  }
7420 
7421  return error;
7422 }
7424  xmlDocPtr doc;
7425  xmlNodePtr root;
7426  xmlNodePtr child_node;
7428  ds3_error* error = NULL;
7429 
7430  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7431  if (error != NULL) {
7432  return error;
7433  }
7434 
7436 
7437  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7438  if (element_equal(child_node, "CreationDate")) {
7439  response->creation_date = xml_get_string(doc, child_node);
7440  } else if (element_equal(child_node, "Format")) {
7441  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7442  if (text == NULL) {
7443  continue;
7444  }
7445  response->format = _match_ds3_http_response_format_type(client->log, text);
7446  xmlFree(text);
7447  } else if (element_equal(child_node, "Id")) {
7448  response->id = xml_get_string(doc, child_node);
7449  } else if (element_equal(child_node, "LastFailure")) {
7450  response->last_failure = xml_get_string(doc, child_node);
7451  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7452  response->last_http_response_code = xml_get_uint16(doc, child_node);
7453  } else if (element_equal(child_node, "LastNotification")) {
7454  response->last_notification = xml_get_string(doc, child_node);
7455  } else if (element_equal(child_node, "NamingConvention")) {
7456  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7457  if (text == NULL) {
7458  continue;
7459  }
7460  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7461  xmlFree(text);
7462  } else if (element_equal(child_node, "NotificationEndPoint")) {
7463  response->notification_end_point = xml_get_string(doc, child_node);
7464  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7465  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7466  if (text == NULL) {
7467  continue;
7468  }
7469  response->notification_http_method = _match_ds3_request_type(client->log, text);
7470  xmlFree(text);
7471  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7472  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7473  } else if (element_equal(child_node, "UserId")) {
7474  response->user_id = xml_get_string(doc, child_node);
7475  } else {
7476  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_created_notification_registration_response [%s]\n", child_node->name, root->name);
7477  }
7478 
7479  if (error != NULL) {
7480  break;
7481  }
7482 
7483  }
7484 
7485 
7486  xmlFreeDoc(doc);
7487 
7488  if (error == NULL) {
7489  *_response = response;
7490  } else {
7492  }
7493 
7494  return error;
7495 }
7497  xmlDocPtr doc;
7498  xmlNodePtr root;
7499  xmlNodePtr child_node;
7501  ds3_error* error = NULL;
7502 
7503  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7504  if (error != NULL) {
7505  return error;
7506  }
7507 
7509 
7510  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7511  if (element_equal(child_node, "CreationDate")) {
7512  response->creation_date = xml_get_string(doc, child_node);
7513  } else if (element_equal(child_node, "Format")) {
7514  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7515  if (text == NULL) {
7516  continue;
7517  }
7518  response->format = _match_ds3_http_response_format_type(client->log, text);
7519  xmlFree(text);
7520  } else if (element_equal(child_node, "Id")) {
7521  response->id = xml_get_string(doc, child_node);
7522  } else if (element_equal(child_node, "LastFailure")) {
7523  response->last_failure = xml_get_string(doc, child_node);
7524  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7525  response->last_http_response_code = xml_get_uint16(doc, child_node);
7526  } else if (element_equal(child_node, "LastNotification")) {
7527  response->last_notification = xml_get_string(doc, child_node);
7528  } else if (element_equal(child_node, "NamingConvention")) {
7529  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7530  if (text == NULL) {
7531  continue;
7532  }
7533  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7534  xmlFree(text);
7535  } else if (element_equal(child_node, "NotificationEndPoint")) {
7536  response->notification_end_point = xml_get_string(doc, child_node);
7537  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7538  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7539  if (text == NULL) {
7540  continue;
7541  }
7542  response->notification_http_method = _match_ds3_request_type(client->log, text);
7543  xmlFree(text);
7544  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7545  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7546  } else if (element_equal(child_node, "UserId")) {
7547  response->user_id = xml_get_string(doc, child_node);
7548  } else {
7549  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_creation_failed_notification_registration_response [%s]\n", child_node->name, root->name);
7550  }
7551 
7552  if (error != NULL) {
7553  break;
7554  }
7555 
7556  }
7557 
7558 
7559  xmlFreeDoc(doc);
7560 
7561  if (error == NULL) {
7562  *_response = response;
7563  } else {
7565  }
7566 
7567  return error;
7568 }
7570  xmlDocPtr doc;
7571  xmlNodePtr root;
7572  xmlNodePtr child_node;
7574  ds3_error* error = NULL;
7575 
7576  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7577  if (error != NULL) {
7578  return error;
7579  }
7580 
7582 
7583  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7584  if (element_equal(child_node, "CreationDate")) {
7585  response->creation_date = xml_get_string(doc, child_node);
7586  } else if (element_equal(child_node, "Format")) {
7587  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7588  if (text == NULL) {
7589  continue;
7590  }
7591  response->format = _match_ds3_http_response_format_type(client->log, text);
7592  xmlFree(text);
7593  } else if (element_equal(child_node, "Id")) {
7594  response->id = xml_get_string(doc, child_node);
7595  } else if (element_equal(child_node, "LastFailure")) {
7596  response->last_failure = xml_get_string(doc, child_node);
7597  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7598  response->last_http_response_code = xml_get_uint16(doc, child_node);
7599  } else if (element_equal(child_node, "LastNotification")) {
7600  response->last_notification = xml_get_string(doc, child_node);
7601  } else if (element_equal(child_node, "NamingConvention")) {
7602  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7603  if (text == NULL) {
7604  continue;
7605  }
7606  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7607  xmlFree(text);
7608  } else if (element_equal(child_node, "NotificationEndPoint")) {
7609  response->notification_end_point = xml_get_string(doc, child_node);
7610  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7611  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7612  if (text == NULL) {
7613  continue;
7614  }
7615  response->notification_http_method = _match_ds3_request_type(client->log, text);
7616  xmlFree(text);
7617  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7618  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7619  } else if (element_equal(child_node, "UserId")) {
7620  response->user_id = xml_get_string(doc, child_node);
7621  } else {
7622  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_notification_registration_response [%s]\n", child_node->name, root->name);
7623  }
7624 
7625  if (error != NULL) {
7626  break;
7627  }
7628 
7629  }
7630 
7631 
7632  xmlFreeDoc(doc);
7633 
7634  if (error == NULL) {
7635  *_response = response;
7636  } else {
7638  }
7639 
7640  return error;
7641 }
7643  xmlDocPtr doc;
7644  xmlNodePtr root;
7645  xmlNodePtr child_node;
7647  ds3_error* error = NULL;
7648 
7649  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7650  if (error != NULL) {
7651  return error;
7652  }
7653 
7655 
7656  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7657  if (element_equal(child_node, "CreationDate")) {
7658  response->creation_date = xml_get_string(doc, child_node);
7659  } else if (element_equal(child_node, "Format")) {
7660  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7661  if (text == NULL) {
7662  continue;
7663  }
7664  response->format = _match_ds3_http_response_format_type(client->log, text);
7665  xmlFree(text);
7666  } else if (element_equal(child_node, "Id")) {
7667  response->id = xml_get_string(doc, child_node);
7668  } else if (element_equal(child_node, "JobId")) {
7669  response->job_id = xml_get_string(doc, child_node);
7670  } else if (element_equal(child_node, "LastFailure")) {
7671  response->last_failure = xml_get_string(doc, child_node);
7672  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7673  response->last_http_response_code = xml_get_uint16(doc, child_node);
7674  } else if (element_equal(child_node, "LastNotification")) {
7675  response->last_notification = xml_get_string(doc, child_node);
7676  } else if (element_equal(child_node, "NamingConvention")) {
7677  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7678  if (text == NULL) {
7679  continue;
7680  }
7681  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7682  xmlFree(text);
7683  } else if (element_equal(child_node, "NotificationEndPoint")) {
7684  response->notification_end_point = xml_get_string(doc, child_node);
7685  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7686  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7687  if (text == NULL) {
7688  continue;
7689  }
7690  response->notification_http_method = _match_ds3_request_type(client->log, text);
7691  xmlFree(text);
7692  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7693  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7694  } else if (element_equal(child_node, "UserId")) {
7695  response->user_id = xml_get_string(doc, child_node);
7696  } else {
7697  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_cached_notification_registration_response [%s]\n", child_node->name, root->name);
7698  }
7699 
7700  if (error != NULL) {
7701  break;
7702  }
7703 
7704  }
7705 
7706 
7707  xmlFreeDoc(doc);
7708 
7709  if (error == NULL) {
7710  *_response = response;
7711  } else {
7713  }
7714 
7715  return error;
7716 }
7718  xmlDocPtr doc;
7719  xmlNodePtr root;
7720  xmlNodePtr child_node;
7722  ds3_error* error = NULL;
7723 
7724  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7725  if (error != NULL) {
7726  return error;
7727  }
7728 
7730 
7731  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7732  if (element_equal(child_node, "CreationDate")) {
7733  response->creation_date = xml_get_string(doc, child_node);
7734  } else if (element_equal(child_node, "Format")) {
7735  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7736  if (text == NULL) {
7737  continue;
7738  }
7739  response->format = _match_ds3_http_response_format_type(client->log, text);
7740  xmlFree(text);
7741  } else if (element_equal(child_node, "Id")) {
7742  response->id = xml_get_string(doc, child_node);
7743  } else if (element_equal(child_node, "LastFailure")) {
7744  response->last_failure = xml_get_string(doc, child_node);
7745  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7746  response->last_http_response_code = xml_get_uint16(doc, child_node);
7747  } else if (element_equal(child_node, "LastNotification")) {
7748  response->last_notification = xml_get_string(doc, child_node);
7749  } else if (element_equal(child_node, "NamingConvention")) {
7750  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7751  if (text == NULL) {
7752  continue;
7753  }
7754  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7755  xmlFree(text);
7756  } else if (element_equal(child_node, "NotificationEndPoint")) {
7757  response->notification_end_point = xml_get_string(doc, child_node);
7758  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7759  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7760  if (text == NULL) {
7761  continue;
7762  }
7763  response->notification_http_method = _match_ds3_request_type(client->log, text);
7764  xmlFree(text);
7765  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7766  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7767  } else if (element_equal(child_node, "UserId")) {
7768  response->user_id = xml_get_string(doc, child_node);
7769  } else {
7770  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_lost_notification_registration_response [%s]\n", child_node->name, root->name);
7771  }
7772 
7773  if (error != NULL) {
7774  break;
7775  }
7776 
7777  }
7778 
7779 
7780  xmlFreeDoc(doc);
7781 
7782  if (error == NULL) {
7783  *_response = response;
7784  } else {
7786  }
7787 
7788  return error;
7789 }
7791  xmlDocPtr doc;
7792  xmlNodePtr root;
7793  xmlNodePtr child_node;
7795  ds3_error* error = NULL;
7796 
7797  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7798  if (error != NULL) {
7799  return error;
7800  }
7801 
7803 
7804  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7805  if (element_equal(child_node, "CreationDate")) {
7806  response->creation_date = xml_get_string(doc, child_node);
7807  } else if (element_equal(child_node, "Format")) {
7808  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7809  if (text == NULL) {
7810  continue;
7811  }
7812  response->format = _match_ds3_http_response_format_type(client->log, text);
7813  xmlFree(text);
7814  } else if (element_equal(child_node, "Id")) {
7815  response->id = xml_get_string(doc, child_node);
7816  } else if (element_equal(child_node, "JobId")) {
7817  response->job_id = xml_get_string(doc, child_node);
7818  } else if (element_equal(child_node, "LastFailure")) {
7819  response->last_failure = xml_get_string(doc, child_node);
7820  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7821  response->last_http_response_code = xml_get_uint16(doc, child_node);
7822  } else if (element_equal(child_node, "LastNotification")) {
7823  response->last_notification = xml_get_string(doc, child_node);
7824  } else if (element_equal(child_node, "NamingConvention")) {
7825  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7826  if (text == NULL) {
7827  continue;
7828  }
7829  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7830  xmlFree(text);
7831  } else if (element_equal(child_node, "NotificationEndPoint")) {
7832  response->notification_end_point = xml_get_string(doc, child_node);
7833  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7834  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7835  if (text == NULL) {
7836  continue;
7837  }
7838  response->notification_http_method = _match_ds3_request_type(client->log, text);
7839  xmlFree(text);
7840  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7841  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7842  } else if (element_equal(child_node, "UserId")) {
7843  response->user_id = xml_get_string(doc, child_node);
7844  } else {
7845  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_persisted_notification_registration_response [%s]\n", child_node->name, root->name);
7846  }
7847 
7848  if (error != NULL) {
7849  break;
7850  }
7851 
7852  }
7853 
7854 
7855  xmlFreeDoc(doc);
7856 
7857  if (error == NULL) {
7858  *_response = response;
7859  } else {
7861  }
7862 
7863  return error;
7864 }
7866  xmlDocPtr doc;
7867  xmlNodePtr root;
7868  xmlNodePtr child_node;
7870  ds3_error* error = NULL;
7871 
7872  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7873  if (error != NULL) {
7874  return error;
7875  }
7876 
7878 
7879  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7880  if (element_equal(child_node, "CreationDate")) {
7881  response->creation_date = xml_get_string(doc, child_node);
7882  } else if (element_equal(child_node, "Format")) {
7883  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7884  if (text == NULL) {
7885  continue;
7886  }
7887  response->format = _match_ds3_http_response_format_type(client->log, text);
7888  xmlFree(text);
7889  } else if (element_equal(child_node, "Id")) {
7890  response->id = xml_get_string(doc, child_node);
7891  } else if (element_equal(child_node, "LastFailure")) {
7892  response->last_failure = xml_get_string(doc, child_node);
7893  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7894  response->last_http_response_code = xml_get_uint16(doc, child_node);
7895  } else if (element_equal(child_node, "LastNotification")) {
7896  response->last_notification = xml_get_string(doc, child_node);
7897  } else if (element_equal(child_node, "NamingConvention")) {
7898  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7899  if (text == NULL) {
7900  continue;
7901  }
7902  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7903  xmlFree(text);
7904  } else if (element_equal(child_node, "NotificationEndPoint")) {
7905  response->notification_end_point = xml_get_string(doc, child_node);
7906  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7907  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7908  if (text == NULL) {
7909  continue;
7910  }
7911  response->notification_http_method = _match_ds3_request_type(client->log, text);
7912  xmlFree(text);
7913  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7914  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7915  } else if (element_equal(child_node, "UserId")) {
7916  response->user_id = xml_get_string(doc, child_node);
7917  } else {
7918  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_failure_notification_registration_response [%s]\n", child_node->name, root->name);
7919  }
7920 
7921  if (error != NULL) {
7922  break;
7923  }
7924 
7925  }
7926 
7927 
7928  xmlFreeDoc(doc);
7929 
7930  if (error == NULL) {
7931  *_response = response;
7932  } else {
7934  }
7935 
7936  return error;
7937 }
7939  xmlDocPtr doc;
7940  xmlNodePtr root;
7941  xmlNodePtr child_node;
7943  ds3_error* error = NULL;
7944 
7945  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7946  if (error != NULL) {
7947  return error;
7948  }
7949 
7951 
7952  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7953  if (element_equal(child_node, "CreationDate")) {
7954  response->creation_date = xml_get_string(doc, child_node);
7955  } else if (element_equal(child_node, "Format")) {
7956  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7957  if (text == NULL) {
7958  continue;
7959  }
7960  response->format = _match_ds3_http_response_format_type(client->log, text);
7961  xmlFree(text);
7962  } else if (element_equal(child_node, "Id")) {
7963  response->id = xml_get_string(doc, child_node);
7964  } else if (element_equal(child_node, "LastFailure")) {
7965  response->last_failure = xml_get_string(doc, child_node);
7966  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7967  response->last_http_response_code = xml_get_uint16(doc, child_node);
7968  } else if (element_equal(child_node, "LastNotification")) {
7969  response->last_notification = xml_get_string(doc, child_node);
7970  } else if (element_equal(child_node, "NamingConvention")) {
7971  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7972  if (text == NULL) {
7973  continue;
7974  }
7975  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7976  xmlFree(text);
7977  } else if (element_equal(child_node, "NotificationEndPoint")) {
7978  response->notification_end_point = xml_get_string(doc, child_node);
7979  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7980  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7981  if (text == NULL) {
7982  continue;
7983  }
7984  response->notification_http_method = _match_ds3_request_type(client->log, text);
7985  xmlFree(text);
7986  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7987  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7988  } else if (element_equal(child_node, "UserId")) {
7989  response->user_id = xml_get_string(doc, child_node);
7990  } else {
7991  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_failure_notification_registration_response [%s]\n", child_node->name, root->name);
7992  }
7993 
7994  if (error != NULL) {
7995  break;
7996  }
7997 
7998  }
7999 
8000 
8001  xmlFreeDoc(doc);
8002 
8003  if (error == NULL) {
8004  *_response = response;
8005  } else {
8007  }
8008 
8009  return error;
8010 }
8012  xmlDocPtr doc;
8013  xmlNodePtr root;
8014  xmlNodePtr child_node;
8016  ds3_error* error = NULL;
8017 
8018  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8019  if (error != NULL) {
8020  return error;
8021  }
8022 
8024 
8025  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8026  if (element_equal(child_node, "CreationDate")) {
8027  response->creation_date = xml_get_string(doc, child_node);
8028  } else if (element_equal(child_node, "Format")) {
8029  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8030  if (text == NULL) {
8031  continue;
8032  }
8033  response->format = _match_ds3_http_response_format_type(client->log, text);
8034  xmlFree(text);
8035  } else if (element_equal(child_node, "Id")) {
8036  response->id = xml_get_string(doc, child_node);
8037  } else if (element_equal(child_node, "LastFailure")) {
8038  response->last_failure = xml_get_string(doc, child_node);
8039  } else if (element_equal(child_node, "LastHttpResponseCode")) {
8040  response->last_http_response_code = xml_get_uint16(doc, child_node);
8041  } else if (element_equal(child_node, "LastNotification")) {
8042  response->last_notification = xml_get_string(doc, child_node);
8043  } else if (element_equal(child_node, "NamingConvention")) {
8044  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8045  if (text == NULL) {
8046  continue;
8047  }
8048  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
8049  xmlFree(text);
8050  } else if (element_equal(child_node, "NotificationEndPoint")) {
8051  response->notification_end_point = xml_get_string(doc, child_node);
8052  } else if (element_equal(child_node, "NotificationHttpMethod")) {
8053  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8054  if (text == NULL) {
8055  continue;
8056  }
8057  response->notification_http_method = _match_ds3_request_type(client->log, text);
8058  xmlFree(text);
8059  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
8060  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
8061  } else if (element_equal(child_node, "UserId")) {
8062  response->user_id = xml_get_string(doc, child_node);
8063  } else {
8064  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_notification_registration_response [%s]\n", child_node->name, root->name);
8065  }
8066 
8067  if (error != NULL) {
8068  break;
8069  }
8070 
8071  }
8072 
8073 
8074  xmlFreeDoc(doc);
8075 
8076  if (error == NULL) {
8077  *_response = response;
8078  } else {
8080  }
8081 
8082  return error;
8083 }
8085  xmlDocPtr doc;
8086  xmlNodePtr root;
8087  xmlNodePtr child_node;
8089  ds3_error* error = NULL;
8090 
8091  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8092  if (error != NULL) {
8093  return error;
8094  }
8095 
8097 
8098  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8099  if (element_equal(child_node, "CreationDate")) {
8100  response->creation_date = xml_get_string(doc, child_node);
8101  } else if (element_equal(child_node, "Format")) {
8102  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8103  if (text == NULL) {
8104  continue;
8105  }
8106  response->format = _match_ds3_http_response_format_type(client->log, text);
8107  xmlFree(text);
8108  } else if (element_equal(child_node, "Id")) {
8109  response->id = xml_get_string(doc, child_node);
8110  } else if (element_equal(child_node, "LastFailure")) {
8111  response->last_failure = xml_get_string(doc, child_node);
8112  } else if (element_equal(child_node, "LastHttpResponseCode")) {
8113  response->last_http_response_code = xml_get_uint16(doc, child_node);
8114  } else if (element_equal(child_node, "LastNotification")) {
8115  response->last_notification = xml_get_string(doc, child_node);
8116  } else if (element_equal(child_node, "NamingConvention")) {
8117  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8118  if (text == NULL) {
8119  continue;
8120  }
8121  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
8122  xmlFree(text);
8123  } else if (element_equal(child_node, "NotificationEndPoint")) {
8124  response->notification_end_point = xml_get_string(doc, child_node);
8125  } else if (element_equal(child_node, "NotificationHttpMethod")) {
8126  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8127  if (text == NULL) {
8128  continue;
8129  }
8130  response->notification_http_method = _match_ds3_request_type(client->log, text);
8131  xmlFree(text);
8132  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
8133  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
8134  } else if (element_equal(child_node, "UserId")) {
8135  response->user_id = xml_get_string(doc, child_node);
8136  } else {
8137  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_notification_registration_response [%s]\n", child_node->name, root->name);
8138  }
8139 
8140  if (error != NULL) {
8141  break;
8142  }
8143 
8144  }
8145 
8146 
8147  xmlFreeDoc(doc);
8148 
8149  if (error == NULL) {
8150  *_response = response;
8151  } else {
8153  }
8154 
8155  return error;
8156 }
8158  xmlDocPtr doc;
8159  xmlNodePtr root;
8160  xmlNodePtr child_node;
8162  ds3_error* error = NULL;
8163 
8164  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8165  if (error != NULL) {
8166  return error;
8167  }
8168 
8170 
8171  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8172  if (element_equal(child_node, "CreationDate")) {
8173  response->creation_date = xml_get_string(doc, child_node);
8174  } else if (element_equal(child_node, "Format")) {
8175  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8176  if (text == NULL) {
8177  continue;
8178  }
8179  response->format = _match_ds3_http_response_format_type(client->log, text);
8180  xmlFree(text);
8181  } else if (element_equal(child_node, "Id")) {
8182  response->id = xml_get_string(doc, child_node);
8183  } else if (element_equal(child_node, "LastFailure")) {
8184  response->last_failure = xml_get_string(doc, child_node);
8185  } else if (element_equal(child_node, "LastHttpResponseCode")) {
8186  response->last_http_response_code = xml_get_uint16(doc, child_node);
8187  } else if (element_equal(child_node, "LastNotification")) {
8188  response->last_notification = xml_get_string(doc, child_node);
8189  } else if (element_equal(child_node, "NamingConvention")) {
8190  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8191  if (text == NULL) {
8192  continue;
8193  }
8194  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
8195  xmlFree(text);
8196  } else if (element_equal(child_node, "NotificationEndPoint")) {
8197  response->notification_end_point = xml_get_string(doc, child_node);
8198  } else if (element_equal(child_node, "NotificationHttpMethod")) {
8199  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8200  if (text == NULL) {
8201  continue;
8202  }
8203  response->notification_http_method = _match_ds3_request_type(client->log, text);
8204  xmlFree(text);
8205  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
8206  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
8207  } else if (element_equal(child_node, "UserId")) {
8208  response->user_id = xml_get_string(doc, child_node);
8209  } else {
8210  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_failure_notification_registration_response [%s]\n", child_node->name, root->name);
8211  }
8212 
8213  if (error != NULL) {
8214  break;
8215  }
8216 
8217  }
8218 
8219 
8220  xmlFreeDoc(doc);
8221 
8222  if (error == NULL) {
8223  *_response = response;
8224  } else {
8226  }
8227 
8228  return error;
8229 }
8230 static ds3_error* _parse_top_level_ds3_cache_filesystem_response(const ds3_client* client, const ds3_request* request, ds3_cache_filesystem_response** _response, GByteArray* xml_blob) {
8231  xmlDocPtr doc;
8232  xmlNodePtr root;
8233  xmlNodePtr child_node;
8235  ds3_error* error = NULL;
8236 
8237  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8238  if (error != NULL) {
8239  return error;
8240  }
8241 
8242  response = g_new0(ds3_cache_filesystem_response, 1);
8243 
8244  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8245  if (element_equal(child_node, "AutoReclaimInitiateThreshold")) {
8246  response->auto_reclaim_initiate_threshold = xml_get_uint64(doc, child_node);
8247  } else if (element_equal(child_node, "AutoReclaimTerminateThreshold")) {
8248  response->auto_reclaim_terminate_threshold = xml_get_uint64(doc, child_node);
8249  } else if (element_equal(child_node, "BurstThreshold")) {
8250  response->burst_threshold = xml_get_uint64(doc, child_node);
8251  } else if (element_equal(child_node, "Id")) {
8252  response->id = xml_get_string(doc, child_node);
8253  } else if (element_equal(child_node, "MaxCapacityInBytes")) {
8254  response->max_capacity_in_bytes = xml_get_uint64(doc, child_node);
8255  } else if (element_equal(child_node, "MaxPercentUtilizationOfFilesystem")) {
8256  response->max_percent_utilization_of_filesystem = xml_get_uint64(doc, child_node);
8257  } else if (element_equal(child_node, "NodeId")) {
8258  response->node_id = xml_get_string(doc, child_node);
8259  } else if (element_equal(child_node, "Path")) {
8260  response->path = xml_get_string(doc, child_node);
8261  } else {
8262  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_response [%s]\n", child_node->name, root->name);
8263  }
8264 
8265  if (error != NULL) {
8266  break;
8267  }
8268 
8269  }
8270 
8271 
8272  xmlFreeDoc(doc);
8273 
8274  if (error == NULL) {
8275  *_response = response;
8276  } else {
8278  }
8279 
8280  return error;
8281 }
8282 static ds3_error* _parse_top_level_ds3_pool_response(const ds3_client* client, const ds3_request* request, ds3_pool_response** _response, GByteArray* xml_blob) {
8283  xmlDocPtr doc;
8284  xmlNodePtr root;
8285  xmlNodePtr child_node;
8286  ds3_pool_response* response;
8287  ds3_error* error = NULL;
8288 
8289  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8290  if (error != NULL) {
8291  return error;
8292  }
8293 
8294  response = g_new0(ds3_pool_response, 1);
8295 
8296  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8297  if (element_equal(child_node, "AssignedToStorageDomain")) {
8298  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
8299  } else if (element_equal(child_node, "AvailableCapacity")) {
8300  response->available_capacity = xml_get_uint64(doc, child_node);
8301  } else if (element_equal(child_node, "BucketId")) {
8302  response->bucket_id = xml_get_string(doc, child_node);
8303  } else if (element_equal(child_node, "Guid")) {
8304  response->guid = xml_get_string(doc, child_node);
8305  } else if (element_equal(child_node, "Health")) {
8306  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8307  if (text == NULL) {
8308  continue;
8309  }
8310  response->health = _match_ds3_pool_health(client->log, text);
8311  xmlFree(text);
8312  } else if (element_equal(child_node, "Id")) {
8313  response->id = xml_get_string(doc, child_node);
8314  } else if (element_equal(child_node, "LastAccessed")) {
8315  response->last_accessed = xml_get_string(doc, child_node);
8316  } else if (element_equal(child_node, "LastModified")) {
8317  response->last_modified = xml_get_string(doc, child_node);
8318  } else if (element_equal(child_node, "LastVerified")) {
8319  response->last_verified = xml_get_string(doc, child_node);
8320  } else if (element_equal(child_node, "Mountpoint")) {
8321  response->mountpoint = xml_get_string(doc, child_node);
8322  } else if (element_equal(child_node, "Name")) {
8323  response->name = xml_get_string(doc, child_node);
8324  } else if (element_equal(child_node, "PartitionId")) {
8325  response->partition_id = xml_get_string(doc, child_node);
8326  } else if (element_equal(child_node, "PoweredOn")) {
8327  response->powered_on = xml_get_bool(client->log, doc, child_node);
8328  } else if (element_equal(child_node, "Quiesced")) {
8329  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8330  if (text == NULL) {
8331  continue;
8332  }
8333  response->quiesced = _match_ds3_quiesced(client->log, text);
8334  xmlFree(text);
8335  } else if (element_equal(child_node, "ReservedCapacity")) {
8336  response->reserved_capacity = xml_get_uint64(doc, child_node);
8337  } else if (element_equal(child_node, "State")) {
8338  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8339  if (text == NULL) {
8340  continue;
8341  }
8342  response->state = _match_ds3_pool_state(client->log, text);
8343  xmlFree(text);
8344  } else if (element_equal(child_node, "StorageDomainId")) {
8345  response->storage_domain_id = xml_get_string(doc, child_node);
8346  } else if (element_equal(child_node, "TotalCapacity")) {
8347  response->total_capacity = xml_get_uint64(doc, child_node);
8348  } else if (element_equal(child_node, "Type")) {
8349  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8350  if (text == NULL) {
8351  continue;
8352  }
8353  response->type = _match_ds3_pool_type(client->log, text);
8354  xmlFree(text);
8355  } else if (element_equal(child_node, "UsedCapacity")) {
8356  response->used_capacity = xml_get_uint64(doc, child_node);
8357  } else {
8358  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_response [%s]\n", child_node->name, root->name);
8359  }
8360 
8361  if (error != NULL) {
8362  break;
8363  }
8364 
8365  }
8366 
8367 
8368  xmlFreeDoc(doc);
8369 
8370  if (error == NULL) {
8371  *_response = response;
8372  } else {
8373  ds3_pool_response_free(response);
8374  }
8375 
8376  return error;
8377 }
8378 static ds3_error* _parse_top_level_ds3_pool_partition_response(const ds3_client* client, const ds3_request* request, ds3_pool_partition_response** _response, GByteArray* xml_blob) {
8379  xmlDocPtr doc;
8380  xmlNodePtr root;
8381  xmlNodePtr child_node;
8382  ds3_pool_partition_response* response;
8383  ds3_error* error = NULL;
8384 
8385  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8386  if (error != NULL) {
8387  return error;
8388  }
8389 
8390  response = g_new0(ds3_pool_partition_response, 1);
8391 
8392  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8393  if (element_equal(child_node, "Id")) {
8394  response->id = xml_get_string(doc, child_node);
8395  } else if (element_equal(child_node, "Name")) {
8396  response->name = xml_get_string(doc, child_node);
8397  } else if (element_equal(child_node, "Type")) {
8398  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8399  if (text == NULL) {
8400  continue;
8401  }
8402  response->type = _match_ds3_pool_type(client->log, text);
8403  xmlFree(text);
8404  } else {
8405  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_partition_response [%s]\n", child_node->name, root->name);
8406  }
8407 
8408  if (error != NULL) {
8409  break;
8410  }
8411 
8412  }
8413 
8414 
8415  xmlFreeDoc(doc);
8416 
8417  if (error == NULL) {
8418  *_response = response;
8419  } else {
8421  }
8422 
8423  return error;
8424 }
8425 static ds3_error* _parse_top_level_ds3_tape_response(const ds3_client* client, const ds3_request* request, ds3_tape_response** _response, GByteArray* xml_blob) {
8426  xmlDocPtr doc;
8427  xmlNodePtr root;
8428  xmlNodePtr child_node;
8429  ds3_tape_response* response;
8430  ds3_error* error = NULL;
8431 
8432  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8433  if (error != NULL) {
8434  return error;
8435  }
8436 
8437  response = g_new0(ds3_tape_response, 1);
8438 
8439  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8440  if (element_equal(child_node, "AssignedToStorageDomain")) {
8441  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
8442  } else if (element_equal(child_node, "AvailableRawCapacity")) {
8443  response->available_raw_capacity = xml_get_uint64(doc, child_node);
8444  } else if (element_equal(child_node, "BarCode")) {
8445  response->bar_code = xml_get_string(doc, child_node);
8446  } else if (element_equal(child_node, "BucketId")) {
8447  response->bucket_id = xml_get_string(doc, child_node);
8448  } else if (element_equal(child_node, "DescriptionForIdentification")) {
8449  response->description_for_identification = xml_get_string(doc, child_node);
8450  } else if (element_equal(child_node, "EjectDate")) {
8451  response->eject_date = xml_get_string(doc, child_node);
8452  } else if (element_equal(child_node, "EjectLabel")) {
8453  response->eject_label = xml_get_string(doc, child_node);
8454  } else if (element_equal(child_node, "EjectLocation")) {
8455  response->eject_location = xml_get_string(doc, child_node);
8456  } else if (element_equal(child_node, "EjectPending")) {
8457  response->eject_pending = xml_get_string(doc, child_node);
8458  } else if (element_equal(child_node, "FullOfData")) {
8459  response->full_of_data = xml_get_bool(client->log, doc, child_node);
8460  } else if (element_equal(child_node, "Id")) {
8461  response->id = xml_get_string(doc, child_node);
8462  } else if (element_equal(child_node, "LastAccessed")) {
8463  response->last_accessed = xml_get_string(doc, child_node);
8464  } else if (element_equal(child_node, "LastCheckpoint")) {
8465  response->last_checkpoint = xml_get_string(doc, child_node);
8466  } else if (element_equal(child_node, "LastModified")) {
8467  response->last_modified = xml_get_string(doc, child_node);
8468  } else if (element_equal(child_node, "LastVerified")) {
8469  response->last_verified = xml_get_string(doc, child_node);
8470  } else if (element_equal(child_node, "PartiallyVerifiedEndOfTape")) {
8471  response->partially_verified_end_of_tape = xml_get_string(doc, child_node);
8472  } else if (element_equal(child_node, "PartitionId")) {
8473  response->partition_id = xml_get_string(doc, child_node);
8474  } else if (element_equal(child_node, "PreviousState")) {
8475  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8476  if (text == NULL) {
8477  continue;
8478  }
8479  response->previous_state = _match_ds3_tape_state(client->log, text);
8480  xmlFree(text);
8481  } else if (element_equal(child_node, "SerialNumber")) {
8482  response->serial_number = xml_get_string(doc, child_node);
8483  } else if (element_equal(child_node, "State")) {
8484  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8485  if (text == NULL) {
8486  continue;
8487  }
8488  response->state = _match_ds3_tape_state(client->log, text);
8489  xmlFree(text);
8490  } else if (element_equal(child_node, "StorageDomainId")) {
8491  response->storage_domain_id = xml_get_string(doc, child_node);
8492  } else if (element_equal(child_node, "TakeOwnershipPending")) {
8493  response->take_ownership_pending = xml_get_bool(client->log, doc, child_node);
8494  } else if (element_equal(child_node, "TotalRawCapacity")) {
8495  response->total_raw_capacity = xml_get_uint64(doc, child_node);
8496  } else if (element_equal(child_node, "Type")) {
8497  response->type = xml_get_string(doc, child_node);
8498  } else if (element_equal(child_node, "VerifyPending")) {
8499  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8500  if (text == NULL) {
8501  continue;
8502  }
8503  response->verify_pending = _match_ds3_priority(client->log, text);
8504  xmlFree(text);
8505  } else if (element_equal(child_node, "WriteProtected")) {
8506  response->write_protected = xml_get_bool(client->log, doc, child_node);
8507  } else {
8508  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_response [%s]\n", child_node->name, root->name);
8509  }
8510 
8511  if (error != NULL) {
8512  break;
8513  }
8514 
8515  }
8516 
8517 
8518  xmlFreeDoc(doc);
8519 
8520  if (error == NULL) {
8521  *_response = response;
8522  } else {
8523  ds3_tape_response_free(response);
8524  }
8525 
8526  return error;
8527 }
8528 static ds3_error* _parse_top_level_ds3_tape_density_directive_response(const ds3_client* client, const ds3_request* request, ds3_tape_density_directive_response** _response, GByteArray* xml_blob) {
8529  xmlDocPtr doc;
8530  xmlNodePtr root;
8531  xmlNodePtr child_node;
8533  ds3_error* error = NULL;
8534 
8535  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8536  if (error != NULL) {
8537  return error;
8538  }
8539 
8540  response = g_new0(ds3_tape_density_directive_response, 1);
8541 
8542  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8543  if (element_equal(child_node, "Density")) {
8544  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8545  if (text == NULL) {
8546  continue;
8547  }
8548  response->density = _match_ds3_tape_drive_type(client->log, text);
8549  xmlFree(text);
8550  } else if (element_equal(child_node, "Id")) {
8551  response->id = xml_get_string(doc, child_node);
8552  } else if (element_equal(child_node, "PartitionId")) {
8553  response->partition_id = xml_get_string(doc, child_node);
8554  } else if (element_equal(child_node, "TapeType")) {
8555  response->tape_type = xml_get_string(doc, child_node);
8556  } else {
8557  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_density_directive_response [%s]\n", child_node->name, root->name);
8558  }
8559 
8560  if (error != NULL) {
8561  break;
8562  }
8563 
8564  }
8565 
8566 
8567  xmlFreeDoc(doc);
8568 
8569  if (error == NULL) {
8570  *_response = response;
8571  } else {
8573  }
8574 
8575  return error;
8576 }
8577 static ds3_error* _parse_top_level_ds3_tape_drive_response(const ds3_client* client, const ds3_request* request, ds3_tape_drive_response** _response, GByteArray* xml_blob) {
8578  xmlDocPtr doc;
8579  xmlNodePtr root;
8580  xmlNodePtr child_node;
8581  ds3_tape_drive_response* response;
8582  ds3_error* error = NULL;
8583 
8584  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8585  if (error != NULL) {
8586  return error;
8587  }
8588 
8589  response = g_new0(ds3_tape_drive_response, 1);
8590 
8591  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8592  if (element_equal(child_node, "CleaningRequired")) {
8593  response->cleaning_required = xml_get_bool(client->log, doc, child_node);
8594  } else if (element_equal(child_node, "ErrorMessage")) {
8595  response->error_message = xml_get_string(doc, child_node);
8596  } else if (element_equal(child_node, "ForceTapeRemoval")) {
8597  response->force_tape_removal = xml_get_bool(client->log, doc, child_node);
8598  } else if (element_equal(child_node, "Id")) {
8599  response->id = xml_get_string(doc, child_node);
8600  } else if (element_equal(child_node, "LastCleaned")) {
8601  response->last_cleaned = xml_get_string(doc, child_node);
8602  } else if (element_equal(child_node, "MfgSerialNumber")) {
8603  response->mfg_serial_number = xml_get_string(doc, child_node);
8604  } else if (element_equal(child_node, "PartitionId")) {
8605  response->partition_id = xml_get_string(doc, child_node);
8606  } else if (element_equal(child_node, "Quiesced")) {
8607  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8608  if (text == NULL) {
8609  continue;
8610  }
8611  response->quiesced = _match_ds3_quiesced(client->log, text);
8612  xmlFree(text);
8613  } else if (element_equal(child_node, "ReservedTaskType")) {
8614  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8615  if (text == NULL) {
8616  continue;
8617  }
8618  response->reserved_task_type = _match_ds3_reserved_task_type(client->log, text);
8619  xmlFree(text);
8620  } else if (element_equal(child_node, "SerialNumber")) {
8621  response->serial_number = xml_get_string(doc, child_node);
8622  } else if (element_equal(child_node, "State")) {
8623  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8624  if (text == NULL) {
8625  continue;
8626  }
8627  response->state = _match_ds3_tape_drive_state(client->log, text);
8628  xmlFree(text);
8629  } else if (element_equal(child_node, "TapeId")) {
8630  response->tape_id = xml_get_string(doc, child_node);
8631  } else if (element_equal(child_node, "Type")) {
8632  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8633  if (text == NULL) {
8634  continue;
8635  }
8636  response->type = _match_ds3_tape_drive_type(client->log, text);
8637  xmlFree(text);
8638  } else {
8639  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_drive_response [%s]\n", child_node->name, root->name);
8640  }
8641 
8642  if (error != NULL) {
8643  break;
8644  }
8645 
8646  }
8647 
8648 
8649  xmlFreeDoc(doc);
8650 
8651  if (error == NULL) {
8652  *_response = response;
8653  } else {
8654  ds3_tape_drive_response_free(response);
8655  }
8656 
8657  return error;
8658 }
8659 static ds3_error* _parse_top_level_ds3_tape_library_response(const ds3_client* client, const ds3_request* request, ds3_tape_library_response** _response, GByteArray* xml_blob) {
8660  xmlDocPtr doc;
8661  xmlNodePtr root;
8662  xmlNodePtr child_node;
8663  ds3_tape_library_response* response;
8664  ds3_error* error = NULL;
8665 
8666  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8667  if (error != NULL) {
8668  return error;
8669  }
8670 
8671  response = g_new0(ds3_tape_library_response, 1);
8672 
8673  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8674  if (element_equal(child_node, "Id")) {
8675  response->id = xml_get_string(doc, child_node);
8676  } else if (element_equal(child_node, "ManagementUrl")) {
8677  response->management_url = xml_get_string(doc, child_node);
8678  } else if (element_equal(child_node, "Name")) {
8679  response->name = xml_get_string(doc, child_node);
8680  } else if (element_equal(child_node, "SerialNumber")) {
8681  response->serial_number = xml_get_string(doc, child_node);
8682  } else {
8683  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_library_response [%s]\n", child_node->name, root->name);
8684  }
8685 
8686  if (error != NULL) {
8687  break;
8688  }
8689 
8690  }
8691 
8692 
8693  xmlFreeDoc(doc);
8694 
8695  if (error == NULL) {
8696  *_response = response;
8697  } else {
8699  }
8700 
8701  return error;
8702 }
8703 static ds3_error* _parse_top_level_ds3_tape_partition_response(const ds3_client* client, const ds3_request* request, ds3_tape_partition_response** _response, GByteArray* xml_blob) {
8704  xmlDocPtr doc;
8705  xmlNodePtr root;
8706  xmlNodePtr child_node;
8707  ds3_tape_partition_response* response;
8708  ds3_error* error = NULL;
8709 
8710  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8711  if (error != NULL) {
8712  return error;
8713  }
8714 
8715  response = g_new0(ds3_tape_partition_response, 1);
8716 
8717  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8718  if (element_equal(child_node, "DriveType")) {
8719  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8720  if (text == NULL) {
8721  continue;
8722  }
8723  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
8724  xmlFree(text);
8725  } else if (element_equal(child_node, "ErrorMessage")) {
8726  response->error_message = xml_get_string(doc, child_node);
8727  } else if (element_equal(child_node, "Id")) {
8728  response->id = xml_get_string(doc, child_node);
8729  } else if (element_equal(child_node, "ImportExportConfiguration")) {
8730  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8731  if (text == NULL) {
8732  continue;
8733  }
8735  xmlFree(text);
8736  } else if (element_equal(child_node, "LibraryId")) {
8737  response->library_id = xml_get_string(doc, child_node);
8738  } else if (element_equal(child_node, "MinimumReadReservedDrives")) {
8739  response->minimum_read_reserved_drives = xml_get_uint16(doc, child_node);
8740  } else if (element_equal(child_node, "MinimumWriteReservedDrives")) {
8741  response->minimum_write_reserved_drives = xml_get_uint16(doc, child_node);
8742  } else if (element_equal(child_node, "Name")) {
8743  response->name = xml_get_string(doc, child_node);
8744  } else if (element_equal(child_node, "Quiesced")) {
8745  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8746  if (text == NULL) {
8747  continue;
8748  }
8749  response->quiesced = _match_ds3_quiesced(client->log, text);
8750  xmlFree(text);
8751  } else if (element_equal(child_node, "SerialId")) {
8752  response->serial_id = xml_get_string(doc, child_node);
8753  } else if (element_equal(child_node, "SerialNumber")) {
8754  response->serial_number = xml_get_string(doc, child_node);
8755  } else if (element_equal(child_node, "State")) {
8756  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8757  if (text == NULL) {
8758  continue;
8759  }
8760  response->state = _match_ds3_tape_partition_state(client->log, text);
8761  xmlFree(text);
8762  } else {
8763  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_response [%s]\n", child_node->name, root->name);
8764  }
8765 
8766  if (error != NULL) {
8767  break;
8768  }
8769 
8770  }
8771 
8772 
8773  xmlFreeDoc(doc);
8774 
8775  if (error == NULL) {
8776  *_response = response;
8777  } else {
8779  }
8780 
8781  return error;
8782 }
8783 static ds3_error* _parse_top_level_ds3_azure_target_response(const ds3_client* client, const ds3_request* request, ds3_azure_target_response** _response, GByteArray* xml_blob) {
8784  xmlDocPtr doc;
8785  xmlNodePtr root;
8786  xmlNodePtr child_node;
8787  ds3_azure_target_response* response;
8788  ds3_error* error = NULL;
8789 
8790  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8791  if (error != NULL) {
8792  return error;
8793  }
8794 
8795  response = g_new0(ds3_azure_target_response, 1);
8796 
8797  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8798  if (element_equal(child_node, "AccountKey")) {
8799  response->account_key = xml_get_string(doc, child_node);
8800  } else if (element_equal(child_node, "AccountName")) {
8801  response->account_name = xml_get_string(doc, child_node);
8802  } else if (element_equal(child_node, "AutoVerifyFrequencyInDays")) {
8803  response->auto_verify_frequency_in_days = xml_get_uint16(doc, child_node);
8804  } else if (element_equal(child_node, "CloudBucketPrefix")) {
8805  response->cloud_bucket_prefix = xml_get_string(doc, child_node);
8806  } else if (element_equal(child_node, "CloudBucketSuffix")) {
8807  response->cloud_bucket_suffix = xml_get_string(doc, child_node);
8808  } else if (element_equal(child_node, "DefaultReadPreference")) {
8809  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8810  if (text == NULL) {
8811  continue;
8812  }
8814  xmlFree(text);
8815  } else if (element_equal(child_node, "Https")) {
8816  response->https = xml_get_bool(client->log, doc, child_node);
8817  } else if (element_equal(child_node, "Id")) {
8818  response->id = xml_get_string(doc, child_node);
8819  } else if (element_equal(child_node, "LastFullyVerified")) {
8820  response->last_fully_verified = xml_get_string(doc, child_node);
8821  } else if (element_equal(child_node, "Name")) {
8822  response->name = xml_get_string(doc, child_node);
8823  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
8824  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
8825  } else if (element_equal(child_node, "Quiesced")) {
8826  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8827  if (text == NULL) {
8828  continue;
8829  }
8830  response->quiesced = _match_ds3_quiesced(client->log, text);
8831  xmlFree(text);
8832  } else if (element_equal(child_node, "State")) {
8833  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8834  if (text == NULL) {
8835  continue;
8836  }
8837  response->state = _match_ds3_target_state(client->log, text);
8838  xmlFree(text);
8839  } else {
8840  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_response [%s]\n", child_node->name, root->name);
8841  }
8842 
8843  if (error != NULL) {
8844  break;
8845  }
8846 
8847  }
8848 
8849 
8850  xmlFreeDoc(doc);
8851 
8852  if (error == NULL) {
8853  *_response = response;
8854  } else {
8856  }
8857 
8858  return error;
8859 }
8861  xmlDocPtr doc;
8862  xmlNodePtr root;
8863  xmlNodePtr child_node;
8865  ds3_error* error = NULL;
8866 
8867  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8868  if (error != NULL) {
8869  return error;
8870  }
8871 
8872  response = g_new0(ds3_azure_target_bucket_name_response, 1);
8873 
8874  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8875  if (element_equal(child_node, "BucketId")) {
8876  response->bucket_id = xml_get_string(doc, child_node);
8877  } else if (element_equal(child_node, "Id")) {
8878  response->id = xml_get_string(doc, child_node);
8879  } else if (element_equal(child_node, "Name")) {
8880  response->name = xml_get_string(doc, child_node);
8881  } else if (element_equal(child_node, "TargetId")) {
8882  response->target_id = xml_get_string(doc, child_node);
8883  } else {
8884  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_bucket_name_response [%s]\n", child_node->name, root->name);
8885  }
8886 
8887  if (error != NULL) {
8888  break;
8889  }
8890 
8891  }
8892 
8893 
8894  xmlFreeDoc(doc);
8895 
8896  if (error == NULL) {
8897  *_response = response;
8898  } else {
8900  }
8901 
8902  return error;
8903 }
8905  xmlDocPtr doc;
8906  xmlNodePtr root;
8907  xmlNodePtr child_node;
8909  ds3_error* error = NULL;
8910 
8911  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8912  if (error != NULL) {
8913  return error;
8914  }
8915 
8916  response = g_new0(ds3_azure_target_read_preference_response, 1);
8917 
8918  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8919  if (element_equal(child_node, "BucketId")) {
8920  response->bucket_id = xml_get_string(doc, child_node);
8921  } else if (element_equal(child_node, "Id")) {
8922  response->id = xml_get_string(doc, child_node);
8923  } else if (element_equal(child_node, "ReadPreference")) {
8924  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8925  if (text == NULL) {
8926  continue;
8927  }
8928  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
8929  xmlFree(text);
8930  } else if (element_equal(child_node, "TargetId")) {
8931  response->target_id = xml_get_string(doc, child_node);
8932  } else {
8933  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_read_preference_response [%s]\n", child_node->name, root->name);
8934  }
8935 
8936  if (error != NULL) {
8937  break;
8938  }
8939 
8940  }
8941 
8942 
8943  xmlFreeDoc(doc);
8944 
8945  if (error == NULL) {
8946  *_response = response;
8947  } else {
8949  }
8950 
8951  return error;
8952 }
8953 static ds3_error* _parse_top_level_ds3_target_response(const ds3_client* client, const ds3_request* request, ds3_target_response** _response, GByteArray* xml_blob) {
8954  xmlDocPtr doc;
8955  xmlNodePtr root;
8956  xmlNodePtr child_node;
8957  ds3_target_response* response;
8958  ds3_error* error = NULL;
8959 
8960  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8961  if (error != NULL) {
8962  return error;
8963  }
8964 
8965  response = g_new0(ds3_target_response, 1);
8966 
8967  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8968  if (element_equal(child_node, "AccessControlReplication")) {
8969  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8970  if (text == NULL) {
8971  continue;
8972  }
8974  xmlFree(text);
8975  } else if (element_equal(child_node, "AdminAuthId")) {
8976  response->admin_auth_id = xml_get_string(doc, child_node);
8977  } else if (element_equal(child_node, "AdminSecretKey")) {
8978  response->admin_secret_key = xml_get_string(doc, child_node);
8979  } else if (element_equal(child_node, "DataPathEndPoint")) {
8980  response->data_path_end_point = xml_get_string(doc, child_node);
8981  } else if (element_equal(child_node, "DataPathHttps")) {
8982  response->data_path_https = xml_get_bool(client->log, doc, child_node);
8983  } else if (element_equal(child_node, "DataPathPort")) {
8984  response->data_path_port = xml_get_uint16(doc, child_node);
8985  } else if (element_equal(child_node, "DataPathProxy")) {
8986  response->data_path_proxy = xml_get_string(doc, child_node);
8987  } else if (element_equal(child_node, "DataPathVerifyCertificate")) {
8988  response->data_path_verify_certificate = xml_get_bool(client->log, doc, child_node);
8989  } else if (element_equal(child_node, "DefaultReadPreference")) {
8990  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8991  if (text == NULL) {
8992  continue;
8993  }
8995  xmlFree(text);
8996  } else if (element_equal(child_node, "Id")) {
8997  response->id = xml_get_string(doc, child_node);
8998  } else if (element_equal(child_node, "Name")) {
8999  response->name = xml_get_string(doc, child_node);
9000  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
9001  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
9002  } else if (element_equal(child_node, "Quiesced")) {
9003  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9004  if (text == NULL) {
9005  continue;
9006  }
9007  response->quiesced = _match_ds3_quiesced(client->log, text);
9008  xmlFree(text);
9009  } else if (element_equal(child_node, "ReplicatedUserDefaultDataPolicy")) {
9010  response->replicated_user_default_data_policy = xml_get_string(doc, child_node);
9011  } else if (element_equal(child_node, "State")) {
9012  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9013  if (text == NULL) {
9014  continue;
9015  }
9016  response->state = _match_ds3_target_state(client->log, text);
9017  xmlFree(text);
9018  } else {
9019  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_response [%s]\n", child_node->name, root->name);
9020  }
9021 
9022  if (error != NULL) {
9023  break;
9024  }
9025 
9026  }
9027 
9028 
9029  xmlFreeDoc(doc);
9030 
9031  if (error == NULL) {
9032  *_response = response;
9033  } else {
9034  ds3_target_response_free(response);
9035  }
9036 
9037  return error;
9038 }
9039 static ds3_error* _parse_top_level_ds3_target_read_preference_response(const ds3_client* client, const ds3_request* request, ds3_target_read_preference_response** _response, GByteArray* xml_blob) {
9040  xmlDocPtr doc;
9041  xmlNodePtr root;
9042  xmlNodePtr child_node;
9044  ds3_error* error = NULL;
9045 
9046  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9047  if (error != NULL) {
9048  return error;
9049  }
9050 
9051  response = g_new0(ds3_target_read_preference_response, 1);
9052 
9053  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9054  if (element_equal(child_node, "BucketId")) {
9055  response->bucket_id = xml_get_string(doc, child_node);
9056  } else if (element_equal(child_node, "Id")) {
9057  response->id = xml_get_string(doc, child_node);
9058  } else if (element_equal(child_node, "ReadPreference")) {
9059  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9060  if (text == NULL) {
9061  continue;
9062  }
9063  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
9064  xmlFree(text);
9065  } else if (element_equal(child_node, "TargetId")) {
9066  response->target_id = xml_get_string(doc, child_node);
9067  } else {
9068  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_read_preference_response [%s]\n", child_node->name, root->name);
9069  }
9070 
9071  if (error != NULL) {
9072  break;
9073  }
9074 
9075  }
9076 
9077 
9078  xmlFreeDoc(doc);
9079 
9080  if (error == NULL) {
9081  *_response = response;
9082  } else {
9084  }
9085 
9086  return error;
9087 }
9088 static ds3_error* _parse_top_level_ds3_s3_target_response(const ds3_client* client, const ds3_request* request, ds3_s3_target_response** _response, GByteArray* xml_blob) {
9089  xmlDocPtr doc;
9090  xmlNodePtr root;
9091  xmlNodePtr child_node;
9092  ds3_s3_target_response* response;
9093  ds3_error* error = NULL;
9094 
9095  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9096  if (error != NULL) {
9097  return error;
9098  }
9099 
9100  response = g_new0(ds3_s3_target_response, 1);
9101 
9102  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9103  if (element_equal(child_node, "AccessKey")) {
9104  response->access_key = xml_get_string(doc, child_node);
9105  } else if (element_equal(child_node, "AutoVerifyFrequencyInDays")) {
9106  response->auto_verify_frequency_in_days = xml_get_uint16(doc, child_node);
9107  } else if (element_equal(child_node, "CloudBucketPrefix")) {
9108  response->cloud_bucket_prefix = xml_get_string(doc, child_node);
9109  } else if (element_equal(child_node, "CloudBucketSuffix")) {
9110  response->cloud_bucket_suffix = xml_get_string(doc, child_node);
9111  } else if (element_equal(child_node, "DataPathEndPoint")) {
9112  response->data_path_end_point = xml_get_string(doc, child_node);
9113  } else if (element_equal(child_node, "DefaultReadPreference")) {
9114  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9115  if (text == NULL) {
9116  continue;
9117  }
9119  xmlFree(text);
9120  } else if (element_equal(child_node, "Https")) {
9121  response->https = xml_get_bool(client->log, doc, child_node);
9122  } else if (element_equal(child_node, "Id")) {
9123  response->id = xml_get_string(doc, child_node);
9124  } else if (element_equal(child_node, "LastFullyVerified")) {
9125  response->last_fully_verified = xml_get_string(doc, child_node);
9126  } else if (element_equal(child_node, "Name")) {
9127  response->name = xml_get_string(doc, child_node);
9128  } else if (element_equal(child_node, "OfflineDataStagingWindowInTb")) {
9129  response->offline_data_staging_window_in_tb = xml_get_uint16(doc, child_node);
9130  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
9131  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
9132  } else if (element_equal(child_node, "ProxyDomain")) {
9133  response->proxy_domain = xml_get_string(doc, child_node);
9134  } else if (element_equal(child_node, "ProxyHost")) {
9135  response->proxy_host = xml_get_string(doc, child_node);
9136  } else if (element_equal(child_node, "ProxyPassword")) {
9137  response->proxy_password = xml_get_string(doc, child_node);
9138  } else if (element_equal(child_node, "ProxyPort")) {
9139  response->proxy_port = xml_get_uint16(doc, child_node);
9140  } else if (element_equal(child_node, "ProxyUsername")) {
9141  response->proxy_username = xml_get_string(doc, child_node);
9142  } else if (element_equal(child_node, "Quiesced")) {
9143  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9144  if (text == NULL) {
9145  continue;
9146  }
9147  response->quiesced = _match_ds3_quiesced(client->log, text);
9148  xmlFree(text);
9149  } else if (element_equal(child_node, "Region")) {
9150  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9151  if (text == NULL) {
9152  continue;
9153  }
9154  response->region = _match_ds3_s3_region(client->log, text);
9155  xmlFree(text);
9156  } else if (element_equal(child_node, "SecretKey")) {
9157  response->secret_key = xml_get_string(doc, child_node);
9158  } else if (element_equal(child_node, "StagedDataExpirationInDays")) {
9159  response->staged_data_expiration_in_days = xml_get_uint16(doc, child_node);
9160  } else if (element_equal(child_node, "State")) {
9161  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9162  if (text == NULL) {
9163  continue;
9164  }
9165  response->state = _match_ds3_target_state(client->log, text);
9166  xmlFree(text);
9167  } else {
9168  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_response [%s]\n", child_node->name, root->name);
9169  }
9170 
9171  if (error != NULL) {
9172  break;
9173  }
9174 
9175  }
9176 
9177 
9178  xmlFreeDoc(doc);
9179 
9180  if (error == NULL) {
9181  *_response = response;
9182  } else {
9183  ds3_s3_target_response_free(response);
9184  }
9185 
9186  return error;
9187 }
9188 static ds3_error* _parse_top_level_ds3_s3_target_bucket_name_response(const ds3_client* client, const ds3_request* request, ds3_s3_target_bucket_name_response** _response, GByteArray* xml_blob) {
9189  xmlDocPtr doc;
9190  xmlNodePtr root;
9191  xmlNodePtr child_node;
9193  ds3_error* error = NULL;
9194 
9195  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9196  if (error != NULL) {
9197  return error;
9198  }
9199 
9200  response = g_new0(ds3_s3_target_bucket_name_response, 1);
9201 
9202  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9203  if (element_equal(child_node, "BucketId")) {
9204  response->bucket_id = xml_get_string(doc, child_node);
9205  } else if (element_equal(child_node, "Id")) {
9206  response->id = xml_get_string(doc, child_node);
9207  } else if (element_equal(child_node, "Name")) {
9208  response->name = xml_get_string(doc, child_node);
9209  } else if (element_equal(child_node, "TargetId")) {
9210  response->target_id = xml_get_string(doc, child_node);
9211  } else {
9212  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_bucket_name_response [%s]\n", child_node->name, root->name);
9213  }
9214 
9215  if (error != NULL) {
9216  break;
9217  }
9218 
9219  }
9220 
9221 
9222  xmlFreeDoc(doc);
9223 
9224  if (error == NULL) {
9225  *_response = response;
9226  } else {
9228  }
9229 
9230  return error;
9231 }
9233  xmlDocPtr doc;
9234  xmlNodePtr root;
9235  xmlNodePtr child_node;
9237  ds3_error* error = NULL;
9238 
9239  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9240  if (error != NULL) {
9241  return error;
9242  }
9243 
9244  response = g_new0(ds3_s3_target_read_preference_response, 1);
9245 
9246  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9247  if (element_equal(child_node, "BucketId")) {
9248  response->bucket_id = xml_get_string(doc, child_node);
9249  } else if (element_equal(child_node, "Id")) {
9250  response->id = xml_get_string(doc, child_node);
9251  } else if (element_equal(child_node, "ReadPreference")) {
9252  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9253  if (text == NULL) {
9254  continue;
9255  }
9256  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
9257  xmlFree(text);
9258  } else if (element_equal(child_node, "TargetId")) {
9259  response->target_id = xml_get_string(doc, child_node);
9260  } else {
9261  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_read_preference_response [%s]\n", child_node->name, root->name);
9262  }
9263 
9264  if (error != NULL) {
9265  break;
9266  }
9267 
9268  }
9269 
9270 
9271  xmlFreeDoc(doc);
9272 
9273  if (error == NULL) {
9274  *_response = response;
9275  } else {
9277  }
9278 
9279  return error;
9280 }
9282  xmlDocPtr doc;
9283  xmlNodePtr root;
9284  xmlNodePtr child_node;
9286  ds3_error* error = NULL;
9287  GPtrArray* tasks_array = g_ptr_array_new();
9288 
9289  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9290  if (error != NULL) {
9291  return error;
9292  }
9293 
9294  response = g_new0(ds3_blob_store_tasks_information_response, 1);
9295 
9296  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9297  if (element_equal(child_node, "Tasks")) {
9298  ds3_blob_store_task_information_response* tasks_response = NULL;
9299  error = _parse_ds3_blob_store_task_information_response(client, doc, child_node, &tasks_response);
9300  response->tasks = (ds3_blob_store_task_information_response**)tasks_array->pdata;
9301  g_ptr_array_add(tasks_array, tasks_response);
9302  } else {
9303  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_blob_store_tasks_information_response [%s]\n", child_node->name, root->name);
9304  }
9305 
9306  if (error != NULL) {
9307  break;
9308  }
9309 
9310  }
9311 
9312  response->tasks = (ds3_blob_store_task_information_response**)tasks_array->pdata;
9313  response->num_tasks = tasks_array->len;
9314  g_ptr_array_free(tasks_array, FALSE);
9315 
9316  xmlFreeDoc(doc);
9317 
9318  if (error == NULL) {
9319  *_response = response;
9320  } else {
9322  }
9323 
9324  return error;
9325 }
9326 static ds3_error* _parse_top_level_ds3_cache_information_response(const ds3_client* client, const ds3_request* request, ds3_cache_information_response** _response, GByteArray* xml_blob) {
9327  xmlDocPtr doc;
9328  xmlNodePtr root;
9329  xmlNodePtr child_node;
9331  ds3_error* error = NULL;
9332  GPtrArray* filesystems_array = g_ptr_array_new();
9333 
9334  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9335  if (error != NULL) {
9336  return error;
9337  }
9338 
9339  response = g_new0(ds3_cache_information_response, 1);
9340 
9341  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9342  if (element_equal(child_node, "Filesystems")) {
9343  ds3_cache_filesystem_information_response* filesystems_response = NULL;
9344  error = _parse_ds3_cache_filesystem_information_response(client, doc, child_node, &filesystems_response);
9345  response->filesystems = (ds3_cache_filesystem_information_response**)filesystems_array->pdata;
9346  g_ptr_array_add(filesystems_array, filesystems_response);
9347  } else {
9348  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_information_response [%s]\n", child_node->name, root->name);
9349  }
9350 
9351  if (error != NULL) {
9352  break;
9353  }
9354 
9355  }
9356 
9357  response->filesystems = (ds3_cache_filesystem_information_response**)filesystems_array->pdata;
9358  response->num_filesystems = filesystems_array->len;
9359  g_ptr_array_free(filesystems_array, FALSE);
9360 
9361  xmlFreeDoc(doc);
9362 
9363  if (error == NULL) {
9364  *_response = response;
9365  } else {
9367  }
9368 
9369  return error;
9370 }
9372  xmlDocPtr doc;
9373  xmlNodePtr root;
9374  xmlNodePtr child_node;
9376  ds3_error* error = NULL;
9377 
9378  error = _get_request_xml_nodes(xml_blob, &doc, &root, "CompleteMultipartUploadResult");
9379  if (error != NULL) {
9380  return error;
9381  }
9382 
9383  response = g_new0(ds3_complete_multipart_upload_result_response, 1);
9384 
9385  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9386  if (element_equal(child_node, "Bucket")) {
9387  response->bucket = xml_get_string(doc, child_node);
9388  } else if (element_equal(child_node, "ETag")) {
9389  response->e_tag = xml_get_string(doc, child_node);
9390  } else if (element_equal(child_node, "Key")) {
9391  response->key = xml_get_string(doc, child_node);
9392  } else if (element_equal(child_node, "Location")) {
9393  response->location = xml_get_string(doc, child_node);
9394  } else {
9395  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_complete_multipart_upload_result_response [%s]\n", child_node->name, root->name);
9396  }
9397 
9398  if (error != NULL) {
9399  break;
9400  }
9401 
9402  }
9403 
9404 
9405  xmlFreeDoc(doc);
9406 
9407  if (error == NULL) {
9408  *_response = response;
9409  } else {
9411  }
9412 
9413  return error;
9414 }
9416  xmlDocPtr doc;
9417  xmlNodePtr root;
9418  xmlNodePtr child_node;
9420  ds3_error* error = NULL;
9421  GPtrArray* tape_types_array = g_ptr_array_new();
9422 
9423  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9424  if (error != NULL) {
9425  return error;
9426  }
9427 
9428  response = g_new0(ds3_detailed_tape_partition_response, 1);
9429 
9430  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9431  if (element_equal(child_node, "DriveType")) {
9432  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9433  if (text == NULL) {
9434  continue;
9435  }
9436  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
9437  xmlFree(text);
9438  } else if (element_equal(child_node, "DriveTypes")) {
9439  xmlNodePtr loop_node;
9440  int num_nodes = 0;
9441  GByteArray* enum_array = g_byte_array_new();
9442  ds3_tape_drive_type drive_types;
9443  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
9444  xmlChar* text = xmlNodeListGetString(doc, loop_node, 1);
9445  if (text == NULL) {
9446  continue;
9447  }
9448  drive_types = _match_ds3_tape_drive_type(client->log, text);
9449  g_byte_array_append(enum_array, (const guint8*) &drive_types, sizeof(ds3_tape_drive_type));
9450  }
9451  response->drive_types = (ds3_tape_drive_type*)enum_array->data;
9452  response->num_drive_types = enum_array->len;
9453  g_byte_array_free(enum_array, FALSE);
9454  } else if (element_equal(child_node, "ErrorMessage")) {
9455  response->error_message = xml_get_string(doc, child_node);
9456  } else if (element_equal(child_node, "Id")) {
9457  response->id = xml_get_string(doc, child_node);
9458  } else if (element_equal(child_node, "ImportExportConfiguration")) {
9459  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9460  if (text == NULL) {
9461  continue;
9462  }
9464  xmlFree(text);
9465  } else if (element_equal(child_node, "LibraryId")) {
9466  response->library_id = xml_get_string(doc, child_node);
9467  } else if (element_equal(child_node, "MinimumReadReservedDrives")) {
9468  response->minimum_read_reserved_drives = xml_get_uint16(doc, child_node);
9469  } else if (element_equal(child_node, "MinimumWriteReservedDrives")) {
9470  response->minimum_write_reserved_drives = xml_get_uint16(doc, child_node);
9471  } else if (element_equal(child_node, "Name")) {
9472  response->name = xml_get_string(doc, child_node);
9473  } else if (element_equal(child_node, "Quiesced")) {
9474  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9475  if (text == NULL) {
9476  continue;
9477  }
9478  response->quiesced = _match_ds3_quiesced(client->log, text);
9479  xmlFree(text);
9480  } else if (element_equal(child_node, "SerialId")) {
9481  response->serial_id = xml_get_string(doc, child_node);
9482  } else if (element_equal(child_node, "SerialNumber")) {
9483  response->serial_number = xml_get_string(doc, child_node);
9484  } else if (element_equal(child_node, "State")) {
9485  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9486  if (text == NULL) {
9487  continue;
9488  }
9489  response->state = _match_ds3_tape_partition_state(client->log, text);
9490  xmlFree(text);
9491  } else if (element_equal(child_node, "TapeTypes")) {
9492  xmlNodePtr loop_node;
9493  GPtrArray* tape_types_array = g_ptr_array_new();
9494  int num_nodes = 0;
9495  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
9496  ds3_str* tape_types = xml_get_string(doc, loop_node);
9497  g_ptr_array_add(tape_types_array, tape_types);
9498  }
9499  response->tape_types = (ds3_str**)tape_types_array->pdata;
9500  response->num_tape_types = tape_types_array->len;
9501  g_ptr_array_free(tape_types_array, FALSE);
9502  } else {
9503  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_tape_partition_response [%s]\n", child_node->name, root->name);
9504  }
9505 
9506  if (error != NULL) {
9507  break;
9508  }
9509 
9510  }
9511 
9512  response->tape_types = (ds3_str**)tape_types_array->pdata;
9513  response->num_tape_types = tape_types_array->len;
9514  g_ptr_array_free(tape_types_array, FALSE);
9515 
9516  xmlFreeDoc(doc);
9517 
9518  if (error == NULL) {
9519  *_response = response;
9520  } else {
9522  }
9523 
9524  return error;
9525 }
9527  xmlDocPtr doc;
9528  xmlNodePtr root;
9529  xmlNodePtr child_node;
9531  ds3_error* error = NULL;
9532 
9533  error = _get_request_xml_nodes(xml_blob, &doc, &root, "InitiateMultipartUploadResult");
9534  if (error != NULL) {
9535  return error;
9536  }
9537 
9538  response = g_new0(ds3_initiate_multipart_upload_result_response, 1);
9539 
9540  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9541  if (element_equal(child_node, "Bucket")) {
9542  response->bucket = xml_get_string(doc, child_node);
9543  } else if (element_equal(child_node, "Key")) {
9544  response->key = xml_get_string(doc, child_node);
9545  } else if (element_equal(child_node, "UploadId")) {
9546  response->upload_id = xml_get_string(doc, child_node);
9547  } else {
9548  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_initiate_multipart_upload_result_response [%s]\n", child_node->name, root->name);
9549  }
9550 
9551  if (error != NULL) {
9552  break;
9553  }
9554 
9555  }
9556 
9557 
9558  xmlFreeDoc(doc);
9559 
9560  if (error == NULL) {
9561  *_response = response;
9562  } else {
9564  }
9565 
9566  return error;
9567 }
9568 static ds3_error* _parse_top_level_ds3_system_information_response(const ds3_client* client, const ds3_request* request, ds3_system_information_response** _response, GByteArray* xml_blob) {
9569  xmlDocPtr doc;
9570  xmlNodePtr root;
9571  xmlNodePtr child_node;
9573  ds3_error* error = NULL;
9574 
9575  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9576  if (error != NULL) {
9577  return error;
9578  }
9579 
9580  response = g_new0(ds3_system_information_response, 1);
9581 
9582  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9583  if (element_equal(child_node, "ApiVersion")) {
9584  response->api_version = xml_get_string(doc, child_node);
9585  } else if (element_equal(child_node, "BackendActivated")) {
9586  response->backend_activated = xml_get_bool(client->log, doc, child_node);
9587  } else if (element_equal(child_node, "BuildInformation")) {
9588  error = _parse_ds3_build_information_response(client, doc, child_node, &response->build_information);
9589  } else if (element_equal(child_node, "InstanceId")) {
9590  response->instance_id = xml_get_string(doc, child_node);
9591  } else if (element_equal(child_node, "Now")) {
9592  response->now = xml_get_uint64(doc, child_node);
9593  } else if (element_equal(child_node, "SerialNumber")) {
9594  response->serial_number = xml_get_string(doc, child_node);
9595  } else {
9596  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_information_response [%s]\n", child_node->name, root->name);
9597  }
9598 
9599  if (error != NULL) {
9600  break;
9601  }
9602 
9603  }
9604 
9605 
9606  xmlFreeDoc(doc);
9607 
9608  if (error == NULL) {
9609  *_response = response;
9610  } else {
9612  }
9613 
9614  return error;
9615 }
9617  xmlDocPtr doc;
9618  xmlNodePtr root;
9619  xmlNodePtr child_node;
9621  ds3_error* error = NULL;
9622 
9623  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9624  if (error != NULL) {
9625  return error;
9626  }
9627 
9628  response = g_new0(ds3_health_verification_result_response, 1);
9629 
9630  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9631  if (element_equal(child_node, "DatabaseFilesystemFreeSpace")) {
9632  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9633  if (text == NULL) {
9634  continue;
9635  }
9637  xmlFree(text);
9638  } else if (element_equal(child_node, "MsRequiredToVerifyDataPlannerHealth")) {
9639  response->ms_required_to_verify_data_planner_health = xml_get_uint64(doc, child_node);
9640  } else {
9641  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_health_verification_result_response [%s]\n", child_node->name, root->name);
9642  }
9643 
9644  if (error != NULL) {
9645  break;
9646  }
9647 
9648  }
9649 
9650 
9651  xmlFreeDoc(doc);
9652 
9653  if (error == NULL) {
9654  *_response = response;
9655  } else {
9657  }
9658 
9659  return error;
9660 }
9661 static ds3_error* _parse_top_level_ds3_tape_failure_list_response(const ds3_client* client, const ds3_request* request, ds3_tape_failure_list_response** _response, GByteArray* xml_blob) {
9662  xmlDocPtr doc;
9663  xmlNodePtr root;
9664  xmlNodePtr child_node;
9666  ds3_error* error = NULL;
9667  GPtrArray* failures_array = g_ptr_array_new();
9668 
9669  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9670  if (error != NULL) {
9671  return error;
9672  }
9673 
9674  response = g_new0(ds3_tape_failure_list_response, 1);
9675 
9676  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9677  if (element_equal(child_node, "Failure")) {
9678  ds3_tape_failure_response* failures_response = NULL;
9679  error = _parse_ds3_tape_failure_response(client, doc, child_node, &failures_response);
9680  response->failures = (ds3_tape_failure_response**)failures_array->pdata;
9681  g_ptr_array_add(failures_array, failures_response);
9682  } else {
9683  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_list_response [%s]\n", child_node->name, root->name);
9684  }
9685 
9686  if (error != NULL) {
9687  break;
9688  }
9689 
9690  }
9691 
9692  response->failures = (ds3_tape_failure_response**)failures_array->pdata;
9693  response->num_failures = failures_array->len;
9694  g_ptr_array_free(failures_array, FALSE);
9695 
9696  xmlFreeDoc(doc);
9697 
9698  if (error == NULL) {
9699  *_response = response;
9700  } else {
9702  }
9703 
9704  return error;
9705 }
9706 static ds3_error* _parse_top_level_ds3_bucket_acl_list_response(const ds3_client* client, const ds3_request* request, ds3_bucket_acl_list_response** _response, GByteArray* xml_blob) {
9707  xmlDocPtr doc;
9708  xmlNodePtr root;
9709  xmlNodePtr child_node;
9710  ds3_bucket_acl_list_response* response;
9711  ds3_error* error = NULL;
9712  GPtrArray* bucket_acls_array = g_ptr_array_new();
9713 
9714  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9715  if (error != NULL) {
9716  return error;
9717  }
9718 
9719  response = g_new0(ds3_bucket_acl_list_response, 1);
9720 
9721  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9722  if (element_equal(child_node, "BucketAcl")) {
9723  ds3_bucket_acl_response* bucket_acls_response = NULL;
9724  error = _parse_ds3_bucket_acl_response(client, doc, child_node, &bucket_acls_response);
9725  response->bucket_acls = (ds3_bucket_acl_response**)bucket_acls_array->pdata;
9726  g_ptr_array_add(bucket_acls_array, bucket_acls_response);
9727  } else {
9728  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_acl_list_response [%s]\n", child_node->name, root->name);
9729  }
9730 
9731  if (error != NULL) {
9732  break;
9733  }
9734 
9735  }
9736 
9737  response->bucket_acls = (ds3_bucket_acl_response**)bucket_acls_array->pdata;
9738  response->num_bucket_acls = bucket_acls_array->len;
9739  g_ptr_array_free(bucket_acls_array, FALSE);
9740 
9741  xmlFreeDoc(doc);
9742 
9743  if (error == NULL) {
9744  *_response = response;
9745  } else {
9747  }
9748 
9749  return error;
9750 }
9751 static ds3_error* _parse_top_level_ds3_data_policy_acl_list_response(const ds3_client* client, const ds3_request* request, ds3_data_policy_acl_list_response** _response, GByteArray* xml_blob) {
9752  xmlDocPtr doc;
9753  xmlNodePtr root;
9754  xmlNodePtr child_node;
9756  ds3_error* error = NULL;
9757  GPtrArray* data_policy_acls_array = g_ptr_array_new();
9758 
9759  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9760  if (error != NULL) {
9761  return error;
9762  }
9763 
9764  response = g_new0(ds3_data_policy_acl_list_response, 1);
9765 
9766  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9767  if (element_equal(child_node, "DataPolicyAcl")) {
9768  ds3_data_policy_acl_response* data_policy_acls_response = NULL;
9769  error = _parse_ds3_data_policy_acl_response(client, doc, child_node, &data_policy_acls_response);
9770  response->data_policy_acls = (ds3_data_policy_acl_response**)data_policy_acls_array->pdata;
9771  g_ptr_array_add(data_policy_acls_array, data_policy_acls_response);
9772  } else {
9773  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_acl_list_response [%s]\n", child_node->name, root->name);
9774  }
9775 
9776  if (error != NULL) {
9777  break;
9778  }
9779 
9780  }
9781 
9782  response->data_policy_acls = (ds3_data_policy_acl_response**)data_policy_acls_array->pdata;
9783  response->num_data_policy_acls = data_policy_acls_array->len;
9784  g_ptr_array_free(data_policy_acls_array, FALSE);
9785 
9786  xmlFreeDoc(doc);
9787 
9788  if (error == NULL) {
9789  *_response = response;
9790  } else {
9792  }
9793 
9794  return error;
9795 }
9796 static ds3_error* _parse_top_level_ds3_bucket_list_response(const ds3_client* client, const ds3_request* request, ds3_bucket_list_response** _response, GByteArray* xml_blob) {
9797  xmlDocPtr doc;
9798  xmlNodePtr root;
9799  xmlNodePtr child_node;
9800  ds3_bucket_list_response* response;
9801  ds3_error* error = NULL;
9802  GPtrArray* buckets_array = g_ptr_array_new();
9803 
9804  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9805  if (error != NULL) {
9806  return error;
9807  }
9808 
9809  response = g_new0(ds3_bucket_list_response, 1);
9810 
9811  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9812  if (element_equal(child_node, "Bucket")) {
9813  ds3_bucket_response* buckets_response = NULL;
9814  error = _parse_ds3_bucket_response(client, doc, child_node, &buckets_response);
9815  response->buckets = (ds3_bucket_response**)buckets_array->pdata;
9816  g_ptr_array_add(buckets_array, buckets_response);
9817  } else {
9818  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_list_response [%s]\n", child_node->name, root->name);
9819  }
9820 
9821  if (error != NULL) {
9822  break;
9823  }
9824 
9825  }
9826 
9827  response->buckets = (ds3_bucket_response**)buckets_array->pdata;
9828  response->num_buckets = buckets_array->len;
9829  g_ptr_array_free(buckets_array, FALSE);
9830 
9831  xmlFreeDoc(doc);
9832 
9833  if (error == NULL) {
9834  *_response = response;
9835  } else {
9837  }
9838 
9839  return error;
9840 }
9841 static ds3_error* _parse_top_level_ds3_cache_filesystem_list_response(const ds3_client* client, const ds3_request* request, ds3_cache_filesystem_list_response** _response, GByteArray* xml_blob) {
9842  xmlDocPtr doc;
9843  xmlNodePtr root;
9844  xmlNodePtr child_node;
9846  ds3_error* error = NULL;
9847  GPtrArray* cache_filesystems_array = g_ptr_array_new();
9848 
9849  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9850  if (error != NULL) {
9851  return error;
9852  }
9853 
9854  response = g_new0(ds3_cache_filesystem_list_response, 1);
9855 
9856  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9857  if (element_equal(child_node, "CacheFilesystem")) {
9858  ds3_cache_filesystem_response* cache_filesystems_response = NULL;
9859  error = _parse_ds3_cache_filesystem_response(client, doc, child_node, &cache_filesystems_response);
9860  response->cache_filesystems = (ds3_cache_filesystem_response**)cache_filesystems_array->pdata;
9861  g_ptr_array_add(cache_filesystems_array, cache_filesystems_response);
9862  } else {
9863  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_list_response [%s]\n", child_node->name, root->name);
9864  }
9865 
9866  if (error != NULL) {
9867  break;
9868  }
9869 
9870  }
9871 
9872  response->cache_filesystems = (ds3_cache_filesystem_response**)cache_filesystems_array->pdata;
9873  response->num_cache_filesystems = cache_filesystems_array->len;
9874  g_ptr_array_free(cache_filesystems_array, FALSE);
9875 
9876  xmlFreeDoc(doc);
9877 
9878  if (error == NULL) {
9879  *_response = response;
9880  } else {
9882  }
9883 
9884  return error;
9885 }
9887  xmlDocPtr doc;
9888  xmlNodePtr root;
9889  xmlNodePtr child_node;
9891  ds3_error* error = NULL;
9892  GPtrArray* azure_data_replication_rules_array = g_ptr_array_new();
9893 
9894  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9895  if (error != NULL) {
9896  return error;
9897  }
9898 
9899  response = g_new0(ds3_azure_data_replication_rule_list_response, 1);
9900 
9901  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9902  if (element_equal(child_node, "AzureDataReplicationRule")) {
9903  ds3_azure_data_replication_rule_response* azure_data_replication_rules_response = NULL;
9904  error = _parse_ds3_azure_data_replication_rule_response(client, doc, child_node, &azure_data_replication_rules_response);
9905  response->azure_data_replication_rules = (ds3_azure_data_replication_rule_response**)azure_data_replication_rules_array->pdata;
9906  g_ptr_array_add(azure_data_replication_rules_array, azure_data_replication_rules_response);
9907  } else {
9908  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_data_replication_rule_list_response [%s]\n", child_node->name, root->name);
9909  }
9910 
9911  if (error != NULL) {
9912  break;
9913  }
9914 
9915  }
9916 
9917  response->azure_data_replication_rules = (ds3_azure_data_replication_rule_response**)azure_data_replication_rules_array->pdata;
9918  response->num_azure_data_replication_rules = azure_data_replication_rules_array->len;
9919  g_ptr_array_free(azure_data_replication_rules_array, FALSE);
9920 
9921  xmlFreeDoc(doc);
9922 
9923  if (error == NULL) {
9924  *_response = response;
9925  } else {
9927  }
9928 
9929  return error;
9930 }
9932  xmlDocPtr doc;
9933  xmlNodePtr root;
9934  xmlNodePtr child_node;
9936  ds3_error* error = NULL;
9937  GPtrArray* data_persistence_rules_array = g_ptr_array_new();
9938 
9939  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9940  if (error != NULL) {
9941  return error;
9942  }
9943 
9944  response = g_new0(ds3_data_persistence_rule_list_response, 1);
9945 
9946  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9947  if (element_equal(child_node, "DataPersistenceRule")) {
9948  ds3_data_persistence_rule_response* data_persistence_rules_response = NULL;
9949  error = _parse_ds3_data_persistence_rule_response(client, doc, child_node, &data_persistence_rules_response);
9950  response->data_persistence_rules = (ds3_data_persistence_rule_response**)data_persistence_rules_array->pdata;
9951  g_ptr_array_add(data_persistence_rules_array, data_persistence_rules_response);
9952  } else {
9953  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_persistence_rule_list_response [%s]\n", child_node->name, root->name);
9954  }
9955 
9956  if (error != NULL) {
9957  break;
9958  }
9959 
9960  }
9961 
9962  response->data_persistence_rules = (ds3_data_persistence_rule_response**)data_persistence_rules_array->pdata;
9963  response->num_data_persistence_rules = data_persistence_rules_array->len;
9964  g_ptr_array_free(data_persistence_rules_array, FALSE);
9965 
9966  xmlFreeDoc(doc);
9967 
9968  if (error == NULL) {
9969  *_response = response;
9970  } else {
9972  }
9973 
9974  return error;
9975 }
9976 static ds3_error* _parse_top_level_ds3_data_policy_list_response(const ds3_client* client, const ds3_request* request, ds3_data_policy_list_response** _response, GByteArray* xml_blob) {
9977  xmlDocPtr doc;
9978  xmlNodePtr root;
9979  xmlNodePtr child_node;
9981  ds3_error* error = NULL;
9982  GPtrArray* data_policies_array = g_ptr_array_new();
9983 
9984  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9985  if (error != NULL) {
9986  return error;
9987  }
9988 
9989  response = g_new0(ds3_data_policy_list_response, 1);
9990 
9991  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9992  if (element_equal(child_node, "DataPolicy")) {
9993  ds3_data_policy_response* data_policies_response = NULL;
9994  error = _parse_ds3_data_policy_response(client, doc, child_node, &data_policies_response);
9995  response->data_policies = (ds3_data_policy_response**)data_policies_array->pdata;
9996  g_ptr_array_add(data_policies_array, data_policies_response);
9997  } else {
9998  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_list_response [%s]\n", child_node->name, root->name);
9999  }
10000 
10001  if (error != NULL) {
10002  break;
10003  }
10004 
10005  }
10006 
10007  response->data_policies = (ds3_data_policy_response**)data_policies_array->pdata;
10008  response->num_data_policies = data_policies_array->len;
10009  g_ptr_array_free(data_policies_array, FALSE);
10010 
10011  xmlFreeDoc(doc);
10012 
10013  if (error == NULL) {
10014  *_response = response;
10015  } else {
10017  }
10018 
10019  return error;
10020 }
10022  xmlDocPtr doc;
10023  xmlNodePtr root;
10024  xmlNodePtr child_node;
10026  ds3_error* error = NULL;
10027  GPtrArray* ds3_data_replication_rules_array = g_ptr_array_new();
10028 
10029  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10030  if (error != NULL) {
10031  return error;
10032  }
10033 
10034  response = g_new0(ds3_data_replication_rule_list_response, 1);
10035 
10036  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10037  if (element_equal(child_node, "Ds3DataReplicationRule")) {
10038  ds3_data_replication_rule_response* ds3_data_replication_rules_response = NULL;
10039  error = _parse_ds3_data_replication_rule_response(client, doc, child_node, &ds3_data_replication_rules_response);
10040  response->ds3_data_replication_rules = (ds3_data_replication_rule_response**)ds3_data_replication_rules_array->pdata;
10041  g_ptr_array_add(ds3_data_replication_rules_array, ds3_data_replication_rules_response);
10042  } else {
10043  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_replication_rule_list_response [%s]\n", child_node->name, root->name);
10044  }
10045 
10046  if (error != NULL) {
10047  break;
10048  }
10049 
10050  }
10051 
10052  response->ds3_data_replication_rules = (ds3_data_replication_rule_response**)ds3_data_replication_rules_array->pdata;
10053  response->num_ds3_data_replication_rules = ds3_data_replication_rules_array->len;
10054  g_ptr_array_free(ds3_data_replication_rules_array, FALSE);
10055 
10056  xmlFreeDoc(doc);
10057 
10058  if (error == NULL) {
10059  *_response = response;
10060  } else {
10062  }
10063 
10064  return error;
10065 }
10067  xmlDocPtr doc;
10068  xmlNodePtr root;
10069  xmlNodePtr child_node;
10071  ds3_error* error = NULL;
10072  GPtrArray* s3_data_replication_rules_array = g_ptr_array_new();
10073 
10074  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10075  if (error != NULL) {
10076  return error;
10077  }
10078 
10079  response = g_new0(ds3_s3_data_replication_rule_list_response, 1);
10080 
10081  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10082  if (element_equal(child_node, "S3DataReplicationRule")) {
10083  ds3_s3_data_replication_rule_response* s3_data_replication_rules_response = NULL;
10084  error = _parse_ds3_s3_data_replication_rule_response(client, doc, child_node, &s3_data_replication_rules_response);
10085  response->s3_data_replication_rules = (ds3_s3_data_replication_rule_response**)s3_data_replication_rules_array->pdata;
10086  g_ptr_array_add(s3_data_replication_rules_array, s3_data_replication_rules_response);
10087  } else {
10088  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_data_replication_rule_list_response [%s]\n", child_node->name, root->name);
10089  }
10090 
10091  if (error != NULL) {
10092  break;
10093  }
10094 
10095  }
10096 
10097  response->s3_data_replication_rules = (ds3_s3_data_replication_rule_response**)s3_data_replication_rules_array->pdata;
10098  response->num_s3_data_replication_rules = s3_data_replication_rules_array->len;
10099  g_ptr_array_free(s3_data_replication_rules_array, FALSE);
10100 
10101  xmlFreeDoc(doc);
10102 
10103  if (error == NULL) {
10104  *_response = response;
10105  } else {
10107  }
10108 
10109  return error;
10110 }
10111 static ds3_error* _parse_top_level_ds3_degraded_blob_list_response(const ds3_client* client, const ds3_request* request, ds3_degraded_blob_list_response** _response, GByteArray* xml_blob) {
10112  xmlDocPtr doc;
10113  xmlNodePtr root;
10114  xmlNodePtr child_node;
10116  ds3_error* error = NULL;
10117  GPtrArray* degraded_blobs_array = g_ptr_array_new();
10118 
10119  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10120  if (error != NULL) {
10121  return error;
10122  }
10123 
10124  response = g_new0(ds3_degraded_blob_list_response, 1);
10125 
10126  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10127  if (element_equal(child_node, "DegradedBlob")) {
10128  ds3_degraded_blob_response* degraded_blobs_response = NULL;
10129  error = _parse_ds3_degraded_blob_response(client, doc, child_node, &degraded_blobs_response);
10130  response->degraded_blobs = (ds3_degraded_blob_response**)degraded_blobs_array->pdata;
10131  g_ptr_array_add(degraded_blobs_array, degraded_blobs_response);
10132  } else {
10133  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_degraded_blob_list_response [%s]\n", child_node->name, root->name);
10134  }
10135 
10136  if (error != NULL) {
10137  break;
10138  }
10139 
10140  }
10141 
10142  response->degraded_blobs = (ds3_degraded_blob_response**)degraded_blobs_array->pdata;
10143  response->num_degraded_blobs = degraded_blobs_array->len;
10144  g_ptr_array_free(degraded_blobs_array, FALSE);
10145 
10146  xmlFreeDoc(doc);
10147 
10148  if (error == NULL) {
10149  *_response = response;
10150  } else {
10152  }
10153 
10154  return error;
10155 }
10157  xmlDocPtr doc;
10158  xmlNodePtr root;
10159  xmlNodePtr child_node;
10161  ds3_error* error = NULL;
10162  GPtrArray* suspect_blob_azure_targets_array = g_ptr_array_new();
10163 
10164  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10165  if (error != NULL) {
10166  return error;
10167  }
10168 
10169  response = g_new0(ds3_suspect_blob_azure_target_list_response, 1);
10170 
10171  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10172  if (element_equal(child_node, "SuspectBlobAzureTarget")) {
10173  ds3_suspect_blob_azure_target_response* suspect_blob_azure_targets_response = NULL;
10174  error = _parse_ds3_suspect_blob_azure_target_response(client, doc, child_node, &suspect_blob_azure_targets_response);
10175  response->suspect_blob_azure_targets = (ds3_suspect_blob_azure_target_response**)suspect_blob_azure_targets_array->pdata;
10176  g_ptr_array_add(suspect_blob_azure_targets_array, suspect_blob_azure_targets_response);
10177  } else {
10178  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_azure_target_list_response [%s]\n", child_node->name, root->name);
10179  }
10180 
10181  if (error != NULL) {
10182  break;
10183  }
10184 
10185  }
10186 
10187  response->suspect_blob_azure_targets = (ds3_suspect_blob_azure_target_response**)suspect_blob_azure_targets_array->pdata;
10188  response->num_suspect_blob_azure_targets = suspect_blob_azure_targets_array->len;
10189  g_ptr_array_free(suspect_blob_azure_targets_array, FALSE);
10190 
10191  xmlFreeDoc(doc);
10192 
10193  if (error == NULL) {
10194  *_response = response;
10195  } else {
10197  }
10198 
10199  return error;
10200 }
10202  xmlDocPtr doc;
10203  xmlNodePtr root;
10204  xmlNodePtr child_node;
10206  ds3_error* error = NULL;
10207  GPtrArray* suspect_blob_ds3_targets_array = g_ptr_array_new();
10208 
10209  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10210  if (error != NULL) {
10211  return error;
10212  }
10213 
10214  response = g_new0(ds3_suspect_blob_ds3_target_list_response, 1);
10215 
10216  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10217  if (element_equal(child_node, "SuspectBlobDs3Target")) {
10218  ds3_suspect_blob_ds3_target_response* suspect_blob_ds3_targets_response = NULL;
10219  error = _parse_ds3_suspect_blob_ds3_target_response(client, doc, child_node, &suspect_blob_ds3_targets_response);
10220  response->suspect_blob_ds3_targets = (ds3_suspect_blob_ds3_target_response**)suspect_blob_ds3_targets_array->pdata;
10221  g_ptr_array_add(suspect_blob_ds3_targets_array, suspect_blob_ds3_targets_response);
10222  } else {
10223  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_ds3_target_list_response [%s]\n", child_node->name, root->name);
10224  }
10225 
10226  if (error != NULL) {
10227  break;
10228  }
10229 
10230  }
10231 
10232  response->suspect_blob_ds3_targets = (ds3_suspect_blob_ds3_target_response**)suspect_blob_ds3_targets_array->pdata;
10233  response->num_suspect_blob_ds3_targets = suspect_blob_ds3_targets_array->len;
10234  g_ptr_array_free(suspect_blob_ds3_targets_array, FALSE);
10235 
10236  xmlFreeDoc(doc);
10237 
10238  if (error == NULL) {
10239  *_response = response;
10240  } else {
10242  }
10243 
10244  return error;
10245 }
10246 static ds3_error* _parse_top_level_ds3_suspect_blob_pool_list_response(const ds3_client* client, const ds3_request* request, ds3_suspect_blob_pool_list_response** _response, GByteArray* xml_blob) {
10247  xmlDocPtr doc;
10248  xmlNodePtr root;
10249  xmlNodePtr child_node;
10251  ds3_error* error = NULL;
10252  GPtrArray* suspect_blob_pools_array = g_ptr_array_new();
10253 
10254  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10255  if (error != NULL) {
10256  return error;
10257  }
10258 
10259  response = g_new0(ds3_suspect_blob_pool_list_response, 1);
10260 
10261  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10262  if (element_equal(child_node, "SuspectBlobPool")) {
10263  ds3_suspect_blob_pool_response* suspect_blob_pools_response = NULL;
10264  error = _parse_ds3_suspect_blob_pool_response(client, doc, child_node, &suspect_blob_pools_response);
10265  response->suspect_blob_pools = (ds3_suspect_blob_pool_response**)suspect_blob_pools_array->pdata;
10266  g_ptr_array_add(suspect_blob_pools_array, suspect_blob_pools_response);
10267  } else {
10268  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_pool_list_response [%s]\n", child_node->name, root->name);
10269  }
10270 
10271  if (error != NULL) {
10272  break;
10273  }
10274 
10275  }
10276 
10277  response->suspect_blob_pools = (ds3_suspect_blob_pool_response**)suspect_blob_pools_array->pdata;
10278  response->num_suspect_blob_pools = suspect_blob_pools_array->len;
10279  g_ptr_array_free(suspect_blob_pools_array, FALSE);
10280 
10281  xmlFreeDoc(doc);
10282 
10283  if (error == NULL) {
10284  *_response = response;
10285  } else {
10287  }
10288 
10289  return error;
10290 }
10292  xmlDocPtr doc;
10293  xmlNodePtr root;
10294  xmlNodePtr child_node;
10296  ds3_error* error = NULL;
10297  GPtrArray* suspect_blob_s3_targets_array = g_ptr_array_new();
10298 
10299  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10300  if (error != NULL) {
10301  return error;
10302  }
10303 
10304  response = g_new0(ds3_suspect_blob_s3_target_list_response, 1);
10305 
10306  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10307  if (element_equal(child_node, "SuspectBlobS3Target")) {
10308  ds3_suspect_blob_s3_target_response* suspect_blob_s3_targets_response = NULL;
10309  error = _parse_ds3_suspect_blob_s3_target_response(client, doc, child_node, &suspect_blob_s3_targets_response);
10310  response->suspect_blob_s3_targets = (ds3_suspect_blob_s3_target_response**)suspect_blob_s3_targets_array->pdata;
10311  g_ptr_array_add(suspect_blob_s3_targets_array, suspect_blob_s3_targets_response);
10312  } else {
10313  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_s3_target_list_response [%s]\n", child_node->name, root->name);
10314  }
10315 
10316  if (error != NULL) {
10317  break;
10318  }
10319 
10320  }
10321 
10322  response->suspect_blob_s3_targets = (ds3_suspect_blob_s3_target_response**)suspect_blob_s3_targets_array->pdata;
10323  response->num_suspect_blob_s3_targets = suspect_blob_s3_targets_array->len;
10324  g_ptr_array_free(suspect_blob_s3_targets_array, FALSE);
10325 
10326  xmlFreeDoc(doc);
10327 
10328  if (error == NULL) {
10329  *_response = response;
10330  } else {
10332  }
10333 
10334  return error;
10335 }
10336 static ds3_error* _parse_top_level_ds3_suspect_blob_tape_list_response(const ds3_client* client, const ds3_request* request, ds3_suspect_blob_tape_list_response** _response, GByteArray* xml_blob) {
10337  xmlDocPtr doc;
10338  xmlNodePtr root;
10339  xmlNodePtr child_node;
10341  ds3_error* error = NULL;
10342  GPtrArray* suspect_blob_tapes_array = g_ptr_array_new();
10343 
10344  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10345  if (error != NULL) {
10346  return error;
10347  }
10348 
10349  response = g_new0(ds3_suspect_blob_tape_list_response, 1);
10350 
10351  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10352  if (element_equal(child_node, "SuspectBlobTape")) {
10353  ds3_suspect_blob_tape_response* suspect_blob_tapes_response = NULL;
10354  error = _parse_ds3_suspect_blob_tape_response(client, doc, child_node, &suspect_blob_tapes_response);
10355  response->suspect_blob_tapes = (ds3_suspect_blob_tape_response**)suspect_blob_tapes_array->pdata;
10356  g_ptr_array_add(suspect_blob_tapes_array, suspect_blob_tapes_response);
10357  } else {
10358  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_tape_list_response [%s]\n", child_node->name, root->name);
10359  }
10360 
10361  if (error != NULL) {
10362  break;
10363  }
10364 
10365  }
10366 
10367  response->suspect_blob_tapes = (ds3_suspect_blob_tape_response**)suspect_blob_tapes_array->pdata;
10368  response->num_suspect_blob_tapes = suspect_blob_tapes_array->len;
10369  g_ptr_array_free(suspect_blob_tapes_array, FALSE);
10370 
10371  xmlFreeDoc(doc);
10372 
10373  if (error == NULL) {
10374  *_response = response;
10375  } else {
10377  }
10378 
10379  return error;
10380 }
10381 static ds3_error* _parse_top_level_ds3_s3_object_list_response(const ds3_client* client, const ds3_request* request, ds3_s3_object_list_response** _response, GByteArray* xml_blob) {
10382  xmlDocPtr doc;
10383  xmlNodePtr root;
10384  xmlNodePtr child_node;
10385  ds3_s3_object_list_response* response;
10386  ds3_error* error = NULL;
10387  GPtrArray* s3_objects_array = g_ptr_array_new();
10388 
10389  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10390  if (error != NULL) {
10391  return error;
10392  }
10393 
10394  response = g_new0(ds3_s3_object_list_response, 1);
10395 
10396  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10397  if (element_equal(child_node, "S3Object")) {
10398  ds3_s3_object_response* s3_objects_response = NULL;
10399  error = _parse_ds3_s3_object_response(client, doc, child_node, &s3_objects_response);
10400  response->s3_objects = (ds3_s3_object_response**)s3_objects_array->pdata;
10401  g_ptr_array_add(s3_objects_array, s3_objects_response);
10402  } else {
10403  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_list_response [%s]\n", child_node->name, root->name);
10404  }
10405 
10406  if (error != NULL) {
10407  break;
10408  }
10409 
10410  }
10411 
10412  response->s3_objects = (ds3_s3_object_response**)s3_objects_array->pdata;
10413  response->num_s3_objects = s3_objects_array->len;
10414  g_ptr_array_free(s3_objects_array, FALSE);
10415 
10416  xmlFreeDoc(doc);
10417 
10418  if (error == NULL) {
10419  *_response = response;
10420  } else {
10422  }
10423 
10424  return error;
10425 }
10426 static ds3_error* _parse_top_level_ds3_group_member_list_response(const ds3_client* client, const ds3_request* request, ds3_group_member_list_response** _response, GByteArray* xml_blob) {
10427  xmlDocPtr doc;
10428  xmlNodePtr root;
10429  xmlNodePtr child_node;
10431  ds3_error* error = NULL;
10432  GPtrArray* group_members_array = g_ptr_array_new();
10433 
10434  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10435  if (error != NULL) {
10436  return error;
10437  }
10438 
10439  response = g_new0(ds3_group_member_list_response, 1);
10440 
10441  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10442  if (element_equal(child_node, "GroupMember")) {
10443  ds3_group_member_response* group_members_response = NULL;
10444  error = _parse_ds3_group_member_response(client, doc, child_node, &group_members_response);
10445  response->group_members = (ds3_group_member_response**)group_members_array->pdata;
10446  g_ptr_array_add(group_members_array, group_members_response);
10447  } else {
10448  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_member_list_response [%s]\n", child_node->name, root->name);
10449  }
10450 
10451  if (error != NULL) {
10452  break;
10453  }
10454 
10455  }
10456 
10457  response->group_members = (ds3_group_member_response**)group_members_array->pdata;
10458  response->num_group_members = group_members_array->len;
10459  g_ptr_array_free(group_members_array, FALSE);
10460 
10461  xmlFreeDoc(doc);
10462 
10463  if (error == NULL) {
10464  *_response = response;
10465  } else {
10467  }
10468 
10469  return error;
10470 }
10471 static ds3_error* _parse_top_level_ds3_group_list_response(const ds3_client* client, const ds3_request* request, ds3_group_list_response** _response, GByteArray* xml_blob) {
10472  xmlDocPtr doc;
10473  xmlNodePtr root;
10474  xmlNodePtr child_node;
10475  ds3_group_list_response* response;
10476  ds3_error* error = NULL;
10477  GPtrArray* groups_array = g_ptr_array_new();
10478 
10479  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10480  if (error != NULL) {
10481  return error;
10482  }
10483 
10484  response = g_new0(ds3_group_list_response, 1);
10485 
10486  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10487  if (element_equal(child_node, "Group")) {
10488  ds3_group_response* groups_response = NULL;
10489  error = _parse_ds3_group_response(client, doc, child_node, &groups_response);
10490  response->groups = (ds3_group_response**)groups_array->pdata;
10491  g_ptr_array_add(groups_array, groups_response);
10492  } else {
10493  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_list_response [%s]\n", child_node->name, root->name);
10494  }
10495 
10496  if (error != NULL) {
10497  break;
10498  }
10499 
10500  }
10501 
10502  response->groups = (ds3_group_response**)groups_array->pdata;
10503  response->num_groups = groups_array->len;
10504  g_ptr_array_free(groups_array, FALSE);
10505 
10506  xmlFreeDoc(doc);
10507 
10508  if (error == NULL) {
10509  *_response = response;
10510  } else {
10511  ds3_group_list_response_free(response);
10512  }
10513 
10514  return error;
10515 }
10516 static ds3_error* _parse_top_level_ds3_active_job_list_response(const ds3_client* client, const ds3_request* request, ds3_active_job_list_response** _response, GByteArray* xml_blob) {
10517  xmlDocPtr doc;
10518  xmlNodePtr root;
10519  xmlNodePtr child_node;
10520  ds3_active_job_list_response* response;
10521  ds3_error* error = NULL;
10522  GPtrArray* active_jobs_array = g_ptr_array_new();
10523 
10524  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
10525  if (error != NULL) {
10526  return error;
10527  }
10528 
10529  response = g_new0(ds3_active_job_list_response, 1);
10530 
10531  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10532  if (element_equal(child_node, "Job")) {
10533  ds3_active_job_response* active_jobs_response = NULL;
10534  error = _parse_ds3_active_job_response(client, doc, child_node, &active_jobs_response);
10535  response->active_jobs = (ds3_active_job_response**)active_jobs_array->pdata;
10536  g_ptr_array_add(active_jobs_array, active_jobs_response);
10537  } else {
10538  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_active_job_list_response [%s]\n", child_node->name, root->name);
10539  }
10540 
10541  if (error != NULL) {
10542  break;
10543  }
10544 
10545  }
10546 
10547  response->active_jobs = (ds3_active_job_response**)active_jobs_array->pdata;
10548  response->num_active_jobs = active_jobs_array->len;
10549  g_ptr_array_free(active_jobs_array, FALSE);
10550 
10551  xmlFreeDoc(doc);
10552 
10553  if (error == NULL) {
10554  *_response = response;
10555  } else {
10557  }
10558 
10559  return error;
10560 }
10561 static ds3_error* _parse_top_level_ds3_canceled_job_list_response(const ds3_client* client, const ds3_request* request, ds3_canceled_job_list_response** _response, GByteArray* xml_blob) {
10562  xmlDocPtr doc;
10563  xmlNodePtr root;
10564  xmlNodePtr child_node;
10566  ds3_error* error = NULL;
10567  GPtrArray* canceled_jobs_array = g_ptr_array_new();
10568 
10569  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
10570  if (error != NULL) {
10571  return error;
10572  }
10573 
10574  response = g_new0(ds3_canceled_job_list_response, 1);
10575 
10576  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10577  if (element_equal(child_node, "CanceledJob")) {
10578  ds3_canceled_job_response* canceled_jobs_response = NULL;
10579  error = _parse_ds3_canceled_job_response(client, doc, child_node, &canceled_jobs_response);
10580  response->canceled_jobs = (ds3_canceled_job_response**)canceled_jobs_array->pdata;
10581  g_ptr_array_add(canceled_jobs_array, canceled_jobs_response);
10582  } else {
10583  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_canceled_job_list_response [%s]\n", child_node->name, root->name);
10584  }
10585 
10586  if (error != NULL) {
10587  break;
10588  }
10589 
10590  }
10591 
10592  response->canceled_jobs = (ds3_canceled_job_response**)canceled_jobs_array->pdata;
10593  response->num_canceled_jobs = canceled_jobs_array->len;
10594  g_ptr_array_free(canceled_jobs_array, FALSE);
10595 
10596  xmlFreeDoc(doc);
10597 
10598  if (error == NULL) {
10599  *_response = response;
10600  } else {
10602  }
10603 
10604  return error;
10605 }
10606 static ds3_error* _parse_top_level_ds3_completed_job_list_response(const ds3_client* client, const ds3_request* request, ds3_completed_job_list_response** _response, GByteArray* xml_blob) {
10607  xmlDocPtr doc;
10608  xmlNodePtr root;
10609  xmlNodePtr child_node;
10611  ds3_error* error = NULL;
10612  GPtrArray* completed_jobs_array = g_ptr_array_new();
10613 
10614  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
10615  if (error != NULL) {
10616  return error;
10617  }
10618 
10619  response = g_new0(ds3_completed_job_list_response, 1);
10620 
10621  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10622  if (element_equal(child_node, "CompletedJob")) {
10623  ds3_completed_job_response* completed_jobs_response = NULL;
10624  error = _parse_ds3_completed_job_response(client, doc, child_node, &completed_jobs_response);
10625  response->completed_jobs = (ds3_completed_job_response**)completed_jobs_array->pdata;
10626  g_ptr_array_add(completed_jobs_array, completed_jobs_response);
10627  } else {
10628  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_completed_job_list_response [%s]\n", child_node->name, root->name);
10629  }
10630 
10631  if (error != NULL) {
10632  break;
10633  }
10634 
10635  }
10636 
10637  response->completed_jobs = (ds3_completed_job_response**)completed_jobs_array->pdata;
10638  response->num_completed_jobs = completed_jobs_array->len;
10639  g_ptr_array_free(completed_jobs_array, FALSE);
10640 
10641  xmlFreeDoc(doc);
10642 
10643  if (error == NULL) {
10644  *_response = response;
10645  } else {
10647  }
10648 
10649  return error;
10650 }
10651 static ds3_error* _parse_top_level_ds3_node_list_response(const ds3_client* client, const ds3_request* request, ds3_node_list_response** _response, GByteArray* xml_blob) {
10652  xmlDocPtr doc;
10653  xmlNodePtr root;
10654  xmlNodePtr child_node;
10655  ds3_node_list_response* response;
10656  ds3_error* error = NULL;
10657  GPtrArray* nodes_array = g_ptr_array_new();
10658 
10659  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10660  if (error != NULL) {
10661  return error;
10662  }
10663 
10664  response = g_new0(ds3_node_list_response, 1);
10665 
10666  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10667  if (element_equal(child_node, "Node")) {
10668  ds3_node_response* nodes_response = NULL;
10669  error = _parse_ds3_node_response(client, doc, child_node, &nodes_response);
10670  response->nodes = (ds3_node_response**)nodes_array->pdata;
10671  g_ptr_array_add(nodes_array, nodes_response);
10672  } else {
10673  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_node_list_response [%s]\n", child_node->name, root->name);
10674  }
10675 
10676  if (error != NULL) {
10677  break;
10678  }
10679 
10680  }
10681 
10682  response->nodes = (ds3_node_response**)nodes_array->pdata;
10683  response->num_nodes = nodes_array->len;
10684  g_ptr_array_free(nodes_array, FALSE);
10685 
10686  xmlFreeDoc(doc);
10687 
10688  if (error == NULL) {
10689  *_response = response;
10690  } else {
10691  ds3_node_list_response_free(response);
10692  }
10693 
10694  return error;
10695 }
10697  xmlDocPtr doc;
10698  xmlNodePtr root;
10699  xmlNodePtr child_node;
10701  ds3_error* error = NULL;
10702  GPtrArray* azure_target_failure_notification_registrations_array = g_ptr_array_new();
10703 
10704  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10705  if (error != NULL) {
10706  return error;
10707  }
10708 
10710 
10711  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10712  if (element_equal(child_node, "AzureTargetFailureNotificationRegistration")) {
10713  ds3_azure_target_failure_notification_registration_response* azure_target_failure_notification_registrations_response = NULL;
10714  error = _parse_ds3_azure_target_failure_notification_registration_response(client, doc, child_node, &azure_target_failure_notification_registrations_response);
10715  response->azure_target_failure_notification_registrations = (ds3_azure_target_failure_notification_registration_response**)azure_target_failure_notification_registrations_array->pdata;
10716  g_ptr_array_add(azure_target_failure_notification_registrations_array, azure_target_failure_notification_registrations_response);
10717  } else {
10718  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_failure_notification_registration_list_response [%s]\n", child_node->name, root->name);
10719  }
10720 
10721  if (error != NULL) {
10722  break;
10723  }
10724 
10725  }
10726 
10727  response->azure_target_failure_notification_registrations = (ds3_azure_target_failure_notification_registration_response**)azure_target_failure_notification_registrations_array->pdata;
10728  response->num_azure_target_failure_notification_registrations = azure_target_failure_notification_registrations_array->len;
10729  g_ptr_array_free(azure_target_failure_notification_registrations_array, FALSE);
10730 
10731  xmlFreeDoc(doc);
10732 
10733  if (error == NULL) {
10734  *_response = response;
10735  } else {
10737  }
10738 
10739  return error;
10740 }
10742  xmlDocPtr doc;
10743  xmlNodePtr root;
10744  xmlNodePtr child_node;
10746  ds3_error* error = NULL;
10747  GPtrArray* ds3_target_failure_notification_registrations_array = g_ptr_array_new();
10748 
10749  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10750  if (error != NULL) {
10751  return error;
10752  }
10753 
10755 
10756  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10757  if (element_equal(child_node, "Ds3TargetFailureNotificationRegistration")) {
10758  ds3_target_failure_notification_registration_response* ds3_target_failure_notification_registrations_response = NULL;
10759  error = _parse_ds3_target_failure_notification_registration_response(client, doc, child_node, &ds3_target_failure_notification_registrations_response);
10760  response->ds3_target_failure_notification_registrations = (ds3_target_failure_notification_registration_response**)ds3_target_failure_notification_registrations_array->pdata;
10761  g_ptr_array_add(ds3_target_failure_notification_registrations_array, ds3_target_failure_notification_registrations_response);
10762  } else {
10763  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_failure_notification_registration_list_response [%s]\n", child_node->name, root->name);
10764  }
10765 
10766  if (error != NULL) {
10767  break;
10768  }
10769 
10770  }
10771 
10772  response->ds3_target_failure_notification_registrations = (ds3_target_failure_notification_registration_response**)ds3_target_failure_notification_registrations_array->pdata;
10773  response->num_ds3_target_failure_notification_registrations = ds3_target_failure_notification_registrations_array->len;
10774  g_ptr_array_free(ds3_target_failure_notification_registrations_array, FALSE);
10775 
10776  xmlFreeDoc(doc);
10777 
10778  if (error == NULL) {
10779  *_response = response;
10780  } else {
10782  }
10783 
10784  return error;
10785 }
10787  xmlDocPtr doc;
10788  xmlNodePtr root;
10789  xmlNodePtr child_node;
10791  ds3_error* error = NULL;
10792  GPtrArray* job_completed_notification_registrations_array = g_ptr_array_new();
10793 
10794  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10795  if (error != NULL) {
10796  return error;
10797  }
10798 
10800 
10801  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10802  if (element_equal(child_node, "JobCompletedNotificationRegistration")) {
10803  ds3_job_completed_notification_registration_response* job_completed_notification_registrations_response = NULL;
10804  error = _parse_ds3_job_completed_notification_registration_response(client, doc, child_node, &job_completed_notification_registrations_response);
10805  response->job_completed_notification_registrations = (ds3_job_completed_notification_registration_response**)job_completed_notification_registrations_array->pdata;
10806  g_ptr_array_add(job_completed_notification_registrations_array, job_completed_notification_registrations_response);
10807  } else {
10808  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_completed_notification_registration_list_response [%s]\n", child_node->name, root->name);
10809  }
10810 
10811  if (error != NULL) {
10812  break;
10813  }
10814 
10815  }
10816 
10817  response->job_completed_notification_registrations = (ds3_job_completed_notification_registration_response**)job_completed_notification_registrations_array->pdata;
10818  response->num_job_completed_notification_registrations = job_completed_notification_registrations_array->len;
10819  g_ptr_array_free(job_completed_notification_registrations_array, FALSE);
10820 
10821  xmlFreeDoc(doc);
10822 
10823  if (error == NULL) {
10824  *_response = response;
10825  } else {
10827  }
10828 
10829  return error;
10830 }
10832  xmlDocPtr doc;
10833  xmlNodePtr root;
10834  xmlNodePtr child_node;
10836  ds3_error* error = NULL;
10837  GPtrArray* job_created_notification_registrations_array = g_ptr_array_new();
10838 
10839  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10840  if (error != NULL) {
10841  return error;
10842  }
10843 
10845 
10846  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10847  if (element_equal(child_node, "JobCreatedNotificationRegistration")) {
10848  ds3_job_created_notification_registration_response* job_created_notification_registrations_response = NULL;
10849  error = _parse_ds3_job_created_notification_registration_response(client, doc, child_node, &job_created_notification_registrations_response);
10850  response->job_created_notification_registrations = (ds3_job_created_notification_registration_response**)job_created_notification_registrations_array->pdata;
10851  g_ptr_array_add(job_created_notification_registrations_array, job_created_notification_registrations_response);
10852  } else {
10853  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_created_notification_registration_list_response [%s]\n", child_node->name, root->name);
10854  }
10855 
10856  if (error != NULL) {
10857  break;
10858  }
10859 
10860  }
10861 
10862  response->job_created_notification_registrations = (ds3_job_created_notification_registration_response**)job_created_notification_registrations_array->pdata;
10863  response->num_job_created_notification_registrations = job_created_notification_registrations_array->len;
10864  g_ptr_array_free(job_created_notification_registrations_array, FALSE);
10865 
10866  xmlFreeDoc(doc);
10867 
10868  if (error == NULL) {
10869  *_response = response;
10870  } else {
10872  }
10873 
10874  return error;
10875 }
10877  xmlDocPtr doc;
10878  xmlNodePtr root;
10879  xmlNodePtr child_node;
10881  ds3_error* error = NULL;
10882  GPtrArray* job_creation_failed_notification_registrations_array = g_ptr_array_new();
10883 
10884  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10885  if (error != NULL) {
10886  return error;
10887  }
10888 
10890 
10891  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10892  if (element_equal(child_node, "JobCreationFailedNotificationRegistration")) {
10893  ds3_job_creation_failed_notification_registration_response* job_creation_failed_notification_registrations_response = NULL;
10894  error = _parse_ds3_job_creation_failed_notification_registration_response(client, doc, child_node, &job_creation_failed_notification_registrations_response);
10895  response->job_creation_failed_notification_registrations = (ds3_job_creation_failed_notification_registration_response**)job_creation_failed_notification_registrations_array->pdata;
10896  g_ptr_array_add(job_creation_failed_notification_registrations_array, job_creation_failed_notification_registrations_response);
10897  } else {
10898  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_creation_failed_notification_registration_list_response [%s]\n", child_node->name, root->name);
10899  }
10900 
10901  if (error != NULL) {
10902  break;
10903  }
10904 
10905  }
10906 
10907  response->job_creation_failed_notification_registrations = (ds3_job_creation_failed_notification_registration_response**)job_creation_failed_notification_registrations_array->pdata;
10908  response->num_job_creation_failed_notification_registrations = job_creation_failed_notification_registrations_array->len;
10909  g_ptr_array_free(job_creation_failed_notification_registrations_array, FALSE);
10910 
10911  xmlFreeDoc(doc);
10912 
10913  if (error == NULL) {
10914  *_response = response;
10915  } else {
10917  }
10918 
10919  return error;
10920 }
10922  xmlDocPtr doc;
10923  xmlNodePtr root;
10924  xmlNodePtr child_node;
10926  ds3_error* error = NULL;
10927  GPtrArray* s3_object_cached_notification_registrations_array = g_ptr_array_new();
10928 
10929  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10930  if (error != NULL) {
10931  return error;
10932  }
10933 
10935 
10936  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10937  if (element_equal(child_node, "S3ObjectCachedNotificationRegistration")) {
10938  ds3_s3_object_cached_notification_registration_response* s3_object_cached_notification_registrations_response = NULL;
10939  error = _parse_ds3_s3_object_cached_notification_registration_response(client, doc, child_node, &s3_object_cached_notification_registrations_response);
10940  response->s3_object_cached_notification_registrations = (ds3_s3_object_cached_notification_registration_response**)s3_object_cached_notification_registrations_array->pdata;
10941  g_ptr_array_add(s3_object_cached_notification_registrations_array, s3_object_cached_notification_registrations_response);
10942  } else {
10943  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_cached_notification_registration_list_response [%s]\n", child_node->name, root->name);
10944  }
10945 
10946  if (error != NULL) {
10947  break;
10948  }
10949 
10950  }
10951 
10952  response->s3_object_cached_notification_registrations = (ds3_s3_object_cached_notification_registration_response**)s3_object_cached_notification_registrations_array->pdata;
10953  response->num_s3_object_cached_notification_registrations = s3_object_cached_notification_registrations_array->len;
10954  g_ptr_array_free(s3_object_cached_notification_registrations_array, FALSE);
10955 
10956  xmlFreeDoc(doc);
10957 
10958  if (error == NULL) {
10959  *_response = response;
10960  } else {
10962  }
10963 
10964  return error;
10965 }
10967  xmlDocPtr doc;
10968  xmlNodePtr root;
10969  xmlNodePtr child_node;
10971  ds3_error* error = NULL;
10972  GPtrArray* s3_object_lost_notification_registrations_array = g_ptr_array_new();
10973 
10974  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10975  if (error != NULL) {
10976  return error;
10977  }
10978 
10980 
10981  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10982  if (element_equal(child_node, "S3ObjectLostNotificationRegistration")) {
10983  ds3_s3_object_lost_notification_registration_response* s3_object_lost_notification_registrations_response = NULL;
10984  error = _parse_ds3_s3_object_lost_notification_registration_response(client, doc, child_node, &s3_object_lost_notification_registrations_response);
10985  response->s3_object_lost_notification_registrations = (ds3_s3_object_lost_notification_registration_response**)s3_object_lost_notification_registrations_array->pdata;
10986  g_ptr_array_add(s3_object_lost_notification_registrations_array, s3_object_lost_notification_registrations_response);
10987  } else {
10988  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_lost_notification_registration_list_response [%s]\n", child_node->name, root->name);
10989  }
10990 
10991  if (error != NULL) {
10992  break;
10993  }
10994 
10995  }
10996 
10997  response->s3_object_lost_notification_registrations = (ds3_s3_object_lost_notification_registration_response**)s3_object_lost_notification_registrations_array->pdata;
10998  response->num_s3_object_lost_notification_registrations = s3_object_lost_notification_registrations_array->len;
10999  g_ptr_array_free(s3_object_lost_notification_registrations_array, FALSE);
11000 
11001  xmlFreeDoc(doc);
11002 
11003  if (error == NULL) {
11004  *_response = response;
11005  } else {
11007  }
11008 
11009  return error;
11010 }
11012  xmlDocPtr doc;
11013  xmlNodePtr root;
11014  xmlNodePtr child_node;
11016  ds3_error* error = NULL;
11017  GPtrArray* s3_object_persisted_notification_registrations_array = g_ptr_array_new();
11018 
11019  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11020  if (error != NULL) {
11021  return error;
11022  }
11023 
11025 
11026  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11027  if (element_equal(child_node, "S3ObjectPersistedNotificationRegistration")) {
11028  ds3_s3_object_persisted_notification_registration_response* s3_object_persisted_notification_registrations_response = NULL;
11029  error = _parse_ds3_s3_object_persisted_notification_registration_response(client, doc, child_node, &s3_object_persisted_notification_registrations_response);
11030  response->s3_object_persisted_notification_registrations = (ds3_s3_object_persisted_notification_registration_response**)s3_object_persisted_notification_registrations_array->pdata;
11031  g_ptr_array_add(s3_object_persisted_notification_registrations_array, s3_object_persisted_notification_registrations_response);
11032  } else {
11033  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_persisted_notification_registration_list_response [%s]\n", child_node->name, root->name);
11034  }
11035 
11036  if (error != NULL) {
11037  break;
11038  }
11039 
11040  }
11041 
11042  response->s3_object_persisted_notification_registrations = (ds3_s3_object_persisted_notification_registration_response**)s3_object_persisted_notification_registrations_array->pdata;
11043  response->num_s3_object_persisted_notification_registrations = s3_object_persisted_notification_registrations_array->len;
11044  g_ptr_array_free(s3_object_persisted_notification_registrations_array, FALSE);
11045 
11046  xmlFreeDoc(doc);
11047 
11048  if (error == NULL) {
11049  *_response = response;
11050  } else {
11052  }
11053 
11054  return error;
11055 }
11057  xmlDocPtr doc;
11058  xmlNodePtr root;
11059  xmlNodePtr child_node;
11061  ds3_error* error = NULL;
11062  GPtrArray* pool_failure_notification_registrations_array = g_ptr_array_new();
11063 
11064  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11065  if (error != NULL) {
11066  return error;
11067  }
11068 
11070 
11071  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11072  if (element_equal(child_node, "PoolFailureNotificationRegistration")) {
11073  ds3_pool_failure_notification_registration_response* pool_failure_notification_registrations_response = NULL;
11074  error = _parse_ds3_pool_failure_notification_registration_response(client, doc, child_node, &pool_failure_notification_registrations_response);
11075  response->pool_failure_notification_registrations = (ds3_pool_failure_notification_registration_response**)pool_failure_notification_registrations_array->pdata;
11076  g_ptr_array_add(pool_failure_notification_registrations_array, pool_failure_notification_registrations_response);
11077  } else {
11078  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_notification_registration_list_response [%s]\n", child_node->name, root->name);
11079  }
11080 
11081  if (error != NULL) {
11082  break;
11083  }
11084 
11085  }
11086 
11087  response->pool_failure_notification_registrations = (ds3_pool_failure_notification_registration_response**)pool_failure_notification_registrations_array->pdata;
11088  response->num_pool_failure_notification_registrations = pool_failure_notification_registrations_array->len;
11089  g_ptr_array_free(pool_failure_notification_registrations_array, FALSE);
11090 
11091  xmlFreeDoc(doc);
11092 
11093  if (error == NULL) {
11094  *_response = response;
11095  } else {
11097  }
11098 
11099  return error;
11100 }
11102  xmlDocPtr doc;
11103  xmlNodePtr root;
11104  xmlNodePtr child_node;
11106  ds3_error* error = NULL;
11107  GPtrArray* s3_target_failure_notification_registrations_array = g_ptr_array_new();
11108 
11109  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11110  if (error != NULL) {
11111  return error;
11112  }
11113 
11115 
11116  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11117  if (element_equal(child_node, "S3TargetFailureNotificationRegistration")) {
11118  ds3_s3_target_failure_notification_registration_response* s3_target_failure_notification_registrations_response = NULL;
11119  error = _parse_ds3_s3_target_failure_notification_registration_response(client, doc, child_node, &s3_target_failure_notification_registrations_response);
11120  response->s3_target_failure_notification_registrations = (ds3_s3_target_failure_notification_registration_response**)s3_target_failure_notification_registrations_array->pdata;
11121  g_ptr_array_add(s3_target_failure_notification_registrations_array, s3_target_failure_notification_registrations_response);
11122  } else {
11123  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_failure_notification_registration_list_response [%s]\n", child_node->name, root->name);
11124  }
11125 
11126  if (error != NULL) {
11127  break;
11128  }
11129 
11130  }
11131 
11132  response->s3_target_failure_notification_registrations = (ds3_s3_target_failure_notification_registration_response**)s3_target_failure_notification_registrations_array->pdata;
11133  response->num_s3_target_failure_notification_registrations = s3_target_failure_notification_registrations_array->len;
11134  g_ptr_array_free(s3_target_failure_notification_registrations_array, FALSE);
11135 
11136  xmlFreeDoc(doc);
11137 
11138  if (error == NULL) {
11139  *_response = response;
11140  } else {
11142  }
11143 
11144  return error;
11145 }
11147  xmlDocPtr doc;
11148  xmlNodePtr root;
11149  xmlNodePtr child_node;
11151  ds3_error* error = NULL;
11152  GPtrArray* storage_domain_failure_notification_registrations_array = g_ptr_array_new();
11153 
11154  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11155  if (error != NULL) {
11156  return error;
11157  }
11158 
11160 
11161  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11162  if (element_equal(child_node, "StorageDomainFailureNotificationRegistration")) {
11163  ds3_storage_domain_failure_notification_registration_response* storage_domain_failure_notification_registrations_response = NULL;
11164  error = _parse_ds3_storage_domain_failure_notification_registration_response(client, doc, child_node, &storage_domain_failure_notification_registrations_response);
11165  response->storage_domain_failure_notification_registrations = (ds3_storage_domain_failure_notification_registration_response**)storage_domain_failure_notification_registrations_array->pdata;
11166  g_ptr_array_add(storage_domain_failure_notification_registrations_array, storage_domain_failure_notification_registrations_response);
11167  } else {
11168  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_failure_notification_registration_list_response [%s]\n", child_node->name, root->name);
11169  }
11170 
11171  if (error != NULL) {
11172  break;
11173  }
11174 
11175  }
11176 
11177  response->storage_domain_failure_notification_registrations = (ds3_storage_domain_failure_notification_registration_response**)storage_domain_failure_notification_registrations_array->pdata;
11178  response->num_storage_domain_failure_notification_registrations = storage_domain_failure_notification_registrations_array->len;
11179  g_ptr_array_free(storage_domain_failure_notification_registrations_array, FALSE);
11180 
11181  xmlFreeDoc(doc);
11182 
11183  if (error == NULL) {
11184  *_response = response;
11185  } else {
11187  }
11188 
11189  return error;
11190 }
11192  xmlDocPtr doc;
11193  xmlNodePtr root;
11194  xmlNodePtr child_node;
11196  ds3_error* error = NULL;
11197  GPtrArray* system_failure_notification_registrations_array = g_ptr_array_new();
11198 
11199  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11200  if (error != NULL) {
11201  return error;
11202  }
11203 
11205 
11206  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11207  if (element_equal(child_node, "SystemFailureNotificationRegistration")) {
11208  ds3_system_failure_notification_registration_response* system_failure_notification_registrations_response = NULL;
11209  error = _parse_ds3_system_failure_notification_registration_response(client, doc, child_node, &system_failure_notification_registrations_response);
11210  response->system_failure_notification_registrations = (ds3_system_failure_notification_registration_response**)system_failure_notification_registrations_array->pdata;
11211  g_ptr_array_add(system_failure_notification_registrations_array, system_failure_notification_registrations_response);
11212  } else {
11213  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_notification_registration_list_response [%s]\n", child_node->name, root->name);
11214  }
11215 
11216  if (error != NULL) {
11217  break;
11218  }
11219 
11220  }
11221 
11222  response->system_failure_notification_registrations = (ds3_system_failure_notification_registration_response**)system_failure_notification_registrations_array->pdata;
11223  response->num_system_failure_notification_registrations = system_failure_notification_registrations_array->len;
11224  g_ptr_array_free(system_failure_notification_registrations_array, FALSE);
11225 
11226  xmlFreeDoc(doc);
11227 
11228  if (error == NULL) {
11229  *_response = response;
11230  } else {
11232  }
11233 
11234  return error;
11235 }
11237  xmlDocPtr doc;
11238  xmlNodePtr root;
11239  xmlNodePtr child_node;
11241  ds3_error* error = NULL;
11242  GPtrArray* tape_failure_notification_registrations_array = g_ptr_array_new();
11243 
11244  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11245  if (error != NULL) {
11246  return error;
11247  }
11248 
11250 
11251  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11252  if (element_equal(child_node, "TapeFailureNotificationRegistration")) {
11253  ds3_tape_failure_notification_registration_response* tape_failure_notification_registrations_response = NULL;
11254  error = _parse_ds3_tape_failure_notification_registration_response(client, doc, child_node, &tape_failure_notification_registrations_response);
11255  response->tape_failure_notification_registrations = (ds3_tape_failure_notification_registration_response**)tape_failure_notification_registrations_array->pdata;
11256  g_ptr_array_add(tape_failure_notification_registrations_array, tape_failure_notification_registrations_response);
11257  } else {
11258  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_notification_registration_list_response [%s]\n", child_node->name, root->name);
11259  }
11260 
11261  if (error != NULL) {
11262  break;
11263  }
11264 
11265  }
11266 
11267  response->tape_failure_notification_registrations = (ds3_tape_failure_notification_registration_response**)tape_failure_notification_registrations_array->pdata;
11268  response->num_tape_failure_notification_registrations = tape_failure_notification_registrations_array->len;
11269  g_ptr_array_free(tape_failure_notification_registrations_array, FALSE);
11270 
11271  xmlFreeDoc(doc);
11272 
11273  if (error == NULL) {
11274  *_response = response;
11275  } else {
11277  }
11278 
11279  return error;
11280 }
11282  xmlDocPtr doc;
11283  xmlNodePtr root;
11284  xmlNodePtr child_node;
11286  ds3_error* error = NULL;
11287  GPtrArray* tape_partition_failure_notification_registrations_array = g_ptr_array_new();
11288 
11289  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11290  if (error != NULL) {
11291  return error;
11292  }
11293 
11295 
11296  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11297  if (element_equal(child_node, "TapePartitionFailureNotificationRegistration")) {
11298  ds3_tape_partition_failure_notification_registration_response* tape_partition_failure_notification_registrations_response = NULL;
11299  error = _parse_ds3_tape_partition_failure_notification_registration_response(client, doc, child_node, &tape_partition_failure_notification_registrations_response);
11300  response->tape_partition_failure_notification_registrations = (ds3_tape_partition_failure_notification_registration_response**)tape_partition_failure_notification_registrations_array->pdata;
11301  g_ptr_array_add(tape_partition_failure_notification_registrations_array, tape_partition_failure_notification_registrations_response);
11302  } else {
11303  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_failure_notification_registration_list_response [%s]\n", child_node->name, root->name);
11304  }
11305 
11306  if (error != NULL) {
11307  break;
11308  }
11309 
11310  }
11311 
11312  response->tape_partition_failure_notification_registrations = (ds3_tape_partition_failure_notification_registration_response**)tape_partition_failure_notification_registrations_array->pdata;
11313  response->num_tape_partition_failure_notification_registrations = tape_partition_failure_notification_registrations_array->len;
11314  g_ptr_array_free(tape_partition_failure_notification_registrations_array, FALSE);
11315 
11316  xmlFreeDoc(doc);
11317 
11318  if (error == NULL) {
11319  *_response = response;
11320  } else {
11322  }
11323 
11324  return error;
11325 }
11326 static ds3_error* _parse_top_level_ds3_pool_failure_list_response(const ds3_client* client, const ds3_request* request, ds3_pool_failure_list_response** _response, GByteArray* xml_blob) {
11327  xmlDocPtr doc;
11328  xmlNodePtr root;
11329  xmlNodePtr child_node;
11331  ds3_error* error = NULL;
11332  GPtrArray* pool_failures_array = g_ptr_array_new();
11333 
11334  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11335  if (error != NULL) {
11336  return error;
11337  }
11338 
11339  response = g_new0(ds3_pool_failure_list_response, 1);
11340 
11341  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11342  if (element_equal(child_node, "PoolFailure")) {
11343  ds3_pool_failure_response* pool_failures_response = NULL;
11344  error = _parse_ds3_pool_failure_response(client, doc, child_node, &pool_failures_response);
11345  response->pool_failures = (ds3_pool_failure_response**)pool_failures_array->pdata;
11346  g_ptr_array_add(pool_failures_array, pool_failures_response);
11347  } else {
11348  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_list_response [%s]\n", child_node->name, root->name);
11349  }
11350 
11351  if (error != NULL) {
11352  break;
11353  }
11354 
11355  }
11356 
11357  response->pool_failures = (ds3_pool_failure_response**)pool_failures_array->pdata;
11358  response->num_pool_failures = pool_failures_array->len;
11359  g_ptr_array_free(pool_failures_array, FALSE);
11360 
11361  xmlFreeDoc(doc);
11362 
11363  if (error == NULL) {
11364  *_response = response;
11365  } else {
11367  }
11368 
11369  return error;
11370 }
11371 static ds3_error* _parse_top_level_ds3_pool_partition_list_response(const ds3_client* client, const ds3_request* request, ds3_pool_partition_list_response** _response, GByteArray* xml_blob) {
11372  xmlDocPtr doc;
11373  xmlNodePtr root;
11374  xmlNodePtr child_node;
11376  ds3_error* error = NULL;
11377  GPtrArray* pool_partitions_array = g_ptr_array_new();
11378 
11379  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11380  if (error != NULL) {
11381  return error;
11382  }
11383 
11384  response = g_new0(ds3_pool_partition_list_response, 1);
11385 
11386  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11387  if (element_equal(child_node, "PoolPartition")) {
11388  ds3_pool_partition_response* pool_partitions_response = NULL;
11389  error = _parse_ds3_pool_partition_response(client, doc, child_node, &pool_partitions_response);
11390  response->pool_partitions = (ds3_pool_partition_response**)pool_partitions_array->pdata;
11391  g_ptr_array_add(pool_partitions_array, pool_partitions_response);
11392  } else {
11393  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_partition_list_response [%s]\n", child_node->name, root->name);
11394  }
11395 
11396  if (error != NULL) {
11397  break;
11398  }
11399 
11400  }
11401 
11402  response->pool_partitions = (ds3_pool_partition_response**)pool_partitions_array->pdata;
11403  response->num_pool_partitions = pool_partitions_array->len;
11404  g_ptr_array_free(pool_partitions_array, FALSE);
11405 
11406  xmlFreeDoc(doc);
11407 
11408  if (error == NULL) {
11409  *_response = response;
11410  } else {
11412  }
11413 
11414  return error;
11415 }
11416 static ds3_error* _parse_top_level_ds3_pool_list_response(const ds3_client* client, const ds3_request* request, ds3_pool_list_response** _response, GByteArray* xml_blob) {
11417  xmlDocPtr doc;
11418  xmlNodePtr root;
11419  xmlNodePtr child_node;
11420  ds3_pool_list_response* response;
11421  ds3_error* error = NULL;
11422  GPtrArray* pools_array = g_ptr_array_new();
11423 
11424  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11425  if (error != NULL) {
11426  return error;
11427  }
11428 
11429  response = g_new0(ds3_pool_list_response, 1);
11430 
11431  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11432  if (element_equal(child_node, "Pool")) {
11433  ds3_pool_response* pools_response = NULL;
11434  error = _parse_ds3_pool_response(client, doc, child_node, &pools_response);
11435  response->pools = (ds3_pool_response**)pools_array->pdata;
11436  g_ptr_array_add(pools_array, pools_response);
11437  } else {
11438  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_list_response [%s]\n", child_node->name, root->name);
11439  }
11440 
11441  if (error != NULL) {
11442  break;
11443  }
11444 
11445  }
11446 
11447  response->pools = (ds3_pool_response**)pools_array->pdata;
11448  response->num_pools = pools_array->len;
11449  g_ptr_array_free(pools_array, FALSE);
11450 
11451  xmlFreeDoc(doc);
11452 
11453  if (error == NULL) {
11454  *_response = response;
11455  } else {
11456  ds3_pool_list_response_free(response);
11457  }
11458 
11459  return error;
11460 }
11462  xmlDocPtr doc;
11463  xmlNodePtr root;
11464  xmlNodePtr child_node;
11466  ds3_error* error = NULL;
11467  GPtrArray* storage_domain_failures_array = g_ptr_array_new();
11468 
11469  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11470  if (error != NULL) {
11471  return error;
11472  }
11473 
11474  response = g_new0(ds3_storage_domain_failure_list_response, 1);
11475 
11476  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11477  if (element_equal(child_node, "StorageDomainFailure")) {
11478  ds3_storage_domain_failure_response* storage_domain_failures_response = NULL;
11479  error = _parse_ds3_storage_domain_failure_response(client, doc, child_node, &storage_domain_failures_response);
11480  response->storage_domain_failures = (ds3_storage_domain_failure_response**)storage_domain_failures_array->pdata;
11481  g_ptr_array_add(storage_domain_failures_array, storage_domain_failures_response);
11482  } else {
11483  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_failure_list_response [%s]\n", child_node->name, root->name);
11484  }
11485 
11486  if (error != NULL) {
11487  break;
11488  }
11489 
11490  }
11491 
11492  response->storage_domain_failures = (ds3_storage_domain_failure_response**)storage_domain_failures_array->pdata;
11493  response->num_storage_domain_failures = storage_domain_failures_array->len;
11494  g_ptr_array_free(storage_domain_failures_array, FALSE);
11495 
11496  xmlFreeDoc(doc);
11497 
11498  if (error == NULL) {
11499  *_response = response;
11500  } else {
11502  }
11503 
11504  return error;
11505 }
11507  xmlDocPtr doc;
11508  xmlNodePtr root;
11509  xmlNodePtr child_node;
11511  ds3_error* error = NULL;
11512  GPtrArray* storage_domain_members_array = g_ptr_array_new();
11513 
11514  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11515  if (error != NULL) {
11516  return error;
11517  }
11518 
11519  response = g_new0(ds3_storage_domain_member_list_response, 1);
11520 
11521  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11522  if (element_equal(child_node, "StorageDomainMember")) {
11523  ds3_storage_domain_member_response* storage_domain_members_response = NULL;
11524  error = _parse_ds3_storage_domain_member_response(client, doc, child_node, &storage_domain_members_response);
11525  response->storage_domain_members = (ds3_storage_domain_member_response**)storage_domain_members_array->pdata;
11526  g_ptr_array_add(storage_domain_members_array, storage_domain_members_response);
11527  } else {
11528  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_member_list_response [%s]\n", child_node->name, root->name);
11529  }
11530 
11531  if (error != NULL) {
11532  break;
11533  }
11534 
11535  }
11536 
11537  response->storage_domain_members = (ds3_storage_domain_member_response**)storage_domain_members_array->pdata;
11538  response->num_storage_domain_members = storage_domain_members_array->len;
11539  g_ptr_array_free(storage_domain_members_array, FALSE);
11540 
11541  xmlFreeDoc(doc);
11542 
11543  if (error == NULL) {
11544  *_response = response;
11545  } else {
11547  }
11548 
11549  return error;
11550 }
11551 static ds3_error* _parse_top_level_ds3_storage_domain_list_response(const ds3_client* client, const ds3_request* request, ds3_storage_domain_list_response** _response, GByteArray* xml_blob) {
11552  xmlDocPtr doc;
11553  xmlNodePtr root;
11554  xmlNodePtr child_node;
11556  ds3_error* error = NULL;
11557  GPtrArray* storage_domains_array = g_ptr_array_new();
11558 
11559  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11560  if (error != NULL) {
11561  return error;
11562  }
11563 
11564  response = g_new0(ds3_storage_domain_list_response, 1);
11565 
11566  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11567  if (element_equal(child_node, "StorageDomain")) {
11568  ds3_storage_domain_response* storage_domains_response = NULL;
11569  error = _parse_ds3_storage_domain_response(client, doc, child_node, &storage_domains_response);
11570  response->storage_domains = (ds3_storage_domain_response**)storage_domains_array->pdata;
11571  g_ptr_array_add(storage_domains_array, storage_domains_response);
11572  } else {
11573  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_list_response [%s]\n", child_node->name, root->name);
11574  }
11575 
11576  if (error != NULL) {
11577  break;
11578  }
11579 
11580  }
11581 
11582  response->storage_domains = (ds3_storage_domain_response**)storage_domains_array->pdata;
11583  response->num_storage_domains = storage_domains_array->len;
11584  g_ptr_array_free(storage_domains_array, FALSE);
11585 
11586  xmlFreeDoc(doc);
11587 
11588  if (error == NULL) {
11589  *_response = response;
11590  } else {
11592  }
11593 
11594  return error;
11595 }
11596 static ds3_error* _parse_top_level_ds3_feature_key_list_response(const ds3_client* client, const ds3_request* request, ds3_feature_key_list_response** _response, GByteArray* xml_blob) {
11597  xmlDocPtr doc;
11598  xmlNodePtr root;
11599  xmlNodePtr child_node;
11601  ds3_error* error = NULL;
11602  GPtrArray* feature_keys_array = g_ptr_array_new();
11603 
11604  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11605  if (error != NULL) {
11606  return error;
11607  }
11608 
11609  response = g_new0(ds3_feature_key_list_response, 1);
11610 
11611  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11612  if (element_equal(child_node, "FeatureKey")) {
11613  ds3_feature_key_response* feature_keys_response = NULL;
11614  error = _parse_ds3_feature_key_response(client, doc, child_node, &feature_keys_response);
11615  response->feature_keys = (ds3_feature_key_response**)feature_keys_array->pdata;
11616  g_ptr_array_add(feature_keys_array, feature_keys_response);
11617  } else {
11618  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_feature_key_list_response [%s]\n", child_node->name, root->name);
11619  }
11620 
11621  if (error != NULL) {
11622  break;
11623  }
11624 
11625  }
11626 
11627  response->feature_keys = (ds3_feature_key_response**)feature_keys_array->pdata;
11628  response->num_feature_keys = feature_keys_array->len;
11629  g_ptr_array_free(feature_keys_array, FALSE);
11630 
11631  xmlFreeDoc(doc);
11632 
11633  if (error == NULL) {
11634  *_response = response;
11635  } else {
11637  }
11638 
11639  return error;
11640 }
11641 static ds3_error* _parse_top_level_ds3_system_failure_list_response(const ds3_client* client, const ds3_request* request, ds3_system_failure_list_response** _response, GByteArray* xml_blob) {
11642  xmlDocPtr doc;
11643  xmlNodePtr root;
11644  xmlNodePtr child_node;
11646  ds3_error* error = NULL;
11647  GPtrArray* system_failures_array = g_ptr_array_new();
11648 
11649  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11650  if (error != NULL) {
11651  return error;
11652  }
11653 
11654  response = g_new0(ds3_system_failure_list_response, 1);
11655 
11656  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11657  if (element_equal(child_node, "SystemFailure")) {
11658  ds3_system_failure_response* system_failures_response = NULL;
11659  error = _parse_ds3_system_failure_response(client, doc, child_node, &system_failures_response);
11660  response->system_failures = (ds3_system_failure_response**)system_failures_array->pdata;
11661  g_ptr_array_add(system_failures_array, system_failures_response);
11662  } else {
11663  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_list_response [%s]\n", child_node->name, root->name);
11664  }
11665 
11666  if (error != NULL) {
11667  break;
11668  }
11669 
11670  }
11671 
11672  response->system_failures = (ds3_system_failure_response**)system_failures_array->pdata;
11673  response->num_system_failures = system_failures_array->len;
11674  g_ptr_array_free(system_failures_array, FALSE);
11675 
11676  xmlFreeDoc(doc);
11677 
11678  if (error == NULL) {
11679  *_response = response;
11680  } else {
11682  }
11683 
11684  return error;
11685 }
11687  xmlDocPtr doc;
11688  xmlNodePtr root;
11689  xmlNodePtr child_node;
11691  ds3_error* error = NULL;
11692  GPtrArray* tape_density_directives_array = g_ptr_array_new();
11693 
11694  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11695  if (error != NULL) {
11696  return error;
11697  }
11698 
11699  response = g_new0(ds3_tape_density_directive_list_response, 1);
11700 
11701  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11702  if (element_equal(child_node, "TapeDensityDirective")) {
11703  ds3_tape_density_directive_response* tape_density_directives_response = NULL;
11704  error = _parse_ds3_tape_density_directive_response(client, doc, child_node, &tape_density_directives_response);
11705  response->tape_density_directives = (ds3_tape_density_directive_response**)tape_density_directives_array->pdata;
11706  g_ptr_array_add(tape_density_directives_array, tape_density_directives_response);
11707  } else {
11708  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_density_directive_list_response [%s]\n", child_node->name, root->name);
11709  }
11710 
11711  if (error != NULL) {
11712  break;
11713  }
11714 
11715  }
11716 
11717  response->tape_density_directives = (ds3_tape_density_directive_response**)tape_density_directives_array->pdata;
11718  response->num_tape_density_directives = tape_density_directives_array->len;
11719  g_ptr_array_free(tape_density_directives_array, FALSE);
11720 
11721  xmlFreeDoc(doc);
11722 
11723  if (error == NULL) {
11724  *_response = response;
11725  } else {
11727  }
11728 
11729  return error;
11730 }
11731 static ds3_error* _parse_top_level_ds3_tape_drive_list_response(const ds3_client* client, const ds3_request* request, ds3_tape_drive_list_response** _response, GByteArray* xml_blob) {
11732  xmlDocPtr doc;
11733  xmlNodePtr root;
11734  xmlNodePtr child_node;
11735  ds3_tape_drive_list_response* response;
11736  ds3_error* error = NULL;
11737  GPtrArray* tape_drives_array = g_ptr_array_new();
11738 
11739  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11740  if (error != NULL) {
11741  return error;
11742  }
11743 
11744  response = g_new0(ds3_tape_drive_list_response, 1);
11745 
11746  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11747  if (element_equal(child_node, "TapeDrive")) {
11748  ds3_tape_drive_response* tape_drives_response = NULL;
11749  error = _parse_ds3_tape_drive_response(client, doc, child_node, &tape_drives_response);
11750  response->tape_drives = (ds3_tape_drive_response**)tape_drives_array->pdata;
11751  g_ptr_array_add(tape_drives_array, tape_drives_response);
11752  } else {
11753  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_drive_list_response [%s]\n", child_node->name, root->name);
11754  }
11755 
11756  if (error != NULL) {
11757  break;
11758  }
11759 
11760  }
11761 
11762  response->tape_drives = (ds3_tape_drive_response**)tape_drives_array->pdata;
11763  response->num_tape_drives = tape_drives_array->len;
11764  g_ptr_array_free(tape_drives_array, FALSE);
11765 
11766  xmlFreeDoc(doc);
11767 
11768  if (error == NULL) {
11769  *_response = response;
11770  } else {
11772  }
11773 
11774  return error;
11775 }
11777  xmlDocPtr doc;
11778  xmlNodePtr root;
11779  xmlNodePtr child_node;
11781  ds3_error* error = NULL;
11782  GPtrArray* detailed_tape_failures_array = g_ptr_array_new();
11783 
11784  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11785  if (error != NULL) {
11786  return error;
11787  }
11788 
11789  response = g_new0(ds3_detailed_tape_failure_list_response, 1);
11790 
11791  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11792  if (element_equal(child_node, "TapeFailure")) {
11793  ds3_detailed_tape_failure_response* detailed_tape_failures_response = NULL;
11794  error = _parse_ds3_detailed_tape_failure_response(client, doc, child_node, &detailed_tape_failures_response);
11795  response->detailed_tape_failures = (ds3_detailed_tape_failure_response**)detailed_tape_failures_array->pdata;
11796  g_ptr_array_add(detailed_tape_failures_array, detailed_tape_failures_response);
11797  } else {
11798  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_tape_failure_list_response [%s]\n", child_node->name, root->name);
11799  }
11800 
11801  if (error != NULL) {
11802  break;
11803  }
11804 
11805  }
11806 
11807  response->detailed_tape_failures = (ds3_detailed_tape_failure_response**)detailed_tape_failures_array->pdata;
11808  response->num_detailed_tape_failures = detailed_tape_failures_array->len;
11809  g_ptr_array_free(detailed_tape_failures_array, FALSE);
11810 
11811  xmlFreeDoc(doc);
11812 
11813  if (error == NULL) {
11814  *_response = response;
11815  } else {
11817  }
11818 
11819  return error;
11820 }
11821 static ds3_error* _parse_top_level_ds3_tape_library_list_response(const ds3_client* client, const ds3_request* request, ds3_tape_library_list_response** _response, GByteArray* xml_blob) {
11822  xmlDocPtr doc;
11823  xmlNodePtr root;
11824  xmlNodePtr child_node;
11826  ds3_error* error = NULL;
11827  GPtrArray* tape_libraries_array = g_ptr_array_new();
11828 
11829  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11830  if (error != NULL) {
11831  return error;
11832  }
11833 
11834  response = g_new0(ds3_tape_library_list_response, 1);
11835 
11836  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11837  if (element_equal(child_node, "TapeLibrary")) {
11838  ds3_tape_library_response* tape_libraries_response = NULL;
11839  error = _parse_ds3_tape_library_response(client, doc, child_node, &tape_libraries_response);
11840  response->tape_libraries = (ds3_tape_library_response**)tape_libraries_array->pdata;
11841  g_ptr_array_add(tape_libraries_array, tape_libraries_response);
11842  } else {
11843  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_library_list_response [%s]\n", child_node->name, root->name);
11844  }
11845 
11846  if (error != NULL) {
11847  break;
11848  }
11849 
11850  }
11851 
11852  response->tape_libraries = (ds3_tape_library_response**)tape_libraries_array->pdata;
11853  response->num_tape_libraries = tape_libraries_array->len;
11854  g_ptr_array_free(tape_libraries_array, FALSE);
11855 
11856  xmlFreeDoc(doc);
11857 
11858  if (error == NULL) {
11859  *_response = response;
11860  } else {
11862  }
11863 
11864  return error;
11865 }
11867  xmlDocPtr doc;
11868  xmlNodePtr root;
11869  xmlNodePtr child_node;
11871  ds3_error* error = NULL;
11872  GPtrArray* tape_partition_failures_array = g_ptr_array_new();
11873 
11874  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11875  if (error != NULL) {
11876  return error;
11877  }
11878 
11879  response = g_new0(ds3_tape_partition_failure_list_response, 1);
11880 
11881  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11882  if (element_equal(child_node, "TapePartitionFailure")) {
11883  ds3_tape_partition_failure_response* tape_partition_failures_response = NULL;
11884  error = _parse_ds3_tape_partition_failure_response(client, doc, child_node, &tape_partition_failures_response);
11885  response->tape_partition_failures = (ds3_tape_partition_failure_response**)tape_partition_failures_array->pdata;
11886  g_ptr_array_add(tape_partition_failures_array, tape_partition_failures_response);
11887  } else {
11888  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_failure_list_response [%s]\n", child_node->name, root->name);
11889  }
11890 
11891  if (error != NULL) {
11892  break;
11893  }
11894 
11895  }
11896 
11897  response->tape_partition_failures = (ds3_tape_partition_failure_response**)tape_partition_failures_array->pdata;
11898  response->num_tape_partition_failures = tape_partition_failures_array->len;
11899  g_ptr_array_free(tape_partition_failures_array, FALSE);
11900 
11901  xmlFreeDoc(doc);
11902 
11903  if (error == NULL) {
11904  *_response = response;
11905  } else {
11907  }
11908 
11909  return error;
11910 }
11911 static ds3_error* _parse_top_level_ds3_tape_partition_list_response(const ds3_client* client, const ds3_request* request, ds3_tape_partition_list_response** _response, GByteArray* xml_blob) {
11912  xmlDocPtr doc;
11913  xmlNodePtr root;
11914  xmlNodePtr child_node;
11916  ds3_error* error = NULL;
11917  GPtrArray* tape_partitions_array = g_ptr_array_new();
11918 
11919  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11920  if (error != NULL) {
11921  return error;
11922  }
11923 
11924  response = g_new0(ds3_tape_partition_list_response, 1);
11925 
11926  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11927  if (element_equal(child_node, "TapePartition")) {
11928  ds3_tape_partition_response* tape_partitions_response = NULL;
11929  error = _parse_ds3_tape_partition_response(client, doc, child_node, &tape_partitions_response);
11930  response->tape_partitions = (ds3_tape_partition_response**)tape_partitions_array->pdata;
11931  g_ptr_array_add(tape_partitions_array, tape_partitions_response);
11932  } else {
11933  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_list_response [%s]\n", child_node->name, root->name);
11934  }
11935 
11936  if (error != NULL) {
11937  break;
11938  }
11939 
11940  }
11941 
11942  response->tape_partitions = (ds3_tape_partition_response**)tape_partitions_array->pdata;
11943  response->num_tape_partitions = tape_partitions_array->len;
11944  g_ptr_array_free(tape_partitions_array, FALSE);
11945 
11946  xmlFreeDoc(doc);
11947 
11948  if (error == NULL) {
11949  *_response = response;
11950  } else {
11952  }
11953 
11954  return error;
11955 }
11957  xmlDocPtr doc;
11958  xmlNodePtr root;
11959  xmlNodePtr child_node;
11961  ds3_error* error = NULL;
11962  GPtrArray* named_detailed_tape_partitions_array = g_ptr_array_new();
11963 
11964  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11965  if (error != NULL) {
11966  return error;
11967  }
11968 
11970 
11971  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11972  if (element_equal(child_node, "TapePartition")) {
11973  ds3_named_detailed_tape_partition_response* named_detailed_tape_partitions_response = NULL;
11974  error = _parse_ds3_named_detailed_tape_partition_response(client, doc, child_node, &named_detailed_tape_partitions_response);
11975  response->named_detailed_tape_partitions = (ds3_named_detailed_tape_partition_response**)named_detailed_tape_partitions_array->pdata;
11976  g_ptr_array_add(named_detailed_tape_partitions_array, named_detailed_tape_partitions_response);
11977  } else {
11978  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_named_detailed_tape_partition_list_response [%s]\n", child_node->name, root->name);
11979  }
11980 
11981  if (error != NULL) {
11982  break;
11983  }
11984 
11985  }
11986 
11987  response->named_detailed_tape_partitions = (ds3_named_detailed_tape_partition_response**)named_detailed_tape_partitions_array->pdata;
11988  response->num_named_detailed_tape_partitions = named_detailed_tape_partitions_array->len;
11989  g_ptr_array_free(named_detailed_tape_partitions_array, FALSE);
11990 
11991  xmlFreeDoc(doc);
11992 
11993  if (error == NULL) {
11994  *_response = response;
11995  } else {
11997  }
11998 
11999  return error;
12000 }
12001 static ds3_error* _parse_top_level_ds3_tape_list_response(const ds3_client* client, const ds3_request* request, ds3_tape_list_response** _response, GByteArray* xml_blob) {
12002  xmlDocPtr doc;
12003  xmlNodePtr root;
12004  xmlNodePtr child_node;
12005  ds3_tape_list_response* response;
12006  ds3_error* error = NULL;
12007  GPtrArray* tapes_array = g_ptr_array_new();
12008 
12009  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12010  if (error != NULL) {
12011  return error;
12012  }
12013 
12014  response = g_new0(ds3_tape_list_response, 1);
12015 
12016  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12017  if (element_equal(child_node, "Tape")) {
12018  ds3_tape_response* tapes_response = NULL;
12019  error = _parse_ds3_tape_response(client, doc, child_node, &tapes_response);
12020  response->tapes = (ds3_tape_response**)tapes_array->pdata;
12021  g_ptr_array_add(tapes_array, tapes_response);
12022  } else {
12023  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_list_response [%s]\n", child_node->name, root->name);
12024  }
12025 
12026  if (error != NULL) {
12027  break;
12028  }
12029 
12030  }
12031 
12032  response->tapes = (ds3_tape_response**)tapes_array->pdata;
12033  response->num_tapes = tapes_array->len;
12034  g_ptr_array_free(tapes_array, FALSE);
12035 
12036  xmlFreeDoc(doc);
12037 
12038  if (error == NULL) {
12039  *_response = response;
12040  } else {
12041  ds3_tape_list_response_free(response);
12042  }
12043 
12044  return error;
12045 }
12047  xmlDocPtr doc;
12048  xmlNodePtr root;
12049  xmlNodePtr child_node;
12051  ds3_error* error = NULL;
12052  GPtrArray* azure_target_bucket_names_array = g_ptr_array_new();
12053 
12054  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12055  if (error != NULL) {
12056  return error;
12057  }
12058 
12059  response = g_new0(ds3_azure_target_bucket_name_list_response, 1);
12060 
12061  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12062  if (element_equal(child_node, "AzureTargetBucketName")) {
12063  ds3_azure_target_bucket_name_response* azure_target_bucket_names_response = NULL;
12064  error = _parse_ds3_azure_target_bucket_name_response(client, doc, child_node, &azure_target_bucket_names_response);
12065  response->azure_target_bucket_names = (ds3_azure_target_bucket_name_response**)azure_target_bucket_names_array->pdata;
12066  g_ptr_array_add(azure_target_bucket_names_array, azure_target_bucket_names_response);
12067  } else {
12068  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_bucket_name_list_response [%s]\n", child_node->name, root->name);
12069  }
12070 
12071  if (error != NULL) {
12072  break;
12073  }
12074 
12075  }
12076 
12077  response->azure_target_bucket_names = (ds3_azure_target_bucket_name_response**)azure_target_bucket_names_array->pdata;
12078  response->num_azure_target_bucket_names = azure_target_bucket_names_array->len;
12079  g_ptr_array_free(azure_target_bucket_names_array, FALSE);
12080 
12081  xmlFreeDoc(doc);
12082 
12083  if (error == NULL) {
12084  *_response = response;
12085  } else {
12087  }
12088 
12089  return error;
12090 }
12092  xmlDocPtr doc;
12093  xmlNodePtr root;
12094  xmlNodePtr child_node;
12096  ds3_error* error = NULL;
12097  GPtrArray* azure_target_failures_array = g_ptr_array_new();
12098 
12099  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12100  if (error != NULL) {
12101  return error;
12102  }
12103 
12104  response = g_new0(ds3_azure_target_failure_list_response, 1);
12105 
12106  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12107  if (element_equal(child_node, "AzureTargetFailure")) {
12108  ds3_azure_target_failure_response* azure_target_failures_response = NULL;
12109  error = _parse_ds3_azure_target_failure_response(client, doc, child_node, &azure_target_failures_response);
12110  response->azure_target_failures = (ds3_azure_target_failure_response**)azure_target_failures_array->pdata;
12111  g_ptr_array_add(azure_target_failures_array, azure_target_failures_response);
12112  } else {
12113  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_failure_list_response [%s]\n", child_node->name, root->name);
12114  }
12115 
12116  if (error != NULL) {
12117  break;
12118  }
12119 
12120  }
12121 
12122  response->azure_target_failures = (ds3_azure_target_failure_response**)azure_target_failures_array->pdata;
12123  response->num_azure_target_failures = azure_target_failures_array->len;
12124  g_ptr_array_free(azure_target_failures_array, FALSE);
12125 
12126  xmlFreeDoc(doc);
12127 
12128  if (error == NULL) {
12129  *_response = response;
12130  } else {
12132  }
12133 
12134  return error;
12135 }
12137  xmlDocPtr doc;
12138  xmlNodePtr root;
12139  xmlNodePtr child_node;
12141  ds3_error* error = NULL;
12142  GPtrArray* azure_target_read_preferences_array = g_ptr_array_new();
12143 
12144  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12145  if (error != NULL) {
12146  return error;
12147  }
12148 
12149  response = g_new0(ds3_azure_target_read_preference_list_response, 1);
12150 
12151  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12152  if (element_equal(child_node, "AzureTargetReadPreference")) {
12153  ds3_azure_target_read_preference_response* azure_target_read_preferences_response = NULL;
12154  error = _parse_ds3_azure_target_read_preference_response(client, doc, child_node, &azure_target_read_preferences_response);
12155  response->azure_target_read_preferences = (ds3_azure_target_read_preference_response**)azure_target_read_preferences_array->pdata;
12156  g_ptr_array_add(azure_target_read_preferences_array, azure_target_read_preferences_response);
12157  } else {
12158  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_read_preference_list_response [%s]\n", child_node->name, root->name);
12159  }
12160 
12161  if (error != NULL) {
12162  break;
12163  }
12164 
12165  }
12166 
12167  response->azure_target_read_preferences = (ds3_azure_target_read_preference_response**)azure_target_read_preferences_array->pdata;
12168  response->num_azure_target_read_preferences = azure_target_read_preferences_array->len;
12169  g_ptr_array_free(azure_target_read_preferences_array, FALSE);
12170 
12171  xmlFreeDoc(doc);
12172 
12173  if (error == NULL) {
12174  *_response = response;
12175  } else {
12177  }
12178 
12179  return error;
12180 }
12181 static ds3_error* _parse_top_level_ds3_azure_target_list_response(const ds3_client* client, const ds3_request* request, ds3_azure_target_list_response** _response, GByteArray* xml_blob) {
12182  xmlDocPtr doc;
12183  xmlNodePtr root;
12184  xmlNodePtr child_node;
12186  ds3_error* error = NULL;
12187  GPtrArray* azure_targets_array = g_ptr_array_new();
12188 
12189  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12190  if (error != NULL) {
12191  return error;
12192  }
12193 
12194  response = g_new0(ds3_azure_target_list_response, 1);
12195 
12196  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12197  if (element_equal(child_node, "AzureTarget")) {
12198  ds3_azure_target_response* azure_targets_response = NULL;
12199  error = _parse_ds3_azure_target_response(client, doc, child_node, &azure_targets_response);
12200  response->azure_targets = (ds3_azure_target_response**)azure_targets_array->pdata;
12201  g_ptr_array_add(azure_targets_array, azure_targets_response);
12202  } else {
12203  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_list_response [%s]\n", child_node->name, root->name);
12204  }
12205 
12206  if (error != NULL) {
12207  break;
12208  }
12209 
12210  }
12211 
12212  response->azure_targets = (ds3_azure_target_response**)azure_targets_array->pdata;
12213  response->num_azure_targets = azure_targets_array->len;
12214  g_ptr_array_free(azure_targets_array, FALSE);
12215 
12216  xmlFreeDoc(doc);
12217 
12218  if (error == NULL) {
12219  *_response = response;
12220  } else {
12222  }
12223 
12224  return error;
12225 }
12226 static ds3_error* _parse_top_level_ds3_target_failure_list_response(const ds3_client* client, const ds3_request* request, ds3_target_failure_list_response** _response, GByteArray* xml_blob) {
12227  xmlDocPtr doc;
12228  xmlNodePtr root;
12229  xmlNodePtr child_node;
12231  ds3_error* error = NULL;
12232  GPtrArray* ds3_target_failures_array = g_ptr_array_new();
12233 
12234  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12235  if (error != NULL) {
12236  return error;
12237  }
12238 
12239  response = g_new0(ds3_target_failure_list_response, 1);
12240 
12241  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12242  if (element_equal(child_node, "Ds3TargetFailure")) {
12243  ds3_target_failure_response* ds3_target_failures_response = NULL;
12244  error = _parse_ds3_target_failure_response(client, doc, child_node, &ds3_target_failures_response);
12245  response->ds3_target_failures = (ds3_target_failure_response**)ds3_target_failures_array->pdata;
12246  g_ptr_array_add(ds3_target_failures_array, ds3_target_failures_response);
12247  } else {
12248  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_failure_list_response [%s]\n", child_node->name, root->name);
12249  }
12250 
12251  if (error != NULL) {
12252  break;
12253  }
12254 
12255  }
12256 
12257  response->ds3_target_failures = (ds3_target_failure_response**)ds3_target_failures_array->pdata;
12258  response->num_ds3_target_failures = ds3_target_failures_array->len;
12259  g_ptr_array_free(ds3_target_failures_array, FALSE);
12260 
12261  xmlFreeDoc(doc);
12262 
12263  if (error == NULL) {
12264  *_response = response;
12265  } else {
12267  }
12268 
12269  return error;
12270 }
12272  xmlDocPtr doc;
12273  xmlNodePtr root;
12274  xmlNodePtr child_node;
12276  ds3_error* error = NULL;
12277  GPtrArray* ds3_target_read_preferences_array = g_ptr_array_new();
12278 
12279  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12280  if (error != NULL) {
12281  return error;
12282  }
12283 
12284  response = g_new0(ds3_target_read_preference_list_response, 1);
12285 
12286  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12287  if (element_equal(child_node, "Ds3TargetReadPreference")) {
12288  ds3_target_read_preference_response* ds3_target_read_preferences_response = NULL;
12289  error = _parse_ds3_target_read_preference_response(client, doc, child_node, &ds3_target_read_preferences_response);
12290  response->ds3_target_read_preferences = (ds3_target_read_preference_response**)ds3_target_read_preferences_array->pdata;
12291  g_ptr_array_add(ds3_target_read_preferences_array, ds3_target_read_preferences_response);
12292  } else {
12293  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_read_preference_list_response [%s]\n", child_node->name, root->name);
12294  }
12295 
12296  if (error != NULL) {
12297  break;
12298  }
12299 
12300  }
12301 
12302  response->ds3_target_read_preferences = (ds3_target_read_preference_response**)ds3_target_read_preferences_array->pdata;
12303  response->num_ds3_target_read_preferences = ds3_target_read_preferences_array->len;
12304  g_ptr_array_free(ds3_target_read_preferences_array, FALSE);
12305 
12306  xmlFreeDoc(doc);
12307 
12308  if (error == NULL) {
12309  *_response = response;
12310  } else {
12312  }
12313 
12314  return error;
12315 }
12316 static ds3_error* _parse_top_level_ds3_target_list_response(const ds3_client* client, const ds3_request* request, ds3_target_list_response** _response, GByteArray* xml_blob) {
12317  xmlDocPtr doc;
12318  xmlNodePtr root;
12319  xmlNodePtr child_node;
12320  ds3_target_list_response* response;
12321  ds3_error* error = NULL;
12322  GPtrArray* ds3_targets_array = g_ptr_array_new();
12323 
12324  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12325  if (error != NULL) {
12326  return error;
12327  }
12328 
12329  response = g_new0(ds3_target_list_response, 1);
12330 
12331  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12332  if (element_equal(child_node, "Ds3Target")) {
12333  ds3_target_response* ds3_targets_response = NULL;
12334  error = _parse_ds3_target_response(client, doc, child_node, &ds3_targets_response);
12335  response->ds3_targets = (ds3_target_response**)ds3_targets_array->pdata;
12336  g_ptr_array_add(ds3_targets_array, ds3_targets_response);
12337  } else {
12338  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_list_response [%s]\n", child_node->name, root->name);
12339  }
12340 
12341  if (error != NULL) {
12342  break;
12343  }
12344 
12345  }
12346 
12347  response->ds3_targets = (ds3_target_response**)ds3_targets_array->pdata;
12348  response->num_ds3_targets = ds3_targets_array->len;
12349  g_ptr_array_free(ds3_targets_array, FALSE);
12350 
12351  xmlFreeDoc(doc);
12352 
12353  if (error == NULL) {
12354  *_response = response;
12355  } else {
12357  }
12358 
12359  return error;
12360 }
12362  xmlDocPtr doc;
12363  xmlNodePtr root;
12364  xmlNodePtr child_node;
12366  ds3_error* error = NULL;
12367  GPtrArray* s3_target_bucket_names_array = g_ptr_array_new();
12368 
12369  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12370  if (error != NULL) {
12371  return error;
12372  }
12373 
12374  response = g_new0(ds3_s3_target_bucket_name_list_response, 1);
12375 
12376  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12377  if (element_equal(child_node, "S3TargetBucketName")) {
12378  ds3_s3_target_bucket_name_response* s3_target_bucket_names_response = NULL;
12379  error = _parse_ds3_s3_target_bucket_name_response(client, doc, child_node, &s3_target_bucket_names_response);
12380  response->s3_target_bucket_names = (ds3_s3_target_bucket_name_response**)s3_target_bucket_names_array->pdata;
12381  g_ptr_array_add(s3_target_bucket_names_array, s3_target_bucket_names_response);
12382  } else {
12383  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_bucket_name_list_response [%s]\n", child_node->name, root->name);
12384  }
12385 
12386  if (error != NULL) {
12387  break;
12388  }
12389 
12390  }
12391 
12392  response->s3_target_bucket_names = (ds3_s3_target_bucket_name_response**)s3_target_bucket_names_array->pdata;
12393  response->num_s3_target_bucket_names = s3_target_bucket_names_array->len;
12394  g_ptr_array_free(s3_target_bucket_names_array, FALSE);
12395 
12396  xmlFreeDoc(doc);
12397 
12398  if (error == NULL) {
12399  *_response = response;
12400  } else {
12402  }
12403 
12404  return error;
12405 }
12406 static ds3_error* _parse_top_level_ds3_s3_target_failure_list_response(const ds3_client* client, const ds3_request* request, ds3_s3_target_failure_list_response** _response, GByteArray* xml_blob) {
12407  xmlDocPtr doc;
12408  xmlNodePtr root;
12409  xmlNodePtr child_node;
12411  ds3_error* error = NULL;
12412  GPtrArray* s3_target_failures_array = g_ptr_array_new();
12413 
12414  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12415  if (error != NULL) {
12416  return error;
12417  }
12418 
12419  response = g_new0(ds3_s3_target_failure_list_response, 1);
12420 
12421  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12422  if (element_equal(child_node, "S3TargetFailure")) {
12423  ds3_s3_target_failure_response* s3_target_failures_response = NULL;
12424  error = _parse_ds3_s3_target_failure_response(client, doc, child_node, &s3_target_failures_response);
12425  response->s3_target_failures = (ds3_s3_target_failure_response**)s3_target_failures_array->pdata;
12426  g_ptr_array_add(s3_target_failures_array, s3_target_failures_response);
12427  } else {
12428  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_failure_list_response [%s]\n", child_node->name, root->name);
12429  }
12430 
12431  if (error != NULL) {
12432  break;
12433  }
12434 
12435  }
12436 
12437  response->s3_target_failures = (ds3_s3_target_failure_response**)s3_target_failures_array->pdata;
12438  response->num_s3_target_failures = s3_target_failures_array->len;
12439  g_ptr_array_free(s3_target_failures_array, FALSE);
12440 
12441  xmlFreeDoc(doc);
12442 
12443  if (error == NULL) {
12444  *_response = response;
12445  } else {
12447  }
12448 
12449  return error;
12450 }
12452  xmlDocPtr doc;
12453  xmlNodePtr root;
12454  xmlNodePtr child_node;
12456  ds3_error* error = NULL;
12457  GPtrArray* s3_target_read_preferences_array = g_ptr_array_new();
12458 
12459  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12460  if (error != NULL) {
12461  return error;
12462  }
12463 
12464  response = g_new0(ds3_s3_target_read_preference_list_response, 1);
12465 
12466  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12467  if (element_equal(child_node, "S3TargetReadPreference")) {
12468  ds3_s3_target_read_preference_response* s3_target_read_preferences_response = NULL;
12469  error = _parse_ds3_s3_target_read_preference_response(client, doc, child_node, &s3_target_read_preferences_response);
12470  response->s3_target_read_preferences = (ds3_s3_target_read_preference_response**)s3_target_read_preferences_array->pdata;
12471  g_ptr_array_add(s3_target_read_preferences_array, s3_target_read_preferences_response);
12472  } else {
12473  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_read_preference_list_response [%s]\n", child_node->name, root->name);
12474  }
12475 
12476  if (error != NULL) {
12477  break;
12478  }
12479 
12480  }
12481 
12482  response->s3_target_read_preferences = (ds3_s3_target_read_preference_response**)s3_target_read_preferences_array->pdata;
12483  response->num_s3_target_read_preferences = s3_target_read_preferences_array->len;
12484  g_ptr_array_free(s3_target_read_preferences_array, FALSE);
12485 
12486  xmlFreeDoc(doc);
12487 
12488  if (error == NULL) {
12489  *_response = response;
12490  } else {
12492  }
12493 
12494  return error;
12495 }
12496 static ds3_error* _parse_top_level_ds3_s3_target_list_response(const ds3_client* client, const ds3_request* request, ds3_s3_target_list_response** _response, GByteArray* xml_blob) {
12497  xmlDocPtr doc;
12498  xmlNodePtr root;
12499  xmlNodePtr child_node;
12500  ds3_s3_target_list_response* response;
12501  ds3_error* error = NULL;
12502  GPtrArray* s3_targets_array = g_ptr_array_new();
12503 
12504  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12505  if (error != NULL) {
12506  return error;
12507  }
12508 
12509  response = g_new0(ds3_s3_target_list_response, 1);
12510 
12511  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12512  if (element_equal(child_node, "S3Target")) {
12513  ds3_s3_target_response* s3_targets_response = NULL;
12514  error = _parse_ds3_s3_target_response(client, doc, child_node, &s3_targets_response);
12515  response->s3_targets = (ds3_s3_target_response**)s3_targets_array->pdata;
12516  g_ptr_array_add(s3_targets_array, s3_targets_response);
12517  } else {
12518  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_list_response [%s]\n", child_node->name, root->name);
12519  }
12520 
12521  if (error != NULL) {
12522  break;
12523  }
12524 
12525  }
12526 
12527  response->s3_targets = (ds3_s3_target_response**)s3_targets_array->pdata;
12528  response->num_s3_targets = s3_targets_array->len;
12529  g_ptr_array_free(s3_targets_array, FALSE);
12530 
12531  xmlFreeDoc(doc);
12532 
12533  if (error == NULL) {
12534  *_response = response;
12535  } else {
12537  }
12538 
12539  return error;
12540 }
12541 static ds3_error* _parse_top_level_ds3_spectra_user_list_response(const ds3_client* client, const ds3_request* request, ds3_spectra_user_list_response** _response, GByteArray* xml_blob) {
12542  xmlDocPtr doc;
12543  xmlNodePtr root;
12544  xmlNodePtr child_node;
12546  ds3_error* error = NULL;
12547  GPtrArray* spectra_users_array = g_ptr_array_new();
12548 
12549  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12550  if (error != NULL) {
12551  return error;
12552  }
12553 
12554  response = g_new0(ds3_spectra_user_list_response, 1);
12555 
12556  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12557  if (element_equal(child_node, "User")) {
12558  ds3_spectra_user_response* spectra_users_response = NULL;
12559  error = _parse_ds3_spectra_user_response(client, doc, child_node, &spectra_users_response);
12560  response->spectra_users = (ds3_spectra_user_response**)spectra_users_array->pdata;
12561  g_ptr_array_add(spectra_users_array, spectra_users_response);
12562  } else {
12563  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_spectra_user_list_response [%s]\n", child_node->name, root->name);
12564  }
12565 
12566  if (error != NULL) {
12567  break;
12568  }
12569 
12570  }
12571 
12572  response->spectra_users = (ds3_spectra_user_response**)spectra_users_array->pdata;
12573  response->num_spectra_users = spectra_users_array->len;
12574  g_ptr_array_free(spectra_users_array, FALSE);
12575 
12576  xmlFreeDoc(doc);
12577 
12578  if (error == NULL) {
12579  *_response = response;
12580  } else {
12582  }
12583 
12584  return error;
12585 }
12586 static ds3_error* _parse_top_level_ds3_physical_placement_response(const ds3_client* client, const ds3_request* request, ds3_physical_placement_response** _response, GByteArray* xml_blob) {
12587  xmlDocPtr doc;
12588  xmlNodePtr root;
12589  xmlNodePtr child_node;
12591  ds3_error* error = NULL;
12592 
12593  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12594  if (error != NULL) {
12595  return error;
12596  }
12597 
12598  response = g_new0(ds3_physical_placement_response, 1);
12599 
12600  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12601  if (element_equal(child_node, "AzureTargets")) {
12602  GPtrArray* azure_targets_array;
12603  error = _parse_ds3_azure_target_response_array(client, doc, child_node, &azure_targets_array);
12604  response->azure_targets = (ds3_azure_target_response**)azure_targets_array->pdata;
12605  response->num_azure_targets = azure_targets_array->len;
12606  g_ptr_array_free(azure_targets_array, FALSE);
12607  } else if (element_equal(child_node, "Ds3Targets")) {
12608  GPtrArray* ds3_targets_array;
12609  error = _parse_ds3_target_response_array(client, doc, child_node, &ds3_targets_array);
12610  response->ds3_targets = (ds3_target_response**)ds3_targets_array->pdata;
12611  response->num_ds3_targets = ds3_targets_array->len;
12612  g_ptr_array_free(ds3_targets_array, FALSE);
12613  } else if (element_equal(child_node, "Pools")) {
12614  GPtrArray* pools_array;
12615  error = _parse_ds3_pool_response_array(client, doc, child_node, &pools_array);
12616  response->pools = (ds3_pool_response**)pools_array->pdata;
12617  response->num_pools = pools_array->len;
12618  g_ptr_array_free(pools_array, FALSE);
12619  } else if (element_equal(child_node, "S3Targets")) {
12620  GPtrArray* s3_targets_array;
12621  error = _parse_ds3_s3_target_response_array(client, doc, child_node, &s3_targets_array);
12622  response->s3_targets = (ds3_s3_target_response**)s3_targets_array->pdata;
12623  response->num_s3_targets = s3_targets_array->len;
12624  g_ptr_array_free(s3_targets_array, FALSE);
12625  } else if (element_equal(child_node, "Tapes")) {
12626  GPtrArray* tapes_array;
12627  error = _parse_ds3_tape_response_array(client, doc, child_node, &tapes_array);
12628  response->tapes = (ds3_tape_response**)tapes_array->pdata;
12629  response->num_tapes = tapes_array->len;
12630  g_ptr_array_free(tapes_array, FALSE);
12631  } else {
12632  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_physical_placement_response [%s]\n", child_node->name, root->name);
12633  }
12634 
12635  if (error != NULL) {
12636  break;
12637  }
12638 
12639  }
12640 
12641 
12642  xmlFreeDoc(doc);
12643 
12644  if (error == NULL) {
12645  *_response = response;
12646  } else {
12648  }
12649 
12650  return error;
12651 }
12653  xmlDocPtr doc;
12654  xmlNodePtr root;
12655  xmlNodePtr child_node;
12657  ds3_error* error = NULL;
12658 
12659  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12660  if (error != NULL) {
12661  return error;
12662  }
12663 
12664  response = g_new0(ds3_capacity_summary_container_response, 1);
12665 
12666  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12667  if (element_equal(child_node, "Pool")) {
12668  error = _parse_ds3_storage_domain_capacity_summary_response(client, doc, child_node, &response->pool);
12669  } else if (element_equal(child_node, "Tape")) {
12670  error = _parse_ds3_storage_domain_capacity_summary_response(client, doc, child_node, &response->tape);
12671  } else {
12672  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_capacity_summary_container_response [%s]\n", child_node->name, root->name);
12673  }
12674 
12675  if (error != NULL) {
12676  break;
12677  }
12678 
12679  }
12680 
12681 
12682  xmlFreeDoc(doc);
12683 
12684  if (error == NULL) {
12685  *_response = response;
12686  } else {
12688  }
12689 
12690  return error;
12691 }
12692 static ds3_error* _parse_top_level_ds3_bulk_object_list_response(const ds3_client* client, const ds3_request* request, ds3_bulk_object_list_response** _response, GByteArray* xml_blob) {
12693  xmlDocPtr doc;
12694  xmlNodePtr root;
12695  xmlNodePtr child_node;
12697  ds3_error* error = NULL;
12698  GPtrArray* objects_array = g_ptr_array_new();
12699 
12700  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12701  if (error != NULL) {
12702  return error;
12703  }
12704 
12705  response = g_new0(ds3_bulk_object_list_response, 1);
12706 
12707  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12708  if (element_equal(child_node, "Object")) {
12709  ds3_bulk_object_response* objects_response = NULL;
12710  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
12711  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12712  g_ptr_array_add(objects_array, objects_response);
12713  } else {
12714  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bulk_object_list_response [%s]\n", child_node->name, root->name);
12715  }
12716 
12717  if (error != NULL) {
12718  break;
12719  }
12720 
12721  }
12722 
12723  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12724  response->num_objects = objects_array->len;
12725  g_ptr_array_free(objects_array, FALSE);
12726 
12727  xmlFreeDoc(doc);
12728 
12729  if (error == NULL) {
12730  *_response = response;
12731  } else {
12733  }
12734 
12735  return error;
12736 }
12738  xmlDocPtr doc;
12739  xmlNodePtr root;
12740  xmlNodePtr child_node;
12742  ds3_error* error = NULL;
12743 
12744  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListAllMyBucketsResult");
12745  if (error != NULL) {
12746  return error;
12747  }
12748 
12749  response = g_new0(ds3_list_all_my_buckets_result_response, 1);
12750 
12751  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12752  if (element_equal(child_node, "Buckets")) {
12753  GPtrArray* buckets_array;
12754  error = _parse_ds3_bucket_details_response_array(client, doc, child_node, &buckets_array);
12755  response->buckets = (ds3_bucket_details_response**)buckets_array->pdata;
12756  response->num_buckets = buckets_array->len;
12757  g_ptr_array_free(buckets_array, FALSE);
12758  } else if (element_equal(child_node, "Owner")) {
12759  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
12760  } else {
12761  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_list_all_my_buckets_result_response [%s]\n", child_node->name, root->name);
12762  }
12763 
12764  if (error != NULL) {
12765  break;
12766  }
12767 
12768  }
12769 
12770 
12771  xmlFreeDoc(doc);
12772 
12773  if (error == NULL) {
12774  *_response = response;
12775  } else {
12777  }
12778 
12779  return error;
12780 }
12781 static ds3_error* _parse_top_level_ds3_delete_result_response(const ds3_client* client, const ds3_request* request, ds3_delete_result_response** _response, GByteArray* xml_blob) {
12782  xmlDocPtr doc;
12783  xmlNodePtr root;
12784  xmlNodePtr child_node;
12785  ds3_delete_result_response* response;
12786  ds3_error* error = NULL;
12787  GPtrArray* deleted_objects_array = g_ptr_array_new();
12788  GPtrArray* errors_array = g_ptr_array_new();
12789 
12790  error = _get_request_xml_nodes(xml_blob, &doc, &root, "DeleteResult");
12791  if (error != NULL) {
12792  return error;
12793  }
12794 
12795  response = g_new0(ds3_delete_result_response, 1);
12796 
12797  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12798  if (element_equal(child_node, "Deleted")) {
12799  ds3_s3_object_to_delete_response* deleted_objects_response = NULL;
12800  error = _parse_ds3_s3_object_to_delete_response(client, doc, child_node, &deleted_objects_response);
12801  response->deleted_objects = (ds3_s3_object_to_delete_response**)deleted_objects_array->pdata;
12802  g_ptr_array_add(deleted_objects_array, deleted_objects_response);
12803  } else if (element_equal(child_node, "Error")) {
12804  ds3_delete_object_error_response* errors_response = NULL;
12805  error = _parse_ds3_delete_object_error_response(client, doc, child_node, &errors_response);
12806  response->errors = (ds3_delete_object_error_response**)errors_array->pdata;
12807  g_ptr_array_add(errors_array, errors_response);
12808  } else {
12809  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_delete_result_response [%s]\n", child_node->name, root->name);
12810  }
12811 
12812  if (error != NULL) {
12813  break;
12814  }
12815 
12816  }
12817 
12818  response->deleted_objects = (ds3_s3_object_to_delete_response**)deleted_objects_array->pdata;
12819  response->num_deleted_objects = deleted_objects_array->len;
12820  g_ptr_array_free(deleted_objects_array, FALSE);
12821  response->errors = (ds3_delete_object_error_response**)errors_array->pdata;
12822  response->num_errors = errors_array->len;
12823  g_ptr_array_free(errors_array, FALSE);
12824 
12825  xmlFreeDoc(doc);
12826 
12827  if (error == NULL) {
12828  *_response = response;
12829  } else {
12831  }
12832 
12833  return error;
12834 }
12835 static ds3_error* _parse_top_level_ds3_objects_response(const ds3_client* client, const ds3_request* request, ds3_objects_response** _response, GByteArray* xml_blob) {
12836  xmlDocPtr doc;
12837  xmlNodePtr root;
12838  xmlNodePtr child_node;
12839  struct _xmlAttr* attribute;
12840  ds3_objects_response* response;
12841  ds3_error* error = NULL;
12842  GPtrArray* objects_array = g_ptr_array_new();
12843 
12844  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Objects");
12845  if (error != NULL) {
12846  return error;
12847  }
12848 
12849  response = g_new0(ds3_objects_response, 1);
12850  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
12851  if (attribute_equal(attribute, "ChunkId") == true) {
12852  response->chunk_id = xml_get_string_from_attribute(doc, attribute);
12853  } else if (attribute_equal(attribute, "ChunkNumber") == true) {
12854  response->chunk_number = xml_get_uint16_from_attribute(doc, attribute);
12855  } else if (attribute_equal(attribute, "NodeId") == true) {
12856  response->node_id = xml_get_string_from_attribute(doc, attribute);
12857  } else {
12858  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_objects_response [%s]\n", attribute->name, root->name);
12859  }
12860 
12861  if (error != NULL) {
12862  break;
12863  }
12864 
12865  }
12866 
12867  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12868  if (element_equal(child_node, "Object")) {
12869  ds3_bulk_object_response* objects_response = NULL;
12870  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
12871  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12872  g_ptr_array_add(objects_array, objects_response);
12873  } else {
12874  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_objects_response [%s]\n", child_node->name, root->name);
12875  }
12876 
12877  if (error != NULL) {
12878  break;
12879  }
12880 
12881  }
12882 
12883  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12884  response->num_objects = objects_array->len;
12885  g_ptr_array_free(objects_array, FALSE);
12886 
12887  xmlFreeDoc(doc);
12888 
12889  if (error == NULL) {
12890  *_response = response;
12891  } else {
12892  ds3_objects_response_free(response);
12893  }
12894 
12895  return error;
12896 }
12897 static ds3_error* _parse_top_level_ds3_master_object_list_response(const ds3_client* client, const ds3_request* request, ds3_master_object_list_response** _response, GByteArray* xml_blob) {
12898  xmlDocPtr doc;
12899  xmlNodePtr root;
12900  xmlNodePtr child_node;
12901  struct _xmlAttr* attribute;
12903  ds3_error* error = NULL;
12904  GPtrArray* objects_array = g_ptr_array_new();
12905 
12906  error = _get_request_xml_nodes(xml_blob, &doc, &root, "MasterObjectList");
12907  if (error != NULL) {
12908  return error;
12909  }
12910 
12911  response = g_new0(ds3_master_object_list_response, 1);
12912  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
12913  if (attribute_equal(attribute, "Aggregating") == true) {
12914  response->aggregating = xml_get_bool_from_attribute(client->log, doc, attribute);
12915  } else if (attribute_equal(attribute, "BucketName") == true) {
12916  response->bucket_name = xml_get_string_from_attribute(doc, attribute);
12917  } else if (attribute_equal(attribute, "CachedSizeInBytes") == true) {
12918  response->cached_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
12919  } else if (attribute_equal(attribute, "ChunkClientProcessingOrderGuarantee") == true) {
12920  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
12921  if (text == NULL) {
12922  continue;
12923  }
12925  xmlFree(text);
12926  } else if (attribute_equal(attribute, "CompletedSizeInBytes") == true) {
12927  response->completed_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
12928  } else if (attribute_equal(attribute, "EntirelyInCache") == true) {
12929  response->entirely_in_cache = xml_get_bool_from_attribute(client->log, doc, attribute);
12930  } else if (attribute_equal(attribute, "JobId") == true) {
12931  response->job_id = xml_get_string_from_attribute(doc, attribute);
12932  } else if (attribute_equal(attribute, "Naked") == true) {
12933  response->naked = xml_get_bool_from_attribute(client->log, doc, attribute);
12934  } else if (attribute_equal(attribute, "Name") == true) {
12935  response->name = xml_get_string_from_attribute(doc, attribute);
12936  } else if (attribute_equal(attribute, "OriginalSizeInBytes") == true) {
12937  response->original_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
12938  } else if (attribute_equal(attribute, "Priority") == true) {
12939  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
12940  if (text == NULL) {
12941  continue;
12942  }
12943  response->priority = _match_ds3_priority(client->log, text);
12944  xmlFree(text);
12945  } else if (attribute_equal(attribute, "RequestType") == true) {
12946  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
12947  if (text == NULL) {
12948  continue;
12949  }
12950  response->request_type = _match_ds3_job_request_type(client->log, text);
12951  xmlFree(text);
12952  } else if (attribute_equal(attribute, "StartDate") == true) {
12953  response->start_date = xml_get_string_from_attribute(doc, attribute);
12954  } else if (attribute_equal(attribute, "Status") == true) {
12955  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
12956  if (text == NULL) {
12957  continue;
12958  }
12959  response->status = _match_ds3_job_status(client->log, text);
12960  xmlFree(text);
12961  } else if (attribute_equal(attribute, "UserId") == true) {
12962  response->user_id = xml_get_string_from_attribute(doc, attribute);
12963  } else if (attribute_equal(attribute, "UserName") == true) {
12964  response->user_name = xml_get_string_from_attribute(doc, attribute);
12965  } else {
12966  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_master_object_list_response [%s]\n", attribute->name, root->name);
12967  }
12968 
12969  if (error != NULL) {
12970  break;
12971  }
12972 
12973  }
12974 
12975  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12976  if (element_equal(child_node, "Nodes")) {
12977  GPtrArray* nodes_array;
12978  error = _parse_ds3_job_node_response_array(client, doc, child_node, &nodes_array);
12979  response->nodes = (ds3_job_node_response**)nodes_array->pdata;
12980  response->num_nodes = nodes_array->len;
12981  g_ptr_array_free(nodes_array, FALSE);
12982  } else if (element_equal(child_node, "Objects")) {
12983  ds3_objects_response* objects_response = NULL;
12984  error = _parse_ds3_objects_response(client, doc, child_node, &objects_response);
12985  response->objects = (ds3_objects_response**)objects_array->pdata;
12986  g_ptr_array_add(objects_array, objects_response);
12987  } else {
12988  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_master_object_list_response [%s]\n", child_node->name, root->name);
12989  }
12990 
12991  if (error != NULL) {
12992  break;
12993  }
12994 
12995  }
12996 
12997  response->objects = (ds3_objects_response**)objects_array->pdata;
12998  response->num_objects = objects_array->len;
12999  g_ptr_array_free(objects_array, FALSE);
13000 
13001  xmlFreeDoc(doc);
13002 
13003  if (error == NULL) {
13004  *_response = response;
13005  } else {
13007  }
13008 
13009  return error;
13010 }
13011 static ds3_error* _parse_top_level_ds3_job_list_response(const ds3_client* client, const ds3_request* request, ds3_job_list_response** _response, GByteArray* xml_blob) {
13012  xmlDocPtr doc;
13013  xmlNodePtr root;
13014  xmlNodePtr child_node;
13015  ds3_job_list_response* response;
13016  ds3_error* error = NULL;
13017  GPtrArray* jobs_array = g_ptr_array_new();
13018 
13019  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
13020  if (error != NULL) {
13021  return error;
13022  }
13023 
13024  response = g_new0(ds3_job_list_response, 1);
13025 
13026  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13027  if (element_equal(child_node, "Job")) {
13028  ds3_job_response* jobs_response = NULL;
13029  error = _parse_ds3_job_response(client, doc, child_node, &jobs_response);
13030  response->jobs = (ds3_job_response**)jobs_array->pdata;
13031  g_ptr_array_add(jobs_array, jobs_response);
13032  } else {
13033  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_list_response [%s]\n", child_node->name, root->name);
13034  }
13035 
13036  if (error != NULL) {
13037  break;
13038  }
13039 
13040  }
13041 
13042  response->jobs = (ds3_job_response**)jobs_array->pdata;
13043  response->num_jobs = jobs_array->len;
13044  g_ptr_array_free(jobs_array, FALSE);
13045 
13046  xmlFreeDoc(doc);
13047 
13048  if (error == NULL) {
13049  *_response = response;
13050  } else {
13051  ds3_job_list_response_free(response);
13052  }
13053 
13054  return error;
13055 }
13056 static ds3_error* _parse_top_level_ds3_list_parts_result_response(const ds3_client* client, const ds3_request* request, ds3_list_parts_result_response** _response, GByteArray* xml_blob) {
13057  xmlDocPtr doc;
13058  xmlNodePtr root;
13059  xmlNodePtr child_node;
13061  ds3_error* error = NULL;
13062  GPtrArray* parts_array = g_ptr_array_new();
13063 
13064  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListPartsResult");
13065  if (error != NULL) {
13066  return error;
13067  }
13068 
13069  response = g_new0(ds3_list_parts_result_response, 1);
13070 
13071  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13072  if (element_equal(child_node, "Bucket")) {
13073  response->bucket = xml_get_string(doc, child_node);
13074  } else if (element_equal(child_node, "Key")) {
13075  response->key = xml_get_string(doc, child_node);
13076  } else if (element_equal(child_node, "MaxParts")) {
13077  response->max_parts = xml_get_uint16(doc, child_node);
13078  } else if (element_equal(child_node, "NextPartNumberMarker")) {
13079  response->next_part_number_marker = xml_get_uint16(doc, child_node);
13080  } else if (element_equal(child_node, "Owner")) {
13081  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
13082  } else if (element_equal(child_node, "PartNumberMarker")) {
13083  response->part_number_marker = xml_get_uint16(doc, child_node);
13084  } else if (element_equal(child_node, "Part")) {
13085  ds3_multi_part_upload_part_response* parts_response = NULL;
13086  error = _parse_ds3_multi_part_upload_part_response(client, doc, child_node, &parts_response);
13087  response->parts = (ds3_multi_part_upload_part_response**)parts_array->pdata;
13088  g_ptr_array_add(parts_array, parts_response);
13089  } else if (element_equal(child_node, "IsTruncated")) {
13090  response->truncated = xml_get_bool(client->log, doc, child_node);
13091  } else if (element_equal(child_node, "UploadId")) {
13092  response->upload_id = xml_get_string(doc, child_node);
13093  } else {
13094  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_list_parts_result_response [%s]\n", child_node->name, root->name);
13095  }
13096 
13097  if (error != NULL) {
13098  break;
13099  }
13100 
13101  }
13102 
13103  response->parts = (ds3_multi_part_upload_part_response**)parts_array->pdata;
13104  response->num_parts = parts_array->len;
13105  g_ptr_array_free(parts_array, FALSE);
13106 
13107  xmlFreeDoc(doc);
13108 
13109  if (error == NULL) {
13110  *_response = response;
13111  } else {
13113  }
13114 
13115  return error;
13116 }
13118  xmlDocPtr doc;
13119  xmlNodePtr root;
13120  xmlNodePtr child_node;
13122  ds3_error* error = NULL;
13123  GPtrArray* detailed_s3_objects_array = g_ptr_array_new();
13124 
13125  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
13126  if (error != NULL) {
13127  return error;
13128  }
13129 
13130  response = g_new0(ds3_detailed_s3_object_list_response, 1);
13131 
13132  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13133  if (element_equal(child_node, "Object")) {
13134  ds3_detailed_s3_object_response* detailed_s3_objects_response = NULL;
13135  error = _parse_ds3_detailed_s3_object_response(client, doc, child_node, &detailed_s3_objects_response);
13136  response->detailed_s3_objects = (ds3_detailed_s3_object_response**)detailed_s3_objects_array->pdata;
13137  g_ptr_array_add(detailed_s3_objects_array, detailed_s3_objects_response);
13138  } else {
13139  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_s3_object_list_response [%s]\n", child_node->name, root->name);
13140  }
13141 
13142  if (error != NULL) {
13143  break;
13144  }
13145 
13146  }
13147 
13148  response->detailed_s3_objects = (ds3_detailed_s3_object_response**)detailed_s3_objects_array->pdata;
13149  response->num_detailed_s3_objects = detailed_s3_objects_array->len;
13150  g_ptr_array_free(detailed_s3_objects_array, FALSE);
13151 
13152  xmlFreeDoc(doc);
13153 
13154  if (error == NULL) {
13155  *_response = response;
13156  } else {
13158  }
13159 
13160  return error;
13161 }
13162 static ds3_error* _parse_top_level_ds3_list_bucket_result_response(const ds3_client* client, const ds3_request* request, ds3_list_bucket_result_response** _response, GByteArray* xml_blob) {
13163  xmlDocPtr doc;
13164  xmlNodePtr root;
13165  xmlNodePtr child_node;
13167  ds3_error* error = NULL;
13168  GPtrArray* common_prefixes_array = g_ptr_array_new();
13169  GPtrArray* objects_array = g_ptr_array_new();
13170 
13171  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListBucketResult");
13172  if (error != NULL) {
13173  return error;
13174  }
13175 
13176  response = g_new0(ds3_list_bucket_result_response, 1);
13177 
13178  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13179  if (element_equal(child_node, "CommonPrefixes")) {
13180  xmlNodePtr loop_node;
13181  int num_nodes = 0;
13182  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
13183  ds3_str* common_prefixes = xml_get_string(doc, loop_node);
13184  g_ptr_array_add(common_prefixes_array, common_prefixes);
13185  }
13186  } else if (element_equal(child_node, "CreationDate")) {
13187  response->creation_date = xml_get_string(doc, child_node);
13188  } else if (element_equal(child_node, "Delimiter")) {
13189  response->delimiter = xml_get_string(doc, child_node);
13190  } else if (element_equal(child_node, "Marker")) {
13191  response->marker = xml_get_string(doc, child_node);
13192  } else if (element_equal(child_node, "MaxKeys")) {
13193  response->max_keys = xml_get_uint16(doc, child_node);
13194  } else if (element_equal(child_node, "Name")) {
13195  response->name = xml_get_string(doc, child_node);
13196  } else if (element_equal(child_node, "NextMarker")) {
13197  response->next_marker = xml_get_string(doc, child_node);
13198  } else if (element_equal(child_node, "Contents")) {
13199  ds3_contents_response* objects_response = NULL;
13200  error = _parse_ds3_contents_response(client, doc, child_node, &objects_response);
13201  response->objects = (ds3_contents_response**)objects_array->pdata;
13202  g_ptr_array_add(objects_array, objects_response);
13203  } else if (element_equal(child_node, "Prefix")) {
13204  response->prefix = xml_get_string(doc, child_node);
13205  } else if (element_equal(child_node, "IsTruncated")) {
13206  response->truncated = xml_get_bool(client->log, doc, child_node);
13207  } else {
13208  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_list_bucket_result_response [%s]\n", child_node->name, root->name);
13209  }
13210 
13211  if (error != NULL) {
13212  break;
13213  }
13214 
13215  }
13216 
13217  response->common_prefixes = (ds3_str**)common_prefixes_array->pdata;
13218  response->num_common_prefixes = common_prefixes_array->len;
13219  g_ptr_array_free(common_prefixes_array, FALSE);
13220  response->objects = (ds3_contents_response**)objects_array->pdata;
13221  response->num_objects = objects_array->len;
13222  g_ptr_array_free(objects_array, FALSE);
13223 
13224  xmlFreeDoc(doc);
13225 
13226  if (error == NULL) {
13227  *_response = response;
13228  } else {
13230  }
13231 
13232  return error;
13233 }
13235  xmlDocPtr doc;
13236  xmlNodePtr root;
13237  xmlNodePtr child_node;
13239  ds3_error* error = NULL;
13240  GPtrArray* common_prefixes_array = g_ptr_array_new();
13241  GPtrArray* uploads_array = g_ptr_array_new();
13242 
13243  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListMultipartUploadsResult");
13244  if (error != NULL) {
13245  return error;
13246  }
13247 
13248  response = g_new0(ds3_list_multi_part_uploads_result_response, 1);
13249 
13250  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13251  if (element_equal(child_node, "Bucket")) {
13252  response->bucket = xml_get_string(doc, child_node);
13253  } else if (element_equal(child_node, "CommonPrefixes")) {
13254  xmlNodePtr loop_node;
13255  int num_nodes = 0;
13256  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
13257  ds3_str* common_prefixes = xml_get_string(doc, loop_node);
13258  g_ptr_array_add(common_prefixes_array, common_prefixes);
13259  }
13260  } else if (element_equal(child_node, "Delimiter")) {
13261  response->delimiter = xml_get_string(doc, child_node);
13262  } else if (element_equal(child_node, "KeyMarker")) {
13263  response->key_marker = xml_get_string(doc, child_node);
13264  } else if (element_equal(child_node, "MaxUploads")) {
13265  response->max_uploads = xml_get_uint16(doc, child_node);
13266  } else if (element_equal(child_node, "NextKeyMarker")) {
13267  response->next_key_marker = xml_get_string(doc, child_node);
13268  } else if (element_equal(child_node, "NextUploadIdMarker")) {
13269  response->next_upload_id_marker = xml_get_string(doc, child_node);
13270  } else if (element_equal(child_node, "Prefix")) {
13271  response->prefix = xml_get_string(doc, child_node);
13272  } else if (element_equal(child_node, "IsTruncated")) {
13273  response->truncated = xml_get_bool(client->log, doc, child_node);
13274  } else if (element_equal(child_node, "UploadIdMarker")) {
13275  response->upload_id_marker = xml_get_string(doc, child_node);
13276  } else if (element_equal(child_node, "Upload")) {
13277  ds3_multi_part_upload_response* uploads_response = NULL;
13278  error = _parse_ds3_multi_part_upload_response(client, doc, child_node, &uploads_response);
13279  response->uploads = (ds3_multi_part_upload_response**)uploads_array->pdata;
13280  g_ptr_array_add(uploads_array, uploads_response);
13281  } else {
13282  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_list_multi_part_uploads_result_response [%s]\n", child_node->name, root->name);
13283  }
13284 
13285  if (error != NULL) {
13286  break;
13287  }
13288 
13289  }
13290 
13291  response->common_prefixes = (ds3_str**)common_prefixes_array->pdata;
13292  response->num_common_prefixes = common_prefixes_array->len;
13293  g_ptr_array_free(common_prefixes_array, FALSE);
13294  response->uploads = (ds3_multi_part_upload_response**)uploads_array->pdata;
13295  response->num_uploads = uploads_array->len;
13296  g_ptr_array_free(uploads_array, FALSE);
13297 
13298  xmlFreeDoc(doc);
13299 
13300  if (error == NULL) {
13301  *_response = response;
13302  } else {
13304  }
13305 
13306  return error;
13307 }
13309  ds3_paging* response_paging = NULL;
13310 
13311  ds3_str* page_truncated_key = ds3_str_init("Page-Truncated");
13312  ds3_str* total_result_count_key = ds3_str_init("Total-Result-Count");
13313 
13314  ds3_string_multimap_entry* page_truncated_entry = ds3_string_multimap_lookup(response_headers, page_truncated_key);
13315  ds3_string_multimap_entry* total_result_count_entry = ds3_string_multimap_lookup(response_headers, total_result_count_key);
13316 
13317  if ((page_truncated_entry != NULL) || (total_result_count_entry != NULL)) {
13318  ds3_str* page_truncated_ds3_str = ds3_string_multimap_entry_get_value_by_index(page_truncated_entry, 0);
13319  ds3_str* total_result_count_ds3_str = ds3_string_multimap_entry_get_value_by_index(total_result_count_entry, 0);
13320 
13321  response_paging = g_new0(ds3_paging, 1);
13322  if (page_truncated_ds3_str != NULL) {
13323  response_paging->page_truncated = g_ascii_strtoll(page_truncated_ds3_str->value, NULL, 10);
13324  ds3_str_free(page_truncated_ds3_str);
13325  } else {
13326  response_paging->page_truncated = 0;
13327  }
13328  if (total_result_count_ds3_str != NULL) {
13329  response_paging->total_result_count = g_ascii_strtoll(total_result_count_ds3_str->value, NULL, 10);
13330  ds3_str_free(total_result_count_ds3_str);
13331  } else {
13332  response_paging->total_result_count = 0;
13333  }
13334  }
13335 
13336  ds3_str_free(page_truncated_key);
13337  ds3_str_free(total_result_count_key);
13338  ds3_string_multimap_entry_free(page_truncated_entry);
13339  ds3_string_multimap_entry_free(total_result_count_entry);
13340 
13341  return response_paging;
13342 }
13343 
13344 
13346 
13347  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13348  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13349  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13350  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13351  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13352  }
13353 
13354  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13355 }
13357  ds3_error* error;
13358  ds3_xml_send_buff send_buff;
13359  GByteArray* xml_blob;
13360 
13361  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13362  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13363  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13364  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13365  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13366  }
13367 
13368  error = _init_request_payload(request, &send_buff, COMPLETE_MPU);
13369  if (error != NULL) return error;
13370 
13371  xml_blob = g_byte_array_new();
13372  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
13373 
13374  // Clean up the data sent to the server
13375  xmlFree(send_buff.buff);
13376 
13377  if (error != NULL) {
13378  g_byte_array_free(xml_blob, TRUE);
13379  return error;
13380  }
13381 
13382  return _parse_top_level_ds3_complete_multipart_upload_result_response(client, request, response, xml_blob);
13383 }
13384 ds3_error* ds3_put_bucket_request(const ds3_client* client, const ds3_request* request) {
13385 
13386  if (request->path->size < 2) {
13387  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13388  }
13389 
13390  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13391 }
13392 ds3_error* ds3_put_multi_part_upload_part_request(const ds3_client* client, const ds3_request* request, void* user_data, size_t (*callback)(void*, size_t, size_t, void*)) {
13393 
13394  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13395  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13396  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13397  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13398  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13399  }
13400 
13401  return _internal_request_dispatcher(client, request, NULL, NULL, user_data, callback, NULL);
13402 }
13403 ds3_error* ds3_put_object_request(const ds3_client* client, const ds3_request* request, void* user_data, size_t (*callback)(void*, size_t, size_t, void*)) {
13404 
13405  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13406  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13407  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13408  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13409  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13410  }
13411 
13412  return _internal_request_dispatcher(client, request, NULL, NULL, user_data, callback, NULL);
13413 }
13415 
13416  if (request->path->size < 2) {
13417  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13418  }
13419 
13420  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13421 }
13423 
13424  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13425  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13426  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13427  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13428  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13429  }
13430 
13431  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13432 }
13434  ds3_error* error;
13435  ds3_xml_send_buff send_buff;
13436  GByteArray* xml_blob;
13437 
13438  if (request->path->size < 2) {
13439  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13440  }
13441 
13442  error = _init_request_payload(request, &send_buff, STRING_LIST);
13443  if (error != NULL) return error;
13444 
13445  xml_blob = g_byte_array_new();
13446  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
13447 
13448  // Clean up the data sent to the server
13449  xmlFree(send_buff.buff);
13450 
13451  if (error != NULL) {
13452  g_byte_array_free(xml_blob, TRUE);
13453  return error;
13454  }
13455 
13456  return _parse_top_level_ds3_delete_result_response(client, request, response, xml_blob);
13457 }
13459  ds3_error* error;
13460  GByteArray* xml_blob;
13461 
13462  if (request->path->size < 2) {
13463  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13464  }
13465 
13466  xml_blob = g_byte_array_new();
13467  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13468  if (error != NULL) {
13469  g_byte_array_free(xml_blob, TRUE);
13470  return error;
13471  }
13472 
13473  return _parse_top_level_ds3_list_bucket_result_response(client, request, response, xml_blob);
13474 }
13476  ds3_error* error;
13477  GByteArray* xml_blob;
13478 
13479 
13480 
13481  xml_blob = g_byte_array_new();
13482  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13483  if (error != NULL) {
13484  g_byte_array_free(xml_blob, TRUE);
13485  return error;
13486  }
13487 
13488  return _parse_top_level_ds3_list_all_my_buckets_result_response(client, request, response, xml_blob);
13489 }
13490 
13491 ds3_error* ds3_get_object_request(const ds3_client* client, const ds3_request* request, void* user_data, size_t (* callback)(void*, size_t, size_t, void*)) {
13492  ds3_error* error;
13493 
13494  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13495  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13496  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13497  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13498  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13499  }
13500 
13501  error = _internal_request_dispatcher(client, request, user_data, callback, NULL, NULL, NULL);
13502 
13503  return error;
13504 }
13505 
13506 ds3_error* ds3_get_object_with_metadata(const ds3_client* client, const ds3_request* request, void* user_data, size_t (* callback)(void*, size_t, size_t, void*), ds3_metadata** _metadata) {
13507  ds3_error* error;
13508  ds3_string_multimap* return_headers;
13509  ds3_metadata* metadata;
13510 
13511  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13512  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13513  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13514  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13515  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13516  }
13517 
13518  error = _internal_request_dispatcher(client, request, user_data, callback, NULL, NULL, &return_headers);
13519  if (error == NULL) {
13520  metadata = _init_metadata(return_headers);
13521  *_metadata = metadata;
13522  ds3_string_multimap_free(return_headers);
13523  }
13524 
13525  return error;
13526 }
13527 ds3_error* ds3_head_bucket_request(const ds3_client* client, const ds3_request* request) {
13528  if (client == NULL || request == NULL) {
13529  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "All arguments must be filled in for request processing");
13530  }
13531  if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13532  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13533  }
13534 
13535  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13536 }
13537 
13538 ds3_error* ds3_head_object_request(const ds3_client* client, const ds3_request* request, ds3_metadata** _metadata) {
13539  ds3_error* error;
13540  ds3_string_multimap* return_headers;
13541  ds3_metadata* metadata;
13542 
13543  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13544  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13545  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13546  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13547  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13548  }
13549 
13550  error = _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, &return_headers);
13551 
13552  if (error == NULL) {
13553  metadata = _init_metadata(return_headers);
13554  *_metadata = metadata;
13555  ds3_string_multimap_free(return_headers);
13556  }
13557 
13558  return error;
13559 }
13560 
13562  ds3_error* error;
13563  GByteArray* xml_blob;
13564 
13565  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13566  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13567  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13568  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13569  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13570  }
13571 
13572  xml_blob = g_byte_array_new();
13573  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13574  if (error != NULL) {
13575  g_byte_array_free(xml_blob, TRUE);
13576  return error;
13577  }
13578 
13579  return _parse_top_level_ds3_initiate_multipart_upload_result_response(client, request, response, xml_blob);
13580 }
13582  ds3_error* error;
13583  GByteArray* xml_blob;
13584 
13585  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13586  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13587  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13588  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13589  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13590  }
13591 
13592  xml_blob = g_byte_array_new();
13593  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13594  if (error != NULL) {
13595  g_byte_array_free(xml_blob, TRUE);
13596  return error;
13597  }
13598 
13599  return _parse_top_level_ds3_list_parts_result_response(client, request, response, xml_blob);
13600 }
13602  ds3_error* error;
13603  GByteArray* xml_blob;
13604 
13605  if (request->path->size < 2) {
13606  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13607  }
13608 
13609  xml_blob = g_byte_array_new();
13610  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13611  if (error != NULL) {
13612  g_byte_array_free(xml_blob, TRUE);
13613  return error;
13614  }
13615 
13616  return _parse_top_level_ds3_list_multi_part_uploads_result_response(client, request, response, xml_blob);
13617 }
13619  ds3_error* error;
13620  GByteArray* xml_blob;
13621 
13622  if (request->path->size < 2) {
13623  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13624  }
13625 
13626  xml_blob = g_byte_array_new();
13627  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13628  if (error != NULL) {
13629  g_byte_array_free(xml_blob, TRUE);
13630  return error;
13631  }
13632 
13633  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13634 }
13636  ds3_error* error;
13637  GByteArray* xml_blob;
13638 
13639  if (request->path->size < 2) {
13640  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13641  }
13642 
13643  xml_blob = g_byte_array_new();
13644  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13645  if (error != NULL) {
13646  g_byte_array_free(xml_blob, TRUE);
13647  return error;
13648  }
13649 
13650  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13651 }
13653  ds3_error* error;
13654  GByteArray* xml_blob;
13655 
13656  if (request->path->size < 2) {
13657  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13658  }
13659 
13660  xml_blob = g_byte_array_new();
13661  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13662  if (error != NULL) {
13663  g_byte_array_free(xml_blob, TRUE);
13664  return error;
13665  }
13666 
13667  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13668 }
13670  ds3_error* error;
13671  GByteArray* xml_blob;
13672 
13673  if (request->path->size < 2) {
13674  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13675  }
13676 
13677  xml_blob = g_byte_array_new();
13678  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13679  if (error != NULL) {
13680  g_byte_array_free(xml_blob, TRUE);
13681  return error;
13682  }
13683 
13684  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13685 }
13687  ds3_error* error;
13688  GByteArray* xml_blob;
13689 
13690  if (request->path->size < 2) {
13691  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13692  }
13693 
13694  xml_blob = g_byte_array_new();
13695  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13696  if (error != NULL) {
13697  g_byte_array_free(xml_blob, TRUE);
13698  return error;
13699  }
13700 
13701  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13702 }
13704  ds3_error* error;
13705  GByteArray* xml_blob;
13706 
13707  if (request->path->size < 2) {
13708  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13709  }
13710 
13711  xml_blob = g_byte_array_new();
13712  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13713  if (error != NULL) {
13714  g_byte_array_free(xml_blob, TRUE);
13715  return error;
13716  }
13717 
13718  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13719 }
13721  ds3_error* error;
13722  GByteArray* xml_blob;
13723 
13724  if (request->path->size < 2) {
13725  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13726  }
13727 
13728  xml_blob = g_byte_array_new();
13729  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13730  if (error != NULL) {
13731  g_byte_array_free(xml_blob, TRUE);
13732  return error;
13733  }
13734 
13735  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13736 }
13738  ds3_error* error;
13739  GByteArray* xml_blob;
13740 
13741  if (request->path->size < 2) {
13742  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13743  }
13744 
13745  xml_blob = g_byte_array_new();
13746  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13747  if (error != NULL) {
13748  g_byte_array_free(xml_blob, TRUE);
13749  return error;
13750  }
13751 
13752  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13753 }
13755 
13756  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13757  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13758  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13759  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13760  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13761  }
13762 
13763  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13764 }
13766 
13767  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13768  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13769  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13770  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13771  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13772  }
13773 
13774  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13775 }
13777  ds3_error* error;
13778  GByteArray* xml_blob;
13779 
13780  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13781  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13782  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13783  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13784  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13785  }
13786 
13787  xml_blob = g_byte_array_new();
13788  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13789  if (error != NULL) {
13790  g_byte_array_free(xml_blob, TRUE);
13791  return error;
13792  }
13793 
13794  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13795 }
13797  ds3_error* error;
13798  GByteArray* xml_blob;
13799  ds3_string_multimap* return_headers = NULL;
13800 
13801  if (request->path->size < 2) {
13802  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13803  }
13804 
13805  xml_blob = g_byte_array_new();
13806  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
13807  if (error != NULL) {
13808  ds3_string_multimap_free(return_headers);
13809  g_byte_array_free(xml_blob, TRUE);
13810  return error;
13811  }
13812 
13813  error = _parse_top_level_ds3_bucket_acl_list_response(client, request, response, xml_blob);
13814 
13815  (*response)->paging = _parse_paging_headers(return_headers);
13816  ds3_string_multimap_free(return_headers);
13817 
13818  return error;
13819 }
13821  ds3_error* error;
13822  GByteArray* xml_blob;
13823 
13824  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13825  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13826  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13827  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13828  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13829  }
13830 
13831  xml_blob = g_byte_array_new();
13832  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13833  if (error != NULL) {
13834  g_byte_array_free(xml_blob, TRUE);
13835  return error;
13836  }
13837 
13838  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13839 }
13841  ds3_error* error;
13842  GByteArray* xml_blob;
13843  ds3_string_multimap* return_headers = NULL;
13844 
13845  if (request->path->size < 2) {
13846  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13847  }
13848 
13849  xml_blob = g_byte_array_new();
13850  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
13851  if (error != NULL) {
13852  ds3_string_multimap_free(return_headers);
13853  g_byte_array_free(xml_blob, TRUE);
13854  return error;
13855  }
13856 
13857  error = _parse_top_level_ds3_data_policy_acl_list_response(client, request, response, xml_blob);
13858 
13859  (*response)->paging = _parse_paging_headers(return_headers);
13860  ds3_string_multimap_free(return_headers);
13861 
13862  return error;
13863 }
13865  ds3_error* error;
13866  GByteArray* xml_blob;
13867 
13868  if (request->path->size < 2) {
13869  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13870  }
13871 
13872  xml_blob = g_byte_array_new();
13873  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13874  if (error != NULL) {
13875  g_byte_array_free(xml_blob, TRUE);
13876  return error;
13877  }
13878 
13879  return _parse_top_level_ds3_bucket_response(client, request, response, xml_blob);
13880 }
13882 
13883  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13884  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13885  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13886  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13887  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13888  }
13889 
13890  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13891 }
13893  ds3_error* error;
13894  GByteArray* xml_blob;
13895 
13896  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13897  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13898  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13899  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13900  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13901  }
13902 
13903  xml_blob = g_byte_array_new();
13904  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13905  if (error != NULL) {
13906  g_byte_array_free(xml_blob, TRUE);
13907  return error;
13908  }
13909 
13910  return _parse_top_level_ds3_bucket_response(client, request, response, xml_blob);
13911 }
13913  ds3_error* error;
13914  GByteArray* xml_blob;
13915  ds3_string_multimap* return_headers = NULL;
13916 
13917  if (request->path->size < 2) {
13918  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13919  }
13920 
13921  xml_blob = g_byte_array_new();
13922  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
13923  if (error != NULL) {
13924  ds3_string_multimap_free(return_headers);
13925  g_byte_array_free(xml_blob, TRUE);
13926  return error;
13927  }
13928 
13929  error = _parse_top_level_ds3_bucket_list_response(client, request, response, xml_blob);
13930 
13931  (*response)->paging = _parse_paging_headers(return_headers);
13932  ds3_string_multimap_free(return_headers);
13933 
13934  return error;
13935 }
13937  ds3_error* error;
13938  GByteArray* xml_blob;
13939 
13940  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13941  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13942  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13943  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13944  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13945  }
13946 
13947  xml_blob = g_byte_array_new();
13948  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13949  if (error != NULL) {
13950  g_byte_array_free(xml_blob, TRUE);
13951  return error;
13952  }
13953 
13954  return _parse_top_level_ds3_bucket_response(client, request, response, xml_blob);
13955 }
13957 
13958  if (request->path->size < 2) {
13959  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13960  }
13961 
13962  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13963 }
13965  ds3_error* error;
13966  GByteArray* xml_blob;
13967 
13968  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13969  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13970  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13971  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13972  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13973  }
13974 
13975  xml_blob = g_byte_array_new();
13976  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13977  if (error != NULL) {
13978  g_byte_array_free(xml_blob, TRUE);
13979  return error;
13980  }
13981 
13982  return _parse_top_level_ds3_cache_filesystem_response(client, request, response, xml_blob);
13983 }
13985  ds3_error* error;
13986  GByteArray* xml_blob;
13987  ds3_string_multimap* return_headers = NULL;
13988 
13989  if (request->path->size < 2) {
13990  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13991  }
13992 
13993  xml_blob = g_byte_array_new();
13994  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
13995  if (error != NULL) {
13996  ds3_string_multimap_free(return_headers);
13997  g_byte_array_free(xml_blob, TRUE);
13998  return error;
13999  }
14000 
14001  error = _parse_top_level_ds3_cache_filesystem_list_response(client, request, response, xml_blob);
14002 
14003  (*response)->paging = _parse_paging_headers(return_headers);
14004  ds3_string_multimap_free(return_headers);
14005 
14006  return error;
14007 }
14009  ds3_error* error;
14010  GByteArray* xml_blob;
14011 
14012  if (request->path->size < 2) {
14013  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14014  }
14015 
14016  xml_blob = g_byte_array_new();
14017  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14018  if (error != NULL) {
14019  g_byte_array_free(xml_blob, TRUE);
14020  return error;
14021  }
14022 
14023  return _parse_top_level_ds3_cache_information_response(client, request, response, xml_blob);
14024 }
14026  ds3_error* error;
14027  GByteArray* xml_blob;
14028 
14029  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14030  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14031  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14032  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14033  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14034  }
14035 
14036  xml_blob = g_byte_array_new();
14037  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14038  if (error != NULL) {
14039  g_byte_array_free(xml_blob, TRUE);
14040  return error;
14041  }
14042 
14043  return _parse_top_level_ds3_cache_filesystem_response(client, request, response, xml_blob);
14044 }
14046  ds3_error* error;
14047  GByteArray* xml_blob;
14048 
14049 
14050 
14051  xml_blob = g_byte_array_new();
14052  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14053  if (error != NULL) {
14054  g_byte_array_free(xml_blob, TRUE);
14055  return error;
14056  }
14057 
14058  return _parse_top_level_ds3_capacity_summary_container_response(client, request, response, xml_blob);
14059 }
14061  ds3_error* error;
14062  GByteArray* xml_blob;
14063 
14064 
14065 
14066  xml_blob = g_byte_array_new();
14067  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14068  if (error != NULL) {
14069  g_byte_array_free(xml_blob, TRUE);
14070  return error;
14071  }
14072 
14073  return _parse_top_level_ds3_capacity_summary_container_response(client, request, response, xml_blob);
14074 }
14076  ds3_error* error;
14077  GByteArray* xml_blob;
14078 
14079 
14080 
14081  xml_blob = g_byte_array_new();
14082  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14083  if (error != NULL) {
14084  g_byte_array_free(xml_blob, TRUE);
14085  return error;
14086  }
14087 
14088  return _parse_top_level_ds3_capacity_summary_container_response(client, request, response, xml_blob);
14089 }
14091  ds3_error* error;
14092  GByteArray* xml_blob;
14093 
14094 
14095 
14096  xml_blob = g_byte_array_new();
14097  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14098  if (error != NULL) {
14099  g_byte_array_free(xml_blob, TRUE);
14100  return error;
14101  }
14102 
14103  return _parse_top_level_ds3_data_path_backend_response(client, request, response, xml_blob);
14104 }
14106  ds3_error* error;
14107  GByteArray* xml_blob;
14108 
14109  if (request->path->size < 2) {
14110  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14111  }
14112 
14113  xml_blob = g_byte_array_new();
14114  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14115  if (error != NULL) {
14116  g_byte_array_free(xml_blob, TRUE);
14117  return error;
14118  }
14119 
14120  return _parse_top_level_ds3_blob_store_tasks_information_response(client, request, response, xml_blob);
14121 }
14123  ds3_error* error;
14124  GByteArray* xml_blob;
14125 
14126 
14127 
14128  xml_blob = g_byte_array_new();
14129  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14130  if (error != NULL) {
14131  g_byte_array_free(xml_blob, TRUE);
14132  return error;
14133  }
14134 
14135  return _parse_top_level_ds3_data_path_backend_response(client, request, response, xml_blob);
14136 }
14138  ds3_error* error;
14139  GByteArray* xml_blob;
14140 
14141  if (request->path->size < 2) {
14142  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14143  }
14144 
14145  xml_blob = g_byte_array_new();
14146  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14147  if (error != NULL) {
14148  g_byte_array_free(xml_blob, TRUE);
14149  return error;
14150  }
14151 
14152  return _parse_top_level_ds3_azure_data_replication_rule_response(client, request, response, xml_blob);
14153 }
14155  ds3_error* error;
14156  GByteArray* xml_blob;
14157 
14158  if (request->path->size < 2) {
14159  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14160  }
14161 
14162  xml_blob = g_byte_array_new();
14163  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14164  if (error != NULL) {
14165  g_byte_array_free(xml_blob, TRUE);
14166  return error;
14167  }
14168 
14169  return _parse_top_level_ds3_data_persistence_rule_response(client, request, response, xml_blob);
14170 }
14172  ds3_error* error;
14173  GByteArray* xml_blob;
14174 
14175  if (request->path->size < 2) {
14176  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14177  }
14178 
14179  xml_blob = g_byte_array_new();
14180  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14181  if (error != NULL) {
14182  g_byte_array_free(xml_blob, TRUE);
14183  return error;
14184  }
14185 
14186  return _parse_top_level_ds3_data_policy_response(client, request, response, xml_blob);
14187 }
14189  ds3_error* error;
14190  GByteArray* xml_blob;
14191 
14192  if (request->path->size < 2) {
14193  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14194  }
14195 
14196  xml_blob = g_byte_array_new();
14197  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14198  if (error != NULL) {
14199  g_byte_array_free(xml_blob, TRUE);
14200  return error;
14201  }
14202 
14203  return _parse_top_level_ds3_data_replication_rule_response(client, request, response, xml_blob);
14204 }
14206  ds3_error* error;
14207  GByteArray* xml_blob;
14208 
14209  if (request->path->size < 2) {
14210  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14211  }
14212 
14213  xml_blob = g_byte_array_new();
14214  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14215  if (error != NULL) {
14216  g_byte_array_free(xml_blob, TRUE);
14217  return error;
14218  }
14219 
14220  return _parse_top_level_ds3_s3_data_replication_rule_response(client, request, response, xml_blob);
14221 }
14223 
14224  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14225  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14226  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14227  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14228  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14229  }
14230 
14231  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14232 }
14234 
14235  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14236  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14237  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14238  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14239  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14240  }
14241 
14242  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14243 }
14245 
14246  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14247  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14248  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14249  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14250  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14251  }
14252 
14253  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14254 }
14256 
14257  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14258  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14259  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14260  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14261  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14262  }
14263 
14264  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14265 }
14267 
14268  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14269  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14270  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14271  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14272  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14273  }
14274 
14275  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14276 }
14278  ds3_error* error;
14279  GByteArray* xml_blob;
14280 
14281  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14282  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14283  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14284  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14285  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14286  }
14287 
14288  xml_blob = g_byte_array_new();
14289  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14290  if (error != NULL) {
14291  g_byte_array_free(xml_blob, TRUE);
14292  return error;
14293  }
14294 
14295  return _parse_top_level_ds3_azure_data_replication_rule_response(client, request, response, xml_blob);
14296 }
14298  ds3_error* error;
14299  GByteArray* xml_blob;
14300  ds3_string_multimap* return_headers = NULL;
14301 
14302  if (request->path->size < 2) {
14303  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14304  }
14305 
14306  xml_blob = g_byte_array_new();
14307  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14308  if (error != NULL) {
14309  ds3_string_multimap_free(return_headers);
14310  g_byte_array_free(xml_blob, TRUE);
14311  return error;
14312  }
14313 
14314  error = _parse_top_level_ds3_azure_data_replication_rule_list_response(client, request, response, xml_blob);
14315 
14316  (*response)->paging = _parse_paging_headers(return_headers);
14317  ds3_string_multimap_free(return_headers);
14318 
14319  return error;
14320 }
14322  ds3_error* error;
14323  GByteArray* xml_blob;
14324 
14325  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14326  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14327  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14328  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14329  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14330  }
14331 
14332  xml_blob = g_byte_array_new();
14333  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14334  if (error != NULL) {
14335  g_byte_array_free(xml_blob, TRUE);
14336  return error;
14337  }
14338 
14339  return _parse_top_level_ds3_data_persistence_rule_response(client, request, response, xml_blob);
14340 }
14342  ds3_error* error;
14343  GByteArray* xml_blob;
14344  ds3_string_multimap* return_headers = NULL;
14345 
14346  if (request->path->size < 2) {
14347  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14348  }
14349 
14350  xml_blob = g_byte_array_new();
14351  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14352  if (error != NULL) {
14353  ds3_string_multimap_free(return_headers);
14354  g_byte_array_free(xml_blob, TRUE);
14355  return error;
14356  }
14357 
14358  error = _parse_top_level_ds3_data_persistence_rule_list_response(client, request, response, xml_blob);
14359 
14360  (*response)->paging = _parse_paging_headers(return_headers);
14361  ds3_string_multimap_free(return_headers);
14362 
14363  return error;
14364 }
14366  ds3_error* error;
14367  GByteArray* xml_blob;
14368  ds3_string_multimap* return_headers = NULL;
14369 
14370  if (request->path->size < 2) {
14371  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14372  }
14373 
14374  xml_blob = g_byte_array_new();
14375  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14376  if (error != NULL) {
14377  ds3_string_multimap_free(return_headers);
14378  g_byte_array_free(xml_blob, TRUE);
14379  return error;
14380  }
14381 
14382  error = _parse_top_level_ds3_data_policy_list_response(client, request, response, xml_blob);
14383 
14384  (*response)->paging = _parse_paging_headers(return_headers);
14385  ds3_string_multimap_free(return_headers);
14386 
14387  return error;
14388 }
14390  ds3_error* error;
14391  GByteArray* xml_blob;
14392 
14393  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14394  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14395  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14396  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14397  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14398  }
14399 
14400  xml_blob = g_byte_array_new();
14401  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14402  if (error != NULL) {
14403  g_byte_array_free(xml_blob, TRUE);
14404  return error;
14405  }
14406 
14407  return _parse_top_level_ds3_data_policy_response(client, request, response, xml_blob);
14408 }
14410  ds3_error* error;
14411  GByteArray* xml_blob;
14412 
14413  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14414  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14415  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14416  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14417  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14418  }
14419 
14420  xml_blob = g_byte_array_new();
14421  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14422  if (error != NULL) {
14423  g_byte_array_free(xml_blob, TRUE);
14424  return error;
14425  }
14426 
14427  return _parse_top_level_ds3_data_replication_rule_response(client, request, response, xml_blob);
14428 }
14430  ds3_error* error;
14431  GByteArray* xml_blob;
14432  ds3_string_multimap* return_headers = NULL;
14433 
14434  if (request->path->size < 2) {
14435  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14436  }
14437 
14438  xml_blob = g_byte_array_new();
14439  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14440  if (error != NULL) {
14441  ds3_string_multimap_free(return_headers);
14442  g_byte_array_free(xml_blob, TRUE);
14443  return error;
14444  }
14445 
14446  error = _parse_top_level_ds3_data_replication_rule_list_response(client, request, response, xml_blob);
14447 
14448  (*response)->paging = _parse_paging_headers(return_headers);
14449  ds3_string_multimap_free(return_headers);
14450 
14451  return error;
14452 }
14454  ds3_error* error;
14455  GByteArray* xml_blob;
14456 
14457  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14458  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14459  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14460  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14461  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14462  }
14463 
14464  xml_blob = g_byte_array_new();
14465  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14466  if (error != NULL) {
14467  g_byte_array_free(xml_blob, TRUE);
14468  return error;
14469  }
14470 
14471  return _parse_top_level_ds3_s3_data_replication_rule_response(client, request, response, xml_blob);
14472 }
14474  ds3_error* error;
14475  GByteArray* xml_blob;
14476  ds3_string_multimap* return_headers = NULL;
14477 
14478  if (request->path->size < 2) {
14479  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14480  }
14481 
14482  xml_blob = g_byte_array_new();
14483  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14484  if (error != NULL) {
14485  ds3_string_multimap_free(return_headers);
14486  g_byte_array_free(xml_blob, TRUE);
14487  return error;
14488  }
14489 
14490  error = _parse_top_level_ds3_s3_data_replication_rule_list_response(client, request, response, xml_blob);
14491 
14492  (*response)->paging = _parse_paging_headers(return_headers);
14493  ds3_string_multimap_free(return_headers);
14494 
14495  return error;
14496 }
14498  ds3_error* error;
14499  GByteArray* xml_blob;
14500 
14501  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14502  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14503  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14504  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14505  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14506  }
14507 
14508  xml_blob = g_byte_array_new();
14509  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14510  if (error != NULL) {
14511  g_byte_array_free(xml_blob, TRUE);
14512  return error;
14513  }
14514 
14515  return _parse_top_level_ds3_azure_data_replication_rule_response(client, request, response, xml_blob);
14516 }
14518  ds3_error* error;
14519  GByteArray* xml_blob;
14520 
14521  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14522  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14523  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14524  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14525  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14526  }
14527 
14528  xml_blob = g_byte_array_new();
14529  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14530  if (error != NULL) {
14531  g_byte_array_free(xml_blob, TRUE);
14532  return error;
14533  }
14534 
14535  return _parse_top_level_ds3_data_persistence_rule_response(client, request, response, xml_blob);
14536 }
14538  ds3_error* error;
14539  GByteArray* xml_blob;
14540 
14541  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14542  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14543  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14544  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14545  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14546  }
14547 
14548  xml_blob = g_byte_array_new();
14549  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14550  if (error != NULL) {
14551  g_byte_array_free(xml_blob, TRUE);
14552  return error;
14553  }
14554 
14555  return _parse_top_level_ds3_data_policy_response(client, request, response, xml_blob);
14556 }
14558  ds3_error* error;
14559  GByteArray* xml_blob;
14560 
14561  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14562  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14563  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14564  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14565  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14566  }
14567 
14568  xml_blob = g_byte_array_new();
14569  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14570  if (error != NULL) {
14571  g_byte_array_free(xml_blob, TRUE);
14572  return error;
14573  }
14574 
14575  return _parse_top_level_ds3_data_replication_rule_response(client, request, response, xml_blob);
14576 }
14578  ds3_error* error;
14579  GByteArray* xml_blob;
14580 
14581  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14582  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14583  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14584  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14585  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14586  }
14587 
14588  xml_blob = g_byte_array_new();
14589  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14590  if (error != NULL) {
14591  g_byte_array_free(xml_blob, TRUE);
14592  return error;
14593  }
14594 
14595  return _parse_top_level_ds3_s3_data_replication_rule_response(client, request, response, xml_blob);
14596 }
14598 
14599  if (request->path->size < 2) {
14600  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14601  }
14602 
14603  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14604 }
14606 
14607  if (request->path->size < 2) {
14608  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14609  }
14610 
14611  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14612 }
14614 
14615  if (request->path->size < 2) {
14616  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14617  }
14618 
14619  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14620 }
14622 
14623  if (request->path->size < 2) {
14624  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14625  }
14626 
14627  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14628 }
14630 
14631  if (request->path->size < 2) {
14632  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14633  }
14634 
14635  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14636 }
14638  ds3_error* error;
14639  GByteArray* xml_blob;
14640  ds3_string_multimap* return_headers = NULL;
14641 
14642  if (request->path->size < 2) {
14643  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14644  }
14645 
14646  xml_blob = g_byte_array_new();
14647  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14648  if (error != NULL) {
14649  ds3_string_multimap_free(return_headers);
14650  g_byte_array_free(xml_blob, TRUE);
14651  return error;
14652  }
14653 
14654  error = _parse_top_level_ds3_azure_data_replication_rule_list_response(client, request, response, xml_blob);
14655 
14656  (*response)->paging = _parse_paging_headers(return_headers);
14657  ds3_string_multimap_free(return_headers);
14658 
14659  return error;
14660 }
14662  ds3_error* error;
14663  GByteArray* xml_blob;
14664  ds3_string_multimap* return_headers = NULL;
14665 
14666  if (request->path->size < 2) {
14667  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14668  }
14669 
14670  xml_blob = g_byte_array_new();
14671  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14672  if (error != NULL) {
14673  ds3_string_multimap_free(return_headers);
14674  g_byte_array_free(xml_blob, TRUE);
14675  return error;
14676  }
14677 
14678  error = _parse_top_level_ds3_degraded_blob_list_response(client, request, response, xml_blob);
14679 
14680  (*response)->paging = _parse_paging_headers(return_headers);
14681  ds3_string_multimap_free(return_headers);
14682 
14683  return error;
14684 }
14686  ds3_error* error;
14687  GByteArray* xml_blob;
14688  ds3_string_multimap* return_headers = NULL;
14689 
14690  if (request->path->size < 2) {
14691  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14692  }
14693 
14694  xml_blob = g_byte_array_new();
14695  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14696  if (error != NULL) {
14697  ds3_string_multimap_free(return_headers);
14698  g_byte_array_free(xml_blob, TRUE);
14699  return error;
14700  }
14701 
14702  error = _parse_top_level_ds3_bucket_list_response(client, request, response, xml_blob);
14703 
14704  (*response)->paging = _parse_paging_headers(return_headers);
14705  ds3_string_multimap_free(return_headers);
14706 
14707  return error;
14708 }
14710  ds3_error* error;
14711  GByteArray* xml_blob;
14712  ds3_string_multimap* return_headers = NULL;
14713 
14714  if (request->path->size < 2) {
14715  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14716  }
14717 
14718  xml_blob = g_byte_array_new();
14719  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14720  if (error != NULL) {
14721  ds3_string_multimap_free(return_headers);
14722  g_byte_array_free(xml_blob, TRUE);
14723  return error;
14724  }
14725 
14726  error = _parse_top_level_ds3_data_persistence_rule_list_response(client, request, response, xml_blob);
14727 
14728  (*response)->paging = _parse_paging_headers(return_headers);
14729  ds3_string_multimap_free(return_headers);
14730 
14731  return error;
14732 }
14734  ds3_error* error;
14735  GByteArray* xml_blob;
14736  ds3_string_multimap* return_headers = NULL;
14737 
14738  if (request->path->size < 2) {
14739  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14740  }
14741 
14742  xml_blob = g_byte_array_new();
14743  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14744  if (error != NULL) {
14745  ds3_string_multimap_free(return_headers);
14746  g_byte_array_free(xml_blob, TRUE);
14747  return error;
14748  }
14749 
14750  error = _parse_top_level_ds3_data_replication_rule_list_response(client, request, response, xml_blob);
14751 
14752  (*response)->paging = _parse_paging_headers(return_headers);
14753  ds3_string_multimap_free(return_headers);
14754 
14755  return error;
14756 }
14758  ds3_error* error;
14759  GByteArray* xml_blob;
14760  ds3_string_multimap* return_headers = NULL;
14761 
14762  if (request->path->size < 2) {
14763  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14764  }
14765 
14766  xml_blob = g_byte_array_new();
14767  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14768  if (error != NULL) {
14769  ds3_string_multimap_free(return_headers);
14770  g_byte_array_free(xml_blob, TRUE);
14771  return error;
14772  }
14773 
14774  error = _parse_top_level_ds3_s3_data_replication_rule_list_response(client, request, response, xml_blob);
14775 
14776  (*response)->paging = _parse_paging_headers(return_headers);
14777  ds3_string_multimap_free(return_headers);
14778 
14779  return error;
14780 }
14782  ds3_error* error;
14783  GByteArray* xml_blob;
14784  ds3_string_multimap* return_headers = NULL;
14785 
14786  if (request->path->size < 2) {
14787  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14788  }
14789 
14790  xml_blob = g_byte_array_new();
14791  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14792  if (error != NULL) {
14793  ds3_string_multimap_free(return_headers);
14794  g_byte_array_free(xml_blob, TRUE);
14795  return error;
14796  }
14797 
14798  error = _parse_top_level_ds3_suspect_blob_azure_target_list_response(client, request, response, xml_blob);
14799 
14800  (*response)->paging = _parse_paging_headers(return_headers);
14801  ds3_string_multimap_free(return_headers);
14802 
14803  return error;
14804 }
14806  ds3_error* error;
14807  GByteArray* xml_blob;
14808  ds3_string_multimap* return_headers = NULL;
14809 
14810  if (request->path->size < 2) {
14811  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14812  }
14813 
14814  xml_blob = g_byte_array_new();
14815  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14816  if (error != NULL) {
14817  ds3_string_multimap_free(return_headers);
14818  g_byte_array_free(xml_blob, TRUE);
14819  return error;
14820  }
14821 
14822  error = _parse_top_level_ds3_suspect_blob_ds3_target_list_response(client, request, response, xml_blob);
14823 
14824  (*response)->paging = _parse_paging_headers(return_headers);
14825  ds3_string_multimap_free(return_headers);
14826 
14827  return error;
14828 }
14830  ds3_error* error;
14831  GByteArray* xml_blob;
14832  ds3_string_multimap* return_headers = NULL;
14833 
14834  if (request->path->size < 2) {
14835  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14836  }
14837 
14838  xml_blob = g_byte_array_new();
14839  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14840  if (error != NULL) {
14841  ds3_string_multimap_free(return_headers);
14842  g_byte_array_free(xml_blob, TRUE);
14843  return error;
14844  }
14845 
14846  error = _parse_top_level_ds3_suspect_blob_pool_list_response(client, request, response, xml_blob);
14847 
14848  (*response)->paging = _parse_paging_headers(return_headers);
14849  ds3_string_multimap_free(return_headers);
14850 
14851  return error;
14852 }
14854  ds3_error* error;
14855  GByteArray* xml_blob;
14856  ds3_string_multimap* return_headers = NULL;
14857 
14858  if (request->path->size < 2) {
14859  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14860  }
14861 
14862  xml_blob = g_byte_array_new();
14863  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14864  if (error != NULL) {
14865  ds3_string_multimap_free(return_headers);
14866  g_byte_array_free(xml_blob, TRUE);
14867  return error;
14868  }
14869 
14870  error = _parse_top_level_ds3_suspect_blob_s3_target_list_response(client, request, response, xml_blob);
14871 
14872  (*response)->paging = _parse_paging_headers(return_headers);
14873  ds3_string_multimap_free(return_headers);
14874 
14875  return error;
14876 }
14878  ds3_error* error;
14879  GByteArray* xml_blob;
14880  ds3_string_multimap* return_headers = NULL;
14881 
14882  if (request->path->size < 2) {
14883  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14884  }
14885 
14886  xml_blob = g_byte_array_new();
14887  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14888  if (error != NULL) {
14889  ds3_string_multimap_free(return_headers);
14890  g_byte_array_free(xml_blob, TRUE);
14891  return error;
14892  }
14893 
14894  error = _parse_top_level_ds3_suspect_blob_tape_list_response(client, request, response, xml_blob);
14895 
14896  (*response)->paging = _parse_paging_headers(return_headers);
14897  ds3_string_multimap_free(return_headers);
14898 
14899  return error;
14900 }
14902  ds3_error* error;
14903  GByteArray* xml_blob;
14904  ds3_string_multimap* return_headers = NULL;
14905 
14906  if (request->path->size < 2) {
14907  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14908  }
14909 
14910  xml_blob = g_byte_array_new();
14911  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14912  if (error != NULL) {
14913  ds3_string_multimap_free(return_headers);
14914  g_byte_array_free(xml_blob, TRUE);
14915  return error;
14916  }
14917 
14918  error = _parse_top_level_ds3_bucket_list_response(client, request, response, xml_blob);
14919 
14920  (*response)->paging = _parse_paging_headers(return_headers);
14921  ds3_string_multimap_free(return_headers);
14922 
14923  return error;
14924 }
14926  ds3_error* error;
14927  GByteArray* xml_blob;
14928  ds3_string_multimap* return_headers = NULL;
14929 
14930  if (request->path->size < 2) {
14931  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14932  }
14933 
14934  xml_blob = g_byte_array_new();
14935  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14936  if (error != NULL) {
14937  ds3_string_multimap_free(return_headers);
14938  g_byte_array_free(xml_blob, TRUE);
14939  return error;
14940  }
14941 
14942  error = _parse_top_level_ds3_s3_object_list_response(client, request, response, xml_blob);
14943 
14944  (*response)->paging = _parse_paging_headers(return_headers);
14945  ds3_string_multimap_free(return_headers);
14946 
14947  return error;
14948 }
14950  ds3_error* error;
14951  GByteArray* xml_blob;
14952 
14953  if (request->path->size < 2) {
14954  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14955  }
14956 
14957  xml_blob = g_byte_array_new();
14958  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14959  if (error != NULL) {
14960  g_byte_array_free(xml_blob, TRUE);
14961  return error;
14962  }
14963 
14964  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
14965 }
14967 
14968  if (request->path->size < 2) {
14969  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14970  }
14971 
14972  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14973 }
14975 
14976  if (request->path->size < 2) {
14977  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14978  }
14979 
14980  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14981 }
14983 
14984  if (request->path->size < 2) {
14985  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14986  }
14987 
14988  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14989 }
14991 
14992  if (request->path->size < 2) {
14993  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14994  }
14995 
14996  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14997 }
14999 
15000  if (request->path->size < 2) {
15001  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15002  }
15003 
15004  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15005 }
15007  ds3_error* error;
15008  GByteArray* xml_blob;
15009 
15010  if (request->path->size < 2) {
15011  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15012  }
15013 
15014  xml_blob = g_byte_array_new();
15015  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15016  if (error != NULL) {
15017  g_byte_array_free(xml_blob, TRUE);
15018  return error;
15019  }
15020 
15021  return _parse_top_level_ds3_group_member_response(client, request, response, xml_blob);
15022 }
15024  ds3_error* error;
15025  GByteArray* xml_blob;
15026 
15027  if (request->path->size < 2) {
15028  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15029  }
15030 
15031  xml_blob = g_byte_array_new();
15032  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15033  if (error != NULL) {
15034  g_byte_array_free(xml_blob, TRUE);
15035  return error;
15036  }
15037 
15038  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
15039 }
15041  ds3_error* error;
15042  GByteArray* xml_blob;
15043 
15044  if (request->path->size < 2) {
15045  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15046  }
15047 
15048  xml_blob = g_byte_array_new();
15049  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15050  if (error != NULL) {
15051  g_byte_array_free(xml_blob, TRUE);
15052  return error;
15053  }
15054 
15055  return _parse_top_level_ds3_group_member_response(client, request, response, xml_blob);
15056 }
15058 
15059  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15060  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15061  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15062  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15063  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15064  }
15065 
15066  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15067 }
15069 
15070  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15071  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15072  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15073  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15074  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15075  }
15076 
15077  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15078 }
15080  ds3_error* error;
15081  GByteArray* xml_blob;
15082 
15083  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15084  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15085  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15086  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15087  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15088  }
15089 
15090  xml_blob = g_byte_array_new();
15091  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15092  if (error != NULL) {
15093  g_byte_array_free(xml_blob, TRUE);
15094  return error;
15095  }
15096 
15097  return _parse_top_level_ds3_group_member_response(client, request, response, xml_blob);
15098 }
15100  ds3_error* error;
15101  GByteArray* xml_blob;
15102  ds3_string_multimap* return_headers = NULL;
15103 
15104  if (request->path->size < 2) {
15105  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15106  }
15107 
15108  xml_blob = g_byte_array_new();
15109  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15110  if (error != NULL) {
15111  ds3_string_multimap_free(return_headers);
15112  g_byte_array_free(xml_blob, TRUE);
15113  return error;
15114  }
15115 
15116  error = _parse_top_level_ds3_group_member_list_response(client, request, response, xml_blob);
15117 
15118  (*response)->paging = _parse_paging_headers(return_headers);
15119  ds3_string_multimap_free(return_headers);
15120 
15121  return error;
15122 }
15124  ds3_error* error;
15125  GByteArray* xml_blob;
15126 
15127  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15128  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15129  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15130  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15131  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15132  }
15133 
15134  xml_blob = g_byte_array_new();
15135  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15136  if (error != NULL) {
15137  g_byte_array_free(xml_blob, TRUE);
15138  return error;
15139  }
15140 
15141  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
15142 }
15144  ds3_error* error;
15145  GByteArray* xml_blob;
15146  ds3_string_multimap* return_headers = NULL;
15147 
15148  if (request->path->size < 2) {
15149  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15150  }
15151 
15152  xml_blob = g_byte_array_new();
15153  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15154  if (error != NULL) {
15155  ds3_string_multimap_free(return_headers);
15156  g_byte_array_free(xml_blob, TRUE);
15157  return error;
15158  }
15159 
15160  error = _parse_top_level_ds3_group_list_response(client, request, response, xml_blob);
15161 
15162  (*response)->paging = _parse_paging_headers(return_headers);
15163  ds3_string_multimap_free(return_headers);
15164 
15165  return error;
15166 }
15168  ds3_error* error;
15169  GByteArray* xml_blob;
15170 
15171  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15172  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15173  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15174  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15175  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15176  }
15177 
15178  xml_blob = g_byte_array_new();
15179  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15180  if (error != NULL) {
15181  g_byte_array_free(xml_blob, TRUE);
15182  return error;
15183  }
15184 
15185  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
15186 }
15188  ds3_error* error;
15189  GByteArray* xml_blob;
15190 
15191  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15192  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15193  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15194  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15195  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15196  }
15197 
15198  xml_blob = g_byte_array_new();
15199  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15200  if (error != NULL) {
15201  g_byte_array_free(xml_blob, TRUE);
15202  return error;
15203  }
15204 
15205  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
15206 }
15208  ds3_error* error;
15209  GByteArray* xml_blob;
15210 
15211  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15212  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15213  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15214  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15215  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15216  }
15217 
15218  xml_blob = g_byte_array_new();
15219  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15220  if (error != NULL) {
15221  g_byte_array_free(xml_blob, TRUE);
15222  return error;
15223  }
15224 
15225  return _parse_top_level_ds3_objects_response(client, request, response, xml_blob);
15226 }
15228 
15229  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15230  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15231  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15232  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15233  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15234  }
15235 
15236  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15237 }
15239 
15240  if (request->path->size < 2) {
15241  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15242  }
15243 
15244  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15245 }
15247 
15248  if (request->path->size < 2) {
15249  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15250  }
15251 
15252  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15253 }
15255 
15256  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15257  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15258  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15259  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15260  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15261  }
15262 
15263  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15264 }
15266 
15267  if (request->path->size < 2) {
15268  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15269  }
15270 
15271  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15272 }
15274 
15275  if (request->path->size < 2) {
15276  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15277  }
15278 
15279  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15280 }
15282  ds3_error* error;
15283  GByteArray* xml_blob;
15284 
15285  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15286  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15287  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15288  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15289  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15290  }
15291 
15292  xml_blob = g_byte_array_new();
15293  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15294  if (error != NULL) {
15295  g_byte_array_free(xml_blob, TRUE);
15296  return error;
15297  }
15298 
15299  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15300 }
15302  ds3_error* error;
15303  ds3_xml_send_buff send_buff;
15304  GByteArray* xml_blob;
15305 
15306  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15307  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15308  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15309  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15310  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15311  }
15312 
15313  error = _init_request_payload(request, &send_buff, BULK_GET);
15314  if (error != NULL) return error;
15315 
15316  xml_blob = g_byte_array_new();
15317  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15318 
15319  // Clean up the data sent to the server
15320  xmlFree(send_buff.buff);
15321 
15322  if (error != NULL) {
15323  g_byte_array_free(xml_blob, TRUE);
15324  return error;
15325  }
15326 
15327  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15328 }
15330  ds3_error* error;
15331  ds3_xml_send_buff send_buff;
15332  GByteArray* xml_blob;
15333 
15334  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15335  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15336  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15337  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15338  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15339  }
15340 
15341  error = _init_request_payload(request, &send_buff, BULK_PUT);
15342  if (error != NULL) return error;
15343 
15344  xml_blob = g_byte_array_new();
15345  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15346 
15347  // Clean up the data sent to the server
15348  xmlFree(send_buff.buff);
15349 
15350  if (error != NULL) {
15351  g_byte_array_free(xml_blob, TRUE);
15352  return error;
15353  }
15354 
15355  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15356 }
15358  ds3_error* error;
15359  ds3_xml_send_buff send_buff;
15360  GByteArray* xml_blob;
15361 
15362  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15363  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15364  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15365  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15366  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15367  }
15368 
15369  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
15370  if (error != NULL) return error;
15371 
15372  xml_blob = g_byte_array_new();
15373  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15374 
15375  // Clean up the data sent to the server
15376  xmlFree(send_buff.buff);
15377 
15378  if (error != NULL) {
15379  g_byte_array_free(xml_blob, TRUE);
15380  return error;
15381  }
15382 
15383  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15384 }
15386  ds3_error* error;
15387  GByteArray* xml_blob;
15388 
15389  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15390  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15391  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15392  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15393  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15394  }
15395 
15396  xml_blob = g_byte_array_new();
15397  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15398  if (error != NULL) {
15399  g_byte_array_free(xml_blob, TRUE);
15400  return error;
15401  }
15402 
15403  return _parse_top_level_ds3_active_job_response(client, request, response, xml_blob);
15404 }
15406  ds3_error* error;
15407  GByteArray* xml_blob;
15408  ds3_string_multimap* return_headers = NULL;
15409 
15410  if (request->path->size < 2) {
15411  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15412  }
15413 
15414  xml_blob = g_byte_array_new();
15415  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15416  if (error != NULL) {
15417  ds3_string_multimap_free(return_headers);
15418  g_byte_array_free(xml_blob, TRUE);
15419  return error;
15420  }
15421 
15422  error = _parse_top_level_ds3_active_job_list_response(client, request, response, xml_blob);
15423 
15424  (*response)->paging = _parse_paging_headers(return_headers);
15425  ds3_string_multimap_free(return_headers);
15426 
15427  return error;
15428 }
15430  ds3_error* error;
15431  GByteArray* xml_blob;
15432 
15433  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15434  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15435  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15436  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15437  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15438  }
15439 
15440  xml_blob = g_byte_array_new();
15441  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15442  if (error != NULL) {
15443  g_byte_array_free(xml_blob, TRUE);
15444  return error;
15445  }
15446 
15447  return _parse_top_level_ds3_canceled_job_response(client, request, response, xml_blob);
15448 }
15450  ds3_error* error;
15451  GByteArray* xml_blob;
15452  ds3_string_multimap* return_headers = NULL;
15453 
15454  if (request->path->size < 2) {
15455  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15456  }
15457 
15458  xml_blob = g_byte_array_new();
15459  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15460  if (error != NULL) {
15461  ds3_string_multimap_free(return_headers);
15462  g_byte_array_free(xml_blob, TRUE);
15463  return error;
15464  }
15465 
15466  error = _parse_top_level_ds3_canceled_job_list_response(client, request, response, xml_blob);
15467 
15468  (*response)->paging = _parse_paging_headers(return_headers);
15469  ds3_string_multimap_free(return_headers);
15470 
15471  return error;
15472 }
15474  ds3_error* error;
15475  GByteArray* xml_blob;
15476 
15477  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15478  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15479  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15480  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15481  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15482  }
15483 
15484  xml_blob = g_byte_array_new();
15485  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15486  if (error != NULL) {
15487  g_byte_array_free(xml_blob, TRUE);
15488  return error;
15489  }
15490 
15491  return _parse_top_level_ds3_completed_job_response(client, request, response, xml_blob);
15492 }
15494  ds3_error* error;
15495  GByteArray* xml_blob;
15496  ds3_string_multimap* return_headers = NULL;
15497 
15498  if (request->path->size < 2) {
15499  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15500  }
15501 
15502  xml_blob = g_byte_array_new();
15503  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15504  if (error != NULL) {
15505  ds3_string_multimap_free(return_headers);
15506  g_byte_array_free(xml_blob, TRUE);
15507  return error;
15508  }
15509 
15510  error = _parse_top_level_ds3_completed_job_list_response(client, request, response, xml_blob);
15511 
15512  (*response)->paging = _parse_paging_headers(return_headers);
15513  ds3_string_multimap_free(return_headers);
15514 
15515  return error;
15516 }
15518  ds3_error* error;
15519  GByteArray* xml_blob;
15520 
15521  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15522  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15523  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15524  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15525  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15526  }
15527 
15528  xml_blob = g_byte_array_new();
15529  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15530  if (error != NULL) {
15531  g_byte_array_free(xml_blob, TRUE);
15532  return error;
15533  }
15534 
15535  return _parse_top_level_ds3_job_chunk_response(client, request, response, xml_blob);
15536 }
15538  ds3_error* error;
15539  GByteArray* xml_blob;
15540 
15541  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15542  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15543  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15544  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15545  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15546  }
15547 
15548  xml_blob = g_byte_array_new();
15549  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15550  if (error != NULL) {
15551  g_byte_array_free(xml_blob, TRUE);
15552  return error;
15553  }
15554 
15555  return _parse_top_level_ds3_objects_response(client, request, response, xml_blob);
15556 }
15558  ds3_error* error;
15559  GByteArray* xml_blob;
15560 
15561  if (request->path->size < 2) {
15562  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15563  }
15564 
15565  xml_blob = g_byte_array_new();
15566  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15567  if (error != NULL) {
15568  g_byte_array_free(xml_blob, TRUE);
15569  return error;
15570  }
15571 
15572  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15573 }
15575  ds3_error* error;
15576  GByteArray* xml_blob;
15577 
15578  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15579  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15580  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15581  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15582  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15583  }
15584 
15585  xml_blob = g_byte_array_new();
15586  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15587  if (error != NULL) {
15588  g_byte_array_free(xml_blob, TRUE);
15589  return error;
15590  }
15591 
15592  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15593 }
15595  ds3_error* error;
15596  GByteArray* xml_blob;
15597  ds3_str* _response;
15598 
15599  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15600  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15601  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15602  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15603  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15604  }
15605 
15606  xml_blob = g_byte_array_new();
15607  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15608  if (error != NULL) {
15609  g_byte_array_free(xml_blob, TRUE);
15610  return error;
15611  }
15612 
15613  _response = ds3_str_init_with_size((char*)xml_blob->data, xml_blob->len);
15614  g_byte_array_free(xml_blob, TRUE);
15615 
15616  *response = _response;
15617  return error;
15618 }
15620  ds3_error* error;
15621  GByteArray* xml_blob;
15622 
15623  if (request->path->size < 2) {
15624  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15625  }
15626 
15627  xml_blob = g_byte_array_new();
15628  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15629  if (error != NULL) {
15630  g_byte_array_free(xml_blob, TRUE);
15631  return error;
15632  }
15633 
15634  return _parse_top_level_ds3_job_list_response(client, request, response, xml_blob);
15635 }
15637  ds3_error* error;
15638  GByteArray* xml_blob;
15639 
15640  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15641  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15642  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15643  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15644  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15645  }
15646 
15647  xml_blob = g_byte_array_new();
15648  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15649  if (error != NULL) {
15650  g_byte_array_free(xml_blob, TRUE);
15651  return error;
15652  }
15653 
15654  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15655 }
15657  ds3_error* error;
15658  GByteArray* xml_blob;
15659 
15660  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15661  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15662  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15663  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15664  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15665  }
15666 
15667  xml_blob = g_byte_array_new();
15668  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15669  if (error != NULL) {
15670  g_byte_array_free(xml_blob, TRUE);
15671  return error;
15672  }
15673 
15674  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15675 }
15677  ds3_error* error;
15678  ds3_xml_send_buff send_buff;
15679  GByteArray* xml_blob;
15680 
15681  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15682  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15683  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15684  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15685  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15686  }
15687 
15688  error = _init_request_payload(request, &send_buff, STRING);
15689  if (error != NULL) return error;
15690 
15691  xml_blob = g_byte_array_new();
15692  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15693 
15694  // Clean up the data sent to the server
15695  xmlFree(send_buff.buff);
15696 
15697  if (error != NULL) {
15698  g_byte_array_free(xml_blob, TRUE);
15699  return error;
15700  }
15701 
15702  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15703 }
15705 
15706  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15707  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15708  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15709  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15710  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15711  }
15712 
15713  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15714 }
15716 
15717  if (request->path->size < 2) {
15718  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15719  }
15720 
15721  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15722 }
15724 
15725  if (request->path->size < 2) {
15726  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15727  }
15728 
15729  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15730 }
15732 
15733  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15734  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15735  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15736  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15737  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15738  }
15739 
15740  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15741 }
15743 
15744  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15745  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15746  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15747  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15748  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15749  }
15750 
15751  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15752 }
15754  ds3_error* error;
15755  GByteArray* xml_blob;
15756 
15757  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15758  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15759  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15760  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15761  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15762  }
15763 
15764  xml_blob = g_byte_array_new();
15765  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15766  if (error != NULL) {
15767  g_byte_array_free(xml_blob, TRUE);
15768  return error;
15769  }
15770 
15771  return _parse_top_level_ds3_node_response(client, request, response, xml_blob);
15772 }
15774  ds3_error* error;
15775  GByteArray* xml_blob;
15776  ds3_string_multimap* return_headers = NULL;
15777 
15778  if (request->path->size < 2) {
15779  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15780  }
15781 
15782  xml_blob = g_byte_array_new();
15783  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15784  if (error != NULL) {
15785  ds3_string_multimap_free(return_headers);
15786  g_byte_array_free(xml_blob, TRUE);
15787  return error;
15788  }
15789 
15790  error = _parse_top_level_ds3_node_list_response(client, request, response, xml_blob);
15791 
15792  (*response)->paging = _parse_paging_headers(return_headers);
15793  ds3_string_multimap_free(return_headers);
15794 
15795  return error;
15796 }
15798  ds3_error* error;
15799  GByteArray* xml_blob;
15800 
15801  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15802  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15803  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15804  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15805  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15806  }
15807 
15808  xml_blob = g_byte_array_new();
15809  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15810  if (error != NULL) {
15811  g_byte_array_free(xml_blob, TRUE);
15812  return error;
15813  }
15814 
15815  return _parse_top_level_ds3_node_response(client, request, response, xml_blob);
15816 }
15818  ds3_error* error;
15819  GByteArray* xml_blob;
15820 
15821  if (request->path->size < 2) {
15822  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15823  }
15824 
15825  xml_blob = g_byte_array_new();
15826  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15827  if (error != NULL) {
15828  g_byte_array_free(xml_blob, TRUE);
15829  return error;
15830  }
15831 
15832  return _parse_top_level_ds3_azure_target_failure_notification_registration_response(client, request, response, xml_blob);
15833 }
15835  ds3_error* error;
15836  GByteArray* xml_blob;
15837 
15838  if (request->path->size < 2) {
15839  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15840  }
15841 
15842  xml_blob = g_byte_array_new();
15843  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15844  if (error != NULL) {
15845  g_byte_array_free(xml_blob, TRUE);
15846  return error;
15847  }
15848 
15849  return _parse_top_level_ds3_target_failure_notification_registration_response(client, request, response, xml_blob);
15850 }
15852  ds3_error* error;
15853  GByteArray* xml_blob;
15854 
15855  if (request->path->size < 2) {
15856  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15857  }
15858 
15859  xml_blob = g_byte_array_new();
15860  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15861  if (error != NULL) {
15862  g_byte_array_free(xml_blob, TRUE);
15863  return error;
15864  }
15865 
15866  return _parse_top_level_ds3_job_completed_notification_registration_response(client, request, response, xml_blob);
15867 }
15869  ds3_error* error;
15870  GByteArray* xml_blob;
15871 
15872  if (request->path->size < 2) {
15873  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15874  }
15875 
15876  xml_blob = g_byte_array_new();
15877  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15878  if (error != NULL) {
15879  g_byte_array_free(xml_blob, TRUE);
15880  return error;
15881  }
15882 
15883  return _parse_top_level_ds3_job_created_notification_registration_response(client, request, response, xml_blob);
15884 }
15886  ds3_error* error;
15887  GByteArray* xml_blob;
15888 
15889  if (request->path->size < 2) {
15890  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15891  }
15892 
15893  xml_blob = g_byte_array_new();
15894  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15895  if (error != NULL) {
15896  g_byte_array_free(xml_blob, TRUE);
15897  return error;
15898  }
15899 
15900  return _parse_top_level_ds3_job_creation_failed_notification_registration_response(client, request, response, xml_blob);
15901 }
15903  ds3_error* error;
15904  GByteArray* xml_blob;
15905 
15906  if (request->path->size < 2) {
15907  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15908  }
15909 
15910  xml_blob = g_byte_array_new();
15911  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15912  if (error != NULL) {
15913  g_byte_array_free(xml_blob, TRUE);
15914  return error;
15915  }
15916 
15917  return _parse_top_level_ds3_s3_object_cached_notification_registration_response(client, request, response, xml_blob);
15918 }
15920  ds3_error* error;
15921  GByteArray* xml_blob;
15922 
15923  if (request->path->size < 2) {
15924  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15925  }
15926 
15927  xml_blob = g_byte_array_new();
15928  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15929  if (error != NULL) {
15930  g_byte_array_free(xml_blob, TRUE);
15931  return error;
15932  }
15933 
15934  return _parse_top_level_ds3_s3_object_lost_notification_registration_response(client, request, response, xml_blob);
15935 }
15937  ds3_error* error;
15938  GByteArray* xml_blob;
15939 
15940  if (request->path->size < 2) {
15941  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15942  }
15943 
15944  xml_blob = g_byte_array_new();
15945  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15946  if (error != NULL) {
15947  g_byte_array_free(xml_blob, TRUE);
15948  return error;
15949  }
15950 
15951  return _parse_top_level_ds3_s3_object_persisted_notification_registration_response(client, request, response, xml_blob);
15952 }
15954  ds3_error* error;
15955  GByteArray* xml_blob;
15956 
15957  if (request->path->size < 2) {
15958  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15959  }
15960 
15961  xml_blob = g_byte_array_new();
15962  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15963  if (error != NULL) {
15964  g_byte_array_free(xml_blob, TRUE);
15965  return error;
15966  }
15967 
15968  return _parse_top_level_ds3_pool_failure_notification_registration_response(client, request, response, xml_blob);
15969 }
15971  ds3_error* error;
15972  GByteArray* xml_blob;
15973 
15974  if (request->path->size < 2) {
15975  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15976  }
15977 
15978  xml_blob = g_byte_array_new();
15979  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15980  if (error != NULL) {
15981  g_byte_array_free(xml_blob, TRUE);
15982  return error;
15983  }
15984 
15985  return _parse_top_level_ds3_s3_target_failure_notification_registration_response(client, request, response, xml_blob);
15986 }
15988  ds3_error* error;
15989  GByteArray* xml_blob;
15990 
15991  if (request->path->size < 2) {
15992  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15993  }
15994 
15995  xml_blob = g_byte_array_new();
15996  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15997  if (error != NULL) {
15998  g_byte_array_free(xml_blob, TRUE);
15999  return error;
16000  }
16001 
16002  return _parse_top_level_ds3_storage_domain_failure_notification_registration_response(client, request, response, xml_blob);
16003 }
16005  ds3_error* error;
16006  GByteArray* xml_blob;
16007 
16008  if (request->path->size < 2) {
16009  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16010  }
16011 
16012  xml_blob = g_byte_array_new();
16013  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16014  if (error != NULL) {
16015  g_byte_array_free(xml_blob, TRUE);
16016  return error;
16017  }
16018 
16019  return _parse_top_level_ds3_system_failure_notification_registration_response(client, request, response, xml_blob);
16020 }
16022  ds3_error* error;
16023  GByteArray* xml_blob;
16024 
16025  if (request->path->size < 2) {
16026  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16027  }
16028 
16029  xml_blob = g_byte_array_new();
16030  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16031  if (error != NULL) {
16032  g_byte_array_free(xml_blob, TRUE);
16033  return error;
16034  }
16035 
16036  return _parse_top_level_ds3_tape_failure_notification_registration_response(client, request, response, xml_blob);
16037 }
16039  ds3_error* error;
16040  GByteArray* xml_blob;
16041 
16042  if (request->path->size < 2) {
16043  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16044  }
16045 
16046  xml_blob = g_byte_array_new();
16047  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16048  if (error != NULL) {
16049  g_byte_array_free(xml_blob, TRUE);
16050  return error;
16051  }
16052 
16053  return _parse_top_level_ds3_tape_partition_failure_notification_registration_response(client, request, response, xml_blob);
16054 }
16056 
16057  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16058  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16059  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16060  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16061  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16062  }
16063 
16064  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16065 }
16067 
16068  if (request->path->size < 2) {
16069  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16070  }
16071 
16072  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16073 }
16075 
16076  if (request->path->size < 2) {
16077  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16078  }
16079 
16080  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16081 }
16083 
16084  if (request->path->size < 2) {
16085  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16086  }
16087 
16088  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16089 }
16091 
16092  if (request->path->size < 2) {
16093  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16094  }
16095 
16096  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16097 }
16099 
16100  if (request->path->size < 2) {
16101  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16102  }
16103 
16104  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16105 }
16107 
16108  if (request->path->size < 2) {
16109  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16110  }
16111 
16112  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16113 }
16115 
16116  if (request->path->size < 2) {
16117  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16118  }
16119 
16120  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16121 }
16123 
16124  if (request->path->size < 2) {
16125  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16126  }
16127 
16128  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16129 }
16131 
16132  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16133  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16134  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16135  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16136  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16137  }
16138 
16139  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16140 }
16142 
16143  if (request->path->size < 2) {
16144  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16145  }
16146 
16147  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16148 }
16150 
16151  if (request->path->size < 2) {
16152  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16153  }
16154 
16155  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16156 }
16158 
16159  if (request->path->size < 2) {
16160  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16161  }
16162 
16163  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16164 }
16166 
16167  if (request->path->size < 2) {
16168  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16169  }
16170 
16171  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16172 }
16174  ds3_error* error;
16175  GByteArray* xml_blob;
16176 
16177  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16178  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16179  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16180  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16181  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16182  }
16183 
16184  xml_blob = g_byte_array_new();
16185  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16186  if (error != NULL) {
16187  g_byte_array_free(xml_blob, TRUE);
16188  return error;
16189  }
16190 
16191  return _parse_top_level_ds3_azure_target_failure_notification_registration_response(client, request, response, xml_blob);
16192 }
16194  ds3_error* error;
16195  GByteArray* xml_blob;
16196  ds3_string_multimap* return_headers = NULL;
16197 
16198  if (request->path->size < 2) {
16199  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16200  }
16201 
16202  xml_blob = g_byte_array_new();
16203  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16204  if (error != NULL) {
16205  ds3_string_multimap_free(return_headers);
16206  g_byte_array_free(xml_blob, TRUE);
16207  return error;
16208  }
16209 
16210  error = _parse_top_level_ds3_azure_target_failure_notification_registration_list_response(client, request, response, xml_blob);
16211 
16212  (*response)->paging = _parse_paging_headers(return_headers);
16213  ds3_string_multimap_free(return_headers);
16214 
16215  return error;
16216 }
16218  ds3_error* error;
16219  GByteArray* xml_blob;
16220 
16221  if (request->path->size < 2) {
16222  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16223  }
16224 
16225  xml_blob = g_byte_array_new();
16226  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16227  if (error != NULL) {
16228  g_byte_array_free(xml_blob, TRUE);
16229  return error;
16230  }
16231 
16232  return _parse_top_level_ds3_target_failure_notification_registration_response(client, request, response, xml_blob);
16233 }
16235  ds3_error* error;
16236  GByteArray* xml_blob;
16237  ds3_string_multimap* return_headers = NULL;
16238 
16239  if (request->path->size < 2) {
16240  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16241  }
16242 
16243  xml_blob = g_byte_array_new();
16244  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16245  if (error != NULL) {
16246  ds3_string_multimap_free(return_headers);
16247  g_byte_array_free(xml_blob, TRUE);
16248  return error;
16249  }
16250 
16251  error = _parse_top_level_ds3_target_failure_notification_registration_list_response(client, request, response, xml_blob);
16252 
16253  (*response)->paging = _parse_paging_headers(return_headers);
16254  ds3_string_multimap_free(return_headers);
16255 
16256  return error;
16257 }
16259  ds3_error* error;
16260  GByteArray* xml_blob;
16261 
16262  if (request->path->size < 2) {
16263  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16264  }
16265 
16266  xml_blob = g_byte_array_new();
16267  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16268  if (error != NULL) {
16269  g_byte_array_free(xml_blob, TRUE);
16270  return error;
16271  }
16272 
16273  return _parse_top_level_ds3_job_completed_notification_registration_response(client, request, response, xml_blob);
16274 }
16276  ds3_error* error;
16277  GByteArray* xml_blob;
16278  ds3_string_multimap* return_headers = NULL;
16279 
16280  if (request->path->size < 2) {
16281  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16282  }
16283 
16284  xml_blob = g_byte_array_new();
16285  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16286  if (error != NULL) {
16287  ds3_string_multimap_free(return_headers);
16288  g_byte_array_free(xml_blob, TRUE);
16289  return error;
16290  }
16291 
16292  error = _parse_top_level_ds3_job_completed_notification_registration_list_response(client, request, response, xml_blob);
16293 
16294  (*response)->paging = _parse_paging_headers(return_headers);
16295  ds3_string_multimap_free(return_headers);
16296 
16297  return error;
16298 }
16300  ds3_error* error;
16301  GByteArray* xml_blob;
16302 
16303  if (request->path->size < 2) {
16304  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16305  }
16306 
16307  xml_blob = g_byte_array_new();
16308  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16309  if (error != NULL) {
16310  g_byte_array_free(xml_blob, TRUE);
16311  return error;
16312  }
16313 
16314  return _parse_top_level_ds3_job_created_notification_registration_response(client, request, response, xml_blob);
16315 }
16317  ds3_error* error;
16318  GByteArray* xml_blob;
16319  ds3_string_multimap* return_headers = NULL;
16320 
16321  if (request->path->size < 2) {
16322  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16323  }
16324 
16325  xml_blob = g_byte_array_new();
16326  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16327  if (error != NULL) {
16328  ds3_string_multimap_free(return_headers);
16329  g_byte_array_free(xml_blob, TRUE);
16330  return error;
16331  }
16332 
16333  error = _parse_top_level_ds3_job_created_notification_registration_list_response(client, request, response, xml_blob);
16334 
16335  (*response)->paging = _parse_paging_headers(return_headers);
16336  ds3_string_multimap_free(return_headers);
16337 
16338  return error;
16339 }
16341  ds3_error* error;
16342  GByteArray* xml_blob;
16343 
16344  if (request->path->size < 2) {
16345  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16346  }
16347 
16348  xml_blob = g_byte_array_new();
16349  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16350  if (error != NULL) {
16351  g_byte_array_free(xml_blob, TRUE);
16352  return error;
16353  }
16354 
16355  return _parse_top_level_ds3_job_creation_failed_notification_registration_response(client, request, response, xml_blob);
16356 }
16358  ds3_error* error;
16359  GByteArray* xml_blob;
16360  ds3_string_multimap* return_headers = NULL;
16361 
16362  if (request->path->size < 2) {
16363  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16364  }
16365 
16366  xml_blob = g_byte_array_new();
16367  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16368  if (error != NULL) {
16369  ds3_string_multimap_free(return_headers);
16370  g_byte_array_free(xml_blob, TRUE);
16371  return error;
16372  }
16373 
16374  error = _parse_top_level_ds3_job_creation_failed_notification_registration_list_response(client, request, response, xml_blob);
16375 
16376  (*response)->paging = _parse_paging_headers(return_headers);
16377  ds3_string_multimap_free(return_headers);
16378 
16379  return error;
16380 }
16382  ds3_error* error;
16383  GByteArray* xml_blob;
16384 
16385  if (request->path->size < 2) {
16386  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16387  }
16388 
16389  xml_blob = g_byte_array_new();
16390  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16391  if (error != NULL) {
16392  g_byte_array_free(xml_blob, TRUE);
16393  return error;
16394  }
16395 
16396  return _parse_top_level_ds3_s3_object_cached_notification_registration_response(client, request, response, xml_blob);
16397 }
16399  ds3_error* error;
16400  GByteArray* xml_blob;
16401  ds3_string_multimap* return_headers = NULL;
16402 
16403  if (request->path->size < 2) {
16404  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16405  }
16406 
16407  xml_blob = g_byte_array_new();
16408  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16409  if (error != NULL) {
16410  ds3_string_multimap_free(return_headers);
16411  g_byte_array_free(xml_blob, TRUE);
16412  return error;
16413  }
16414 
16415  error = _parse_top_level_ds3_s3_object_cached_notification_registration_list_response(client, request, response, xml_blob);
16416 
16417  (*response)->paging = _parse_paging_headers(return_headers);
16418  ds3_string_multimap_free(return_headers);
16419 
16420  return error;
16421 }
16423  ds3_error* error;
16424  GByteArray* xml_blob;
16425 
16426  if (request->path->size < 2) {
16427  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16428  }
16429 
16430  xml_blob = g_byte_array_new();
16431  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16432  if (error != NULL) {
16433  g_byte_array_free(xml_blob, TRUE);
16434  return error;
16435  }
16436 
16437  return _parse_top_level_ds3_s3_object_lost_notification_registration_response(client, request, response, xml_blob);
16438 }
16440  ds3_error* error;
16441  GByteArray* xml_blob;
16442  ds3_string_multimap* return_headers = NULL;
16443 
16444  if (request->path->size < 2) {
16445  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16446  }
16447 
16448  xml_blob = g_byte_array_new();
16449  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16450  if (error != NULL) {
16451  ds3_string_multimap_free(return_headers);
16452  g_byte_array_free(xml_blob, TRUE);
16453  return error;
16454  }
16455 
16456  error = _parse_top_level_ds3_s3_object_lost_notification_registration_list_response(client, request, response, xml_blob);
16457 
16458  (*response)->paging = _parse_paging_headers(return_headers);
16459  ds3_string_multimap_free(return_headers);
16460 
16461  return error;
16462 }
16464  ds3_error* error;
16465  GByteArray* xml_blob;
16466 
16467  if (request->path->size < 2) {
16468  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16469  }
16470 
16471  xml_blob = g_byte_array_new();
16472  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16473  if (error != NULL) {
16474  g_byte_array_free(xml_blob, TRUE);
16475  return error;
16476  }
16477 
16478  return _parse_top_level_ds3_s3_object_persisted_notification_registration_response(client, request, response, xml_blob);
16479 }
16481  ds3_error* error;
16482  GByteArray* xml_blob;
16483  ds3_string_multimap* return_headers = NULL;
16484 
16485  if (request->path->size < 2) {
16486  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16487  }
16488 
16489  xml_blob = g_byte_array_new();
16490  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16491  if (error != NULL) {
16492  ds3_string_multimap_free(return_headers);
16493  g_byte_array_free(xml_blob, TRUE);
16494  return error;
16495  }
16496 
16497  error = _parse_top_level_ds3_s3_object_persisted_notification_registration_list_response(client, request, response, xml_blob);
16498 
16499  (*response)->paging = _parse_paging_headers(return_headers);
16500  ds3_string_multimap_free(return_headers);
16501 
16502  return error;
16503 }
16505  ds3_error* error;
16506  GByteArray* xml_blob;
16507 
16508  if (request->path->size < 2) {
16509  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16510  }
16511 
16512  xml_blob = g_byte_array_new();
16513  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16514  if (error != NULL) {
16515  g_byte_array_free(xml_blob, TRUE);
16516  return error;
16517  }
16518 
16519  return _parse_top_level_ds3_pool_failure_notification_registration_response(client, request, response, xml_blob);
16520 }
16522  ds3_error* error;
16523  GByteArray* xml_blob;
16524  ds3_string_multimap* return_headers = NULL;
16525 
16526  if (request->path->size < 2) {
16527  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16528  }
16529 
16530  xml_blob = g_byte_array_new();
16531  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16532  if (error != NULL) {
16533  ds3_string_multimap_free(return_headers);
16534  g_byte_array_free(xml_blob, TRUE);
16535  return error;
16536  }
16537 
16538  error = _parse_top_level_ds3_pool_failure_notification_registration_list_response(client, request, response, xml_blob);
16539 
16540  (*response)->paging = _parse_paging_headers(return_headers);
16541  ds3_string_multimap_free(return_headers);
16542 
16543  return error;
16544 }
16546  ds3_error* error;
16547  GByteArray* xml_blob;
16548 
16549  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16550  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16551  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16552  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16553  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16554  }
16555 
16556  xml_blob = g_byte_array_new();
16557  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16558  if (error != NULL) {
16559  g_byte_array_free(xml_blob, TRUE);
16560  return error;
16561  }
16562 
16563  return _parse_top_level_ds3_s3_target_failure_notification_registration_response(client, request, response, xml_blob);
16564 }
16566  ds3_error* error;
16567  GByteArray* xml_blob;
16568  ds3_string_multimap* return_headers = NULL;
16569 
16570  if (request->path->size < 2) {
16571  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16572  }
16573 
16574  xml_blob = g_byte_array_new();
16575  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16576  if (error != NULL) {
16577  ds3_string_multimap_free(return_headers);
16578  g_byte_array_free(xml_blob, TRUE);
16579  return error;
16580  }
16581 
16582  error = _parse_top_level_ds3_s3_target_failure_notification_registration_list_response(client, request, response, xml_blob);
16583 
16584  (*response)->paging = _parse_paging_headers(return_headers);
16585  ds3_string_multimap_free(return_headers);
16586 
16587  return error;
16588 }
16590  ds3_error* error;
16591  GByteArray* xml_blob;
16592 
16593  if (request->path->size < 2) {
16594  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16595  }
16596 
16597  xml_blob = g_byte_array_new();
16598  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16599  if (error != NULL) {
16600  g_byte_array_free(xml_blob, TRUE);
16601  return error;
16602  }
16603 
16604  return _parse_top_level_ds3_storage_domain_failure_notification_registration_response(client, request, response, xml_blob);
16605 }
16607  ds3_error* error;
16608  GByteArray* xml_blob;
16609  ds3_string_multimap* return_headers = NULL;
16610 
16611  if (request->path->size < 2) {
16612  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16613  }
16614 
16615  xml_blob = g_byte_array_new();
16616  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16617  if (error != NULL) {
16618  ds3_string_multimap_free(return_headers);
16619  g_byte_array_free(xml_blob, TRUE);
16620  return error;
16621  }
16622 
16624 
16625  (*response)->paging = _parse_paging_headers(return_headers);
16626  ds3_string_multimap_free(return_headers);
16627 
16628  return error;
16629 }
16631  ds3_error* error;
16632  GByteArray* xml_blob;
16633 
16634  if (request->path->size < 2) {
16635  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16636  }
16637 
16638  xml_blob = g_byte_array_new();
16639  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16640  if (error != NULL) {
16641  g_byte_array_free(xml_blob, TRUE);
16642  return error;
16643  }
16644 
16645  return _parse_top_level_ds3_system_failure_notification_registration_response(client, request, response, xml_blob);
16646 }
16648  ds3_error* error;
16649  GByteArray* xml_blob;
16650  ds3_string_multimap* return_headers = NULL;
16651 
16652  if (request->path->size < 2) {
16653  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16654  }
16655 
16656  xml_blob = g_byte_array_new();
16657  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16658  if (error != NULL) {
16659  ds3_string_multimap_free(return_headers);
16660  g_byte_array_free(xml_blob, TRUE);
16661  return error;
16662  }
16663 
16664  error = _parse_top_level_ds3_system_failure_notification_registration_list_response(client, request, response, xml_blob);
16665 
16666  (*response)->paging = _parse_paging_headers(return_headers);
16667  ds3_string_multimap_free(return_headers);
16668 
16669  return error;
16670 }
16672  ds3_error* error;
16673  GByteArray* xml_blob;
16674 
16675  if (request->path->size < 2) {
16676  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16677  }
16678 
16679  xml_blob = g_byte_array_new();
16680  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16681  if (error != NULL) {
16682  g_byte_array_free(xml_blob, TRUE);
16683  return error;
16684  }
16685 
16686  return _parse_top_level_ds3_tape_failure_notification_registration_response(client, request, response, xml_blob);
16687 }
16689  ds3_error* error;
16690  GByteArray* xml_blob;
16691  ds3_string_multimap* return_headers = NULL;
16692 
16693  if (request->path->size < 2) {
16694  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16695  }
16696 
16697  xml_blob = g_byte_array_new();
16698  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16699  if (error != NULL) {
16700  ds3_string_multimap_free(return_headers);
16701  g_byte_array_free(xml_blob, TRUE);
16702  return error;
16703  }
16704 
16705  error = _parse_top_level_ds3_tape_failure_notification_registration_list_response(client, request, response, xml_blob);
16706 
16707  (*response)->paging = _parse_paging_headers(return_headers);
16708  ds3_string_multimap_free(return_headers);
16709 
16710  return error;
16711 }
16713  ds3_error* error;
16714  GByteArray* xml_blob;
16715 
16716  if (request->path->size < 2) {
16717  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16718  }
16719 
16720  xml_blob = g_byte_array_new();
16721  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16722  if (error != NULL) {
16723  g_byte_array_free(xml_blob, TRUE);
16724  return error;
16725  }
16726 
16727  return _parse_top_level_ds3_tape_partition_failure_notification_registration_response(client, request, response, xml_blob);
16728 }
16730  ds3_error* error;
16731  GByteArray* xml_blob;
16732  ds3_string_multimap* return_headers = NULL;
16733 
16734  if (request->path->size < 2) {
16735  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16736  }
16737 
16738  xml_blob = g_byte_array_new();
16739  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16740  if (error != NULL) {
16741  ds3_string_multimap_free(return_headers);
16742  g_byte_array_free(xml_blob, TRUE);
16743  return error;
16744  }
16745 
16747 
16748  (*response)->paging = _parse_paging_headers(return_headers);
16749  ds3_string_multimap_free(return_headers);
16750 
16751  return error;
16752 }
16754 
16755  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16756  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16757  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16758  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16759  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16760  }
16761 
16762  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16763 }
16765  ds3_error* error;
16766  ds3_xml_send_buff send_buff;
16767  GByteArray* xml_blob;
16768  ds3_str* _response;
16769 
16770  if (request->path->size < 2) {
16771  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16772  }
16773 
16774  error = _init_request_payload(request, &send_buff, STRING);
16775  if (error != NULL) return error;
16776 
16777  xml_blob = g_byte_array_new();
16778  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
16779 
16780  // Clean up the data sent to the server
16781  xmlFree(send_buff.buff);
16782 
16783  if (error != NULL) {
16784  g_byte_array_free(xml_blob, TRUE);
16785  return error;
16786  }
16787 
16788  _response = ds3_str_init_with_size((char*)xml_blob->data, xml_blob->len);
16789  g_byte_array_free(xml_blob, TRUE);
16790 
16791  *response = _response;
16792  return error;
16793 }
16795  ds3_error* error;
16796  GByteArray* xml_blob;
16797 
16798  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16799  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16800  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16801  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16802  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16803  }
16804 
16805  xml_blob = g_byte_array_new();
16806  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16807  if (error != NULL) {
16808  g_byte_array_free(xml_blob, TRUE);
16809  return error;
16810  }
16811 
16812  return _parse_top_level_ds3_s3_object_response(client, request, response, xml_blob);
16813 }
16815  ds3_error* error;
16816  GByteArray* xml_blob;
16817  ds3_string_multimap* return_headers = NULL;
16818 
16819  if (request->path->size < 2) {
16820  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16821  }
16822 
16823  xml_blob = g_byte_array_new();
16824  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16825  if (error != NULL) {
16826  ds3_string_multimap_free(return_headers);
16827  g_byte_array_free(xml_blob, TRUE);
16828  return error;
16829  }
16830 
16831  error = _parse_top_level_ds3_s3_object_list_response(client, request, response, xml_blob);
16832 
16833  (*response)->paging = _parse_paging_headers(return_headers);
16834  ds3_string_multimap_free(return_headers);
16835 
16836  return error;
16837 }
16839  ds3_error* error;
16840  GByteArray* xml_blob;
16841  ds3_string_multimap* return_headers = NULL;
16842 
16843  if (request->path->size < 2) {
16844  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16845  }
16846 
16847  xml_blob = g_byte_array_new();
16848  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16849  if (error != NULL) {
16850  ds3_string_multimap_free(return_headers);
16851  g_byte_array_free(xml_blob, TRUE);
16852  return error;
16853  }
16854 
16855  error = _parse_top_level_ds3_detailed_s3_object_list_response(client, request, response, xml_blob);
16856 
16857  (*response)->paging = _parse_paging_headers(return_headers);
16858  ds3_string_multimap_free(return_headers);
16859 
16860  return error;
16861 }
16863  ds3_error* error;
16864  ds3_xml_send_buff send_buff;
16865  GByteArray* xml_blob;
16866 
16867  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16868  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16869  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16870  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16871  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16872  }
16873 
16874  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
16875  if (error != NULL) return error;
16876 
16877  xml_blob = g_byte_array_new();
16878  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
16879 
16880  // Clean up the data sent to the server
16881  xmlFree(send_buff.buff);
16882 
16883  if (error != NULL) {
16884  g_byte_array_free(xml_blob, TRUE);
16885  return error;
16886  }
16887 
16888  return _parse_top_level_ds3_physical_placement_response(client, request, response, xml_blob);
16889 }
16891  ds3_error* error;
16892  ds3_xml_send_buff send_buff;
16893  GByteArray* xml_blob;
16894 
16895  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16896  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16897  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16898  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16899  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16900  }
16901 
16902  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
16903  if (error != NULL) return error;
16904 
16905  xml_blob = g_byte_array_new();
16906  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
16907 
16908  // Clean up the data sent to the server
16909  xmlFree(send_buff.buff);
16910 
16911  if (error != NULL) {
16912  g_byte_array_free(xml_blob, TRUE);
16913  return error;
16914  }
16915 
16916  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
16917 }
16919  ds3_error* error;
16920  ds3_xml_send_buff send_buff;
16921  GByteArray* xml_blob;
16922 
16923  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16924  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16925  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16926  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16927  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16928  }
16929 
16930  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
16931  if (error != NULL) return error;
16932 
16933  xml_blob = g_byte_array_new();
16934  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
16935 
16936  // Clean up the data sent to the server
16937  xmlFree(send_buff.buff);
16938 
16939  if (error != NULL) {
16940  g_byte_array_free(xml_blob, TRUE);
16941  return error;
16942  }
16943 
16944  return _parse_top_level_ds3_physical_placement_response(client, request, response, xml_blob);
16945 }
16947  ds3_error* error;
16948  ds3_xml_send_buff send_buff;
16949  GByteArray* xml_blob;
16950 
16951  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16952  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16953  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16954  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16955  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16956  }
16957 
16958  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
16959  if (error != NULL) return error;
16960 
16961  xml_blob = g_byte_array_new();
16962  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
16963 
16964  // Clean up the data sent to the server
16965  xmlFree(send_buff.buff);
16966 
16967  if (error != NULL) {
16968  g_byte_array_free(xml_blob, TRUE);
16969  return error;
16970  }
16971 
16972  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
16973 }
16975 
16976  if (request->path->size < 2) {
16977  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16978  }
16979 
16980  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16981 }
16983  ds3_error* error;
16984  GByteArray* xml_blob;
16985 
16986  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16987  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16988  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16989  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16990  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16991  }
16992 
16993  xml_blob = g_byte_array_new();
16994  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16995  if (error != NULL) {
16996  g_byte_array_free(xml_blob, TRUE);
16997  return error;
16998  }
16999 
17000  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17001 }
17003 
17004  if (request->path->size < 2) {
17005  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17006  }
17007 
17008  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17009 }
17011  ds3_error* error;
17012  GByteArray* xml_blob;
17013 
17014  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17015  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17016  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17017  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17018  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17019  }
17020 
17021  xml_blob = g_byte_array_new();
17022  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17023  if (error != NULL) {
17024  g_byte_array_free(xml_blob, TRUE);
17025  return error;
17026  }
17027 
17028  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17029 }
17031 
17032  if (request->path->size < 2) {
17033  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17034  }
17035 
17036  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17037 }
17039  ds3_error* error;
17040  GByteArray* xml_blob;
17041 
17042  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17043  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17044  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17045  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17046  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17047  }
17048 
17049  xml_blob = g_byte_array_new();
17050  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17051  if (error != NULL) {
17052  g_byte_array_free(xml_blob, TRUE);
17053  return error;
17054  }
17055 
17056  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17057 }
17059  ds3_error* error;
17060  GByteArray* xml_blob;
17061 
17062  if (request->path->size < 2) {
17063  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17064  }
17065 
17066  xml_blob = g_byte_array_new();
17067  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17068  if (error != NULL) {
17069  g_byte_array_free(xml_blob, TRUE);
17070  return error;
17071  }
17072 
17073  return _parse_top_level_ds3_pool_partition_response(client, request, response, xml_blob);
17074 }
17076 
17077  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17078  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17079  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17080  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17081  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17082  }
17083 
17084  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17085 }
17087 
17088  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17089  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17090  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17091  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17092  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17093  }
17094 
17095  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17096 }
17098 
17099  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17100  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17101  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17102  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17103  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17104  }
17105 
17106  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17107 }
17109 
17110  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17111  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17112  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17113  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17114  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17115  }
17116 
17117  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17118 }
17120 
17121 
17122 
17123  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17124 }
17126 
17127  if (request->path->size < 2) {
17128  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17129  }
17130 
17131  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17132 }
17134  ds3_error* error;
17135  GByteArray* xml_blob;
17136 
17137  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17138  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17139  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17140  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17141  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17142  }
17143 
17144  xml_blob = g_byte_array_new();
17145  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17146  if (error != NULL) {
17147  g_byte_array_free(xml_blob, TRUE);
17148  return error;
17149  }
17150 
17151  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17152 }
17154  ds3_error* error;
17155  GByteArray* xml_blob;
17156 
17157  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17158  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17159  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17160  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17161  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17162  }
17163 
17164  xml_blob = g_byte_array_new();
17165  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17166  if (error != NULL) {
17167  g_byte_array_free(xml_blob, TRUE);
17168  return error;
17169  }
17170 
17171  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
17172 }
17174  ds3_error* error;
17175  GByteArray* xml_blob;
17176  ds3_string_multimap* return_headers = NULL;
17177 
17178  if (request->path->size < 2) {
17179  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17180  }
17181 
17182  xml_blob = g_byte_array_new();
17183  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17184  if (error != NULL) {
17185  ds3_string_multimap_free(return_headers);
17186  g_byte_array_free(xml_blob, TRUE);
17187  return error;
17188  }
17189 
17190  error = _parse_top_level_ds3_pool_failure_list_response(client, request, response, xml_blob);
17191 
17192  (*response)->paging = _parse_paging_headers(return_headers);
17193  ds3_string_multimap_free(return_headers);
17194 
17195  return error;
17196 }
17198  ds3_error* error;
17199  GByteArray* xml_blob;
17200 
17201  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17202  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17203  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17204  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17205  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17206  }
17207 
17208  xml_blob = g_byte_array_new();
17209  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17210  if (error != NULL) {
17211  g_byte_array_free(xml_blob, TRUE);
17212  return error;
17213  }
17214 
17215  return _parse_top_level_ds3_pool_partition_response(client, request, response, xml_blob);
17216 }
17218  ds3_error* error;
17219  GByteArray* xml_blob;
17220  ds3_string_multimap* return_headers = NULL;
17221 
17222  if (request->path->size < 2) {
17223  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17224  }
17225 
17226  xml_blob = g_byte_array_new();
17227  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17228  if (error != NULL) {
17229  ds3_string_multimap_free(return_headers);
17230  g_byte_array_free(xml_blob, TRUE);
17231  return error;
17232  }
17233 
17234  error = _parse_top_level_ds3_pool_partition_list_response(client, request, response, xml_blob);
17235 
17236  (*response)->paging = _parse_paging_headers(return_headers);
17237  ds3_string_multimap_free(return_headers);
17238 
17239  return error;
17240 }
17242  ds3_error* error;
17243  GByteArray* xml_blob;
17244 
17245  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17246  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17247  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17248  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17249  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17250  }
17251 
17252  xml_blob = g_byte_array_new();
17253  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17254  if (error != NULL) {
17255  g_byte_array_free(xml_blob, TRUE);
17256  return error;
17257  }
17258 
17259  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17260 }
17262  ds3_error* error;
17263  GByteArray* xml_blob;
17264  ds3_string_multimap* return_headers = NULL;
17265 
17266  if (request->path->size < 2) {
17267  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17268  }
17269 
17270  xml_blob = g_byte_array_new();
17271  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17272  if (error != NULL) {
17273  ds3_string_multimap_free(return_headers);
17274  g_byte_array_free(xml_blob, TRUE);
17275  return error;
17276  }
17277 
17278  error = _parse_top_level_ds3_pool_list_response(client, request, response, xml_blob);
17279 
17280  (*response)->paging = _parse_paging_headers(return_headers);
17281  ds3_string_multimap_free(return_headers);
17282 
17283  return error;
17284 }
17286 
17287  if (request->path->size < 2) {
17288  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17289  }
17290 
17291  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17292 }
17294  ds3_error* error;
17295  GByteArray* xml_blob;
17296 
17297  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17298  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17299  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17300  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17301  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17302  }
17303 
17304  xml_blob = g_byte_array_new();
17305  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17306  if (error != NULL) {
17307  g_byte_array_free(xml_blob, TRUE);
17308  return error;
17309  }
17310 
17311  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17312 }
17314 
17315  if (request->path->size < 2) {
17316  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17317  }
17318 
17319  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17320 }
17322  ds3_error* error;
17323  GByteArray* xml_blob;
17324 
17325  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17326  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17327  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17328  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17329  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17330  }
17331 
17332  xml_blob = g_byte_array_new();
17333  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17334  if (error != NULL) {
17335  g_byte_array_free(xml_blob, TRUE);
17336  return error;
17337  }
17338 
17339  return _parse_top_level_ds3_pool_partition_response(client, request, response, xml_blob);
17340 }
17342  ds3_error* error;
17343  GByteArray* xml_blob;
17344 
17345  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17346  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17347  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17348  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17349  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17350  }
17351 
17352  xml_blob = g_byte_array_new();
17353  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17354  if (error != NULL) {
17355  g_byte_array_free(xml_blob, TRUE);
17356  return error;
17357  }
17358 
17359  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17360 }
17362 
17363  if (request->path->size < 2) {
17364  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17365  }
17366 
17367  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17368 }
17370  ds3_error* error;
17371  GByteArray* xml_blob;
17372 
17373  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17374  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17375  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17376  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17377  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17378  }
17379 
17380  xml_blob = g_byte_array_new();
17381  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17382  if (error != NULL) {
17383  g_byte_array_free(xml_blob, TRUE);
17384  return error;
17385  }
17386 
17387  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17388 }
17390 
17391  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17392  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17393  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17394  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17395  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17396  }
17397 
17398  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17399 }
17401  ds3_error* error;
17402  GByteArray* xml_blob;
17403 
17404  if (request->path->size < 2) {
17405  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17406  }
17407 
17408  xml_blob = g_byte_array_new();
17409  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17410  if (error != NULL) {
17411  g_byte_array_free(xml_blob, TRUE);
17412  return error;
17413  }
17414 
17415  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
17416 }
17418  ds3_error* error;
17419  GByteArray* xml_blob;
17420 
17421  if (request->path->size < 2) {
17422  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17423  }
17424 
17425  xml_blob = g_byte_array_new();
17426  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17427  if (error != NULL) {
17428  g_byte_array_free(xml_blob, TRUE);
17429  return error;
17430  }
17431 
17432  return _parse_top_level_ds3_storage_domain_response(client, request, response, xml_blob);
17433 }
17435  ds3_error* error;
17436  GByteArray* xml_blob;
17437 
17438  if (request->path->size < 2) {
17439  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17440  }
17441 
17442  xml_blob = g_byte_array_new();
17443  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17444  if (error != NULL) {
17445  g_byte_array_free(xml_blob, TRUE);
17446  return error;
17447  }
17448 
17449  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
17450 }
17452 
17453  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17454  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17455  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17456  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17457  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17458  }
17459 
17460  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17461 }
17463 
17464  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17465  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17466  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17467  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17468  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17469  }
17470 
17471  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17472 }
17474 
17475  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17476  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17477  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17478  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17479  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17480  }
17481 
17482  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17483 }
17485  ds3_error* error;
17486  GByteArray* xml_blob;
17487  ds3_string_multimap* return_headers = NULL;
17488 
17489  if (request->path->size < 2) {
17490  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17491  }
17492 
17493  xml_blob = g_byte_array_new();
17494  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17495  if (error != NULL) {
17496  ds3_string_multimap_free(return_headers);
17497  g_byte_array_free(xml_blob, TRUE);
17498  return error;
17499  }
17500 
17501  error = _parse_top_level_ds3_storage_domain_failure_list_response(client, request, response, xml_blob);
17502 
17503  (*response)->paging = _parse_paging_headers(return_headers);
17504  ds3_string_multimap_free(return_headers);
17505 
17506  return error;
17507 }
17509  ds3_error* error;
17510  GByteArray* xml_blob;
17511 
17512  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17513  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17514  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17515  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17516  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17517  }
17518 
17519  xml_blob = g_byte_array_new();
17520  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17521  if (error != NULL) {
17522  g_byte_array_free(xml_blob, TRUE);
17523  return error;
17524  }
17525 
17526  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
17527 }
17529  ds3_error* error;
17530  GByteArray* xml_blob;
17531  ds3_string_multimap* return_headers = NULL;
17532 
17533  if (request->path->size < 2) {
17534  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17535  }
17536 
17537  xml_blob = g_byte_array_new();
17538  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17539  if (error != NULL) {
17540  ds3_string_multimap_free(return_headers);
17541  g_byte_array_free(xml_blob, TRUE);
17542  return error;
17543  }
17544 
17545  error = _parse_top_level_ds3_storage_domain_member_list_response(client, request, response, xml_blob);
17546 
17547  (*response)->paging = _parse_paging_headers(return_headers);
17548  ds3_string_multimap_free(return_headers);
17549 
17550  return error;
17551 }
17553  ds3_error* error;
17554  GByteArray* xml_blob;
17555 
17556  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17557  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17558  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17559  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17560  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17561  }
17562 
17563  xml_blob = g_byte_array_new();
17564  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17565  if (error != NULL) {
17566  g_byte_array_free(xml_blob, TRUE);
17567  return error;
17568  }
17569 
17570  return _parse_top_level_ds3_storage_domain_response(client, request, response, xml_blob);
17571 }
17573  ds3_error* error;
17574  GByteArray* xml_blob;
17575  ds3_string_multimap* return_headers = NULL;
17576 
17577  if (request->path->size < 2) {
17578  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17579  }
17580 
17581  xml_blob = g_byte_array_new();
17582  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17583  if (error != NULL) {
17584  ds3_string_multimap_free(return_headers);
17585  g_byte_array_free(xml_blob, TRUE);
17586  return error;
17587  }
17588 
17589  error = _parse_top_level_ds3_storage_domain_list_response(client, request, response, xml_blob);
17590 
17591  (*response)->paging = _parse_paging_headers(return_headers);
17592  ds3_string_multimap_free(return_headers);
17593 
17594  return error;
17595 }
17597  ds3_error* error;
17598  GByteArray* xml_blob;
17599 
17600  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17601  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17602  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17603  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17604  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17605  }
17606 
17607  xml_blob = g_byte_array_new();
17608  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17609  if (error != NULL) {
17610  g_byte_array_free(xml_blob, TRUE);
17611  return error;
17612  }
17613 
17614  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
17615 }
17617  ds3_error* error;
17618  GByteArray* xml_blob;
17619 
17620  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17621  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17622  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17623  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17624  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17625  }
17626 
17627  xml_blob = g_byte_array_new();
17628  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17629  if (error != NULL) {
17630  g_byte_array_free(xml_blob, TRUE);
17631  return error;
17632  }
17633 
17634  return _parse_top_level_ds3_storage_domain_response(client, request, response, xml_blob);
17635 }
17637 
17638  if (request->path->size < 2) {
17639  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17640  }
17641 
17642  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17643 }
17645  ds3_error* error;
17646  GByteArray* xml_blob;
17647  ds3_string_multimap* return_headers = NULL;
17648 
17649  if (request->path->size < 2) {
17650  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17651  }
17652 
17653  xml_blob = g_byte_array_new();
17654  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17655  if (error != NULL) {
17656  ds3_string_multimap_free(return_headers);
17657  g_byte_array_free(xml_blob, TRUE);
17658  return error;
17659  }
17660 
17661  error = _parse_top_level_ds3_feature_key_list_response(client, request, response, xml_blob);
17662 
17663  (*response)->paging = _parse_paging_headers(return_headers);
17664  ds3_string_multimap_free(return_headers);
17665 
17666  return error;
17667 }
17669  ds3_error* error;
17670  GByteArray* xml_blob;
17671  ds3_string_multimap* return_headers = NULL;
17672 
17673  if (request->path->size < 2) {
17674  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17675  }
17676 
17677  xml_blob = g_byte_array_new();
17678  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17679  if (error != NULL) {
17680  ds3_string_multimap_free(return_headers);
17681  g_byte_array_free(xml_blob, TRUE);
17682  return error;
17683  }
17684 
17685  error = _parse_top_level_ds3_system_failure_list_response(client, request, response, xml_blob);
17686 
17687  (*response)->paging = _parse_paging_headers(return_headers);
17688  ds3_string_multimap_free(return_headers);
17689 
17690  return error;
17691 }
17693  ds3_error* error;
17694  GByteArray* xml_blob;
17695 
17696 
17697 
17698  xml_blob = g_byte_array_new();
17699  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17700  if (error != NULL) {
17701  g_byte_array_free(xml_blob, TRUE);
17702  return error;
17703  }
17704 
17705  return _parse_top_level_ds3_system_information_response(client, request, response, xml_blob);
17706 }
17708  ds3_error* error;
17709  GByteArray* xml_blob;
17710 
17711  if (request->path->size < 2) {
17712  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17713  }
17714 
17715  xml_blob = g_byte_array_new();
17716  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17717  if (error != NULL) {
17718  g_byte_array_free(xml_blob, TRUE);
17719  return error;
17720  }
17721 
17722  return _parse_top_level_ds3_data_path_backend_response(client, request, response, xml_blob);
17723 }
17725  ds3_error* error;
17726  GByteArray* xml_blob;
17727 
17728 
17729 
17730  xml_blob = g_byte_array_new();
17731  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17732  if (error != NULL) {
17733  g_byte_array_free(xml_blob, TRUE);
17734  return error;
17735  }
17736 
17737  return _parse_top_level_ds3_health_verification_result_response(client, request, response, xml_blob);
17738 }
17740  ds3_error* error;
17741  GByteArray* xml_blob;
17742 
17743  if (request->path->size < 2) {
17744  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17745  }
17746 
17747  xml_blob = g_byte_array_new();
17748  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17749  if (error != NULL) {
17750  g_byte_array_free(xml_blob, TRUE);
17751  return error;
17752  }
17753 
17754  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17755 }
17757  ds3_error* error;
17758  GByteArray* xml_blob;
17759 
17760  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17761  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17762  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17763  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17764  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17765  }
17766 
17767  xml_blob = g_byte_array_new();
17768  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17769  if (error != NULL) {
17770  g_byte_array_free(xml_blob, TRUE);
17771  return error;
17772  }
17773 
17774  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17775 }
17777  ds3_error* error;
17778  GByteArray* xml_blob;
17779 
17780  if (request->path->size < 2) {
17781  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17782  }
17783 
17784  xml_blob = g_byte_array_new();
17785  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17786  if (error != NULL) {
17787  g_byte_array_free(xml_blob, TRUE);
17788  return error;
17789  }
17790 
17791  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17792 }
17794  ds3_error* error;
17795  GByteArray* xml_blob;
17796 
17797  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17798  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17799  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17800  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17801  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17802  }
17803 
17804  xml_blob = g_byte_array_new();
17805  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17806  if (error != NULL) {
17807  g_byte_array_free(xml_blob, TRUE);
17808  return error;
17809  }
17810 
17811  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17812 }
17814  ds3_error* error;
17815  GByteArray* xml_blob;
17816 
17817  if (request->path->size < 2) {
17818  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17819  }
17820 
17821  xml_blob = g_byte_array_new();
17822  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17823  if (error != NULL) {
17824  g_byte_array_free(xml_blob, TRUE);
17825  return error;
17826  }
17827 
17828  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17829 }
17831  ds3_error* error;
17832  GByteArray* xml_blob;
17833 
17834  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17835  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17836  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17837  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17838  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17839  }
17840 
17841  xml_blob = g_byte_array_new();
17842  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17843  if (error != NULL) {
17844  g_byte_array_free(xml_blob, TRUE);
17845  return error;
17846  }
17847 
17848  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17849 }
17851  ds3_error* error;
17852  GByteArray* xml_blob;
17853 
17854  if (request->path->size < 2) {
17855  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17856  }
17857 
17858  xml_blob = g_byte_array_new();
17859  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17860  if (error != NULL) {
17861  g_byte_array_free(xml_blob, TRUE);
17862  return error;
17863  }
17864 
17865  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17866 }
17868  ds3_error* error;
17869  GByteArray* xml_blob;
17870 
17871  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17872  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17873  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17874  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17875  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17876  }
17877 
17878  xml_blob = g_byte_array_new();
17879  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17880  if (error != NULL) {
17881  g_byte_array_free(xml_blob, TRUE);
17882  return error;
17883  }
17884 
17885  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17886 }
17888  ds3_error* error;
17889  GByteArray* xml_blob;
17890 
17891  if (request->path->size < 2) {
17892  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17893  }
17894 
17895  xml_blob = g_byte_array_new();
17896  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17897  if (error != NULL) {
17898  g_byte_array_free(xml_blob, TRUE);
17899  return error;
17900  }
17901 
17902  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17903 }
17905  ds3_error* error;
17906  GByteArray* xml_blob;
17907 
17908  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17909  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17910  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17911  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17912  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17913  }
17914 
17915  xml_blob = g_byte_array_new();
17916  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17917  if (error != NULL) {
17918  g_byte_array_free(xml_blob, TRUE);
17919  return error;
17920  }
17921 
17922  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17923 }
17925  ds3_error* error;
17926  GByteArray* xml_blob;
17927 
17928  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17929  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17930  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17931  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17932  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17933  }
17934 
17935  xml_blob = g_byte_array_new();
17936  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17937  if (error != NULL) {
17938  g_byte_array_free(xml_blob, TRUE);
17939  return error;
17940  }
17941 
17942  return _parse_top_level_ds3_tape_drive_response(client, request, response, xml_blob);
17943 }
17945  ds3_error* error;
17946  GByteArray* xml_blob;
17947 
17948  if (request->path->size < 2) {
17949  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17950  }
17951 
17952  xml_blob = g_byte_array_new();
17953  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17954  if (error != NULL) {
17955  g_byte_array_free(xml_blob, TRUE);
17956  return error;
17957  }
17958 
17959  return _parse_top_level_ds3_tape_density_directive_response(client, request, response, xml_blob);
17960 }
17962 
17963  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17964  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17965  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17966  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17967  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17968  }
17969 
17970  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17971 }
17973 
17974  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17975  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17976  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17977  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17978  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17979  }
17980 
17981  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17982 }
17984 
17985  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17986  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17987  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17988  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17989  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17990  }
17991 
17992  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17993 }
17995 
17996  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17997  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17998  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17999  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18000  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18001  }
18002 
18003  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18004 }
18006 
18007  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18008  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18009  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18010  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18011  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18012  }
18013 
18014  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18015 }
18017 
18018  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18019  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18020  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18021  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18022  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18023  }
18024 
18025  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18026 }
18028  ds3_error* error;
18029  GByteArray* xml_blob;
18030 
18031  if (request->path->size < 2) {
18032  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18033  }
18034 
18035  xml_blob = g_byte_array_new();
18036  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18037  if (error != NULL) {
18038  g_byte_array_free(xml_blob, TRUE);
18039  return error;
18040  }
18041 
18042  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18043 }
18045  ds3_error* error;
18046  ds3_xml_send_buff send_buff;
18047 
18048  if (request->path->size < 2) {
18049  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18050  }
18051 
18052  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
18053  if (error != NULL) return error;
18054 
18055  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
18056 
18057  // Clean up the data sent to the server
18058  xmlFree(send_buff.buff);
18059 
18060  return error;
18061 }
18063  ds3_error* error;
18064  GByteArray* xml_blob;
18065 
18066  if (request->path->size < 2) {
18067  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18068  }
18069 
18070  xml_blob = g_byte_array_new();
18071  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18072  if (error != NULL) {
18073  g_byte_array_free(xml_blob, TRUE);
18074  return error;
18075  }
18076 
18077  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18078 }
18080  ds3_error* error;
18081  GByteArray* xml_blob;
18082 
18083  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18084  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18085  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18086  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18087  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18088  }
18089 
18090  xml_blob = g_byte_array_new();
18091  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18092  if (error != NULL) {
18093  g_byte_array_free(xml_blob, TRUE);
18094  return error;
18095  }
18096 
18097  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18098 }
18100 
18101 
18102 
18103  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18104 }
18106  ds3_error* error;
18107  GByteArray* xml_blob;
18108 
18109  if (request->path->size < 2) {
18110  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18111  }
18112 
18113  xml_blob = g_byte_array_new();
18114  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18115  if (error != NULL) {
18116  g_byte_array_free(xml_blob, TRUE);
18117  return error;
18118  }
18119 
18120  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18121 }
18123  ds3_error* error;
18124  GByteArray* xml_blob;
18125 
18126  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18127  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18128  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18129  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18130  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18131  }
18132 
18133  xml_blob = g_byte_array_new();
18134  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18135  if (error != NULL) {
18136  g_byte_array_free(xml_blob, TRUE);
18137  return error;
18138  }
18139 
18140  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18141 }
18143  ds3_error* error;
18144  GByteArray* xml_blob;
18145 
18146  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18147  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18148  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18149  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18150  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18151  }
18152 
18153  xml_blob = g_byte_array_new();
18154  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18155  if (error != NULL) {
18156  g_byte_array_free(xml_blob, TRUE);
18157  return error;
18158  }
18159 
18160  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
18161 }
18163  ds3_error* error;
18164  GByteArray* xml_blob;
18165 
18166  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18167  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18168  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18169  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18170  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18171  }
18172 
18173  xml_blob = g_byte_array_new();
18174  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18175  if (error != NULL) {
18176  g_byte_array_free(xml_blob, TRUE);
18177  return error;
18178  }
18179 
18180  return _parse_top_level_ds3_tape_density_directive_response(client, request, response, xml_blob);
18181 }
18183  ds3_error* error;
18184  GByteArray* xml_blob;
18185  ds3_string_multimap* return_headers = NULL;
18186 
18187  if (request->path->size < 2) {
18188  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18189  }
18190 
18191  xml_blob = g_byte_array_new();
18192  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18193  if (error != NULL) {
18194  ds3_string_multimap_free(return_headers);
18195  g_byte_array_free(xml_blob, TRUE);
18196  return error;
18197  }
18198 
18199  error = _parse_top_level_ds3_tape_density_directive_list_response(client, request, response, xml_blob);
18200 
18201  (*response)->paging = _parse_paging_headers(return_headers);
18202  ds3_string_multimap_free(return_headers);
18203 
18204  return error;
18205 }
18207  ds3_error* error;
18208  GByteArray* xml_blob;
18209 
18210  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18211  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18212  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18213  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18214  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18215  }
18216 
18217  xml_blob = g_byte_array_new();
18218  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18219  if (error != NULL) {
18220  g_byte_array_free(xml_blob, TRUE);
18221  return error;
18222  }
18223 
18224  return _parse_top_level_ds3_tape_drive_response(client, request, response, xml_blob);
18225 }
18227  ds3_error* error;
18228  GByteArray* xml_blob;
18229  ds3_string_multimap* return_headers = NULL;
18230 
18231  if (request->path->size < 2) {
18232  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18233  }
18234 
18235  xml_blob = g_byte_array_new();
18236  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18237  if (error != NULL) {
18238  ds3_string_multimap_free(return_headers);
18239  g_byte_array_free(xml_blob, TRUE);
18240  return error;
18241  }
18242 
18243  error = _parse_top_level_ds3_tape_drive_list_response(client, request, response, xml_blob);
18244 
18245  (*response)->paging = _parse_paging_headers(return_headers);
18246  ds3_string_multimap_free(return_headers);
18247 
18248  return error;
18249 }
18251  ds3_error* error;
18252  GByteArray* xml_blob;
18253  ds3_string_multimap* return_headers = NULL;
18254 
18255  if (request->path->size < 2) {
18256  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18257  }
18258 
18259  xml_blob = g_byte_array_new();
18260  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18261  if (error != NULL) {
18262  ds3_string_multimap_free(return_headers);
18263  g_byte_array_free(xml_blob, TRUE);
18264  return error;
18265  }
18266 
18267  error = _parse_top_level_ds3_detailed_tape_failure_list_response(client, request, response, xml_blob);
18268 
18269  (*response)->paging = _parse_paging_headers(return_headers);
18270  ds3_string_multimap_free(return_headers);
18271 
18272  return error;
18273 }
18275  ds3_error* error;
18276  GByteArray* xml_blob;
18277  ds3_string_multimap* return_headers = NULL;
18278 
18279  if (request->path->size < 2) {
18280  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18281  }
18282 
18283  xml_blob = g_byte_array_new();
18284  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18285  if (error != NULL) {
18286  ds3_string_multimap_free(return_headers);
18287  g_byte_array_free(xml_blob, TRUE);
18288  return error;
18289  }
18290 
18291  error = _parse_top_level_ds3_tape_library_list_response(client, request, response, xml_blob);
18292 
18293  (*response)->paging = _parse_paging_headers(return_headers);
18294  ds3_string_multimap_free(return_headers);
18295 
18296  return error;
18297 }
18299  ds3_error* error;
18300  GByteArray* xml_blob;
18301 
18302  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18303  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18304  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18305  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18306  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18307  }
18308 
18309  xml_blob = g_byte_array_new();
18310  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18311  if (error != NULL) {
18312  g_byte_array_free(xml_blob, TRUE);
18313  return error;
18314  }
18315 
18316  return _parse_top_level_ds3_tape_library_response(client, request, response, xml_blob);
18317 }
18319  ds3_error* error;
18320  GByteArray* xml_blob;
18321  ds3_string_multimap* return_headers = NULL;
18322 
18323  if (request->path->size < 2) {
18324  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18325  }
18326 
18327  xml_blob = g_byte_array_new();
18328  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18329  if (error != NULL) {
18330  ds3_string_multimap_free(return_headers);
18331  g_byte_array_free(xml_blob, TRUE);
18332  return error;
18333  }
18334 
18335  error = _parse_top_level_ds3_tape_partition_failure_list_response(client, request, response, xml_blob);
18336 
18337  (*response)->paging = _parse_paging_headers(return_headers);
18338  ds3_string_multimap_free(return_headers);
18339 
18340  return error;
18341 }
18343  ds3_error* error;
18344  GByteArray* xml_blob;
18345 
18346  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18347  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18348  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18349  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18350  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18351  }
18352 
18353  xml_blob = g_byte_array_new();
18354  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18355  if (error != NULL) {
18356  g_byte_array_free(xml_blob, TRUE);
18357  return error;
18358  }
18359 
18360  return _parse_top_level_ds3_tape_partition_response(client, request, response, xml_blob);
18361 }
18363  ds3_error* error;
18364  GByteArray* xml_blob;
18365 
18366  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18367  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18368  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18369  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18370  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18371  }
18372 
18373  xml_blob = g_byte_array_new();
18374  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18375  if (error != NULL) {
18376  g_byte_array_free(xml_blob, TRUE);
18377  return error;
18378  }
18379 
18380  return _parse_top_level_ds3_detailed_tape_partition_response(client, request, response, xml_blob);
18381 }
18383  ds3_error* error;
18384  GByteArray* xml_blob;
18385  ds3_string_multimap* return_headers = NULL;
18386 
18387  if (request->path->size < 2) {
18388  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18389  }
18390 
18391  xml_blob = g_byte_array_new();
18392  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18393  if (error != NULL) {
18394  ds3_string_multimap_free(return_headers);
18395  g_byte_array_free(xml_blob, TRUE);
18396  return error;
18397  }
18398 
18399  error = _parse_top_level_ds3_tape_partition_list_response(client, request, response, xml_blob);
18400 
18401  (*response)->paging = _parse_paging_headers(return_headers);
18402  ds3_string_multimap_free(return_headers);
18403 
18404  return error;
18405 }
18407  ds3_error* error;
18408  GByteArray* xml_blob;
18409  ds3_string_multimap* return_headers = NULL;
18410 
18411  if (request->path->size < 2) {
18412  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18413  }
18414 
18415  xml_blob = g_byte_array_new();
18416  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18417  if (error != NULL) {
18418  ds3_string_multimap_free(return_headers);
18419  g_byte_array_free(xml_blob, TRUE);
18420  return error;
18421  }
18422 
18423  error = _parse_top_level_ds3_named_detailed_tape_partition_list_response(client, request, response, xml_blob);
18424 
18425  (*response)->paging = _parse_paging_headers(return_headers);
18426  ds3_string_multimap_free(return_headers);
18427 
18428  return error;
18429 }
18431  ds3_error* error;
18432  GByteArray* xml_blob;
18433 
18434  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18435  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18436  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18437  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18438  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18439  }
18440 
18441  xml_blob = g_byte_array_new();
18442  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18443  if (error != NULL) {
18444  g_byte_array_free(xml_blob, TRUE);
18445  return error;
18446  }
18447 
18448  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18449 }
18451  ds3_error* error;
18452  GByteArray* xml_blob;
18453  ds3_string_multimap* return_headers = NULL;
18454 
18455  if (request->path->size < 2) {
18456  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18457  }
18458 
18459  xml_blob = g_byte_array_new();
18460  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18461  if (error != NULL) {
18462  ds3_string_multimap_free(return_headers);
18463  g_byte_array_free(xml_blob, TRUE);
18464  return error;
18465  }
18466 
18467  error = _parse_top_level_ds3_tape_list_response(client, request, response, xml_blob);
18468 
18469  (*response)->paging = _parse_paging_headers(return_headers);
18470  ds3_string_multimap_free(return_headers);
18471 
18472  return error;
18473 }
18475 
18476  if (request->path->size < 2) {
18477  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18478  }
18479 
18480  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18481 }
18483  ds3_error* error;
18484  GByteArray* xml_blob;
18485 
18486  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18487  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18488  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18489  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18490  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18491  }
18492 
18493  xml_blob = g_byte_array_new();
18494  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18495  if (error != NULL) {
18496  g_byte_array_free(xml_blob, TRUE);
18497  return error;
18498  }
18499 
18500  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18501 }
18503  ds3_error* error;
18504  GByteArray* xml_blob;
18505 
18506  if (request->path->size < 2) {
18507  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18508  }
18509 
18510  xml_blob = g_byte_array_new();
18511  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18512  if (error != NULL) {
18513  g_byte_array_free(xml_blob, TRUE);
18514  return error;
18515  }
18516 
18517  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18518 }
18520  ds3_error* error;
18521  GByteArray* xml_blob;
18522 
18523  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18524  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18525  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18526  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18527  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18528  }
18529 
18530  xml_blob = g_byte_array_new();
18531  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18532  if (error != NULL) {
18533  g_byte_array_free(xml_blob, TRUE);
18534  return error;
18535  }
18536 
18537  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18538 }
18540 
18541  if (request->path->size < 2) {
18542  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18543  }
18544 
18545  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18546 }
18548  ds3_error* error;
18549  GByteArray* xml_blob;
18550 
18551  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18552  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18553  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18554  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18555  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18556  }
18557 
18558  xml_blob = g_byte_array_new();
18559  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18560  if (error != NULL) {
18561  g_byte_array_free(xml_blob, TRUE);
18562  return error;
18563  }
18564 
18565  return _parse_top_level_ds3_tape_drive_response(client, request, response, xml_blob);
18566 }
18568  ds3_error* error;
18569  GByteArray* xml_blob;
18570 
18571  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18572  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18573  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18574  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18575  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18576  }
18577 
18578  xml_blob = g_byte_array_new();
18579  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18580  if (error != NULL) {
18581  g_byte_array_free(xml_blob, TRUE);
18582  return error;
18583  }
18584 
18585  return _parse_top_level_ds3_tape_partition_response(client, request, response, xml_blob);
18586 }
18588  ds3_error* error;
18589  GByteArray* xml_blob;
18590 
18591  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18592  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18593  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18594  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18595  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18596  }
18597 
18598  xml_blob = g_byte_array_new();
18599  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18600  if (error != NULL) {
18601  g_byte_array_free(xml_blob, TRUE);
18602  return error;
18603  }
18604 
18605  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18606 }
18608  ds3_error* error;
18609  GByteArray* xml_blob;
18610 
18611  if (request->path->size < 2) {
18612  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18613  }
18614 
18615  xml_blob = g_byte_array_new();
18616  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18617  if (error != NULL) {
18618  g_byte_array_free(xml_blob, TRUE);
18619  return error;
18620  }
18621 
18622  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18623 }
18625  ds3_error* error;
18626  GByteArray* xml_blob;
18627 
18628  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18629  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18630  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18631  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18632  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18633  }
18634 
18635  xml_blob = g_byte_array_new();
18636  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18637  if (error != NULL) {
18638  g_byte_array_free(xml_blob, TRUE);
18639  return error;
18640  }
18641 
18642  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18643 }
18645 
18646  if (request->path->size < 2) {
18647  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18648  }
18649 
18650  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18651 }
18653  ds3_error* error;
18654  GByteArray* xml_blob;
18655 
18656  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18657  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18658  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18659  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18660  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18661  }
18662 
18663  xml_blob = g_byte_array_new();
18664  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18665  if (error != NULL) {
18666  g_byte_array_free(xml_blob, TRUE);
18667  return error;
18668  }
18669 
18670  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18671 }
18673  ds3_error* error;
18674  GByteArray* xml_blob;
18675 
18676  if (request->path->size < 2) {
18677  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18678  }
18679 
18680  xml_blob = g_byte_array_new();
18681  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18682  if (error != NULL) {
18683  g_byte_array_free(xml_blob, TRUE);
18684  return error;
18685  }
18686 
18687  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18688 }
18690  ds3_error* error;
18691  GByteArray* xml_blob;
18692 
18693  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18694  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18695  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18696  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18697  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18698  }
18699 
18700  xml_blob = g_byte_array_new();
18701  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18702  if (error != NULL) {
18703  g_byte_array_free(xml_blob, TRUE);
18704  return error;
18705  }
18706 
18707  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18708 }
18710 
18711  if (request->path->size < 2) {
18712  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18713  }
18714 
18715  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18716 }
18718  ds3_error* error;
18719  GByteArray* xml_blob;
18720 
18721  if (request->path->size < 2) {
18722  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18723  }
18724 
18725  xml_blob = g_byte_array_new();
18726  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18727  if (error != NULL) {
18728  g_byte_array_free(xml_blob, TRUE);
18729  return error;
18730  }
18731 
18732  return _parse_top_level_ds3_azure_target_bucket_name_response(client, request, response, xml_blob);
18733 }
18735  ds3_error* error;
18736  GByteArray* xml_blob;
18737 
18738  if (request->path->size < 2) {
18739  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18740  }
18741 
18742  xml_blob = g_byte_array_new();
18743  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18744  if (error != NULL) {
18745  g_byte_array_free(xml_blob, TRUE);
18746  return error;
18747  }
18748 
18749  return _parse_top_level_ds3_azure_target_read_preference_response(client, request, response, xml_blob);
18750 }
18752 
18753  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18754  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18755  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18756  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18757  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18758  }
18759 
18760  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18761 }
18763 
18764  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18765  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18766  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18767  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18768  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18769  }
18770 
18771  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18772 }
18774 
18775  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18776  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18777  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18778  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18779  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18780  }
18781 
18782  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18783 }
18785 
18786  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18787  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18788  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18789  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18790  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18791  }
18792 
18793  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18794 }
18796  ds3_error* error;
18797  GByteArray* xml_blob;
18798  ds3_string_multimap* return_headers = NULL;
18799 
18800  if (request->path->size < 2) {
18801  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18802  }
18803 
18804  xml_blob = g_byte_array_new();
18805  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18806  if (error != NULL) {
18807  ds3_string_multimap_free(return_headers);
18808  g_byte_array_free(xml_blob, TRUE);
18809  return error;
18810  }
18811 
18812  error = _parse_top_level_ds3_azure_target_bucket_name_list_response(client, request, response, xml_blob);
18813 
18814  (*response)->paging = _parse_paging_headers(return_headers);
18815  ds3_string_multimap_free(return_headers);
18816 
18817  return error;
18818 }
18820  ds3_error* error;
18821  GByteArray* xml_blob;
18822  ds3_string_multimap* return_headers = NULL;
18823 
18824  if (request->path->size < 2) {
18825  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18826  }
18827 
18828  xml_blob = g_byte_array_new();
18829  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18830  if (error != NULL) {
18831  ds3_string_multimap_free(return_headers);
18832  g_byte_array_free(xml_blob, TRUE);
18833  return error;
18834  }
18835 
18836  error = _parse_top_level_ds3_azure_target_failure_list_response(client, request, response, xml_blob);
18837 
18838  (*response)->paging = _parse_paging_headers(return_headers);
18839  ds3_string_multimap_free(return_headers);
18840 
18841  return error;
18842 }
18844  ds3_error* error;
18845  GByteArray* xml_blob;
18846 
18847  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18848  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18849  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18850  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18851  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18852  }
18853 
18854  xml_blob = g_byte_array_new();
18855  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18856  if (error != NULL) {
18857  g_byte_array_free(xml_blob, TRUE);
18858  return error;
18859  }
18860 
18861  return _parse_top_level_ds3_azure_target_read_preference_response(client, request, response, xml_blob);
18862 }
18864  ds3_error* error;
18865  GByteArray* xml_blob;
18866  ds3_string_multimap* return_headers = NULL;
18867 
18868  if (request->path->size < 2) {
18869  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18870  }
18871 
18872  xml_blob = g_byte_array_new();
18873  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18874  if (error != NULL) {
18875  ds3_string_multimap_free(return_headers);
18876  g_byte_array_free(xml_blob, TRUE);
18877  return error;
18878  }
18879 
18880  error = _parse_top_level_ds3_azure_target_read_preference_list_response(client, request, response, xml_blob);
18881 
18882  (*response)->paging = _parse_paging_headers(return_headers);
18883  ds3_string_multimap_free(return_headers);
18884 
18885  return error;
18886 }
18888  ds3_error* error;
18889  GByteArray* xml_blob;
18890 
18891  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18892  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18893  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18894  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18895  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18896  }
18897 
18898  xml_blob = g_byte_array_new();
18899  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18900  if (error != NULL) {
18901  g_byte_array_free(xml_blob, TRUE);
18902  return error;
18903  }
18904 
18905  return _parse_top_level_ds3_azure_target_response(client, request, response, xml_blob);
18906 }
18908  ds3_error* error;
18909  GByteArray* xml_blob;
18910  ds3_string_multimap* return_headers = NULL;
18911 
18912  if (request->path->size < 2) {
18913  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18914  }
18915 
18916  xml_blob = g_byte_array_new();
18917  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18918  if (error != NULL) {
18919  ds3_string_multimap_free(return_headers);
18920  g_byte_array_free(xml_blob, TRUE);
18921  return error;
18922  }
18923 
18924  error = _parse_top_level_ds3_azure_target_list_response(client, request, response, xml_blob);
18925 
18926  (*response)->paging = _parse_paging_headers(return_headers);
18927  ds3_string_multimap_free(return_headers);
18928 
18929  return error;
18930 }
18932  ds3_error* error;
18933  GByteArray* xml_blob;
18934 
18935  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18936  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18937  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18938  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18939  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18940  }
18941 
18942  xml_blob = g_byte_array_new();
18943  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18944  if (error != NULL) {
18945  g_byte_array_free(xml_blob, TRUE);
18946  return error;
18947  }
18948 
18949  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
18950 }
18952 
18953  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18954  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18955  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18956  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18957  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18958  }
18959 
18960  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18961 }
18963 
18964  if (request->path->size < 2) {
18965  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18966  }
18967 
18968  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18969 }
18971  ds3_error* error;
18972  GByteArray* xml_blob;
18973 
18974  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18975  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18976  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18977  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18978  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18979  }
18980 
18981  xml_blob = g_byte_array_new();
18982  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18983  if (error != NULL) {
18984  g_byte_array_free(xml_blob, TRUE);
18985  return error;
18986  }
18987 
18988  return _parse_top_level_ds3_azure_target_response(client, request, response, xml_blob);
18989 }
18991  ds3_error* error;
18992  GByteArray* xml_blob;
18993 
18994  if (request->path->size < 2) {
18995  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18996  }
18997 
18998  xml_blob = g_byte_array_new();
18999  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19000  if (error != NULL) {
19001  g_byte_array_free(xml_blob, TRUE);
19002  return error;
19003  }
19004 
19005  return _parse_top_level_ds3_azure_target_response(client, request, response, xml_blob);
19006 }
19008  ds3_error* error;
19009  GByteArray* xml_blob;
19010 
19011  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19012  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19013  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19014  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19015  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19016  }
19017 
19018  xml_blob = g_byte_array_new();
19019  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19020  if (error != NULL) {
19021  g_byte_array_free(xml_blob, TRUE);
19022  return error;
19023  }
19024 
19025  return _parse_top_level_ds3_azure_target_response(client, request, response, xml_blob);
19026 }
19028  ds3_error* error;
19029  GByteArray* xml_blob;
19030 
19031  if (request->path->size < 2) {
19032  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19033  }
19034 
19035  xml_blob = g_byte_array_new();
19036  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19037  if (error != NULL) {
19038  g_byte_array_free(xml_blob, TRUE);
19039  return error;
19040  }
19041 
19042  return _parse_top_level_ds3_target_read_preference_response(client, request, response, xml_blob);
19043 }
19045 
19046  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19047  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19048  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19049  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19050  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19051  }
19052 
19053  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19054 }
19056 
19057  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19058  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19059  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19060  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19061  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19062  }
19063 
19064  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19065 }
19067 
19068  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19069  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19070  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19071  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19072  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19073  }
19074 
19075  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19076 }
19078  ds3_error* error;
19079  GByteArray* xml_blob;
19080 
19081  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19082  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19083  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19084  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19085  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19086  }
19087 
19088  xml_blob = g_byte_array_new();
19089  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19090  if (error != NULL) {
19091  g_byte_array_free(xml_blob, TRUE);
19092  return error;
19093  }
19094 
19095  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
19096 }
19098  ds3_error* error;
19099  GByteArray* xml_blob;
19100 
19101  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19102  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19103  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19104  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19105  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19106  }
19107 
19108  xml_blob = g_byte_array_new();
19109  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19110  if (error != NULL) {
19111  g_byte_array_free(xml_blob, TRUE);
19112  return error;
19113  }
19114 
19115  return _parse_top_level_ds3_data_policy_list_response(client, request, response, xml_blob);
19116 }
19118  ds3_error* error;
19119  GByteArray* xml_blob;
19120  ds3_string_multimap* return_headers = NULL;
19121 
19122  if (request->path->size < 2) {
19123  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19124  }
19125 
19126  xml_blob = g_byte_array_new();
19127  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19128  if (error != NULL) {
19129  ds3_string_multimap_free(return_headers);
19130  g_byte_array_free(xml_blob, TRUE);
19131  return error;
19132  }
19133 
19134  error = _parse_top_level_ds3_target_failure_list_response(client, request, response, xml_blob);
19135 
19136  (*response)->paging = _parse_paging_headers(return_headers);
19137  ds3_string_multimap_free(return_headers);
19138 
19139  return error;
19140 }
19142  ds3_error* error;
19143  GByteArray* xml_blob;
19144 
19145  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19146  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19147  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19148  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19149  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19150  }
19151 
19152  xml_blob = g_byte_array_new();
19153  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19154  if (error != NULL) {
19155  g_byte_array_free(xml_blob, TRUE);
19156  return error;
19157  }
19158 
19159  return _parse_top_level_ds3_target_read_preference_response(client, request, response, xml_blob);
19160 }
19162  ds3_error* error;
19163  GByteArray* xml_blob;
19164  ds3_string_multimap* return_headers = NULL;
19165 
19166  if (request->path->size < 2) {
19167  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19168  }
19169 
19170  xml_blob = g_byte_array_new();
19171  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19172  if (error != NULL) {
19173  ds3_string_multimap_free(return_headers);
19174  g_byte_array_free(xml_blob, TRUE);
19175  return error;
19176  }
19177 
19178  error = _parse_top_level_ds3_target_read_preference_list_response(client, request, response, xml_blob);
19179 
19180  (*response)->paging = _parse_paging_headers(return_headers);
19181  ds3_string_multimap_free(return_headers);
19182 
19183  return error;
19184 }
19186  ds3_error* error;
19187  GByteArray* xml_blob;
19188 
19189  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19190  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19191  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19192  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19193  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19194  }
19195 
19196  xml_blob = g_byte_array_new();
19197  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19198  if (error != NULL) {
19199  g_byte_array_free(xml_blob, TRUE);
19200  return error;
19201  }
19202 
19203  return _parse_top_level_ds3_target_response(client, request, response, xml_blob);
19204 }
19206  ds3_error* error;
19207  GByteArray* xml_blob;
19208  ds3_string_multimap* return_headers = NULL;
19209 
19210  if (request->path->size < 2) {
19211  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19212  }
19213 
19214  xml_blob = g_byte_array_new();
19215  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19216  if (error != NULL) {
19217  ds3_string_multimap_free(return_headers);
19218  g_byte_array_free(xml_blob, TRUE);
19219  return error;
19220  }
19221 
19222  error = _parse_top_level_ds3_target_list_response(client, request, response, xml_blob);
19223 
19224  (*response)->paging = _parse_paging_headers(return_headers);
19225  ds3_string_multimap_free(return_headers);
19226 
19227  return error;
19228 }
19230 
19231  if (request->path->size < 2) {
19232  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19233  }
19234 
19235  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19236 }
19238  ds3_error* error;
19239  GByteArray* xml_blob;
19240 
19241  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19242  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19243  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19244  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19245  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19246  }
19247 
19248  xml_blob = g_byte_array_new();
19249  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19250  if (error != NULL) {
19251  g_byte_array_free(xml_blob, TRUE);
19252  return error;
19253  }
19254 
19255  return _parse_top_level_ds3_target_response(client, request, response, xml_blob);
19256 }
19258 
19259  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19260  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19261  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19262  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19263  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19264  }
19265 
19266  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19267 }
19269  ds3_error* error;
19270  GByteArray* xml_blob;
19271 
19272  if (request->path->size < 2) {
19273  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19274  }
19275 
19276  xml_blob = g_byte_array_new();
19277  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19278  if (error != NULL) {
19279  g_byte_array_free(xml_blob, TRUE);
19280  return error;
19281  }
19282 
19283  return _parse_top_level_ds3_target_response(client, request, response, xml_blob);
19284 }
19286  ds3_error* error;
19287  GByteArray* xml_blob;
19288 
19289  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19290  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19291  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19292  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19293  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19294  }
19295 
19296  xml_blob = g_byte_array_new();
19297  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19298  if (error != NULL) {
19299  g_byte_array_free(xml_blob, TRUE);
19300  return error;
19301  }
19302 
19303  return _parse_top_level_ds3_target_response(client, request, response, xml_blob);
19304 }
19306  ds3_error* error;
19307  GByteArray* xml_blob;
19308 
19309  if (request->path->size < 2) {
19310  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19311  }
19312 
19313  xml_blob = g_byte_array_new();
19314  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19315  if (error != NULL) {
19316  g_byte_array_free(xml_blob, TRUE);
19317  return error;
19318  }
19319 
19320  return _parse_top_level_ds3_s3_target_bucket_name_response(client, request, response, xml_blob);
19321 }
19323  ds3_error* error;
19324  GByteArray* xml_blob;
19325 
19326  if (request->path->size < 2) {
19327  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19328  }
19329 
19330  xml_blob = g_byte_array_new();
19331  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19332  if (error != NULL) {
19333  g_byte_array_free(xml_blob, TRUE);
19334  return error;
19335  }
19336 
19337  return _parse_top_level_ds3_s3_target_read_preference_response(client, request, response, xml_blob);
19338 }
19340 
19341  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19342  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19343  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19344  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19345  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19346  }
19347 
19348  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19349 }
19351 
19352  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19353  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19354  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19355  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19356  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19357  }
19358 
19359  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19360 }
19362 
19363  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19364  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19365  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19366  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19367  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19368  }
19369 
19370  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19371 }
19373 
19374  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19375  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19376  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19377  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19378  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19379  }
19380 
19381  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19382 }
19384  ds3_error* error;
19385  GByteArray* xml_blob;
19386 
19387  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19388  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19389  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19390  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19391  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19392  }
19393 
19394  xml_blob = g_byte_array_new();
19395  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19396  if (error != NULL) {
19397  g_byte_array_free(xml_blob, TRUE);
19398  return error;
19399  }
19400 
19401  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
19402 }
19404  ds3_error* error;
19405  GByteArray* xml_blob;
19406  ds3_string_multimap* return_headers = NULL;
19407 
19408  if (request->path->size < 2) {
19409  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19410  }
19411 
19412  xml_blob = g_byte_array_new();
19413  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19414  if (error != NULL) {
19415  ds3_string_multimap_free(return_headers);
19416  g_byte_array_free(xml_blob, TRUE);
19417  return error;
19418  }
19419 
19420  error = _parse_top_level_ds3_s3_target_bucket_name_list_response(client, request, response, xml_blob);
19421 
19422  (*response)->paging = _parse_paging_headers(return_headers);
19423  ds3_string_multimap_free(return_headers);
19424 
19425  return error;
19426 }
19428  ds3_error* error;
19429  GByteArray* xml_blob;
19430  ds3_string_multimap* return_headers = NULL;
19431 
19432  if (request->path->size < 2) {
19433  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19434  }
19435 
19436  xml_blob = g_byte_array_new();
19437  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19438  if (error != NULL) {
19439  ds3_string_multimap_free(return_headers);
19440  g_byte_array_free(xml_blob, TRUE);
19441  return error;
19442  }
19443 
19444  error = _parse_top_level_ds3_s3_target_failure_list_response(client, request, response, xml_blob);
19445 
19446  (*response)->paging = _parse_paging_headers(return_headers);
19447  ds3_string_multimap_free(return_headers);
19448 
19449  return error;
19450 }
19452  ds3_error* error;
19453  GByteArray* xml_blob;
19454 
19455  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19456  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19457  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19458  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19459  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19460  }
19461 
19462  xml_blob = g_byte_array_new();
19463  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19464  if (error != NULL) {
19465  g_byte_array_free(xml_blob, TRUE);
19466  return error;
19467  }
19468 
19469  return _parse_top_level_ds3_s3_target_read_preference_response(client, request, response, xml_blob);
19470 }
19472  ds3_error* error;
19473  GByteArray* xml_blob;
19474  ds3_string_multimap* return_headers = NULL;
19475 
19476  if (request->path->size < 2) {
19477  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19478  }
19479 
19480  xml_blob = g_byte_array_new();
19481  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19482  if (error != NULL) {
19483  ds3_string_multimap_free(return_headers);
19484  g_byte_array_free(xml_blob, TRUE);
19485  return error;
19486  }
19487 
19488  error = _parse_top_level_ds3_s3_target_read_preference_list_response(client, request, response, xml_blob);
19489 
19490  (*response)->paging = _parse_paging_headers(return_headers);
19491  ds3_string_multimap_free(return_headers);
19492 
19493  return error;
19494 }
19496  ds3_error* error;
19497  GByteArray* xml_blob;
19498 
19499  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19500  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19501  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19502  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19503  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19504  }
19505 
19506  xml_blob = g_byte_array_new();
19507  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19508  if (error != NULL) {
19509  g_byte_array_free(xml_blob, TRUE);
19510  return error;
19511  }
19512 
19513  return _parse_top_level_ds3_s3_target_response(client, request, response, xml_blob);
19514 }
19516  ds3_error* error;
19517  GByteArray* xml_blob;
19518  ds3_string_multimap* return_headers = NULL;
19519 
19520  if (request->path->size < 2) {
19521  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19522  }
19523 
19524  xml_blob = g_byte_array_new();
19525  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19526  if (error != NULL) {
19527  ds3_string_multimap_free(return_headers);
19528  g_byte_array_free(xml_blob, TRUE);
19529  return error;
19530  }
19531 
19532  error = _parse_top_level_ds3_s3_target_list_response(client, request, response, xml_blob);
19533 
19534  (*response)->paging = _parse_paging_headers(return_headers);
19535  ds3_string_multimap_free(return_headers);
19536 
19537  return error;
19538 }
19540 
19541  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19542  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19543  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19544  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19545  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19546  }
19547 
19548  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19549 }
19551 
19552  if (request->path->size < 2) {
19553  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19554  }
19555 
19556  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19557 }
19559  ds3_error* error;
19560  GByteArray* xml_blob;
19561 
19562  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19563  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19564  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19565  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19566  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19567  }
19568 
19569  xml_blob = g_byte_array_new();
19570  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19571  if (error != NULL) {
19572  g_byte_array_free(xml_blob, TRUE);
19573  return error;
19574  }
19575 
19576  return _parse_top_level_ds3_s3_target_response(client, request, response, xml_blob);
19577 }
19579  ds3_error* error;
19580  GByteArray* xml_blob;
19581 
19582  if (request->path->size < 2) {
19583  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19584  }
19585 
19586  xml_blob = g_byte_array_new();
19587  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19588  if (error != NULL) {
19589  g_byte_array_free(xml_blob, TRUE);
19590  return error;
19591  }
19592 
19593  return _parse_top_level_ds3_s3_target_response(client, request, response, xml_blob);
19594 }
19596  ds3_error* error;
19597  GByteArray* xml_blob;
19598 
19599  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19600  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19601  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19602  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19603  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19604  }
19605 
19606  xml_blob = g_byte_array_new();
19607  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19608  if (error != NULL) {
19609  g_byte_array_free(xml_blob, TRUE);
19610  return error;
19611  }
19612 
19613  return _parse_top_level_ds3_s3_target_response(client, request, response, xml_blob);
19614 }
19616  ds3_error* error;
19617  GByteArray* xml_blob;
19618 
19619  if (request->path->size < 2) {
19620  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19621  }
19622 
19623  xml_blob = g_byte_array_new();
19624  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19625  if (error != NULL) {
19626  g_byte_array_free(xml_blob, TRUE);
19627  return error;
19628  }
19629 
19630  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
19631 }
19633 
19634  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19635  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19636  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19637  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19638  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19639  }
19640 
19641  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19642 }
19644  ds3_error* error;
19645  GByteArray* xml_blob;
19646 
19647  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19648  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19649  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19650  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19651  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19652  }
19653 
19654  xml_blob = g_byte_array_new();
19655  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19656  if (error != NULL) {
19657  g_byte_array_free(xml_blob, TRUE);
19658  return error;
19659  }
19660 
19661  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
19662 }
19664  ds3_error* error;
19665  GByteArray* xml_blob;
19666  ds3_string_multimap* return_headers = NULL;
19667 
19668  if (request->path->size < 2) {
19669  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19670  }
19671 
19672  xml_blob = g_byte_array_new();
19673  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19674  if (error != NULL) {
19675  ds3_string_multimap_free(return_headers);
19676  g_byte_array_free(xml_blob, TRUE);
19677  return error;
19678  }
19679 
19680  error = _parse_top_level_ds3_spectra_user_list_response(client, request, response, xml_blob);
19681 
19682  (*response)->paging = _parse_paging_headers(return_headers);
19683  ds3_string_multimap_free(return_headers);
19684 
19685  return error;
19686 }
19688  ds3_error* error;
19689  GByteArray* xml_blob;
19690 
19691  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19692  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19693  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19694  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19695  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19696  }
19697 
19698  xml_blob = g_byte_array_new();
19699  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19700  if (error != NULL) {
19701  g_byte_array_free(xml_blob, TRUE);
19702  return error;
19703  }
19704 
19705  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
19706 }
19708  ds3_error* error;
19709  GByteArray* xml_blob;
19710 
19711  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19712  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19713  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19714  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19715  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19716  }
19717 
19718  xml_blob = g_byte_array_new();
19719  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19720  if (error != NULL) {
19721  g_byte_array_free(xml_blob, TRUE);
19722  return error;
19723  }
19724 
19725  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
19726 }
ds3_error * ds3_put_global_data_policy_acl_for_user_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_acl_response **response)
ds3_error * ds3_put_tape_storage_domain_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_member_response **response)
Definition: ds3.h:85
void ds3_target_failure_notification_registration_response_free(ds3_target_failure_notification_registration_response *response)
Definition: ds3.c:817
void ds3_cache_filesystem_response_free(ds3_cache_filesystem_response *response)
Definition: ds3.c:1017
uint64_t length
Definition: ds3.h:644
int offline_data_staging_window_in_tb
Definition: ds3.h:1322
static ds3_error * _parse_ds3_job_node_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
ds3_str * id
Definition: ds3.h:816
static ds3_error * _parse_ds3_tape_drive_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_drive_response **_response)
void ds3_job_completed_notification_registration_list_response_free(ds3_job_completed_notification_registration_list_response *response)
Definition: ds3.c:2136
static ds3_storage_domain_failure_type _match_ds3_storage_domain_failure_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:754
ds3_suspect_blob_ds3_target_response ** suspect_blob_ds3_targets
Definition: ds3.h:1658
ds3_bool canceled_due_to_timeout
Definition: ds3.h:667
ds3_storage_domain_failure_notification_registration_response ** storage_domain_failure_notification_registrations
Definition: ds3.h:1763
ds3_priority default_get_job_priority
Definition: ds3.h:735
ds3_node_response ** nodes
Definition: ds3.h:1708
ds3_pool_response ** pools
Definition: ds3.h:1927
ds3_str * last_accessed
Definition: ds3.h:1122
ds3_str * name
Definition: ds3.h:852
ds3_error * ds3_modify_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
ds3_str * last_heartbeat
Definition: ds3.h:833
static ds3_error * _parse_top_level_ds3_storage_domain_response(const ds3_client *client, const ds3_request *request, ds3_storage_domain_response **_response, GByteArray *xml_blob)
ds3_cache_filesystem_response * cache_filesystem
Definition: ds3.h:1473
ds3_str * name
Definition: ds3.h:834
ds3_tape_state previous_state
Definition: ds3.h:1181
ds3_error * ds3_put_s3_target_bucket_name_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_bucket_name_response **response)
uint64_t version
Definition: ds3.h:854
static ds3_error * _parse_ds3_blob_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_blob_response **_response)
ds3_error * ds3_delete_data_persistence_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_pool_partition_response_free(ds3_pool_partition_response *response)
Definition: ds3.c:1058
static ds3_error * _parse_ds3_user_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_user_response **_response)
ds3_error * ds3_get_object_cached_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_cached_notification_registration_response **response)
ds3_error * ds3_clear_suspect_blob_s3_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_s3_object_type type
Definition: ds3.h:2085
static ds3_error * _parse_top_level_ds3_job_chunk_response(const ds3_client *client, const ds3_request *request, ds3_job_chunk_response **_response, GByteArray *xml_blob)
ds3_error * ds3_clean_tape_drive_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_drive_response **response)
static ds3_tape_type _match_ds3_tape_type(const ds3_log *log, const xmlChar *text)
ds3_error * ds3_get_object_lost_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_lost_notification_registration_list_response **response)
ds3_error * ds3_get_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
static ds3_tape_drive_state _match_ds3_tape_drive_state(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:956
ds3_error * ds3_get_suspect_blob_s3_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_suspect_blob_s3_target_list_response **response)
ds3_error * ds3_modify_azure_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_response **response)
ds3_error * ds3_get_ds3_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_list_response **response)
ds3_str * domain_name
Definition: ds3.h:1592
static ds3_error * _parse_ds3_s3_object_to_delete_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_object_to_delete_response **_response)
ds3_error * ds3_get_ds3_data_replication_rules_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_replication_rule_list_response **response)
ds3_error * ds3_delete_ds3_target_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_tape_partition_list_response_free(ds3_tape_partition_list_response *response)
Definition: ds3.c:2486
void ds3_group_list_response_free(ds3_group_list_response *response)
Definition: ds3.c:2038
ds3_error * ds3_verify_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
static ds3_error * _parse_top_level_ds3_blob_store_tasks_information_response(const ds3_client *client, const ds3_request *request, ds3_blob_store_tasks_information_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_node_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_node_response **response)
ds3_error * ds3_put_azure_target_read_preference_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_read_preference_response **response)
static ds3_error * _parse_ds3_job_creation_failed_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_creation_failed_notification_registration_response **_response)
ds3_error * ds3_get_object_persisted_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_persisted_notification_registration_response **response)
static ds3_error * _parse_ds3_s3_target_read_preference_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_target_read_preference_response **_response)
ds3_bool always_force_put_job_creation
Definition: ds3.h:728
ds3_reserved_task_type reserved_task_type
Definition: ds3.h:1206
static ds3_error * _parse_ds3_named_detailed_tape_partition_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_named_detailed_tape_partition_response **_response)
ds3_str * serial_number
Definition: ds3.h:1237
ds3_str * eject_pending
Definition: ds3.h:1172
static ds3_error * _parse_ds3_tape_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
ds3_str * last_modified
Definition: ds3.h:1177
void ds3_completed_job_response_free(ds3_completed_job_response *response)
Definition: ds3.c:545
ds3_tape_partition_response ** tape_partitions
Definition: ds3.h:1848
ds3_error * ds3_put_user_group_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_member_response **response)
ds3_error * ds3_get_degraded_data_persistence_rules_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_persistence_rule_list_response **response)
void ds3_s3_target_failure_list_response_free(ds3_s3_target_failure_list_response *response)
Definition: ds3.c:2640
ds3_error * ds3_head_object_request(const ds3_client *client, const ds3_request *request, ds3_metadata **_metadata)
uint64_t original_size_in_bytes
Definition: ds3.h:2004
ds3_s3_initial_data_placement_policy
Definition: ds3.h:187
static ds3_error * _parse_ds3_tape_partition_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_partition_failure_response **_response)
ds3_error * ds3_modify_azure_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_data_replication_rule_response **response)
static ds3_error * _parse_ds3_s3_target_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
int cache_available_retry_after_in_seconds
Definition: ds3.h:706
ds3_data_placement_rule_state state
Definition: ds3.h:723
ds3_write_preference_level
Definition: ds3.h:242
void ds3_degraded_blob_list_response_free(ds3_degraded_blob_list_response *response)
Definition: ds3.c:1926
void ds3_tape_failure_response_free(ds3_tape_failure_response *response)
Definition: ds3.c:1750
ds3_error * ds3_put_pool_storage_domain_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_member_response **response)
static ds3_error * _parse_top_level_ds3_tape_partition_failure_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_tape_partition_failure_notification_registration_response **_response, GByteArray *xml_blob)
static ds3_import_export_configuration _match_ds3_import_export_configuration(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:946
ds3_error * ds3_get_storage_domain_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_failure_notification_registration_response **response)
ds3_import_export_configuration
Definition: ds3.h:301
ds3_error * ds3_delete_pool_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_ds3_multi_part_upload_part_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_multi_part_upload_part_response **_response)
ds3_str * name
Definition: ds3.h:781
ds3_bulk_object_list_response * blobs
Definition: ds3.h:2072
ds3_job_request_type request_type
Definition: ds3.h:2006
ds3_bool ltfs_object_naming_allowed
Definition: ds3.h:741
ds3_user_response * owner
Definition: ds3.h:2067
ds3_bool powered_on
Definition: ds3.h:1128
ds3_error * ds3_delete_ds3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_get_azure_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_data_replication_rule_response **response)
ds3_error * ds3_head_bucket_request(const ds3_client *client, const ds3_request *request)
ds3_str * name
Definition: ds3.h:654
ds3_error * ds3_modify_tape_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_partition_response **response)
ds3_bool pending_target_commit
Definition: ds3.h:820
static ds3_error * _parse_top_level_ds3_s3_target_response(const ds3_client *client, const ds3_request *request, ds3_s3_target_response **_response, GByteArray *xml_blob)
void ds3_s3_object_lost_notification_registration_list_response_free(ds3_s3_object_lost_notification_registration_list_response *response)
Definition: ds3.c:2192
ds3_s3_object_to_delete_response ** deleted_objects
Definition: ds3.h:1987
ds3_error * ds3_get_objects_with_full_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_detailed_s3_object_list_response **response)
static ds3_error * _parse_top_level_ds3_s3_target_bucket_name_response(const ds3_client *client, const ds3_request *request, ds3_s3_target_bucket_name_response **_response, GByteArray *xml_blob)
void ds3_capacity_summary_container_response_free(ds3_capacity_summary_container_response *response)
Definition: ds3.c:2725
static ds3_s3_region _match_ds3_s3_region(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:722
ds3_job_request_type
Definition: ds3.h:178
size_t size
Definition: ds3_string.h:38
static ds3_error * _parse_top_level_ds3_target_failure_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_target_failure_notification_registration_list_response **_response, GByteArray *xml_blob)
ds3_str * last_checkpoint
Definition: ds3.h:1176
void ds3_tape_response_free(ds3_tape_response *response)
Definition: ds3.c:1093
ds3_error * ds3_get_tape_partition_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_partition_failure_notification_registration_response **response)
static ds3_error * _parse_top_level_ds3_azure_target_failure_list_response(const ds3_client *client, const ds3_request *request, ds3_azure_target_failure_list_response **_response, GByteArray *xml_blob)
ds3_str * name
Definition: ds3.h:742
void ds3_s3_target_failure_notification_registration_list_response_free(ds3_s3_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2234
ds3_str * type
Definition: ds3.h:1187
ds3_storage_domain_capacity_summary_response * tape
Definition: ds3.h:1936
uint64_t length
Definition: ds3_request.h:33
static ds3_error * _parse_ds3_group_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_group_response **_response)
ds3_str * secret_key
Definition: ds3.h:904
static ds3_error * _parse_ds3_s3_data_replication_rule_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_data_replication_rule_response **_response)
void ds3_azure_target_failure_notification_registration_list_response_free(ds3_azure_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2108
void ds3_azure_target_failure_list_response_free(ds3_azure_target_failure_list_response *response)
Definition: ds3.c:2542
ds3_write_optimization write_optimization
Definition: ds3.h:870
ds3_tape_library_response ** tape_libraries
Definition: ds3.h:1838
ds3_error * ds3_put_multi_part_upload_part_request(const ds3_client *client, const ds3_request *request, void *user_data, size_t(*callback)(void *, size_t, size_t, void *))
uint64_t original_size_in_bytes
Definition: ds3.h:694
ds3_bucket_acl_permission permission
Definition: ds3.h:661
ds3_bool dead_job_cleanup_allowed
Definition: ds3.h:796
static ds3_error * _parse_ds3_target_failure_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_target_failure_notification_registration_response **_response)
object_list_type
Definition: ds3_requests.c:337
ds3_error * ds3_put_object_request(const ds3_client *client, const ds3_request *request, void *user_data, size_t(*callback)(void *, size_t, size_t, void *))
Definition: ds3.h:92
ds3_error * ds3_delete_s3_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_get_system_capacity_summary_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_capacity_summary_container_response **response)
ds3_azure_data_replication_rule_response ** azure_data_replication_rules
Definition: ds3.h:1623
void ds3_group_response_free(ds3_group_response *response)
Definition: ds3.c:644
ds3_error * ds3_cancel_format_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
ds3_job_request_type request_type
Definition: ds3.h:697
static ds3_naming_convention_type _match_ds3_naming_convention_type(const ds3_log *log, const xmlChar *text)
static ds3_error * _parse_top_level_ds3_tape_density_directive_list_response(const ds3_client *client, const ds3_request *request, ds3_tape_density_directive_list_response **_response, GByteArray *xml_blob)
static ds3_data_isolation_level _match_ds3_data_isolation_level(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:602
void ds3_pool_list_response_free(ds3_pool_list_response *response)
Definition: ds3.c:2332
static ds3_error * _parse_ds3_azure_data_replication_rule_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_data_replication_rule_response **_response)
ds3_error * ds3_get_tape_density_directive_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_density_directive_response **response)
ds3_str * id
Definition: ds3.h:798
static ds3_error * _parse_top_level_ds3_completed_job_list_response(const ds3_client *client, const ds3_request *request, ds3_completed_job_list_response **_response, GByteArray *xml_blob)
ds3_job_chunk_client_processing_order_guarantee chunk_ordering
Definition: ds3_request.h:41
ds3_str * id
Definition: ds3.h:1121
uint64_t auto_eject_media_full_threshold
Definition: ds3.h:857
ds3_quiesced quiesced
Definition: ds3.h:1205
ds3_data_replication_rule_type type
Definition: ds3.h:768
static ds3_error * _parse_top_level_ds3_s3_object_list_response(const ds3_client *client, const ds3_request *request, ds3_s3_object_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_raw_import_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
static ds3_error * _parse_top_level_ds3_pool_partition_list_response(const ds3_client *client, const ds3_request *request, ds3_pool_partition_list_response **_response, GByteArray *xml_blob)
ds3_str * date_canceled
Definition: ds3.h:671
ds3_import_conflict_resolution_mode default_import_conflict_resolution_mode
Definition: ds3.h:707
static ds3_error * _parse_ds3_set_of_tape_bar_codes_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_set_of_tape_bar_codes_response **_response)
static ds3_error * _parse_ds3_delete_object_error_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_delete_object_error_response **_response)
static ds3_write_optimization _match_ds3_write_optimization(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:816
static ds3_error * _parse_top_level_ds3_named_detailed_tape_partition_list_response(const ds3_client *client, const ds3_request *request, ds3_named_detailed_tape_partition_list_response **_response, GByteArray *xml_blob)
static ds3_cache_entry_state _match_ds3_cache_entry_state(const ds3_log *log, const xmlChar *text)
ds3_bool truncated
Definition: ds3.h:808
ds3_error * ds3_get_ds3_target_read_preference_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_read_preference_response **response)
int unavailable_tape_partition_max_job_retry_in_mins
Definition: ds3.h:716
ds3_checksum_type
Definition: ds3.h:623
uint64_t available_raw_capacity
Definition: ds3.h:1165
ds3_str * job_id
Definition: ds3.h:818
ds3_error * ds3_get_data_persistence_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_persistence_rule_response **response)
ds3_error * ds3_put_job_completed_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_completed_notification_registration_response **response)
ds3_error * ds3_get_completed_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_completed_job_list_response **response)
ds3_error * ds3_get_job_chunk_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_objects_response **response)
void ds3_suspect_blob_pool_list_response_free(ds3_suspect_blob_pool_list_response *response)
Definition: ds3.c:1968
ds3_error * ds3_modify_node_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_node_response **response)
ds3_error * ds3_pair_back_registered_ds3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_delete_ds3_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_ds3_blob_store_task_information_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_blob_store_task_information_response **_response)
static ds3_error * _parse_ds3_pool_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
ds3_bool
Definition: ds3.h:72
static ds3_error * _parse_top_level_ds3_group_member_list_response(const ds3_client *client, const ds3_request *request, ds3_group_member_list_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_ds3_s3_target_failure_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_target_failure_notification_registration_response **_response)
int unavailable_pool_max_job_retry_in_mins
Definition: ds3.h:715
ds3_data_replication_rule_type type
Definition: ds3.h:637
ds3_str * eject_date
Definition: ds3.h:1169
ds3_str * error_message
Definition: ds3.h:1228
ds3_error * ds3_delete_data_policy_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_job_request_type request_type
Definition: ds3.h:679
ds3_database_physical_space_state
Definition: ds3.h:598
static ds3_error * _parse_top_level_ds3_physical_placement_response(const ds3_client *client, const ds3_request *request, ds3_physical_placement_response **_response, GByteArray *xml_blob)
ds3_priority default_verify_data_after_import
Definition: ds3.h:708
ds3_error * ds3_get_data_policy_acl_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_acl_response **response)
ds3_error * ds3_cancel_job_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_spectra_user_response ** spectra_users
Definition: ds3.h:1918
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:1996
ds3_error * ds3_modify_active_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
static ds3_error * _parse_top_level_ds3_detailed_tape_failure_list_response(const ds3_client *client, const ds3_request *request, ds3_detailed_tape_failure_list_response **_response, GByteArray *xml_blob)
void ds3_storage_domain_response_free(ds3_storage_domain_response *response)
Definition: ds3.c:735
ds3_bucket_response ** buckets
Definition: ds3.h:1613
ds3_error * ds3_complete_multi_part_upload_request(const ds3_client *client, const ds3_request *request, ds3_complete_multipart_upload_result_response **response)
ds3_azure_target_failure_response ** azure_target_failures
Definition: ds3.h:1868
static ds3_error * _parse_top_level_ds3_storage_domain_list_response(const ds3_client *client, const ds3_request *request, ds3_storage_domain_list_response **_response, GByteArray *xml_blob)
ds3_job_status status
Definition: ds3.h:2037
ds3_str * user_id
Definition: ds3.h:2009
static ds3_error * _parse_top_level_ds3_group_list_response(const ds3_client *client, const ds3_request *request, ds3_group_list_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_top_level_ds3_data_policy_response(const ds3_client *client, const ds3_request *request, ds3_data_policy_response **_response, GByteArray *xml_blob)
ds3_str * partition_id
Definition: ds3.h:1204
ds3_feature_key_response ** feature_keys
Definition: ds3.h:1813
ds3_detailed_s3_object_response ** detailed_s3_objects
Definition: ds3.h:2093
ds3_str * secret_key
Definition: ds3.h:1331
ds3_str * last_modified
Definition: ds3.h:1123
ds3_bool cleaning_required
Definition: ds3.h:1198
ds3_cache_entry_state state
Definition: ds3.h:1469
uint64_t byte_offset
Definition: ds3.h:640
static ds3_error * _parse_top_level_ds3_suspect_blob_pool_list_response(const ds3_client *client, const ds3_request *request, ds3_suspect_blob_pool_list_response **_response, GByteArray *xml_blob)
ds3_write_optimization
Definition: ds3.h:238
ds3_data_placement_rule_state state
Definition: ds3.h:843
ds3_error * ds3_format_foreign_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
ds3_bool auto_eject_upon_job_cancellation
Definition: ds3.h:859
ds3_error * ds3_put_bulk_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
ds3_tape_partition_failure_notification_registration_response ** tape_partition_failure_notification_registrations
Definition: ds3.h:1778
static ds3_priority _match_ds3_priority(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:566
ds3_request_type
Definition: ds3.h:609
ds3_target_state state
Definition: ds3.h:1260
ds3_bool data_path_https
Definition: ds3.h:1286
ds3_auto_inspect_mode auto_inspect
Definition: ds3.h:705
ds3_data_placement_rule_state state
Definition: ds3.h:765
ds3_priority priority
Definition: ds3.h:695
static ds3_error * _parse_top_level_ds3_cache_filesystem_response(const ds3_client *client, const ds3_request *request, ds3_cache_filesystem_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_top_level_ds3_canceled_job_response(const ds3_client *client, const ds3_request *request, ds3_canceled_job_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_ds3_detailed_tape_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_detailed_tape_failure_response **_response)
void ds3_s3_target_read_preference_response_free(ds3_s3_target_read_preference_response *response)
Definition: ds3.c:1327
void ds3_data_replication_rule_list_response_free(ds3_data_replication_rule_list_response *response)
Definition: ds3.c:1898
ds3_str * data_path_ip_address
Definition: ds3.h:830
static ds3_error * _parse_ds3_job_created_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_created_notification_registration_response **_response)
ds3_error * ds3_eject_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
ds3_error * ds3_put_ds3_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_replication_rule_response **response)
ds3_str * id
Definition: ds3.h:643
void ds3_azure_target_read_preference_response_free(ds3_azure_target_read_preference_response *response)
Definition: ds3.c:1234
ds3_tape_drive_type
Definition: ds3.h:311
void ds3_target_failure_notification_registration_list_response_free(ds3_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2122
ds3_error * ds3_delete_pool_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_suspect_blob_ds3_target_list_response(const ds3_client *client, const ds3_request *request, ds3_suspect_blob_ds3_target_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_azure_target_failure_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_failure_notification_registration_list_response **response)
ds3_tape_drive_type drive_type
Definition: ds3.h:1501
ds3_str * replicated_user_default_data_policy
Definition: ds3.h:1295
ds3_error * ds3_get_canceled_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_canceled_job_response **response)
GHashTable * ds3_string_multimap_get_hashtable(const ds3_string_multimap *mp)
static ds3_error * _parse_top_level_ds3_pool_list_response(const ds3_client *client, const ds3_request *request, ds3_pool_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_cancel_all_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_data_replication_rule_response ** ds3_data_replication_rules
Definition: ds3.h:1638
ds3_import_export_configuration import_export_configuration
Definition: ds3.h:1230
ds3_target_failure_type
Definition: ds3.h:415
ds3_multipart_upload_part_response ** parts
Definition: ds3.h:118
ds3_str * last_accessed
Definition: ds3.h:1175
ds3_str * mountpoint
Definition: ds3.h:1125
ds3_error * ds3_truncate_active_job_spectra_s3_request(const ds3_client *client, const ds3_request *request)
int data_path_http_port
Definition: ds3.h:828
ds3_error * ds3_get_ds3_target_data_policies_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_list_response **response)
ds3_error * ds3_put_bucket_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_data_path_backend_response(const ds3_client *client, const ds3_request *request, ds3_data_path_backend_response **_response, GByteArray *xml_blob)
ds3_http_response_format_type format
Definition: ds3.h:1068
ds3_error * ds3_get_s3_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_data_replication_rule_response **response)
void ds3_data_persistence_rule_response_free(ds3_data_persistence_rule_response *response)
Definition: ds3.c:572
static ds3_error * _parse_top_level_ds3_data_persistence_rule_response(const ds3_client *client, const ds3_request *request, ds3_data_persistence_rule_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_ds3_canceled_job_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_canceled_job_response **_response)
ds3_error * ds3_get_tape_drives_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_drive_list_response **response)
static ds3_error * _parse_ds3_data_replication_rule_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_replication_rule_response **_response)
static ds3_error * _parse_top_level_ds3_degraded_blob_list_response(const ds3_client *client, const ds3_request *request, ds3_degraded_blob_list_response **_response, GByteArray *xml_blob)
ds3_s3_target_failure_notification_registration_response ** s3_target_failure_notification_registrations
Definition: ds3.h:1758
ds3_job_response ** jobs
Definition: ds3.h:2042
int max_tape_fragmentation_percent
Definition: ds3.h:864
ds3_error * ds3_delete_s3_target_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_delete_group_member_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_get_s3_target_read_preferences_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_read_preference_list_response **response)
static ds3_target_state _match_ds3_target_state(const ds3_log *log, const xmlChar *text)
ds3_str * created_at
Definition: ds3.h:688
static uint64_t xml_get_uint64(xmlDocPtr doc, xmlNodePtr child_node)
Definition: ds3_requests.c:259
ds3_error * ds3_get_ds3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_response **response)
ds3_job_status
Definition: ds3.h:448
void ds3_azure_target_list_response_free(ds3_azure_target_list_response *response)
Definition: ds3.c:2570
ds3_target_failure_notification_registration_response ** ds3_target_failure_notification_registrations
Definition: ds3.h:1718
ds3_error * ds3_get_job_creation_failed_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_creation_failed_notification_registration_list_response **response)
ds3_error * ds3_put_data_policy_acl_for_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_acl_response **response)
ds3_str ** keys
Definition: ds3.h:66
ds3_error * ds3_delete_tape_partition_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_clear_all_canceled_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_ds3_target_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
static ds3_error * _parse_top_level_ds3_master_object_list_response(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **_response, GByteArray *xml_blob)
void ds3_bulk_object_list_response_free(ds3_bulk_object_list_response *response)
Definition: ds3.c:2747
ds3_error * ds3_get_blobs_on_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **response)
static ds3_error * _parse_top_level_ds3_cache_filesystem_list_response(const ds3_client *client, const ds3_request *request, ds3_cache_filesystem_list_response **_response, GByteArray *xml_blob)
static xmlDocPtr _generate_xml_delete_objects(ds3_delete_objects_response *keys_list)
Definition: ds3_requests.c:476
static ds3_error * _parse_top_level_ds3_tape_drive_list_response(const ds3_client *client, const ds3_request *request, ds3_tape_drive_list_response **_response, GByteArray *xml_blob)
void ds3_tape_partition_failure_list_response_free(ds3_tape_partition_failure_list_response *response)
Definition: ds3.c:2472
static ds3_error * _parse_top_level_ds3_detailed_s3_object_list_response(const ds3_client *client, const ds3_request *request, ds3_detailed_s3_object_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_data_policy_acls_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_acl_list_response **response)
ds3_error * ds3_get_job_chunk_dao_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_chunk_response **response)
ds3_bool auto_eject_upon_media_full
Definition: ds3.h:861
ds3_str * group_id
Definition: ds3.h:659
ds3_str * error_message
Definition: ds3.h:1300
ds3_error * ds3_get_data_policy_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_response **response)
void ds3_azure_target_read_preference_list_response_free(ds3_azure_target_read_preference_list_response *response)
Definition: ds3.c:2556
ds3_str * persistence_rule_id
Definition: ds3.h:758
ds3_bool media_ejection_allowed
Definition: ds3.h:866
ds3_error * ds3_truncate_all_active_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_str * id
Definition: ds3.h:780
static ds3_error * _parse_top_level_ds3_s3_target_failure_list_response(const ds3_client *client, const ds3_request *request, ds3_s3_target_failure_list_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_ds3_job_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_response **_response)
ds3_named_detailed_tape_partition_response ** named_detailed_tape_partitions
Definition: ds3.h:1853
static ds3_error * _parse_top_level_ds3_initiate_multipart_upload_result_response(const ds3_client *client, const ds3_request *request, ds3_initiate_multipart_upload_result_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_top_level_ds3_tape_failure_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_tape_failure_notification_registration_response **_response, GByteArray *xml_blob)
void ds3_objects_response_free(ds3_objects_response *response)
Definition: ds3.c:2879
static ds3_error * _parse_top_level_ds3_storage_domain_failure_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_storage_domain_failure_notification_registration_response **_response, GByteArray *xml_blob)
ds3_str * bucket_id
Definition: ds3.h:1167
void ds3_log_message(const ds3_log *log, ds3_log_lvl lvl, const char *message,...)
Definition: ds3_utils.c:38
static ds3_error * _parse_top_level_ds3_list_multi_part_uploads_result_response(const ds3_client *client, const ds3_request *request, ds3_list_multi_part_uploads_result_response **_response, GByteArray *xml_blob)
ds3_bool permit_going_out_of_sync
Definition: ds3.h:1323
static ds3_error * _parse_top_level_ds3_detailed_tape_partition_response(const ds3_client *client, const ds3_request *request, ds3_detailed_tape_partition_response **_response, GByteArray *xml_blob)
ds3_azure_target_read_preference_response ** azure_target_read_preferences
Definition: ds3.h:1873
ds3_log * log
Definition: ds3.h:2138
ds3_error * ds3_get_pool_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_failure_notification_registration_response **response)
ds3_str * read_from_tape_id
Definition: ds3.h:825
uint64_t completed_size_in_bytes
Definition: ds3.h:2024
ds3_str * path
Definition: ds3_request.h:32
ds3_error * ds3_get_azure_target_read_preference_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_read_preference_response **response)
static ds3_error * _parse_top_level_ds3_azure_target_read_preference_list_response(const ds3_client *client, const ds3_request *request, ds3_azure_target_read_preference_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_put_bucket_acl_for_user_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_response **response)
Definition: ds3.h:1467
void ds3_s3_object_cached_notification_registration_list_response_free(ds3_s3_object_cached_notification_registration_list_response *response)
Definition: ds3.c:2178
struct _ds3_metadata ds3_metadata
Definition: ds3.h:70
void ds3_azure_target_response_free(ds3_azure_target_response *response)
Definition: ds3.c:1195
static int num_chars_in_ds3_str(const ds3_str *const str, char ch)
Definition: ds3_requests.c:362
static ds3_error * _parse_top_level_ds3_azure_target_list_response(const ds3_client *client, const ds3_request *request, ds3_azure_target_list_response **_response, GByteArray *xml_blob)
ds3_job_node_response ** nodes
Definition: ds3.h:2002
ds3_error * ds3_modify_all_ds3_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request)
size_t num_nodes
Definition: ds3.h:2003
ds3_error * ds3_delete_s3_target_bucket_name_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_s3_object_response(const ds3_client *client, const ds3_request *request, ds3_s3_object_response **_response, GByteArray *xml_blob)
ds3_str * eject_label
Definition: ds3.h:1170
static ds3_error * _parse_top_level_ds3_data_policy_list_response(const ds3_client *client, const ds3_request *request, ds3_data_policy_list_response **_response, GByteArray *xml_blob)
ds3_delete_object_error_response ** errors
Definition: ds3.h:1989
static ds3_error * _parse_top_level_ds3_pool_partition_response(const ds3_client *client, const ds3_request *request, ds3_pool_partition_response **_response, GByteArray *xml_blob)
void ds3_multi_part_upload_response_free(ds3_multi_part_upload_response *response)
Definition: ds3.c:2947
static ds3_error * _parse_ds3_tape_failure_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_failure_notification_registration_response **_response)
uint64_t completed_size_in_bytes
Definition: ds3.h:1997
ds3_suspect_blob_pool_response ** suspect_blob_pools
Definition: ds3.h:1663
static ds3_error * _parse_top_level_ds3_pool_failure_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_pool_failure_notification_registration_response **_response, GByteArray *xml_blob)
ds3_error * ds3_put_object_lost_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_lost_notification_registration_response **response)
ds3_tape_drive_type type
Definition: ds3.h:1210
ds3_error * ds3_put_job_created_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_created_notification_registration_response **response)
ds3_storage_domain_capacity_summary_response * pool
Definition: ds3.h:1935
ds3_str * bucket_id
Definition: ds3.h:1118
ds3_error * ds3_mark_suspect_blob_s3_targets_as_degraded_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_str * bucket_id
Definition: ds3.h:684
ds3_error * ds3_get_ds3_target_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_failure_notification_registration_response **response)
ds3_storage_domain_failure_type type
Definition: ds3.h:882
ds3_naming_convention_type naming_convention
Definition: ds3.h:1020
ds3_error * ds3_get_storage_domain_failure_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_failure_notification_registration_list_response **response)
ds3_tape_density_directive_response ** tape_density_directives
Definition: ds3.h:1823
static ds3_error * _parse_ds3_s3_target_bucket_name_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_target_bucket_name_response **_response)
ds3_error * ds3_get_group_members_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_member_list_response **response)
ds3_error * ds3_modify_tape_drive_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_drive_response **response)
int partially_verify_last_percent_of_tapes
Definition: ds3.h:713
ds3_error * ds3_put_azure_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_data_replication_rule_response **response)
static ds3_error * _parse_top_level_ds3_azure_data_replication_rule_list_response(const ds3_client *client, const ds3_request *request, ds3_azure_data_replication_rule_list_response **_response, GByteArray *xml_blob)
ds3_target_failure_type type
Definition: ds3.h:1303
ds3_error * ds3_get_tape_partitions_with_full_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_named_detailed_tape_partition_list_response **response)
ds3_str * user_id
Definition: ds3.h:655
ds3_s3_object_type
Definition: ds3.h:193
ds3_error * ds3_get_pool_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_partition_response **response)
ds3_http_response_format_type format
Definition: ds3.h:962
void ds3_list_all_my_buckets_result_response_free(ds3_list_all_my_buckets_result_response *response)
Definition: ds3.c:2829
ds3_s3_object_lost_notification_registration_response ** s3_object_lost_notification_registrations
Definition: ds3.h:1743
static ds3_error * _parse_ds3_suspect_blob_tape_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_suspect_blob_tape_response **_response)
ds3_bool permit_going_out_of_sync
Definition: ds3.h:1258
static ds3_unavailable_media_usage_policy _match_ds3_unavailable_media_usage_policy(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:794
ds3_str * job_creation_date
Definition: ds3.h:817
ds3_priority verify_prior_to_auto_eject
Definition: ds3.h:869
ds3_error * ds3_put_bucket_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_response **response)
ds3_str * rechunked
Definition: ds3.h:805
ds3_str * error_message
Definition: ds3.h:672
void ds3_tapes_must_be_onlined_response_free(ds3_tapes_must_be_onlined_response *response)
Definition: ds3.c:1516
static ds3_error * _parse_ds3_objects_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_objects_response **_response)
static ds3_error * _parse_ds3_tape_density_directive_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_density_directive_response **_response)
static ds3_error * _parse_ds3_bulk_object_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
static ds3_error * _parse_ds3_cache_filesystem_information_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_cache_filesystem_information_response **_response)
ds3_error * ds3_get_feature_keys_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_feature_key_list_response **response)
void ds3_data_policy_acl_list_response_free(ds3_data_policy_acl_list_response *response)
Definition: ds3.c:1814
static ds3_tape_state _match_ds3_tape_state(const ds3_log *log, const xmlChar *text)
static ds3_error * _parse_ds3_system_failure_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_system_failure_notification_registration_response **_response)
static ds3_error * _parse_top_level_ds3_cache_information_response(const ds3_client *client, const ds3_request *request, ds3_cache_information_response **_response, GByteArray *xml_blob)
ds3_bool blobbing_enabled
Definition: ds3.h:731
static ds3_error * _parse_top_level_ds3_target_response(const ds3_client *client, const ds3_request *request, ds3_target_response **_response, GByteArray *xml_blob)
ds3_pool_type
Definition: ds3.h:275
ds3_bool force_tape_removal
Definition: ds3.h:1200
ds3_pool_failure_type type
Definition: ds3.h:1142
ds3_error * ds3_get_bucket_request(const ds3_client *client, const ds3_request *request, ds3_list_bucket_result_response **response)
static ds3_request_type _match_ds3_request_type(const ds3_log *log, const xmlChar *text)
ds3_str * account_name
Definition: ds3.h:1249
void ds3_job_creation_failed_notification_registration_response_free(ds3_job_creation_failed_notification_registration_response *response)
Definition: ds3.c:875
Definition: ds3.h:73
void ds3_s3_target_read_preference_list_response_free(ds3_s3_target_read_preference_list_response *response)
Definition: ds3.c:2654
ds3_error * ds3_get_data_persistence_rules_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_persistence_rule_list_response **response)
void ds3_tape_failure_notification_registration_list_response_free(ds3_tape_failure_notification_registration_list_response *response)
Definition: ds3.c:2276
ds3_str * display_name
Definition: ds3.h:1545
void ds3_s3_target_failure_notification_registration_response_free(ds3_s3_target_failure_notification_registration_response *response)
Definition: ds3.c:947
void ds3_bucket_response_free(ds3_bucket_response *response)
Definition: ds3.c:504
ds3_str * ds3_string_multimap_entry_get_value_by_index(const ds3_string_multimap_entry *entry, unsigned int index)
static ds3_error * _parse_top_level_ds3_group_member_response(const ds3_client *client, const ds3_request *request, ds3_group_member_response **_response, GByteArray *xml_blob)
ds3_bucket_acl_permission
Definition: ds3.h:140
ds3_error * ds3_put_global_data_policy_acl_for_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_acl_response **response)
ds3_checksum_type checksum_type
Definition: ds3.h:642
ds3_str * storage_domain_id
Definition: ds3.h:1184
ds3_error * ds3_get_azure_target_bucket_names_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_bucket_name_list_response **response)
ds3_str * name
Definition: ds3.h:1292
void ds3_detailed_s3_object_list_response_free(ds3_detailed_s3_object_list_response *response)
Definition: ds3.c:3000
ds3_str * end_point
Definition: ds3.h:1536
ds3_error * ds3_verify_system_health_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_health_verification_result_response **response)
ds3_error * ds3_get_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_response **response)
ds3_ltfs_file_naming_mode ltfs_file_naming
Definition: ds3.h:863
ds3_error * ds3_delete_folder_recursively_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_tape_partition_state state
Definition: ds3.h:1574
ds3_error * ds3_get_azure_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_response **response)
ds3_unavailable_media_usage_policy unavailable_media_policy
Definition: ds3.h:714
ds3_error * ds3_list_multi_part_upload_parts_request(const ds3_client *client, const ds3_request *request, ds3_list_parts_result_response **response)
static ds3_error * _parse_top_level_ds3_bucket_acl_list_response(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_list_response **_response, GByteArray *xml_blob)
ds3_cache_entry_information_response ** entries
Definition: ds3.h:1474
static uint16_t xml_get_uint16(xmlDocPtr doc, xmlNodePtr child_node)
Definition: ds3_requests.c:243
ds3_azure_target_response ** azure_targets
Definition: ds3.h:1878
static ds3_error * _parse_ds3_suspect_blob_ds3_target_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_suspect_blob_ds3_target_response **_response)
static ds3_error * _parse_ds3_completed_job_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_completed_job_response **_response)
ds3_target_read_preference_type read_preference
Definition: ds3.h:1351
ds3_physical_placement_response * physical_placement
Definition: ds3.h:1946
static ds3_error * _parse_ds3_tape_library_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_library_response **_response)
static ds3_quiesced _match_ds3_quiesced(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:922
ds3_priority default_put_job_priority
Definition: ds3.h:736
ds3_str * group_id
Definition: ds3.h:784
ds3_naming_convention_type naming_convention
Definition: ds3.h:926
static ds3_error * _parse_top_level_ds3_completed_job_response(const ds3_client *client, const ds3_request *request, ds3_completed_job_response **_response, GByteArray *xml_blob)
void ds3_s3_object_cached_notification_registration_response_free(ds3_s3_object_cached_notification_registration_response *response)
Definition: ds3.c:903
ds3_error * ds3_get_object_cached_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_cached_notification_registration_list_response **response)
static ds3_error * _parse_top_level_ds3_s3_object_lost_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_s3_object_lost_notification_registration_response **_response, GByteArray *xml_blob)
ds3_tape_partition_state state
Definition: ds3.h:1514
ds3_error * ds3_import_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_format_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
void ds3_system_failure_list_response_free(ds3_system_failure_list_response *response)
Definition: ds3.c:2402
void ds3_azure_data_replication_rule_list_response_free(ds3_azure_data_replication_rule_list_response *response)
Definition: ds3.c:1856
ds3_pool_partition_response ** pool_partitions
Definition: ds3.h:1788
static uint64_t xml_get_uint64_from_attribute(xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3_requests.c:271
static ds3_error * _parse_top_level_ds3_tape_library_response(const ds3_client *client, const ds3_request *request, ds3_tape_library_response **_response, GByteArray *xml_blob)
int maximum_auto_verification_frequency_in_days
Definition: ds3.h:865
ds3_error * ds3_get_groups_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_list_response **response)
ds3_str * serial_number
Definition: ds3.h:1182
static ds3_error * _parse_top_level_ds3_pool_response(const ds3_client *client, const ds3_request *request, ds3_pool_response **_response, GByteArray *xml_blob)
void ds3_s3_target_bucket_name_response_free(ds3_s3_target_bucket_name_response *response)
Definition: ds3.c:1303
ds3_str * user_name
Definition: ds3.h:2010
static ds3_error * _parse_ds3_bucket_acl_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_acl_response **_response)
ds3_error * ds3_get_suspect_buckets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_list_response **response)
ds3_error * ds3_replicate_put_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
static ds3_error * _parse_ds3_suspect_blob_azure_target_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_suspect_blob_azure_target_response **_response)
ds3_pool_state state
Definition: ds3.h:1131
ds3_error * ds3_delete_group_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_storage_domain_failure_list_response(const ds3_client *client, const ds3_request *request, ds3_storage_domain_failure_list_response **_response, GByteArray *xml_blob)
static ds3_error * _get_request_xml_nodes(GByteArray *xml_blob, xmlDocPtr *_doc, xmlNodePtr *_root, char *root_element_name)
Definition: ds3_requests.c:375
ds3_s3_target_failure_response ** s3_target_failures
Definition: ds3.h:1903
static ds3_error * _parse_top_level_ds3_bucket_acl_response(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_response **_response, GByteArray *xml_blob)
static ds3_bucket_acl_permission _match_ds3_bucket_acl_permission(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:584
void ds3_health_verification_result_response_free(ds3_health_verification_result_response *response)
Definition: ds3.c:1722
ds3_error * ds3_convert_storage_domain_to_ds3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_complete_multipart_upload_result_response(const ds3_client *client, const ds3_request *request, ds3_complete_multipart_upload_result_response **_response, GByteArray *xml_blob)
void ds3_node_list_response_free(ds3_node_list_response *response)
Definition: ds3.c:2094
static size_t _ds3_send_xml_buff(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3_requests.c:319
ds3_str * proxy_host
Definition: ds3.h:1325
void ds3_tape_failure_list_response_free(ds3_tape_failure_list_response *response)
Definition: ds3.c:1760
uint64_t used_capacity
Definition: ds3.h:1135
uint64_t max_capacity_in_bytes
Definition: ds3.h:1110
ds3_str * cloud_bucket_prefix
Definition: ds3.h:1251
void ds3_named_detailed_tape_partition_list_response_free(ds3_named_detailed_tape_partition_list_response *response)
Definition: ds3.c:2500
uint64_t cached_size_in_bytes
Definition: ds3.h:685
uint64_t completed_size_in_bytes
Definition: ds3.h:687
ds3_string_multimap_entry * ds3_string_multimap_lookup(ds3_string_multimap *map, const ds3_str *key)
static ds3_error * _parse_ds3_tapes_must_be_onlined_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tapes_must_be_onlined_response **_response)
static ds3_error * _parse_top_level_ds3_active_job_response(const ds3_client *client, const ds3_request *request, ds3_active_job_response **_response, GByteArray *xml_blob)
ds3_error * ds3_put_storage_domain_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_response **response)
void ds3_tape_drive_list_response_free(ds3_tape_drive_list_response *response)
Definition: ds3.c:2430
ds3_http_response_format_type format
Definition: ds3.h:921
static ds3_feature_key_type _match_ds3_feature_key_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:644
static ds3_error * _parse_ds3_s3_object_persisted_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_object_persisted_notification_registration_response **_response)
ds3_error * ds3_cancel_verify_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
ds3_str * dns_name
Definition: ds3.h:831
ds3_error * ds3_eject_storage_domain_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
ds3_naming_convention_type naming_convention
Definition: ds3.h:1086
static ds3_tape_failure_type _match_ds3_tape_failure_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:992
static ds3_error * _parse_top_level_ds3_job_completed_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_job_completed_notification_registration_list_response **_response, GByteArray *xml_blob)
ds3_bool naked
Definition: ds3.h:2000
ds3_reserved_task_type
Definition: ds3.h:289
ds3_error * ds3_get_s3_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_list_response **response)
static ds3_error * _parse_top_level_ds3_storage_domain_member_list_response(const ds3_client *client, const ds3_request *request, ds3_storage_domain_member_list_response **_response, GByteArray *xml_blob)
void ds3_metadata_keys_free(ds3_metadata_keys_result *metadata_keys)
Definition: ds3_requests.c:221
ds3_error * ds3_put_tape_density_directive_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_density_directive_response **response)
ds3_str * bucket_id
Definition: ds3.h:658
static ds3_error * _parse_ds3_active_job_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_active_job_response **_response)
static ds3_target_failure_type _match_ds3_target_failure_type(const ds3_log *log, const xmlChar *text)
ds3_str * start_date
Definition: ds3.h:2007
ds3_error * ds3_modify_s3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_response **response)
ds3_error * ds3_get_job_completed_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_completed_notification_registration_list_response **response)
ds3_objects_response ** objects
Definition: ds3.h:2031
ds3_error * ds3_cancel_verify_on_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_active_job_list_response_free(ds3_active_job_list_response *response)
Definition: ds3.c:2052
void ds3_s3_object_list_response_free(ds3_s3_object_list_response *response)
Definition: ds3.c:2010
ds3_error * ds3_get_blobs_on_s3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **response)
ds3_error * ds3_delete_s3_target_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_ds3_build_information_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_build_information_response **_response)
size_t num_ds3_targets
Definition: ds3.h:1894
ds3_str * azure_replication_rule_id
Definition: ds3.h:753
static xmlDocPtr _generate_xml_complete_mpu(const ds3_complete_multipart_upload_response *mpu_list)
Definition: ds3_requests.c:449
ds3_error * ds3_get_azure_target_read_preferences_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_read_preference_list_response **response)
static ds3_error * _parse_ds3_tape_partition_failure_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_partition_failure_notification_registration_response **_response)
void ds3_target_read_preference_list_response_free(ds3_target_read_preference_list_response *response)
Definition: ds3.c:2598
void ds3_metadata_entry_free(ds3_metadata_entry *entry)
Definition: ds3_requests.c:200
ds3_feature_key_type key
Definition: ds3.h:775
void ds3_data_path_backend_response_free(ds3_data_path_backend_response *response)
Definition: ds3.c:561
uint64_t num_values
Definition: ds3.h:62
ds3_s3_data_replication_rule_response ** s3_data_replication_rules
Definition: ds3.h:1643
static ds3_error * _parse_ds3_pool_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_failure_response **_response)
ds3_error * ds3_verify_bulk_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
ds3_error * ds3_get_active_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_active_job_list_response **response)
ds3_error * ds3_get_tape_partitions_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_partition_list_response **response)
ds3_error * ds3_get_azure_target_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_failure_notification_registration_response **response)
ds3_error * ds3_put_system_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_system_failure_notification_registration_response **response)
ds3_target_state state
Definition: ds3.h:1296
void ds3_storage_domain_failure_notification_registration_response_free(ds3_storage_domain_failure_notification_registration_response *response)
Definition: ds3.c:961
static ds3_error * _parse_top_level_ds3_data_persistence_rule_list_response(const ds3_client *client, const ds3_request *request, ds3_data_persistence_rule_list_response **_response, GByteArray *xml_blob)
ds3_str * proxy_domain
Definition: ds3.h:1324
ds3_error * ds3_delete_ds3_target_read_preference_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_modify_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_response **response)
ds3_str * eject_location
Definition: ds3.h:1171
ds3_error * ds3_delete_azure_target_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_ds3_azure_target_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_target_response **_response)
ds3_bool latest
Definition: ds3.h:851
static ds3_error * _parse_top_level_ds3_job_completed_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_job_completed_notification_registration_response **_response, GByteArray *xml_blob)
ds3_str * admin_auth_id
Definition: ds3.h:1283
static ds3_error * _parse_top_level_ds3_s3_target_list_response(const ds3_client *client, const ds3_request *request, ds3_s3_target_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_modify_all_tape_partitions_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_s3_object_type _match_ds3_s3_object_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:712
ds3_str * rechunked
Definition: ds3.h:678
ds3_error * ds3_get_blobs_on_azure_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **response)
static ds3_write_preference_level _match_ds3_write_preference_level(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:826
ds3_data_policy_acl_response ** data_policy_acls
Definition: ds3.h:1608
void ds3_azure_target_bucket_name_response_free(ds3_azure_target_bucket_name_response *response)
Definition: ds3.c:1210
ds3_error * ds3_get_object_persisted_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_persisted_notification_registration_list_response **response)
static ds3_error * _parse_ds3_suspect_blob_pool_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_suspect_blob_pool_response **_response)
ds3_error * ds3_modify_pool_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_partition_response **response)
static ds3_error * _parse_top_level_ds3_azure_target_failure_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_azure_target_failure_notification_registration_response **_response, GByteArray *xml_blob)
ds3_str * creation_date
Definition: ds3.h:733
ds3_pool_response ** pools
Definition: ds3.h:1793
ds3_s3_target_read_preference_response ** s3_target_read_preferences
Definition: ds3.h:1908
ds3_str * mfg_serial_number
Definition: ds3.h:1203
ds3_error * ds3_get_storage_domain_members_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_member_list_response **response)
static ds3_error * _parse_top_level_ds3_system_failure_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_system_failure_notification_registration_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_job_creation_failed_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_creation_failed_notification_registration_response **response)
ds3_user_response * owner
Definition: ds3.h:2050
ds3_system_failure_response ** system_failures
Definition: ds3.h:1818
ds3_error * ds3_modify_all_s3_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_s3_object_type type
Definition: ds3.h:853
ds3_metadata_keys_result * ds3_metadata_keys(const ds3_metadata *_metadata)
Definition: ds3_requests.c:159
ds3_error * ds3_get_user_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_spectra_user_response **response)
int data_path_port
Definition: ds3.h:1287
ds3_error * ds3_get_cache_filesystems_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_cache_filesystem_list_response **response)
static ds3_error * _parse_ds3_bucket_details_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_details_response **_response)
ds3_error * ds3_get_azure_data_replication_rules_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_data_replication_rule_list_response **response)
ds3_priority priority
Definition: ds3.h:804
ds3_error * ds3_modify_bucket_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_response **response)
static ds3_error * _parse_top_level_ds3_list_all_my_buckets_result_response(const ds3_client *client, const ds3_request *request, ds3_list_all_my_buckets_result_response **_response, GByteArray *xml_blob)
void ds3_tape_list_response_free(ds3_tape_list_response *response)
Definition: ds3.c:2514
ds3_bucket_acl_response ** bucket_acls
Definition: ds3.h:1603
ds3_error * ds3_get_tape_partition_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_partition_failure_list_response **response)
ds3_str * error_message
Definition: ds3.h:1139
ds3_bool end_to_end_crc_required
Definition: ds3.h:739
ds3_str * storage_class
Definition: ds3.h:2069
static ds3_error * _parse_ds3_target_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_target_failure_response **_response)
ds3_error * ds3_get_ds3_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_replication_rule_response **response)
ds3_bool allow_new_job_requests
Definition: ds3.h:703
ds3_error * ds3_create_error(ds3_error_code code, const char *message)
Definition: ds3_utils.c:22
ds3_database_physical_space_state database_filesystem_free_space
Definition: ds3.h:1557
static ds3_error * _parse_top_level_ds3_target_read_preference_response(const ds3_client *client, const ds3_request *request, ds3_target_read_preference_response **_response, GByteArray *xml_blob)
ds3_http_response_format_type format
Definition: ds3.h:1081
ds3_job_chunk_client_processing_order_guarantee
Definition: ds3.h:174
ds3_error * ds3_modify_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
ds3_error * ds3_get_buckets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_list_response **response)
void ds3_bulk_object_response_free(ds3_bulk_object_response *response)
Definition: ds3.c:2735
ds3_error * ds3_get_physical_placement_for_objects_with_full_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **response)
static ds3_error * _parse_top_level_ds3_s3_object_cached_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_s3_object_cached_notification_registration_response **_response, GByteArray *xml_blob)
ds3_quiesced
Definition: ds3.h:284
ds3_error * ds3_clear_suspect_blob_azure_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_data_policy_acl_response_free(ds3_data_policy_acl_response *response)
Definition: ds3.c:594
ds3_error * ds3_put_bucket_acl_for_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_response **response)
ds3_error * ds3_get_s3_target_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_failure_notification_registration_response **response)
ds3_bool full_of_data
Definition: ds3.h:1173
ds3_s3_region
Definition: ds3.h:197
void ds3_storage_domain_failure_notification_registration_list_response_free(ds3_storage_domain_failure_notification_registration_list_response *response)
Definition: ds3.c:2248
static ds3_error * _parse_top_level_ds3_s3_object_persisted_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_s3_object_persisted_notification_registration_list_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_ds3_storage_domain_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_failure_response **_response)
ds3_str * data_path_end_point
Definition: ds3.h:1285
ds3_cache_filesystem_information_response ** filesystems
Definition: ds3.h:1482
static ds3_error * _init_request_payload(const ds3_request *_request, ds3_xml_send_buff *send_buff, const object_list_type operation_type)
Definition: ds3_requests.c:499
ds3_str * creation_date
Definition: ds3.h:648
void ds3_suspect_blob_ds3_target_list_response_free(ds3_suspect_blob_ds3_target_list_response *response)
Definition: ds3.c:1954
ds3_error * ds3_get_storage_domain_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_member_response **response)
uint64_t limit_value
Definition: ds3.h:776
ds3_error * ds3_put_data_policy_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_response **response)
static ds3_error * _parse_top_level_ds3_tape_partition_failure_list_response(const ds3_client *client, const ds3_request *request, ds3_tape_partition_failure_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_tape_library_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_library_response **response)
ds3_str * id
Definition: ds3.h:651
uint64_t cached_size_in_bytes
Definition: ds3.h:1995
ds3_error * ds3_force_tape_environment_refresh_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_target_read_preference_response_free(ds3_target_read_preference_response *response)
Definition: ds3.c:1272
ds3_str * node_id
Definition: ds3.h:819
static ds3_error * _parse_ds3_system_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_system_failure_response **_response)
ds3_str * error_message
Definition: ds3.h:690
ds3_error * ds3_clear_suspect_blob_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_cancel_import_on_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_cancel_import_on_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
static ds3_error * _parse_top_level_ds3_canceled_job_list_response(const ds3_client *client, const ds3_request *request, ds3_canceled_job_list_response **_response, GByteArray *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)
static ds3_target_access_control_replication _match_ds3_target_access_control_replication(const ds3_log *log, const xmlChar *text)
ds3_str * id
Definition: ds3.h:1539
ds3_delete_objects_response * delete_objects
Definition: ds3_request.h:45
ds3_target_read_preference_type
Definition: ds3.h:425
static uint64_t xml_get_uint16_from_attribute(xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3_requests.c:255
ds3_job_status status
Definition: ds3.h:2008
ds3_error * ds3_get_tape_partition_failure_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_partition_failure_notification_registration_list_response **response)
ds3_str ** values
Definition: ds3.h:61
ds3_str * last_fully_verified
Definition: ds3.h:1320
static ds3_tape_partition_state _match_ds3_tape_partition_state(const ds3_log *log, const xmlChar *text)
ds3_tape_response * tape
Definition: ds3.h:1580
ds3_error * ds3_get_suspect_blob_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_suspect_blob_tape_list_response **response)
static ds3_error * _parse_top_level_ds3_delete_result_response(const ds3_client *client, const ds3_request *request, ds3_delete_result_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_top_level_ds3_suspect_blob_azure_target_list_response(const ds3_client *client, const ds3_request *request, ds3_suspect_blob_azure_target_list_response **_response, GByteArray *xml_blob)
ds3_str * object_id
Definition: ds3.h:645
ds3_error * ds3_eject_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
ds3_str * guid
Definition: ds3.h:1119
static ds3_error * _parse_top_level_ds3_azure_target_read_preference_response(const ds3_client *client, const ds3_request *request, ds3_azure_target_read_preference_response **_response, GByteArray *xml_blob)
ds3_str * proxy_password
Definition: ds3.h:1326
static ds3_error * _internal_request_dispatcher(const ds3_client *client, const ds3_request *request, void *read_user_struct, size_t(*read_handler_func)(void *, size_t, size_t, void *), void *write_user_struct, size_t(*write_handler_func)(void *, size_t, size_t, void *), ds3_string_multimap **return_headers)
Definition: ds3_requests.c:348
uint64_t completed_size_in_bytes
Definition: ds3.h:794
ds3_str * data_path_proxy
Definition: ds3.h:1288
ds3_str * name
Definition: ds3.h:1321
ds3_error * ds3_mark_suspect_blob_ds3_targets_as_degraded_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_get_users_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_spectra_user_list_response **response)
ds3_error * ds3_put_pool_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_partition_response **response)
int page_truncated
Definition: ds3.h:51
ds3_bool always_minimize_spanning_across_media
Definition: ds3.h:729
ds3_str * error_message
Definition: ds3.h:1199
static ds3_error * _parse_top_level_ds3_data_replication_rule_response(const ds3_client *client, const ds3_request *request, ds3_data_replication_rule_response **_response, GByteArray *xml_blob)
ds3_error * ds3_modify_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
size_t num_objects
Definition: ds3.h:2017
ds3_http_response_format_type
Definition: ds3.h:604
ds3_error * ds3_delete_azure_target_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_set_of_tape_bar_codes_response ** tapes_to_online
Definition: ds3.h:1446
ds3_str * storage_domain_id
Definition: ds3.h:1132
ds3_data_placement_rule_state
Definition: ds3.h:157
ds3_error * ds3_abort_multi_part_upload_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_get_active_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_active_job_response **response)
ds3_storage_domain_failure_response ** storage_domain_failures
Definition: ds3.h:1798
ds3_error * ds3_modify_data_persistence_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_persistence_rule_response **response)
static ds3_error * _parse_top_level_ds3_tape_library_list_response(const ds3_client *client, const ds3_request *request, ds3_tape_library_list_response **_response, GByteArray *xml_blob)
ds3_suspect_blob_azure_target_response ** suspect_blob_azure_targets
Definition: ds3.h:1653
ds3_error * ds3_get_azure_target_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_failure_list_response **response)
static ds3_error * _parse_top_level_ds3_storage_domain_failure_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_storage_domain_failure_notification_registration_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_modify_data_path_backend_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_path_backend_response **response)
void ds3_complete_multipart_upload_result_response_free(ds3_complete_multipart_upload_result_response *response)
Definition: ds3.c:1606
ds3_http_response_format_type format
Definition: ds3.h:988
static ds3_error * _parse_top_level_ds3_data_replication_rule_list_response(const ds3_client *client, const ds3_request *request, ds3_data_replication_rule_list_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_top_level_ds3_pool_failure_list_response(const ds3_client *client, const ds3_request *request, ds3_pool_failure_list_response **_response, GByteArray *xml_blob)
void ds3_system_failure_notification_registration_list_response_free(ds3_system_failure_notification_registration_list_response *response)
Definition: ds3.c:2262
ds3_error * ds3_cancel_eject_on_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
static ds3_error * _parse_top_level_ds3_s3_object_lost_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_s3_object_lost_notification_registration_list_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_ds3_azure_target_read_preference_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_target_read_preference_response **_response)
ds3_error * ds3_get_cache_state_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_cache_information_response **response)
ds3_suspect_blob_s3_target_response ** suspect_blob_s3_targets
Definition: ds3.h:1668
ds3_data_placement_rule_state state
Definition: ds3.h:635
ds3_str * read_from_ds3_target_id
Definition: ds3.h:822
static ds3_error * _parse_top_level_ds3_s3_object_persisted_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_s3_object_persisted_notification_registration_response **_response, GByteArray *xml_blob)
ds3_error * ds3_force_full_cache_reclaim_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_data_persistence_rule_response ** data_persistence_rules
Definition: ds3.h:1628
static ds3_paging * _parse_paging_headers(ds3_string_multimap *response_headers)
static ds3_error * _parse_ds3_data_policy_acl_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_policy_acl_response **_response)
void ds3_storage_domain_list_response_free(ds3_storage_domain_list_response *response)
Definition: ds3.c:2374
ds3_quiesced quiesced
Definition: ds3.h:1259
ds3_str * expiration_date
Definition: ds3.h:773
void ds3_detailed_tape_partition_response_free(ds3_detailed_tape_partition_response *response)
Definition: ds3.c:1629
ds3_storage_domain_response ** storage_domains
Definition: ds3.h:1808
ds3_bool default_verify_data_prior_to_import
Definition: ds3.h:709
ds3_str * s3_replication_rule_id
Definition: ds3.h:759
ds3_str * date_completed
Definition: ds3.h:689
ds3_error * ds3_get_group_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_member_response **response)
ds3_error * ds3_cancel_import_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
ds3_error * ds3_get_tape_density_directives_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_density_directive_list_response **response)
ds3_error * ds3_verify_physical_placement_for_objects_with_full_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **response)
ds3_error * ds3_delete_ds3_target_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_delete_job_creation_failed_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_tape_drive_response(const ds3_client *client, const ds3_request *request, ds3_tape_drive_response **_response, GByteArray *xml_blob)
ds3_error * ds3_delete_permanently_lost_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_pool_state _match_ds3_pool_state(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:882
ds3_error * ds3_delete_tape_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_azure_target_failure_notification_registration_response_free(ds3_azure_target_failure_notification_registration_response *response)
Definition: ds3.c:803
uint64_t num_keys
Definition: ds3.h:67
Definition: ds3.h:59
ds3_error * ds3_get_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_list_response **response)
size_t ds3_load_buffer(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3_utils.c:30
static ds3_error * _parse_top_level_ds3_system_failure_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_system_failure_notification_registration_list_response **_response, GByteArray *xml_blob)
void ds3_s3_object_persisted_notification_registration_list_response_free(ds3_s3_object_persisted_notification_registration_list_response *response)
Definition: ds3.c:2206
static ds3_error * _parse_top_level_ds3_azure_target_failure_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_azure_target_failure_notification_registration_list_response **_response, GByteArray *xml_blob)
static ds3_auto_inspect_mode _match_ds3_auto_inspect_mode(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:554
ds3_str * last_verified
Definition: ds3.h:1178
ds3_naming_convention_type naming_convention
Definition: ds3.h:993
ds3_str * bucket_id
Definition: ds3.h:791
ds3_error * ds3_get_blob_persistence_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_str **response)
ds3_blob_store_task_state
Definition: ds3.h:437
ds3_error * ds3_get_completed_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_completed_job_response **response)
void ds3_job_completed_notification_registration_response_free(ds3_job_completed_notification_registration_response *response)
Definition: ds3.c:846
static ds3_error * _parse_top_level_ds3_data_policy_acl_list_response(const ds3_client *client, const ds3_request *request, ds3_data_policy_acl_list_response **_response, GByteArray *xml_blob)
float max_percent_utilization_of_filesystem
Definition: ds3.h:1111
static ds3_job_chunk_blob_store_state _match_ds3_job_chunk_blob_store_state(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:654
ds3_error * ds3_delegate_create_user_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_spectra_user_response **response)
ds3_tape_drive_state state
Definition: ds3.h:1208
ds3_priority
Definition: ds3.h:132
ds3_bool assigned_to_storage_domain
Definition: ds3.h:1164
ds3_str * user_id
Definition: ds3.h:681
void ds3_pool_failure_notification_registration_list_response_free(ds3_pool_failure_notification_registration_list_response *response)
Definition: ds3.c:2220
ds3_bool write_protected
Definition: ds3.h:1189
ds3_error * ds3_delete_storage_domain_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_ds3_s3_object_cached_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_object_cached_notification_registration_response **_response)
ds3_data_persistence_rule_type
Definition: ds3.h:152
ds3_naming_convention_type
Definition: ds3.h:616
ds3_pool_failure_response ** pool_failures
Definition: ds3.h:1783
ds3_bool take_ownership_pending
Definition: ds3.h:1185
ds3_error * ds3_modify_ds3_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_replication_rule_response **response)
static ds3_target_read_preference_type _match_ds3_target_read_preference_type(const ds3_log *log, const xmlChar *text)
ds3_error * ds3_get_tape_partition_with_full_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_detailed_tape_partition_response **response)
static ds3_error * _parse_top_level_ds3_spectra_user_list_response(const ds3_client *client, const ds3_request *request, ds3_spectra_user_list_response **_response, GByteArray *xml_blob)
void ds3_str_free(ds3_str *string)
Definition: ds3_string.c:50
static ds3_error * _parse_ds3_storage_domain_failure_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_failure_notification_registration_response **_response)
ds3_s3_target_response ** s3_targets
Definition: ds3.h:1929
ds3_completed_job_response ** completed_jobs
Definition: ds3.h:1703
ds3_bool always_replicate_deletes
Definition: ds3.h:730
ds3_job_request_type request_type
Definition: ds3.h:2035
static ds3_error * _parse_ds3_tape_partition_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_partition_response **_response)
ds3_error * ds3_format_all_foreign_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_bool https
Definition: ds3.h:1318
static ds3_error * _parse_ds3_azure_target_bucket_name_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_target_bucket_name_response **_response)
ds3_str * partition_id
Definition: ds3.h:1127
ds3_suspect_blob_tape_response ** suspect_blob_tapes
Definition: ds3.h:1673
ds3_str * ds3_str_dup(const ds3_str *string)
Definition: ds3_string.c:32
void ds3_list_bucket_result_response_free(ds3_list_bucket_result_response *response)
Definition: ds3.c:3014
ds3_str * key
Definition: ds3.h:2065
ds3_target_response ** ds3_targets
Definition: ds3.h:1893
ds3_naming_convention_type naming_convention
Definition: ds3.h:954
ds3_error * ds3_get_tape_drive_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_drive_response **response)
static ds3_system_failure_type _match_ds3_system_failure_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:776
ds3_str * read_from_azure_target_id
Definition: ds3.h:821
static ds3_error * _parse_ds3_group_member_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_group_member_response **_response)
static ds3_error * _parse_ds3_node_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_node_response **_response)
ds3_data_persistence_rule_type type
Definition: ds3.h:725
ds3_str ** strings_list
Definition: ds3.h:123
The public definitions for the Spectra S3 C SDK.
ds3_job_request_type request_type
Definition: ds3.h:807
ds3_error * ds3_verify_user_is_member_of_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_response **response)
void ds3_pool_failure_notification_registration_response_free(ds3_pool_failure_notification_registration_response *response)
Definition: ds3.c:889
ds3_error * ds3_put_ds3_target_read_preference_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_read_preference_response **response)
ds3_str * id
Definition: ds3.h:832
void ds3_s3_object_persisted_notification_registration_response_free(ds3_s3_object_persisted_notification_registration_response *response)
Definition: ds3.c:932
static ds3_http_response_format_type _match_ds3_http_response_format_type(const ds3_log *log, const xmlChar *text)
ds3_error * ds3_modify_user_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_spectra_user_response **response)
ds3_error * ds3_put_tape_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_notification_registration_response **response)
ds3_s3_region region
Definition: ds3.h:1330
ds3_error * ds3_get_physical_placement_for_objects_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_physical_placement_response **response)
ds3_str * default_data_policy_id
Definition: ds3.h:901
ds3_error * ds3_delete_s3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_put_job_creation_failed_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_creation_failed_notification_registration_response **response)
static ds3_pool_health _match_ds3_pool_health(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:872
void ds3_feature_key_list_response_free(ds3_feature_key_list_response *response)
Definition: ds3.c:2388
ds3_error * ds3_mark_suspect_blob_tapes_as_degraded_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_cancel_active_job_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_ds3_target_read_preference_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_target_read_preference_response **_response)
ds3_bool minimize_spanning_across_media
Definition: ds3.h:800
ds3_priority priority
Definition: ds3.h:2005
ds3_str * bucket_name
Definition: ds3.h:1994
void ds3_s3_target_bucket_name_list_response_free(ds3_s3_target_bucket_name_list_response *response)
Definition: ds3.c:2626
static ds3_error * _parse_top_level_ds3_s3_target_read_preference_list_response(const ds3_client *client, const ds3_request *request, ds3_s3_target_read_preference_list_response **_response, GByteArray *xml_blob)
void ds3_tape_library_response_free(ds3_tape_library_response *response)
Definition: ds3.c:1157
void ds3_tape_partition_failure_notification_registration_response_free(ds3_tape_partition_failure_notification_registration_response *response)
Definition: ds3.c:1003
ds3_job_creation_failed_notification_registration_response ** job_creation_failed_notification_registrations
Definition: ds3.h:1733
ds3_error * ds3_get_job_completed_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_completed_notification_registration_response **response)
ds3_str * proxy_username
Definition: ds3.h:1328
ds3_error * ds3_delete_object_request(const ds3_client *client, const ds3_request *request)
ds3_bool implicit_job_id_resolution
Definition: ds3.h:799
void ds3_s3_data_replication_rule_response_free(ds3_s3_data_replication_rule_response *response)
Definition: ds3.c:712
ds3_target_failure_type type
Definition: ds3.h:1346
uint64_t reserved_capacity
Definition: ds3.h:1130
ds3_error * ds3_delete_azure_target_bucket_name_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_tape_density_directive_response(const ds3_client *client, const ds3_request *request, ds3_tape_density_directive_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_tape_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_detailed_tape_failure_list_response **response)
ds3_error * ds3_compact_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
ds3_str * beans_retriever_name
Definition: ds3.h:1591
ds3_error * ds3_modify_ds3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_response **response)
static ds3_error * _parse_top_level_ds3_suspect_blob_tape_list_response(const ds3_client *client, const ds3_request *request, ds3_suspect_blob_tape_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_pool_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_failure_list_response **response)
ds3_quiesced quiesced
Definition: ds3.h:1129
ds3_error * ds3_delete_storage_domain_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_system_failure_notification_registration_response ** system_failure_notification_registrations
Definition: ds3.h:1768
ds3_str * id
Definition: ds3.h:1319
static ds3_error * _parse_top_level_ds3_bucket_response(const ds3_client *client, const ds3_request *request, ds3_bucket_response **_response, GByteArray *xml_blob)
ds3_str * id
Definition: ds3.h:1546
ds3_error * ds3_get_bucket_acl_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_response **response)
static ds3_job_status _match_ds3_job_status(const ds3_log *log, const xmlChar *text)
ds3_error * ds3_modify_cache_filesystem_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_cache_filesystem_response **response)
ds3_bool aggregating
Definition: ds3.h:1993
static ds3_error * _parse_ds3_bucket_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_response **_response)
void ds3_job_response_free(ds3_job_response *response)
Definition: ds3.c:2860
ds3_str * ds3_replication_rule_id
Definition: ds3.h:756
void ds3_tape_density_directive_response_free(ds3_tape_density_directive_response *response)
Definition: ds3.c:1118
void ds3_job_chunk_response_free(ds3_job_chunk_response *response)
Definition: ds3.c:681
ds3_str * admin_secret_key
Definition: ds3.h:1284
ds3_str * creation_date
Definition: ds3.h:849
ds3_str * name
Definition: ds3.h:60
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:686
ds3_error * ds3_delete_storage_domain_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_target_failure_type type
Definition: ds3.h:1273
void ds3_node_response_free(ds3_node_response *response)
Definition: ds3.c:698
ds3_error * ds3_clear_suspect_blob_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_target_read_preference_type read_preference
Definition: ds3.h:1308
ds3_bool verify_after_write
Definition: ds3.h:811
ds3_target_access_control_replication access_control_replication
Definition: ds3.h:1282
ds3_job_completed_notification_registration_response ** job_completed_notification_registrations
Definition: ds3.h:1723
ds3_write_preference_level write_preference
Definition: ds3.h:891
ds3_tape_drive_state
Definition: ds3.h:305
void ds3_cache_filesystem_list_response_free(ds3_cache_filesystem_list_response *response)
Definition: ds3.c:1842
ds3_s3_initial_data_placement_policy initial_data_placement
Definition: ds3.h:840
ds3_error * ds3_cancel_import_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
ds3_str * checksum
Definition: ds3.h:641
ds3_error * ds3_get_s3_target_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_failure_list_response **response)
ds3_error * ds3_get_tape_failure_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_notification_registration_list_response **response)
ds3_error * ds3_delete_data_policy_acl_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_force_target_environment_refresh_spectra_s3_request(const ds3_client *client, const ds3_request *request)
int data_path_https_port
Definition: ds3.h:829
ds3_blob_response * blob
Definition: ds3.h:1468
ds3_multi_part_upload_response ** uploads
Definition: ds3.h:2123
static ds3_error * _parse_top_level_ds3_capacity_summary_container_response(const ds3_client *client, const ds3_request *request, ds3_capacity_summary_container_response **_response, GByteArray *xml_blob)
ds3_error * ds3_delete_objects_request(const ds3_client *client, const ds3_request *request, ds3_delete_result_response **response)
ds3_error * ds3_list_multi_part_uploads_request(const ds3_client *client, const ds3_request *request, ds3_list_multi_part_uploads_result_response **response)
void ds3_metadata_free(ds3_metadata *_metadata)
Definition: ds3_requests.c:187
static ds3_error * _parse_top_level_ds3_active_job_list_response(const ds3_client *client, const ds3_request *request, ds3_active_job_list_response **_response, GByteArray *xml_blob)
ds3_cache_entry_state
Definition: ds3.h:444
ds3_error * ds3_clear_all_completed_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_list_parts_result_response(const ds3_client *client, const ds3_request *request, ds3_list_parts_result_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_ds3_storage_domain_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_response **_response)
ds3_bulk_object_list_response * object_list
Definition: ds3_request.h:40
uint64_t default_blob_size
Definition: ds3.h:734
static ds3_job_request_type _match_ds3_job_request_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:676
ds3_error * ds3_get_objects_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_list_response **response)
void ds3_cache_filesystem_information_response_free(ds3_cache_filesystem_information_response *response)
Definition: ds3.c:1568
ds3_error * ds3_get_data_path_backend_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_path_backend_response **response)
ds3_error * ds3_put_azure_target_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_failure_notification_registration_response **response)
ds3_bool empty
Definition: ds3.h:650
ds3_error * ds3_get_object_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_response **response)
ds3_str * serial_number
Definition: ds3.h:1207
ds3_str * last_modified
Definition: ds3.h:2066
#define STRING_BUFFER_SIZE
Definition: ds3_requests.c:42
ds3_tape_partition_failure_response ** tape_partition_failures
Definition: ds3.h:1843
unsigned int ds3_string_multimap_entry_get_num_values(const ds3_string_multimap_entry *map_entry)
ds3_error * ds3_put_tape_partition_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_partition_failure_notification_registration_response **response)
ds3_error * ds3_delete_pool_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_quiesced quiesced
Definition: ds3.h:1329
static ds3_error * _parse_top_level_ds3_group_response(const ds3_client *client, const ds3_request *request, ds3_group_response **_response, GByteArray *xml_blob)
ds3_bool replicating
Definition: ds3.h:806
static ds3_error * _parse_top_level_ds3_azure_target_response(const ds3_client *client, const ds3_request *request, ds3_azure_target_response **_response, GByteArray *xml_blob)
ds3_error * ds3_cancel_eject_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
ds3_bulk_object_response ** objects
Definition: ds3.h:2016
ds3_str * description_for_identification
Definition: ds3.h:1168
ds3_error * ds3_verify_s3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_response **response)
ds3_error * ds3_get_suspect_objects_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_list_response **response)
ds3_str * tape_id
Definition: ds3.h:1209
ds3_error * ds3_get_suspect_blob_ds3_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_suspect_blob_ds3_target_list_response **response)
ds3_s3_target_bucket_name_response ** s3_target_bucket_names
Definition: ds3.h:1898
ds3_str * rechunked
Definition: ds3.h:696
static ds3_error * _parse_top_level_ds3_tape_partition_response(const ds3_client *client, const ds3_request *request, ds3_tape_partition_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_list_response **response)
void ds3_active_job_response_free(ds3_active_job_response *response)
Definition: ds3.c:666
ds3_versioning_level versioning
Definition: ds3.h:744
ds3_error * ds3_get_nodes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_node_list_response **response)
static const char * METADATA_PREFIX
Definition: ds3_requests.c:64
static ds3_error * _parse_ds3_storage_domain_member_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_member_response **_response)
ds3_job_chunk_blob_store_state blob_store_state
Definition: ds3.h:814
static bool element_equal(const xmlNodePtr xml_node, const char *element_name)
Definition: ds3_requests.c:239
uint64_t size
Definition: ds3.h:2068
ds3_error * ds3_put_azure_target_bucket_name_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_bucket_name_response **response)
static ds3_error * _parse_top_level_ds3_target_failure_list_response(const ds3_client *client, const ds3_request *request, ds3_target_failure_list_response **_response, GByteArray *xml_blob)
Definition: ds3.h:50
ds3_error * ds3_modify_data_policy_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_response **response)
ds3_str * management_url
Definition: ds3.h:1222
ds3_error * ds3_verify_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
ds3_pool_failure_notification_registration_response ** pool_failure_notification_registrations
Definition: ds3.h:1753
static ds3_error * _parse_ds3_contents_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_contents_response **_response)
static ds3_tape_partition_failure_type _match_ds3_tape_partition_failure_type(const ds3_log *log, const xmlChar *text)
static ds3_error * _parse_top_level_ds3_tape_failure_list_response(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **_response, GByteArray *xml_blob)
void ds3_storage_domain_member_list_response_free(ds3_storage_domain_member_list_response *response)
Definition: ds3.c:2360
static ds3_error * _parse_top_level_ds3_job_created_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_job_created_notification_registration_list_response **_response, GByteArray *xml_blob)
ds3_str * e_tag
Definition: ds3.h:2064
ds3_bool built_in
Definition: ds3.h:779
ds3_error * ds3_register_azure_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_response **response)
static ds3_error * _parse_top_level_ds3_objects_response(const ds3_client *client, const ds3_request *request, ds3_objects_response **_response, GByteArray *xml_blob)
ds3_error * ds3_put_pool_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_failure_notification_registration_response **response)
ds3_error * ds3_delete_tape_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_s3_target_bucket_name_list_response(const ds3_client *client, const ds3_request *request, ds3_s3_target_bucket_name_list_response **_response, GByteArray *xml_blob)
ds3_target_state state
Definition: ds3.h:1333
ds3_tape_partition_state state
Definition: ds3.h:1238
ds3_bool aggregating
Definition: ds3.h:790
ds3_error * ds3_get_degraded_azure_data_replication_rules_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_data_replication_rule_list_response **response)
ds3_multi_part_upload_part_response ** parts
Definition: ds3.h:2052
static ds3_error * _parse_top_level_ds3_azure_data_replication_rule_response(const ds3_client *client, const ds3_request *request, ds3_azure_data_replication_rule_response **_response, GByteArray *xml_blob)
ds3_error * ds3_verify_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
ds3_bool truncated
Definition: ds3.h:680
static ds3_error * _parse_ds3_pool_partition_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_partition_response **_response)
ds3_error * ds3_get_job_chunks_ready_for_client_processing_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
ds3_error * ds3_get_object_request(const ds3_client *client, const ds3_request *request, void *user_data, size_t(*callback)(void *, size_t, size_t, void *))
ds3_error * ds3_delete_azure_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_azure_target_bucket_name_response(const ds3_client *client, const ds3_request *request, ds3_azure_target_bucket_name_response **_response, GByteArray *xml_blob)
ds3_bool secure_media_allocation
Definition: ds3.h:868
ds3_error * ds3_get_job_created_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_created_notification_registration_response **response)
static ds3_error * _parse_ds3_s3_target_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_target_failure_response **_response)
ds3_error * ds3_get_storage_domain_capacity_summary_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_capacity_summary_container_response **response)
ds3_error * ds3_delete_bucket_acl_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_data_replication_rule_type type
Definition: ds3.h:845
ds3_error * ds3_put_ds3_target_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_failure_notification_registration_response **response)
ds3_error * ds3_get_degraded_buckets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_list_response **response)
static ds3_error * _parse_ds3_job_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
ds3_target_failure_response ** ds3_target_failures
Definition: ds3.h:1883
static ds3_error * _parse_ds3_bucket_details_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
uint64_t logical_used_capacity
Definition: ds3.h:653
ds3_target_access_control_replication
Definition: ds3.h:411
static ds3_error * _parse_top_level_ds3_job_list_response(const ds3_client *client, const ds3_request *request, ds3_job_list_response **_response, GByteArray *xml_blob)
void ds3_blob_store_tasks_information_response_free(ds3_blob_store_tasks_information_response *response)
Definition: ds3.c:1546
void ds3_cache_entry_information_response_free(ds3_cache_entry_information_response *response)
Definition: ds3.c:1559
ds3_error * ds3_delete_job_created_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_naming_convention_type naming_convention
Definition: ds3.h:967
static ds3_error * _parse_top_level_ds3_tape_list_response(const ds3_client *client, const ds3_request *request, ds3_tape_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_data_planner_blob_store_tasks_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_blob_store_tasks_information_response **response)
ds3_blob_store_task_state state
Definition: ds3.h:1458
static ds3_error * _parse_ds3_s3_object_lost_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_object_lost_notification_registration_response **_response)
static ds3_error * _parse_top_level_ds3_job_creation_failed_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_job_creation_failed_notification_registration_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_ds3_multi_part_upload_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_multi_part_upload_response **_response)
ds3_metadata_entry * ds3_metadata_get_entry(const ds3_metadata *_metadata, const char *name)
Definition: ds3_requests.c:122
ds3_error * ds3_modify_all_azure_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_bucket_acl_response_free(ds3_bucket_acl_response *response)
Definition: ds3.c:517
static ds3_error * _parse_top_level_ds3_feature_key_list_response(const ds3_client *client, const ds3_request *request, ds3_feature_key_list_response **_response, GByteArray *xml_blob)
ds3_tape_partition_failure_type type
Definition: ds3.h:1245
ds3_import_export_configuration import_export_configuration
Definition: ds3.h:1506
int auto_verify_frequency_in_days
Definition: ds3.h:1250
ds3_priority verify_pending
Definition: ds3.h:1188
void ds3_contents_response_free(ds3_contents_response *response)
Definition: ds3.c:2959
ds3_error * ds3_get_tape_libraries_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_library_list_response **response)
ds3_str * user_id
Definition: ds3.h:662
ds3_error * ds3_import_s3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_pool_type _match_ds3_pool_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:900
void ds3_s3_object_response_free(ds3_s3_object_response *response)
Definition: ds3.c:723
void ds3_storage_domain_member_response_free(ds3_storage_domain_member_response *response)
Definition: ds3.c:766
ds3_str * creation_date
Definition: ds3.h:1486
ds3_error * ds3_put_data_persistence_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_persistence_rule_response **response)
ds3_tape_type
Definition: ds3.h:394
ds3_error * ds3_online_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
ds3_error * ds3_get_service_request(const ds3_client *client, const ds3_request *request, ds3_list_all_my_buckets_result_response **response)
void ds3_s3_data_replication_rule_list_response_free(ds3_s3_data_replication_rule_list_response *response)
Definition: ds3.c:1912
ds3_error * ds3_get_degraded_ds3_data_replication_rules_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_replication_rule_list_response **response)
ds3_complete_multipart_upload_response * mpu_list
Definition: ds3_request.h:43
ds3_error * ds3_get_degraded_s3_data_replication_rules_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_data_replication_rule_list_response **response)
ds3_str * auth_id
Definition: ds3.h:900
size_t num_deleted_objects
Definition: ds3.h:1988
void ds3_string_multimap_free(ds3_string_multimap *map)
ds3_import_export_configuration import_export_configuration
Definition: ds3.h:1566
ds3_error * ds3_get_tape_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_partition_response **response)
ds3_pool_type type
Definition: ds3.h:1134
ds3_http_response_format_type format
Definition: ds3.h:1015
void ds3_job_created_notification_registration_response_free(ds3_job_created_notification_registration_response *response)
Definition: ds3.c:861
uint64_t cached_size_in_bytes
Definition: ds3.h:666
static ds3_error * _parse_ds3_type_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_type_response **_response)
static ds3_error * _parse_top_level_ds3_tape_response(const ds3_client *client, const ds3_request *request, ds3_tape_response **_response, GByteArray *xml_blob)
ds3_str * read_from_s3_target_id
Definition: ds3.h:824
ds3_error * ds3_get_s3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_response **response)
ds3_str * name
Definition: ds3.h:2001
ds3_tape_drive_response ** tape_drives
Definition: ds3.h:1828
ds3_error * ds3_allocate_job_chunk_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_objects_response **response)
ds3_error * ds3_initiate_multi_part_upload_request(const ds3_client *client, const ds3_request *request, ds3_initiate_multipart_upload_result_response **response)
static ds3_error * _parse_top_level_ds3_bulk_object_list_response(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **_response, GByteArray *xml_blob)
ds3_bool naked
Definition: ds3.h:801
ds3_priority priority
Definition: ds3.h:677
ds3_tape_state state
Definition: ds3.h:1183
static ds3_str * xml_get_string(xmlDocPtr doc, xmlNodePtr child_node)
Definition: ds3_requests.c:275
ds3_active_job_response ** active_jobs
Definition: ds3.h:1693
ds3_tape_failure_response ** failures
Definition: ds3.h:1583
ds3_tape_state
Definition: ds3.h:366
ds3_quiesced quiesced
Definition: ds3.h:1294
ds3_str * data_policy_id
Definition: ds3.h:649
ds3_error * ds3_raw_import_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_reset_instance_identifier_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_path_backend_response **response)
ds3_bool assigned_to_storage_domain
Definition: ds3.h:1116
ds3_str * id
Definition: ds3.h:1291
ds3_error * ds3_cancel_all_active_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_s3_object_cached_notification_registration_response ** s3_object_cached_notification_registrations
Definition: ds3.h:1738
ds3_error * ds3_import_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
void ds3_list_parts_result_response_free(ds3_list_parts_result_response *response)
Definition: ds3.c:2930
ds3_str * auto_eject_upon_cron
Definition: ds3.h:858
ds3_azure_target_bucket_name_response ** azure_target_bucket_names
Definition: ds3.h:1863
ds3_priority rebuild_priority
Definition: ds3.h:743
ds3_error * ds3_get_suspect_blob_azure_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_suspect_blob_azure_target_list_response **response)
ds3_cache_filesystem_response ** cache_filesystems
Definition: ds3.h:1618
static ds3_error * _parse_ds3_data_persistence_rule_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_persistence_rule_response **_response)
static ds3_error * _parse_top_level_ds3_bucket_list_response(const ds3_client *client, const ds3_request *request, ds3_bucket_list_response **_response, GByteArray *xml_blob)
static ds3_str * xml_get_string_from_attribute(xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3_requests.c:288
ds3_error * ds3_mark_suspect_blob_pools_as_degraded_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_truncate_job_spectra_s3_request(const ds3_client *client, const ds3_request *request)
uint64_t last_preferred_chunk_size_in_bytes
Definition: ds3.h:652
ds3_error * ds3_put_data_policy_acl_for_user_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_acl_response **response)
static ds3_error * _parse_top_level_ds3_health_verification_result_response(const ds3_client *client, const ds3_request *request, ds3_health_verification_result_response **_response, GByteArray *xml_blob)
ds3_s3_object_persisted_notification_registration_response ** s3_object_persisted_notification_registrations
Definition: ds3.h:1748
void ds3_group_member_list_response_free(ds3_group_member_list_response *response)
Definition: ds3.c:2024
ds3_error * ds3_import_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_str * cloud_bucket_suffix
Definition: ds3.h:1252
ds3_str * id
Definition: ds3.h:660
ds3_str * partition_id
Definition: ds3.h:1180
ds3_error * ds3_delete_object_cached_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_put_s3_target_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_failure_notification_registration_response **response)
ds3_tape_failure_type
Definition: ds3.h:321
ds3_str * cloud_bucket_suffix
Definition: ds3.h:1315
static ds3_error * _parse_ds3_suspect_blob_s3_target_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_suspect_blob_s3_target_response **_response)
ds3_error * ds3_modify_storage_domain_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_response **response)
void ds3_bucket_list_response_free(ds3_bucket_list_response *response)
Definition: ds3.c:1828
ds3_error * ds3_delete_permanently_lost_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_str * error_message
Definition: ds3.h:895
ds3_error * ds3_delete_s3_target_read_preference_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_force_feature_key_validation_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_canceled_job_response ** canceled_jobs
Definition: ds3.h:1698
ds3_data_isolation_level isolation_level
Definition: ds3.h:721
ds3_error * ds3_get_system_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_system_failure_notification_registration_response **response)
ds3_pool_health
Definition: ds3.h:263
ds3_azure_target_failure_notification_registration_response ** azure_target_failure_notification_registrations
Definition: ds3.h:1713
static ds3_s3_initial_data_placement_policy _match_ds3_s3_initial_data_placement_policy(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:698
static ds3_bool xml_get_bool(const ds3_log *log, xmlDocPtr doc, const xmlNodePtr xml_node)
Definition: ds3_requests.c:292
static ds3_blob_store_task_state _match_ds3_blob_store_task_state(const ds3_log *log, const xmlChar *text)
uint64_t total_capacity
Definition: ds3.h:1133
ds3_data_policy_response ** data_policies
Definition: ds3.h:1633
void ds3_cache_information_response_free(ds3_cache_information_response *response)
Definition: ds3.c:1583
ds3_str * account_key
Definition: ds3.h:1248
ds3_group_member_response ** group_members
Definition: ds3.h:1683
ds3_error * ds3_eject_storage_domain_blobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_spectra_user_list_response_free(ds3_spectra_user_list_response *response)
Definition: ds3.c:2682
ds3_error * ds3_verify_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_delete_object_persisted_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_import_conflict_resolution_mode _match_ds3_import_conflict_resolution_mode(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:910
static ds3_error * _parse_ds3_s3_object_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_object_response **_response)
ds3_target_read_preference_type read_preference
Definition: ds3.h:1278
void ds3_pool_response_free(ds3_pool_response *response)
Definition: ds3.c:1028
void ds3_group_member_response_free(ds3_group_member_response *response)
Definition: ds3.c:654
ds3_feature_key_type
Definition: ds3.h:165
ds3_str * serial_number
Definition: ds3.h:835
ds3_error * ds3_get_pool_failure_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_failure_notification_registration_list_response **response)
ds3_error * ds3_get_blobs_on_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **response)
ds3_error * ds3_force_pool_environment_refresh_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_list_bucket_result_response(const ds3_client *client, const ds3_request *request, ds3_list_bucket_result_response **_response, GByteArray *xml_blob)
ds3_str * ds3_str_init_with_size(const char *string, size_t size)
Definition: ds3_string.c:25
ds3_error * ds3_get_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_list_response **response)
ds3_error * ds3_get_tape_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_notification_registration_response **response)
ds3_str * data_policy_id
Definition: ds3.h:747
ds3_system_failure_type
Definition: ds3.h:221
static ds3_error * _parse_top_level_ds3_s3_data_replication_rule_list_response(const ds3_client *client, const ds3_request *request, ds3_s3_data_replication_rule_list_response **_response, GByteArray *xml_blob)
ds3_str * data_path_end_point
Definition: ds3.h:1316
ds3_str * name
Definition: ds3.h:802
static ds3_error * _parse_top_level_ds3_pool_failure_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_pool_failure_notification_registration_list_response **_response, GByteArray *xml_blob)
ds3_tape_failure_type type
Definition: ds3.h:1218
static ds3_error * _parse_ds3_tape_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_failure_response **_response)
uint64_t available_capacity
Definition: ds3.h:1117
ds3_bool truncated_due_to_timeout
Definition: ds3.h:809
void ds3_job_creation_failed_notification_registration_list_response_free(ds3_job_creation_failed_notification_registration_list_response *response)
Definition: ds3.c:2164
int staged_data_expiration_in_days
Definition: ds3.h:1332
ds3_str * created_at
Definition: ds3.h:670
ds3_error * ds3_delete_system_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
unsigned int ds3_metadata_size(const ds3_metadata *_metadata)
Definition: ds3_requests.c:151
void ds3_bucket_acl_list_response_free(ds3_bucket_acl_list_response *response)
Definition: ds3.c:1800
static ds3_error * _parse_top_level_ds3_node_list_response(const ds3_client *client, const ds3_request *request, ds3_node_list_response **_response, GByteArray *xml_blob)
ds3_str * job_id
Definition: ds3.h:1999
void ds3_azure_data_replication_rule_response_free(ds3_azure_data_replication_rule_response *response)
Definition: ds3.c:482
void ds3_tape_failure_notification_registration_response_free(ds3_tape_failure_notification_registration_response *response)
Definition: ds3.c:989
ds3_error * ds3_get_bucket_capacity_summary_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_capacity_summary_container_response **response)
ds3_str * bucket_id
Definition: ds3.h:665
ds3_str * last_verified
Definition: ds3.h:1124
ds3_str * read_from_pool_id
Definition: ds3.h:823
static ds3_error * _parse_top_level_ds3_s3_object_cached_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_s3_object_cached_notification_registration_list_response **_response, GByteArray *xml_blob)
ds3_target_read_preference_type default_read_preference
Definition: ds3.h:1290
static ds3_error * _parse_ds3_physical_placement_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_physical_placement_response **_response)
static ds3_error * _parse_ds3_tape_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_response **_response)
ds3_str * bucket_id
Definition: ds3.h:848
ds3_error * ds3_get_system_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_system_failure_list_response **response)
ds3_error * ds3_put_object_cached_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_cached_notification_registration_response **response)
static ds3_error * _parse_top_level_ds3_azure_target_bucket_name_list_response(const ds3_client *client, const ds3_request *request, ds3_azure_target_bucket_name_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_degraded_blobs_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_degraded_blob_list_response **response)
static ds3_error * _parse_top_level_ds3_spectra_user_response(const ds3_client *client, const ds3_request *request, ds3_spectra_user_response **_response, GByteArray *xml_blob)
ds3_group_response ** groups
Definition: ds3.h:1688
uint64_t completed_size_in_bytes
Definition: ds3.h:669
void ds3_pool_failure_list_response_free(ds3_pool_failure_list_response *response)
Definition: ds3.c:2304
static ds3_job_chunk_client_processing_order_guarantee _match_ds3_job_chunk_client_processing_order_guarantee(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:666
static ds3_error * _parse_top_level_ds3_s3_data_replication_rule_response(const ds3_client *client, const ds3_request *request, ds3_s3_data_replication_rule_response **_response, GByteArray *xml_blob)
ds3_str * name
Definition: ds3.h:1126
void ds3_data_policy_response_free(ds3_data_policy_response *response)
Definition: ds3.c:583
ds3_ltfs_file_naming_mode
Definition: ds3.h:183
ds3_import_conflict_resolution_mode
Definition: ds3.h:279
static ds3_error * _parse_ds3_data_policy_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_policy_response **_response)
ds3_azure_target_response ** azure_targets
Definition: ds3.h:1923
ds3_storage_domain_member_state
Definition: ds3.h:217
ds3_error * ds3_import_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
ds3_error * ds3_modify_s3_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_data_replication_rule_response **response)
ds3_str * access_key
Definition: ds3.h:1312
ds3_checksum_type checksum_type
Definition: ds3.h:732
static ds3_storage_domain_member_state _match_ds3_storage_domain_member_state(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:766
static ds3_error * _parse_top_level_ds3_target_list_response(const ds3_client *client, const ds3_request *request, ds3_target_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_clear_suspect_blob_ds3_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_s3_target_failure_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_s3_target_failure_notification_registration_list_response **_response, GByteArray *xml_blob)
ds3_storage_domain_failure_type
Definition: ds3.h:212
ds3_error * ds3_get_ds3_target_read_preferences_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_read_preference_list_response **response)
ds3_error * ds3_delete_azure_target_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_detailed_tape_failure_response ** detailed_tape_failures
Definition: ds3.h:1833
uint64_t original_size_in_bytes
Definition: ds3.h:803
void ds3_detailed_s3_object_response_free(ds3_detailed_s3_object_response *response)
Definition: ds3.c:2972
ds3_storage_domain_member_response ** storage_domain_members
Definition: ds3.h:1803
ds3_error * ds3_delete_tape_partition_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_quiesced quiesced
Definition: ds3.h:1235
ds3_pool_health health
Definition: ds3.h:1120
ds3_job_created_notification_registration_response ** job_created_notification_registrations
Definition: ds3.h:1728
ds3_error * ds3_get_azure_targets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_list_response **response)
ds3_bool entirely_in_cache
Definition: ds3.h:1998
int total_result_count
Definition: ds3.h:52
ds3_bool auto_eject_upon_job_completion
Definition: ds3.h:860
uint64_t original_size_in_bytes
Definition: ds3.h:676
ds3_tape_partition_state
Definition: ds3.h:361
ds3_error * ds3_format_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
void ds3_list_multi_part_uploads_result_response_free(ds3_list_multi_part_uploads_result_response *response)
Definition: ds3.c:3037
static ds3_error * _parse_top_level_ds3_system_information_response(const ds3_client *client, const ds3_request *request, ds3_system_information_response **_response, GByteArray *xml_blob)
ds3_error * ds3_verify_safe_to_create_put_job_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_get_job_created_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_created_notification_registration_list_response **response)
ds3_error * ds3_register_s3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_response **response)
ds3_error * ds3_get_storage_domain_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_response **response)
ds3_tape_drive_type * drive_types
Definition: ds3.h:1502
ds3_naming_convention_type naming_convention
Definition: ds3.h:1007
static ds3_error * _parse_ds3_detailed_s3_object_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_detailed_s3_object_response **_response)
ds3_error * ds3_get_system_information_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_system_information_response **response)
ds3_error * ds3_get_storage_domain_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_failure_list_response **response)
ds3_target_read_preference_type default_read_preference
Definition: ds3.h:1317
ds3_error * ds3_get_system_failure_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_system_failure_notification_registration_list_response **response)
ds3_versioning_level
Definition: ds3.h:234
ds3_error * ds3_put_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_response **response)
ds3_error * ds3_compact_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_str * bucket_id
Definition: ds3.h:755
ds3_error * ds3_get_s3_target_read_preference_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_read_preference_response **response)
static ds3_error * _parse_ds3_bulk_object_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bulk_object_response **_response)
ds3_data_replication_rule_type
Definition: ds3.h:161
static ds3_error * _parse_ds3_s3_target_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_target_response **_response)
static ds3_data_replication_rule_type _match_ds3_data_replication_rule_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:634
static ds3_tape_drive_type _match_ds3_tape_drive_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:970
static ds3_error * _parse_ds3_azure_target_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_target_failure_response **_response)
ds3_target_state
Definition: ds3.h:433
ds3_tape_drive_type drive_type
Definition: ds3.h:1227
int number_of_type
Definition: ds3.h:1593
ds3_bool data_path_verify_certificate
Definition: ds3.h:1289
ds3_error * ds3_delete_job_completed_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_put_s3_target_read_preference_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_read_preference_response **response)
ds3_error * net_process_request(const ds3_client *client, const ds3_request *_request, void *read_user_struct, size_t(*read_handler_func)(void *, size_t, size_t, void *), void *write_user_struct, size_t(*write_handler_func)(void *, size_t, size_t, void *), ds3_string_multimap **return_headers)
Definition: ds3_net.c:375
ds3_bucket_details_response ** buckets
Definition: ds3.h:1982
void ds3_s3_object_lost_notification_registration_response_free(ds3_s3_object_lost_notification_registration_response *response)
Definition: ds3.c:918
static ds3_error * _parse_ds3_cache_entry_information_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_cache_entry_information_response **_response)
ds3_error * ds3_get_suspect_blob_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_suspect_blob_pool_list_response **response)
static ds3_error * _parse_top_level_ds3_tape_failure_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_tape_failure_notification_registration_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_put_s3_data_replication_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_data_replication_rule_response **response)
static ds3_error * _parse_ds3_spectra_user_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_spectra_user_response **_response)
ds3_error * ds3_get_s3_target_failure_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_failure_notification_registration_list_response **response)
ds3_str * member_user_id
Definition: ds3.h:787
void ds3_target_response_free(ds3_target_response *response)
Definition: ds3.c:1245
static ds3_error * _parse_top_level_ds3_tape_partition_list_response(const ds3_client *client, const ds3_request *request, ds3_tape_partition_list_response **_response, GByteArray *xml_blob)
uint64_t ms_required_to_verify_data_planner_health
Definition: ds3.h:1558
ds3_error * ds3_put_group_group_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_member_response **response)
ds3_str * partially_verified_end_of_tape
Definition: ds3.h:1179
ds3_error * ds3_verify_azure_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_azure_target_response **response)
static ds3_error * _parse_top_level_ds3_s3_target_failure_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_s3_target_failure_notification_registration_response **_response, GByteArray *xml_blob)
ds3_job_chunk_blob_store_state
Definition: ds3.h:169
ds3_error * ds3_delete_tape_density_directive_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_data_isolation_level
Definition: ds3.h:148
void ds3_s3_target_list_response_free(ds3_s3_target_list_response *response)
Definition: ds3.c:2668
ds3_error * ds3_modify_storage_domain_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_member_response **response)
ds3_str * last_cleaned
Definition: ds3.h:1202
ds3_pool_type type
Definition: ds3.h:1147
static ds3_checksum_type _match_ds3_checksum_type(const ds3_log *log, const xmlChar *text)
ds3_error * ds3_get_ds3_target_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_failure_list_response **response)
ds3_error * ds3_delete_storage_domain_member_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_storage_domain_failure_list_response_free(ds3_storage_domain_failure_list_response *response)
Definition: ds3.c:2346
static ds3_error * _parse_ds3_pool_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_response **_response)
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:793
void ds3_master_object_list_response_free(ds3_master_object_list_response *response)
Definition: ds3.c:2894
static void _ds3_metadata_entry_free(gpointer pointer)
Definition: ds3_requests.c:49
ds3_str * user_id
Definition: ds3.h:810
void ds3_target_failure_list_response_free(ds3_target_failure_list_response *response)
Definition: ds3.c:2584
ds3_bool permit_going_out_of_sync
Definition: ds3.h:1293
int auto_verify_frequency_in_days
Definition: ds3.h:1313
void ds3_target_list_response_free(ds3_target_list_response *response)
Definition: ds3.c:2612
float auto_reclaim_initiate_threshold
Definition: ds3.h:1106
ds3_system_failure_type type
Definition: ds3.h:897
ds3_pool_failure_type
Definition: ds3.h:248
ds3_error * ds3_put_storage_domain_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_failure_notification_registration_response **response)
ds3_bulk_object_response ** objects
Definition: ds3.h:1950
static ds3_error * _parse_top_level_ds3_storage_domain_member_response(const ds3_client *client, const ds3_request *request, ds3_storage_domain_member_response **_response, GByteArray *xml_blob)
ds3_str * created_at
Definition: ds3.h:795
ds3_error * ds3_get_data_policies_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_list_response **response)
ds3_error * ds3_get_cache_filesystem_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_cache_filesystem_response **response)
ds3_error * ds3_delete_tape_drive_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_http_response_format_type format
Definition: ds3.h:948
ds3_error * ds3_get_blobs_on_ds3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **response)
void ds3_tape_partition_failure_notification_registration_list_response_free(ds3_tape_partition_failure_notification_registration_list_response *response)
Definition: ds3.c:2290
void ds3_job_list_response_free(ds3_job_list_response *response)
Definition: ds3.c:2917
static ds3_error * _parse_ds3_azure_target_failure_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_target_failure_notification_registration_response **_response)
static ds3_ltfs_file_naming_mode _match_ds3_ltfs_file_naming_mode(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:688
ds3_str * error_message
Definition: ds3.h:797
ds3_error * ds3_delete_bucket_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_cancel_verify_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
void ds3_pool_partition_list_response_free(ds3_pool_partition_list_response *response)
Definition: ds3.c:2318
static ds3_error * _parse_top_level_ds3_system_failure_list_response(const ds3_client *client, const ds3_request *request, ds3_system_failure_list_response **_response, GByteArray *xml_blob)
void ds3_data_persistence_rule_list_response_free(ds3_data_persistence_rule_list_response *response)
Definition: ds3.c:1870
ds3_error * ds3_put_global_bucket_acl_for_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_response **response)
ds3_contents_response ** objects
Definition: ds3.h:2106
ds3_error * ds3_delete_tape_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_spectra_user_response_free(ds3_spectra_user_response *response)
Definition: ds3.c:790
static ds3_error * _parse_top_level_ds3_node_response(const ds3_client *client, const ds3_request *request, ds3_node_response **_response, GByteArray *xml_blob)
void ds3_string_multimap_entry_free(ds3_string_multimap_entry *entry)
ds3_build_information_response * build_information
Definition: ds3.h:1551
ds3_str * serial_number
Definition: ds3.h:1224
ds3_str * bucket
Definition: ds3.h:1939
ds3_auto_inspect_mode
Definition: ds3.h:127
ds3_tape_partition_failure_type
Definition: ds3.h:344
void ds3_initiate_multipart_upload_result_response_free(ds3_initiate_multipart_upload_result_response *response)
Definition: ds3.c:1660
static ds3_data_placement_rule_state _match_ds3_data_placement_rule_state(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:624
static ds3_bool xml_get_bool_from_attribute(const ds3_log *log, xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3_requests.c:308
ds3_s3_object_response ** s3_objects
Definition: ds3.h:1678
static ds3_error * _parse_ds3_job_completed_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_completed_notification_registration_response **_response)
void ds3_s3_target_response_free(ds3_s3_target_response *response)
Definition: ds3.c:1283
float auto_reclaim_terminate_threshold
Definition: ds3.h:1107
void ds3_data_policy_list_response_free(ds3_data_policy_list_response *response)
Definition: ds3.c:1884
static ds3_data_persistence_rule_type _match_ds3_data_persistence_rule_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:612
static ds3_error * _parse_top_level_ds3_tape_partition_failure_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_tape_partition_failure_notification_registration_list_response **_response, GByteArray *xml_blob)
ds3_target_read_preference_type default_read_preference
Definition: ds3.h:1253
ds3_error * ds3_get_storage_domains_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_list_response **response)
static ds3_error * _parse_ds3_feature_key_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_feature_key_response **_response)
ds3_str * ds3_str_init(const char *string)
Definition: ds3_string.c:20
ds3_error * ds3_verify_ds3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_response **response)
ds3_error * ds3_get_s3_data_replication_rules_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_data_replication_rule_list_response **response)
void ds3_delete_result_response_free(ds3_delete_result_response *response)
Definition: ds3.c:2843
static ds3_error * _parse_top_level_ds3_data_policy_acl_response(const ds3_client *client, const ds3_request *request, ds3_data_policy_acl_response **_response, GByteArray *xml_blob)
ds3_error * ds3_get_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
ds3_naming_convention_type naming_convention
Definition: ds3.h:1073
ds3_error * ds3_cancel_online_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
void ds3_canceled_job_list_response_free(ds3_canceled_job_list_response *response)
Definition: ds3.c:2066
ds3_str * member_group_id
Definition: ds3.h:786
void ds3_system_failure_notification_registration_response_free(ds3_system_failure_notification_registration_response *response)
Definition: ds3.c:975
static ds3_error * _parse_ds3_azure_target_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
ds3_s3_target_response ** s3_targets
Definition: ds3.h:1913
ds3_tape_drive_type density
Definition: ds3.h:1192
void ds3_suspect_blob_tape_list_response_free(ds3_suspect_blob_tape_list_response *response)
Definition: ds3.c:1996
static ds3_error * _parse_ds3_cache_filesystem_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_cache_filesystem_response **_response)
ds3_storage_domain_member_state state
Definition: ds3.h:887
void ds3_canceled_job_response_free(ds3_canceled_job_response *response)
Definition: ds3.c:529
ds3_tape_failure_notification_registration_response ** tape_failure_notification_registrations
Definition: ds3.h:1773
static ds3_error * _parse_top_level_ds3_job_created_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_job_created_notification_registration_response **_response, GByteArray *xml_blob)
void ds3_azure_target_bucket_name_list_response_free(ds3_azure_target_bucket_name_list_response *response)
Definition: ds3.c:2528
static ds3_reserved_task_type _match_ds3_reserved_task_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:934
ds3_error * ds3_delete_object_lost_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_top_level_ds3_job_creation_failed_notification_registration_list_response(const ds3_client *client, const ds3_request *request, ds3_job_creation_failed_notification_registration_list_response **_response, GByteArray *xml_blob)
ds3_error * ds3_inspect_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
static ds3_error * _parse_ds3_bulk_object_list_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bulk_object_list_response **_response)
ds3_str * cloud_bucket_prefix
Definition: ds3.h:1314
ds3_blob_store_task_information_response ** tasks
Definition: ds3.h:1464
ds3_tape_drive_type * drive_types
Definition: ds3.h:1562
ds3_error * ds3_inspect_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
void ds3_named_detailed_tape_partition_response_free(ds3_named_detailed_tape_partition_response *response)
Definition: ds3.c:1730
static ds3_error * _parse_ds3_storage_domain_capacity_summary_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_capacity_summary_response **_response)
ds3_pool_state
Definition: ds3.h:267
ds3_error * ds3_regenerate_user_secret_key_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_spectra_user_response **response)
ds3_str * ds3_string_multimap_entry_get_key(const ds3_string_multimap_entry *entry)
static ds3_error * _parse_top_level_ds3_target_read_preference_list_response(const ds3_client *client, const ds3_request *request, ds3_target_read_preference_list_response **_response, GByteArray *xml_blob)
static ds3_error * _parse_top_level_ds3_s3_target_read_preference_response(const ds3_client *client, const ds3_request *request, ds3_s3_target_read_preference_response **_response, GByteArray *xml_blob)
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:668
void ds3_completed_job_list_response_free(ds3_completed_job_list_response *response)
Definition: ds3.c:2080
static ds3_error * _parse_top_level_ds3_suspect_blob_s3_target_list_response(const ds3_client *client, const ds3_request *request, ds3_suspect_blob_s3_target_list_response **_response, GByteArray *xml_blob)
static ds3_pool_failure_type _match_ds3_pool_failure_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:840
ds3_str * bar_code
Definition: ds3.h:1166
uint64_t current_value
Definition: ds3.h:771
ds3_error * ds3_delete_azure_target_read_preference_spectra_s3_request(const ds3_client *client, const ds3_request *request)
void ds3_tape_density_directive_list_response_free(ds3_tape_density_directive_list_response *response)
Definition: ds3.c:2416
ds3_error * ds3_delete_bucket_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_str * node_id
Definition: ds3.h:2015
ds3_unavailable_media_usage_policy
Definition: ds3.h:229
ds3_error * ds3_register_ds3_target_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_response **response)
ds3_str * id
Definition: ds3.h:850
ds3_degraded_blob_response ** degraded_blobs
Definition: ds3.h:1648
ds3_target_response ** ds3_targets
Definition: ds3.h:1925
ds3_user_response * owner
Definition: ds3.h:2060
ds3_error * ds3_import_azure_target_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_truncate_all_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_versioning_level _match_ds3_versioning_level(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:806
ds3_str * error_message
Definition: ds3.h:772
void ds3_job_created_notification_registration_list_response_free(ds3_job_created_notification_registration_list_response *response)
Definition: ds3.c:2150
ds3_error * ds3_put_global_bucket_acl_for_user_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_response **response)
static ds3_error * _parse_ds3_job_node_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_node_response **_response)
ds3_error * ds3_cancel_format_on_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
Definition: ds3.h:73
ds3_error * ds3_cancel_online_on_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
void ds3_tape_drive_response_free(ds3_tape_drive_response *response)
Definition: ds3.c:1129
uint64_t total_raw_capacity
Definition: ds3.h:1186
void ds3_physical_placement_response_free(ds3_physical_placement_response *response)
Definition: ds3.c:2696
ds3_target_read_preference_response ** ds3_target_read_preferences
Definition: ds3.h:1888
ds3_error * ds3_get_suspect_objects_with_full_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **response)
ds3_error * ds3_get_ds3_target_failure_notification_registrations_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_target_failure_notification_registration_list_response **response)
ds3_error * ds3_put_object_persisted_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_persisted_notification_registration_response **response)
ds3_error * ds3_get_s3_target_bucket_names_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_target_bucket_name_list_response **response)
ds3_error * ds3_get_canceled_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_canceled_job_list_response **response)
static ds3_metadata * _init_metadata(ds3_string_multimap *response_headers)
Definition: ds3_requests.c:96
void ds3_system_information_response_free(ds3_system_information_response *response)
Definition: ds3.c:1710
static ds3_metadata_entry * ds3_metadata_entry_init(ds3_string_multimap_entry *header_entry)
Definition: ds3_requests.c:65
void ds3_detailed_tape_failure_list_response_free(ds3_detailed_tape_failure_list_response *response)
Definition: ds3.c:2444
void ds3_suspect_blob_azure_target_list_response_free(ds3_suspect_blob_azure_target_list_response *response)
Definition: ds3.c:1940
char * value
Definition: ds3_string.h:37
ds3_error * ds3_get_object_lost_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_lost_notification_registration_response **response)
static bool attribute_equal(const struct _xmlAttr *attribute, const char *attribute_name)
Definition: ds3_requests.c:235
ds3_tape_response ** tapes
Definition: ds3.h:1931
void ds3_tape_partition_response_free(ds3_tape_partition_response *response)
Definition: ds3.c:1169
ds3_error * ds3_verify_physical_placement_for_objects_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_physical_placement_response **response)
ds3_error * ds3_cancel_verify_on_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
static ds3_error * _parse_ds3_target_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_target_response **_response)
static xmlDocPtr _generate_xml_bulk_objects_list(const ds3_bulk_object_list_response *obj_list, object_list_type list_type, ds3_job_chunk_client_processing_order_guarantee order)
Definition: ds3_requests.c:408
ds3_error * ds3_delegate_delete_user_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_error * ds3_get_pool_partitions_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_partition_list_response **response)
ds3_error * ds3_mark_suspect_blob_azure_targets_as_degraded_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_str * id
Definition: ds3.h:1174
ds3_str * last_fully_verified
Definition: ds3.h:1256
ds3_str * chunk_id
Definition: ds3.h:2013
ds3_priority default_verify_job_priority
Definition: ds3.h:738
ds3_error * ds3_get_bucket_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_response **response)
ds3_bool default_verify_after_write
Definition: ds3.h:737
ds3_error * ds3_get_job_to_replicate_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_str **response)
ds3_error * ds3_modify_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_job_node_response ** nodes
Definition: ds3.h:2029
ds3_error * ds3_deallocate_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request)
static ds3_error * _parse_ds3_degraded_blob_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_degraded_blob_response **_response)
ds3_error * ds3_get_bucket_acls_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_list_response **response)
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:2023
ds3_error * ds3_close_aggregating_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
static ds3_database_physical_space_state _match_ds3_database_physical_space_state(const ds3_log *log, const xmlChar *text)
void ds3_tape_library_list_response_free(ds3_tape_library_list_response *response)
Definition: ds3.c:2458
void ds3_data_replication_rule_response_free(ds3_data_replication_rule_response *response)
Definition: ds3.c:621
void ds3_suspect_blob_s3_target_list_response_free(ds3_suspect_blob_s3_target_list_response *response)
Definition: ds3.c:1982
ds3_tape_response ** tapes
Definition: ds3.h:1858
static ds3_error * _parse_top_level_ds3_target_failure_notification_registration_response(const ds3_client *client, const ds3_request *request, ds3_target_failure_notification_registration_response **_response, GByteArray *xml_blob)
ds3_error * ds3_online_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
ds3_error * ds3_get_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
ds3_error * ds3_get_object_with_metadata(const ds3_client *client, const ds3_request *request, void *user_data, size_t(*callback)(void *, size_t, size_t, void *), ds3_metadata **_metadata)
static ds3_error * _parse_ds3_pool_failure_notification_registration_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_failure_notification_registration_response **_response)
uint64_t cached_size_in_bytes
Definition: ds3.h:792