DS3 C SDK  5.0.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"
29 #include "ds3_uint64_string_map.h"
30 #include "ds3_utils.h"
31 #include "ds3_marshaling.h"
32 
33 #ifdef _WIN32
34  #include <io.h>
35  #ifndef PRIu64
36  #define PRIu64 "I64u"
37  #endif
38 #else
39  #include <inttypes.h>
40 #endif
41 
42 
43 //The max size of an uint32_t is 10 characters + NULL
44 //The max size of an uint64_t is 20 characters + NULL
45 #define STRING_BUFFER_SIZE 32
46 
47 
48 struct _ds3_metadata {
49  GHashTable* metadata;
50 };
51 
52 static void _ds3_metadata_entry_free(gpointer pointer) {
53  ds3_metadata_entry* entry;
54  if (pointer == NULL) {
55  return; // do nothing
56  }
57 
58  entry = (ds3_metadata_entry*) pointer;
59 
61 }
62 
63 /*
64  * This copies all the header values in the ds3_string_multimap_entry struct so that they may be safely returned to the user
65  * without having to worry about if the data is freed internally.
66  */
67 static const char* METADATA_PREFIX = "x-amz-meta-";
69  guint i;
70  ds3_str* header_value;
71  GPtrArray* values = g_ptr_array_new();
72  ds3_str* key_name;
73  ds3_str* full_key;
74  ds3_metadata_entry* response = g_new0(ds3_metadata_entry, 1);
75  int metadata_prefix_length = strlen(METADATA_PREFIX);
76 
77  unsigned int num_values = ds3_string_multimap_entry_get_num_values(header_entry);
78  for (i = 0; i < num_values; i++) {
79  header_value = ds3_string_multimap_entry_get_value_by_index(header_entry, i);
80  g_ptr_array_add(values, header_value);
81  }
82 
83  full_key = ds3_string_multimap_entry_get_key(header_entry);
84  key_name = ds3_str_init(full_key->value + metadata_prefix_length);
85  ds3_str_free(full_key);
86 
87  response->num_values = num_values;
88  response->name = key_name;
89  response->values = (ds3_str**) g_ptr_array_free(values, FALSE);
90  return response;
91 }
92 
93 /* The headers hash table contains all the response headers which have the following types:
94  * Key - char*
95  * Value - ds3_response_header
96  *
97  * All values should be copied from the struct to avoid memory issues
98  */
99 static ds3_metadata* _init_metadata(ds3_string_multimap* response_headers) {
100  struct _ds3_metadata* metadata = g_new0(struct _ds3_metadata, 1);
101  GHashTableIter iter;
102  gpointer _key, _value;
103  ds3_str* key;
104  ds3_metadata_entry* entry;
105  metadata->metadata = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, _ds3_metadata_entry_free);
106 
107  if (response_headers == NULL) {
108  fprintf(stderr, "response headers was null\n");
109  }
110 
111  g_hash_table_iter_init(&iter, ds3_string_multimap_get_hashtable(response_headers));
112  while(g_hash_table_iter_next(&iter, &_key, &_value)) {
113  key = (ds3_str*) _key;
114  if (g_str_has_prefix(key->value, "x-amz-meta-")) {
115  ds3_string_multimap_entry* mm_entry = ds3_string_multimap_lookup(response_headers, key);
116  entry = ds3_metadata_entry_init(mm_entry);
117  g_hash_table_insert(metadata->metadata, g_strdup(entry->name->value), entry);
119  }
120  }
121 
122  return (ds3_metadata*) metadata;
123 }
124 
125 ds3_metadata_entry* ds3_metadata_get_entry(const ds3_metadata* _metadata, const char* name) {
126  ds3_metadata_entry* copy;
127  ds3_metadata_entry* orig;
128  ds3_str** metadata_copy;
129  uint64_t i;
130  struct _ds3_metadata* metadata = (struct _ds3_metadata*) _metadata;
131 
132  if (_metadata == NULL) {
133  return NULL;
134  }
135 
136  orig = (ds3_metadata_entry*) g_hash_table_lookup(metadata->metadata, name);
137  if (orig == NULL) {
138  return NULL;
139  }
140  copy = g_new0(ds3_metadata_entry, 1);
141  metadata_copy = g_new0(ds3_str*, (gsize)orig->num_values);
142 
143  for (i = 0; i < orig->num_values; i++) {
144  metadata_copy[i] = ds3_str_dup(orig->values[i]);
145  }
146 
147  copy->num_values = orig->num_values;
148  copy->name = ds3_str_dup(orig->name);
149  copy->values = metadata_copy;
150 
151  return copy;
152 }
153 
154 unsigned int ds3_metadata_size(const ds3_metadata* _metadata) {
155  struct _ds3_metadata* metadata = (struct _ds3_metadata*) _metadata;
156  if (metadata == NULL) {
157  return 0;
158  }
159  return g_hash_table_size(metadata->metadata);
160 }
161 
163  GPtrArray* return_keys;
164  ds3_metadata_keys_result* result;
165  struct _ds3_metadata* metadata;
166  GList* keys;
167  GList* tmp_key;
168 
169  if (_metadata == NULL) {
170  return NULL;
171  }
172 
173  return_keys = g_ptr_array_new();
174  result = g_new0(ds3_metadata_keys_result, 1);
175  metadata = (struct _ds3_metadata*) _metadata;
176  keys = g_hash_table_get_keys(metadata->metadata);
177  tmp_key = keys;
178 
179  while(tmp_key != NULL) {
180  g_ptr_array_add(return_keys, ds3_str_init((char*)tmp_key->data));
181  tmp_key = tmp_key->next;
182  }
183 
184  g_list_free(keys);
185  result->num_keys = return_keys->len;
186  result->keys = (ds3_str**) g_ptr_array_free(return_keys, FALSE);
187  return result;
188 }
189 
190 void ds3_metadata_free(ds3_metadata* _metadata) {
191  struct _ds3_metadata* metadata;
192  if (_metadata == NULL) return;
193 
194  metadata = (struct _ds3_metadata*) _metadata;
195 
196  if (metadata->metadata == NULL) return;
197 
198  g_hash_table_destroy(metadata->metadata);
199 
200  g_free(metadata);
201 }
202 
204  if (entry == NULL) {
205  return;
206  }
207 
208  int value_index;
209  ds3_str* value;
210  if (entry->name != NULL) {
211  ds3_str_free(entry->name);
212  }
213 
214  if (entry->values != NULL) {
215  for (value_index = 0; value_index < entry->num_values; value_index++) {
216  value = entry->values[value_index];
217  ds3_str_free(value);
218  }
219  g_free(entry->values);
220  }
221  g_free(entry);
222 }
223 
225  uint64_t key_index;
226  if (metadata_keys == NULL) {
227  return;
228  }
229 
230  if (metadata_keys->keys != NULL) {
231  for (key_index = 0; key_index < metadata_keys->num_keys; key_index++) {
232  ds3_str_free(metadata_keys->keys[key_index]);
233  }
234  g_free(metadata_keys->keys);
235  }
236  g_free(metadata_keys);
237 }
238 static bool attribute_equal(const struct _xmlAttr* attribute, const char* attribute_name) {
239  return xmlStrcmp(attribute->name, (const xmlChar*) attribute_name) == 0;
240 }
241 
242 static bool element_equal(const xmlNodePtr xml_node, const char* element_name) {
243  return xmlStrcmp(xml_node->name, (const xmlChar*) element_name) == 0;
244 }
245 
246 static uint16_t xml_get_uint16(xmlDocPtr doc, xmlNodePtr child_node) {
247  xmlChar* text;
248  uint16_t size;
249  text = xmlNodeListGetString(doc, child_node->xmlChildrenNode, 1);
250  if (text == NULL) {
251  return 0;
252  }
253  size = atoi((char*)text);
254  xmlFree(text);
255  return size;
256 }
257 
258 static uint64_t xml_get_uint16_from_attribute(xmlDocPtr doc, struct _xmlAttr* attribute) {
259  return xml_get_uint16(doc, (xmlNodePtr) attribute);
260 }
261 
262 static uint64_t xml_get_uint64(xmlDocPtr doc, xmlNodePtr child_node) {
263  xmlChar* text;
264  uint64_t size;
265  text = xmlNodeListGetString(doc, child_node->xmlChildrenNode, 1);
266  if (text == NULL) {
267  return 0;
268  }
269  size = g_ascii_strtoull((const char*)text, NULL, 10);
270  xmlFree(text);
271  return size;
272 }
273 
274 static uint64_t xml_get_uint64_from_attribute(xmlDocPtr doc, struct _xmlAttr* attribute) {
275  return xml_get_uint64(doc, (xmlNodePtr) attribute);
276 }
277 
278 static ds3_str* xml_get_string(xmlDocPtr doc, xmlNodePtr child_node) {
279  xmlChar* text;
280  ds3_str* result;
281  text = xmlNodeListGetString(doc, child_node->xmlChildrenNode, 1);
282  if (text == NULL) {
283  // Element is found, but is empty: <name />
284  return NULL;
285  }
286  result = ds3_str_init((const char*) text);
287  xmlFree(text);
288  return result;
289 }
290 
291 static ds3_str* xml_get_string_from_attribute(xmlDocPtr doc, struct _xmlAttr* attribute) {
292  return xml_get_string(doc, (xmlNodePtr) attribute);
293 }
294 
295 static ds3_bool xml_get_bool(const ds3_log* log, xmlDocPtr doc, const xmlNodePtr xml_node) {
296  xmlChar* text;
297  ds3_bool result;
298  text = xmlNodeListGetString(doc, xml_node->xmlChildrenNode, 1);
299  if (xmlStrcmp(text, (xmlChar*)"true") == 0) {
300  result = True;
301  } else if (xmlStrcmp(text, (xmlChar*)"false") == 0) {
302  result = False;
303  } else {
304  ds3_log_message(log, DS3_ERROR, "Unknown boolean value");
305  result = False;
306  }
307  xmlFree(text);
308  return result;
309 }
310 
311 static ds3_bool xml_get_bool_from_attribute(const ds3_log* log, xmlDocPtr doc, struct _xmlAttr* attribute) {
312  return xml_get_bool(log, doc, (xmlNodePtr) attribute);
313 }
314 
315 static size_t _ds3_send_xml_buff(void* buffer, size_t size, size_t nmemb, void* user_data) {
316  size_t to_read;
317  size_t remaining;
318  ds3_xml_send_buff* xml_buff;
319 
320  xml_buff = (ds3_xml_send_buff*) user_data;
321  to_read = size * nmemb;
322  remaining = xml_buff->size - xml_buff->total_read;
323 
324  if (remaining < to_read) {
325  to_read = remaining;
326  }
327 
328  strncpy((char*)buffer, xml_buff->buff + xml_buff->total_read, to_read);
329  xml_buff->total_read += to_read;
330  return to_read;
331 }
332 
334  const ds3_client* client,
335  const ds3_request* request,
336  void* read_user_struct,
337  size_t (*read_handler_func)(void*, size_t, size_t, void*),
338  void* write_user_struct,
339  size_t (*write_handler_func)(void*, size_t, size_t, void*),
340  ds3_string_multimap** return_headers) {
341  if (client == NULL || request == NULL) {
342  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "All arguments must be filled in for request processing");
343  }
344  return net_process_request(client, request, read_user_struct, read_handler_func, write_user_struct, write_handler_func, return_headers);
345 }
346 
347 static int num_chars_in_ds3_str(const ds3_str *const str, char ch) {
348  int num_matches = 0;
349  size_t index;
350 
351  for (index = 0; index < str->size; index++) {
352  if (str->value[index] == '/') {
353  num_matches++;
354  }
355  }
356 
357  return num_matches;
358 }
359 
361  GByteArray* xml_blob,
362  xmlDocPtr* _doc,
363  xmlNodePtr* _root,
364  char* root_element_name) {
365  xmlNodePtr root;
366 
367  xmlDocPtr doc = xmlParseMemory((const char*) xml_blob->data, xml_blob->len);
368  if (doc == NULL) {
369  char* message = g_strconcat("Failed to parse response document. The actual response is: ", xml_blob->data, NULL);
370  g_byte_array_free(xml_blob, TRUE);
372  g_free(message);
373  return error;
374  }
375 
376  root = xmlDocGetRootElement(doc);
377  if (element_equal(root, root_element_name) == false) {
378  char* message = g_strconcat("Expected the root element to be '", root_element_name, "'. The actual response is: ", xml_blob->data, NULL);
379  xmlFreeDoc(doc);
380  g_byte_array_free(xml_blob, TRUE);
382  g_free(message);
383  return error;
384  }
385 
386  *_doc = doc;
387  *_root = root;
388 
389  g_byte_array_free(xml_blob, TRUE);
390  return NULL;
391 }
392 
394  char size_buff[STRING_BUFFER_SIZE];
395  xmlDocPtr doc;
397  xmlNodePtr objects_node, object_node;
398  size_t obj_index;
399 
400  // Start creating the xml body to send to the server.
401  doc = xmlNewDoc((xmlChar*)"1.0");
402  objects_node = xmlNewNode(NULL, (xmlChar*) "Objects");
403 
404  for (obj_index = 0; obj_index < obj_list->num_objects; obj_index++) {
405  obj = obj_list->objects[obj_index];
406  memset(size_buff, 0, sizeof(size_buff));
407  g_snprintf(size_buff, STRING_BUFFER_SIZE, "%" PRIu64, obj->length);
408 
409  object_node = xmlNewNode(NULL, (xmlChar*) "Object");
410  xmlAddChild(objects_node, object_node);
411 
412  xmlSetProp(object_node, (xmlChar*) "Name", (xmlChar*) obj->name->value);
413  if (list_type == BULK_PUT) {
414  xmlSetProp(object_node, (xmlChar*) "Size", (xmlChar*) size_buff);
415  }
416 
417  if (list_type == BULK_GET && obj->version_id != NULL && strlen(obj->version_id->value) != 0) {
418  xmlSetProp(object_node, (xmlChar*) "VersionId", (xmlChar*) obj->version_id->value);
419  }
420  }
421 
422  xmlDocSetRootElement(doc, objects_node);
423 
424  return doc;
425 }
426 
428  char size_buff[STRING_BUFFER_SIZE];
429  xmlDocPtr doc;
431  xmlNodePtr parts_node, part_node;
432  int part_num;
433 
434  // Start creating the xml body to send to the server.
435  doc = xmlNewDoc((xmlChar*)"1.0");
436  parts_node = xmlNewNode(NULL, (xmlChar*) "CompleteMultipartUpload");
437 
438  for (part_num = 0; part_num < mpu_list->num_parts; part_num++) {
439  part = mpu_list->parts[part_num];
440 
441  part_node = xmlNewNode(NULL, (xmlChar*) "Part");
442  xmlAddChild(parts_node, part_node);
443 
444  g_snprintf(size_buff, STRING_BUFFER_SIZE, "%d", part->part_number);
445  xmlNewTextChild(part_node, NULL, (xmlChar*) "PartNumber", (xmlChar*) size_buff);
446 
447  xmlNewTextChild(part_node, NULL, (xmlChar*) "ETag", (xmlChar*) part->etag->value);
448  }
449 
450  xmlDocSetRootElement(doc, parts_node);
451  return doc;
452 }
453 
455  xmlDocPtr doc;
456  ds3_str* key;
457  xmlNodePtr del_node, obj_node;
458  int key_num;
459 
460  // Start creating the xml body to send to the server.
461  doc = xmlNewDoc((xmlChar*)"1.0");
462  del_node = xmlNewNode(NULL, (xmlChar*) "Delete");
463 
464  for (key_num = 0; key_num < keys_list->num_strings; key_num++) {
465  key = keys_list->strings_list[key_num];
466 
467  obj_node = xmlNewNode(NULL, (xmlChar*) "Object");
468  xmlAddChild(del_node, obj_node);
469 
470  xmlNewTextChild(obj_node, NULL, (xmlChar*) "Key", (xmlChar*) key->value);
471  }
472 
473  xmlDocSetRootElement(doc, del_node);
474  return doc;
475 }
476 
477 xmlDocPtr ds3_generate_xml_ids(ds3_ids_list* ids_list) {
478  xmlDocPtr doc;
479  ds3_str* key;
480  xmlNodePtr ids_node, id_node;
481  int id_num;
482 
483  // Start creating the xml body to send to the server.
484  doc = xmlNewDoc((xmlChar*)"1.0");
485  ids_node = xmlNewNode(NULL, (xmlChar*) "Ids");
486 
487  for (id_num = 0; id_num < ids_list->num_strings; id_num++) {
488  key = ids_list->strings_list[id_num];
489 
490  id_node = xmlNewTextChild(ids_node, NULL, (xmlChar*) "Id", (xmlChar*) key->value);
491  xmlAddChild(ids_node, id_node);
492  }
493 
494  xmlDocSetRootElement(doc, ids_node);
495  return doc;
496 }
497 
499  ds3_xml_send_buff* send_buff,
500  const object_list_type operation_type) {
501  xmlDocPtr doc;
502 
503  struct _ds3_request* request = (struct _ds3_request*) _request;
504 
505  // Clear send_buff
506  memset(send_buff, 0, sizeof(ds3_xml_send_buff));
507 
508  switch(operation_type) {
509  case BULK_PUT:
510  case BULK_GET:
512  if (request->object_list == NULL || request->object_list->num_objects == 0) {
513  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bulk command requires a list of objects to process");
514  }
515  doc = ds3_generate_xml_bulk_objects_list(request->object_list, operation_type);
516  break;
517 
518  case COMPLETE_MPU:
519  if (request->mpu_list == NULL || request->mpu_list->num_parts == 0) {
520  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The complete multipart upload command requires a list of objects to process");
521  }
522  doc = ds3_generate_xml_complete_mpu(request->mpu_list);
523  break;
524 
525  case BULK_DELETE:
526  case STRING_LIST:
527  if (request->delete_objects == NULL || request->delete_objects->num_strings == 0) {
528  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The delete objects command requires a list of objects to process");
529  }
531  break;
532 
533  case ID_LIST:
534  if (request->ids == NULL || request->ids->num_strings == 0) {
535  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The suspect blob command requires a list of ids to process");
536  }
537  doc = ds3_generate_xml_ids(request->ids);
538  break;
539 
540  case STRING: // *** not XML - do not interpret
541  send_buff->buff = request->delete_objects->strings_list[0]->value;
542  send_buff->size = request->delete_objects->strings_list[0]->size;
543  request->length = send_buff->size;
544  return NULL;
545  break;
546 
547  default:
548  return ds3_create_error(DS3_ERROR_INVALID_XML, "Unknown request payload type");
549  }
550 
551  xmlDocDumpFormatMemory(doc, (xmlChar**) &send_buff->buff, (int*) &send_buff->size, 1);
552  request->length = send_buff->size; // make sure to set the size of the request.
553 
554  xmlFreeDoc(doc);
555 
556  return NULL;
557 }
558 
559 
560 static ds3_auto_inspect_mode _match_ds3_auto_inspect_mode(const ds3_log* log, const xmlChar* text) {
561  if (xmlStrcmp(text, (const xmlChar*) "NEVER") == 0) {
563  } else if (xmlStrcmp(text, (const xmlChar*) "MINIMAL") == 0) {
565  } else if (xmlStrcmp(text, (const xmlChar*) "FULL") == 0) {
567  } else {
568  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_AUTO_INSPECT_MODE_NEVER for safety.", text);
570  }
571 }
572 static ds3_priority _match_ds3_priority(const ds3_log* log, const xmlChar* text) {
573  if (xmlStrcmp(text, (const xmlChar*) "CRITICAL") == 0) {
574  return DS3_PRIORITY_CRITICAL;
575  } else if (xmlStrcmp(text, (const xmlChar*) "URGENT") == 0) {
576  return DS3_PRIORITY_URGENT;
577  } else if (xmlStrcmp(text, (const xmlChar*) "HIGH") == 0) {
578  return DS3_PRIORITY_HIGH;
579  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
580  return DS3_PRIORITY_NORMAL;
581  } else if (xmlStrcmp(text, (const xmlChar*) "LOW") == 0) {
582  return DS3_PRIORITY_LOW;
583  } else if (xmlStrcmp(text, (const xmlChar*) "BACKGROUND") == 0) {
585  } else {
586  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_PRIORITY_CRITICAL for safety.", text);
587  return DS3_PRIORITY_CRITICAL;
588  }
589 }
590 static ds3_bucket_acl_permission _match_ds3_bucket_acl_permission(const ds3_log* log, const xmlChar* text) {
591  if (xmlStrcmp(text, (const xmlChar*) "LIST") == 0) {
593  } else if (xmlStrcmp(text, (const xmlChar*) "READ") == 0) {
595  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE") == 0) {
597  } else if (xmlStrcmp(text, (const xmlChar*) "DELETE") == 0) {
599  } else if (xmlStrcmp(text, (const xmlChar*) "JOB") == 0) {
601  } else if (xmlStrcmp(text, (const xmlChar*) "OWNER") == 0) {
603  } else {
604  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_BUCKET_ACL_PERMISSION_LIST for safety.", text);
606  }
607 }
608 static ds3_data_isolation_level _match_ds3_data_isolation_level(const ds3_log* log, const xmlChar* text) {
609  if (xmlStrcmp(text, (const xmlChar*) "STANDARD") == 0) {
611  } else if (xmlStrcmp(text, (const xmlChar*) "BUCKET_ISOLATED") == 0) {
613  } else {
614  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_ISOLATION_LEVEL_STANDARD for safety.", text);
616  }
617 }
619  if (xmlStrcmp(text, (const xmlChar*) "PERMANENT") == 0) {
621  } else if (xmlStrcmp(text, (const xmlChar*) "TEMPORARY") == 0) {
623  } else if (xmlStrcmp(text, (const xmlChar*) "RETIRED") == 0) {
625  } else {
626  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_PERSISTENCE_RULE_TYPE_PERMANENT for safety.", text);
628  }
629 }
631  if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
633  } else if (xmlStrcmp(text, (const xmlChar*) "INCLUSION_IN_PROGRESS") == 0) {
635  } else {
636  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_PLACEMENT_RULE_STATE_NORMAL for safety.", text);
638  }
639 }
641  if (xmlStrcmp(text, (const xmlChar*) "PERMANENT") == 0) {
643  } else if (xmlStrcmp(text, (const xmlChar*) "RETIRED") == 0) {
645  } else {
646  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_REPLICATION_RULE_TYPE_PERMANENT for safety.", text);
648  }
649 }
650 static ds3_feature_key_type _match_ds3_feature_key_type(const ds3_log* log, const xmlChar* text) {
651  if (xmlStrcmp(text, (const xmlChar*) "AWS_S3_CLOUD_OUT") == 0) {
653  } else if (xmlStrcmp(text, (const xmlChar*) "MICROSOFT_AZURE_CLOUD_OUT") == 0) {
655  } else {
656  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_FEATURE_KEY_TYPE_AWS_S3_CLOUD_OUT for safety.", text);
658  }
659 }
661  if (xmlStrcmp(text, (const xmlChar*) "PENDING") == 0) {
663  } else if (xmlStrcmp(text, (const xmlChar*) "IN_PROGRESS") == 0) {
665  } else if (xmlStrcmp(text, (const xmlChar*) "COMPLETED") == 0) {
667  } else {
668  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_CHUNK_BLOB_STORE_STATE_PENDING for safety.", text);
670  }
671 }
673  if (xmlStrcmp(text, (const xmlChar*) "NONE") == 0) {
675  } else if (xmlStrcmp(text, (const xmlChar*) "IN_ORDER") == 0) {
677  } else {
678  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_CHUNK_CLIENT_PROCESSING_ORDER_GUARANTEE_NONE for safety.", text);
680  }
681 }
682 static ds3_job_request_type _match_ds3_job_request_type(const ds3_log* log, const xmlChar* text) {
683  if (xmlStrcmp(text, (const xmlChar*) "PUT") == 0) {
685  } else if (xmlStrcmp(text, (const xmlChar*) "GET") == 0) {
687  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY") == 0) {
689  } else {
690  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_REQUEST_TYPE_PUT for safety.", text);
692  }
693 }
694 static ds3_job_restore _match_ds3_job_restore(const ds3_log* log, const xmlChar* text) {
695  if (xmlStrcmp(text, (const xmlChar*) "NO") == 0) {
696  return DS3_JOB_RESTORE_NO;
697  } else if (xmlStrcmp(text, (const xmlChar*) "YES") == 0) {
698  return DS3_JOB_RESTORE_YES;
699  } else if (xmlStrcmp(text, (const xmlChar*) "PERMANENT_ONLY") == 0) {
701  } else {
702  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_RESTORE_NO for safety.", text);
703  return DS3_JOB_RESTORE_NO;
704  }
705 }
706 static ds3_ltfs_file_naming_mode _match_ds3_ltfs_file_naming_mode(const ds3_log* log, const xmlChar* text) {
707  if (xmlStrcmp(text, (const xmlChar*) "OBJECT_NAME") == 0) {
709  } else if (xmlStrcmp(text, (const xmlChar*) "OBJECT_ID") == 0) {
711  } else {
712  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_LTFS_FILE_NAMING_MODE_OBJECT_NAME for safety.", text);
714  }
715 }
717  if (xmlStrcmp(text, (const xmlChar*) "STANDARD") == 0) {
719  } else if (xmlStrcmp(text, (const xmlChar*) "REDUCED_REDUNDANCY") == 0) {
721  } else if (xmlStrcmp(text, (const xmlChar*) "STANDARD_IA") == 0) {
723  } else if (xmlStrcmp(text, (const xmlChar*) "GLACIER") == 0) {
725  } else {
726  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_S3_INITIAL_DATA_PLACEMENT_POLICY_STANDARD for safety.", text);
728  }
729 }
730 static ds3_s3_object_type _match_ds3_s3_object_type(const ds3_log* log, const xmlChar* text) {
731  if (xmlStrcmp(text, (const xmlChar*) "DATA") == 0) {
733  } else if (xmlStrcmp(text, (const xmlChar*) "FOLDER") == 0) {
735  } else {
736  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_S3_OBJECT_TYPE_DATA for safety.", text);
738  }
739 }
740 static ds3_s3_region _match_ds3_s3_region(const ds3_log* log, const xmlChar* text) {
741  if (xmlStrcmp(text, (const xmlChar*) "GOV_CLOUD") == 0) {
743  } else if (xmlStrcmp(text, (const xmlChar*) "US_EAST_1") == 0) {
745  } else if (xmlStrcmp(text, (const xmlChar*) "US_WEST_1") == 0) {
747  } else if (xmlStrcmp(text, (const xmlChar*) "US_WEST_2") == 0) {
749  } else if (xmlStrcmp(text, (const xmlChar*) "EU_WEST_1") == 0) {
751  } else if (xmlStrcmp(text, (const xmlChar*) "EU_CENTRAL_1") == 0) {
753  } else if (xmlStrcmp(text, (const xmlChar*) "AP_SOUTH_1") == 0) {
755  } else if (xmlStrcmp(text, (const xmlChar*) "AP_SOUTHEAST_1") == 0) {
757  } else if (xmlStrcmp(text, (const xmlChar*) "AP_SOUTHEAST_2") == 0) {
759  } else if (xmlStrcmp(text, (const xmlChar*) "AP_NORTHEAST_1") == 0) {
761  } else if (xmlStrcmp(text, (const xmlChar*) "AP_NORTHEAST_2") == 0) {
763  } else if (xmlStrcmp(text, (const xmlChar*) "SA_EAST_1") == 0) {
765  } else if (xmlStrcmp(text, (const xmlChar*) "CN_NORTH_1") == 0) {
767  } else {
768  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_S3_REGION_GOV_CLOUD for safety.", text);
770  }
771 }
773  if (xmlStrcmp(text, (const xmlChar*) "ILLEGAL_EJECTION_OCCURRED") == 0) {
775  } else if (xmlStrcmp(text, (const xmlChar*) "MEMBER_BECAME_READ_ONLY") == 0) {
777  } else if (xmlStrcmp(text, (const xmlChar*) "WRITES_STALLED_DUE_TO_NO_FREE_MEDIA_REMAINING") == 0) {
779  } else {
780  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_STORAGE_DOMAIN_FAILURE_TYPE_ILLEGAL_EJECTION_OCCURRED for safety.", text);
782  }
783 }
785  if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
787  } else if (xmlStrcmp(text, (const xmlChar*) "EXCLUSION_IN_PROGRESS") == 0) {
789  } else {
790  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_STORAGE_DOMAIN_MEMBER_STATE_NORMAL for safety.", text);
792  }
793 }
794 static ds3_system_failure_type _match_ds3_system_failure_type(const ds3_log* log, const xmlChar* text) {
795  if (xmlStrcmp(text, (const xmlChar*) "RECONCILE_TAPE_ENVIRONMENT_FAILED") == 0) {
797  } else if (xmlStrcmp(text, (const xmlChar*) "RECONCILE_POOL_ENVIRONMENT_FAILED") == 0) {
799  } else if (xmlStrcmp(text, (const xmlChar*) "CRITICAL_DATA_VERIFICATION_ERROR_REQUIRES_USER_CONFIRMATION") == 0) {
801  } else if (xmlStrcmp(text, (const xmlChar*) "MICROSOFT_AZURE_WRITES_REQUIRE_FEATURE_LICENSE") == 0) {
803  } else if (xmlStrcmp(text, (const xmlChar*) "AWS_S3_WRITES_REQUIRE_FEATURE_LICENSE") == 0) {
805  } else if (xmlStrcmp(text, (const xmlChar*) "DATABASE_RUNNING_OUT_OF_SPACE") == 0) {
807  } else {
808  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_SYSTEM_FAILURE_TYPE_RECONCILE_TAPE_ENVIRONMENT_FAILED for safety.", text);
810  }
811 }
813  if (xmlStrcmp(text, (const xmlChar*) "ALLOW") == 0) {
815  } else if (xmlStrcmp(text, (const xmlChar*) "DISCOURAGED") == 0) {
817  } else if (xmlStrcmp(text, (const xmlChar*) "DISALLOW") == 0) {
819  } else {
820  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_UNAVAILABLE_MEDIA_USAGE_POLICY_ALLOW for safety.", text);
822  }
823 }
824 static ds3_versioning_level _match_ds3_versioning_level(const ds3_log* log, const xmlChar* text) {
825  if (xmlStrcmp(text, (const xmlChar*) "NONE") == 0) {
827  } else if (xmlStrcmp(text, (const xmlChar*) "KEEP_LATEST") == 0) {
829  } else if (xmlStrcmp(text, (const xmlChar*) "KEEP_MULTIPLE_VERSIONS") == 0) {
831  } else {
832  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_VERSIONING_LEVEL_NONE for safety.", text);
834  }
835 }
836 static ds3_write_optimization _match_ds3_write_optimization(const ds3_log* log, const xmlChar* text) {
837  if (xmlStrcmp(text, (const xmlChar*) "CAPACITY") == 0) {
839  } else if (xmlStrcmp(text, (const xmlChar*) "PERFORMANCE") == 0) {
841  } else {
842  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_WRITE_OPTIMIZATION_CAPACITY for safety.", text);
844  }
845 }
847  if (xmlStrcmp(text, (const xmlChar*) "HIGH") == 0) {
849  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
851  } else if (xmlStrcmp(text, (const xmlChar*) "LOW") == 0) {
853  } else if (xmlStrcmp(text, (const xmlChar*) "NEVER_SELECT") == 0) {
855  } else {
856  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_WRITE_PREFERENCE_LEVEL_HIGH for safety.", text);
858  }
859 }
860 static ds3_pool_failure_type _match_ds3_pool_failure_type(const ds3_log* log, const xmlChar* text) {
861  if (xmlStrcmp(text, (const xmlChar*) "BLOB_READ_FAILED") == 0) {
863  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE") == 0) {
865  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_MISSING") == 0) {
867  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_FAILED") == 0) {
869  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
871  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) {
873  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE") == 0) {
875  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_DATA_INTEGRITY") == 0) {
877  } else if (xmlStrcmp(text, (const xmlChar*) "INSPECT_FAILED") == 0) {
879  } else if (xmlStrcmp(text, (const xmlChar*) "QUIESCED") == 0) {
881  } else if (xmlStrcmp(text, (const xmlChar*) "READ_FAILED") == 0) {
883  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY_FAILED") == 0) {
885  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_FAILED") == 0) {
887  } else {
888  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_FAILURE_TYPE_BLOB_READ_FAILED for safety.", text);
890  }
891 }
892 static ds3_pool_health _match_ds3_pool_health(const ds3_log* log, const xmlChar* text) {
893  if (xmlStrcmp(text, (const xmlChar*) "OK") == 0) {
894  return DS3_POOL_HEALTH_OK;
895  } else if (xmlStrcmp(text, (const xmlChar*) "DEGRADED") == 0) {
897  } else {
898  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_HEALTH_OK for safety.", text);
899  return DS3_POOL_HEALTH_OK;
900  }
901 }
902 static ds3_pool_state _match_ds3_pool_state(const ds3_log* log, const xmlChar* text) {
903  if (xmlStrcmp(text, (const xmlChar*) "BLANK") == 0) {
904  return DS3_POOL_STATE_BLANK;
905  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
906  return DS3_POOL_STATE_NORMAL;
907  } else if (xmlStrcmp(text, (const xmlChar*) "LOST") == 0) {
908  return DS3_POOL_STATE_LOST;
909  } else if (xmlStrcmp(text, (const xmlChar*) "FOREIGN") == 0) {
910  return DS3_POOL_STATE_FOREIGN;
911  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_PENDING") == 0) {
913  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_IN_PROGRESS") == 0) {
915  } else {
916  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_STATE_BLANK for safety.", text);
917  return DS3_POOL_STATE_BLANK;
918  }
919 }
920 static ds3_pool_type _match_ds3_pool_type(const ds3_log* log, const xmlChar* text) {
921  if (xmlStrcmp(text, (const xmlChar*) "NEARLINE") == 0) {
922  return DS3_POOL_TYPE_NEARLINE;
923  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE") == 0) {
924  return DS3_POOL_TYPE_ONLINE;
925  } else {
926  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_TYPE_NEARLINE for safety.", text);
927  return DS3_POOL_TYPE_NEARLINE;
928  }
929 }
930 static ds3_quiesced _match_ds3_quiesced(const ds3_log* log, const xmlChar* text) {
931  if (xmlStrcmp(text, (const xmlChar*) "NO") == 0) {
932  return DS3_QUIESCED_NO;
933  } else if (xmlStrcmp(text, (const xmlChar*) "PENDING") == 0) {
934  return DS3_QUIESCED_PENDING;
935  } else if (xmlStrcmp(text, (const xmlChar*) "YES") == 0) {
936  return DS3_QUIESCED_YES;
937  } else {
938  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_QUIESCED_NO for safety.", text);
939  return DS3_QUIESCED_NO;
940  }
941 }
942 static ds3_reserved_task_type _match_ds3_reserved_task_type(const ds3_log* log, const xmlChar* text) {
943  if (xmlStrcmp(text, (const xmlChar*) "ANY") == 0) {
945  } else if (xmlStrcmp(text, (const xmlChar*) "READ") == 0) {
947  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE") == 0) {
949  } else {
950  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_RESERVED_TASK_TYPE_ANY for safety.", text);
952  }
953 }
955  if (xmlStrcmp(text, (const xmlChar*) "SUPPORTED") == 0) {
957  } else if (xmlStrcmp(text, (const xmlChar*) "NOT_SUPPORTED") == 0) {
959  } else {
960  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_IMPORT_EXPORT_CONFIGURATION_SUPPORTED for safety.", text);
962  }
963 }
964 static ds3_tape_drive_state _match_ds3_tape_drive_state(const ds3_log* log, const xmlChar* text) {
965  if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
967  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
969  } else if (xmlStrcmp(text, (const xmlChar*) "ERROR") == 0) {
971  } else if (xmlStrcmp(text, (const xmlChar*) "NOT_COMPATIBLE_IN_PARTITION_DUE_TO_NEWER_TAPE_DRIVES") == 0) {
973  } else {
974  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_DRIVE_STATE_OFFLINE for safety.", text);
976  }
977 }
978 static ds3_tape_drive_type _match_ds3_tape_drive_type(const ds3_log* log, const xmlChar* text) {
979  if (xmlStrcmp(text, (const xmlChar*) "UNKNOWN") == 0) {
981  } else if (xmlStrcmp(text, (const xmlChar*) "LTO5") == 0) {
983  } else if (xmlStrcmp(text, (const xmlChar*) "LTO6") == 0) {
985  } else if (xmlStrcmp(text, (const xmlChar*) "LTO7") == 0) {
987  } else if (xmlStrcmp(text, (const xmlChar*) "LTO8") == 0) {
989  } else if (xmlStrcmp(text, (const xmlChar*) "TS1140") == 0) {
991  } else if (xmlStrcmp(text, (const xmlChar*) "TS1150") == 0) {
993  } else if (xmlStrcmp(text, (const xmlChar*) "TS1155") == 0) {
995  } else {
996  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_DRIVE_TYPE_UNKNOWN for safety.", text);
998  }
999 }
1000 static ds3_tape_failure_type _match_ds3_tape_failure_type(const ds3_log* log, const xmlChar* text) {
1001  if (xmlStrcmp(text, (const xmlChar*) "BAR_CODE_CHANGED") == 0) {
1003  } else if (xmlStrcmp(text, (const xmlChar*) "BAR_CODE_DUPLICATE") == 0) {
1005  } else if (xmlStrcmp(text, (const xmlChar*) "BLOB_READ_FAILED") == 0) {
1007  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE") == 0) {
1009  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE_DUE_TO_READ_ONLY") == 0) {
1011  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_MISSING") == 0) {
1013  } else if (xmlStrcmp(text, (const xmlChar*) "DELAYED_OWNERSHIP_FAILURE") == 0) {
1015  } else if (xmlStrcmp(text, (const xmlChar*) "DRIVE_CLEAN_FAILED") == 0) {
1017  } else if (xmlStrcmp(text, (const xmlChar*) "DRIVE_CLEANED") == 0) {
1019  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_FAILED") == 0) {
1021  } else if (xmlStrcmp(text, (const xmlChar*) "GET_TAPE_INFORMATION_FAILED") == 0) {
1023  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
1025  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) {
1027  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE") == 0) {
1029  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_DATA_INTEGRITY") == 0) {
1031  } else if (xmlStrcmp(text, (const xmlChar*) "INSPECT_FAILED") == 0) {
1033  } else if (xmlStrcmp(text, (const xmlChar*) "READ_FAILED") == 0) {
1035  } else if (xmlStrcmp(text, (const xmlChar*) "REIMPORT_REQUIRED") == 0) {
1037  } else if (xmlStrcmp(text, (const xmlChar*) "SERIAL_NUMBER_MISMATCH") == 0) {
1039  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY_FAILED") == 0) {
1041  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_FAILED") == 0) {
1043  } else {
1044  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_FAILURE_TYPE_BAR_CODE_CHANGED for safety.", text);
1046  }
1047 }
1049  if (xmlStrcmp(text, (const xmlChar*) "CLEANING_TAPE_REQUIRED") == 0) {
1051  } else if (xmlStrcmp(text, (const xmlChar*) "DUPLICATE_TAPE_BAR_CODES_DETECTED") == 0) {
1053  } else if (xmlStrcmp(text, (const xmlChar*) "EJECT_STALLED_DUE_TO_OFFLINE_TAPES") == 0) {
1055  } else if (xmlStrcmp(text, (const xmlChar*) "MINIMUM_DRIVE_COUNT_NOT_MET") == 0) {
1057  } else if (xmlStrcmp(text, (const xmlChar*) "MOVE_FAILED") == 0) {
1059  } else if (xmlStrcmp(text, (const xmlChar*) "MOVE_FAILED_DUE_TO_PREPARE_TAPE_FOR_REMOVAL_FAILURE") == 0) {
1061  } else if (xmlStrcmp(text, (const xmlChar*) "NO_USABLE_DRIVES") == 0) {
1063  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE_STALLED_DUE_TO_NO_STORAGE_SLOTS") == 0) {
1065  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_IN_ERROR") == 0) {
1067  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_MISSING") == 0) {
1069  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_QUIESCED") == 0) {
1071  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_TYPE_MISMATCH") == 0) {
1073  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_EJECTION_BY_OPERATOR_REQUIRED") == 0) {
1075  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_MEDIA_TYPE_INCOMPATIBLE") == 0) {
1077  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_REMOVAL_UNEXPECTED") == 0) {
1079  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_IN_INVALID_PARTITION") == 0) {
1081  } else {
1082  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_PARTITION_FAILURE_TYPE_CLEANING_TAPE_REQUIRED for safety.", text);
1084  }
1085 }
1086 static ds3_tape_partition_state _match_ds3_tape_partition_state(const ds3_log* log, const xmlChar* text) {
1087  if (xmlStrcmp(text, (const xmlChar*) "ONLINE") == 0) {
1089  } else if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
1091  } else if (xmlStrcmp(text, (const xmlChar*) "ERROR") == 0) {
1093  } else {
1094  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_PARTITION_STATE_ONLINE for safety.", text);
1096  }
1097 }
1098 static ds3_tape_state _match_ds3_tape_state(const ds3_log* log, const xmlChar* text) {
1099  if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
1100  return DS3_TAPE_STATE_NORMAL;
1101  } else if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
1102  return DS3_TAPE_STATE_OFFLINE;
1103  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE_PENDING") == 0) {
1105  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE_IN_PROGRESS") == 0) {
1107  } else if (xmlStrcmp(text, (const xmlChar*) "PENDING_INSPECTION") == 0) {
1109  } else if (xmlStrcmp(text, (const xmlChar*) "UNKNOWN") == 0) {
1110  return DS3_TAPE_STATE_UNKNOWN;
1111  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE") == 0) {
1113  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE_DUE_TO_READ_ONLY") == 0) {
1115  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_MISSING") == 0) {
1117  } else if (xmlStrcmp(text, (const xmlChar*) "LTFS_WITH_FOREIGN_DATA") == 0) {
1119  } else if (xmlStrcmp(text, (const xmlChar*) "RAW_IMPORT_PENDING") == 0) {
1121  } else if (xmlStrcmp(text, (const xmlChar*) "RAW_IMPORT_IN_PROGRESS") == 0) {
1123  } else if (xmlStrcmp(text, (const xmlChar*) "FOREIGN") == 0) {
1124  return DS3_TAPE_STATE_FOREIGN;
1125  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_PENDING") == 0) {
1127  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_IN_PROGRESS") == 0) {
1129  } else if (xmlStrcmp(text, (const xmlChar*) "INCOMPATIBLE") == 0) {
1131  } else if (xmlStrcmp(text, (const xmlChar*) "LOST") == 0) {
1132  return DS3_TAPE_STATE_LOST;
1133  } else if (xmlStrcmp(text, (const xmlChar*) "BAD") == 0) {
1134  return DS3_TAPE_STATE_BAD;
1135  } else if (xmlStrcmp(text, (const xmlChar*) "CANNOT_FORMAT_DUE_TO_WRITE_PROTECTION") == 0) {
1137  } else if (xmlStrcmp(text, (const xmlChar*) "SERIAL_NUMBER_MISMATCH") == 0) {
1139  } else if (xmlStrcmp(text, (const xmlChar*) "BAR_CODE_MISSING") == 0) {
1141  } else if (xmlStrcmp(text, (const xmlChar*) "AUTO_COMPACTION_IN_PROGRESS") == 0) {
1143  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_PENDING") == 0) {
1145  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_IN_PROGRESS") == 0) {
1147  } else if (xmlStrcmp(text, (const xmlChar*) "EJECT_TO_EE_IN_PROGRESS") == 0) {
1149  } else if (xmlStrcmp(text, (const xmlChar*) "EJECT_FROM_EE_PENDING") == 0) {
1151  } else if (xmlStrcmp(text, (const xmlChar*) "EJECTED") == 0) {
1152  return DS3_TAPE_STATE_EJECTED;
1153  } else {
1154  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_STATE_NORMAL for safety.", text);
1155  return DS3_TAPE_STATE_NORMAL;
1156  }
1157 }
1158 static ds3_tape_type _match_ds3_tape_type(const ds3_log* log, const xmlChar* text) {
1159  if (xmlStrcmp(text, (const xmlChar*) "LTO5") == 0) {
1160  return DS3_TAPE_TYPE_LTO5;
1161  } else if (xmlStrcmp(text, (const xmlChar*) "LTO6") == 0) {
1162  return DS3_TAPE_TYPE_LTO6;
1163  } else if (xmlStrcmp(text, (const xmlChar*) "LTO7") == 0) {
1164  return DS3_TAPE_TYPE_LTO7;
1165  } else if (xmlStrcmp(text, (const xmlChar*) "LTOM8") == 0) {
1166  return DS3_TAPE_TYPE_LTOM8;
1167  } else if (xmlStrcmp(text, (const xmlChar*) "LTO8") == 0) {
1168  return DS3_TAPE_TYPE_LTO8;
1169  } else if (xmlStrcmp(text, (const xmlChar*) "LTO_CLEANING_TAPE") == 0) {
1171  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JC") == 0) {
1172  return DS3_TAPE_TYPE_TS_JC;
1173  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JY") == 0) {
1174  return DS3_TAPE_TYPE_TS_JY;
1175  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JK") == 0) {
1176  return DS3_TAPE_TYPE_TS_JK;
1177  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JD") == 0) {
1178  return DS3_TAPE_TYPE_TS_JD;
1179  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JZ") == 0) {
1180  return DS3_TAPE_TYPE_TS_JZ;
1181  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JL") == 0) {
1182  return DS3_TAPE_TYPE_TS_JL;
1183  } else if (xmlStrcmp(text, (const xmlChar*) "TS_CLEANING_TAPE") == 0) {
1185  } else if (xmlStrcmp(text, (const xmlChar*) "UNKNOWN") == 0) {
1186  return DS3_TAPE_TYPE_UNKNOWN;
1187  } else if (xmlStrcmp(text, (const xmlChar*) "FORBIDDEN") == 0) {
1188  return DS3_TAPE_TYPE_FORBIDDEN;
1189  } else {
1190  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_TYPE_LTO5 for safety.", text);
1191  return DS3_TAPE_TYPE_LTO5;
1192  }
1193 }
1195  if (xmlStrcmp(text, (const xmlChar*) "NONE") == 0) {
1197  } else if (xmlStrcmp(text, (const xmlChar*) "USERS") == 0) {
1199  } else {
1200  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TARGET_ACCESS_CONTROL_REPLICATION_NONE for safety.", text);
1202  }
1203 }
1204 static ds3_target_failure_type _match_ds3_target_failure_type(const ds3_log* log, const xmlChar* text) {
1205  if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
1207  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_INCOMPLETE") == 0) {
1209  } else if (xmlStrcmp(text, (const xmlChar*) "NOT_ONLINE") == 0) {
1211  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_FAILED") == 0) {
1213  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_INITIATE_FAILED") == 0) {
1215  } else if (xmlStrcmp(text, (const xmlChar*) "READ_FAILED") == 0) {
1217  } else if (xmlStrcmp(text, (const xmlChar*) "READ_INITIATE_FAILED") == 0) {
1219  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY_FAILED") == 0) {
1221  } else {
1222  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TARGET_FAILURE_TYPE_IMPORT_FAILED for safety.", text);
1224  }
1225 }
1227  if (xmlStrcmp(text, (const xmlChar*) "MINIMUM_LATENCY") == 0) {
1229  } else if (xmlStrcmp(text, (const xmlChar*) "AFTER_ONLINE_POOL") == 0) {
1231  } else if (xmlStrcmp(text, (const xmlChar*) "AFTER_NEARLINE_POOL") == 0) {
1233  } else if (xmlStrcmp(text, (const xmlChar*) "AFTER_NON_EJECTABLE_TAPE") == 0) {
1235  } else if (xmlStrcmp(text, (const xmlChar*) "LAST_RESORT") == 0) {
1237  } else if (xmlStrcmp(text, (const xmlChar*) "NEVER") == 0) {
1239  } else {
1240  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TARGET_READ_PREFERENCE_TYPE_MINIMUM_LATENCY for safety.", text);
1242  }
1243 }
1244 static ds3_target_state _match_ds3_target_state(const ds3_log* log, const xmlChar* text) {
1245  if (xmlStrcmp(text, (const xmlChar*) "ONLINE") == 0) {
1246  return DS3_TARGET_STATE_ONLINE;
1247  } else if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
1248  return DS3_TARGET_STATE_OFFLINE;
1249  } else {
1250  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TARGET_STATE_ONLINE for safety.", text);
1251  return DS3_TARGET_STATE_ONLINE;
1252  }
1253 }
1254 static ds3_blob_store_task_state _match_ds3_blob_store_task_state(const ds3_log* log, const xmlChar* text) {
1255  if (xmlStrcmp(text, (const xmlChar*) "NOT_READY") == 0) {
1257  } else if (xmlStrcmp(text, (const xmlChar*) "READY") == 0) {
1259  } else if (xmlStrcmp(text, (const xmlChar*) "PENDING_EXECUTION") == 0) {
1261  } else if (xmlStrcmp(text, (const xmlChar*) "IN_PROGRESS") == 0) {
1263  } else if (xmlStrcmp(text, (const xmlChar*) "COMPLETED") == 0) {
1265  } else {
1266  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_BLOB_STORE_TASK_STATE_NOT_READY for safety.", text);
1268  }
1269 }
1270 static ds3_cache_entry_state _match_ds3_cache_entry_state(const ds3_log* log, const xmlChar* text) {
1271  if (xmlStrcmp(text, (const xmlChar*) "ALLOCATED") == 0) {
1273  } else if (xmlStrcmp(text, (const xmlChar*) "IN_CACHE") == 0) {
1275  } else {
1276  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_CACHE_ENTRY_STATE_ALLOCATED for safety.", text);
1278  }
1279 }
1280 static ds3_job_status _match_ds3_job_status(const ds3_log* log, const xmlChar* text) {
1281  if (xmlStrcmp(text, (const xmlChar*) "IN_PROGRESS") == 0) {
1283  } else if (xmlStrcmp(text, (const xmlChar*) "COMPLETED") == 0) {
1284  return DS3_JOB_STATUS_COMPLETED;
1285  } else if (xmlStrcmp(text, (const xmlChar*) "CANCELED") == 0) {
1286  return DS3_JOB_STATUS_CANCELED;
1287  } else {
1288  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_STATUS_IN_PROGRESS for safety.", text);
1290  }
1291 }
1293  if (xmlStrcmp(text, (const xmlChar*) "CRITICAL") == 0) {
1295  } else if (xmlStrcmp(text, (const xmlChar*) "LOW") == 0) {
1297  } else if (xmlStrcmp(text, (const xmlChar*) "NEAR_LOW") == 0) {
1299  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
1301  } else {
1302  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATABASE_PHYSICAL_SPACE_STATE_CRITICAL for safety.", text);
1304  }
1305 }
1307  if (xmlStrcmp(text, (const xmlChar*) "DEFAULT") == 0) {
1309  } else if (xmlStrcmp(text, (const xmlChar*) "JSON") == 0) {
1311  } else if (xmlStrcmp(text, (const xmlChar*) "XML") == 0) {
1313  } else {
1314  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_HTTP_RESPONSE_FORMAT_TYPE_DEFAULT for safety.", text);
1316  }
1317 }
1318 static ds3_request_type _match_ds3_request_type(const ds3_log* log, const xmlChar* text) {
1319  if (xmlStrcmp(text, (const xmlChar*) "DELETE") == 0) {
1320  return DS3_REQUEST_TYPE_DELETE;
1321  } else if (xmlStrcmp(text, (const xmlChar*) "GET") == 0) {
1322  return DS3_REQUEST_TYPE_GET;
1323  } else if (xmlStrcmp(text, (const xmlChar*) "HEAD") == 0) {
1324  return DS3_REQUEST_TYPE_HEAD;
1325  } else if (xmlStrcmp(text, (const xmlChar*) "POST") == 0) {
1326  return DS3_REQUEST_TYPE_POST;
1327  } else if (xmlStrcmp(text, (const xmlChar*) "PUT") == 0) {
1328  return DS3_REQUEST_TYPE_PUT;
1329  } else {
1330  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_REQUEST_TYPE_DELETE for safety.", text);
1331  return DS3_REQUEST_TYPE_DELETE;
1332  }
1333 }
1335  if (xmlStrcmp(text, (const xmlChar*) "CONCAT_LOWERCASE") == 0) {
1337  } else if (xmlStrcmp(text, (const xmlChar*) "CONSTANT") == 0) {
1339  } else if (xmlStrcmp(text, (const xmlChar*) "UNDERSCORED") == 0) {
1341  } else if (xmlStrcmp(text, (const xmlChar*) "CAMEL_CASE_WITH_FIRST_LETTER_UPPERCASE") == 0) {
1343  } else if (xmlStrcmp(text, (const xmlChar*) "CAMEL_CASE_WITH_FIRST_LETTER_LOWERCASE") == 0) {
1345  } else {
1346  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_NAMING_CONVENTION_TYPE_CONCAT_LOWERCASE for safety.", text);
1348  }
1349 }
1350 static ds3_checksum_type _match_ds3_checksum_type(const ds3_log* log, const xmlChar* text) {
1351  if (xmlStrcmp(text, (const xmlChar*) "CRC_32") == 0) {
1352  return DS3_CHECKSUM_TYPE_CRC_32;
1353  } else if (xmlStrcmp(text, (const xmlChar*) "CRC_32C") == 0) {
1355  } else if (xmlStrcmp(text, (const xmlChar*) "MD5") == 0) {
1356  return DS3_CHECKSUM_TYPE_MD5;
1357  } else if (xmlStrcmp(text, (const xmlChar*) "SHA_256") == 0) {
1359  } else if (xmlStrcmp(text, (const xmlChar*) "SHA_512") == 0) {
1361  } else {
1362  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_CHECKSUM_TYPE_CRC_32 for safety.", text);
1363  return DS3_CHECKSUM_TYPE_CRC_32;
1364  }
1365 }
1366 
1367 //************ STRUCT PARSERS **************
1368 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) {
1370  xmlNodePtr child_node;
1371  ds3_error* error = NULL;
1372 
1373  response = g_new0(ds3_azure_data_replication_rule_response, 1);
1374 
1375 
1376  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1377  if (element_equal(child_node, "DataPolicyId")) {
1378  response->data_policy_id = xml_get_string(doc, child_node);
1379  } else if (element_equal(child_node, "Id")) {
1380  response->id = xml_get_string(doc, child_node);
1381  } else if (element_equal(child_node, "MaxBlobPartSizeInBytes")) {
1382  response->max_blob_part_size_in_bytes = xml_get_uint64(doc, child_node);
1383  } else if (element_equal(child_node, "ReplicateDeletes")) {
1384  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
1385  } else if (element_equal(child_node, "State")) {
1386  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1387  if (text == NULL) {
1388  continue;
1389  }
1390  response->state = _match_ds3_data_placement_rule_state(client->log, text);
1391  xmlFree(text);
1392  } else if (element_equal(child_node, "TargetId")) {
1393  response->target_id = xml_get_string(doc, child_node);
1394  } else if (element_equal(child_node, "Type")) {
1395  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1396  if (text == NULL) {
1397  continue;
1398  }
1399  response->type = _match_ds3_data_replication_rule_type(client->log, text);
1400  xmlFree(text);
1401  } else {
1402  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_data_replication_rule_response [%s]\n", child_node->name, root->name);
1403  }
1404 
1405  if (error != NULL) {
1406  break;
1407  }
1408 
1409  }
1410 
1411 
1412  *_response = response;
1413 
1414  return error;
1415 }
1416 
1417 static ds3_error* _parse_ds3_blob_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_blob_response** _response) {
1418  ds3_blob_response* response;
1419  xmlNodePtr child_node;
1420  ds3_error* error = NULL;
1421 
1422  response = g_new0(ds3_blob_response, 1);
1423 
1424 
1425  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1426  if (element_equal(child_node, "ByteOffset")) {
1427  response->byte_offset = xml_get_uint64(doc, child_node);
1428  } else if (element_equal(child_node, "Checksum")) {
1429  response->checksum = xml_get_string(doc, child_node);
1430  } else if (element_equal(child_node, "ChecksumType")) {
1431  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1432  if (text == NULL) {
1433  continue;
1434  }
1435  response->checksum_type = _match_ds3_checksum_type(client->log, text);
1436  xmlFree(text);
1437  } else if (element_equal(child_node, "Id")) {
1438  response->id = xml_get_string(doc, child_node);
1439  } else if (element_equal(child_node, "Length")) {
1440  response->length = xml_get_uint64(doc, child_node);
1441  } else if (element_equal(child_node, "ObjectId")) {
1442  response->object_id = xml_get_string(doc, child_node);
1443  } else {
1444  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_blob_response [%s]\n", child_node->name, root->name);
1445  }
1446 
1447  if (error != NULL) {
1448  break;
1449  }
1450 
1451  }
1452 
1453 
1454  *_response = response;
1455 
1456  return error;
1457 }
1458 
1459 static ds3_error* _parse_ds3_bucket_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_response** _response) {
1460  ds3_bucket_response* response;
1461  xmlNodePtr child_node;
1462  ds3_error* error = NULL;
1463 
1464  response = g_new0(ds3_bucket_response, 1);
1465 
1466 
1467  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1468  if (element_equal(child_node, "CreationDate")) {
1469  response->creation_date = xml_get_string(doc, child_node);
1470  } else if (element_equal(child_node, "DataPolicyId")) {
1471  response->data_policy_id = xml_get_string(doc, child_node);
1472  } else if (element_equal(child_node, "Empty")) {
1473  response->empty = xml_get_bool(client->log, doc, child_node);
1474  } else if (element_equal(child_node, "Id")) {
1475  response->id = xml_get_string(doc, child_node);
1476  } else if (element_equal(child_node, "LastPreferredChunkSizeInBytes")) {
1477  response->last_preferred_chunk_size_in_bytes = xml_get_uint64(doc, child_node);
1478  } else if (element_equal(child_node, "LogicalUsedCapacity")) {
1479  response->logical_used_capacity = xml_get_uint64(doc, child_node);
1480  } else if (element_equal(child_node, "Name")) {
1481  response->name = xml_get_string(doc, child_node);
1482  } else if (element_equal(child_node, "UserId")) {
1483  response->user_id = xml_get_string(doc, child_node);
1484  } else {
1485  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_response [%s]\n", child_node->name, root->name);
1486  }
1487 
1488  if (error != NULL) {
1489  break;
1490  }
1491 
1492  }
1493 
1494 
1495  *_response = response;
1496 
1497  return error;
1498 }
1499 
1500 static ds3_error* _parse_ds3_bucket_acl_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_acl_response** _response) {
1501  ds3_bucket_acl_response* response;
1502  xmlNodePtr child_node;
1503  ds3_error* error = NULL;
1504 
1505  response = g_new0(ds3_bucket_acl_response, 1);
1506 
1507 
1508  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1509  if (element_equal(child_node, "BucketId")) {
1510  response->bucket_id = xml_get_string(doc, child_node);
1511  } else if (element_equal(child_node, "GroupId")) {
1512  response->group_id = xml_get_string(doc, child_node);
1513  } else if (element_equal(child_node, "Id")) {
1514  response->id = xml_get_string(doc, child_node);
1515  } else if (element_equal(child_node, "Permission")) {
1516  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1517  if (text == NULL) {
1518  continue;
1519  }
1520  response->permission = _match_ds3_bucket_acl_permission(client->log, text);
1521  xmlFree(text);
1522  } else if (element_equal(child_node, "UserId")) {
1523  response->user_id = xml_get_string(doc, child_node);
1524  } else {
1525  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_acl_response [%s]\n", child_node->name, root->name);
1526  }
1527 
1528  if (error != NULL) {
1529  break;
1530  }
1531 
1532  }
1533 
1534 
1535  *_response = response;
1536 
1537  return error;
1538 }
1539 
1540 static ds3_error* _parse_ds3_canceled_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_canceled_job_response** _response) {
1541  ds3_canceled_job_response* response;
1542  xmlNodePtr child_node;
1543  ds3_error* error = NULL;
1544 
1545  response = g_new0(ds3_canceled_job_response, 1);
1546 
1547 
1548  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1549  if (element_equal(child_node, "BucketId")) {
1550  response->bucket_id = xml_get_string(doc, child_node);
1551  } else if (element_equal(child_node, "CachedSizeInBytes")) {
1552  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
1553  } else if (element_equal(child_node, "CanceledDueToTimeout")) {
1554  response->canceled_due_to_timeout = xml_get_bool(client->log, doc, child_node);
1555  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
1556  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1557  if (text == NULL) {
1558  continue;
1559  }
1561  xmlFree(text);
1562  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
1563  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
1564  } else if (element_equal(child_node, "CreatedAt")) {
1565  response->created_at = xml_get_string(doc, child_node);
1566  } else if (element_equal(child_node, "DateCanceled")) {
1567  response->date_canceled = xml_get_string(doc, child_node);
1568  } else if (element_equal(child_node, "ErrorMessage")) {
1569  response->error_message = xml_get_string(doc, child_node);
1570  } else if (element_equal(child_node, "Id")) {
1571  response->id = xml_get_string(doc, child_node);
1572  } else if (element_equal(child_node, "Naked")) {
1573  response->naked = xml_get_bool(client->log, doc, child_node);
1574  } else if (element_equal(child_node, "Name")) {
1575  response->name = xml_get_string(doc, child_node);
1576  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
1577  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
1578  } else if (element_equal(child_node, "Priority")) {
1579  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1580  if (text == NULL) {
1581  continue;
1582  }
1583  response->priority = _match_ds3_priority(client->log, text);
1584  xmlFree(text);
1585  } else if (element_equal(child_node, "Rechunked")) {
1586  response->rechunked = xml_get_string(doc, child_node);
1587  } else if (element_equal(child_node, "RequestType")) {
1588  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1589  if (text == NULL) {
1590  continue;
1591  }
1592  response->request_type = _match_ds3_job_request_type(client->log, text);
1593  xmlFree(text);
1594  } else if (element_equal(child_node, "Truncated")) {
1595  response->truncated = xml_get_bool(client->log, doc, child_node);
1596  } else if (element_equal(child_node, "UserId")) {
1597  response->user_id = xml_get_string(doc, child_node);
1598  } else {
1599  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_canceled_job_response [%s]\n", child_node->name, root->name);
1600  }
1601 
1602  if (error != NULL) {
1603  break;
1604  }
1605 
1606  }
1607 
1608 
1609  *_response = response;
1610 
1611  return error;
1612 }
1613 
1614 static ds3_error* _parse_ds3_completed_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_completed_job_response** _response) {
1615  ds3_completed_job_response* response;
1616  xmlNodePtr child_node;
1617  ds3_error* error = NULL;
1618 
1619  response = g_new0(ds3_completed_job_response, 1);
1620 
1621 
1622  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1623  if (element_equal(child_node, "BucketId")) {
1624  response->bucket_id = xml_get_string(doc, child_node);
1625  } else if (element_equal(child_node, "CachedSizeInBytes")) {
1626  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
1627  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
1628  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1629  if (text == NULL) {
1630  continue;
1631  }
1633  xmlFree(text);
1634  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
1635  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
1636  } else if (element_equal(child_node, "CreatedAt")) {
1637  response->created_at = xml_get_string(doc, child_node);
1638  } else if (element_equal(child_node, "DateCompleted")) {
1639  response->date_completed = xml_get_string(doc, child_node);
1640  } else if (element_equal(child_node, "ErrorMessage")) {
1641  response->error_message = xml_get_string(doc, child_node);
1642  } else if (element_equal(child_node, "Id")) {
1643  response->id = xml_get_string(doc, child_node);
1644  } else if (element_equal(child_node, "Naked")) {
1645  response->naked = xml_get_bool(client->log, doc, child_node);
1646  } else if (element_equal(child_node, "Name")) {
1647  response->name = xml_get_string(doc, child_node);
1648  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
1649  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
1650  } else if (element_equal(child_node, "Priority")) {
1651  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1652  if (text == NULL) {
1653  continue;
1654  }
1655  response->priority = _match_ds3_priority(client->log, text);
1656  xmlFree(text);
1657  } else if (element_equal(child_node, "Rechunked")) {
1658  response->rechunked = xml_get_string(doc, child_node);
1659  } else if (element_equal(child_node, "RequestType")) {
1660  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1661  if (text == NULL) {
1662  continue;
1663  }
1664  response->request_type = _match_ds3_job_request_type(client->log, text);
1665  xmlFree(text);
1666  } else if (element_equal(child_node, "Truncated")) {
1667  response->truncated = xml_get_bool(client->log, doc, child_node);
1668  } else if (element_equal(child_node, "UserId")) {
1669  response->user_id = xml_get_string(doc, child_node);
1670  } else {
1671  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_completed_job_response [%s]\n", child_node->name, root->name);
1672  }
1673 
1674  if (error != NULL) {
1675  break;
1676  }
1677 
1678  }
1679 
1680 
1681  *_response = response;
1682 
1683  return error;
1684 }
1685 
1686 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) {
1688  xmlNodePtr child_node;
1689  ds3_error* error = NULL;
1690 
1691  response = g_new0(ds3_data_persistence_rule_response, 1);
1692 
1693 
1694  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1695  if (element_equal(child_node, "DataPolicyId")) {
1696  response->data_policy_id = xml_get_string(doc, child_node);
1697  } else if (element_equal(child_node, "Id")) {
1698  response->id = xml_get_string(doc, child_node);
1699  } else if (element_equal(child_node, "IsolationLevel")) {
1700  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1701  if (text == NULL) {
1702  continue;
1703  }
1704  response->isolation_level = _match_ds3_data_isolation_level(client->log, text);
1705  xmlFree(text);
1706  } else if (element_equal(child_node, "MinimumDaysToRetain")) {
1707  response->minimum_days_to_retain = xml_get_uint16(doc, child_node);
1708  } else if (element_equal(child_node, "State")) {
1709  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1710  if (text == NULL) {
1711  continue;
1712  }
1713  response->state = _match_ds3_data_placement_rule_state(client->log, text);
1714  xmlFree(text);
1715  } else if (element_equal(child_node, "StorageDomainId")) {
1716  response->storage_domain_id = xml_get_string(doc, child_node);
1717  } else if (element_equal(child_node, "Type")) {
1718  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1719  if (text == NULL) {
1720  continue;
1721  }
1722  response->type = _match_ds3_data_persistence_rule_type(client->log, text);
1723  xmlFree(text);
1724  } else {
1725  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_persistence_rule_response [%s]\n", child_node->name, root->name);
1726  }
1727 
1728  if (error != NULL) {
1729  break;
1730  }
1731 
1732  }
1733 
1734 
1735  *_response = response;
1736 
1737  return error;
1738 }
1739 
1740 static ds3_error* _parse_ds3_data_policy_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_policy_response** _response) {
1741  ds3_data_policy_response* response;
1742  xmlNodePtr child_node;
1743  ds3_error* error = NULL;
1744 
1745  response = g_new0(ds3_data_policy_response, 1);
1746 
1747 
1748  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1749  if (element_equal(child_node, "AlwaysForcePutJobCreation")) {
1750  response->always_force_put_job_creation = xml_get_bool(client->log, doc, child_node);
1751  } else if (element_equal(child_node, "AlwaysMinimizeSpanningAcrossMedia")) {
1752  response->always_minimize_spanning_across_media = xml_get_bool(client->log, doc, child_node);
1753  } else if (element_equal(child_node, "BlobbingEnabled")) {
1754  response->blobbing_enabled = xml_get_bool(client->log, doc, child_node);
1755  } else if (element_equal(child_node, "ChecksumType")) {
1756  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1757  if (text == NULL) {
1758  continue;
1759  }
1760  response->checksum_type = _match_ds3_checksum_type(client->log, text);
1761  xmlFree(text);
1762  } else if (element_equal(child_node, "CreationDate")) {
1763  response->creation_date = xml_get_string(doc, child_node);
1764  } else if (element_equal(child_node, "DefaultBlobSize")) {
1765  response->default_blob_size = xml_get_uint64(doc, child_node);
1766  } else if (element_equal(child_node, "DefaultGetJobPriority")) {
1767  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1768  if (text == NULL) {
1769  continue;
1770  }
1771  response->default_get_job_priority = _match_ds3_priority(client->log, text);
1772  xmlFree(text);
1773  } else if (element_equal(child_node, "DefaultPutJobPriority")) {
1774  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1775  if (text == NULL) {
1776  continue;
1777  }
1778  response->default_put_job_priority = _match_ds3_priority(client->log, text);
1779  xmlFree(text);
1780  } else if (element_equal(child_node, "DefaultVerifyAfterWrite")) {
1781  response->default_verify_after_write = xml_get_bool(client->log, doc, child_node);
1782  } else if (element_equal(child_node, "DefaultVerifyJobPriority")) {
1783  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1784  if (text == NULL) {
1785  continue;
1786  }
1787  response->default_verify_job_priority = _match_ds3_priority(client->log, text);
1788  xmlFree(text);
1789  } else if (element_equal(child_node, "EndToEndCrcRequired")) {
1790  response->end_to_end_crc_required = xml_get_bool(client->log, doc, child_node);
1791  } else if (element_equal(child_node, "Id")) {
1792  response->id = xml_get_string(doc, child_node);
1793  } else if (element_equal(child_node, "MaxVersionsToKeep")) {
1794  response->max_versions_to_keep = xml_get_uint16(doc, child_node);
1795  } else if (element_equal(child_node, "Name")) {
1796  response->name = xml_get_string(doc, child_node);
1797  } else if (element_equal(child_node, "RebuildPriority")) {
1798  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1799  if (text == NULL) {
1800  continue;
1801  }
1802  response->rebuild_priority = _match_ds3_priority(client->log, text);
1803  xmlFree(text);
1804  } else if (element_equal(child_node, "Versioning")) {
1805  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1806  if (text == NULL) {
1807  continue;
1808  }
1809  response->versioning = _match_ds3_versioning_level(client->log, text);
1810  xmlFree(text);
1811  } else {
1812  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_response [%s]\n", child_node->name, root->name);
1813  }
1814 
1815  if (error != NULL) {
1816  break;
1817  }
1818 
1819  }
1820 
1821 
1822  *_response = response;
1823 
1824  return error;
1825 }
1826 
1827 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) {
1828  ds3_data_policy_acl_response* response;
1829  xmlNodePtr child_node;
1830  ds3_error* error = NULL;
1831 
1832  response = g_new0(ds3_data_policy_acl_response, 1);
1833 
1834 
1835  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1836  if (element_equal(child_node, "DataPolicyId")) {
1837  response->data_policy_id = xml_get_string(doc, child_node);
1838  } else if (element_equal(child_node, "GroupId")) {
1839  response->group_id = xml_get_string(doc, child_node);
1840  } else if (element_equal(child_node, "Id")) {
1841  response->id = xml_get_string(doc, child_node);
1842  } else if (element_equal(child_node, "UserId")) {
1843  response->user_id = xml_get_string(doc, child_node);
1844  } else {
1845  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_acl_response [%s]\n", child_node->name, root->name);
1846  }
1847 
1848  if (error != NULL) {
1849  break;
1850  }
1851 
1852  }
1853 
1854 
1855  *_response = response;
1856 
1857  return error;
1858 }
1859 
1860 static ds3_error* _parse_ds3_degraded_blob_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_degraded_blob_response** _response) {
1861  ds3_degraded_blob_response* response;
1862  xmlNodePtr child_node;
1863  ds3_error* error = NULL;
1864 
1865  response = g_new0(ds3_degraded_blob_response, 1);
1866 
1867 
1868  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1869  if (element_equal(child_node, "AzureReplicationRuleId")) {
1870  response->azure_replication_rule_id = xml_get_string(doc, child_node);
1871  } else if (element_equal(child_node, "BlobId")) {
1872  response->blob_id = xml_get_string(doc, child_node);
1873  } else if (element_equal(child_node, "BucketId")) {
1874  response->bucket_id = xml_get_string(doc, child_node);
1875  } else if (element_equal(child_node, "Ds3ReplicationRuleId")) {
1876  response->ds3_replication_rule_id = xml_get_string(doc, child_node);
1877  } else if (element_equal(child_node, "Id")) {
1878  response->id = xml_get_string(doc, child_node);
1879  } else if (element_equal(child_node, "PersistenceRuleId")) {
1880  response->persistence_rule_id = xml_get_string(doc, child_node);
1881  } else if (element_equal(child_node, "S3ReplicationRuleId")) {
1882  response->s3_replication_rule_id = xml_get_string(doc, child_node);
1883  } else {
1884  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_degraded_blob_response [%s]\n", child_node->name, root->name);
1885  }
1886 
1887  if (error != NULL) {
1888  break;
1889  }
1890 
1891  }
1892 
1893 
1894  *_response = response;
1895 
1896  return error;
1897 }
1898 
1899 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) {
1901  xmlNodePtr child_node;
1902  ds3_error* error = NULL;
1903 
1904  response = g_new0(ds3_data_replication_rule_response, 1);
1905 
1906 
1907  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1908  if (element_equal(child_node, "DataPolicyId")) {
1909  response->data_policy_id = xml_get_string(doc, child_node);
1910  } else if (element_equal(child_node, "Id")) {
1911  response->id = xml_get_string(doc, child_node);
1912  } else if (element_equal(child_node, "ReplicateDeletes")) {
1913  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
1914  } else if (element_equal(child_node, "State")) {
1915  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1916  if (text == NULL) {
1917  continue;
1918  }
1919  response->state = _match_ds3_data_placement_rule_state(client->log, text);
1920  xmlFree(text);
1921  } else if (element_equal(child_node, "TargetDataPolicy")) {
1922  response->target_data_policy = xml_get_string(doc, child_node);
1923  } else if (element_equal(child_node, "TargetId")) {
1924  response->target_id = xml_get_string(doc, child_node);
1925  } else if (element_equal(child_node, "Type")) {
1926  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1927  if (text == NULL) {
1928  continue;
1929  }
1930  response->type = _match_ds3_data_replication_rule_type(client->log, text);
1931  xmlFree(text);
1932  } else {
1933  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_replication_rule_response [%s]\n", child_node->name, root->name);
1934  }
1935 
1936  if (error != NULL) {
1937  break;
1938  }
1939 
1940  }
1941 
1942 
1943  *_response = response;
1944 
1945  return error;
1946 }
1947 
1948 static ds3_error* _parse_ds3_feature_key_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_feature_key_response** _response) {
1949  ds3_feature_key_response* response;
1950  xmlNodePtr child_node;
1951  ds3_error* error = NULL;
1952 
1953  response = g_new0(ds3_feature_key_response, 1);
1954 
1955 
1956  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1957  if (element_equal(child_node, "CurrentValue")) {
1958  response->current_value = xml_get_uint64(doc, child_node);
1959  } else if (element_equal(child_node, "ErrorMessage")) {
1960  response->error_message = xml_get_string(doc, child_node);
1961  } else if (element_equal(child_node, "ExpirationDate")) {
1962  response->expiration_date = xml_get_string(doc, child_node);
1963  } else if (element_equal(child_node, "Id")) {
1964  response->id = xml_get_string(doc, child_node);
1965  } else if (element_equal(child_node, "Key")) {
1966  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
1967  if (text == NULL) {
1968  continue;
1969  }
1970  response->key = _match_ds3_feature_key_type(client->log, text);
1971  xmlFree(text);
1972  } else if (element_equal(child_node, "LimitValue")) {
1973  response->limit_value = xml_get_uint64(doc, child_node);
1974  } else {
1975  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_feature_key_response [%s]\n", child_node->name, root->name);
1976  }
1977 
1978  if (error != NULL) {
1979  break;
1980  }
1981 
1982  }
1983 
1984 
1985  *_response = response;
1986 
1987  return error;
1988 }
1989 
1990 static ds3_error* _parse_ds3_group_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_group_response** _response) {
1991  ds3_group_response* response;
1992  xmlNodePtr child_node;
1993  ds3_error* error = NULL;
1994 
1995  response = g_new0(ds3_group_response, 1);
1996 
1997 
1998  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
1999  if (element_equal(child_node, "BuiltIn")) {
2000  response->built_in = xml_get_bool(client->log, doc, child_node);
2001  } else if (element_equal(child_node, "Id")) {
2002  response->id = xml_get_string(doc, child_node);
2003  } else if (element_equal(child_node, "Name")) {
2004  response->name = xml_get_string(doc, child_node);
2005  } else {
2006  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_response [%s]\n", child_node->name, root->name);
2007  }
2008 
2009  if (error != NULL) {
2010  break;
2011  }
2012 
2013  }
2014 
2015 
2016  *_response = response;
2017 
2018  return error;
2019 }
2020 
2021 static ds3_error* _parse_ds3_group_member_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_group_member_response** _response) {
2022  ds3_group_member_response* response;
2023  xmlNodePtr child_node;
2024  ds3_error* error = NULL;
2025 
2026  response = g_new0(ds3_group_member_response, 1);
2027 
2028 
2029  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2030  if (element_equal(child_node, "GroupId")) {
2031  response->group_id = xml_get_string(doc, child_node);
2032  } else if (element_equal(child_node, "Id")) {
2033  response->id = xml_get_string(doc, child_node);
2034  } else if (element_equal(child_node, "MemberGroupId")) {
2035  response->member_group_id = xml_get_string(doc, child_node);
2036  } else if (element_equal(child_node, "MemberUserId")) {
2037  response->member_user_id = xml_get_string(doc, child_node);
2038  } else {
2039  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_member_response [%s]\n", child_node->name, root->name);
2040  }
2041 
2042  if (error != NULL) {
2043  break;
2044  }
2045 
2046  }
2047 
2048 
2049  *_response = response;
2050 
2051  return error;
2052 }
2053 
2054 static ds3_error* _parse_ds3_active_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_active_job_response** _response) {
2055  ds3_active_job_response* response;
2056  xmlNodePtr child_node;
2057  ds3_error* error = NULL;
2058 
2059  response = g_new0(ds3_active_job_response, 1);
2060 
2061 
2062  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2063  if (element_equal(child_node, "Aggregating")) {
2064  response->aggregating = xml_get_bool(client->log, doc, child_node);
2065  } else if (element_equal(child_node, "BucketId")) {
2066  response->bucket_id = xml_get_string(doc, child_node);
2067  } else if (element_equal(child_node, "CachedSizeInBytes")) {
2068  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
2069  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
2070  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2071  if (text == NULL) {
2072  continue;
2073  }
2075  xmlFree(text);
2076  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
2077  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
2078  } else if (element_equal(child_node, "CreatedAt")) {
2079  response->created_at = xml_get_string(doc, child_node);
2080  } else if (element_equal(child_node, "DeadJobCleanupAllowed")) {
2081  response->dead_job_cleanup_allowed = xml_get_bool(client->log, doc, child_node);
2082  } else if (element_equal(child_node, "ErrorMessage")) {
2083  response->error_message = xml_get_string(doc, child_node);
2084  } else if (element_equal(child_node, "Id")) {
2085  response->id = xml_get_string(doc, child_node);
2086  } else if (element_equal(child_node, "ImplicitJobIdResolution")) {
2087  response->implicit_job_id_resolution = xml_get_bool(client->log, doc, child_node);
2088  } else if (element_equal(child_node, "MinimizeSpanningAcrossMedia")) {
2089  response->minimize_spanning_across_media = xml_get_bool(client->log, doc, child_node);
2090  } else if (element_equal(child_node, "Naked")) {
2091  response->naked = xml_get_bool(client->log, doc, child_node);
2092  } else if (element_equal(child_node, "Name")) {
2093  response->name = xml_get_string(doc, child_node);
2094  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
2095  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
2096  } else if (element_equal(child_node, "Priority")) {
2097  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2098  if (text == NULL) {
2099  continue;
2100  }
2101  response->priority = _match_ds3_priority(client->log, text);
2102  xmlFree(text);
2103  } else if (element_equal(child_node, "Rechunked")) {
2104  response->rechunked = xml_get_string(doc, child_node);
2105  } else if (element_equal(child_node, "Replicating")) {
2106  response->replicating = xml_get_bool(client->log, doc, child_node);
2107  } else if (element_equal(child_node, "RequestType")) {
2108  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2109  if (text == NULL) {
2110  continue;
2111  }
2112  response->request_type = _match_ds3_job_request_type(client->log, text);
2113  xmlFree(text);
2114  } else if (element_equal(child_node, "Restore")) {
2115  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2116  if (text == NULL) {
2117  continue;
2118  }
2119  response->restore = _match_ds3_job_restore(client->log, text);
2120  xmlFree(text);
2121  } else if (element_equal(child_node, "Truncated")) {
2122  response->truncated = xml_get_bool(client->log, doc, child_node);
2123  } else if (element_equal(child_node, "TruncatedDueToTimeout")) {
2124  response->truncated_due_to_timeout = xml_get_bool(client->log, doc, child_node);
2125  } else if (element_equal(child_node, "UserId")) {
2126  response->user_id = xml_get_string(doc, child_node);
2127  } else if (element_equal(child_node, "VerifyAfterWrite")) {
2128  response->verify_after_write = xml_get_bool(client->log, doc, child_node);
2129  } else {
2130  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_active_job_response [%s]\n", child_node->name, root->name);
2131  }
2132 
2133  if (error != NULL) {
2134  break;
2135  }
2136 
2137  }
2138 
2139 
2140  *_response = response;
2141 
2142  return error;
2143 }
2144 
2145 static ds3_error* _parse_ds3_node_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_node_response** _response) {
2146  ds3_node_response* response;
2147  xmlNodePtr child_node;
2148  ds3_error* error = NULL;
2149 
2150  response = g_new0(ds3_node_response, 1);
2151 
2152 
2153  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2154  if (element_equal(child_node, "DataPathHttpPort")) {
2155  response->data_path_http_port = xml_get_uint16(doc, child_node);
2156  } else if (element_equal(child_node, "DataPathHttpsPort")) {
2157  response->data_path_https_port = xml_get_uint16(doc, child_node);
2158  } else if (element_equal(child_node, "DataPathIpAddress")) {
2159  response->data_path_ip_address = xml_get_string(doc, child_node);
2160  } else if (element_equal(child_node, "DnsName")) {
2161  response->dns_name = xml_get_string(doc, child_node);
2162  } else if (element_equal(child_node, "Id")) {
2163  response->id = xml_get_string(doc, child_node);
2164  } else if (element_equal(child_node, "LastHeartbeat")) {
2165  response->last_heartbeat = xml_get_string(doc, child_node);
2166  } else if (element_equal(child_node, "Name")) {
2167  response->name = xml_get_string(doc, child_node);
2168  } else if (element_equal(child_node, "SerialNumber")) {
2169  response->serial_number = xml_get_string(doc, child_node);
2170  } else {
2171  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_node_response [%s]\n", child_node->name, root->name);
2172  }
2173 
2174  if (error != NULL) {
2175  break;
2176  }
2177 
2178  }
2179 
2180 
2181  *_response = response;
2182 
2183  return error;
2184 }
2185 
2186 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) {
2188  xmlNodePtr child_node;
2189  ds3_error* error = NULL;
2190 
2191  response = g_new0(ds3_s3_data_replication_rule_response, 1);
2192 
2193 
2194  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2195  if (element_equal(child_node, "DataPolicyId")) {
2196  response->data_policy_id = xml_get_string(doc, child_node);
2197  } else if (element_equal(child_node, "Id")) {
2198  response->id = xml_get_string(doc, child_node);
2199  } else if (element_equal(child_node, "InitialDataPlacement")) {
2200  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2201  if (text == NULL) {
2202  continue;
2203  }
2205  xmlFree(text);
2206  } else if (element_equal(child_node, "MaxBlobPartSizeInBytes")) {
2207  response->max_blob_part_size_in_bytes = xml_get_uint64(doc, child_node);
2208  } else if (element_equal(child_node, "ReplicateDeletes")) {
2209  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
2210  } else if (element_equal(child_node, "State")) {
2211  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2212  if (text == NULL) {
2213  continue;
2214  }
2215  response->state = _match_ds3_data_placement_rule_state(client->log, text);
2216  xmlFree(text);
2217  } else if (element_equal(child_node, "TargetId")) {
2218  response->target_id = xml_get_string(doc, child_node);
2219  } else if (element_equal(child_node, "Type")) {
2220  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2221  if (text == NULL) {
2222  continue;
2223  }
2224  response->type = _match_ds3_data_replication_rule_type(client->log, text);
2225  xmlFree(text);
2226  } else {
2227  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_data_replication_rule_response [%s]\n", child_node->name, root->name);
2228  }
2229 
2230  if (error != NULL) {
2231  break;
2232  }
2233 
2234  }
2235 
2236 
2237  *_response = response;
2238 
2239  return error;
2240 }
2241 
2242 static ds3_error* _parse_ds3_s3_object_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_object_response** _response) {
2243  ds3_s3_object_response* response;
2244  xmlNodePtr child_node;
2245  ds3_error* error = NULL;
2246 
2247  response = g_new0(ds3_s3_object_response, 1);
2248 
2249 
2250  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2251  if (element_equal(child_node, "BucketId")) {
2252  response->bucket_id = xml_get_string(doc, child_node);
2253  } else if (element_equal(child_node, "CreationDate")) {
2254  response->creation_date = xml_get_string(doc, child_node);
2255  } else if (element_equal(child_node, "Id")) {
2256  response->id = xml_get_string(doc, child_node);
2257  } else if (element_equal(child_node, "Latest")) {
2258  response->latest = xml_get_bool(client->log, doc, child_node);
2259  } else if (element_equal(child_node, "Name")) {
2260  response->name = xml_get_string(doc, child_node);
2261  } else if (element_equal(child_node, "Type")) {
2262  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2263  if (text == NULL) {
2264  continue;
2265  }
2266  response->type = _match_ds3_s3_object_type(client->log, text);
2267  xmlFree(text);
2268  } else {
2269  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_response [%s]\n", child_node->name, root->name);
2270  }
2271 
2272  if (error != NULL) {
2273  break;
2274  }
2275 
2276  }
2277 
2278 
2279  *_response = response;
2280 
2281  return error;
2282 }
2283 
2284 static ds3_error* _parse_ds3_storage_domain_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_response** _response) {
2285  ds3_storage_domain_response* response;
2286  xmlNodePtr child_node;
2287  ds3_error* error = NULL;
2288 
2289  response = g_new0(ds3_storage_domain_response, 1);
2290 
2291 
2292  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2293  if (element_equal(child_node, "AutoEjectMediaFullThreshold")) {
2294  response->auto_eject_media_full_threshold = xml_get_uint64(doc, child_node);
2295  } else if (element_equal(child_node, "AutoEjectUponCron")) {
2296  response->auto_eject_upon_cron = xml_get_string(doc, child_node);
2297  } else if (element_equal(child_node, "AutoEjectUponJobCancellation")) {
2298  response->auto_eject_upon_job_cancellation = xml_get_bool(client->log, doc, child_node);
2299  } else if (element_equal(child_node, "AutoEjectUponJobCompletion")) {
2300  response->auto_eject_upon_job_completion = xml_get_bool(client->log, doc, child_node);
2301  } else if (element_equal(child_node, "AutoEjectUponMediaFull")) {
2302  response->auto_eject_upon_media_full = xml_get_bool(client->log, doc, child_node);
2303  } else if (element_equal(child_node, "Id")) {
2304  response->id = xml_get_string(doc, child_node);
2305  } else if (element_equal(child_node, "LtfsFileNaming")) {
2306  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2307  if (text == NULL) {
2308  continue;
2309  }
2310  response->ltfs_file_naming = _match_ds3_ltfs_file_naming_mode(client->log, text);
2311  xmlFree(text);
2312  } else if (element_equal(child_node, "MaxTapeFragmentationPercent")) {
2313  response->max_tape_fragmentation_percent = xml_get_uint16(doc, child_node);
2314  } else if (element_equal(child_node, "MaximumAutoVerificationFrequencyInDays")) {
2315  response->maximum_auto_verification_frequency_in_days = xml_get_uint16(doc, child_node);
2316  } else if (element_equal(child_node, "MediaEjectionAllowed")) {
2317  response->media_ejection_allowed = xml_get_bool(client->log, doc, child_node);
2318  } else if (element_equal(child_node, "Name")) {
2319  response->name = xml_get_string(doc, child_node);
2320  } else if (element_equal(child_node, "SecureMediaAllocation")) {
2321  response->secure_media_allocation = xml_get_bool(client->log, doc, child_node);
2322  } else if (element_equal(child_node, "VerifyPriorToAutoEject")) {
2323  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2324  if (text == NULL) {
2325  continue;
2326  }
2327  response->verify_prior_to_auto_eject = _match_ds3_priority(client->log, text);
2328  xmlFree(text);
2329  } else if (element_equal(child_node, "WriteOptimization")) {
2330  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2331  if (text == NULL) {
2332  continue;
2333  }
2334  response->write_optimization = _match_ds3_write_optimization(client->log, text);
2335  xmlFree(text);
2336  } else {
2337  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_response [%s]\n", child_node->name, root->name);
2338  }
2339 
2340  if (error != NULL) {
2341  break;
2342  }
2343 
2344  }
2345 
2346 
2347  *_response = response;
2348 
2349  return error;
2350 }
2351 
2352 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) {
2354  xmlNodePtr child_node;
2355  ds3_error* error = NULL;
2356 
2357  response = g_new0(ds3_storage_domain_capacity_summary_response, 1);
2358 
2359 
2360  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2361  if (element_equal(child_node, "PhysicalAllocated")) {
2362  response->physical_allocated = xml_get_uint64(doc, child_node);
2363  } else if (element_equal(child_node, "PhysicalFree")) {
2364  response->physical_free = xml_get_uint64(doc, child_node);
2365  } else if (element_equal(child_node, "PhysicalUsed")) {
2366  response->physical_used = xml_get_uint64(doc, child_node);
2367  } else {
2368  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_capacity_summary_response [%s]\n", child_node->name, root->name);
2369  }
2370 
2371  if (error != NULL) {
2372  break;
2373  }
2374 
2375  }
2376 
2377 
2378  *_response = response;
2379 
2380  return error;
2381 }
2382 
2383 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) {
2385  xmlNodePtr child_node;
2386  ds3_error* error = NULL;
2387 
2388  response = g_new0(ds3_storage_domain_failure_response, 1);
2389 
2390 
2391  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2392  if (element_equal(child_node, "Date")) {
2393  response->date = xml_get_string(doc, child_node);
2394  } else if (element_equal(child_node, "ErrorMessage")) {
2395  response->error_message = xml_get_string(doc, child_node);
2396  } else if (element_equal(child_node, "Id")) {
2397  response->id = xml_get_string(doc, child_node);
2398  } else if (element_equal(child_node, "StorageDomainId")) {
2399  response->storage_domain_id = xml_get_string(doc, child_node);
2400  } else if (element_equal(child_node, "Type")) {
2401  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2402  if (text == NULL) {
2403  continue;
2404  }
2405  response->type = _match_ds3_storage_domain_failure_type(client->log, text);
2406  xmlFree(text);
2407  } else {
2408  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_failure_response [%s]\n", child_node->name, root->name);
2409  }
2410 
2411  if (error != NULL) {
2412  break;
2413  }
2414 
2415  }
2416 
2417 
2418  *_response = response;
2419 
2420  return error;
2421 }
2422 
2423 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) {
2425  xmlNodePtr child_node;
2426  ds3_error* error = NULL;
2427 
2428  response = g_new0(ds3_storage_domain_member_response, 1);
2429 
2430 
2431  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2432  if (element_equal(child_node, "AutoCompactionThreshold")) {
2433  response->auto_compaction_threshold = xml_get_uint16(doc, child_node);
2434  } else if (element_equal(child_node, "Id")) {
2435  response->id = xml_get_string(doc, child_node);
2436  } else if (element_equal(child_node, "PoolPartitionId")) {
2437  response->pool_partition_id = xml_get_string(doc, child_node);
2438  } else if (element_equal(child_node, "State")) {
2439  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2440  if (text == NULL) {
2441  continue;
2442  }
2443  response->state = _match_ds3_storage_domain_member_state(client->log, text);
2444  xmlFree(text);
2445  } else if (element_equal(child_node, "StorageDomainId")) {
2446  response->storage_domain_id = xml_get_string(doc, child_node);
2447  } else if (element_equal(child_node, "TapePartitionId")) {
2448  response->tape_partition_id = xml_get_string(doc, child_node);
2449  } else if (element_equal(child_node, "TapeType")) {
2450  response->tape_type = xml_get_string(doc, child_node);
2451  } else if (element_equal(child_node, "WritePreference")) {
2452  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2453  if (text == NULL) {
2454  continue;
2455  }
2456  response->write_preference = _match_ds3_write_preference_level(client->log, text);
2457  xmlFree(text);
2458  } else {
2459  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_member_response [%s]\n", child_node->name, root->name);
2460  }
2461 
2462  if (error != NULL) {
2463  break;
2464  }
2465 
2466  }
2467 
2468 
2469  *_response = response;
2470 
2471  return error;
2472 }
2473 
2474 static ds3_error* _parse_ds3_system_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_system_failure_response** _response) {
2475  ds3_system_failure_response* response;
2476  xmlNodePtr child_node;
2477  ds3_error* error = NULL;
2478 
2479  response = g_new0(ds3_system_failure_response, 1);
2480 
2481 
2482  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2483  if (element_equal(child_node, "Date")) {
2484  response->date = xml_get_string(doc, child_node);
2485  } else if (element_equal(child_node, "ErrorMessage")) {
2486  response->error_message = xml_get_string(doc, child_node);
2487  } else if (element_equal(child_node, "Id")) {
2488  response->id = xml_get_string(doc, child_node);
2489  } else if (element_equal(child_node, "Type")) {
2490  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2491  if (text == NULL) {
2492  continue;
2493  }
2494  response->type = _match_ds3_system_failure_type(client->log, text);
2495  xmlFree(text);
2496  } else {
2497  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_response [%s]\n", child_node->name, root->name);
2498  }
2499 
2500  if (error != NULL) {
2501  break;
2502  }
2503 
2504  }
2505 
2506 
2507  *_response = response;
2508 
2509  return error;
2510 }
2511 
2512 static ds3_error* _parse_ds3_spectra_user_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_spectra_user_response** _response) {
2513  ds3_spectra_user_response* response;
2514  xmlNodePtr child_node;
2515  ds3_error* error = NULL;
2516 
2517  response = g_new0(ds3_spectra_user_response, 1);
2518 
2519 
2520  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2521  if (element_equal(child_node, "AuthId")) {
2522  response->auth_id = xml_get_string(doc, child_node);
2523  } else if (element_equal(child_node, "DefaultDataPolicyId")) {
2524  response->default_data_policy_id = xml_get_string(doc, child_node);
2525  } else if (element_equal(child_node, "Id")) {
2526  response->id = xml_get_string(doc, child_node);
2527  } else if (element_equal(child_node, "MaxBuckets")) {
2528  response->max_buckets = xml_get_uint16(doc, child_node);
2529  } else if (element_equal(child_node, "Name")) {
2530  response->name = xml_get_string(doc, child_node);
2531  } else if (element_equal(child_node, "SecretKey")) {
2532  response->secret_key = xml_get_string(doc, child_node);
2533  } else {
2534  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_spectra_user_response [%s]\n", child_node->name, root->name);
2535  }
2536 
2537  if (error != NULL) {
2538  break;
2539  }
2540 
2541  }
2542 
2543 
2544  *_response = response;
2545 
2546  return error;
2547 }
2548 
2551  xmlNodePtr child_node;
2552  ds3_error* error = NULL;
2553 
2555 
2556 
2557  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2558  if (element_equal(child_node, "CreationDate")) {
2559  response->creation_date = xml_get_string(doc, child_node);
2560  } else if (element_equal(child_node, "Format")) {
2561  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2562  if (text == NULL) {
2563  continue;
2564  }
2565  response->format = _match_ds3_http_response_format_type(client->log, text);
2566  xmlFree(text);
2567  } else if (element_equal(child_node, "Id")) {
2568  response->id = xml_get_string(doc, child_node);
2569  } else if (element_equal(child_node, "LastFailure")) {
2570  response->last_failure = xml_get_string(doc, child_node);
2571  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2572  response->last_http_response_code = xml_get_uint16(doc, child_node);
2573  } else if (element_equal(child_node, "LastNotification")) {
2574  response->last_notification = xml_get_string(doc, child_node);
2575  } else if (element_equal(child_node, "NamingConvention")) {
2576  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2577  if (text == NULL) {
2578  continue;
2579  }
2580  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2581  xmlFree(text);
2582  } else if (element_equal(child_node, "NotificationEndPoint")) {
2583  response->notification_end_point = xml_get_string(doc, child_node);
2584  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2585  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2586  if (text == NULL) {
2587  continue;
2588  }
2589  response->notification_http_method = _match_ds3_request_type(client->log, text);
2590  xmlFree(text);
2591  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2592  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2593  } else if (element_equal(child_node, "UserId")) {
2594  response->user_id = xml_get_string(doc, child_node);
2595  } else {
2596  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);
2597  }
2598 
2599  if (error != NULL) {
2600  break;
2601  }
2602 
2603  }
2604 
2605 
2606  *_response = response;
2607 
2608  return error;
2609 }
2610 
2613  xmlNodePtr child_node;
2614  ds3_error* error = NULL;
2615 
2617 
2618 
2619  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2620  if (element_equal(child_node, "CreationDate")) {
2621  response->creation_date = xml_get_string(doc, child_node);
2622  } else if (element_equal(child_node, "Format")) {
2623  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2624  if (text == NULL) {
2625  continue;
2626  }
2627  response->format = _match_ds3_http_response_format_type(client->log, text);
2628  xmlFree(text);
2629  } else if (element_equal(child_node, "Id")) {
2630  response->id = xml_get_string(doc, child_node);
2631  } else if (element_equal(child_node, "LastFailure")) {
2632  response->last_failure = xml_get_string(doc, child_node);
2633  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2634  response->last_http_response_code = xml_get_uint16(doc, child_node);
2635  } else if (element_equal(child_node, "LastNotification")) {
2636  response->last_notification = xml_get_string(doc, child_node);
2637  } else if (element_equal(child_node, "NamingConvention")) {
2638  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2639  if (text == NULL) {
2640  continue;
2641  }
2642  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2643  xmlFree(text);
2644  } else if (element_equal(child_node, "NotificationEndPoint")) {
2645  response->notification_end_point = xml_get_string(doc, child_node);
2646  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2647  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2648  if (text == NULL) {
2649  continue;
2650  }
2651  response->notification_http_method = _match_ds3_request_type(client->log, text);
2652  xmlFree(text);
2653  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2654  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2655  } else if (element_equal(child_node, "UserId")) {
2656  response->user_id = xml_get_string(doc, child_node);
2657  } else {
2658  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_failure_notification_registration_response [%s]\n", child_node->name, root->name);
2659  }
2660 
2661  if (error != NULL) {
2662  break;
2663  }
2664 
2665  }
2666 
2667 
2668  *_response = response;
2669 
2670  return error;
2671 }
2672 
2675  xmlNodePtr child_node;
2676  ds3_error* error = NULL;
2677 
2679 
2680 
2681  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2682  if (element_equal(child_node, "CreationDate")) {
2683  response->creation_date = xml_get_string(doc, child_node);
2684  } else if (element_equal(child_node, "Format")) {
2685  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2686  if (text == NULL) {
2687  continue;
2688  }
2689  response->format = _match_ds3_http_response_format_type(client->log, text);
2690  xmlFree(text);
2691  } else if (element_equal(child_node, "Id")) {
2692  response->id = xml_get_string(doc, child_node);
2693  } else if (element_equal(child_node, "JobId")) {
2694  response->job_id = xml_get_string(doc, child_node);
2695  } else if (element_equal(child_node, "LastFailure")) {
2696  response->last_failure = xml_get_string(doc, child_node);
2697  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2698  response->last_http_response_code = xml_get_uint16(doc, child_node);
2699  } else if (element_equal(child_node, "LastNotification")) {
2700  response->last_notification = xml_get_string(doc, child_node);
2701  } else if (element_equal(child_node, "NamingConvention")) {
2702  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2703  if (text == NULL) {
2704  continue;
2705  }
2706  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2707  xmlFree(text);
2708  } else if (element_equal(child_node, "NotificationEndPoint")) {
2709  response->notification_end_point = xml_get_string(doc, child_node);
2710  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2711  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2712  if (text == NULL) {
2713  continue;
2714  }
2715  response->notification_http_method = _match_ds3_request_type(client->log, text);
2716  xmlFree(text);
2717  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2718  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2719  } else if (element_equal(child_node, "UserId")) {
2720  response->user_id = xml_get_string(doc, child_node);
2721  } else {
2722  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_completed_notification_registration_response [%s]\n", child_node->name, root->name);
2723  }
2724 
2725  if (error != NULL) {
2726  break;
2727  }
2728 
2729  }
2730 
2731 
2732  *_response = response;
2733 
2734  return error;
2735 }
2736 
2739  xmlNodePtr child_node;
2740  ds3_error* error = NULL;
2741 
2743 
2744 
2745  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2746  if (element_equal(child_node, "CreationDate")) {
2747  response->creation_date = xml_get_string(doc, child_node);
2748  } else if (element_equal(child_node, "Format")) {
2749  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2750  if (text == NULL) {
2751  continue;
2752  }
2753  response->format = _match_ds3_http_response_format_type(client->log, text);
2754  xmlFree(text);
2755  } else if (element_equal(child_node, "Id")) {
2756  response->id = xml_get_string(doc, child_node);
2757  } else if (element_equal(child_node, "LastFailure")) {
2758  response->last_failure = xml_get_string(doc, child_node);
2759  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2760  response->last_http_response_code = xml_get_uint16(doc, child_node);
2761  } else if (element_equal(child_node, "LastNotification")) {
2762  response->last_notification = xml_get_string(doc, child_node);
2763  } else if (element_equal(child_node, "NamingConvention")) {
2764  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2765  if (text == NULL) {
2766  continue;
2767  }
2768  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2769  xmlFree(text);
2770  } else if (element_equal(child_node, "NotificationEndPoint")) {
2771  response->notification_end_point = xml_get_string(doc, child_node);
2772  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2773  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2774  if (text == NULL) {
2775  continue;
2776  }
2777  response->notification_http_method = _match_ds3_request_type(client->log, text);
2778  xmlFree(text);
2779  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2780  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2781  } else if (element_equal(child_node, "UserId")) {
2782  response->user_id = xml_get_string(doc, child_node);
2783  } else {
2784  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_created_notification_registration_response [%s]\n", child_node->name, root->name);
2785  }
2786 
2787  if (error != NULL) {
2788  break;
2789  }
2790 
2791  }
2792 
2793 
2794  *_response = response;
2795 
2796  return error;
2797 }
2798 
2801  xmlNodePtr child_node;
2802  ds3_error* error = NULL;
2803 
2805 
2806 
2807  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2808  if (element_equal(child_node, "CreationDate")) {
2809  response->creation_date = xml_get_string(doc, child_node);
2810  } else if (element_equal(child_node, "Format")) {
2811  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2812  if (text == NULL) {
2813  continue;
2814  }
2815  response->format = _match_ds3_http_response_format_type(client->log, text);
2816  xmlFree(text);
2817  } else if (element_equal(child_node, "Id")) {
2818  response->id = xml_get_string(doc, child_node);
2819  } else if (element_equal(child_node, "LastFailure")) {
2820  response->last_failure = xml_get_string(doc, child_node);
2821  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2822  response->last_http_response_code = xml_get_uint16(doc, child_node);
2823  } else if (element_equal(child_node, "LastNotification")) {
2824  response->last_notification = xml_get_string(doc, child_node);
2825  } else if (element_equal(child_node, "NamingConvention")) {
2826  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2827  if (text == NULL) {
2828  continue;
2829  }
2830  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2831  xmlFree(text);
2832  } else if (element_equal(child_node, "NotificationEndPoint")) {
2833  response->notification_end_point = xml_get_string(doc, child_node);
2834  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2835  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2836  if (text == NULL) {
2837  continue;
2838  }
2839  response->notification_http_method = _match_ds3_request_type(client->log, text);
2840  xmlFree(text);
2841  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2842  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2843  } else if (element_equal(child_node, "UserId")) {
2844  response->user_id = xml_get_string(doc, child_node);
2845  } else {
2846  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);
2847  }
2848 
2849  if (error != NULL) {
2850  break;
2851  }
2852 
2853  }
2854 
2855 
2856  *_response = response;
2857 
2858  return error;
2859 }
2860 
2863  xmlNodePtr child_node;
2864  ds3_error* error = NULL;
2865 
2867 
2868 
2869  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2870  if (element_equal(child_node, "CreationDate")) {
2871  response->creation_date = xml_get_string(doc, child_node);
2872  } else if (element_equal(child_node, "Format")) {
2873  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2874  if (text == NULL) {
2875  continue;
2876  }
2877  response->format = _match_ds3_http_response_format_type(client->log, text);
2878  xmlFree(text);
2879  } else if (element_equal(child_node, "Id")) {
2880  response->id = xml_get_string(doc, child_node);
2881  } else if (element_equal(child_node, "LastFailure")) {
2882  response->last_failure = xml_get_string(doc, child_node);
2883  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2884  response->last_http_response_code = xml_get_uint16(doc, child_node);
2885  } else if (element_equal(child_node, "LastNotification")) {
2886  response->last_notification = xml_get_string(doc, child_node);
2887  } else if (element_equal(child_node, "NamingConvention")) {
2888  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2889  if (text == NULL) {
2890  continue;
2891  }
2892  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2893  xmlFree(text);
2894  } else if (element_equal(child_node, "NotificationEndPoint")) {
2895  response->notification_end_point = xml_get_string(doc, child_node);
2896  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2897  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2898  if (text == NULL) {
2899  continue;
2900  }
2901  response->notification_http_method = _match_ds3_request_type(client->log, text);
2902  xmlFree(text);
2903  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2904  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2905  } else if (element_equal(child_node, "UserId")) {
2906  response->user_id = xml_get_string(doc, child_node);
2907  } else {
2908  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_notification_registration_response [%s]\n", child_node->name, root->name);
2909  }
2910 
2911  if (error != NULL) {
2912  break;
2913  }
2914 
2915  }
2916 
2917 
2918  *_response = response;
2919 
2920  return error;
2921 }
2922 
2925  xmlNodePtr child_node;
2926  ds3_error* error = NULL;
2927 
2929 
2930 
2931  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2932  if (element_equal(child_node, "CreationDate")) {
2933  response->creation_date = xml_get_string(doc, child_node);
2934  } else if (element_equal(child_node, "Format")) {
2935  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2936  if (text == NULL) {
2937  continue;
2938  }
2939  response->format = _match_ds3_http_response_format_type(client->log, text);
2940  xmlFree(text);
2941  } else if (element_equal(child_node, "Id")) {
2942  response->id = xml_get_string(doc, child_node);
2943  } else if (element_equal(child_node, "JobId")) {
2944  response->job_id = xml_get_string(doc, child_node);
2945  } else if (element_equal(child_node, "LastFailure")) {
2946  response->last_failure = xml_get_string(doc, child_node);
2947  } else if (element_equal(child_node, "LastHttpResponseCode")) {
2948  response->last_http_response_code = xml_get_uint16(doc, child_node);
2949  } else if (element_equal(child_node, "LastNotification")) {
2950  response->last_notification = xml_get_string(doc, child_node);
2951  } else if (element_equal(child_node, "NamingConvention")) {
2952  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2953  if (text == NULL) {
2954  continue;
2955  }
2956  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
2957  xmlFree(text);
2958  } else if (element_equal(child_node, "NotificationEndPoint")) {
2959  response->notification_end_point = xml_get_string(doc, child_node);
2960  } else if (element_equal(child_node, "NotificationHttpMethod")) {
2961  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
2962  if (text == NULL) {
2963  continue;
2964  }
2965  response->notification_http_method = _match_ds3_request_type(client->log, text);
2966  xmlFree(text);
2967  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
2968  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
2969  } else if (element_equal(child_node, "UserId")) {
2970  response->user_id = xml_get_string(doc, child_node);
2971  } else {
2972  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);
2973  }
2974 
2975  if (error != NULL) {
2976  break;
2977  }
2978 
2979  }
2980 
2981 
2982  *_response = response;
2983 
2984  return error;
2985 }
2986 
2989  xmlNodePtr child_node;
2990  ds3_error* error = NULL;
2991 
2993 
2994 
2995  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
2996  if (element_equal(child_node, "CreationDate")) {
2997  response->creation_date = xml_get_string(doc, child_node);
2998  } else if (element_equal(child_node, "Format")) {
2999  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3000  if (text == NULL) {
3001  continue;
3002  }
3003  response->format = _match_ds3_http_response_format_type(client->log, text);
3004  xmlFree(text);
3005  } else if (element_equal(child_node, "Id")) {
3006  response->id = xml_get_string(doc, child_node);
3007  } else if (element_equal(child_node, "LastFailure")) {
3008  response->last_failure = xml_get_string(doc, child_node);
3009  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3010  response->last_http_response_code = xml_get_uint16(doc, child_node);
3011  } else if (element_equal(child_node, "LastNotification")) {
3012  response->last_notification = xml_get_string(doc, child_node);
3013  } else if (element_equal(child_node, "NamingConvention")) {
3014  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3015  if (text == NULL) {
3016  continue;
3017  }
3018  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3019  xmlFree(text);
3020  } else if (element_equal(child_node, "NotificationEndPoint")) {
3021  response->notification_end_point = xml_get_string(doc, child_node);
3022  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3023  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3024  if (text == NULL) {
3025  continue;
3026  }
3027  response->notification_http_method = _match_ds3_request_type(client->log, text);
3028  xmlFree(text);
3029  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3030  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3031  } else if (element_equal(child_node, "UserId")) {
3032  response->user_id = xml_get_string(doc, child_node);
3033  } else {
3034  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);
3035  }
3036 
3037  if (error != NULL) {
3038  break;
3039  }
3040 
3041  }
3042 
3043 
3044  *_response = response;
3045 
3046  return error;
3047 }
3048 
3051  xmlNodePtr child_node;
3052  ds3_error* error = NULL;
3053 
3055 
3056 
3057  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3058  if (element_equal(child_node, "CreationDate")) {
3059  response->creation_date = xml_get_string(doc, child_node);
3060  } else if (element_equal(child_node, "Format")) {
3061  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3062  if (text == NULL) {
3063  continue;
3064  }
3065  response->format = _match_ds3_http_response_format_type(client->log, text);
3066  xmlFree(text);
3067  } else if (element_equal(child_node, "Id")) {
3068  response->id = xml_get_string(doc, child_node);
3069  } else if (element_equal(child_node, "JobId")) {
3070  response->job_id = xml_get_string(doc, child_node);
3071  } else if (element_equal(child_node, "LastFailure")) {
3072  response->last_failure = xml_get_string(doc, child_node);
3073  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3074  response->last_http_response_code = xml_get_uint16(doc, child_node);
3075  } else if (element_equal(child_node, "LastNotification")) {
3076  response->last_notification = xml_get_string(doc, child_node);
3077  } else if (element_equal(child_node, "NamingConvention")) {
3078  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3079  if (text == NULL) {
3080  continue;
3081  }
3082  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3083  xmlFree(text);
3084  } else if (element_equal(child_node, "NotificationEndPoint")) {
3085  response->notification_end_point = xml_get_string(doc, child_node);
3086  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3087  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3088  if (text == NULL) {
3089  continue;
3090  }
3091  response->notification_http_method = _match_ds3_request_type(client->log, text);
3092  xmlFree(text);
3093  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3094  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3095  } else if (element_equal(child_node, "UserId")) {
3096  response->user_id = xml_get_string(doc, child_node);
3097  } else {
3098  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);
3099  }
3100 
3101  if (error != NULL) {
3102  break;
3103  }
3104 
3105  }
3106 
3107 
3108  *_response = response;
3109 
3110  return error;
3111 }
3112 
3115  xmlNodePtr child_node;
3116  ds3_error* error = NULL;
3117 
3119 
3120 
3121  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3122  if (element_equal(child_node, "CreationDate")) {
3123  response->creation_date = xml_get_string(doc, child_node);
3124  } else if (element_equal(child_node, "Format")) {
3125  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3126  if (text == NULL) {
3127  continue;
3128  }
3129  response->format = _match_ds3_http_response_format_type(client->log, text);
3130  xmlFree(text);
3131  } else if (element_equal(child_node, "Id")) {
3132  response->id = xml_get_string(doc, child_node);
3133  } else if (element_equal(child_node, "LastFailure")) {
3134  response->last_failure = xml_get_string(doc, child_node);
3135  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3136  response->last_http_response_code = xml_get_uint16(doc, child_node);
3137  } else if (element_equal(child_node, "LastNotification")) {
3138  response->last_notification = xml_get_string(doc, child_node);
3139  } else if (element_equal(child_node, "NamingConvention")) {
3140  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3141  if (text == NULL) {
3142  continue;
3143  }
3144  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3145  xmlFree(text);
3146  } else if (element_equal(child_node, "NotificationEndPoint")) {
3147  response->notification_end_point = xml_get_string(doc, child_node);
3148  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3149  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3150  if (text == NULL) {
3151  continue;
3152  }
3153  response->notification_http_method = _match_ds3_request_type(client->log, text);
3154  xmlFree(text);
3155  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3156  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3157  } else if (element_equal(child_node, "UserId")) {
3158  response->user_id = xml_get_string(doc, child_node);
3159  } else {
3160  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);
3161  }
3162 
3163  if (error != NULL) {
3164  break;
3165  }
3166 
3167  }
3168 
3169 
3170  *_response = response;
3171 
3172  return error;
3173 }
3174 
3177  xmlNodePtr child_node;
3178  ds3_error* error = NULL;
3179 
3181 
3182 
3183  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3184  if (element_equal(child_node, "CreationDate")) {
3185  response->creation_date = xml_get_string(doc, child_node);
3186  } else if (element_equal(child_node, "Format")) {
3187  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3188  if (text == NULL) {
3189  continue;
3190  }
3191  response->format = _match_ds3_http_response_format_type(client->log, text);
3192  xmlFree(text);
3193  } else if (element_equal(child_node, "Id")) {
3194  response->id = xml_get_string(doc, child_node);
3195  } else if (element_equal(child_node, "LastFailure")) {
3196  response->last_failure = xml_get_string(doc, child_node);
3197  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3198  response->last_http_response_code = xml_get_uint16(doc, child_node);
3199  } else if (element_equal(child_node, "LastNotification")) {
3200  response->last_notification = xml_get_string(doc, child_node);
3201  } else if (element_equal(child_node, "NamingConvention")) {
3202  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3203  if (text == NULL) {
3204  continue;
3205  }
3206  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3207  xmlFree(text);
3208  } else if (element_equal(child_node, "NotificationEndPoint")) {
3209  response->notification_end_point = xml_get_string(doc, child_node);
3210  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3211  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3212  if (text == NULL) {
3213  continue;
3214  }
3215  response->notification_http_method = _match_ds3_request_type(client->log, text);
3216  xmlFree(text);
3217  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3218  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3219  } else if (element_equal(child_node, "UserId")) {
3220  response->user_id = xml_get_string(doc, child_node);
3221  } else {
3222  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);
3223  }
3224 
3225  if (error != NULL) {
3226  break;
3227  }
3228 
3229  }
3230 
3231 
3232  *_response = response;
3233 
3234  return error;
3235 }
3236 
3239  xmlNodePtr child_node;
3240  ds3_error* error = NULL;
3241 
3243 
3244 
3245  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3246  if (element_equal(child_node, "CreationDate")) {
3247  response->creation_date = xml_get_string(doc, child_node);
3248  } else if (element_equal(child_node, "Format")) {
3249  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3250  if (text == NULL) {
3251  continue;
3252  }
3253  response->format = _match_ds3_http_response_format_type(client->log, text);
3254  xmlFree(text);
3255  } else if (element_equal(child_node, "Id")) {
3256  response->id = xml_get_string(doc, child_node);
3257  } else if (element_equal(child_node, "LastFailure")) {
3258  response->last_failure = xml_get_string(doc, child_node);
3259  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3260  response->last_http_response_code = xml_get_uint16(doc, child_node);
3261  } else if (element_equal(child_node, "LastNotification")) {
3262  response->last_notification = xml_get_string(doc, child_node);
3263  } else if (element_equal(child_node, "NamingConvention")) {
3264  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3265  if (text == NULL) {
3266  continue;
3267  }
3268  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3269  xmlFree(text);
3270  } else if (element_equal(child_node, "NotificationEndPoint")) {
3271  response->notification_end_point = xml_get_string(doc, child_node);
3272  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3273  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3274  if (text == NULL) {
3275  continue;
3276  }
3277  response->notification_http_method = _match_ds3_request_type(client->log, text);
3278  xmlFree(text);
3279  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3280  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3281  } else if (element_equal(child_node, "UserId")) {
3282  response->user_id = xml_get_string(doc, child_node);
3283  } else {
3284  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_notification_registration_response [%s]\n", child_node->name, root->name);
3285  }
3286 
3287  if (error != NULL) {
3288  break;
3289  }
3290 
3291  }
3292 
3293 
3294  *_response = response;
3295 
3296  return error;
3297 }
3298 
3301  xmlNodePtr child_node;
3302  ds3_error* error = NULL;
3303 
3305 
3306 
3307  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3308  if (element_equal(child_node, "CreationDate")) {
3309  response->creation_date = xml_get_string(doc, child_node);
3310  } else if (element_equal(child_node, "Format")) {
3311  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3312  if (text == NULL) {
3313  continue;
3314  }
3315  response->format = _match_ds3_http_response_format_type(client->log, text);
3316  xmlFree(text);
3317  } else if (element_equal(child_node, "Id")) {
3318  response->id = xml_get_string(doc, child_node);
3319  } else if (element_equal(child_node, "LastFailure")) {
3320  response->last_failure = xml_get_string(doc, child_node);
3321  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3322  response->last_http_response_code = xml_get_uint16(doc, child_node);
3323  } else if (element_equal(child_node, "LastNotification")) {
3324  response->last_notification = xml_get_string(doc, child_node);
3325  } else if (element_equal(child_node, "NamingConvention")) {
3326  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3327  if (text == NULL) {
3328  continue;
3329  }
3330  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3331  xmlFree(text);
3332  } else if (element_equal(child_node, "NotificationEndPoint")) {
3333  response->notification_end_point = xml_get_string(doc, child_node);
3334  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3335  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3336  if (text == NULL) {
3337  continue;
3338  }
3339  response->notification_http_method = _match_ds3_request_type(client->log, text);
3340  xmlFree(text);
3341  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3342  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3343  } else if (element_equal(child_node, "UserId")) {
3344  response->user_id = xml_get_string(doc, child_node);
3345  } else {
3346  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_notification_registration_response [%s]\n", child_node->name, root->name);
3347  }
3348 
3349  if (error != NULL) {
3350  break;
3351  }
3352 
3353  }
3354 
3355 
3356  *_response = response;
3357 
3358  return error;
3359 }
3360 
3363  xmlNodePtr child_node;
3364  ds3_error* error = NULL;
3365 
3367 
3368 
3369  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3370  if (element_equal(child_node, "CreationDate")) {
3371  response->creation_date = xml_get_string(doc, child_node);
3372  } else if (element_equal(child_node, "Format")) {
3373  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3374  if (text == NULL) {
3375  continue;
3376  }
3377  response->format = _match_ds3_http_response_format_type(client->log, text);
3378  xmlFree(text);
3379  } else if (element_equal(child_node, "Id")) {
3380  response->id = xml_get_string(doc, child_node);
3381  } else if (element_equal(child_node, "LastFailure")) {
3382  response->last_failure = xml_get_string(doc, child_node);
3383  } else if (element_equal(child_node, "LastHttpResponseCode")) {
3384  response->last_http_response_code = xml_get_uint16(doc, child_node);
3385  } else if (element_equal(child_node, "LastNotification")) {
3386  response->last_notification = xml_get_string(doc, child_node);
3387  } else if (element_equal(child_node, "NamingConvention")) {
3388  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3389  if (text == NULL) {
3390  continue;
3391  }
3392  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
3393  xmlFree(text);
3394  } else if (element_equal(child_node, "NotificationEndPoint")) {
3395  response->notification_end_point = xml_get_string(doc, child_node);
3396  } else if (element_equal(child_node, "NotificationHttpMethod")) {
3397  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3398  if (text == NULL) {
3399  continue;
3400  }
3401  response->notification_http_method = _match_ds3_request_type(client->log, text);
3402  xmlFree(text);
3403  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
3404  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
3405  } else if (element_equal(child_node, "UserId")) {
3406  response->user_id = xml_get_string(doc, child_node);
3407  } else {
3408  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);
3409  }
3410 
3411  if (error != NULL) {
3412  break;
3413  }
3414 
3415  }
3416 
3417 
3418  *_response = response;
3419 
3420  return error;
3421 }
3422 
3423 static ds3_error* _parse_ds3_cache_filesystem_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_cache_filesystem_response** _response) {
3425  xmlNodePtr child_node;
3426  ds3_error* error = NULL;
3427 
3428  response = g_new0(ds3_cache_filesystem_response, 1);
3429 
3430 
3431  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3432  if (element_equal(child_node, "AutoReclaimInitiateThreshold")) {
3433  response->auto_reclaim_initiate_threshold = xml_get_uint64(doc, child_node);
3434  } else if (element_equal(child_node, "AutoReclaimTerminateThreshold")) {
3435  response->auto_reclaim_terminate_threshold = xml_get_uint64(doc, child_node);
3436  } else if (element_equal(child_node, "BurstThreshold")) {
3437  response->burst_threshold = xml_get_uint64(doc, child_node);
3438  } else if (element_equal(child_node, "Id")) {
3439  response->id = xml_get_string(doc, child_node);
3440  } else if (element_equal(child_node, "MaxCapacityInBytes")) {
3441  response->max_capacity_in_bytes = xml_get_uint64(doc, child_node);
3442  } else if (element_equal(child_node, "MaxPercentUtilizationOfFilesystem")) {
3443  response->max_percent_utilization_of_filesystem = xml_get_uint64(doc, child_node);
3444  } else if (element_equal(child_node, "NodeId")) {
3445  response->node_id = xml_get_string(doc, child_node);
3446  } else if (element_equal(child_node, "Path")) {
3447  response->path = xml_get_string(doc, child_node);
3448  } else {
3449  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_response [%s]\n", child_node->name, root->name);
3450  }
3451 
3452  if (error != NULL) {
3453  break;
3454  }
3455 
3456  }
3457 
3458 
3459  *_response = response;
3460 
3461  return error;
3462 }
3463 
3464 static ds3_error* _parse_ds3_pool_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_response** _response) {
3465  ds3_pool_response* response;
3466  xmlNodePtr child_node;
3467  ds3_error* error = NULL;
3468 
3469  response = g_new0(ds3_pool_response, 1);
3470 
3471 
3472  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3473  if (element_equal(child_node, "AssignedToStorageDomain")) {
3474  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
3475  } else if (element_equal(child_node, "AvailableCapacity")) {
3476  response->available_capacity = xml_get_uint64(doc, child_node);
3477  } else if (element_equal(child_node, "BucketId")) {
3478  response->bucket_id = xml_get_string(doc, child_node);
3479  } else if (element_equal(child_node, "Guid")) {
3480  response->guid = xml_get_string(doc, child_node);
3481  } else if (element_equal(child_node, "Health")) {
3482  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3483  if (text == NULL) {
3484  continue;
3485  }
3486  response->health = _match_ds3_pool_health(client->log, text);
3487  xmlFree(text);
3488  } else if (element_equal(child_node, "Id")) {
3489  response->id = xml_get_string(doc, child_node);
3490  } else if (element_equal(child_node, "LastAccessed")) {
3491  response->last_accessed = xml_get_string(doc, child_node);
3492  } else if (element_equal(child_node, "LastModified")) {
3493  response->last_modified = xml_get_string(doc, child_node);
3494  } else if (element_equal(child_node, "LastVerified")) {
3495  response->last_verified = xml_get_string(doc, child_node);
3496  } else if (element_equal(child_node, "Mountpoint")) {
3497  response->mountpoint = xml_get_string(doc, child_node);
3498  } else if (element_equal(child_node, "Name")) {
3499  response->name = xml_get_string(doc, child_node);
3500  } else if (element_equal(child_node, "PartitionId")) {
3501  response->partition_id = xml_get_string(doc, child_node);
3502  } else if (element_equal(child_node, "PoweredOn")) {
3503  response->powered_on = xml_get_bool(client->log, doc, child_node);
3504  } else if (element_equal(child_node, "Quiesced")) {
3505  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3506  if (text == NULL) {
3507  continue;
3508  }
3509  response->quiesced = _match_ds3_quiesced(client->log, text);
3510  xmlFree(text);
3511  } else if (element_equal(child_node, "ReservedCapacity")) {
3512  response->reserved_capacity = xml_get_uint64(doc, child_node);
3513  } else if (element_equal(child_node, "State")) {
3514  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3515  if (text == NULL) {
3516  continue;
3517  }
3518  response->state = _match_ds3_pool_state(client->log, text);
3519  xmlFree(text);
3520  } else if (element_equal(child_node, "StorageDomainMemberId")) {
3521  response->storage_domain_member_id = xml_get_string(doc, child_node);
3522  } else if (element_equal(child_node, "TotalCapacity")) {
3523  response->total_capacity = xml_get_uint64(doc, child_node);
3524  } else if (element_equal(child_node, "Type")) {
3525  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3526  if (text == NULL) {
3527  continue;
3528  }
3529  response->type = _match_ds3_pool_type(client->log, text);
3530  xmlFree(text);
3531  } else if (element_equal(child_node, "UsedCapacity")) {
3532  response->used_capacity = xml_get_uint64(doc, child_node);
3533  } else {
3534  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_response [%s]\n", child_node->name, root->name);
3535  }
3536 
3537  if (error != NULL) {
3538  break;
3539  }
3540 
3541  }
3542 
3543 
3544  *_response = response;
3545 
3546  return error;
3547 }
3548 
3549 static ds3_error* _parse_ds3_pool_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
3550  ds3_error* error = NULL;
3551  xmlNodePtr child_node;
3552  GPtrArray* ds3_pool_response_array = g_ptr_array_new();
3553 
3554  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3555  ds3_pool_response* response = NULL;
3556  error = _parse_ds3_pool_response(client, doc, child_node, &response);
3557  g_ptr_array_add(ds3_pool_response_array, response);
3558 
3559  if (error != NULL) {
3560  break;
3561  }
3562  }
3563 
3564  *_response = ds3_pool_response_array;
3565 
3566  return error;
3567 }
3568 static ds3_error* _parse_ds3_pool_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_failure_response** _response) {
3569  ds3_pool_failure_response* response;
3570  xmlNodePtr child_node;
3571  ds3_error* error = NULL;
3572 
3573  response = g_new0(ds3_pool_failure_response, 1);
3574 
3575 
3576  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3577  if (element_equal(child_node, "Date")) {
3578  response->date = xml_get_string(doc, child_node);
3579  } else if (element_equal(child_node, "ErrorMessage")) {
3580  response->error_message = xml_get_string(doc, child_node);
3581  } else if (element_equal(child_node, "Id")) {
3582  response->id = xml_get_string(doc, child_node);
3583  } else if (element_equal(child_node, "PoolId")) {
3584  response->pool_id = xml_get_string(doc, child_node);
3585  } else if (element_equal(child_node, "Type")) {
3586  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3587  if (text == NULL) {
3588  continue;
3589  }
3590  response->type = _match_ds3_pool_failure_type(client->log, text);
3591  xmlFree(text);
3592  } else {
3593  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_response [%s]\n", child_node->name, root->name);
3594  }
3595 
3596  if (error != NULL) {
3597  break;
3598  }
3599 
3600  }
3601 
3602 
3603  *_response = response;
3604 
3605  return error;
3606 }
3607 
3608 static ds3_error* _parse_ds3_pool_partition_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_partition_response** _response) {
3609  ds3_pool_partition_response* response;
3610  xmlNodePtr child_node;
3611  ds3_error* error = NULL;
3612 
3613  response = g_new0(ds3_pool_partition_response, 1);
3614 
3615 
3616  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3617  if (element_equal(child_node, "Id")) {
3618  response->id = xml_get_string(doc, child_node);
3619  } else if (element_equal(child_node, "Name")) {
3620  response->name = xml_get_string(doc, child_node);
3621  } else if (element_equal(child_node, "Type")) {
3622  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3623  if (text == NULL) {
3624  continue;
3625  }
3626  response->type = _match_ds3_pool_type(client->log, text);
3627  xmlFree(text);
3628  } else {
3629  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_partition_response [%s]\n", child_node->name, root->name);
3630  }
3631 
3632  if (error != NULL) {
3633  break;
3634  }
3635 
3636  }
3637 
3638 
3639  *_response = response;
3640 
3641  return error;
3642 }
3643 
3644 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) {
3646  xmlNodePtr child_node;
3647  ds3_error* error = NULL;
3648 
3649  response = g_new0(ds3_suspect_blob_pool_response, 1);
3650 
3651 
3652  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3653  if (element_equal(child_node, "BlobId")) {
3654  response->blob_id = xml_get_string(doc, child_node);
3655  } else if (element_equal(child_node, "BucketId")) {
3656  response->bucket_id = xml_get_string(doc, child_node);
3657  } else if (element_equal(child_node, "DateWritten")) {
3658  response->date_written = xml_get_string(doc, child_node);
3659  } else if (element_equal(child_node, "Id")) {
3660  response->id = xml_get_string(doc, child_node);
3661  } else if (element_equal(child_node, "LastAccessed")) {
3662  response->last_accessed = xml_get_string(doc, child_node);
3663  } else if (element_equal(child_node, "PoolId")) {
3664  response->pool_id = xml_get_string(doc, child_node);
3665  } else {
3666  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_pool_response [%s]\n", child_node->name, root->name);
3667  }
3668 
3669  if (error != NULL) {
3670  break;
3671  }
3672 
3673  }
3674 
3675 
3676  *_response = response;
3677 
3678  return error;
3679 }
3680 
3681 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) {
3683  xmlNodePtr child_node;
3684  ds3_error* error = NULL;
3685 
3686  response = g_new0(ds3_suspect_blob_tape_response, 1);
3687 
3688 
3689  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3690  if (element_equal(child_node, "BlobId")) {
3691  response->blob_id = xml_get_string(doc, child_node);
3692  } else if (element_equal(child_node, "Id")) {
3693  response->id = xml_get_string(doc, child_node);
3694  } else if (element_equal(child_node, "OrderIndex")) {
3695  response->order_index = xml_get_uint16(doc, child_node);
3696  } else if (element_equal(child_node, "TapeId")) {
3697  response->tape_id = xml_get_string(doc, child_node);
3698  } else {
3699  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_tape_response [%s]\n", child_node->name, root->name);
3700  }
3701 
3702  if (error != NULL) {
3703  break;
3704  }
3705 
3706  }
3707 
3708 
3709  *_response = response;
3710 
3711  return error;
3712 }
3713 
3714 static ds3_error* _parse_ds3_tape_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_response** _response) {
3715  ds3_tape_response* response;
3716  xmlNodePtr child_node;
3717  ds3_error* error = NULL;
3718 
3719  response = g_new0(ds3_tape_response, 1);
3720 
3721 
3722  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3723  if (element_equal(child_node, "AssignedToStorageDomain")) {
3724  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
3725  } else if (element_equal(child_node, "AvailableRawCapacity")) {
3726  response->available_raw_capacity = xml_get_uint64(doc, child_node);
3727  } else if (element_equal(child_node, "BarCode")) {
3728  response->bar_code = xml_get_string(doc, child_node);
3729  } else if (element_equal(child_node, "BucketId")) {
3730  response->bucket_id = xml_get_string(doc, child_node);
3731  } else if (element_equal(child_node, "DescriptionForIdentification")) {
3732  response->description_for_identification = xml_get_string(doc, child_node);
3733  } else if (element_equal(child_node, "EjectDate")) {
3734  response->eject_date = xml_get_string(doc, child_node);
3735  } else if (element_equal(child_node, "EjectLabel")) {
3736  response->eject_label = xml_get_string(doc, child_node);
3737  } else if (element_equal(child_node, "EjectLocation")) {
3738  response->eject_location = xml_get_string(doc, child_node);
3739  } else if (element_equal(child_node, "EjectPending")) {
3740  response->eject_pending = xml_get_string(doc, child_node);
3741  } else if (element_equal(child_node, "FullOfData")) {
3742  response->full_of_data = xml_get_bool(client->log, doc, child_node);
3743  } else if (element_equal(child_node, "Id")) {
3744  response->id = xml_get_string(doc, child_node);
3745  } else if (element_equal(child_node, "LastAccessed")) {
3746  response->last_accessed = xml_get_string(doc, child_node);
3747  } else if (element_equal(child_node, "LastCheckpoint")) {
3748  response->last_checkpoint = xml_get_string(doc, child_node);
3749  } else if (element_equal(child_node, "LastModified")) {
3750  response->last_modified = xml_get_string(doc, child_node);
3751  } else if (element_equal(child_node, "LastVerified")) {
3752  response->last_verified = xml_get_string(doc, child_node);
3753  } else if (element_equal(child_node, "PartiallyVerifiedEndOfTape")) {
3754  response->partially_verified_end_of_tape = xml_get_string(doc, child_node);
3755  } else if (element_equal(child_node, "PartitionId")) {
3756  response->partition_id = xml_get_string(doc, child_node);
3757  } else if (element_equal(child_node, "PreviousState")) {
3758  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3759  if (text == NULL) {
3760  continue;
3761  }
3762  response->previous_state = _match_ds3_tape_state(client->log, text);
3763  xmlFree(text);
3764  } else if (element_equal(child_node, "SerialNumber")) {
3765  response->serial_number = xml_get_string(doc, child_node);
3766  } else if (element_equal(child_node, "State")) {
3767  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3768  if (text == NULL) {
3769  continue;
3770  }
3771  response->state = _match_ds3_tape_state(client->log, text);
3772  xmlFree(text);
3773  } else if (element_equal(child_node, "StorageDomainMemberId")) {
3774  response->storage_domain_member_id = xml_get_string(doc, child_node);
3775  } else if (element_equal(child_node, "TakeOwnershipPending")) {
3776  response->take_ownership_pending = xml_get_bool(client->log, doc, child_node);
3777  } else if (element_equal(child_node, "TotalRawCapacity")) {
3778  response->total_raw_capacity = xml_get_uint64(doc, child_node);
3779  } else if (element_equal(child_node, "Type")) {
3780  response->type = xml_get_string(doc, child_node);
3781  } else if (element_equal(child_node, "VerifyPending")) {
3782  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3783  if (text == NULL) {
3784  continue;
3785  }
3786  response->verify_pending = _match_ds3_priority(client->log, text);
3787  xmlFree(text);
3788  } else if (element_equal(child_node, "WriteProtected")) {
3789  response->write_protected = xml_get_bool(client->log, doc, child_node);
3790  } else {
3791  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_response [%s]\n", child_node->name, root->name);
3792  }
3793 
3794  if (error != NULL) {
3795  break;
3796  }
3797 
3798  }
3799 
3800 
3801  *_response = response;
3802 
3803  return error;
3804 }
3805 
3806 static ds3_error* _parse_ds3_tape_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
3807  ds3_error* error = NULL;
3808  xmlNodePtr child_node;
3809  GPtrArray* ds3_tape_response_array = g_ptr_array_new();
3810 
3811  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3812  ds3_tape_response* response = NULL;
3813  error = _parse_ds3_tape_response(client, doc, child_node, &response);
3814  g_ptr_array_add(ds3_tape_response_array, response);
3815 
3816  if (error != NULL) {
3817  break;
3818  }
3819  }
3820 
3821  *_response = ds3_tape_response_array;
3822 
3823  return error;
3824 }
3825 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) {
3827  xmlNodePtr child_node;
3828  ds3_error* error = NULL;
3829 
3830  response = g_new0(ds3_tape_density_directive_response, 1);
3831 
3832 
3833  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3834  if (element_equal(child_node, "Density")) {
3835  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3836  if (text == NULL) {
3837  continue;
3838  }
3839  response->density = _match_ds3_tape_drive_type(client->log, text);
3840  xmlFree(text);
3841  } else if (element_equal(child_node, "Id")) {
3842  response->id = xml_get_string(doc, child_node);
3843  } else if (element_equal(child_node, "PartitionId")) {
3844  response->partition_id = xml_get_string(doc, child_node);
3845  } else if (element_equal(child_node, "TapeType")) {
3846  response->tape_type = xml_get_string(doc, child_node);
3847  } else {
3848  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_density_directive_response [%s]\n", child_node->name, root->name);
3849  }
3850 
3851  if (error != NULL) {
3852  break;
3853  }
3854 
3855  }
3856 
3857 
3858  *_response = response;
3859 
3860  return error;
3861 }
3862 
3863 static ds3_error* _parse_ds3_tape_drive_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_drive_response** _response) {
3864  ds3_tape_drive_response* response;
3865  xmlNodePtr child_node;
3866  ds3_error* error = NULL;
3867 
3868  response = g_new0(ds3_tape_drive_response, 1);
3869 
3870 
3871  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3872  if (element_equal(child_node, "CleaningRequired")) {
3873  response->cleaning_required = xml_get_bool(client->log, doc, child_node);
3874  } else if (element_equal(child_node, "ErrorMessage")) {
3875  response->error_message = xml_get_string(doc, child_node);
3876  } else if (element_equal(child_node, "ForceTapeRemoval")) {
3877  response->force_tape_removal = xml_get_bool(client->log, doc, child_node);
3878  } else if (element_equal(child_node, "Id")) {
3879  response->id = xml_get_string(doc, child_node);
3880  } else if (element_equal(child_node, "LastCleaned")) {
3881  response->last_cleaned = xml_get_string(doc, child_node);
3882  } else if (element_equal(child_node, "MfgSerialNumber")) {
3883  response->mfg_serial_number = xml_get_string(doc, child_node);
3884  } else if (element_equal(child_node, "PartitionId")) {
3885  response->partition_id = xml_get_string(doc, child_node);
3886  } else if (element_equal(child_node, "Quiesced")) {
3887  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3888  if (text == NULL) {
3889  continue;
3890  }
3891  response->quiesced = _match_ds3_quiesced(client->log, text);
3892  xmlFree(text);
3893  } else if (element_equal(child_node, "ReservedTaskType")) {
3894  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3895  if (text == NULL) {
3896  continue;
3897  }
3898  response->reserved_task_type = _match_ds3_reserved_task_type(client->log, text);
3899  xmlFree(text);
3900  } else if (element_equal(child_node, "SerialNumber")) {
3901  response->serial_number = xml_get_string(doc, child_node);
3902  } else if (element_equal(child_node, "State")) {
3903  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3904  if (text == NULL) {
3905  continue;
3906  }
3907  response->state = _match_ds3_tape_drive_state(client->log, text);
3908  xmlFree(text);
3909  } else if (element_equal(child_node, "TapeId")) {
3910  response->tape_id = xml_get_string(doc, child_node);
3911  } else if (element_equal(child_node, "Type")) {
3912  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3913  if (text == NULL) {
3914  continue;
3915  }
3916  response->type = _match_ds3_tape_drive_type(client->log, text);
3917  xmlFree(text);
3918  } else {
3919  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_drive_response [%s]\n", child_node->name, root->name);
3920  }
3921 
3922  if (error != NULL) {
3923  break;
3924  }
3925 
3926  }
3927 
3928 
3929  *_response = response;
3930 
3931  return error;
3932 }
3933 
3934 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) {
3936  xmlNodePtr child_node;
3937  ds3_error* error = NULL;
3938 
3939  response = g_new0(ds3_detailed_tape_failure_response, 1);
3940 
3941 
3942  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3943  if (element_equal(child_node, "Date")) {
3944  response->date = xml_get_string(doc, child_node);
3945  } else if (element_equal(child_node, "ErrorMessage")) {
3946  response->error_message = xml_get_string(doc, child_node);
3947  } else if (element_equal(child_node, "Id")) {
3948  response->id = xml_get_string(doc, child_node);
3949  } else if (element_equal(child_node, "TapeDriveId")) {
3950  response->tape_drive_id = xml_get_string(doc, child_node);
3951  } else if (element_equal(child_node, "TapeId")) {
3952  response->tape_id = xml_get_string(doc, child_node);
3953  } else if (element_equal(child_node, "Type")) {
3954  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
3955  if (text == NULL) {
3956  continue;
3957  }
3958  response->type = _match_ds3_tape_failure_type(client->log, text);
3959  xmlFree(text);
3960  } else {
3961  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_tape_failure_response [%s]\n", child_node->name, root->name);
3962  }
3963 
3964  if (error != NULL) {
3965  break;
3966  }
3967 
3968  }
3969 
3970 
3971  *_response = response;
3972 
3973  return error;
3974 }
3975 
3976 static ds3_error* _parse_ds3_tape_library_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_library_response** _response) {
3977  ds3_tape_library_response* response;
3978  xmlNodePtr child_node;
3979  ds3_error* error = NULL;
3980 
3981  response = g_new0(ds3_tape_library_response, 1);
3982 
3983 
3984  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
3985  if (element_equal(child_node, "Id")) {
3986  response->id = xml_get_string(doc, child_node);
3987  } else if (element_equal(child_node, "ManagementUrl")) {
3988  response->management_url = xml_get_string(doc, child_node);
3989  } else if (element_equal(child_node, "Name")) {
3990  response->name = xml_get_string(doc, child_node);
3991  } else if (element_equal(child_node, "SerialNumber")) {
3992  response->serial_number = xml_get_string(doc, child_node);
3993  } else {
3994  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_library_response [%s]\n", child_node->name, root->name);
3995  }
3996 
3997  if (error != NULL) {
3998  break;
3999  }
4000 
4001  }
4002 
4003 
4004  *_response = response;
4005 
4006  return error;
4007 }
4008 
4009 static ds3_error* _parse_ds3_tape_partition_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_partition_response** _response) {
4010  ds3_tape_partition_response* response;
4011  xmlNodePtr child_node;
4012  ds3_error* error = NULL;
4013 
4014  response = g_new0(ds3_tape_partition_response, 1);
4015 
4016 
4017  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4018  if (element_equal(child_node, "AutoCompactionEnabled")) {
4019  response->auto_compaction_enabled = xml_get_bool(client->log, doc, child_node);
4020  } else if (element_equal(child_node, "DriveType")) {
4021  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4022  if (text == NULL) {
4023  continue;
4024  }
4025  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
4026  xmlFree(text);
4027  } else if (element_equal(child_node, "ErrorMessage")) {
4028  response->error_message = xml_get_string(doc, child_node);
4029  } else if (element_equal(child_node, "Id")) {
4030  response->id = xml_get_string(doc, child_node);
4031  } else if (element_equal(child_node, "ImportExportConfiguration")) {
4032  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4033  if (text == NULL) {
4034  continue;
4035  }
4037  xmlFree(text);
4038  } else if (element_equal(child_node, "LibraryId")) {
4039  response->library_id = xml_get_string(doc, child_node);
4040  } else if (element_equal(child_node, "MinimumReadReservedDrives")) {
4041  response->minimum_read_reserved_drives = xml_get_uint16(doc, child_node);
4042  } else if (element_equal(child_node, "MinimumWriteReservedDrives")) {
4043  response->minimum_write_reserved_drives = xml_get_uint16(doc, child_node);
4044  } else if (element_equal(child_node, "Name")) {
4045  response->name = xml_get_string(doc, child_node);
4046  } else if (element_equal(child_node, "Quiesced")) {
4047  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4048  if (text == NULL) {
4049  continue;
4050  }
4051  response->quiesced = _match_ds3_quiesced(client->log, text);
4052  xmlFree(text);
4053  } else if (element_equal(child_node, "SerialNumber")) {
4054  response->serial_number = xml_get_string(doc, child_node);
4055  } else if (element_equal(child_node, "State")) {
4056  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4057  if (text == NULL) {
4058  continue;
4059  }
4060  response->state = _match_ds3_tape_partition_state(client->log, text);
4061  xmlFree(text);
4062  } else {
4063  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_response [%s]\n", child_node->name, root->name);
4064  }
4065 
4066  if (error != NULL) {
4067  break;
4068  }
4069 
4070  }
4071 
4072 
4073  *_response = response;
4074 
4075  return error;
4076 }
4077 
4078 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) {
4080  xmlNodePtr child_node;
4081  ds3_error* error = NULL;
4082 
4083  response = g_new0(ds3_tape_partition_failure_response, 1);
4084 
4085 
4086  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4087  if (element_equal(child_node, "Date")) {
4088  response->date = xml_get_string(doc, child_node);
4089  } else if (element_equal(child_node, "ErrorMessage")) {
4090  response->error_message = xml_get_string(doc, child_node);
4091  } else if (element_equal(child_node, "Id")) {
4092  response->id = xml_get_string(doc, child_node);
4093  } else if (element_equal(child_node, "PartitionId")) {
4094  response->partition_id = xml_get_string(doc, child_node);
4095  } else if (element_equal(child_node, "Type")) {
4096  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4097  if (text == NULL) {
4098  continue;
4099  }
4100  response->type = _match_ds3_tape_partition_failure_type(client->log, text);
4101  xmlFree(text);
4102  } else {
4103  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_failure_response [%s]\n", child_node->name, root->name);
4104  }
4105 
4106  if (error != NULL) {
4107  break;
4108  }
4109 
4110  }
4111 
4112 
4113  *_response = response;
4114 
4115  return error;
4116 }
4117 
4118 static ds3_error* _parse_ds3_azure_target_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_azure_target_response** _response) {
4119  ds3_azure_target_response* response;
4120  xmlNodePtr child_node;
4121  ds3_error* error = NULL;
4122 
4123  response = g_new0(ds3_azure_target_response, 1);
4124 
4125 
4126  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4127  if (element_equal(child_node, "AccountKey")) {
4128  response->account_key = xml_get_string(doc, child_node);
4129  } else if (element_equal(child_node, "AccountName")) {
4130  response->account_name = xml_get_string(doc, child_node);
4131  } else if (element_equal(child_node, "AutoVerifyFrequencyInDays")) {
4132  response->auto_verify_frequency_in_days = xml_get_uint16(doc, child_node);
4133  } else if (element_equal(child_node, "CloudBucketPrefix")) {
4134  response->cloud_bucket_prefix = xml_get_string(doc, child_node);
4135  } else if (element_equal(child_node, "CloudBucketSuffix")) {
4136  response->cloud_bucket_suffix = xml_get_string(doc, child_node);
4137  } else if (element_equal(child_node, "DefaultReadPreference")) {
4138  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4139  if (text == NULL) {
4140  continue;
4141  }
4143  xmlFree(text);
4144  } else if (element_equal(child_node, "Https")) {
4145  response->https = xml_get_bool(client->log, doc, child_node);
4146  } else if (element_equal(child_node, "Id")) {
4147  response->id = xml_get_string(doc, child_node);
4148  } else if (element_equal(child_node, "LastFullyVerified")) {
4149  response->last_fully_verified = xml_get_string(doc, child_node);
4150  } else if (element_equal(child_node, "Name")) {
4151  response->name = xml_get_string(doc, child_node);
4152  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
4153  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
4154  } else if (element_equal(child_node, "Quiesced")) {
4155  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4156  if (text == NULL) {
4157  continue;
4158  }
4159  response->quiesced = _match_ds3_quiesced(client->log, text);
4160  xmlFree(text);
4161  } else if (element_equal(child_node, "State")) {
4162  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4163  if (text == NULL) {
4164  continue;
4165  }
4166  response->state = _match_ds3_target_state(client->log, text);
4167  xmlFree(text);
4168  } else {
4169  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_response [%s]\n", child_node->name, root->name);
4170  }
4171 
4172  if (error != NULL) {
4173  break;
4174  }
4175 
4176  }
4177 
4178 
4179  *_response = response;
4180 
4181  return error;
4182 }
4183 
4184 static ds3_error* _parse_ds3_azure_target_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4185  ds3_error* error = NULL;
4186  xmlNodePtr child_node;
4187  GPtrArray* ds3_azure_target_response_array = g_ptr_array_new();
4188 
4189  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4190  ds3_azure_target_response* response = NULL;
4191  error = _parse_ds3_azure_target_response(client, doc, child_node, &response);
4192  g_ptr_array_add(ds3_azure_target_response_array, response);
4193 
4194  if (error != NULL) {
4195  break;
4196  }
4197  }
4198 
4199  *_response = ds3_azure_target_response_array;
4200 
4201  return error;
4202 }
4203 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) {
4205  xmlNodePtr child_node;
4206  ds3_error* error = NULL;
4207 
4208  response = g_new0(ds3_azure_target_bucket_name_response, 1);
4209 
4210 
4211  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4212  if (element_equal(child_node, "BucketId")) {
4213  response->bucket_id = xml_get_string(doc, child_node);
4214  } else if (element_equal(child_node, "Id")) {
4215  response->id = xml_get_string(doc, child_node);
4216  } else if (element_equal(child_node, "Name")) {
4217  response->name = xml_get_string(doc, child_node);
4218  } else if (element_equal(child_node, "TargetId")) {
4219  response->target_id = xml_get_string(doc, child_node);
4220  } else {
4221  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_bucket_name_response [%s]\n", child_node->name, root->name);
4222  }
4223 
4224  if (error != NULL) {
4225  break;
4226  }
4227 
4228  }
4229 
4230 
4231  *_response = response;
4232 
4233  return error;
4234 }
4235 
4236 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) {
4238  xmlNodePtr child_node;
4239  ds3_error* error = NULL;
4240 
4241  response = g_new0(ds3_azure_target_failure_response, 1);
4242 
4243 
4244  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4245  if (element_equal(child_node, "Date")) {
4246  response->date = xml_get_string(doc, child_node);
4247  } else if (element_equal(child_node, "ErrorMessage")) {
4248  response->error_message = xml_get_string(doc, child_node);
4249  } else if (element_equal(child_node, "Id")) {
4250  response->id = xml_get_string(doc, child_node);
4251  } else if (element_equal(child_node, "TargetId")) {
4252  response->target_id = xml_get_string(doc, child_node);
4253  } else if (element_equal(child_node, "Type")) {
4254  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4255  if (text == NULL) {
4256  continue;
4257  }
4258  response->type = _match_ds3_target_failure_type(client->log, text);
4259  xmlFree(text);
4260  } else {
4261  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_failure_response [%s]\n", child_node->name, root->name);
4262  }
4263 
4264  if (error != NULL) {
4265  break;
4266  }
4267 
4268  }
4269 
4270 
4271  *_response = response;
4272 
4273  return error;
4274 }
4275 
4276 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) {
4278  xmlNodePtr child_node;
4279  ds3_error* error = NULL;
4280 
4281  response = g_new0(ds3_azure_target_read_preference_response, 1);
4282 
4283 
4284  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4285  if (element_equal(child_node, "BucketId")) {
4286  response->bucket_id = xml_get_string(doc, child_node);
4287  } else if (element_equal(child_node, "Id")) {
4288  response->id = xml_get_string(doc, child_node);
4289  } else if (element_equal(child_node, "ReadPreference")) {
4290  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4291  if (text == NULL) {
4292  continue;
4293  }
4294  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
4295  xmlFree(text);
4296  } else if (element_equal(child_node, "TargetId")) {
4297  response->target_id = xml_get_string(doc, child_node);
4298  } else {
4299  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_read_preference_response [%s]\n", child_node->name, root->name);
4300  }
4301 
4302  if (error != NULL) {
4303  break;
4304  }
4305 
4306  }
4307 
4308 
4309  *_response = response;
4310 
4311  return error;
4312 }
4313 
4314 static ds3_error* _parse_ds3_target_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_target_response** _response) {
4315  ds3_target_response* response;
4316  xmlNodePtr child_node;
4317  ds3_error* error = NULL;
4318 
4319  response = g_new0(ds3_target_response, 1);
4320 
4321 
4322  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4323  if (element_equal(child_node, "AccessControlReplication")) {
4324  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4325  if (text == NULL) {
4326  continue;
4327  }
4329  xmlFree(text);
4330  } else if (element_equal(child_node, "AdminAuthId")) {
4331  response->admin_auth_id = xml_get_string(doc, child_node);
4332  } else if (element_equal(child_node, "AdminSecretKey")) {
4333  response->admin_secret_key = xml_get_string(doc, child_node);
4334  } else if (element_equal(child_node, "DataPathEndPoint")) {
4335  response->data_path_end_point = xml_get_string(doc, child_node);
4336  } else if (element_equal(child_node, "DataPathHttps")) {
4337  response->data_path_https = xml_get_bool(client->log, doc, child_node);
4338  } else if (element_equal(child_node, "DataPathPort")) {
4339  response->data_path_port = xml_get_uint16(doc, child_node);
4340  } else if (element_equal(child_node, "DataPathProxy")) {
4341  response->data_path_proxy = xml_get_string(doc, child_node);
4342  } else if (element_equal(child_node, "DataPathVerifyCertificate")) {
4343  response->data_path_verify_certificate = xml_get_bool(client->log, doc, child_node);
4344  } else if (element_equal(child_node, "DefaultReadPreference")) {
4345  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4346  if (text == NULL) {
4347  continue;
4348  }
4350  xmlFree(text);
4351  } else if (element_equal(child_node, "Id")) {
4352  response->id = xml_get_string(doc, child_node);
4353  } else if (element_equal(child_node, "Name")) {
4354  response->name = xml_get_string(doc, child_node);
4355  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
4356  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
4357  } else if (element_equal(child_node, "Quiesced")) {
4358  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4359  if (text == NULL) {
4360  continue;
4361  }
4362  response->quiesced = _match_ds3_quiesced(client->log, text);
4363  xmlFree(text);
4364  } else if (element_equal(child_node, "ReplicatedUserDefaultDataPolicy")) {
4365  response->replicated_user_default_data_policy = xml_get_string(doc, child_node);
4366  } else if (element_equal(child_node, "State")) {
4367  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4368  if (text == NULL) {
4369  continue;
4370  }
4371  response->state = _match_ds3_target_state(client->log, text);
4372  xmlFree(text);
4373  } else {
4374  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_response [%s]\n", child_node->name, root->name);
4375  }
4376 
4377  if (error != NULL) {
4378  break;
4379  }
4380 
4381  }
4382 
4383 
4384  *_response = response;
4385 
4386  return error;
4387 }
4388 
4389 static ds3_error* _parse_ds3_target_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4390  ds3_error* error = NULL;
4391  xmlNodePtr child_node;
4392  GPtrArray* ds3_target_response_array = g_ptr_array_new();
4393 
4394  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4395  ds3_target_response* response = NULL;
4396  error = _parse_ds3_target_response(client, doc, child_node, &response);
4397  g_ptr_array_add(ds3_target_response_array, response);
4398 
4399  if (error != NULL) {
4400  break;
4401  }
4402  }
4403 
4404  *_response = ds3_target_response_array;
4405 
4406  return error;
4407 }
4408 static ds3_error* _parse_ds3_target_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_target_failure_response** _response) {
4409  ds3_target_failure_response* response;
4410  xmlNodePtr child_node;
4411  ds3_error* error = NULL;
4412 
4413  response = g_new0(ds3_target_failure_response, 1);
4414 
4415 
4416  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4417  if (element_equal(child_node, "Date")) {
4418  response->date = xml_get_string(doc, child_node);
4419  } else if (element_equal(child_node, "ErrorMessage")) {
4420  response->error_message = xml_get_string(doc, child_node);
4421  } else if (element_equal(child_node, "Id")) {
4422  response->id = xml_get_string(doc, child_node);
4423  } else if (element_equal(child_node, "TargetId")) {
4424  response->target_id = xml_get_string(doc, child_node);
4425  } else if (element_equal(child_node, "Type")) {
4426  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4427  if (text == NULL) {
4428  continue;
4429  }
4430  response->type = _match_ds3_target_failure_type(client->log, text);
4431  xmlFree(text);
4432  } else {
4433  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_failure_response [%s]\n", child_node->name, root->name);
4434  }
4435 
4436  if (error != NULL) {
4437  break;
4438  }
4439 
4440  }
4441 
4442 
4443  *_response = response;
4444 
4445  return error;
4446 }
4447 
4448 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) {
4450  xmlNodePtr child_node;
4451  ds3_error* error = NULL;
4452 
4453  response = g_new0(ds3_target_read_preference_response, 1);
4454 
4455 
4456  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4457  if (element_equal(child_node, "BucketId")) {
4458  response->bucket_id = xml_get_string(doc, child_node);
4459  } else if (element_equal(child_node, "Id")) {
4460  response->id = xml_get_string(doc, child_node);
4461  } else if (element_equal(child_node, "ReadPreference")) {
4462  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4463  if (text == NULL) {
4464  continue;
4465  }
4466  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
4467  xmlFree(text);
4468  } else if (element_equal(child_node, "TargetId")) {
4469  response->target_id = xml_get_string(doc, child_node);
4470  } else {
4471  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_read_preference_response [%s]\n", child_node->name, root->name);
4472  }
4473 
4474  if (error != NULL) {
4475  break;
4476  }
4477 
4478  }
4479 
4480 
4481  *_response = response;
4482 
4483  return error;
4484 }
4485 
4486 static ds3_error* _parse_ds3_s3_target_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_target_response** _response) {
4487  ds3_s3_target_response* response;
4488  xmlNodePtr child_node;
4489  ds3_error* error = NULL;
4490 
4491  response = g_new0(ds3_s3_target_response, 1);
4492 
4493 
4494  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4495  if (element_equal(child_node, "AccessKey")) {
4496  response->access_key = xml_get_string(doc, child_node);
4497  } else if (element_equal(child_node, "AutoVerifyFrequencyInDays")) {
4498  response->auto_verify_frequency_in_days = xml_get_uint16(doc, child_node);
4499  } else if (element_equal(child_node, "CloudBucketPrefix")) {
4500  response->cloud_bucket_prefix = xml_get_string(doc, child_node);
4501  } else if (element_equal(child_node, "CloudBucketSuffix")) {
4502  response->cloud_bucket_suffix = xml_get_string(doc, child_node);
4503  } else if (element_equal(child_node, "DataPathEndPoint")) {
4504  response->data_path_end_point = xml_get_string(doc, child_node);
4505  } else if (element_equal(child_node, "DefaultReadPreference")) {
4506  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4507  if (text == NULL) {
4508  continue;
4509  }
4511  xmlFree(text);
4512  } else if (element_equal(child_node, "Https")) {
4513  response->https = xml_get_bool(client->log, doc, child_node);
4514  } else if (element_equal(child_node, "Id")) {
4515  response->id = xml_get_string(doc, child_node);
4516  } else if (element_equal(child_node, "LastFullyVerified")) {
4517  response->last_fully_verified = xml_get_string(doc, child_node);
4518  } else if (element_equal(child_node, "Name")) {
4519  response->name = xml_get_string(doc, child_node);
4520  } else if (element_equal(child_node, "OfflineDataStagingWindowInTb")) {
4521  response->offline_data_staging_window_in_tb = xml_get_uint16(doc, child_node);
4522  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
4523  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
4524  } else if (element_equal(child_node, "ProxyDomain")) {
4525  response->proxy_domain = xml_get_string(doc, child_node);
4526  } else if (element_equal(child_node, "ProxyHost")) {
4527  response->proxy_host = xml_get_string(doc, child_node);
4528  } else if (element_equal(child_node, "ProxyPassword")) {
4529  response->proxy_password = xml_get_string(doc, child_node);
4530  } else if (element_equal(child_node, "ProxyPort")) {
4531  response->proxy_port = xml_get_uint16(doc, child_node);
4532  } else if (element_equal(child_node, "ProxyUsername")) {
4533  response->proxy_username = xml_get_string(doc, child_node);
4534  } else if (element_equal(child_node, "Quiesced")) {
4535  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4536  if (text == NULL) {
4537  continue;
4538  }
4539  response->quiesced = _match_ds3_quiesced(client->log, text);
4540  xmlFree(text);
4541  } else if (element_equal(child_node, "Region")) {
4542  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4543  if (text == NULL) {
4544  continue;
4545  }
4546  response->region = _match_ds3_s3_region(client->log, text);
4547  xmlFree(text);
4548  } else if (element_equal(child_node, "SecretKey")) {
4549  response->secret_key = xml_get_string(doc, child_node);
4550  } else if (element_equal(child_node, "StagedDataExpirationInDays")) {
4551  response->staged_data_expiration_in_days = xml_get_uint16(doc, child_node);
4552  } else if (element_equal(child_node, "State")) {
4553  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4554  if (text == NULL) {
4555  continue;
4556  }
4557  response->state = _match_ds3_target_state(client->log, text);
4558  xmlFree(text);
4559  } else {
4560  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_response [%s]\n", child_node->name, root->name);
4561  }
4562 
4563  if (error != NULL) {
4564  break;
4565  }
4566 
4567  }
4568 
4569 
4570  *_response = response;
4571 
4572  return error;
4573 }
4574 
4575 static ds3_error* _parse_ds3_s3_target_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4576  ds3_error* error = NULL;
4577  xmlNodePtr child_node;
4578  GPtrArray* ds3_s3_target_response_array = g_ptr_array_new();
4579 
4580  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4581  ds3_s3_target_response* response = NULL;
4582  error = _parse_ds3_s3_target_response(client, doc, child_node, &response);
4583  g_ptr_array_add(ds3_s3_target_response_array, response);
4584 
4585  if (error != NULL) {
4586  break;
4587  }
4588  }
4589 
4590  *_response = ds3_s3_target_response_array;
4591 
4592  return error;
4593 }
4594 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) {
4596  xmlNodePtr child_node;
4597  ds3_error* error = NULL;
4598 
4599  response = g_new0(ds3_s3_target_bucket_name_response, 1);
4600 
4601 
4602  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4603  if (element_equal(child_node, "BucketId")) {
4604  response->bucket_id = xml_get_string(doc, child_node);
4605  } else if (element_equal(child_node, "Id")) {
4606  response->id = xml_get_string(doc, child_node);
4607  } else if (element_equal(child_node, "Name")) {
4608  response->name = xml_get_string(doc, child_node);
4609  } else if (element_equal(child_node, "TargetId")) {
4610  response->target_id = xml_get_string(doc, child_node);
4611  } else {
4612  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_bucket_name_response [%s]\n", child_node->name, root->name);
4613  }
4614 
4615  if (error != NULL) {
4616  break;
4617  }
4618 
4619  }
4620 
4621 
4622  *_response = response;
4623 
4624  return error;
4625 }
4626 
4627 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) {
4629  xmlNodePtr child_node;
4630  ds3_error* error = NULL;
4631 
4632  response = g_new0(ds3_s3_target_failure_response, 1);
4633 
4634 
4635  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4636  if (element_equal(child_node, "Date")) {
4637  response->date = xml_get_string(doc, child_node);
4638  } else if (element_equal(child_node, "ErrorMessage")) {
4639  response->error_message = xml_get_string(doc, child_node);
4640  } else if (element_equal(child_node, "Id")) {
4641  response->id = xml_get_string(doc, child_node);
4642  } else if (element_equal(child_node, "TargetId")) {
4643  response->target_id = xml_get_string(doc, child_node);
4644  } else if (element_equal(child_node, "Type")) {
4645  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4646  if (text == NULL) {
4647  continue;
4648  }
4649  response->type = _match_ds3_target_failure_type(client->log, text);
4650  xmlFree(text);
4651  } else {
4652  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_failure_response [%s]\n", child_node->name, root->name);
4653  }
4654 
4655  if (error != NULL) {
4656  break;
4657  }
4658 
4659  }
4660 
4661 
4662  *_response = response;
4663 
4664  return error;
4665 }
4666 
4667 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) {
4669  xmlNodePtr child_node;
4670  ds3_error* error = NULL;
4671 
4672  response = g_new0(ds3_s3_target_read_preference_response, 1);
4673 
4674 
4675  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4676  if (element_equal(child_node, "BucketId")) {
4677  response->bucket_id = xml_get_string(doc, child_node);
4678  } else if (element_equal(child_node, "Id")) {
4679  response->id = xml_get_string(doc, child_node);
4680  } else if (element_equal(child_node, "ReadPreference")) {
4681  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4682  if (text == NULL) {
4683  continue;
4684  }
4685  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
4686  xmlFree(text);
4687  } else if (element_equal(child_node, "TargetId")) {
4688  response->target_id = xml_get_string(doc, child_node);
4689  } else {
4690  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_read_preference_response [%s]\n", child_node->name, root->name);
4691  }
4692 
4693  if (error != NULL) {
4694  break;
4695  }
4696 
4697  }
4698 
4699 
4700  *_response = response;
4701 
4702  return error;
4703 }
4704 
4705 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) {
4707  xmlNodePtr child_node;
4708  ds3_error* error = NULL;
4709 
4710  response = g_new0(ds3_suspect_blob_azure_target_response, 1);
4711 
4712 
4713  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4714  if (element_equal(child_node, "BlobId")) {
4715  response->blob_id = xml_get_string(doc, child_node);
4716  } else if (element_equal(child_node, "Id")) {
4717  response->id = xml_get_string(doc, child_node);
4718  } else if (element_equal(child_node, "TargetId")) {
4719  response->target_id = xml_get_string(doc, child_node);
4720  } else {
4721  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_azure_target_response [%s]\n", child_node->name, root->name);
4722  }
4723 
4724  if (error != NULL) {
4725  break;
4726  }
4727 
4728  }
4729 
4730 
4731  *_response = response;
4732 
4733  return error;
4734 }
4735 
4736 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) {
4738  xmlNodePtr child_node;
4739  ds3_error* error = NULL;
4740 
4741  response = g_new0(ds3_suspect_blob_ds3_target_response, 1);
4742 
4743 
4744  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4745  if (element_equal(child_node, "BlobId")) {
4746  response->blob_id = xml_get_string(doc, child_node);
4747  } else if (element_equal(child_node, "Id")) {
4748  response->id = xml_get_string(doc, child_node);
4749  } else if (element_equal(child_node, "TargetId")) {
4750  response->target_id = xml_get_string(doc, child_node);
4751  } else {
4752  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_ds3_target_response [%s]\n", child_node->name, root->name);
4753  }
4754 
4755  if (error != NULL) {
4756  break;
4757  }
4758 
4759  }
4760 
4761 
4762  *_response = response;
4763 
4764  return error;
4765 }
4766 
4767 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) {
4769  xmlNodePtr child_node;
4770  ds3_error* error = NULL;
4771 
4772  response = g_new0(ds3_suspect_blob_s3_target_response, 1);
4773 
4774 
4775  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4776  if (element_equal(child_node, "BlobId")) {
4777  response->blob_id = xml_get_string(doc, child_node);
4778  } else if (element_equal(child_node, "Id")) {
4779  response->id = xml_get_string(doc, child_node);
4780  } else if (element_equal(child_node, "TargetId")) {
4781  response->target_id = xml_get_string(doc, child_node);
4782  } else {
4783  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_s3_target_response [%s]\n", child_node->name, root->name);
4784  }
4785 
4786  if (error != NULL) {
4787  break;
4788  }
4789 
4790  }
4791 
4792 
4793  *_response = response;
4794 
4795  return error;
4796 }
4797 
4798 static ds3_error* _parse_ds3_build_information_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_build_information_response** _response) {
4800  xmlNodePtr child_node;
4801  ds3_error* error = NULL;
4802 
4803  response = g_new0(ds3_build_information_response, 1);
4804 
4805 
4806  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4807  if (element_equal(child_node, "Branch")) {
4808  response->branch = xml_get_string(doc, child_node);
4809  } else if (element_equal(child_node, "Revision")) {
4810  response->revision = xml_get_string(doc, child_node);
4811  } else if (element_equal(child_node, "Version")) {
4812  response->version = xml_get_string(doc, child_node);
4813  } else {
4814  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_build_information_response [%s]\n", child_node->name, root->name);
4815  }
4816 
4817  if (error != NULL) {
4818  break;
4819  }
4820 
4821  }
4822 
4823 
4824  *_response = response;
4825 
4826  return error;
4827 }
4828 
4829 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) {
4831  xmlNodePtr child_node;
4832  ds3_error* error = NULL;
4833  GPtrArray* tape_bar_codes_array = g_ptr_array_new();
4834 
4835  response = g_new0(ds3_set_of_tape_bar_codes_response, 1);
4836 
4837 
4838  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4839  if (element_equal(child_node, "TapeBarCodes")) {
4840  xmlNodePtr loop_node;
4841  GPtrArray* tape_bar_codes_array = g_ptr_array_new();
4842  int num_nodes = 0;
4843  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
4844  ds3_str* tape_bar_codes = xml_get_string(doc, loop_node);
4845  g_ptr_array_add(tape_bar_codes_array, tape_bar_codes);
4846  }
4847  response->tape_bar_codes = (ds3_str**)tape_bar_codes_array->pdata;
4848  response->num_tape_bar_codes = tape_bar_codes_array->len;
4849  g_ptr_array_free(tape_bar_codes_array, FALSE);
4850  } else {
4851  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);
4852  }
4853 
4854  if (error != NULL) {
4855  break;
4856  }
4857 
4858  }
4859 
4860  response->tape_bar_codes = (ds3_str**)tape_bar_codes_array->pdata;
4861  response->num_tape_bar_codes = tape_bar_codes_array->len;
4862  g_ptr_array_free(tape_bar_codes_array, FALSE);
4863 
4864  *_response = response;
4865 
4866  return error;
4867 }
4868 
4869 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) {
4871  xmlNodePtr child_node;
4872  ds3_error* error = NULL;
4873  GPtrArray* tapes_to_online_array = g_ptr_array_new();
4874 
4875  response = g_new0(ds3_tapes_must_be_onlined_response, 1);
4876 
4877 
4878  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4879  if (element_equal(child_node, "TapesToOnline")) {
4880  ds3_set_of_tape_bar_codes_response* tapes_to_online_response = NULL;
4881  error = _parse_ds3_set_of_tape_bar_codes_response(client, doc, child_node, &tapes_to_online_response);
4882  response->tapes_to_online = (ds3_set_of_tape_bar_codes_response**)tapes_to_online_array->pdata;
4883  g_ptr_array_add(tapes_to_online_array, tapes_to_online_response);
4884  } else {
4885  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tapes_must_be_onlined_response [%s]\n", child_node->name, root->name);
4886  }
4887 
4888  if (error != NULL) {
4889  break;
4890  }
4891 
4892  }
4893 
4894  response->tapes_to_online = (ds3_set_of_tape_bar_codes_response**)tapes_to_online_array->pdata;
4895  response->num_tapes_to_online = tapes_to_online_array->len;
4896  g_ptr_array_free(tapes_to_online_array, FALSE);
4897 
4898  if (error == NULL) {
4899  *_response = response;
4900  } else {
4902  }
4903 
4904  return error;
4905 }
4906 
4907 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) {
4909  xmlNodePtr child_node;
4910  ds3_error* error = NULL;
4911 
4912  response = g_new0(ds3_blob_store_task_information_response, 1);
4913 
4914 
4915  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4916  if (element_equal(child_node, "DateScheduled")) {
4917  response->date_scheduled = xml_get_string(doc, child_node);
4918  } else if (element_equal(child_node, "DateStarted")) {
4919  response->date_started = xml_get_string(doc, child_node);
4920  } else if (element_equal(child_node, "Description")) {
4921  response->description = xml_get_string(doc, child_node);
4922  } else if (element_equal(child_node, "DriveId")) {
4923  response->drive_id = xml_get_string(doc, child_node);
4924  } else if (element_equal(child_node, "Id")) {
4925  response->id = xml_get_uint64(doc, child_node);
4926  } else if (element_equal(child_node, "Name")) {
4927  response->name = xml_get_string(doc, child_node);
4928  } else if (element_equal(child_node, "PoolId")) {
4929  response->pool_id = xml_get_string(doc, child_node);
4930  } else if (element_equal(child_node, "Priority")) {
4931  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4932  if (text == NULL) {
4933  continue;
4934  }
4935  response->priority = _match_ds3_priority(client->log, text);
4936  xmlFree(text);
4937  } else if (element_equal(child_node, "State")) {
4938  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4939  if (text == NULL) {
4940  continue;
4941  }
4942  response->state = _match_ds3_blob_store_task_state(client->log, text);
4943  xmlFree(text);
4944  } else if (element_equal(child_node, "TapeId")) {
4945  response->tape_id = xml_get_string(doc, child_node);
4946  } else if (element_equal(child_node, "TargetId")) {
4947  response->target_id = xml_get_string(doc, child_node);
4948  } else if (element_equal(child_node, "TargetType")) {
4949  response->target_type = xml_get_string(doc, child_node);
4950  } else {
4951  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_blob_store_task_information_response [%s]\n", child_node->name, root->name);
4952  }
4953 
4954  if (error != NULL) {
4955  break;
4956  }
4957 
4958  }
4959 
4960 
4961  *_response = response;
4962 
4963  return error;
4964 }
4965 
4966 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) {
4968  xmlNodePtr child_node;
4969  ds3_error* error = NULL;
4970 
4971  response = g_new0(ds3_cache_entry_information_response, 1);
4972 
4973 
4974  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4975  if (element_equal(child_node, "Blob")) {
4976  error = _parse_ds3_blob_response(client, doc, child_node, &response->blob);
4977  } else if (element_equal(child_node, "State")) {
4978  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4979  if (text == NULL) {
4980  continue;
4981  }
4982  response->state = _match_ds3_cache_entry_state(client->log, text);
4983  xmlFree(text);
4984  } else {
4985  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_entry_information_response [%s]\n", child_node->name, root->name);
4986  }
4987 
4988  if (error != NULL) {
4989  break;
4990  }
4991 
4992  }
4993 
4994 
4995  if (error == NULL) {
4996  *_response = response;
4997  } else {
4999  }
5000 
5001  return error;
5002 }
5003 
5004 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) {
5006  xmlNodePtr child_node;
5007  ds3_error* error = NULL;
5008  GPtrArray* entries_array = g_ptr_array_new();
5009 
5010  response = g_new0(ds3_cache_filesystem_information_response, 1);
5011 
5012 
5013  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5014  if (element_equal(child_node, "AvailableCapacityInBytes")) {
5015  response->available_capacity_in_bytes = xml_get_uint64(doc, child_node);
5016  } else if (element_equal(child_node, "CacheFilesystem")) {
5017  error = _parse_ds3_cache_filesystem_response(client, doc, child_node, &response->cache_filesystem);
5018  } else if (element_equal(child_node, "Entries")) {
5019  ds3_cache_entry_information_response* entries_response = NULL;
5020  error = _parse_ds3_cache_entry_information_response(client, doc, child_node, &entries_response);
5021  response->entries = (ds3_cache_entry_information_response**)entries_array->pdata;
5022  g_ptr_array_add(entries_array, entries_response);
5023  } else if (element_equal(child_node, "Summary")) {
5024  response->summary = xml_get_string(doc, child_node);
5025  } else if (element_equal(child_node, "TotalCapacityInBytes")) {
5026  response->total_capacity_in_bytes = xml_get_uint64(doc, child_node);
5027  } else if (element_equal(child_node, "UnavailableCapacityInBytes")) {
5028  response->unavailable_capacity_in_bytes = xml_get_uint64(doc, child_node);
5029  } else if (element_equal(child_node, "UsedCapacityInBytes")) {
5030  response->used_capacity_in_bytes = xml_get_uint64(doc, child_node);
5031  } else {
5032  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_information_response [%s]\n", child_node->name, root->name);
5033  }
5034 
5035  if (error != NULL) {
5036  break;
5037  }
5038 
5039  }
5040 
5041  response->entries = (ds3_cache_entry_information_response**)entries_array->pdata;
5042  response->num_entries = entries_array->len;
5043  g_ptr_array_free(entries_array, FALSE);
5044 
5045  if (error == NULL) {
5046  *_response = response;
5047  } else {
5049  }
5050 
5051  return error;
5052 }
5053 
5054 static ds3_error* _parse_ds3_bucket_details_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_details_response** _response) {
5055  ds3_bucket_details_response* response;
5056  xmlNodePtr child_node;
5057  ds3_error* error = NULL;
5058 
5059  response = g_new0(ds3_bucket_details_response, 1);
5060 
5061 
5062  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5063  if (element_equal(child_node, "CreationDate")) {
5064  response->creation_date = xml_get_string(doc, child_node);
5065  } else if (element_equal(child_node, "Name")) {
5066  response->name = xml_get_string(doc, child_node);
5067  } else {
5068  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_details_response [%s]\n", child_node->name, root->name);
5069  }
5070 
5071  if (error != NULL) {
5072  break;
5073  }
5074 
5075  }
5076 
5077 
5078  *_response = response;
5079 
5080  return error;
5081 }
5082 
5083 static ds3_error* _parse_ds3_bucket_details_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5084  ds3_error* error = NULL;
5085  xmlNodePtr child_node;
5086  GPtrArray* ds3_bucket_details_response_array = g_ptr_array_new();
5087 
5088  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5089  ds3_bucket_details_response* response = NULL;
5090  error = _parse_ds3_bucket_details_response(client, doc, child_node, &response);
5091  g_ptr_array_add(ds3_bucket_details_response_array, response);
5092 
5093  if (error != NULL) {
5094  break;
5095  }
5096  }
5097 
5098  *_response = ds3_bucket_details_response_array;
5099 
5100  return error;
5101 }
5102 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) {
5104  xmlNodePtr child_node;
5105  ds3_error* error = NULL;
5106 
5107  response = g_new0(ds3_delete_object_error_response, 1);
5108 
5109 
5110  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5111  if (element_equal(child_node, "Code")) {
5112  response->code = xml_get_string(doc, child_node);
5113  } else if (element_equal(child_node, "Key")) {
5114  response->key = xml_get_string(doc, child_node);
5115  } else if (element_equal(child_node, "Message")) {
5116  response->message = xml_get_string(doc, child_node);
5117  } else {
5118  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_delete_object_error_response [%s]\n", child_node->name, root->name);
5119  }
5120 
5121  if (error != NULL) {
5122  break;
5123  }
5124 
5125  }
5126 
5127 
5128  *_response = response;
5129 
5130  return error;
5131 }
5132 
5133 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) {
5135  xmlNodePtr child_node;
5136  ds3_error* error = NULL;
5137 
5138  response = g_new0(ds3_multi_part_upload_part_response, 1);
5139 
5140 
5141  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5142  if (element_equal(child_node, "ETag")) {
5143  response->e_tag = xml_get_string(doc, child_node);
5144  } else if (element_equal(child_node, "LastModified")) {
5145  response->last_modified = xml_get_string(doc, child_node);
5146  } else if (element_equal(child_node, "PartNumber")) {
5147  response->part_number = xml_get_uint16(doc, child_node);
5148  } else {
5149  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_multi_part_upload_part_response [%s]\n", child_node->name, root->name);
5150  }
5151 
5152  if (error != NULL) {
5153  break;
5154  }
5155 
5156  }
5157 
5158 
5159  *_response = response;
5160 
5161  return error;
5162 }
5163 
5164 static ds3_error* _parse_ds3_job_node_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_node_response** _response) {
5165  ds3_job_node_response* response;
5166  struct _xmlAttr* attribute;
5167  ds3_error* error = NULL;
5168 
5169  response = g_new0(ds3_job_node_response, 1);
5170 
5171  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
5172  if (attribute_equal(attribute, "EndPoint") == true) {
5173  response->end_point = xml_get_string_from_attribute(doc, attribute);
5174  } else if (attribute_equal(attribute, "HttpPort") == true) {
5175  response->http_port = xml_get_uint16_from_attribute(doc, attribute);
5176  } else if (attribute_equal(attribute, "HttpsPort") == true) {
5177  response->https_port = xml_get_uint16_from_attribute(doc, attribute);
5178  } else if (attribute_equal(attribute, "Id") == true) {
5179  response->id = xml_get_string_from_attribute(doc, attribute);
5180  } else {
5181  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_job_node_response [%s]\n", attribute->name, root->name);
5182  }
5183 
5184  if (error != NULL) {
5185  break;
5186  }
5187 
5188  }
5189 
5190 
5191 
5192  *_response = response;
5193 
5194  return error;
5195 }
5196 
5197 static ds3_error* _parse_ds3_job_node_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5198  ds3_error* error = NULL;
5199  xmlNodePtr child_node;
5200  GPtrArray* ds3_job_node_response_array = g_ptr_array_new();
5201 
5202  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5203  ds3_job_node_response* response = NULL;
5204  error = _parse_ds3_job_node_response(client, doc, child_node, &response);
5205  g_ptr_array_add(ds3_job_node_response_array, response);
5206 
5207  if (error != NULL) {
5208  break;
5209  }
5210  }
5211 
5212  *_response = ds3_job_node_response_array;
5213 
5214  return error;
5215 }
5216 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) {
5218  xmlNodePtr child_node;
5219  ds3_error* error = NULL;
5220 
5221  response = g_new0(ds3_s3_object_to_delete_response, 1);
5222 
5223 
5224  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5225  if (element_equal(child_node, "Key")) {
5226  response->key = xml_get_string(doc, child_node);
5227  } else {
5228  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_to_delete_response [%s]\n", child_node->name, root->name);
5229  }
5230 
5231  if (error != NULL) {
5232  break;
5233  }
5234 
5235  }
5236 
5237 
5238  *_response = response;
5239 
5240  return error;
5241 }
5242 
5243 static ds3_error* _parse_ds3_user_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_user_response** _response) {
5244  ds3_user_response* response;
5245  xmlNodePtr child_node;
5246  ds3_error* error = NULL;
5247 
5248  response = g_new0(ds3_user_response, 1);
5249 
5250 
5251  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5252  if (element_equal(child_node, "DisplayName")) {
5253  response->display_name = xml_get_string(doc, child_node);
5254  } else if (element_equal(child_node, "ID")) {
5255  response->id = xml_get_string(doc, child_node);
5256  } else {
5257  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_user_response [%s]\n", child_node->name, root->name);
5258  }
5259 
5260  if (error != NULL) {
5261  break;
5262  }
5263 
5264  }
5265 
5266 
5267  *_response = response;
5268 
5269  return error;
5270 }
5271 
5272 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) {
5274  xmlNodePtr child_node;
5275  ds3_error* error = NULL;
5276  GPtrArray* tape_types_array = g_ptr_array_new();
5277 
5278  response = g_new0(ds3_named_detailed_tape_partition_response, 1);
5279 
5280 
5281  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5282  if (element_equal(child_node, "AutoCompactionEnabled")) {
5283  response->auto_compaction_enabled = xml_get_bool(client->log, doc, child_node);
5284  } else if (element_equal(child_node, "DriveType")) {
5285  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5286  if (text == NULL) {
5287  continue;
5288  }
5289  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
5290  xmlFree(text);
5291  } else if (element_equal(child_node, "DriveTypes")) {
5292  xmlNodePtr loop_node;
5293  int num_nodes = 0;
5294  GByteArray* enum_array = g_byte_array_new();
5295  ds3_tape_drive_type drive_types;
5296  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
5297  xmlChar* text = xmlNodeListGetString(doc, loop_node, 1);
5298  if (text == NULL) {
5299  continue;
5300  }
5301  drive_types = _match_ds3_tape_drive_type(client->log, text);
5302  g_byte_array_append(enum_array, (const guint8*) &drive_types, sizeof(ds3_tape_drive_type));
5303  }
5304  response->drive_types = (ds3_tape_drive_type*)enum_array->data;
5305  response->num_drive_types = enum_array->len;
5306  g_byte_array_free(enum_array, FALSE);
5307  } else if (element_equal(child_node, "ErrorMessage")) {
5308  response->error_message = xml_get_string(doc, child_node);
5309  } else if (element_equal(child_node, "Id")) {
5310  response->id = xml_get_string(doc, child_node);
5311  } else if (element_equal(child_node, "ImportExportConfiguration")) {
5312  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5313  if (text == NULL) {
5314  continue;
5315  }
5317  xmlFree(text);
5318  } else if (element_equal(child_node, "LibraryId")) {
5319  response->library_id = xml_get_string(doc, child_node);
5320  } else if (element_equal(child_node, "MinimumReadReservedDrives")) {
5321  response->minimum_read_reserved_drives = xml_get_uint16(doc, child_node);
5322  } else if (element_equal(child_node, "MinimumWriteReservedDrives")) {
5323  response->minimum_write_reserved_drives = xml_get_uint16(doc, child_node);
5324  } else if (element_equal(child_node, "Name")) {
5325  response->name = xml_get_string(doc, child_node);
5326  } else if (element_equal(child_node, "Quiesced")) {
5327  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5328  if (text == NULL) {
5329  continue;
5330  }
5331  response->quiesced = _match_ds3_quiesced(client->log, text);
5332  xmlFree(text);
5333  } else if (element_equal(child_node, "SerialNumber")) {
5334  response->serial_number = xml_get_string(doc, child_node);
5335  } else if (element_equal(child_node, "State")) {
5336  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5337  if (text == NULL) {
5338  continue;
5339  }
5340  response->state = _match_ds3_tape_partition_state(client->log, text);
5341  xmlFree(text);
5342  } else if (element_equal(child_node, "TapeTypes")) {
5343  xmlNodePtr loop_node;
5344  GPtrArray* tape_types_array = g_ptr_array_new();
5345  int num_nodes = 0;
5346  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
5347  ds3_str* tape_types = xml_get_string(doc, loop_node);
5348  g_ptr_array_add(tape_types_array, tape_types);
5349  }
5350  response->tape_types = (ds3_str**)tape_types_array->pdata;
5351  response->num_tape_types = tape_types_array->len;
5352  g_ptr_array_free(tape_types_array, FALSE);
5353  } else {
5354  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_named_detailed_tape_partition_response [%s]\n", child_node->name, root->name);
5355  }
5356 
5357  if (error != NULL) {
5358  break;
5359  }
5360 
5361  }
5362 
5363  response->tape_types = (ds3_str**)tape_types_array->pdata;
5364  response->num_tape_types = tape_types_array->len;
5365  g_ptr_array_free(tape_types_array, FALSE);
5366 
5367  if (error == NULL) {
5368  *_response = response;
5369  } else {
5371  }
5372 
5373  return error;
5374 }
5375 
5376 static ds3_error* _parse_ds3_tape_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_failure_response** _response) {
5377  ds3_tape_failure_response* response;
5378  xmlNodePtr child_node;
5379  ds3_error* error = NULL;
5380 
5381  response = g_new0(ds3_tape_failure_response, 1);
5382 
5383 
5384  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5385  if (element_equal(child_node, "Cause")) {
5386  response->cause = xml_get_string(doc, child_node);
5387  } else if (element_equal(child_node, "Tape")) {
5388  error = _parse_ds3_tape_response(client, doc, child_node, &response->tape);
5389  } else {
5390  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_response [%s]\n", child_node->name, root->name);
5391  }
5392 
5393  if (error != NULL) {
5394  break;
5395  }
5396 
5397  }
5398 
5399 
5400  if (error == NULL) {
5401  *_response = response;
5402  } else {
5404  }
5405 
5406  return error;
5407 }
5408 
5409 static ds3_error* _parse_ds3_type_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_type_response** _response) {
5410  ds3_type_response* response;
5411  xmlNodePtr child_node;
5412  ds3_error* error = NULL;
5413 
5414  response = g_new0(ds3_type_response, 1);
5415 
5416 
5417  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5418  if (element_equal(child_node, "BeansRetrieverName")) {
5419  response->beans_retriever_name = xml_get_string(doc, child_node);
5420  } else if (element_equal(child_node, "DomainName")) {
5421  response->domain_name = xml_get_string(doc, child_node);
5422  } else if (element_equal(child_node, "NumberOfType")) {
5423  response->number_of_type = xml_get_uint16(doc, child_node);
5424  } else {
5425  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_type_response [%s]\n", child_node->name, root->name);
5426  }
5427 
5428  if (error != NULL) {
5429  break;
5430  }
5431 
5432  }
5433 
5434 
5435  *_response = response;
5436 
5437  return error;
5438 }
5439 
5440 static ds3_error* _parse_ds3_physical_placement_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_physical_placement_response** _response) {
5442  xmlNodePtr child_node;
5443  ds3_error* error = NULL;
5444 
5445  response = g_new0(ds3_physical_placement_response, 1);
5446 
5447 
5448  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5449  if (element_equal(child_node, "AzureTargets")) {
5450  GPtrArray* azure_targets_array;
5451  error = _parse_ds3_azure_target_response_array(client, doc, child_node, &azure_targets_array);
5452  response->azure_targets = (ds3_azure_target_response**)azure_targets_array->pdata;
5453  response->num_azure_targets = azure_targets_array->len;
5454  g_ptr_array_free(azure_targets_array, FALSE);
5455  } else if (element_equal(child_node, "Ds3Targets")) {
5456  GPtrArray* ds3_targets_array;
5457  error = _parse_ds3_target_response_array(client, doc, child_node, &ds3_targets_array);
5458  response->ds3_targets = (ds3_target_response**)ds3_targets_array->pdata;
5459  response->num_ds3_targets = ds3_targets_array->len;
5460  g_ptr_array_free(ds3_targets_array, FALSE);
5461  } else if (element_equal(child_node, "Pools")) {
5462  GPtrArray* pools_array;
5463  error = _parse_ds3_pool_response_array(client, doc, child_node, &pools_array);
5464  response->pools = (ds3_pool_response**)pools_array->pdata;
5465  response->num_pools = pools_array->len;
5466  g_ptr_array_free(pools_array, FALSE);
5467  } else if (element_equal(child_node, "S3Targets")) {
5468  GPtrArray* s3_targets_array;
5469  error = _parse_ds3_s3_target_response_array(client, doc, child_node, &s3_targets_array);
5470  response->s3_targets = (ds3_s3_target_response**)s3_targets_array->pdata;
5471  response->num_s3_targets = s3_targets_array->len;
5472  g_ptr_array_free(s3_targets_array, FALSE);
5473  } else if (element_equal(child_node, "Tapes")) {
5474  GPtrArray* tapes_array;
5475  error = _parse_ds3_tape_response_array(client, doc, child_node, &tapes_array);
5476  response->tapes = (ds3_tape_response**)tapes_array->pdata;
5477  response->num_tapes = tapes_array->len;
5478  g_ptr_array_free(tapes_array, FALSE);
5479  } else {
5480  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_physical_placement_response [%s]\n", child_node->name, root->name);
5481  }
5482 
5483  if (error != NULL) {
5484  break;
5485  }
5486 
5487  }
5488 
5489 
5490  if (error == NULL) {
5491  *_response = response;
5492  } else {
5494  }
5495 
5496  return error;
5497 }
5498 
5499 static ds3_error* _parse_ds3_bulk_object_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bulk_object_response** _response) {
5500  ds3_bulk_object_response* response;
5501  struct _xmlAttr* attribute;
5502  xmlNodePtr child_node;
5503  ds3_error* error = NULL;
5504 
5505  response = g_new0(ds3_bulk_object_response, 1);
5506 
5507  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
5508  if (attribute_equal(attribute, "Bucket") == true) {
5509  response->bucket = xml_get_string_from_attribute(doc, attribute);
5510  } else if (attribute_equal(attribute, "Id") == true) {
5511  response->id = xml_get_string_from_attribute(doc, attribute);
5512  } else if (attribute_equal(attribute, "InCache") == true) {
5513  response->in_cache = xml_get_bool_from_attribute(client->log, doc, attribute);
5514  } else if (attribute_equal(attribute, "Latest") == true) {
5515  response->latest = xml_get_bool_from_attribute(client->log, doc, attribute);
5516  } else if (attribute_equal(attribute, "Length") == true) {
5517  response->length = xml_get_uint64_from_attribute(doc, attribute);
5518  } else if (attribute_equal(attribute, "Name") == true) {
5519  response->name = xml_get_string_from_attribute(doc, attribute);
5520  } else if (attribute_equal(attribute, "Offset") == true) {
5521  response->offset = xml_get_uint64_from_attribute(doc, attribute);
5522  } else if (attribute_equal(attribute, "VersionId") == true) {
5523  response->version_id = xml_get_string_from_attribute(doc, attribute);
5524  } else {
5525  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_bulk_object_response [%s]\n", attribute->name, root->name);
5526  }
5527 
5528  if (error != NULL) {
5529  break;
5530  }
5531 
5532  }
5533 
5534  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5535  if (element_equal(child_node, "PhysicalPlacement")) {
5536  error = _parse_ds3_physical_placement_response(client, doc, child_node, &response->physical_placement);
5537  } else {
5538  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bulk_object_response [%s]\n", child_node->name, root->name);
5539  }
5540 
5541  if (error != NULL) {
5542  break;
5543  }
5544 
5545  }
5546 
5547 
5548  if (error == NULL) {
5549  *_response = response;
5550  } else {
5552  }
5553 
5554  return error;
5555 }
5556 
5557 static ds3_error* _parse_ds3_bulk_object_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5558  ds3_error* error = NULL;
5559  xmlNodePtr child_node;
5560  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
5561 
5562  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5563  ds3_bulk_object_response* response = NULL;
5564  error = _parse_ds3_bulk_object_response(client, doc, child_node, &response);
5565  g_ptr_array_add(ds3_bulk_object_response_array, response);
5566 
5567  if (error != NULL) {
5568  break;
5569  }
5570  }
5571 
5572  *_response = ds3_bulk_object_response_array;
5573 
5574  return error;
5575 }
5576 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) {
5578  xmlNodePtr child_node;
5579  ds3_error* error = NULL;
5580  GPtrArray* objects_array = g_ptr_array_new();
5581 
5582  response = g_new0(ds3_bulk_object_list_response, 1);
5583 
5584 
5585  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5586  if (element_equal(child_node, "Object")) {
5587  ds3_bulk_object_response* objects_response = NULL;
5588  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
5589  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
5590  g_ptr_array_add(objects_array, objects_response);
5591  } else {
5592  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bulk_object_list_response [%s]\n", child_node->name, root->name);
5593  }
5594 
5595  if (error != NULL) {
5596  break;
5597  }
5598 
5599  }
5600 
5601  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
5602  response->num_objects = objects_array->len;
5603  g_ptr_array_free(objects_array, FALSE);
5604 
5605  if (error == NULL) {
5606  *_response = response;
5607  } else {
5609  }
5610 
5611  return error;
5612 }
5613 
5614 static ds3_error* _parse_ds3_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_response** _response) {
5615  ds3_job_response* response;
5616  struct _xmlAttr* attribute;
5617  xmlNodePtr child_node;
5618  ds3_error* error = NULL;
5619 
5620  response = g_new0(ds3_job_response, 1);
5621 
5622  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
5623  if (attribute_equal(attribute, "Aggregating") == true) {
5624  response->aggregating = xml_get_bool_from_attribute(client->log, doc, attribute);
5625  } else if (attribute_equal(attribute, "BucketName") == true) {
5626  response->bucket_name = xml_get_string_from_attribute(doc, attribute);
5627  } else if (attribute_equal(attribute, "CachedSizeInBytes") == true) {
5628  response->cached_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
5629  } else if (attribute_equal(attribute, "ChunkClientProcessingOrderGuarantee") == true) {
5630  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
5631  if (text == NULL) {
5632  continue;
5633  }
5635  xmlFree(text);
5636  } else if (attribute_equal(attribute, "CompletedSizeInBytes") == true) {
5637  response->completed_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
5638  } else if (attribute_equal(attribute, "EntirelyInCache") == true) {
5639  response->entirely_in_cache = xml_get_bool_from_attribute(client->log, doc, attribute);
5640  } else if (attribute_equal(attribute, "JobId") == true) {
5641  response->job_id = xml_get_string_from_attribute(doc, attribute);
5642  } else if (attribute_equal(attribute, "Naked") == true) {
5643  response->naked = xml_get_bool_from_attribute(client->log, doc, attribute);
5644  } else if (attribute_equal(attribute, "Name") == true) {
5645  response->name = xml_get_string_from_attribute(doc, attribute);
5646  } else if (attribute_equal(attribute, "OriginalSizeInBytes") == true) {
5647  response->original_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
5648  } else if (attribute_equal(attribute, "Priority") == true) {
5649  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
5650  if (text == NULL) {
5651  continue;
5652  }
5653  response->priority = _match_ds3_priority(client->log, text);
5654  xmlFree(text);
5655  } else if (attribute_equal(attribute, "RequestType") == true) {
5656  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
5657  if (text == NULL) {
5658  continue;
5659  }
5660  response->request_type = _match_ds3_job_request_type(client->log, text);
5661  xmlFree(text);
5662  } else if (attribute_equal(attribute, "StartDate") == true) {
5663  response->start_date = xml_get_string_from_attribute(doc, attribute);
5664  } else if (attribute_equal(attribute, "Status") == true) {
5665  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
5666  if (text == NULL) {
5667  continue;
5668  }
5669  response->status = _match_ds3_job_status(client->log, text);
5670  xmlFree(text);
5671  } else if (attribute_equal(attribute, "UserId") == true) {
5672  response->user_id = xml_get_string_from_attribute(doc, attribute);
5673  } else if (attribute_equal(attribute, "UserName") == true) {
5674  response->user_name = xml_get_string_from_attribute(doc, attribute);
5675  } else {
5676  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_job_response [%s]\n", attribute->name, root->name);
5677  }
5678 
5679  if (error != NULL) {
5680  break;
5681  }
5682 
5683  }
5684 
5685  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5686  if (element_equal(child_node, "Nodes")) {
5687  GPtrArray* nodes_array;
5688  error = _parse_ds3_job_node_response_array(client, doc, child_node, &nodes_array);
5689  response->nodes = (ds3_job_node_response**)nodes_array->pdata;
5690  response->num_nodes = nodes_array->len;
5691  g_ptr_array_free(nodes_array, FALSE);
5692  } else {
5693  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_response [%s]\n", child_node->name, root->name);
5694  }
5695 
5696  if (error != NULL) {
5697  break;
5698  }
5699 
5700  }
5701 
5702 
5703  if (error == NULL) {
5704  *_response = response;
5705  } else {
5706  ds3_job_response_free(response);
5707  }
5708 
5709  return error;
5710 }
5711 
5712 static ds3_error* _parse_ds3_job_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5713  ds3_error* error = NULL;
5714  xmlNodePtr child_node;
5715  GPtrArray* ds3_job_response_array = g_ptr_array_new();
5716 
5717  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5718  ds3_job_response* response = NULL;
5719  error = _parse_ds3_job_response(client, doc, child_node, &response);
5720  g_ptr_array_add(ds3_job_response_array, response);
5721 
5722  if (error != NULL) {
5723  break;
5724  }
5725  }
5726 
5727  *_response = ds3_job_response_array;
5728 
5729  return error;
5730 }
5731 static ds3_error* _parse_ds3_objects_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_objects_response** _response) {
5732  ds3_objects_response* response;
5733  struct _xmlAttr* attribute;
5734  xmlNodePtr child_node;
5735  ds3_error* error = NULL;
5736  GPtrArray* objects_array = g_ptr_array_new();
5737 
5738  response = g_new0(ds3_objects_response, 1);
5739 
5740  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
5741  if (attribute_equal(attribute, "ChunkId") == true) {
5742  response->chunk_id = xml_get_string_from_attribute(doc, attribute);
5743  } else if (attribute_equal(attribute, "ChunkNumber") == true) {
5744  response->chunk_number = xml_get_uint16_from_attribute(doc, attribute);
5745  } else if (attribute_equal(attribute, "NodeId") == true) {
5746  response->node_id = xml_get_string_from_attribute(doc, attribute);
5747  } else {
5748  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_objects_response [%s]\n", attribute->name, root->name);
5749  }
5750 
5751  if (error != NULL) {
5752  break;
5753  }
5754 
5755  }
5756 
5757  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5758  if (element_equal(child_node, "Object")) {
5759  ds3_bulk_object_response* objects_response = NULL;
5760  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
5761  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
5762  g_ptr_array_add(objects_array, objects_response);
5763  } else {
5764  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_objects_response [%s]\n", child_node->name, root->name);
5765  }
5766 
5767  if (error != NULL) {
5768  break;
5769  }
5770 
5771  }
5772 
5773  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
5774  response->num_objects = objects_array->len;
5775  g_ptr_array_free(objects_array, FALSE);
5776 
5777  if (error == NULL) {
5778  *_response = response;
5779  } else {
5780  ds3_objects_response_free(response);
5781  }
5782 
5783  return error;
5784 }
5785 
5786 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) {
5788  xmlNodePtr child_node;
5789  ds3_error* error = NULL;
5790 
5791  response = g_new0(ds3_multi_part_upload_response, 1);
5792 
5793 
5794  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5795  if (element_equal(child_node, "Initiated")) {
5796  response->initiated = xml_get_string(doc, child_node);
5797  } else if (element_equal(child_node, "Key")) {
5798  response->key = xml_get_string(doc, child_node);
5799  } else if (element_equal(child_node, "Owner")) {
5800  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
5801  } else if (element_equal(child_node, "UploadId")) {
5802  response->upload_id = xml_get_string(doc, child_node);
5803  } else {
5804  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_multi_part_upload_response [%s]\n", child_node->name, root->name);
5805  }
5806 
5807  if (error != NULL) {
5808  break;
5809  }
5810 
5811  }
5812 
5813 
5814  if (error == NULL) {
5815  *_response = response;
5816  } else {
5818  }
5819 
5820  return error;
5821 }
5822 
5823 static ds3_error* _parse_ds3_contents_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_contents_response** _response) {
5824  ds3_contents_response* response;
5825  xmlNodePtr child_node;
5826  ds3_error* error = NULL;
5827 
5828  response = g_new0(ds3_contents_response, 1);
5829 
5830 
5831  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5832  if (element_equal(child_node, "ETag")) {
5833  response->e_tag = xml_get_string(doc, child_node);
5834  } else if (element_equal(child_node, "IsLatest")) {
5835  response->is_latest = xml_get_bool(client->log, doc, child_node);
5836  } else if (element_equal(child_node, "Key")) {
5837  response->key = xml_get_string(doc, child_node);
5838  } else if (element_equal(child_node, "LastModified")) {
5839  response->last_modified = xml_get_string(doc, child_node);
5840  } else if (element_equal(child_node, "Owner")) {
5841  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
5842  } else if (element_equal(child_node, "Size")) {
5843  response->size = xml_get_uint64(doc, child_node);
5844  } else if (element_equal(child_node, "StorageClass")) {
5845  response->storage_class = xml_get_string(doc, child_node);
5846  } else if (element_equal(child_node, "VersionId")) {
5847  response->version_id = xml_get_string(doc, child_node);
5848  } else {
5849  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_contents_response [%s]\n", child_node->name, root->name);
5850  }
5851 
5852  if (error != NULL) {
5853  break;
5854  }
5855 
5856  }
5857 
5858 
5859  if (error == NULL) {
5860  *_response = response;
5861  } else {
5862  ds3_contents_response_free(response);
5863  }
5864 
5865  return error;
5866 }
5867 
5868 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) {
5870  xmlNodePtr child_node;
5871  ds3_error* error = NULL;
5872 
5873  response = g_new0(ds3_detailed_s3_object_response, 1);
5874 
5875 
5876  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5877  if (element_equal(child_node, "Blobs")) {
5878  error = _parse_ds3_bulk_object_list_response(client, doc, child_node, &response->blobs);
5879  } else if (element_equal(child_node, "BlobsBeingPersisted")) {
5880  response->blobs_being_persisted = xml_get_uint16(doc, child_node);
5881  } else if (element_equal(child_node, "BlobsDegraded")) {
5882  response->blobs_degraded = xml_get_uint16(doc, child_node);
5883  } else if (element_equal(child_node, "BlobsInCache")) {
5884  response->blobs_in_cache = xml_get_uint16(doc, child_node);
5885  } else if (element_equal(child_node, "BlobsTotal")) {
5886  response->blobs_total = xml_get_uint16(doc, child_node);
5887  } else if (element_equal(child_node, "BucketId")) {
5888  response->bucket_id = xml_get_string(doc, child_node);
5889  } else if (element_equal(child_node, "CreationDate")) {
5890  response->creation_date = xml_get_string(doc, child_node);
5891  } else if (element_equal(child_node, "ETag")) {
5892  response->e_tag = xml_get_string(doc, child_node);
5893  } else if (element_equal(child_node, "Id")) {
5894  response->id = xml_get_string(doc, child_node);
5895  } else if (element_equal(child_node, "Latest")) {
5896  response->latest = xml_get_bool(client->log, doc, child_node);
5897  } else if (element_equal(child_node, "Name")) {
5898  response->name = xml_get_string(doc, child_node);
5899  } else if (element_equal(child_node, "Owner")) {
5900  response->owner = xml_get_string(doc, child_node);
5901  } else if (element_equal(child_node, "Size")) {
5902  response->size = xml_get_uint64(doc, child_node);
5903  } else if (element_equal(child_node, "Type")) {
5904  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5905  if (text == NULL) {
5906  continue;
5907  }
5908  response->type = _match_ds3_s3_object_type(client->log, text);
5909  xmlFree(text);
5910  } else {
5911  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_s3_object_response [%s]\n", child_node->name, root->name);
5912  }
5913 
5914  if (error != NULL) {
5915  break;
5916  }
5917 
5918  }
5919 
5920 
5921  if (error == NULL) {
5922  *_response = response;
5923  } else {
5925  }
5926 
5927  return error;
5928 }
5929 
5930 
5931 //************ TOP LEVEL STRUCT PARSERS **************
5933  xmlDocPtr doc;
5934  xmlNodePtr root;
5935  xmlNodePtr child_node;
5937  ds3_error* error = NULL;
5938 
5939  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
5940  if (error != NULL) {
5941  return error;
5942  }
5943 
5944  response = g_new0(ds3_azure_data_replication_rule_response, 1);
5945 
5946  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5947  if (element_equal(child_node, "DataPolicyId")) {
5948  response->data_policy_id = xml_get_string(doc, child_node);
5949  } else if (element_equal(child_node, "Id")) {
5950  response->id = xml_get_string(doc, child_node);
5951  } else if (element_equal(child_node, "MaxBlobPartSizeInBytes")) {
5952  response->max_blob_part_size_in_bytes = xml_get_uint64(doc, child_node);
5953  } else if (element_equal(child_node, "ReplicateDeletes")) {
5954  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
5955  } else if (element_equal(child_node, "State")) {
5956  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5957  if (text == NULL) {
5958  continue;
5959  }
5960  response->state = _match_ds3_data_placement_rule_state(client->log, text);
5961  xmlFree(text);
5962  } else if (element_equal(child_node, "TargetId")) {
5963  response->target_id = xml_get_string(doc, child_node);
5964  } else if (element_equal(child_node, "Type")) {
5965  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5966  if (text == NULL) {
5967  continue;
5968  }
5969  response->type = _match_ds3_data_replication_rule_type(client->log, text);
5970  xmlFree(text);
5971  } else {
5972  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_data_replication_rule_response [%s]\n", child_node->name, root->name);
5973  }
5974 
5975  if (error != NULL) {
5976  break;
5977  }
5978 
5979  }
5980 
5981 
5982  xmlFreeDoc(doc);
5983 
5984  if (error == NULL) {
5985  *_response = response;
5986  } else {
5988  }
5989 
5990  return error;
5991 }
5992 static ds3_error* _parse_top_level_ds3_bucket_response(const ds3_client* client, const ds3_request* request, ds3_bucket_response** _response, GByteArray* xml_blob) {
5993  xmlDocPtr doc;
5994  xmlNodePtr root;
5995  xmlNodePtr child_node;
5996  ds3_bucket_response* response;
5997  ds3_error* error = NULL;
5998 
5999  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6000  if (error != NULL) {
6001  return error;
6002  }
6003 
6004  response = g_new0(ds3_bucket_response, 1);
6005 
6006  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6007  if (element_equal(child_node, "CreationDate")) {
6008  response->creation_date = xml_get_string(doc, child_node);
6009  } else if (element_equal(child_node, "DataPolicyId")) {
6010  response->data_policy_id = xml_get_string(doc, child_node);
6011  } else if (element_equal(child_node, "Empty")) {
6012  response->empty = xml_get_bool(client->log, doc, child_node);
6013  } else if (element_equal(child_node, "Id")) {
6014  response->id = xml_get_string(doc, child_node);
6015  } else if (element_equal(child_node, "LastPreferredChunkSizeInBytes")) {
6016  response->last_preferred_chunk_size_in_bytes = xml_get_uint64(doc, child_node);
6017  } else if (element_equal(child_node, "LogicalUsedCapacity")) {
6018  response->logical_used_capacity = xml_get_uint64(doc, child_node);
6019  } else if (element_equal(child_node, "Name")) {
6020  response->name = xml_get_string(doc, child_node);
6021  } else if (element_equal(child_node, "UserId")) {
6022  response->user_id = xml_get_string(doc, child_node);
6023  } else {
6024  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_response [%s]\n", child_node->name, root->name);
6025  }
6026 
6027  if (error != NULL) {
6028  break;
6029  }
6030 
6031  }
6032 
6033 
6034  xmlFreeDoc(doc);
6035 
6036  if (error == NULL) {
6037  *_response = response;
6038  } else {
6039  ds3_bucket_response_free(response);
6040  }
6041 
6042  return error;
6043 }
6044 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) {
6045  xmlDocPtr doc;
6046  xmlNodePtr root;
6047  xmlNodePtr child_node;
6048  ds3_bucket_acl_response* response;
6049  ds3_error* error = NULL;
6050 
6051  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6052  if (error != NULL) {
6053  return error;
6054  }
6055 
6056  response = g_new0(ds3_bucket_acl_response, 1);
6057 
6058  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6059  if (element_equal(child_node, "BucketId")) {
6060  response->bucket_id = xml_get_string(doc, child_node);
6061  } else if (element_equal(child_node, "GroupId")) {
6062  response->group_id = xml_get_string(doc, child_node);
6063  } else if (element_equal(child_node, "Id")) {
6064  response->id = xml_get_string(doc, child_node);
6065  } else if (element_equal(child_node, "Permission")) {
6066  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6067  if (text == NULL) {
6068  continue;
6069  }
6070  response->permission = _match_ds3_bucket_acl_permission(client->log, text);
6071  xmlFree(text);
6072  } else if (element_equal(child_node, "UserId")) {
6073  response->user_id = xml_get_string(doc, child_node);
6074  } else {
6075  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_acl_response [%s]\n", child_node->name, root->name);
6076  }
6077 
6078  if (error != NULL) {
6079  break;
6080  }
6081 
6082  }
6083 
6084 
6085  xmlFreeDoc(doc);
6086 
6087  if (error == NULL) {
6088  *_response = response;
6089  } else {
6090  ds3_bucket_acl_response_free(response);
6091  }
6092 
6093  return error;
6094 }
6095 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) {
6096  xmlDocPtr doc;
6097  xmlNodePtr root;
6098  xmlNodePtr child_node;
6099  ds3_canceled_job_response* response;
6100  ds3_error* error = NULL;
6101 
6102  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6103  if (error != NULL) {
6104  return error;
6105  }
6106 
6107  response = g_new0(ds3_canceled_job_response, 1);
6108 
6109  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6110  if (element_equal(child_node, "BucketId")) {
6111  response->bucket_id = xml_get_string(doc, child_node);
6112  } else if (element_equal(child_node, "CachedSizeInBytes")) {
6113  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
6114  } else if (element_equal(child_node, "CanceledDueToTimeout")) {
6115  response->canceled_due_to_timeout = xml_get_bool(client->log, doc, child_node);
6116  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
6117  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6118  if (text == NULL) {
6119  continue;
6120  }
6122  xmlFree(text);
6123  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
6124  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
6125  } else if (element_equal(child_node, "CreatedAt")) {
6126  response->created_at = xml_get_string(doc, child_node);
6127  } else if (element_equal(child_node, "DateCanceled")) {
6128  response->date_canceled = xml_get_string(doc, child_node);
6129  } else if (element_equal(child_node, "ErrorMessage")) {
6130  response->error_message = xml_get_string(doc, child_node);
6131  } else if (element_equal(child_node, "Id")) {
6132  response->id = xml_get_string(doc, child_node);
6133  } else if (element_equal(child_node, "Naked")) {
6134  response->naked = xml_get_bool(client->log, doc, child_node);
6135  } else if (element_equal(child_node, "Name")) {
6136  response->name = xml_get_string(doc, child_node);
6137  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
6138  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
6139  } else if (element_equal(child_node, "Priority")) {
6140  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6141  if (text == NULL) {
6142  continue;
6143  }
6144  response->priority = _match_ds3_priority(client->log, text);
6145  xmlFree(text);
6146  } else if (element_equal(child_node, "Rechunked")) {
6147  response->rechunked = xml_get_string(doc, child_node);
6148  } else if (element_equal(child_node, "RequestType")) {
6149  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6150  if (text == NULL) {
6151  continue;
6152  }
6153  response->request_type = _match_ds3_job_request_type(client->log, text);
6154  xmlFree(text);
6155  } else if (element_equal(child_node, "Truncated")) {
6156  response->truncated = xml_get_bool(client->log, doc, child_node);
6157  } else if (element_equal(child_node, "UserId")) {
6158  response->user_id = xml_get_string(doc, child_node);
6159  } else {
6160  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_canceled_job_response [%s]\n", child_node->name, root->name);
6161  }
6162 
6163  if (error != NULL) {
6164  break;
6165  }
6166 
6167  }
6168 
6169 
6170  xmlFreeDoc(doc);
6171 
6172  if (error == NULL) {
6173  *_response = response;
6174  } else {
6176  }
6177 
6178  return error;
6179 }
6180 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) {
6181  xmlDocPtr doc;
6182  xmlNodePtr root;
6183  xmlNodePtr child_node;
6184  ds3_completed_job_response* response;
6185  ds3_error* error = NULL;
6186 
6187  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6188  if (error != NULL) {
6189  return error;
6190  }
6191 
6192  response = g_new0(ds3_completed_job_response, 1);
6193 
6194  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6195  if (element_equal(child_node, "BucketId")) {
6196  response->bucket_id = xml_get_string(doc, child_node);
6197  } else if (element_equal(child_node, "CachedSizeInBytes")) {
6198  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
6199  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
6200  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6201  if (text == NULL) {
6202  continue;
6203  }
6205  xmlFree(text);
6206  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
6207  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
6208  } else if (element_equal(child_node, "CreatedAt")) {
6209  response->created_at = xml_get_string(doc, child_node);
6210  } else if (element_equal(child_node, "DateCompleted")) {
6211  response->date_completed = xml_get_string(doc, child_node);
6212  } else if (element_equal(child_node, "ErrorMessage")) {
6213  response->error_message = xml_get_string(doc, child_node);
6214  } else if (element_equal(child_node, "Id")) {
6215  response->id = xml_get_string(doc, child_node);
6216  } else if (element_equal(child_node, "Naked")) {
6217  response->naked = xml_get_bool(client->log, doc, child_node);
6218  } else if (element_equal(child_node, "Name")) {
6219  response->name = xml_get_string(doc, child_node);
6220  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
6221  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
6222  } else if (element_equal(child_node, "Priority")) {
6223  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6224  if (text == NULL) {
6225  continue;
6226  }
6227  response->priority = _match_ds3_priority(client->log, text);
6228  xmlFree(text);
6229  } else if (element_equal(child_node, "Rechunked")) {
6230  response->rechunked = xml_get_string(doc, child_node);
6231  } else if (element_equal(child_node, "RequestType")) {
6232  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6233  if (text == NULL) {
6234  continue;
6235  }
6236  response->request_type = _match_ds3_job_request_type(client->log, text);
6237  xmlFree(text);
6238  } else if (element_equal(child_node, "Truncated")) {
6239  response->truncated = xml_get_bool(client->log, doc, child_node);
6240  } else if (element_equal(child_node, "UserId")) {
6241  response->user_id = xml_get_string(doc, child_node);
6242  } else {
6243  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_completed_job_response [%s]\n", child_node->name, root->name);
6244  }
6245 
6246  if (error != NULL) {
6247  break;
6248  }
6249 
6250  }
6251 
6252 
6253  xmlFreeDoc(doc);
6254 
6255  if (error == NULL) {
6256  *_response = response;
6257  } else {
6259  }
6260 
6261  return error;
6262 }
6263 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) {
6264  xmlDocPtr doc;
6265  xmlNodePtr root;
6266  xmlNodePtr child_node;
6268  ds3_error* error = NULL;
6269 
6270  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6271  if (error != NULL) {
6272  return error;
6273  }
6274 
6275  response = g_new0(ds3_data_path_backend_response, 1);
6276 
6277  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6278  if (element_equal(child_node, "Activated")) {
6279  response->activated = xml_get_bool(client->log, doc, child_node);
6280  } else if (element_equal(child_node, "AllowNewJobRequests")) {
6281  response->allow_new_job_requests = xml_get_bool(client->log, doc, child_node);
6282  } else if (element_equal(child_node, "AutoActivateTimeoutInMins")) {
6283  response->auto_activate_timeout_in_mins = xml_get_uint16(doc, child_node);
6284  } else if (element_equal(child_node, "AutoInspect")) {
6285  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6286  if (text == NULL) {
6287  continue;
6288  }
6289  response->auto_inspect = _match_ds3_auto_inspect_mode(client->log, text);
6290  xmlFree(text);
6291  } else if (element_equal(child_node, "CacheAvailableRetryAfterInSeconds")) {
6292  response->cache_available_retry_after_in_seconds = xml_get_uint16(doc, child_node);
6293  } else if (element_equal(child_node, "DefaultVerifyDataAfterImport")) {
6294  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6295  if (text == NULL) {
6296  continue;
6297  }
6298  response->default_verify_data_after_import = _match_ds3_priority(client->log, text);
6299  xmlFree(text);
6300  } else if (element_equal(child_node, "DefaultVerifyDataPriorToImport")) {
6301  response->default_verify_data_prior_to_import = xml_get_bool(client->log, doc, child_node);
6302  } else if (element_equal(child_node, "Id")) {
6303  response->id = xml_get_string(doc, child_node);
6304  } else if (element_equal(child_node, "InstanceId")) {
6305  response->instance_id = xml_get_string(doc, child_node);
6306  } else if (element_equal(child_node, "IomEnabled")) {
6307  response->iom_enabled = xml_get_bool(client->log, doc, child_node);
6308  } else if (element_equal(child_node, "LastHeartbeat")) {
6309  response->last_heartbeat = xml_get_string(doc, child_node);
6310  } else if (element_equal(child_node, "PartiallyVerifyLastPercentOfTapes")) {
6311  response->partially_verify_last_percent_of_tapes = xml_get_uint16(doc, child_node);
6312  } else if (element_equal(child_node, "UnavailableMediaPolicy")) {
6313  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6314  if (text == NULL) {
6315  continue;
6316  }
6318  xmlFree(text);
6319  } else if (element_equal(child_node, "UnavailablePoolMaxJobRetryInMins")) {
6320  response->unavailable_pool_max_job_retry_in_mins = xml_get_uint16(doc, child_node);
6321  } else if (element_equal(child_node, "UnavailableTapePartitionMaxJobRetryInMins")) {
6323  } else {
6324  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_path_backend_response [%s]\n", child_node->name, root->name);
6325  }
6326 
6327  if (error != NULL) {
6328  break;
6329  }
6330 
6331  }
6332 
6333 
6334  xmlFreeDoc(doc);
6335 
6336  if (error == NULL) {
6337  *_response = response;
6338  } else {
6340  }
6341 
6342  return error;
6343 }
6344 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) {
6345  xmlDocPtr doc;
6346  xmlNodePtr root;
6347  xmlNodePtr child_node;
6349  ds3_error* error = NULL;
6350 
6351  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6352  if (error != NULL) {
6353  return error;
6354  }
6355 
6356  response = g_new0(ds3_data_persistence_rule_response, 1);
6357 
6358  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6359  if (element_equal(child_node, "DataPolicyId")) {
6360  response->data_policy_id = xml_get_string(doc, child_node);
6361  } else if (element_equal(child_node, "Id")) {
6362  response->id = xml_get_string(doc, child_node);
6363  } else if (element_equal(child_node, "IsolationLevel")) {
6364  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6365  if (text == NULL) {
6366  continue;
6367  }
6368  response->isolation_level = _match_ds3_data_isolation_level(client->log, text);
6369  xmlFree(text);
6370  } else if (element_equal(child_node, "MinimumDaysToRetain")) {
6371  response->minimum_days_to_retain = xml_get_uint16(doc, child_node);
6372  } else if (element_equal(child_node, "State")) {
6373  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6374  if (text == NULL) {
6375  continue;
6376  }
6377  response->state = _match_ds3_data_placement_rule_state(client->log, text);
6378  xmlFree(text);
6379  } else if (element_equal(child_node, "StorageDomainId")) {
6380  response->storage_domain_id = xml_get_string(doc, child_node);
6381  } else if (element_equal(child_node, "Type")) {
6382  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6383  if (text == NULL) {
6384  continue;
6385  }
6386  response->type = _match_ds3_data_persistence_rule_type(client->log, text);
6387  xmlFree(text);
6388  } else {
6389  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_persistence_rule_response [%s]\n", child_node->name, root->name);
6390  }
6391 
6392  if (error != NULL) {
6393  break;
6394  }
6395 
6396  }
6397 
6398 
6399  xmlFreeDoc(doc);
6400 
6401  if (error == NULL) {
6402  *_response = response;
6403  } else {
6405  }
6406 
6407  return error;
6408 }
6409 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) {
6410  xmlDocPtr doc;
6411  xmlNodePtr root;
6412  xmlNodePtr child_node;
6413  ds3_data_policy_response* response;
6414  ds3_error* error = NULL;
6415 
6416  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6417  if (error != NULL) {
6418  return error;
6419  }
6420 
6421  response = g_new0(ds3_data_policy_response, 1);
6422 
6423  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6424  if (element_equal(child_node, "AlwaysForcePutJobCreation")) {
6425  response->always_force_put_job_creation = xml_get_bool(client->log, doc, child_node);
6426  } else if (element_equal(child_node, "AlwaysMinimizeSpanningAcrossMedia")) {
6427  response->always_minimize_spanning_across_media = xml_get_bool(client->log, doc, child_node);
6428  } else if (element_equal(child_node, "BlobbingEnabled")) {
6429  response->blobbing_enabled = xml_get_bool(client->log, doc, child_node);
6430  } else if (element_equal(child_node, "ChecksumType")) {
6431  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6432  if (text == NULL) {
6433  continue;
6434  }
6435  response->checksum_type = _match_ds3_checksum_type(client->log, text);
6436  xmlFree(text);
6437  } else if (element_equal(child_node, "CreationDate")) {
6438  response->creation_date = xml_get_string(doc, child_node);
6439  } else if (element_equal(child_node, "DefaultBlobSize")) {
6440  response->default_blob_size = xml_get_uint64(doc, child_node);
6441  } else if (element_equal(child_node, "DefaultGetJobPriority")) {
6442  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6443  if (text == NULL) {
6444  continue;
6445  }
6446  response->default_get_job_priority = _match_ds3_priority(client->log, text);
6447  xmlFree(text);
6448  } else if (element_equal(child_node, "DefaultPutJobPriority")) {
6449  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6450  if (text == NULL) {
6451  continue;
6452  }
6453  response->default_put_job_priority = _match_ds3_priority(client->log, text);
6454  xmlFree(text);
6455  } else if (element_equal(child_node, "DefaultVerifyAfterWrite")) {
6456  response->default_verify_after_write = xml_get_bool(client->log, doc, child_node);
6457  } else if (element_equal(child_node, "DefaultVerifyJobPriority")) {
6458  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6459  if (text == NULL) {
6460  continue;
6461  }
6462  response->default_verify_job_priority = _match_ds3_priority(client->log, text);
6463  xmlFree(text);
6464  } else if (element_equal(child_node, "EndToEndCrcRequired")) {
6465  response->end_to_end_crc_required = xml_get_bool(client->log, doc, child_node);
6466  } else if (element_equal(child_node, "Id")) {
6467  response->id = xml_get_string(doc, child_node);
6468  } else if (element_equal(child_node, "MaxVersionsToKeep")) {
6469  response->max_versions_to_keep = xml_get_uint16(doc, child_node);
6470  } else if (element_equal(child_node, "Name")) {
6471  response->name = xml_get_string(doc, child_node);
6472  } else if (element_equal(child_node, "RebuildPriority")) {
6473  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6474  if (text == NULL) {
6475  continue;
6476  }
6477  response->rebuild_priority = _match_ds3_priority(client->log, text);
6478  xmlFree(text);
6479  } else if (element_equal(child_node, "Versioning")) {
6480  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6481  if (text == NULL) {
6482  continue;
6483  }
6484  response->versioning = _match_ds3_versioning_level(client->log, text);
6485  xmlFree(text);
6486  } else {
6487  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_response [%s]\n", child_node->name, root->name);
6488  }
6489 
6490  if (error != NULL) {
6491  break;
6492  }
6493 
6494  }
6495 
6496 
6497  xmlFreeDoc(doc);
6498 
6499  if (error == NULL) {
6500  *_response = response;
6501  } else {
6503  }
6504 
6505  return error;
6506 }
6507 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) {
6508  xmlDocPtr doc;
6509  xmlNodePtr root;
6510  xmlNodePtr child_node;
6511  ds3_data_policy_acl_response* response;
6512  ds3_error* error = NULL;
6513 
6514  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6515  if (error != NULL) {
6516  return error;
6517  }
6518 
6519  response = g_new0(ds3_data_policy_acl_response, 1);
6520 
6521  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6522  if (element_equal(child_node, "DataPolicyId")) {
6523  response->data_policy_id = xml_get_string(doc, child_node);
6524  } else if (element_equal(child_node, "GroupId")) {
6525  response->group_id = xml_get_string(doc, child_node);
6526  } else if (element_equal(child_node, "Id")) {
6527  response->id = xml_get_string(doc, child_node);
6528  } else if (element_equal(child_node, "UserId")) {
6529  response->user_id = xml_get_string(doc, child_node);
6530  } else {
6531  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_acl_response [%s]\n", child_node->name, root->name);
6532  }
6533 
6534  if (error != NULL) {
6535  break;
6536  }
6537 
6538  }
6539 
6540 
6541  xmlFreeDoc(doc);
6542 
6543  if (error == NULL) {
6544  *_response = response;
6545  } else {
6547  }
6548 
6549  return error;
6550 }
6551 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) {
6552  xmlDocPtr doc;
6553  xmlNodePtr root;
6554  xmlNodePtr child_node;
6556  ds3_error* error = NULL;
6557 
6558  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6559  if (error != NULL) {
6560  return error;
6561  }
6562 
6563  response = g_new0(ds3_data_replication_rule_response, 1);
6564 
6565  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6566  if (element_equal(child_node, "DataPolicyId")) {
6567  response->data_policy_id = xml_get_string(doc, child_node);
6568  } else if (element_equal(child_node, "Id")) {
6569  response->id = xml_get_string(doc, child_node);
6570  } else if (element_equal(child_node, "ReplicateDeletes")) {
6571  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
6572  } else if (element_equal(child_node, "State")) {
6573  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6574  if (text == NULL) {
6575  continue;
6576  }
6577  response->state = _match_ds3_data_placement_rule_state(client->log, text);
6578  xmlFree(text);
6579  } else if (element_equal(child_node, "TargetDataPolicy")) {
6580  response->target_data_policy = xml_get_string(doc, child_node);
6581  } else if (element_equal(child_node, "TargetId")) {
6582  response->target_id = xml_get_string(doc, child_node);
6583  } else if (element_equal(child_node, "Type")) {
6584  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6585  if (text == NULL) {
6586  continue;
6587  }
6588  response->type = _match_ds3_data_replication_rule_type(client->log, text);
6589  xmlFree(text);
6590  } else {
6591  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_replication_rule_response [%s]\n", child_node->name, root->name);
6592  }
6593 
6594  if (error != NULL) {
6595  break;
6596  }
6597 
6598  }
6599 
6600 
6601  xmlFreeDoc(doc);
6602 
6603  if (error == NULL) {
6604  *_response = response;
6605  } else {
6607  }
6608 
6609  return error;
6610 }
6611 static ds3_error* _parse_top_level_ds3_group_response(const ds3_client* client, const ds3_request* request, ds3_group_response** _response, GByteArray* xml_blob) {
6612  xmlDocPtr doc;
6613  xmlNodePtr root;
6614  xmlNodePtr child_node;
6615  ds3_group_response* response;
6616  ds3_error* error = NULL;
6617 
6618  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6619  if (error != NULL) {
6620  return error;
6621  }
6622 
6623  response = g_new0(ds3_group_response, 1);
6624 
6625  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6626  if (element_equal(child_node, "BuiltIn")) {
6627  response->built_in = xml_get_bool(client->log, doc, child_node);
6628  } else if (element_equal(child_node, "Id")) {
6629  response->id = xml_get_string(doc, child_node);
6630  } else if (element_equal(child_node, "Name")) {
6631  response->name = xml_get_string(doc, child_node);
6632  } else {
6633  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_response [%s]\n", child_node->name, root->name);
6634  }
6635 
6636  if (error != NULL) {
6637  break;
6638  }
6639 
6640  }
6641 
6642 
6643  xmlFreeDoc(doc);
6644 
6645  if (error == NULL) {
6646  *_response = response;
6647  } else {
6648  ds3_group_response_free(response);
6649  }
6650 
6651  return error;
6652 }
6653 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) {
6654  xmlDocPtr doc;
6655  xmlNodePtr root;
6656  xmlNodePtr child_node;
6657  ds3_group_member_response* response;
6658  ds3_error* error = NULL;
6659 
6660  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6661  if (error != NULL) {
6662  return error;
6663  }
6664 
6665  response = g_new0(ds3_group_member_response, 1);
6666 
6667  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6668  if (element_equal(child_node, "GroupId")) {
6669  response->group_id = xml_get_string(doc, child_node);
6670  } else if (element_equal(child_node, "Id")) {
6671  response->id = xml_get_string(doc, child_node);
6672  } else if (element_equal(child_node, "MemberGroupId")) {
6673  response->member_group_id = xml_get_string(doc, child_node);
6674  } else if (element_equal(child_node, "MemberUserId")) {
6675  response->member_user_id = xml_get_string(doc, child_node);
6676  } else {
6677  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_member_response [%s]\n", child_node->name, root->name);
6678  }
6679 
6680  if (error != NULL) {
6681  break;
6682  }
6683 
6684  }
6685 
6686 
6687  xmlFreeDoc(doc);
6688 
6689  if (error == NULL) {
6690  *_response = response;
6691  } else {
6693  }
6694 
6695  return error;
6696 }
6697 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) {
6698  xmlDocPtr doc;
6699  xmlNodePtr root;
6700  xmlNodePtr child_node;
6701  ds3_active_job_response* response;
6702  ds3_error* error = NULL;
6703 
6704  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6705  if (error != NULL) {
6706  return error;
6707  }
6708 
6709  response = g_new0(ds3_active_job_response, 1);
6710 
6711  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6712  if (element_equal(child_node, "Aggregating")) {
6713  response->aggregating = xml_get_bool(client->log, doc, child_node);
6714  } else if (element_equal(child_node, "BucketId")) {
6715  response->bucket_id = xml_get_string(doc, child_node);
6716  } else if (element_equal(child_node, "CachedSizeInBytes")) {
6717  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
6718  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
6719  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6720  if (text == NULL) {
6721  continue;
6722  }
6724  xmlFree(text);
6725  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
6726  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
6727  } else if (element_equal(child_node, "CreatedAt")) {
6728  response->created_at = xml_get_string(doc, child_node);
6729  } else if (element_equal(child_node, "DeadJobCleanupAllowed")) {
6730  response->dead_job_cleanup_allowed = xml_get_bool(client->log, doc, child_node);
6731  } else if (element_equal(child_node, "ErrorMessage")) {
6732  response->error_message = xml_get_string(doc, child_node);
6733  } else if (element_equal(child_node, "Id")) {
6734  response->id = xml_get_string(doc, child_node);
6735  } else if (element_equal(child_node, "ImplicitJobIdResolution")) {
6736  response->implicit_job_id_resolution = xml_get_bool(client->log, doc, child_node);
6737  } else if (element_equal(child_node, "MinimizeSpanningAcrossMedia")) {
6738  response->minimize_spanning_across_media = xml_get_bool(client->log, doc, child_node);
6739  } else if (element_equal(child_node, "Naked")) {
6740  response->naked = xml_get_bool(client->log, doc, child_node);
6741  } else if (element_equal(child_node, "Name")) {
6742  response->name = xml_get_string(doc, child_node);
6743  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
6744  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
6745  } else if (element_equal(child_node, "Priority")) {
6746  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6747  if (text == NULL) {
6748  continue;
6749  }
6750  response->priority = _match_ds3_priority(client->log, text);
6751  xmlFree(text);
6752  } else if (element_equal(child_node, "Rechunked")) {
6753  response->rechunked = xml_get_string(doc, child_node);
6754  } else if (element_equal(child_node, "Replicating")) {
6755  response->replicating = xml_get_bool(client->log, doc, child_node);
6756  } else if (element_equal(child_node, "RequestType")) {
6757  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6758  if (text == NULL) {
6759  continue;
6760  }
6761  response->request_type = _match_ds3_job_request_type(client->log, text);
6762  xmlFree(text);
6763  } else if (element_equal(child_node, "Restore")) {
6764  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6765  if (text == NULL) {
6766  continue;
6767  }
6768  response->restore = _match_ds3_job_restore(client->log, text);
6769  xmlFree(text);
6770  } else if (element_equal(child_node, "Truncated")) {
6771  response->truncated = xml_get_bool(client->log, doc, child_node);
6772  } else if (element_equal(child_node, "TruncatedDueToTimeout")) {
6773  response->truncated_due_to_timeout = xml_get_bool(client->log, doc, child_node);
6774  } else if (element_equal(child_node, "UserId")) {
6775  response->user_id = xml_get_string(doc, child_node);
6776  } else if (element_equal(child_node, "VerifyAfterWrite")) {
6777  response->verify_after_write = xml_get_bool(client->log, doc, child_node);
6778  } else {
6779  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_active_job_response [%s]\n", child_node->name, root->name);
6780  }
6781 
6782  if (error != NULL) {
6783  break;
6784  }
6785 
6786  }
6787 
6788 
6789  xmlFreeDoc(doc);
6790 
6791  if (error == NULL) {
6792  *_response = response;
6793  } else {
6794  ds3_active_job_response_free(response);
6795  }
6796 
6797  return error;
6798 }
6799 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) {
6800  xmlDocPtr doc;
6801  xmlNodePtr root;
6802  xmlNodePtr child_node;
6803  ds3_job_chunk_response* response;
6804  ds3_error* error = NULL;
6805 
6806  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6807  if (error != NULL) {
6808  return error;
6809  }
6810 
6811  response = g_new0(ds3_job_chunk_response, 1);
6812 
6813  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6814  if (element_equal(child_node, "BlobStoreState")) {
6815  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6816  if (text == NULL) {
6817  continue;
6818  }
6819  response->blob_store_state = _match_ds3_job_chunk_blob_store_state(client->log, text);
6820  xmlFree(text);
6821  } else if (element_equal(child_node, "ChunkNumber")) {
6822  response->chunk_number = xml_get_uint16(doc, child_node);
6823  } else if (element_equal(child_node, "Id")) {
6824  response->id = xml_get_string(doc, child_node);
6825  } else if (element_equal(child_node, "JobCreationDate")) {
6826  response->job_creation_date = xml_get_string(doc, child_node);
6827  } else if (element_equal(child_node, "JobId")) {
6828  response->job_id = xml_get_string(doc, child_node);
6829  } else if (element_equal(child_node, "NodeId")) {
6830  response->node_id = xml_get_string(doc, child_node);
6831  } else if (element_equal(child_node, "PendingTargetCommit")) {
6832  response->pending_target_commit = xml_get_bool(client->log, doc, child_node);
6833  } else if (element_equal(child_node, "ReadFromAzureTargetId")) {
6834  response->read_from_azure_target_id = xml_get_string(doc, child_node);
6835  } else if (element_equal(child_node, "ReadFromDs3TargetId")) {
6836  response->read_from_ds3_target_id = xml_get_string(doc, child_node);
6837  } else if (element_equal(child_node, "ReadFromPoolId")) {
6838  response->read_from_pool_id = xml_get_string(doc, child_node);
6839  } else if (element_equal(child_node, "ReadFromS3TargetId")) {
6840  response->read_from_s3_target_id = xml_get_string(doc, child_node);
6841  } else if (element_equal(child_node, "ReadFromTapeId")) {
6842  response->read_from_tape_id = xml_get_string(doc, child_node);
6843  } else {
6844  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_chunk_response [%s]\n", child_node->name, root->name);
6845  }
6846 
6847  if (error != NULL) {
6848  break;
6849  }
6850 
6851  }
6852 
6853 
6854  xmlFreeDoc(doc);
6855 
6856  if (error == NULL) {
6857  *_response = response;
6858  } else {
6859  ds3_job_chunk_response_free(response);
6860  }
6861 
6862  return error;
6863 }
6864 static ds3_error* _parse_top_level_ds3_node_response(const ds3_client* client, const ds3_request* request, ds3_node_response** _response, GByteArray* xml_blob) {
6865  xmlDocPtr doc;
6866  xmlNodePtr root;
6867  xmlNodePtr child_node;
6868  ds3_node_response* response;
6869  ds3_error* error = NULL;
6870 
6871  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6872  if (error != NULL) {
6873  return error;
6874  }
6875 
6876  response = g_new0(ds3_node_response, 1);
6877 
6878  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6879  if (element_equal(child_node, "DataPathHttpPort")) {
6880  response->data_path_http_port = xml_get_uint16(doc, child_node);
6881  } else if (element_equal(child_node, "DataPathHttpsPort")) {
6882  response->data_path_https_port = xml_get_uint16(doc, child_node);
6883  } else if (element_equal(child_node, "DataPathIpAddress")) {
6884  response->data_path_ip_address = xml_get_string(doc, child_node);
6885  } else if (element_equal(child_node, "DnsName")) {
6886  response->dns_name = xml_get_string(doc, child_node);
6887  } else if (element_equal(child_node, "Id")) {
6888  response->id = xml_get_string(doc, child_node);
6889  } else if (element_equal(child_node, "LastHeartbeat")) {
6890  response->last_heartbeat = xml_get_string(doc, child_node);
6891  } else if (element_equal(child_node, "Name")) {
6892  response->name = xml_get_string(doc, child_node);
6893  } else if (element_equal(child_node, "SerialNumber")) {
6894  response->serial_number = xml_get_string(doc, child_node);
6895  } else {
6896  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_node_response [%s]\n", child_node->name, root->name);
6897  }
6898 
6899  if (error != NULL) {
6900  break;
6901  }
6902 
6903  }
6904 
6905 
6906  xmlFreeDoc(doc);
6907 
6908  if (error == NULL) {
6909  *_response = response;
6910  } else {
6911  ds3_node_response_free(response);
6912  }
6913 
6914  return error;
6915 }
6917  xmlDocPtr doc;
6918  xmlNodePtr root;
6919  xmlNodePtr child_node;
6921  ds3_error* error = NULL;
6922 
6923  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6924  if (error != NULL) {
6925  return error;
6926  }
6927 
6928  response = g_new0(ds3_s3_data_replication_rule_response, 1);
6929 
6930  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6931  if (element_equal(child_node, "DataPolicyId")) {
6932  response->data_policy_id = xml_get_string(doc, child_node);
6933  } else if (element_equal(child_node, "Id")) {
6934  response->id = xml_get_string(doc, child_node);
6935  } else if (element_equal(child_node, "InitialDataPlacement")) {
6936  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6937  if (text == NULL) {
6938  continue;
6939  }
6941  xmlFree(text);
6942  } else if (element_equal(child_node, "MaxBlobPartSizeInBytes")) {
6943  response->max_blob_part_size_in_bytes = xml_get_uint64(doc, child_node);
6944  } else if (element_equal(child_node, "ReplicateDeletes")) {
6945  response->replicate_deletes = xml_get_bool(client->log, doc, child_node);
6946  } else if (element_equal(child_node, "State")) {
6947  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6948  if (text == NULL) {
6949  continue;
6950  }
6951  response->state = _match_ds3_data_placement_rule_state(client->log, text);
6952  xmlFree(text);
6953  } else if (element_equal(child_node, "TargetId")) {
6954  response->target_id = xml_get_string(doc, child_node);
6955  } else if (element_equal(child_node, "Type")) {
6956  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6957  if (text == NULL) {
6958  continue;
6959  }
6960  response->type = _match_ds3_data_replication_rule_type(client->log, text);
6961  xmlFree(text);
6962  } else {
6963  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_data_replication_rule_response [%s]\n", child_node->name, root->name);
6964  }
6965 
6966  if (error != NULL) {
6967  break;
6968  }
6969 
6970  }
6971 
6972 
6973  xmlFreeDoc(doc);
6974 
6975  if (error == NULL) {
6976  *_response = response;
6977  } else {
6979  }
6980 
6981  return error;
6982 }
6983 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) {
6984  xmlDocPtr doc;
6985  xmlNodePtr root;
6986  xmlNodePtr child_node;
6987  ds3_s3_object_response* response;
6988  ds3_error* error = NULL;
6989 
6990  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
6991  if (error != NULL) {
6992  return error;
6993  }
6994 
6995  response = g_new0(ds3_s3_object_response, 1);
6996 
6997  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6998  if (element_equal(child_node, "BucketId")) {
6999  response->bucket_id = xml_get_string(doc, child_node);
7000  } else if (element_equal(child_node, "CreationDate")) {
7001  response->creation_date = xml_get_string(doc, child_node);
7002  } else if (element_equal(child_node, "Id")) {
7003  response->id = xml_get_string(doc, child_node);
7004  } else if (element_equal(child_node, "Latest")) {
7005  response->latest = xml_get_bool(client->log, doc, child_node);
7006  } else if (element_equal(child_node, "Name")) {
7007  response->name = xml_get_string(doc, child_node);
7008  } else if (element_equal(child_node, "Type")) {
7009  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7010  if (text == NULL) {
7011  continue;
7012  }
7013  response->type = _match_ds3_s3_object_type(client->log, text);
7014  xmlFree(text);
7015  } else {
7016  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_response [%s]\n", child_node->name, root->name);
7017  }
7018 
7019  if (error != NULL) {
7020  break;
7021  }
7022 
7023  }
7024 
7025 
7026  xmlFreeDoc(doc);
7027 
7028  if (error == NULL) {
7029  *_response = response;
7030  } else {
7031  ds3_s3_object_response_free(response);
7032  }
7033 
7034  return error;
7035 }
7036 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) {
7037  xmlDocPtr doc;
7038  xmlNodePtr root;
7039  xmlNodePtr child_node;
7040  ds3_storage_domain_response* response;
7041  ds3_error* error = NULL;
7042 
7043  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7044  if (error != NULL) {
7045  return error;
7046  }
7047 
7048  response = g_new0(ds3_storage_domain_response, 1);
7049 
7050  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7051  if (element_equal(child_node, "AutoEjectMediaFullThreshold")) {
7052  response->auto_eject_media_full_threshold = xml_get_uint64(doc, child_node);
7053  } else if (element_equal(child_node, "AutoEjectUponCron")) {
7054  response->auto_eject_upon_cron = xml_get_string(doc, child_node);
7055  } else if (element_equal(child_node, "AutoEjectUponJobCancellation")) {
7056  response->auto_eject_upon_job_cancellation = xml_get_bool(client->log, doc, child_node);
7057  } else if (element_equal(child_node, "AutoEjectUponJobCompletion")) {
7058  response->auto_eject_upon_job_completion = xml_get_bool(client->log, doc, child_node);
7059  } else if (element_equal(child_node, "AutoEjectUponMediaFull")) {
7060  response->auto_eject_upon_media_full = xml_get_bool(client->log, doc, child_node);
7061  } else if (element_equal(child_node, "Id")) {
7062  response->id = xml_get_string(doc, child_node);
7063  } else if (element_equal(child_node, "LtfsFileNaming")) {
7064  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7065  if (text == NULL) {
7066  continue;
7067  }
7068  response->ltfs_file_naming = _match_ds3_ltfs_file_naming_mode(client->log, text);
7069  xmlFree(text);
7070  } else if (element_equal(child_node, "MaxTapeFragmentationPercent")) {
7071  response->max_tape_fragmentation_percent = xml_get_uint16(doc, child_node);
7072  } else if (element_equal(child_node, "MaximumAutoVerificationFrequencyInDays")) {
7073  response->maximum_auto_verification_frequency_in_days = xml_get_uint16(doc, child_node);
7074  } else if (element_equal(child_node, "MediaEjectionAllowed")) {
7075  response->media_ejection_allowed = xml_get_bool(client->log, doc, child_node);
7076  } else if (element_equal(child_node, "Name")) {
7077  response->name = xml_get_string(doc, child_node);
7078  } else if (element_equal(child_node, "SecureMediaAllocation")) {
7079  response->secure_media_allocation = xml_get_bool(client->log, doc, child_node);
7080  } else if (element_equal(child_node, "VerifyPriorToAutoEject")) {
7081  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7082  if (text == NULL) {
7083  continue;
7084  }
7085  response->verify_prior_to_auto_eject = _match_ds3_priority(client->log, text);
7086  xmlFree(text);
7087  } else if (element_equal(child_node, "WriteOptimization")) {
7088  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7089  if (text == NULL) {
7090  continue;
7091  }
7092  response->write_optimization = _match_ds3_write_optimization(client->log, text);
7093  xmlFree(text);
7094  } else {
7095  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_response [%s]\n", child_node->name, root->name);
7096  }
7097 
7098  if (error != NULL) {
7099  break;
7100  }
7101 
7102  }
7103 
7104 
7105  xmlFreeDoc(doc);
7106 
7107  if (error == NULL) {
7108  *_response = response;
7109  } else {
7111  }
7112 
7113  return error;
7114 }
7115 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) {
7116  xmlDocPtr doc;
7117  xmlNodePtr root;
7118  xmlNodePtr child_node;
7120  ds3_error* error = NULL;
7121 
7122  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7123  if (error != NULL) {
7124  return error;
7125  }
7126 
7127  response = g_new0(ds3_storage_domain_member_response, 1);
7128 
7129  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7130  if (element_equal(child_node, "AutoCompactionThreshold")) {
7131  response->auto_compaction_threshold = xml_get_uint16(doc, child_node);
7132  } else if (element_equal(child_node, "Id")) {
7133  response->id = xml_get_string(doc, child_node);
7134  } else if (element_equal(child_node, "PoolPartitionId")) {
7135  response->pool_partition_id = xml_get_string(doc, child_node);
7136  } else if (element_equal(child_node, "State")) {
7137  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7138  if (text == NULL) {
7139  continue;
7140  }
7141  response->state = _match_ds3_storage_domain_member_state(client->log, text);
7142  xmlFree(text);
7143  } else if (element_equal(child_node, "StorageDomainId")) {
7144  response->storage_domain_id = xml_get_string(doc, child_node);
7145  } else if (element_equal(child_node, "TapePartitionId")) {
7146  response->tape_partition_id = xml_get_string(doc, child_node);
7147  } else if (element_equal(child_node, "TapeType")) {
7148  response->tape_type = xml_get_string(doc, child_node);
7149  } else if (element_equal(child_node, "WritePreference")) {
7150  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7151  if (text == NULL) {
7152  continue;
7153  }
7154  response->write_preference = _match_ds3_write_preference_level(client->log, text);
7155  xmlFree(text);
7156  } else {
7157  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_member_response [%s]\n", child_node->name, root->name);
7158  }
7159 
7160  if (error != NULL) {
7161  break;
7162  }
7163 
7164  }
7165 
7166 
7167  xmlFreeDoc(doc);
7168 
7169  if (error == NULL) {
7170  *_response = response;
7171  } else {
7173  }
7174 
7175  return error;
7176 }
7177 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) {
7178  xmlDocPtr doc;
7179  xmlNodePtr root;
7180  xmlNodePtr child_node;
7181  ds3_spectra_user_response* response;
7182  ds3_error* error = NULL;
7183 
7184  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7185  if (error != NULL) {
7186  return error;
7187  }
7188 
7189  response = g_new0(ds3_spectra_user_response, 1);
7190 
7191  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7192  if (element_equal(child_node, "AuthId")) {
7193  response->auth_id = xml_get_string(doc, child_node);
7194  } else if (element_equal(child_node, "DefaultDataPolicyId")) {
7195  response->default_data_policy_id = xml_get_string(doc, child_node);
7196  } else if (element_equal(child_node, "Id")) {
7197  response->id = xml_get_string(doc, child_node);
7198  } else if (element_equal(child_node, "MaxBuckets")) {
7199  response->max_buckets = xml_get_uint16(doc, child_node);
7200  } else if (element_equal(child_node, "Name")) {
7201  response->name = xml_get_string(doc, child_node);
7202  } else if (element_equal(child_node, "SecretKey")) {
7203  response->secret_key = xml_get_string(doc, child_node);
7204  } else {
7205  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_spectra_user_response [%s]\n", child_node->name, root->name);
7206  }
7207 
7208  if (error != NULL) {
7209  break;
7210  }
7211 
7212  }
7213 
7214 
7215  xmlFreeDoc(doc);
7216 
7217  if (error == NULL) {
7218  *_response = response;
7219  } else {
7221  }
7222 
7223  return error;
7224 }
7226  xmlDocPtr doc;
7227  xmlNodePtr root;
7228  xmlNodePtr child_node;
7230  ds3_error* error = NULL;
7231 
7232  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7233  if (error != NULL) {
7234  return error;
7235  }
7236 
7238 
7239  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7240  if (element_equal(child_node, "CreationDate")) {
7241  response->creation_date = xml_get_string(doc, child_node);
7242  } else if (element_equal(child_node, "Format")) {
7243  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7244  if (text == NULL) {
7245  continue;
7246  }
7247  response->format = _match_ds3_http_response_format_type(client->log, text);
7248  xmlFree(text);
7249  } else if (element_equal(child_node, "Id")) {
7250  response->id = xml_get_string(doc, child_node);
7251  } else if (element_equal(child_node, "LastFailure")) {
7252  response->last_failure = xml_get_string(doc, child_node);
7253  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7254  response->last_http_response_code = xml_get_uint16(doc, child_node);
7255  } else if (element_equal(child_node, "LastNotification")) {
7256  response->last_notification = xml_get_string(doc, child_node);
7257  } else if (element_equal(child_node, "NamingConvention")) {
7258  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7259  if (text == NULL) {
7260  continue;
7261  }
7262  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7263  xmlFree(text);
7264  } else if (element_equal(child_node, "NotificationEndPoint")) {
7265  response->notification_end_point = xml_get_string(doc, child_node);
7266  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7267  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7268  if (text == NULL) {
7269  continue;
7270  }
7271  response->notification_http_method = _match_ds3_request_type(client->log, text);
7272  xmlFree(text);
7273  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7274  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7275  } else if (element_equal(child_node, "UserId")) {
7276  response->user_id = xml_get_string(doc, child_node);
7277  } else {
7278  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);
7279  }
7280 
7281  if (error != NULL) {
7282  break;
7283  }
7284 
7285  }
7286 
7287 
7288  xmlFreeDoc(doc);
7289 
7290  if (error == NULL) {
7291  *_response = response;
7292  } else {
7294  }
7295 
7296  return error;
7297 }
7299  xmlDocPtr doc;
7300  xmlNodePtr root;
7301  xmlNodePtr child_node;
7303  ds3_error* error = NULL;
7304 
7305  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7306  if (error != NULL) {
7307  return error;
7308  }
7309 
7311 
7312  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7313  if (element_equal(child_node, "CreationDate")) {
7314  response->creation_date = xml_get_string(doc, child_node);
7315  } else if (element_equal(child_node, "Format")) {
7316  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7317  if (text == NULL) {
7318  continue;
7319  }
7320  response->format = _match_ds3_http_response_format_type(client->log, text);
7321  xmlFree(text);
7322  } else if (element_equal(child_node, "Id")) {
7323  response->id = xml_get_string(doc, child_node);
7324  } else if (element_equal(child_node, "LastFailure")) {
7325  response->last_failure = xml_get_string(doc, child_node);
7326  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7327  response->last_http_response_code = xml_get_uint16(doc, child_node);
7328  } else if (element_equal(child_node, "LastNotification")) {
7329  response->last_notification = xml_get_string(doc, child_node);
7330  } else if (element_equal(child_node, "NamingConvention")) {
7331  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7332  if (text == NULL) {
7333  continue;
7334  }
7335  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7336  xmlFree(text);
7337  } else if (element_equal(child_node, "NotificationEndPoint")) {
7338  response->notification_end_point = xml_get_string(doc, child_node);
7339  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7340  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7341  if (text == NULL) {
7342  continue;
7343  }
7344  response->notification_http_method = _match_ds3_request_type(client->log, text);
7345  xmlFree(text);
7346  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7347  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7348  } else if (element_equal(child_node, "UserId")) {
7349  response->user_id = xml_get_string(doc, child_node);
7350  } else {
7351  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_failure_notification_registration_response [%s]\n", child_node->name, root->name);
7352  }
7353 
7354  if (error != NULL) {
7355  break;
7356  }
7357 
7358  }
7359 
7360 
7361  xmlFreeDoc(doc);
7362 
7363  if (error == NULL) {
7364  *_response = response;
7365  } else {
7367  }
7368 
7369  return error;
7370 }
7372  xmlDocPtr doc;
7373  xmlNodePtr root;
7374  xmlNodePtr child_node;
7376  ds3_error* error = NULL;
7377 
7378  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7379  if (error != NULL) {
7380  return error;
7381  }
7382 
7384 
7385  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7386  if (element_equal(child_node, "CreationDate")) {
7387  response->creation_date = xml_get_string(doc, child_node);
7388  } else if (element_equal(child_node, "Format")) {
7389  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7390  if (text == NULL) {
7391  continue;
7392  }
7393  response->format = _match_ds3_http_response_format_type(client->log, text);
7394  xmlFree(text);
7395  } else if (element_equal(child_node, "Id")) {
7396  response->id = xml_get_string(doc, child_node);
7397  } else if (element_equal(child_node, "JobId")) {
7398  response->job_id = xml_get_string(doc, child_node);
7399  } else if (element_equal(child_node, "LastFailure")) {
7400  response->last_failure = xml_get_string(doc, child_node);
7401  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7402  response->last_http_response_code = xml_get_uint16(doc, child_node);
7403  } else if (element_equal(child_node, "LastNotification")) {
7404  response->last_notification = xml_get_string(doc, child_node);
7405  } else if (element_equal(child_node, "NamingConvention")) {
7406  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7407  if (text == NULL) {
7408  continue;
7409  }
7410  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7411  xmlFree(text);
7412  } else if (element_equal(child_node, "NotificationEndPoint")) {
7413  response->notification_end_point = xml_get_string(doc, child_node);
7414  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7415  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7416  if (text == NULL) {
7417  continue;
7418  }
7419  response->notification_http_method = _match_ds3_request_type(client->log, text);
7420  xmlFree(text);
7421  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7422  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7423  } else if (element_equal(child_node, "UserId")) {
7424  response->user_id = xml_get_string(doc, child_node);
7425  } else {
7426  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_completed_notification_registration_response [%s]\n", child_node->name, root->name);
7427  }
7428 
7429  if (error != NULL) {
7430  break;
7431  }
7432 
7433  }
7434 
7435 
7436  xmlFreeDoc(doc);
7437 
7438  if (error == NULL) {
7439  *_response = response;
7440  } else {
7442  }
7443 
7444  return error;
7445 }
7447  xmlDocPtr doc;
7448  xmlNodePtr root;
7449  xmlNodePtr child_node;
7451  ds3_error* error = NULL;
7452 
7453  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7454  if (error != NULL) {
7455  return error;
7456  }
7457 
7459 
7460  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7461  if (element_equal(child_node, "CreationDate")) {
7462  response->creation_date = xml_get_string(doc, child_node);
7463  } else if (element_equal(child_node, "Format")) {
7464  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7465  if (text == NULL) {
7466  continue;
7467  }
7468  response->format = _match_ds3_http_response_format_type(client->log, text);
7469  xmlFree(text);
7470  } else if (element_equal(child_node, "Id")) {
7471  response->id = xml_get_string(doc, child_node);
7472  } else if (element_equal(child_node, "LastFailure")) {
7473  response->last_failure = xml_get_string(doc, child_node);
7474  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7475  response->last_http_response_code = xml_get_uint16(doc, child_node);
7476  } else if (element_equal(child_node, "LastNotification")) {
7477  response->last_notification = xml_get_string(doc, child_node);
7478  } else if (element_equal(child_node, "NamingConvention")) {
7479  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7480  if (text == NULL) {
7481  continue;
7482  }
7483  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7484  xmlFree(text);
7485  } else if (element_equal(child_node, "NotificationEndPoint")) {
7486  response->notification_end_point = xml_get_string(doc, child_node);
7487  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7488  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7489  if (text == NULL) {
7490  continue;
7491  }
7492  response->notification_http_method = _match_ds3_request_type(client->log, text);
7493  xmlFree(text);
7494  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7495  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7496  } else if (element_equal(child_node, "UserId")) {
7497  response->user_id = xml_get_string(doc, child_node);
7498  } else {
7499  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_created_notification_registration_response [%s]\n", child_node->name, root->name);
7500  }
7501 
7502  if (error != NULL) {
7503  break;
7504  }
7505 
7506  }
7507 
7508 
7509  xmlFreeDoc(doc);
7510 
7511  if (error == NULL) {
7512  *_response = response;
7513  } else {
7515  }
7516 
7517  return error;
7518 }
7520  xmlDocPtr doc;
7521  xmlNodePtr root;
7522  xmlNodePtr child_node;
7524  ds3_error* error = NULL;
7525 
7526  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7527  if (error != NULL) {
7528  return error;
7529  }
7530 
7532 
7533  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7534  if (element_equal(child_node, "CreationDate")) {
7535  response->creation_date = xml_get_string(doc, child_node);
7536  } else if (element_equal(child_node, "Format")) {
7537  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7538  if (text == NULL) {
7539  continue;
7540  }
7541  response->format = _match_ds3_http_response_format_type(client->log, text);
7542  xmlFree(text);
7543  } else if (element_equal(child_node, "Id")) {
7544  response->id = xml_get_string(doc, child_node);
7545  } else if (element_equal(child_node, "LastFailure")) {
7546  response->last_failure = xml_get_string(doc, child_node);
7547  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7548  response->last_http_response_code = xml_get_uint16(doc, child_node);
7549  } else if (element_equal(child_node, "LastNotification")) {
7550  response->last_notification = xml_get_string(doc, child_node);
7551  } else if (element_equal(child_node, "NamingConvention")) {
7552  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7553  if (text == NULL) {
7554  continue;
7555  }
7556  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7557  xmlFree(text);
7558  } else if (element_equal(child_node, "NotificationEndPoint")) {
7559  response->notification_end_point = xml_get_string(doc, child_node);
7560  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7561  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7562  if (text == NULL) {
7563  continue;
7564  }
7565  response->notification_http_method = _match_ds3_request_type(client->log, text);
7566  xmlFree(text);
7567  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7568  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7569  } else if (element_equal(child_node, "UserId")) {
7570  response->user_id = xml_get_string(doc, child_node);
7571  } else {
7572  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);
7573  }
7574 
7575  if (error != NULL) {
7576  break;
7577  }
7578 
7579  }
7580 
7581 
7582  xmlFreeDoc(doc);
7583 
7584  if (error == NULL) {
7585  *_response = response;
7586  } else {
7588  }
7589 
7590  return error;
7591 }
7593  xmlDocPtr doc;
7594  xmlNodePtr root;
7595  xmlNodePtr child_node;
7597  ds3_error* error = NULL;
7598 
7599  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7600  if (error != NULL) {
7601  return error;
7602  }
7603 
7605 
7606  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7607  if (element_equal(child_node, "CreationDate")) {
7608  response->creation_date = xml_get_string(doc, child_node);
7609  } else if (element_equal(child_node, "Format")) {
7610  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7611  if (text == NULL) {
7612  continue;
7613  }
7614  response->format = _match_ds3_http_response_format_type(client->log, text);
7615  xmlFree(text);
7616  } else if (element_equal(child_node, "Id")) {
7617  response->id = xml_get_string(doc, child_node);
7618  } else if (element_equal(child_node, "LastFailure")) {
7619  response->last_failure = xml_get_string(doc, child_node);
7620  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7621  response->last_http_response_code = xml_get_uint16(doc, child_node);
7622  } else if (element_equal(child_node, "LastNotification")) {
7623  response->last_notification = xml_get_string(doc, child_node);
7624  } else if (element_equal(child_node, "NamingConvention")) {
7625  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7626  if (text == NULL) {
7627  continue;
7628  }
7629  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7630  xmlFree(text);
7631  } else if (element_equal(child_node, "NotificationEndPoint")) {
7632  response->notification_end_point = xml_get_string(doc, child_node);
7633  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7634  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7635  if (text == NULL) {
7636  continue;
7637  }
7638  response->notification_http_method = _match_ds3_request_type(client->log, text);
7639  xmlFree(text);
7640  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7641  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7642  } else if (element_equal(child_node, "UserId")) {
7643  response->user_id = xml_get_string(doc, child_node);
7644  } else {
7645  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_notification_registration_response [%s]\n", child_node->name, root->name);
7646  }
7647 
7648  if (error != NULL) {
7649  break;
7650  }
7651 
7652  }
7653 
7654 
7655  xmlFreeDoc(doc);
7656 
7657  if (error == NULL) {
7658  *_response = response;
7659  } else {
7661  }
7662 
7663  return error;
7664 }
7666  xmlDocPtr doc;
7667  xmlNodePtr root;
7668  xmlNodePtr child_node;
7670  ds3_error* error = NULL;
7671 
7672  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7673  if (error != NULL) {
7674  return error;
7675  }
7676 
7678 
7679  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7680  if (element_equal(child_node, "CreationDate")) {
7681  response->creation_date = xml_get_string(doc, child_node);
7682  } else if (element_equal(child_node, "Format")) {
7683  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7684  if (text == NULL) {
7685  continue;
7686  }
7687  response->format = _match_ds3_http_response_format_type(client->log, text);
7688  xmlFree(text);
7689  } else if (element_equal(child_node, "Id")) {
7690  response->id = xml_get_string(doc, child_node);
7691  } else if (element_equal(child_node, "JobId")) {
7692  response->job_id = xml_get_string(doc, child_node);
7693  } else if (element_equal(child_node, "LastFailure")) {
7694  response->last_failure = xml_get_string(doc, child_node);
7695  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7696  response->last_http_response_code = xml_get_uint16(doc, child_node);
7697  } else if (element_equal(child_node, "LastNotification")) {
7698  response->last_notification = xml_get_string(doc, child_node);
7699  } else if (element_equal(child_node, "NamingConvention")) {
7700  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7701  if (text == NULL) {
7702  continue;
7703  }
7704  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7705  xmlFree(text);
7706  } else if (element_equal(child_node, "NotificationEndPoint")) {
7707  response->notification_end_point = xml_get_string(doc, child_node);
7708  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7709  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7710  if (text == NULL) {
7711  continue;
7712  }
7713  response->notification_http_method = _match_ds3_request_type(client->log, text);
7714  xmlFree(text);
7715  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7716  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7717  } else if (element_equal(child_node, "UserId")) {
7718  response->user_id = xml_get_string(doc, child_node);
7719  } else {
7720  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);
7721  }
7722 
7723  if (error != NULL) {
7724  break;
7725  }
7726 
7727  }
7728 
7729 
7730  xmlFreeDoc(doc);
7731 
7732  if (error == NULL) {
7733  *_response = response;
7734  } else {
7736  }
7737 
7738  return error;
7739 }
7741  xmlDocPtr doc;
7742  xmlNodePtr root;
7743  xmlNodePtr child_node;
7745  ds3_error* error = NULL;
7746 
7747  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7748  if (error != NULL) {
7749  return error;
7750  }
7751 
7753 
7754  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7755  if (element_equal(child_node, "CreationDate")) {
7756  response->creation_date = xml_get_string(doc, child_node);
7757  } else if (element_equal(child_node, "Format")) {
7758  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7759  if (text == NULL) {
7760  continue;
7761  }
7762  response->format = _match_ds3_http_response_format_type(client->log, text);
7763  xmlFree(text);
7764  } else if (element_equal(child_node, "Id")) {
7765  response->id = xml_get_string(doc, child_node);
7766  } else if (element_equal(child_node, "LastFailure")) {
7767  response->last_failure = xml_get_string(doc, child_node);
7768  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7769  response->last_http_response_code = xml_get_uint16(doc, child_node);
7770  } else if (element_equal(child_node, "LastNotification")) {
7771  response->last_notification = xml_get_string(doc, child_node);
7772  } else if (element_equal(child_node, "NamingConvention")) {
7773  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7774  if (text == NULL) {
7775  continue;
7776  }
7777  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7778  xmlFree(text);
7779  } else if (element_equal(child_node, "NotificationEndPoint")) {
7780  response->notification_end_point = xml_get_string(doc, child_node);
7781  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7782  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7783  if (text == NULL) {
7784  continue;
7785  }
7786  response->notification_http_method = _match_ds3_request_type(client->log, text);
7787  xmlFree(text);
7788  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7789  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7790  } else if (element_equal(child_node, "UserId")) {
7791  response->user_id = xml_get_string(doc, child_node);
7792  } else {
7793  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);
7794  }
7795 
7796  if (error != NULL) {
7797  break;
7798  }
7799 
7800  }
7801 
7802 
7803  xmlFreeDoc(doc);
7804 
7805  if (error == NULL) {
7806  *_response = response;
7807  } else {
7809  }
7810 
7811  return error;
7812 }
7814  xmlDocPtr doc;
7815  xmlNodePtr root;
7816  xmlNodePtr child_node;
7818  ds3_error* error = NULL;
7819 
7820  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7821  if (error != NULL) {
7822  return error;
7823  }
7824 
7826 
7827  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7828  if (element_equal(child_node, "CreationDate")) {
7829  response->creation_date = xml_get_string(doc, child_node);
7830  } else if (element_equal(child_node, "Format")) {
7831  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7832  if (text == NULL) {
7833  continue;
7834  }
7835  response->format = _match_ds3_http_response_format_type(client->log, text);
7836  xmlFree(text);
7837  } else if (element_equal(child_node, "Id")) {
7838  response->id = xml_get_string(doc, child_node);
7839  } else if (element_equal(child_node, "JobId")) {
7840  response->job_id = xml_get_string(doc, child_node);
7841  } else if (element_equal(child_node, "LastFailure")) {
7842  response->last_failure = xml_get_string(doc, child_node);
7843  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7844  response->last_http_response_code = xml_get_uint16(doc, child_node);
7845  } else if (element_equal(child_node, "LastNotification")) {
7846  response->last_notification = xml_get_string(doc, child_node);
7847  } else if (element_equal(child_node, "NamingConvention")) {
7848  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7849  if (text == NULL) {
7850  continue;
7851  }
7852  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7853  xmlFree(text);
7854  } else if (element_equal(child_node, "NotificationEndPoint")) {
7855  response->notification_end_point = xml_get_string(doc, child_node);
7856  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7857  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7858  if (text == NULL) {
7859  continue;
7860  }
7861  response->notification_http_method = _match_ds3_request_type(client->log, text);
7862  xmlFree(text);
7863  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7864  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7865  } else if (element_equal(child_node, "UserId")) {
7866  response->user_id = xml_get_string(doc, child_node);
7867  } else {
7868  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);
7869  }
7870 
7871  if (error != NULL) {
7872  break;
7873  }
7874 
7875  }
7876 
7877 
7878  xmlFreeDoc(doc);
7879 
7880  if (error == NULL) {
7881  *_response = response;
7882  } else {
7884  }
7885 
7886  return error;
7887 }
7889  xmlDocPtr doc;
7890  xmlNodePtr root;
7891  xmlNodePtr child_node;
7893  ds3_error* error = NULL;
7894 
7895  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7896  if (error != NULL) {
7897  return error;
7898  }
7899 
7901 
7902  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7903  if (element_equal(child_node, "CreationDate")) {
7904  response->creation_date = xml_get_string(doc, child_node);
7905  } else if (element_equal(child_node, "Format")) {
7906  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7907  if (text == NULL) {
7908  continue;
7909  }
7910  response->format = _match_ds3_http_response_format_type(client->log, text);
7911  xmlFree(text);
7912  } else if (element_equal(child_node, "Id")) {
7913  response->id = xml_get_string(doc, child_node);
7914  } else if (element_equal(child_node, "LastFailure")) {
7915  response->last_failure = xml_get_string(doc, child_node);
7916  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7917  response->last_http_response_code = xml_get_uint16(doc, child_node);
7918  } else if (element_equal(child_node, "LastNotification")) {
7919  response->last_notification = xml_get_string(doc, child_node);
7920  } else if (element_equal(child_node, "NamingConvention")) {
7921  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7922  if (text == NULL) {
7923  continue;
7924  }
7925  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7926  xmlFree(text);
7927  } else if (element_equal(child_node, "NotificationEndPoint")) {
7928  response->notification_end_point = xml_get_string(doc, child_node);
7929  } else if (element_equal(child_node, "NotificationHttpMethod")) {
7930  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7931  if (text == NULL) {
7932  continue;
7933  }
7934  response->notification_http_method = _match_ds3_request_type(client->log, text);
7935  xmlFree(text);
7936  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
7937  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
7938  } else if (element_equal(child_node, "UserId")) {
7939  response->user_id = xml_get_string(doc, child_node);
7940  } else {
7941  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);
7942  }
7943 
7944  if (error != NULL) {
7945  break;
7946  }
7947 
7948  }
7949 
7950 
7951  xmlFreeDoc(doc);
7952 
7953  if (error == NULL) {
7954  *_response = response;
7955  } else {
7957  }
7958 
7959  return error;
7960 }
7962  xmlDocPtr doc;
7963  xmlNodePtr root;
7964  xmlNodePtr child_node;
7966  ds3_error* error = NULL;
7967 
7968  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
7969  if (error != NULL) {
7970  return error;
7971  }
7972 
7974 
7975  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7976  if (element_equal(child_node, "CreationDate")) {
7977  response->creation_date = xml_get_string(doc, child_node);
7978  } else if (element_equal(child_node, "Format")) {
7979  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7980  if (text == NULL) {
7981  continue;
7982  }
7983  response->format = _match_ds3_http_response_format_type(client->log, text);
7984  xmlFree(text);
7985  } else if (element_equal(child_node, "Id")) {
7986  response->id = xml_get_string(doc, child_node);
7987  } else if (element_equal(child_node, "LastFailure")) {
7988  response->last_failure = xml_get_string(doc, child_node);
7989  } else if (element_equal(child_node, "LastHttpResponseCode")) {
7990  response->last_http_response_code = xml_get_uint16(doc, child_node);
7991  } else if (element_equal(child_node, "LastNotification")) {
7992  response->last_notification = xml_get_string(doc, child_node);
7993  } else if (element_equal(child_node, "NamingConvention")) {
7994  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7995  if (text == NULL) {
7996  continue;
7997  }
7998  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
7999  xmlFree(text);
8000  } else if (element_equal(child_node, "NotificationEndPoint")) {
8001  response->notification_end_point = xml_get_string(doc, child_node);
8002  } else if (element_equal(child_node, "NotificationHttpMethod")) {
8003  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8004  if (text == NULL) {
8005  continue;
8006  }
8007  response->notification_http_method = _match_ds3_request_type(client->log, text);
8008  xmlFree(text);
8009  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
8010  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
8011  } else if (element_equal(child_node, "UserId")) {
8012  response->user_id = xml_get_string(doc, child_node);
8013  } else {
8014  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);
8015  }
8016 
8017  if (error != NULL) {
8018  break;
8019  }
8020 
8021  }
8022 
8023 
8024  xmlFreeDoc(doc);
8025 
8026  if (error == NULL) {
8027  *_response = response;
8028  } else {
8030  }
8031 
8032  return error;
8033 }
8035  xmlDocPtr doc;
8036  xmlNodePtr root;
8037  xmlNodePtr child_node;
8039  ds3_error* error = NULL;
8040 
8041  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8042  if (error != NULL) {
8043  return error;
8044  }
8045 
8047 
8048  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8049  if (element_equal(child_node, "CreationDate")) {
8050  response->creation_date = xml_get_string(doc, child_node);
8051  } else if (element_equal(child_node, "Format")) {
8052  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8053  if (text == NULL) {
8054  continue;
8055  }
8056  response->format = _match_ds3_http_response_format_type(client->log, text);
8057  xmlFree(text);
8058  } else if (element_equal(child_node, "Id")) {
8059  response->id = xml_get_string(doc, child_node);
8060  } else if (element_equal(child_node, "LastFailure")) {
8061  response->last_failure = xml_get_string(doc, child_node);
8062  } else if (element_equal(child_node, "LastHttpResponseCode")) {
8063  response->last_http_response_code = xml_get_uint16(doc, child_node);
8064  } else if (element_equal(child_node, "LastNotification")) {
8065  response->last_notification = xml_get_string(doc, child_node);
8066  } else if (element_equal(child_node, "NamingConvention")) {
8067  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8068  if (text == NULL) {
8069  continue;
8070  }
8071  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
8072  xmlFree(text);
8073  } else if (element_equal(child_node, "NotificationEndPoint")) {
8074  response->notification_end_point = xml_get_string(doc, child_node);
8075  } else if (element_equal(child_node, "NotificationHttpMethod")) {
8076  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8077  if (text == NULL) {
8078  continue;
8079  }
8080  response->notification_http_method = _match_ds3_request_type(client->log, text);
8081  xmlFree(text);
8082  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
8083  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
8084  } else if (element_equal(child_node, "UserId")) {
8085  response->user_id = xml_get_string(doc, child_node);
8086  } else {
8087  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_notification_registration_response [%s]\n", child_node->name, root->name);
8088  }
8089 
8090  if (error != NULL) {
8091  break;
8092  }
8093 
8094  }
8095 
8096 
8097  xmlFreeDoc(doc);
8098 
8099  if (error == NULL) {
8100  *_response = response;
8101  } else {
8103  }
8104 
8105  return error;
8106 }
8108  xmlDocPtr doc;
8109  xmlNodePtr root;
8110  xmlNodePtr child_node;
8112  ds3_error* error = NULL;
8113 
8114  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8115  if (error != NULL) {
8116  return error;
8117  }
8118 
8120 
8121  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8122  if (element_equal(child_node, "CreationDate")) {
8123  response->creation_date = xml_get_string(doc, child_node);
8124  } else if (element_equal(child_node, "Format")) {
8125  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8126  if (text == NULL) {
8127  continue;
8128  }
8129  response->format = _match_ds3_http_response_format_type(client->log, text);
8130  xmlFree(text);
8131  } else if (element_equal(child_node, "Id")) {
8132  response->id = xml_get_string(doc, child_node);
8133  } else if (element_equal(child_node, "LastFailure")) {
8134  response->last_failure = xml_get_string(doc, child_node);
8135  } else if (element_equal(child_node, "LastHttpResponseCode")) {
8136  response->last_http_response_code = xml_get_uint16(doc, child_node);
8137  } else if (element_equal(child_node, "LastNotification")) {
8138  response->last_notification = xml_get_string(doc, child_node);
8139  } else if (element_equal(child_node, "NamingConvention")) {
8140  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8141  if (text == NULL) {
8142  continue;
8143  }
8144  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
8145  xmlFree(text);
8146  } else if (element_equal(child_node, "NotificationEndPoint")) {
8147  response->notification_end_point = xml_get_string(doc, child_node);
8148  } else if (element_equal(child_node, "NotificationHttpMethod")) {
8149  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8150  if (text == NULL) {
8151  continue;
8152  }
8153  response->notification_http_method = _match_ds3_request_type(client->log, text);
8154  xmlFree(text);
8155  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
8156  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
8157  } else if (element_equal(child_node, "UserId")) {
8158  response->user_id = xml_get_string(doc, child_node);
8159  } else {
8160  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_notification_registration_response [%s]\n", child_node->name, root->name);
8161  }
8162 
8163  if (error != NULL) {
8164  break;
8165  }
8166 
8167  }
8168 
8169 
8170  xmlFreeDoc(doc);
8171 
8172  if (error == NULL) {
8173  *_response = response;
8174  } else {
8176  }
8177 
8178  return error;
8179 }
8181  xmlDocPtr doc;
8182  xmlNodePtr root;
8183  xmlNodePtr child_node;
8185  ds3_error* error = NULL;
8186 
8187  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8188  if (error != NULL) {
8189  return error;
8190  }
8191 
8193 
8194  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8195  if (element_equal(child_node, "CreationDate")) {
8196  response->creation_date = xml_get_string(doc, child_node);
8197  } else if (element_equal(child_node, "Format")) {
8198  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8199  if (text == NULL) {
8200  continue;
8201  }
8202  response->format = _match_ds3_http_response_format_type(client->log, text);
8203  xmlFree(text);
8204  } else if (element_equal(child_node, "Id")) {
8205  response->id = xml_get_string(doc, child_node);
8206  } else if (element_equal(child_node, "LastFailure")) {
8207  response->last_failure = xml_get_string(doc, child_node);
8208  } else if (element_equal(child_node, "LastHttpResponseCode")) {
8209  response->last_http_response_code = xml_get_uint16(doc, child_node);
8210  } else if (element_equal(child_node, "LastNotification")) {
8211  response->last_notification = xml_get_string(doc, child_node);
8212  } else if (element_equal(child_node, "NamingConvention")) {
8213  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8214  if (text == NULL) {
8215  continue;
8216  }
8217  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
8218  xmlFree(text);
8219  } else if (element_equal(child_node, "NotificationEndPoint")) {
8220  response->notification_end_point = xml_get_string(doc, child_node);
8221  } else if (element_equal(child_node, "NotificationHttpMethod")) {
8222  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8223  if (text == NULL) {
8224  continue;
8225  }
8226  response->notification_http_method = _match_ds3_request_type(client->log, text);
8227  xmlFree(text);
8228  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
8229  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
8230  } else if (element_equal(child_node, "UserId")) {
8231  response->user_id = xml_get_string(doc, child_node);
8232  } else {
8233  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);
8234  }
8235 
8236  if (error != NULL) {
8237  break;
8238  }
8239 
8240  }
8241 
8242 
8243  xmlFreeDoc(doc);
8244 
8245  if (error == NULL) {
8246  *_response = response;
8247  } else {
8249  }
8250 
8251  return error;
8252 }
8253 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) {
8254  xmlDocPtr doc;
8255  xmlNodePtr root;
8256  xmlNodePtr child_node;
8258  ds3_error* error = NULL;
8259 
8260  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8261  if (error != NULL) {
8262  return error;
8263  }
8264 
8265  response = g_new0(ds3_cache_filesystem_response, 1);
8266 
8267  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8268  if (element_equal(child_node, "AutoReclaimInitiateThreshold")) {
8269  response->auto_reclaim_initiate_threshold = xml_get_uint64(doc, child_node);
8270  } else if (element_equal(child_node, "AutoReclaimTerminateThreshold")) {
8271  response->auto_reclaim_terminate_threshold = xml_get_uint64(doc, child_node);
8272  } else if (element_equal(child_node, "BurstThreshold")) {
8273  response->burst_threshold = xml_get_uint64(doc, child_node);
8274  } else if (element_equal(child_node, "Id")) {
8275  response->id = xml_get_string(doc, child_node);
8276  } else if (element_equal(child_node, "MaxCapacityInBytes")) {
8277  response->max_capacity_in_bytes = xml_get_uint64(doc, child_node);
8278  } else if (element_equal(child_node, "MaxPercentUtilizationOfFilesystem")) {
8279  response->max_percent_utilization_of_filesystem = xml_get_uint64(doc, child_node);
8280  } else if (element_equal(child_node, "NodeId")) {
8281  response->node_id = xml_get_string(doc, child_node);
8282  } else if (element_equal(child_node, "Path")) {
8283  response->path = xml_get_string(doc, child_node);
8284  } else {
8285  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_response [%s]\n", child_node->name, root->name);
8286  }
8287 
8288  if (error != NULL) {
8289  break;
8290  }
8291 
8292  }
8293 
8294 
8295  xmlFreeDoc(doc);
8296 
8297  if (error == NULL) {
8298  *_response = response;
8299  } else {
8301  }
8302 
8303  return error;
8304 }
8305 static ds3_error* _parse_top_level_ds3_pool_response(const ds3_client* client, const ds3_request* request, ds3_pool_response** _response, GByteArray* xml_blob) {
8306  xmlDocPtr doc;
8307  xmlNodePtr root;
8308  xmlNodePtr child_node;
8309  ds3_pool_response* response;
8310  ds3_error* error = NULL;
8311 
8312  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8313  if (error != NULL) {
8314  return error;
8315  }
8316 
8317  response = g_new0(ds3_pool_response, 1);
8318 
8319  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8320  if (element_equal(child_node, "AssignedToStorageDomain")) {
8321  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
8322  } else if (element_equal(child_node, "AvailableCapacity")) {
8323  response->available_capacity = xml_get_uint64(doc, child_node);
8324  } else if (element_equal(child_node, "BucketId")) {
8325  response->bucket_id = xml_get_string(doc, child_node);
8326  } else if (element_equal(child_node, "Guid")) {
8327  response->guid = xml_get_string(doc, child_node);
8328  } else if (element_equal(child_node, "Health")) {
8329  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8330  if (text == NULL) {
8331  continue;
8332  }
8333  response->health = _match_ds3_pool_health(client->log, text);
8334  xmlFree(text);
8335  } else if (element_equal(child_node, "Id")) {
8336  response->id = xml_get_string(doc, child_node);
8337  } else if (element_equal(child_node, "LastAccessed")) {
8338  response->last_accessed = xml_get_string(doc, child_node);
8339  } else if (element_equal(child_node, "LastModified")) {
8340  response->last_modified = xml_get_string(doc, child_node);
8341  } else if (element_equal(child_node, "LastVerified")) {
8342  response->last_verified = xml_get_string(doc, child_node);
8343  } else if (element_equal(child_node, "Mountpoint")) {
8344  response->mountpoint = xml_get_string(doc, child_node);
8345  } else if (element_equal(child_node, "Name")) {
8346  response->name = xml_get_string(doc, child_node);
8347  } else if (element_equal(child_node, "PartitionId")) {
8348  response->partition_id = xml_get_string(doc, child_node);
8349  } else if (element_equal(child_node, "PoweredOn")) {
8350  response->powered_on = xml_get_bool(client->log, doc, child_node);
8351  } else if (element_equal(child_node, "Quiesced")) {
8352  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8353  if (text == NULL) {
8354  continue;
8355  }
8356  response->quiesced = _match_ds3_quiesced(client->log, text);
8357  xmlFree(text);
8358  } else if (element_equal(child_node, "ReservedCapacity")) {
8359  response->reserved_capacity = xml_get_uint64(doc, child_node);
8360  } else if (element_equal(child_node, "State")) {
8361  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8362  if (text == NULL) {
8363  continue;
8364  }
8365  response->state = _match_ds3_pool_state(client->log, text);
8366  xmlFree(text);
8367  } else if (element_equal(child_node, "StorageDomainMemberId")) {
8368  response->storage_domain_member_id = xml_get_string(doc, child_node);
8369  } else if (element_equal(child_node, "TotalCapacity")) {
8370  response->total_capacity = xml_get_uint64(doc, child_node);
8371  } else if (element_equal(child_node, "Type")) {
8372  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8373  if (text == NULL) {
8374  continue;
8375  }
8376  response->type = _match_ds3_pool_type(client->log, text);
8377  xmlFree(text);
8378  } else if (element_equal(child_node, "UsedCapacity")) {
8379  response->used_capacity = xml_get_uint64(doc, child_node);
8380  } else {
8381  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_response [%s]\n", child_node->name, root->name);
8382  }
8383 
8384  if (error != NULL) {
8385  break;
8386  }
8387 
8388  }
8389 
8390 
8391  xmlFreeDoc(doc);
8392 
8393  if (error == NULL) {
8394  *_response = response;
8395  } else {
8396  ds3_pool_response_free(response);
8397  }
8398 
8399  return error;
8400 }
8401 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) {
8402  xmlDocPtr doc;
8403  xmlNodePtr root;
8404  xmlNodePtr child_node;
8405  ds3_pool_partition_response* response;
8406  ds3_error* error = NULL;
8407 
8408  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8409  if (error != NULL) {
8410  return error;
8411  }
8412 
8413  response = g_new0(ds3_pool_partition_response, 1);
8414 
8415  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8416  if (element_equal(child_node, "Id")) {
8417  response->id = xml_get_string(doc, child_node);
8418  } else if (element_equal(child_node, "Name")) {
8419  response->name = xml_get_string(doc, child_node);
8420  } else if (element_equal(child_node, "Type")) {
8421  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8422  if (text == NULL) {
8423  continue;
8424  }
8425  response->type = _match_ds3_pool_type(client->log, text);
8426  xmlFree(text);
8427  } else {
8428  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_partition_response [%s]\n", child_node->name, root->name);
8429  }
8430 
8431  if (error != NULL) {
8432  break;
8433  }
8434 
8435  }
8436 
8437 
8438  xmlFreeDoc(doc);
8439 
8440  if (error == NULL) {
8441  *_response = response;
8442  } else {
8444  }
8445 
8446  return error;
8447 }
8448 static ds3_error* _parse_top_level_ds3_tape_response(const ds3_client* client, const ds3_request* request, ds3_tape_response** _response, GByteArray* xml_blob) {
8449  xmlDocPtr doc;
8450  xmlNodePtr root;
8451  xmlNodePtr child_node;
8452  ds3_tape_response* response;
8453  ds3_error* error = NULL;
8454 
8455  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8456  if (error != NULL) {
8457  return error;
8458  }
8459 
8460  response = g_new0(ds3_tape_response, 1);
8461 
8462  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8463  if (element_equal(child_node, "AssignedToStorageDomain")) {
8464  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
8465  } else if (element_equal(child_node, "AvailableRawCapacity")) {
8466  response->available_raw_capacity = xml_get_uint64(doc, child_node);
8467  } else if (element_equal(child_node, "BarCode")) {
8468  response->bar_code = xml_get_string(doc, child_node);
8469  } else if (element_equal(child_node, "BucketId")) {
8470  response->bucket_id = xml_get_string(doc, child_node);
8471  } else if (element_equal(child_node, "DescriptionForIdentification")) {
8472  response->description_for_identification = xml_get_string(doc, child_node);
8473  } else if (element_equal(child_node, "EjectDate")) {
8474  response->eject_date = xml_get_string(doc, child_node);
8475  } else if (element_equal(child_node, "EjectLabel")) {
8476  response->eject_label = xml_get_string(doc, child_node);
8477  } else if (element_equal(child_node, "EjectLocation")) {
8478  response->eject_location = xml_get_string(doc, child_node);
8479  } else if (element_equal(child_node, "EjectPending")) {
8480  response->eject_pending = xml_get_string(doc, child_node);
8481  } else if (element_equal(child_node, "FullOfData")) {
8482  response->full_of_data = xml_get_bool(client->log, doc, child_node);
8483  } else if (element_equal(child_node, "Id")) {
8484  response->id = xml_get_string(doc, child_node);
8485  } else if (element_equal(child_node, "LastAccessed")) {
8486  response->last_accessed = xml_get_string(doc, child_node);
8487  } else if (element_equal(child_node, "LastCheckpoint")) {
8488  response->last_checkpoint = xml_get_string(doc, child_node);
8489  } else if (element_equal(child_node, "LastModified")) {
8490  response->last_modified = xml_get_string(doc, child_node);
8491  } else if (element_equal(child_node, "LastVerified")) {
8492  response->last_verified = xml_get_string(doc, child_node);
8493  } else if (element_equal(child_node, "PartiallyVerifiedEndOfTape")) {
8494  response->partially_verified_end_of_tape = xml_get_string(doc, child_node);
8495  } else if (element_equal(child_node, "PartitionId")) {
8496  response->partition_id = xml_get_string(doc, child_node);
8497  } else if (element_equal(child_node, "PreviousState")) {
8498  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8499  if (text == NULL) {
8500  continue;
8501  }
8502  response->previous_state = _match_ds3_tape_state(client->log, text);
8503  xmlFree(text);
8504  } else if (element_equal(child_node, "SerialNumber")) {
8505  response->serial_number = xml_get_string(doc, child_node);
8506  } else if (element_equal(child_node, "State")) {
8507  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8508  if (text == NULL) {
8509  continue;
8510  }
8511  response->state = _match_ds3_tape_state(client->log, text);
8512  xmlFree(text);
8513  } else if (element_equal(child_node, "StorageDomainMemberId")) {
8514  response->storage_domain_member_id = xml_get_string(doc, child_node);
8515  } else if (element_equal(child_node, "TakeOwnershipPending")) {
8516  response->take_ownership_pending = xml_get_bool(client->log, doc, child_node);
8517  } else if (element_equal(child_node, "TotalRawCapacity")) {
8518  response->total_raw_capacity = xml_get_uint64(doc, child_node);
8519  } else if (element_equal(child_node, "Type")) {
8520  response->type = xml_get_string(doc, child_node);
8521  } else if (element_equal(child_node, "VerifyPending")) {
8522  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8523  if (text == NULL) {
8524  continue;
8525  }
8526  response->verify_pending = _match_ds3_priority(client->log, text);
8527  xmlFree(text);
8528  } else if (element_equal(child_node, "WriteProtected")) {
8529  response->write_protected = xml_get_bool(client->log, doc, child_node);
8530  } else {
8531  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_response [%s]\n", child_node->name, root->name);
8532  }
8533 
8534  if (error != NULL) {
8535  break;
8536  }
8537 
8538  }
8539 
8540 
8541  xmlFreeDoc(doc);
8542 
8543  if (error == NULL) {
8544  *_response = response;
8545  } else {
8546  ds3_tape_response_free(response);
8547  }
8548 
8549  return error;
8550 }
8551 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) {
8552  xmlDocPtr doc;
8553  xmlNodePtr root;
8554  xmlNodePtr child_node;
8556  ds3_error* error = NULL;
8557 
8558  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8559  if (error != NULL) {
8560  return error;
8561  }
8562 
8563  response = g_new0(ds3_tape_density_directive_response, 1);
8564 
8565  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8566  if (element_equal(child_node, "Density")) {
8567  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8568  if (text == NULL) {
8569  continue;
8570  }
8571  response->density = _match_ds3_tape_drive_type(client->log, text);
8572  xmlFree(text);
8573  } else if (element_equal(child_node, "Id")) {
8574  response->id = xml_get_string(doc, child_node);
8575  } else if (element_equal(child_node, "PartitionId")) {
8576  response->partition_id = xml_get_string(doc, child_node);
8577  } else if (element_equal(child_node, "TapeType")) {
8578  response->tape_type = xml_get_string(doc, child_node);
8579  } else {
8580  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_density_directive_response [%s]\n", child_node->name, root->name);
8581  }
8582 
8583  if (error != NULL) {
8584  break;
8585  }
8586 
8587  }
8588 
8589 
8590  xmlFreeDoc(doc);
8591 
8592  if (error == NULL) {
8593  *_response = response;
8594  } else {
8596  }
8597 
8598  return error;
8599 }
8600 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) {
8601  xmlDocPtr doc;
8602  xmlNodePtr root;
8603  xmlNodePtr child_node;
8604  ds3_tape_drive_response* response;
8605  ds3_error* error = NULL;
8606 
8607  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8608  if (error != NULL) {
8609  return error;
8610  }
8611 
8612  response = g_new0(ds3_tape_drive_response, 1);
8613 
8614  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8615  if (element_equal(child_node, "CleaningRequired")) {
8616  response->cleaning_required = xml_get_bool(client->log, doc, child_node);
8617  } else if (element_equal(child_node, "ErrorMessage")) {
8618  response->error_message = xml_get_string(doc, child_node);
8619  } else if (element_equal(child_node, "ForceTapeRemoval")) {
8620  response->force_tape_removal = xml_get_bool(client->log, doc, child_node);
8621  } else if (element_equal(child_node, "Id")) {
8622  response->id = xml_get_string(doc, child_node);
8623  } else if (element_equal(child_node, "LastCleaned")) {
8624  response->last_cleaned = xml_get_string(doc, child_node);
8625  } else if (element_equal(child_node, "MfgSerialNumber")) {
8626  response->mfg_serial_number = xml_get_string(doc, child_node);
8627  } else if (element_equal(child_node, "PartitionId")) {
8628  response->partition_id = xml_get_string(doc, child_node);
8629  } else if (element_equal(child_node, "Quiesced")) {
8630  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8631  if (text == NULL) {
8632  continue;
8633  }
8634  response->quiesced = _match_ds3_quiesced(client->log, text);
8635  xmlFree(text);
8636  } else if (element_equal(child_node, "ReservedTaskType")) {
8637  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8638  if (text == NULL) {
8639  continue;
8640  }
8641  response->reserved_task_type = _match_ds3_reserved_task_type(client->log, text);
8642  xmlFree(text);
8643  } else if (element_equal(child_node, "SerialNumber")) {
8644  response->serial_number = xml_get_string(doc, child_node);
8645  } else if (element_equal(child_node, "State")) {
8646  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8647  if (text == NULL) {
8648  continue;
8649  }
8650  response->state = _match_ds3_tape_drive_state(client->log, text);
8651  xmlFree(text);
8652  } else if (element_equal(child_node, "TapeId")) {
8653  response->tape_id = xml_get_string(doc, child_node);
8654  } else if (element_equal(child_node, "Type")) {
8655  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8656  if (text == NULL) {
8657  continue;
8658  }
8659  response->type = _match_ds3_tape_drive_type(client->log, text);
8660  xmlFree(text);
8661  } else {
8662  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_drive_response [%s]\n", child_node->name, root->name);
8663  }
8664 
8665  if (error != NULL) {
8666  break;
8667  }
8668 
8669  }
8670 
8671 
8672  xmlFreeDoc(doc);
8673 
8674  if (error == NULL) {
8675  *_response = response;
8676  } else {
8677  ds3_tape_drive_response_free(response);
8678  }
8679 
8680  return error;
8681 }
8682 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) {
8683  xmlDocPtr doc;
8684  xmlNodePtr root;
8685  xmlNodePtr child_node;
8686  ds3_tape_library_response* response;
8687  ds3_error* error = NULL;
8688 
8689  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8690  if (error != NULL) {
8691  return error;
8692  }
8693 
8694  response = g_new0(ds3_tape_library_response, 1);
8695 
8696  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8697  if (element_equal(child_node, "Id")) {
8698  response->id = xml_get_string(doc, child_node);
8699  } else if (element_equal(child_node, "ManagementUrl")) {
8700  response->management_url = xml_get_string(doc, child_node);
8701  } else if (element_equal(child_node, "Name")) {
8702  response->name = xml_get_string(doc, child_node);
8703  } else if (element_equal(child_node, "SerialNumber")) {
8704  response->serial_number = xml_get_string(doc, child_node);
8705  } else {
8706  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_library_response [%s]\n", child_node->name, root->name);
8707  }
8708 
8709  if (error != NULL) {
8710  break;
8711  }
8712 
8713  }
8714 
8715 
8716  xmlFreeDoc(doc);
8717 
8718  if (error == NULL) {
8719  *_response = response;
8720  } else {
8722  }
8723 
8724  return error;
8725 }
8726 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) {
8727  xmlDocPtr doc;
8728  xmlNodePtr root;
8729  xmlNodePtr child_node;
8730  ds3_tape_partition_response* response;
8731  ds3_error* error = NULL;
8732 
8733  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8734  if (error != NULL) {
8735  return error;
8736  }
8737 
8738  response = g_new0(ds3_tape_partition_response, 1);
8739 
8740  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8741  if (element_equal(child_node, "AutoCompactionEnabled")) {
8742  response->auto_compaction_enabled = xml_get_bool(client->log, doc, child_node);
8743  } else if (element_equal(child_node, "DriveType")) {
8744  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8745  if (text == NULL) {
8746  continue;
8747  }
8748  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
8749  xmlFree(text);
8750  } else if (element_equal(child_node, "ErrorMessage")) {
8751  response->error_message = xml_get_string(doc, child_node);
8752  } else if (element_equal(child_node, "Id")) {
8753  response->id = xml_get_string(doc, child_node);
8754  } else if (element_equal(child_node, "ImportExportConfiguration")) {
8755  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8756  if (text == NULL) {
8757  continue;
8758  }
8760  xmlFree(text);
8761  } else if (element_equal(child_node, "LibraryId")) {
8762  response->library_id = xml_get_string(doc, child_node);
8763  } else if (element_equal(child_node, "MinimumReadReservedDrives")) {
8764  response->minimum_read_reserved_drives = xml_get_uint16(doc, child_node);
8765  } else if (element_equal(child_node, "MinimumWriteReservedDrives")) {
8766  response->minimum_write_reserved_drives = xml_get_uint16(doc, child_node);
8767  } else if (element_equal(child_node, "Name")) {
8768  response->name = xml_get_string(doc, child_node);
8769  } else if (element_equal(child_node, "Quiesced")) {
8770  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8771  if (text == NULL) {
8772  continue;
8773  }
8774  response->quiesced = _match_ds3_quiesced(client->log, text);
8775  xmlFree(text);
8776  } else if (element_equal(child_node, "SerialNumber")) {
8777  response->serial_number = xml_get_string(doc, child_node);
8778  } else if (element_equal(child_node, "State")) {
8779  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8780  if (text == NULL) {
8781  continue;
8782  }
8783  response->state = _match_ds3_tape_partition_state(client->log, text);
8784  xmlFree(text);
8785  } else {
8786  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_response [%s]\n", child_node->name, root->name);
8787  }
8788 
8789  if (error != NULL) {
8790  break;
8791  }
8792 
8793  }
8794 
8795 
8796  xmlFreeDoc(doc);
8797 
8798  if (error == NULL) {
8799  *_response = response;
8800  } else {
8802  }
8803 
8804  return error;
8805 }
8806 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) {
8807  xmlDocPtr doc;
8808  xmlNodePtr root;
8809  xmlNodePtr child_node;
8810  ds3_azure_target_response* response;
8811  ds3_error* error = NULL;
8812 
8813  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8814  if (error != NULL) {
8815  return error;
8816  }
8817 
8818  response = g_new0(ds3_azure_target_response, 1);
8819 
8820  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8821  if (element_equal(child_node, "AccountKey")) {
8822  response->account_key = xml_get_string(doc, child_node);
8823  } else if (element_equal(child_node, "AccountName")) {
8824  response->account_name = xml_get_string(doc, child_node);
8825  } else if (element_equal(child_node, "AutoVerifyFrequencyInDays")) {
8826  response->auto_verify_frequency_in_days = xml_get_uint16(doc, child_node);
8827  } else if (element_equal(child_node, "CloudBucketPrefix")) {
8828  response->cloud_bucket_prefix = xml_get_string(doc, child_node);
8829  } else if (element_equal(child_node, "CloudBucketSuffix")) {
8830  response->cloud_bucket_suffix = xml_get_string(doc, child_node);
8831  } else if (element_equal(child_node, "DefaultReadPreference")) {
8832  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8833  if (text == NULL) {
8834  continue;
8835  }
8837  xmlFree(text);
8838  } else if (element_equal(child_node, "Https")) {
8839  response->https = xml_get_bool(client->log, doc, child_node);
8840  } else if (element_equal(child_node, "Id")) {
8841  response->id = xml_get_string(doc, child_node);
8842  } else if (element_equal(child_node, "LastFullyVerified")) {
8843  response->last_fully_verified = xml_get_string(doc, child_node);
8844  } else if (element_equal(child_node, "Name")) {
8845  response->name = xml_get_string(doc, child_node);
8846  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
8847  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
8848  } else if (element_equal(child_node, "Quiesced")) {
8849  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8850  if (text == NULL) {
8851  continue;
8852  }
8853  response->quiesced = _match_ds3_quiesced(client->log, text);
8854  xmlFree(text);
8855  } else if (element_equal(child_node, "State")) {
8856  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8857  if (text == NULL) {
8858  continue;
8859  }
8860  response->state = _match_ds3_target_state(client->log, text);
8861  xmlFree(text);
8862  } else {
8863  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_response [%s]\n", child_node->name, root->name);
8864  }
8865 
8866  if (error != NULL) {
8867  break;
8868  }
8869 
8870  }
8871 
8872 
8873  xmlFreeDoc(doc);
8874 
8875  if (error == NULL) {
8876  *_response = response;
8877  } else {
8879  }
8880 
8881  return error;
8882 }
8884  xmlDocPtr doc;
8885  xmlNodePtr root;
8886  xmlNodePtr child_node;
8888  ds3_error* error = NULL;
8889 
8890  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8891  if (error != NULL) {
8892  return error;
8893  }
8894 
8895  response = g_new0(ds3_azure_target_bucket_name_response, 1);
8896 
8897  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8898  if (element_equal(child_node, "BucketId")) {
8899  response->bucket_id = xml_get_string(doc, child_node);
8900  } else if (element_equal(child_node, "Id")) {
8901  response->id = xml_get_string(doc, child_node);
8902  } else if (element_equal(child_node, "Name")) {
8903  response->name = xml_get_string(doc, child_node);
8904  } else if (element_equal(child_node, "TargetId")) {
8905  response->target_id = xml_get_string(doc, child_node);
8906  } else {
8907  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_bucket_name_response [%s]\n", child_node->name, root->name);
8908  }
8909 
8910  if (error != NULL) {
8911  break;
8912  }
8913 
8914  }
8915 
8916 
8917  xmlFreeDoc(doc);
8918 
8919  if (error == NULL) {
8920  *_response = response;
8921  } else {
8923  }
8924 
8925  return error;
8926 }
8928  xmlDocPtr doc;
8929  xmlNodePtr root;
8930  xmlNodePtr child_node;
8932  ds3_error* error = NULL;
8933 
8934  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8935  if (error != NULL) {
8936  return error;
8937  }
8938 
8939  response = g_new0(ds3_azure_target_read_preference_response, 1);
8940 
8941  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8942  if (element_equal(child_node, "BucketId")) {
8943  response->bucket_id = xml_get_string(doc, child_node);
8944  } else if (element_equal(child_node, "Id")) {
8945  response->id = xml_get_string(doc, child_node);
8946  } else if (element_equal(child_node, "ReadPreference")) {
8947  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8948  if (text == NULL) {
8949  continue;
8950  }
8951  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
8952  xmlFree(text);
8953  } else if (element_equal(child_node, "TargetId")) {
8954  response->target_id = xml_get_string(doc, child_node);
8955  } else {
8956  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_read_preference_response [%s]\n", child_node->name, root->name);
8957  }
8958 
8959  if (error != NULL) {
8960  break;
8961  }
8962 
8963  }
8964 
8965 
8966  xmlFreeDoc(doc);
8967 
8968  if (error == NULL) {
8969  *_response = response;
8970  } else {
8972  }
8973 
8974  return error;
8975 }
8976 static ds3_error* _parse_top_level_ds3_target_response(const ds3_client* client, const ds3_request* request, ds3_target_response** _response, GByteArray* xml_blob) {
8977  xmlDocPtr doc;
8978  xmlNodePtr root;
8979  xmlNodePtr child_node;
8980  ds3_target_response* response;
8981  ds3_error* error = NULL;
8982 
8983  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8984  if (error != NULL) {
8985  return error;
8986  }
8987 
8988  response = g_new0(ds3_target_response, 1);
8989 
8990  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8991  if (element_equal(child_node, "AccessControlReplication")) {
8992  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8993  if (text == NULL) {
8994  continue;
8995  }
8997  xmlFree(text);
8998  } else if (element_equal(child_node, "AdminAuthId")) {
8999  response->admin_auth_id = xml_get_string(doc, child_node);
9000  } else if (element_equal(child_node, "AdminSecretKey")) {
9001  response->admin_secret_key = xml_get_string(doc, child_node);
9002  } else if (element_equal(child_node, "DataPathEndPoint")) {
9003  response->data_path_end_point = xml_get_string(doc, child_node);
9004  } else if (element_equal(child_node, "DataPathHttps")) {
9005  response->data_path_https = xml_get_bool(client->log, doc, child_node);
9006  } else if (element_equal(child_node, "DataPathPort")) {
9007  response->data_path_port = xml_get_uint16(doc, child_node);
9008  } else if (element_equal(child_node, "DataPathProxy")) {
9009  response->data_path_proxy = xml_get_string(doc, child_node);
9010  } else if (element_equal(child_node, "DataPathVerifyCertificate")) {
9011  response->data_path_verify_certificate = xml_get_bool(client->log, doc, child_node);
9012  } else if (element_equal(child_node, "DefaultReadPreference")) {
9013  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9014  if (text == NULL) {
9015  continue;
9016  }
9018  xmlFree(text);
9019  } else if (element_equal(child_node, "Id")) {
9020  response->id = xml_get_string(doc, child_node);
9021  } else if (element_equal(child_node, "Name")) {
9022  response->name = xml_get_string(doc, child_node);
9023  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
9024  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
9025  } else if (element_equal(child_node, "Quiesced")) {
9026  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9027  if (text == NULL) {
9028  continue;
9029  }
9030  response->quiesced = _match_ds3_quiesced(client->log, text);
9031  xmlFree(text);
9032  } else if (element_equal(child_node, "ReplicatedUserDefaultDataPolicy")) {
9033  response->replicated_user_default_data_policy = xml_get_string(doc, child_node);
9034  } else if (element_equal(child_node, "State")) {
9035  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9036  if (text == NULL) {
9037  continue;
9038  }
9039  response->state = _match_ds3_target_state(client->log, text);
9040  xmlFree(text);
9041  } else {
9042  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_response [%s]\n", child_node->name, root->name);
9043  }
9044 
9045  if (error != NULL) {
9046  break;
9047  }
9048 
9049  }
9050 
9051 
9052  xmlFreeDoc(doc);
9053 
9054  if (error == NULL) {
9055  *_response = response;
9056  } else {
9057  ds3_target_response_free(response);
9058  }
9059 
9060  return error;
9061 }
9062 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) {
9063  xmlDocPtr doc;
9064  xmlNodePtr root;
9065  xmlNodePtr child_node;
9067  ds3_error* error = NULL;
9068 
9069  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9070  if (error != NULL) {
9071  return error;
9072  }
9073 
9074  response = g_new0(ds3_target_read_preference_response, 1);
9075 
9076  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9077  if (element_equal(child_node, "BucketId")) {
9078  response->bucket_id = xml_get_string(doc, child_node);
9079  } else if (element_equal(child_node, "Id")) {
9080  response->id = xml_get_string(doc, child_node);
9081  } else if (element_equal(child_node, "ReadPreference")) {
9082  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9083  if (text == NULL) {
9084  continue;
9085  }
9086  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
9087  xmlFree(text);
9088  } else if (element_equal(child_node, "TargetId")) {
9089  response->target_id = xml_get_string(doc, child_node);
9090  } else {
9091  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_read_preference_response [%s]\n", child_node->name, root->name);
9092  }
9093 
9094  if (error != NULL) {
9095  break;
9096  }
9097 
9098  }
9099 
9100 
9101  xmlFreeDoc(doc);
9102 
9103  if (error == NULL) {
9104  *_response = response;
9105  } else {
9107  }
9108 
9109  return error;
9110 }
9111 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) {
9112  xmlDocPtr doc;
9113  xmlNodePtr root;
9114  xmlNodePtr child_node;
9115  ds3_s3_target_response* response;
9116  ds3_error* error = NULL;
9117 
9118  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9119  if (error != NULL) {
9120  return error;
9121  }
9122 
9123  response = g_new0(ds3_s3_target_response, 1);
9124 
9125  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9126  if (element_equal(child_node, "AccessKey")) {
9127  response->access_key = xml_get_string(doc, child_node);
9128  } else if (element_equal(child_node, "AutoVerifyFrequencyInDays")) {
9129  response->auto_verify_frequency_in_days = xml_get_uint16(doc, child_node);
9130  } else if (element_equal(child_node, "CloudBucketPrefix")) {
9131  response->cloud_bucket_prefix = xml_get_string(doc, child_node);
9132  } else if (element_equal(child_node, "CloudBucketSuffix")) {
9133  response->cloud_bucket_suffix = xml_get_string(doc, child_node);
9134  } else if (element_equal(child_node, "DataPathEndPoint")) {
9135  response->data_path_end_point = xml_get_string(doc, child_node);
9136  } else if (element_equal(child_node, "DefaultReadPreference")) {
9137  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9138  if (text == NULL) {
9139  continue;
9140  }
9142  xmlFree(text);
9143  } else if (element_equal(child_node, "Https")) {
9144  response->https = xml_get_bool(client->log, doc, child_node);
9145  } else if (element_equal(child_node, "Id")) {
9146  response->id = xml_get_string(doc, child_node);
9147  } else if (element_equal(child_node, "LastFullyVerified")) {
9148  response->last_fully_verified = xml_get_string(doc, child_node);
9149  } else if (element_equal(child_node, "Name")) {
9150  response->name = xml_get_string(doc, child_node);
9151  } else if (element_equal(child_node, "OfflineDataStagingWindowInTb")) {
9152  response->offline_data_staging_window_in_tb = xml_get_uint16(doc, child_node);
9153  } else if (element_equal(child_node, "PermitGoingOutOfSync")) {
9154  response->permit_going_out_of_sync = xml_get_bool(client->log, doc, child_node);
9155  } else if (element_equal(child_node, "ProxyDomain")) {
9156  response->proxy_domain = xml_get_string(doc, child_node);
9157  } else if (element_equal(child_node, "ProxyHost")) {
9158  response->proxy_host = xml_get_string(doc, child_node);
9159  } else if (element_equal(child_node, "ProxyPassword")) {
9160  response->proxy_password = xml_get_string(doc, child_node);
9161  } else if (element_equal(child_node, "ProxyPort")) {
9162  response->proxy_port = xml_get_uint16(doc, child_node);
9163  } else if (element_equal(child_node, "ProxyUsername")) {
9164  response->proxy_username = xml_get_string(doc, child_node);
9165  } else if (element_equal(child_node, "Quiesced")) {
9166  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9167  if (text == NULL) {
9168  continue;
9169  }
9170  response->quiesced = _match_ds3_quiesced(client->log, text);
9171  xmlFree(text);
9172  } else if (element_equal(child_node, "Region")) {
9173  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9174  if (text == NULL) {
9175  continue;
9176  }
9177  response->region = _match_ds3_s3_region(client->log, text);
9178  xmlFree(text);
9179  } else if (element_equal(child_node, "SecretKey")) {
9180  response->secret_key = xml_get_string(doc, child_node);
9181  } else if (element_equal(child_node, "StagedDataExpirationInDays")) {
9182  response->staged_data_expiration_in_days = xml_get_uint16(doc, child_node);
9183  } else if (element_equal(child_node, "State")) {
9184  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9185  if (text == NULL) {
9186  continue;
9187  }
9188  response->state = _match_ds3_target_state(client->log, text);
9189  xmlFree(text);
9190  } else {
9191  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_response [%s]\n", child_node->name, root->name);
9192  }
9193 
9194  if (error != NULL) {
9195  break;
9196  }
9197 
9198  }
9199 
9200 
9201  xmlFreeDoc(doc);
9202 
9203  if (error == NULL) {
9204  *_response = response;
9205  } else {
9206  ds3_s3_target_response_free(response);
9207  }
9208 
9209  return error;
9210 }
9211 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) {
9212  xmlDocPtr doc;
9213  xmlNodePtr root;
9214  xmlNodePtr child_node;
9216  ds3_error* error = NULL;
9217 
9218  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9219  if (error != NULL) {
9220  return error;
9221  }
9222 
9223  response = g_new0(ds3_s3_target_bucket_name_response, 1);
9224 
9225  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9226  if (element_equal(child_node, "BucketId")) {
9227  response->bucket_id = xml_get_string(doc, child_node);
9228  } else if (element_equal(child_node, "Id")) {
9229  response->id = xml_get_string(doc, child_node);
9230  } else if (element_equal(child_node, "Name")) {
9231  response->name = xml_get_string(doc, child_node);
9232  } else if (element_equal(child_node, "TargetId")) {
9233  response->target_id = xml_get_string(doc, child_node);
9234  } else {
9235  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_bucket_name_response [%s]\n", child_node->name, root->name);
9236  }
9237 
9238  if (error != NULL) {
9239  break;
9240  }
9241 
9242  }
9243 
9244 
9245  xmlFreeDoc(doc);
9246 
9247  if (error == NULL) {
9248  *_response = response;
9249  } else {
9251  }
9252 
9253  return error;
9254 }
9256  xmlDocPtr doc;
9257  xmlNodePtr root;
9258  xmlNodePtr child_node;
9260  ds3_error* error = NULL;
9261 
9262  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9263  if (error != NULL) {
9264  return error;
9265  }
9266 
9267  response = g_new0(ds3_s3_target_read_preference_response, 1);
9268 
9269  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9270  if (element_equal(child_node, "BucketId")) {
9271  response->bucket_id = xml_get_string(doc, child_node);
9272  } else if (element_equal(child_node, "Id")) {
9273  response->id = xml_get_string(doc, child_node);
9274  } else if (element_equal(child_node, "ReadPreference")) {
9275  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9276  if (text == NULL) {
9277  continue;
9278  }
9279  response->read_preference = _match_ds3_target_read_preference_type(client->log, text);
9280  xmlFree(text);
9281  } else if (element_equal(child_node, "TargetId")) {
9282  response->target_id = xml_get_string(doc, child_node);
9283  } else {
9284  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_read_preference_response [%s]\n", child_node->name, root->name);
9285  }
9286 
9287  if (error != NULL) {
9288  break;
9289  }
9290 
9291  }
9292 
9293 
9294  xmlFreeDoc(doc);
9295 
9296  if (error == NULL) {
9297  *_response = response;
9298  } else {
9300  }
9301 
9302  return error;
9303 }
9305  xmlDocPtr doc;
9306  xmlNodePtr root;
9307  xmlNodePtr child_node;
9309  ds3_error* error = NULL;
9310  GPtrArray* tasks_array = g_ptr_array_new();
9311 
9312  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9313  if (error != NULL) {
9314  return error;
9315  }
9316 
9317  response = g_new0(ds3_blob_store_tasks_information_response, 1);
9318 
9319  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9320  if (element_equal(child_node, "Tasks")) {
9321  ds3_blob_store_task_information_response* tasks_response = NULL;
9322  error = _parse_ds3_blob_store_task_information_response(client, doc, child_node, &tasks_response);
9323  response->tasks = (ds3_blob_store_task_information_response**)tasks_array->pdata;
9324  g_ptr_array_add(tasks_array, tasks_response);
9325  } else {
9326  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_blob_store_tasks_information_response [%s]\n", child_node->name, root->name);
9327  }
9328 
9329  if (error != NULL) {
9330  break;
9331  }
9332 
9333  }
9334 
9335  response->tasks = (ds3_blob_store_task_information_response**)tasks_array->pdata;
9336  response->num_tasks = tasks_array->len;
9337  g_ptr_array_free(tasks_array, FALSE);
9338 
9339  xmlFreeDoc(doc);
9340 
9341  if (error == NULL) {
9342  *_response = response;
9343  } else {
9345  }
9346 
9347  return error;
9348 }
9349 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) {
9350  xmlDocPtr doc;
9351  xmlNodePtr root;
9352  xmlNodePtr child_node;
9354  ds3_error* error = NULL;
9355  GPtrArray* filesystems_array = g_ptr_array_new();
9356 
9357  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9358  if (error != NULL) {
9359  return error;
9360  }
9361 
9362  response = g_new0(ds3_cache_information_response, 1);
9363 
9364  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9365  if (element_equal(child_node, "Filesystems")) {
9366  ds3_cache_filesystem_information_response* filesystems_response = NULL;
9367  error = _parse_ds3_cache_filesystem_information_response(client, doc, child_node, &filesystems_response);
9368  response->filesystems = (ds3_cache_filesystem_information_response**)filesystems_array->pdata;
9369  g_ptr_array_add(filesystems_array, filesystems_response);
9370  } else {
9371  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_information_response [%s]\n", child_node->name, root->name);
9372  }
9373 
9374  if (error != NULL) {
9375  break;
9376  }
9377 
9378  }
9379 
9380  response->filesystems = (ds3_cache_filesystem_information_response**)filesystems_array->pdata;
9381  response->num_filesystems = filesystems_array->len;
9382  g_ptr_array_free(filesystems_array, FALSE);
9383 
9384  xmlFreeDoc(doc);
9385 
9386  if (error == NULL) {
9387  *_response = response;
9388  } else {
9390  }
9391 
9392  return error;
9393 }
9395  xmlDocPtr doc;
9396  xmlNodePtr root;
9397  xmlNodePtr child_node;
9399  ds3_error* error = NULL;
9400 
9401  error = _get_request_xml_nodes(xml_blob, &doc, &root, "CompleteMultipartUploadResult");
9402  if (error != NULL) {
9403  return error;
9404  }
9405 
9406  response = g_new0(ds3_complete_multipart_upload_result_response, 1);
9407 
9408  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9409  if (element_equal(child_node, "Bucket")) {
9410  response->bucket = xml_get_string(doc, child_node);
9411  } else if (element_equal(child_node, "ETag")) {
9412  response->e_tag = xml_get_string(doc, child_node);
9413  } else if (element_equal(child_node, "Key")) {
9414  response->key = xml_get_string(doc, child_node);
9415  } else if (element_equal(child_node, "Location")) {
9416  response->location = xml_get_string(doc, child_node);
9417  } else {
9418  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_complete_multipart_upload_result_response [%s]\n", child_node->name, root->name);
9419  }
9420 
9421  if (error != NULL) {
9422  break;
9423  }
9424 
9425  }
9426 
9427 
9428  xmlFreeDoc(doc);
9429 
9430  if (error == NULL) {
9431  *_response = response;
9432  } else {
9434  }
9435 
9436  return error;
9437 }
9439  xmlDocPtr doc;
9440  xmlNodePtr root;
9441  xmlNodePtr child_node;
9443  ds3_error* error = NULL;
9444  GPtrArray* tape_types_array = g_ptr_array_new();
9445 
9446  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9447  if (error != NULL) {
9448  return error;
9449  }
9450 
9451  response = g_new0(ds3_detailed_tape_partition_response, 1);
9452 
9453  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9454  if (element_equal(child_node, "AutoCompactionEnabled")) {
9455  response->auto_compaction_enabled = xml_get_bool(client->log, doc, child_node);
9456  } else if (element_equal(child_node, "DriveType")) {
9457  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9458  if (text == NULL) {
9459  continue;
9460  }
9461  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
9462  xmlFree(text);
9463  } else if (element_equal(child_node, "DriveTypes")) {
9464  xmlNodePtr loop_node;
9465  int num_nodes = 0;
9466  GByteArray* enum_array = g_byte_array_new();
9467  ds3_tape_drive_type drive_types;
9468  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
9469  xmlChar* text = xmlNodeListGetString(doc, loop_node, 1);
9470  if (text == NULL) {
9471  continue;
9472  }
9473  drive_types = _match_ds3_tape_drive_type(client->log, text);
9474  g_byte_array_append(enum_array, (const guint8*) &drive_types, sizeof(ds3_tape_drive_type));
9475  }
9476  response->drive_types = (ds3_tape_drive_type*)enum_array->data;
9477  response->num_drive_types = enum_array->len;
9478  g_byte_array_free(enum_array, FALSE);
9479  } else if (element_equal(child_node, "ErrorMessage")) {
9480  response->error_message = xml_get_string(doc, child_node);
9481  } else if (element_equal(child_node, "Id")) {
9482  response->id = xml_get_string(doc, child_node);
9483  } else if (element_equal(child_node, "ImportExportConfiguration")) {
9484  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9485  if (text == NULL) {
9486  continue;
9487  }
9489  xmlFree(text);
9490  } else if (element_equal(child_node, "LibraryId")) {
9491  response->library_id = xml_get_string(doc, child_node);
9492  } else if (element_equal(child_node, "MinimumReadReservedDrives")) {
9493  response->minimum_read_reserved_drives = xml_get_uint16(doc, child_node);
9494  } else if (element_equal(child_node, "MinimumWriteReservedDrives")) {
9495  response->minimum_write_reserved_drives = xml_get_uint16(doc, child_node);
9496  } else if (element_equal(child_node, "Name")) {
9497  response->name = xml_get_string(doc, child_node);
9498  } else if (element_equal(child_node, "Quiesced")) {
9499  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9500  if (text == NULL) {
9501  continue;
9502  }
9503  response->quiesced = _match_ds3_quiesced(client->log, text);
9504  xmlFree(text);
9505  } else if (element_equal(child_node, "SerialNumber")) {
9506  response->serial_number = xml_get_string(doc, child_node);
9507  } else if (element_equal(child_node, "State")) {
9508  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9509  if (text == NULL) {
9510  continue;
9511  }
9512  response->state = _match_ds3_tape_partition_state(client->log, text);
9513  xmlFree(text);
9514  } else if (element_equal(child_node, "TapeTypes")) {
9515  xmlNodePtr loop_node;
9516  GPtrArray* tape_types_array = g_ptr_array_new();
9517  int num_nodes = 0;
9518  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
9519  ds3_str* tape_types = xml_get_string(doc, loop_node);
9520  g_ptr_array_add(tape_types_array, tape_types);
9521  }
9522  response->tape_types = (ds3_str**)tape_types_array->pdata;
9523  response->num_tape_types = tape_types_array->len;
9524  g_ptr_array_free(tape_types_array, FALSE);
9525  } else {
9526  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_tape_partition_response [%s]\n", child_node->name, root->name);
9527  }
9528 
9529  if (error != NULL) {
9530  break;
9531  }
9532 
9533  }
9534 
9535  response->tape_types = (ds3_str**)tape_types_array->pdata;
9536  response->num_tape_types = tape_types_array->len;
9537  g_ptr_array_free(tape_types_array, FALSE);
9538 
9539  xmlFreeDoc(doc);
9540 
9541  if (error == NULL) {
9542  *_response = response;
9543  } else {
9545  }
9546 
9547  return error;
9548 }
9550  xmlDocPtr doc;
9551  xmlNodePtr root;
9552  xmlNodePtr child_node;
9554  ds3_error* error = NULL;
9555 
9556  error = _get_request_xml_nodes(xml_blob, &doc, &root, "InitiateMultipartUploadResult");
9557  if (error != NULL) {
9558  return error;
9559  }
9560 
9561  response = g_new0(ds3_initiate_multipart_upload_result_response, 1);
9562 
9563  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9564  if (element_equal(child_node, "Bucket")) {
9565  response->bucket = xml_get_string(doc, child_node);
9566  } else if (element_equal(child_node, "Key")) {
9567  response->key = xml_get_string(doc, child_node);
9568  } else if (element_equal(child_node, "UploadId")) {
9569  response->upload_id = xml_get_string(doc, child_node);
9570  } else {
9571  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_initiate_multipart_upload_result_response [%s]\n", child_node->name, root->name);
9572  }
9573 
9574  if (error != NULL) {
9575  break;
9576  }
9577 
9578  }
9579 
9580 
9581  xmlFreeDoc(doc);
9582 
9583  if (error == NULL) {
9584  *_response = response;
9585  } else {
9587  }
9588 
9589  return error;
9590 }
9591 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) {
9592  xmlDocPtr doc;
9593  xmlNodePtr root;
9594  xmlNodePtr child_node;
9596  ds3_error* error = NULL;
9597 
9598  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9599  if (error != NULL) {
9600  return error;
9601  }
9602 
9603  response = g_new0(ds3_system_information_response, 1);
9604 
9605  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9606  if (element_equal(child_node, "ApiVersion")) {
9607  response->api_version = xml_get_string(doc, child_node);
9608  } else if (element_equal(child_node, "BackendActivated")) {
9609  response->backend_activated = xml_get_bool(client->log, doc, child_node);
9610  } else if (element_equal(child_node, "BuildInformation")) {
9611  error = _parse_ds3_build_information_response(client, doc, child_node, &response->build_information);
9612  } else if (element_equal(child_node, "InstanceId")) {
9613  response->instance_id = xml_get_string(doc, child_node);
9614  } else if (element_equal(child_node, "Now")) {
9615  response->now = xml_get_uint64(doc, child_node);
9616  } else if (element_equal(child_node, "SerialNumber")) {
9617  response->serial_number = xml_get_string(doc, child_node);
9618  } else {
9619  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_information_response [%s]\n", child_node->name, root->name);
9620  }
9621 
9622  if (error != NULL) {
9623  break;
9624  }
9625 
9626  }
9627 
9628 
9629  xmlFreeDoc(doc);
9630 
9631  if (error == NULL) {
9632  *_response = response;
9633  } else {
9635  }
9636 
9637  return error;
9638 }
9640  xmlDocPtr doc;
9641  xmlNodePtr root;
9642  xmlNodePtr child_node;
9644  ds3_error* error = NULL;
9645 
9646  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9647  if (error != NULL) {
9648  return error;
9649  }
9650 
9651  response = g_new0(ds3_health_verification_result_response, 1);
9652 
9653  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9654  if (element_equal(child_node, "DatabaseFilesystemFreeSpace")) {
9655  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9656  if (text == NULL) {
9657  continue;
9658  }
9660  xmlFree(text);
9661  } else if (element_equal(child_node, "MsRequiredToVerifyDataPlannerHealth")) {
9662  response->ms_required_to_verify_data_planner_health = xml_get_uint64(doc, child_node);
9663  } else {
9664  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_health_verification_result_response [%s]\n", child_node->name, root->name);
9665  }
9666 
9667  if (error != NULL) {
9668  break;
9669  }
9670 
9671  }
9672 
9673 
9674  xmlFreeDoc(doc);
9675 
9676  if (error == NULL) {
9677  *_response = response;
9678  } else {
9680  }
9681 
9682  return error;
9683 }
9684 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) {
9685  xmlDocPtr doc;
9686  xmlNodePtr root;
9687  xmlNodePtr child_node;
9689  ds3_error* error = NULL;
9690  GPtrArray* failures_array = g_ptr_array_new();
9691 
9692  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9693  if (error != NULL) {
9694  return error;
9695  }
9696 
9697  response = g_new0(ds3_tape_failure_list_response, 1);
9698 
9699  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9700  if (element_equal(child_node, "Failure")) {
9701  ds3_tape_failure_response* failures_response = NULL;
9702  error = _parse_ds3_tape_failure_response(client, doc, child_node, &failures_response);
9703  response->failures = (ds3_tape_failure_response**)failures_array->pdata;
9704  g_ptr_array_add(failures_array, failures_response);
9705  } else {
9706  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_list_response [%s]\n", child_node->name, root->name);
9707  }
9708 
9709  if (error != NULL) {
9710  break;
9711  }
9712 
9713  }
9714 
9715  response->failures = (ds3_tape_failure_response**)failures_array->pdata;
9716  response->num_failures = failures_array->len;
9717  g_ptr_array_free(failures_array, FALSE);
9718 
9719  xmlFreeDoc(doc);
9720 
9721  if (error == NULL) {
9722  *_response = response;
9723  } else {
9725  }
9726 
9727  return error;
9728 }
9729 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) {
9730  xmlDocPtr doc;
9731  xmlNodePtr root;
9732  xmlNodePtr child_node;
9733  ds3_bucket_acl_list_response* response;
9734  ds3_error* error = NULL;
9735  GPtrArray* bucket_acls_array = g_ptr_array_new();
9736 
9737  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9738  if (error != NULL) {
9739  return error;
9740  }
9741 
9742  response = g_new0(ds3_bucket_acl_list_response, 1);
9743 
9744  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9745  if (element_equal(child_node, "BucketAcl")) {
9746  ds3_bucket_acl_response* bucket_acls_response = NULL;
9747  error = _parse_ds3_bucket_acl_response(client, doc, child_node, &bucket_acls_response);
9748  response->bucket_acls = (ds3_bucket_acl_response**)bucket_acls_array->pdata;
9749  g_ptr_array_add(bucket_acls_array, bucket_acls_response);
9750  } else {
9751  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_acl_list_response [%s]\n", child_node->name, root->name);
9752  }
9753 
9754  if (error != NULL) {
9755  break;
9756  }
9757 
9758  }
9759 
9760  response->bucket_acls = (ds3_bucket_acl_response**)bucket_acls_array->pdata;
9761  response->num_bucket_acls = bucket_acls_array->len;
9762  g_ptr_array_free(bucket_acls_array, FALSE);
9763 
9764  xmlFreeDoc(doc);
9765 
9766  if (error == NULL) {
9767  *_response = response;
9768  } else {
9770  }
9771 
9772  return error;
9773 }
9774 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) {
9775  xmlDocPtr doc;
9776  xmlNodePtr root;
9777  xmlNodePtr child_node;
9779  ds3_error* error = NULL;
9780  GPtrArray* data_policy_acls_array = g_ptr_array_new();
9781 
9782  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9783  if (error != NULL) {
9784  return error;
9785  }
9786 
9787  response = g_new0(ds3_data_policy_acl_list_response, 1);
9788 
9789  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9790  if (element_equal(child_node, "DataPolicyAcl")) {
9791  ds3_data_policy_acl_response* data_policy_acls_response = NULL;
9792  error = _parse_ds3_data_policy_acl_response(client, doc, child_node, &data_policy_acls_response);
9793  response->data_policy_acls = (ds3_data_policy_acl_response**)data_policy_acls_array->pdata;
9794  g_ptr_array_add(data_policy_acls_array, data_policy_acls_response);
9795  } else {
9796  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_acl_list_response [%s]\n", child_node->name, root->name);
9797  }
9798 
9799  if (error != NULL) {
9800  break;
9801  }
9802 
9803  }
9804 
9805  response->data_policy_acls = (ds3_data_policy_acl_response**)data_policy_acls_array->pdata;
9806  response->num_data_policy_acls = data_policy_acls_array->len;
9807  g_ptr_array_free(data_policy_acls_array, FALSE);
9808 
9809  xmlFreeDoc(doc);
9810 
9811  if (error == NULL) {
9812  *_response = response;
9813  } else {
9815  }
9816 
9817  return error;
9818 }
9819 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) {
9820  xmlDocPtr doc;
9821  xmlNodePtr root;
9822  xmlNodePtr child_node;
9823  ds3_bucket_list_response* response;
9824  ds3_error* error = NULL;
9825  GPtrArray* buckets_array = g_ptr_array_new();
9826 
9827  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9828  if (error != NULL) {
9829  return error;
9830  }
9831 
9832  response = g_new0(ds3_bucket_list_response, 1);
9833 
9834  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9835  if (element_equal(child_node, "Bucket")) {
9836  ds3_bucket_response* buckets_response = NULL;
9837  error = _parse_ds3_bucket_response(client, doc, child_node, &buckets_response);
9838  response->buckets = (ds3_bucket_response**)buckets_array->pdata;
9839  g_ptr_array_add(buckets_array, buckets_response);
9840  } else {
9841  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_list_response [%s]\n", child_node->name, root->name);
9842  }
9843 
9844  if (error != NULL) {
9845  break;
9846  }
9847 
9848  }
9849 
9850  response->buckets = (ds3_bucket_response**)buckets_array->pdata;
9851  response->num_buckets = buckets_array->len;
9852  g_ptr_array_free(buckets_array, FALSE);
9853 
9854  xmlFreeDoc(doc);
9855 
9856  if (error == NULL) {
9857  *_response = response;
9858  } else {
9860  }
9861 
9862  return error;
9863 }
9864 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) {
9865  xmlDocPtr doc;
9866  xmlNodePtr root;
9867  xmlNodePtr child_node;
9869  ds3_error* error = NULL;
9870  GPtrArray* cache_filesystems_array = g_ptr_array_new();
9871 
9872  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9873  if (error != NULL) {
9874  return error;
9875  }
9876 
9877  response = g_new0(ds3_cache_filesystem_list_response, 1);
9878 
9879  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9880  if (element_equal(child_node, "CacheFilesystem")) {
9881  ds3_cache_filesystem_response* cache_filesystems_response = NULL;
9882  error = _parse_ds3_cache_filesystem_response(client, doc, child_node, &cache_filesystems_response);
9883  response->cache_filesystems = (ds3_cache_filesystem_response**)cache_filesystems_array->pdata;
9884  g_ptr_array_add(cache_filesystems_array, cache_filesystems_response);
9885  } else {
9886  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_list_response [%s]\n", child_node->name, root->name);
9887  }
9888 
9889  if (error != NULL) {
9890  break;
9891  }
9892 
9893  }
9894 
9895  response->cache_filesystems = (ds3_cache_filesystem_response**)cache_filesystems_array->pdata;
9896  response->num_cache_filesystems = cache_filesystems_array->len;
9897  g_ptr_array_free(cache_filesystems_array, FALSE);
9898 
9899  xmlFreeDoc(doc);
9900 
9901  if (error == NULL) {
9902  *_response = response;
9903  } else {
9905  }
9906 
9907  return error;
9908 }
9910  xmlDocPtr doc;
9911  xmlNodePtr root;
9912  xmlNodePtr child_node;
9914  ds3_error* error = NULL;
9915  GPtrArray* azure_data_replication_rules_array = g_ptr_array_new();
9916 
9917  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9918  if (error != NULL) {
9919  return error;
9920  }
9921 
9922  response = g_new0(ds3_azure_data_replication_rule_list_response, 1);
9923 
9924  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9925  if (element_equal(child_node, "AzureDataReplicationRule")) {
9926  ds3_azure_data_replication_rule_response* azure_data_replication_rules_response = NULL;
9927  error = _parse_ds3_azure_data_replication_rule_response(client, doc, child_node, &azure_data_replication_rules_response);
9928  response->azure_data_replication_rules = (ds3_azure_data_replication_rule_response**)azure_data_replication_rules_array->pdata;
9929  g_ptr_array_add(azure_data_replication_rules_array, azure_data_replication_rules_response);
9930  } else {
9931  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);
9932  }
9933 
9934  if (error != NULL) {
9935  break;
9936  }
9937 
9938  }
9939 
9940  response->azure_data_replication_rules = (ds3_azure_data_replication_rule_response**)azure_data_replication_rules_array->pdata;
9941  response->num_azure_data_replication_rules = azure_data_replication_rules_array->len;
9942  g_ptr_array_free(azure_data_replication_rules_array, FALSE);
9943 
9944  xmlFreeDoc(doc);
9945 
9946  if (error == NULL) {
9947  *_response = response;
9948  } else {
9950  }
9951 
9952  return error;
9953 }
9955  xmlDocPtr doc;
9956  xmlNodePtr root;
9957  xmlNodePtr child_node;
9959  ds3_error* error = NULL;
9960  GPtrArray* data_persistence_rules_array = g_ptr_array_new();
9961 
9962  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9963  if (error != NULL) {
9964  return error;
9965  }
9966 
9967  response = g_new0(ds3_data_persistence_rule_list_response, 1);
9968 
9969  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9970  if (element_equal(child_node, "DataPersistenceRule")) {
9971  ds3_data_persistence_rule_response* data_persistence_rules_response = NULL;
9972  error = _parse_ds3_data_persistence_rule_response(client, doc, child_node, &data_persistence_rules_response);
9973  response->data_persistence_rules = (ds3_data_persistence_rule_response**)data_persistence_rules_array->pdata;
9974  g_ptr_array_add(data_persistence_rules_array, data_persistence_rules_response);
9975  } else {
9976  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_persistence_rule_list_response [%s]\n", child_node->name, root->name);
9977  }
9978 
9979  if (error != NULL) {
9980  break;
9981  }
9982 
9983  }
9984 
9985  response->data_persistence_rules = (ds3_data_persistence_rule_response**)data_persistence_rules_array->pdata;
9986  response->num_data_persistence_rules = data_persistence_rules_array->len;
9987  g_ptr_array_free(data_persistence_rules_array, FALSE);
9988 
9989  xmlFreeDoc(doc);
9990 
9991  if (error == NULL) {
9992  *_response = response;
9993  } else {
9995  }
9996 
9997  return error;
9998 }
9999 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) {
10000  xmlDocPtr doc;
10001  xmlNodePtr root;
10002  xmlNodePtr child_node;
10004  ds3_error* error = NULL;
10005  GPtrArray* data_policies_array = g_ptr_array_new();
10006 
10007  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10008  if (error != NULL) {
10009  return error;
10010  }
10011 
10012  response = g_new0(ds3_data_policy_list_response, 1);
10013 
10014  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10015  if (element_equal(child_node, "DataPolicy")) {
10016  ds3_data_policy_response* data_policies_response = NULL;
10017  error = _parse_ds3_data_policy_response(client, doc, child_node, &data_policies_response);
10018  response->data_policies = (ds3_data_policy_response**)data_policies_array->pdata;
10019  g_ptr_array_add(data_policies_array, data_policies_response);
10020  } else {
10021  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_list_response [%s]\n", child_node->name, root->name);
10022  }
10023 
10024  if (error != NULL) {
10025  break;
10026  }
10027 
10028  }
10029 
10030  response->data_policies = (ds3_data_policy_response**)data_policies_array->pdata;
10031  response->num_data_policies = data_policies_array->len;
10032  g_ptr_array_free(data_policies_array, FALSE);
10033 
10034  xmlFreeDoc(doc);
10035 
10036  if (error == NULL) {
10037  *_response = response;
10038  } else {
10040  }
10041 
10042  return error;
10043 }
10045  xmlDocPtr doc;
10046  xmlNodePtr root;
10047  xmlNodePtr child_node;
10049  ds3_error* error = NULL;
10050  GPtrArray* ds3_data_replication_rules_array = g_ptr_array_new();
10051 
10052  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10053  if (error != NULL) {
10054  return error;
10055  }
10056 
10057  response = g_new0(ds3_data_replication_rule_list_response, 1);
10058 
10059  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10060  if (element_equal(child_node, "Ds3DataReplicationRule")) {
10061  ds3_data_replication_rule_response* ds3_data_replication_rules_response = NULL;
10062  error = _parse_ds3_data_replication_rule_response(client, doc, child_node, &ds3_data_replication_rules_response);
10063  response->ds3_data_replication_rules = (ds3_data_replication_rule_response**)ds3_data_replication_rules_array->pdata;
10064  g_ptr_array_add(ds3_data_replication_rules_array, ds3_data_replication_rules_response);
10065  } else {
10066  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_replication_rule_list_response [%s]\n", child_node->name, root->name);
10067  }
10068 
10069  if (error != NULL) {
10070  break;
10071  }
10072 
10073  }
10074 
10075  response->ds3_data_replication_rules = (ds3_data_replication_rule_response**)ds3_data_replication_rules_array->pdata;
10076  response->num_ds3_data_replication_rules = ds3_data_replication_rules_array->len;
10077  g_ptr_array_free(ds3_data_replication_rules_array, FALSE);
10078 
10079  xmlFreeDoc(doc);
10080 
10081  if (error == NULL) {
10082  *_response = response;
10083  } else {
10085  }
10086 
10087  return error;
10088 }
10090  xmlDocPtr doc;
10091  xmlNodePtr root;
10092  xmlNodePtr child_node;
10094  ds3_error* error = NULL;
10095  GPtrArray* s3_data_replication_rules_array = g_ptr_array_new();
10096 
10097  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10098  if (error != NULL) {
10099  return error;
10100  }
10101 
10102  response = g_new0(ds3_s3_data_replication_rule_list_response, 1);
10103 
10104  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10105  if (element_equal(child_node, "S3DataReplicationRule")) {
10106  ds3_s3_data_replication_rule_response* s3_data_replication_rules_response = NULL;
10107  error = _parse_ds3_s3_data_replication_rule_response(client, doc, child_node, &s3_data_replication_rules_response);
10108  response->s3_data_replication_rules = (ds3_s3_data_replication_rule_response**)s3_data_replication_rules_array->pdata;
10109  g_ptr_array_add(s3_data_replication_rules_array, s3_data_replication_rules_response);
10110  } else {
10111  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);
10112  }
10113 
10114  if (error != NULL) {
10115  break;
10116  }
10117 
10118  }
10119 
10120  response->s3_data_replication_rules = (ds3_s3_data_replication_rule_response**)s3_data_replication_rules_array->pdata;
10121  response->num_s3_data_replication_rules = s3_data_replication_rules_array->len;
10122  g_ptr_array_free(s3_data_replication_rules_array, FALSE);
10123 
10124  xmlFreeDoc(doc);
10125 
10126  if (error == NULL) {
10127  *_response = response;
10128  } else {
10130  }
10131 
10132  return error;
10133 }
10134 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) {
10135  xmlDocPtr doc;
10136  xmlNodePtr root;
10137  xmlNodePtr child_node;
10139  ds3_error* error = NULL;
10140  GPtrArray* degraded_blobs_array = g_ptr_array_new();
10141 
10142  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10143  if (error != NULL) {
10144  return error;
10145  }
10146 
10147  response = g_new0(ds3_degraded_blob_list_response, 1);
10148 
10149  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10150  if (element_equal(child_node, "DegradedBlob")) {
10151  ds3_degraded_blob_response* degraded_blobs_response = NULL;
10152  error = _parse_ds3_degraded_blob_response(client, doc, child_node, &degraded_blobs_response);
10153  response->degraded_blobs = (ds3_degraded_blob_response**)degraded_blobs_array->pdata;
10154  g_ptr_array_add(degraded_blobs_array, degraded_blobs_response);
10155  } else {
10156  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_degraded_blob_list_response [%s]\n", child_node->name, root->name);
10157  }
10158 
10159  if (error != NULL) {
10160  break;
10161  }
10162 
10163  }
10164 
10165  response->degraded_blobs = (ds3_degraded_blob_response**)degraded_blobs_array->pdata;
10166  response->num_degraded_blobs = degraded_blobs_array->len;
10167  g_ptr_array_free(degraded_blobs_array, FALSE);
10168 
10169  xmlFreeDoc(doc);
10170 
10171  if (error == NULL) {
10172  *_response = response;
10173  } else {
10175  }
10176 
10177  return error;
10178 }
10180  xmlDocPtr doc;
10181  xmlNodePtr root;
10182  xmlNodePtr child_node;
10184  ds3_error* error = NULL;
10185  GPtrArray* suspect_blob_azure_targets_array = g_ptr_array_new();
10186 
10187  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10188  if (error != NULL) {
10189  return error;
10190  }
10191 
10192  response = g_new0(ds3_suspect_blob_azure_target_list_response, 1);
10193 
10194  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10195  if (element_equal(child_node, "SuspectBlobAzureTarget")) {
10196  ds3_suspect_blob_azure_target_response* suspect_blob_azure_targets_response = NULL;
10197  error = _parse_ds3_suspect_blob_azure_target_response(client, doc, child_node, &suspect_blob_azure_targets_response);
10198  response->suspect_blob_azure_targets = (ds3_suspect_blob_azure_target_response**)suspect_blob_azure_targets_array->pdata;
10199  g_ptr_array_add(suspect_blob_azure_targets_array, suspect_blob_azure_targets_response);
10200  } else {
10201  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);
10202  }
10203 
10204  if (error != NULL) {
10205  break;
10206  }
10207 
10208  }
10209 
10210  response->suspect_blob_azure_targets = (ds3_suspect_blob_azure_target_response**)suspect_blob_azure_targets_array->pdata;
10211  response->num_suspect_blob_azure_targets = suspect_blob_azure_targets_array->len;
10212  g_ptr_array_free(suspect_blob_azure_targets_array, FALSE);
10213 
10214  xmlFreeDoc(doc);
10215 
10216  if (error == NULL) {
10217  *_response = response;
10218  } else {
10220  }
10221 
10222  return error;
10223 }
10225  xmlDocPtr doc;
10226  xmlNodePtr root;
10227  xmlNodePtr child_node;
10229  ds3_error* error = NULL;
10230  GPtrArray* suspect_blob_ds3_targets_array = g_ptr_array_new();
10231 
10232  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10233  if (error != NULL) {
10234  return error;
10235  }
10236 
10237  response = g_new0(ds3_suspect_blob_ds3_target_list_response, 1);
10238 
10239  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10240  if (element_equal(child_node, "SuspectBlobDs3Target")) {
10241  ds3_suspect_blob_ds3_target_response* suspect_blob_ds3_targets_response = NULL;
10242  error = _parse_ds3_suspect_blob_ds3_target_response(client, doc, child_node, &suspect_blob_ds3_targets_response);
10243  response->suspect_blob_ds3_targets = (ds3_suspect_blob_ds3_target_response**)suspect_blob_ds3_targets_array->pdata;
10244  g_ptr_array_add(suspect_blob_ds3_targets_array, suspect_blob_ds3_targets_response);
10245  } else {
10246  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);
10247  }
10248 
10249  if (error != NULL) {
10250  break;
10251  }
10252 
10253  }
10254 
10255  response->suspect_blob_ds3_targets = (ds3_suspect_blob_ds3_target_response**)suspect_blob_ds3_targets_array->pdata;
10256  response->num_suspect_blob_ds3_targets = suspect_blob_ds3_targets_array->len;
10257  g_ptr_array_free(suspect_blob_ds3_targets_array, FALSE);
10258 
10259  xmlFreeDoc(doc);
10260 
10261  if (error == NULL) {
10262  *_response = response;
10263  } else {
10265  }
10266 
10267  return error;
10268 }
10269 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) {
10270  xmlDocPtr doc;
10271  xmlNodePtr root;
10272  xmlNodePtr child_node;
10274  ds3_error* error = NULL;
10275  GPtrArray* suspect_blob_pools_array = g_ptr_array_new();
10276 
10277  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10278  if (error != NULL) {
10279  return error;
10280  }
10281 
10282  response = g_new0(ds3_suspect_blob_pool_list_response, 1);
10283 
10284  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10285  if (element_equal(child_node, "SuspectBlobPool")) {
10286  ds3_suspect_blob_pool_response* suspect_blob_pools_response = NULL;
10287  error = _parse_ds3_suspect_blob_pool_response(client, doc, child_node, &suspect_blob_pools_response);
10288  response->suspect_blob_pools = (ds3_suspect_blob_pool_response**)suspect_blob_pools_array->pdata;
10289  g_ptr_array_add(suspect_blob_pools_array, suspect_blob_pools_response);
10290  } else {
10291  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_pool_list_response [%s]\n", child_node->name, root->name);
10292  }
10293 
10294  if (error != NULL) {
10295  break;
10296  }
10297 
10298  }
10299 
10300  response->suspect_blob_pools = (ds3_suspect_blob_pool_response**)suspect_blob_pools_array->pdata;
10301  response->num_suspect_blob_pools = suspect_blob_pools_array->len;
10302  g_ptr_array_free(suspect_blob_pools_array, FALSE);
10303 
10304  xmlFreeDoc(doc);
10305 
10306  if (error == NULL) {
10307  *_response = response;
10308  } else {
10310  }
10311 
10312  return error;
10313 }
10315  xmlDocPtr doc;
10316  xmlNodePtr root;
10317  xmlNodePtr child_node;
10319  ds3_error* error = NULL;
10320  GPtrArray* suspect_blob_s3_targets_array = g_ptr_array_new();
10321 
10322  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10323  if (error != NULL) {
10324  return error;
10325  }
10326 
10327  response = g_new0(ds3_suspect_blob_s3_target_list_response, 1);
10328 
10329  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10330  if (element_equal(child_node, "SuspectBlobS3Target")) {
10331  ds3_suspect_blob_s3_target_response* suspect_blob_s3_targets_response = NULL;
10332  error = _parse_ds3_suspect_blob_s3_target_response(client, doc, child_node, &suspect_blob_s3_targets_response);
10333  response->suspect_blob_s3_targets = (ds3_suspect_blob_s3_target_response**)suspect_blob_s3_targets_array->pdata;
10334  g_ptr_array_add(suspect_blob_s3_targets_array, suspect_blob_s3_targets_response);
10335  } else {
10336  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);
10337  }
10338 
10339  if (error != NULL) {
10340  break;
10341  }
10342 
10343  }
10344 
10345  response->suspect_blob_s3_targets = (ds3_suspect_blob_s3_target_response**)suspect_blob_s3_targets_array->pdata;
10346  response->num_suspect_blob_s3_targets = suspect_blob_s3_targets_array->len;
10347  g_ptr_array_free(suspect_blob_s3_targets_array, FALSE);
10348 
10349  xmlFreeDoc(doc);
10350 
10351  if (error == NULL) {
10352  *_response = response;
10353  } else {
10355  }
10356 
10357  return error;
10358 }
10359 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) {
10360  xmlDocPtr doc;
10361  xmlNodePtr root;
10362  xmlNodePtr child_node;
10364  ds3_error* error = NULL;
10365  GPtrArray* suspect_blob_tapes_array = g_ptr_array_new();
10366 
10367  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10368  if (error != NULL) {
10369  return error;
10370  }
10371 
10372  response = g_new0(ds3_suspect_blob_tape_list_response, 1);
10373 
10374  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10375  if (element_equal(child_node, "SuspectBlobTape")) {
10376  ds3_suspect_blob_tape_response* suspect_blob_tapes_response = NULL;
10377  error = _parse_ds3_suspect_blob_tape_response(client, doc, child_node, &suspect_blob_tapes_response);
10378  response->suspect_blob_tapes = (ds3_suspect_blob_tape_response**)suspect_blob_tapes_array->pdata;
10379  g_ptr_array_add(suspect_blob_tapes_array, suspect_blob_tapes_response);
10380  } else {
10381  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_suspect_blob_tape_list_response [%s]\n", child_node->name, root->name);
10382  }
10383 
10384  if (error != NULL) {
10385  break;
10386  }
10387 
10388  }
10389 
10390  response->suspect_blob_tapes = (ds3_suspect_blob_tape_response**)suspect_blob_tapes_array->pdata;
10391  response->num_suspect_blob_tapes = suspect_blob_tapes_array->len;
10392  g_ptr_array_free(suspect_blob_tapes_array, FALSE);
10393 
10394  xmlFreeDoc(doc);
10395 
10396  if (error == NULL) {
10397  *_response = response;
10398  } else {
10400  }
10401 
10402  return error;
10403 }
10404 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) {
10405  xmlDocPtr doc;
10406  xmlNodePtr root;
10407  xmlNodePtr child_node;
10408  ds3_s3_object_list_response* response;
10409  ds3_error* error = NULL;
10410  GPtrArray* s3_objects_array = g_ptr_array_new();
10411 
10412  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10413  if (error != NULL) {
10414  return error;
10415  }
10416 
10417  response = g_new0(ds3_s3_object_list_response, 1);
10418 
10419  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10420  if (element_equal(child_node, "S3Object")) {
10421  ds3_s3_object_response* s3_objects_response = NULL;
10422  error = _parse_ds3_s3_object_response(client, doc, child_node, &s3_objects_response);
10423  response->s3_objects = (ds3_s3_object_response**)s3_objects_array->pdata;
10424  g_ptr_array_add(s3_objects_array, s3_objects_response);
10425  } else {
10426  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_list_response [%s]\n", child_node->name, root->name);
10427  }
10428 
10429  if (error != NULL) {
10430  break;
10431  }
10432 
10433  }
10434 
10435  response->s3_objects = (ds3_s3_object_response**)s3_objects_array->pdata;
10436  response->num_s3_objects = s3_objects_array->len;
10437  g_ptr_array_free(s3_objects_array, FALSE);
10438 
10439  xmlFreeDoc(doc);
10440 
10441  if (error == NULL) {
10442  *_response = response;
10443  } else {
10445  }
10446 
10447  return error;
10448 }
10449 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) {
10450  xmlDocPtr doc;
10451  xmlNodePtr root;
10452  xmlNodePtr child_node;
10454  ds3_error* error = NULL;
10455  GPtrArray* group_members_array = g_ptr_array_new();
10456 
10457  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10458  if (error != NULL) {
10459  return error;
10460  }
10461 
10462  response = g_new0(ds3_group_member_list_response, 1);
10463 
10464  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10465  if (element_equal(child_node, "GroupMember")) {
10466  ds3_group_member_response* group_members_response = NULL;
10467  error = _parse_ds3_group_member_response(client, doc, child_node, &group_members_response);
10468  response->group_members = (ds3_group_member_response**)group_members_array->pdata;
10469  g_ptr_array_add(group_members_array, group_members_response);
10470  } else {
10471  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_member_list_response [%s]\n", child_node->name, root->name);
10472  }
10473 
10474  if (error != NULL) {
10475  break;
10476  }
10477 
10478  }
10479 
10480  response->group_members = (ds3_group_member_response**)group_members_array->pdata;
10481  response->num_group_members = group_members_array->len;
10482  g_ptr_array_free(group_members_array, FALSE);
10483 
10484  xmlFreeDoc(doc);
10485 
10486  if (error == NULL) {
10487  *_response = response;
10488  } else {
10490  }
10491 
10492  return error;
10493 }
10494 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) {
10495  xmlDocPtr doc;
10496  xmlNodePtr root;
10497  xmlNodePtr child_node;
10498  ds3_group_list_response* response;
10499  ds3_error* error = NULL;
10500  GPtrArray* groups_array = g_ptr_array_new();
10501 
10502  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10503  if (error != NULL) {
10504  return error;
10505  }
10506 
10507  response = g_new0(ds3_group_list_response, 1);
10508 
10509  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10510  if (element_equal(child_node, "Group")) {
10511  ds3_group_response* groups_response = NULL;
10512  error = _parse_ds3_group_response(client, doc, child_node, &groups_response);
10513  response->groups = (ds3_group_response**)groups_array->pdata;
10514  g_ptr_array_add(groups_array, groups_response);
10515  } else {
10516  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_list_response [%s]\n", child_node->name, root->name);
10517  }
10518 
10519  if (error != NULL) {
10520  break;
10521  }
10522 
10523  }
10524 
10525  response->groups = (ds3_group_response**)groups_array->pdata;
10526  response->num_groups = groups_array->len;
10527  g_ptr_array_free(groups_array, FALSE);
10528 
10529  xmlFreeDoc(doc);
10530 
10531  if (error == NULL) {
10532  *_response = response;
10533  } else {
10534  ds3_group_list_response_free(response);
10535  }
10536 
10537  return error;
10538 }
10539 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) {
10540  xmlDocPtr doc;
10541  xmlNodePtr root;
10542  xmlNodePtr child_node;
10543  ds3_active_job_list_response* response;
10544  ds3_error* error = NULL;
10545  GPtrArray* active_jobs_array = g_ptr_array_new();
10546 
10547  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
10548  if (error != NULL) {
10549  return error;
10550  }
10551 
10552  response = g_new0(ds3_active_job_list_response, 1);
10553 
10554  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10555  if (element_equal(child_node, "Job")) {
10556  ds3_active_job_response* active_jobs_response = NULL;
10557  error = _parse_ds3_active_job_response(client, doc, child_node, &active_jobs_response);
10558  response->active_jobs = (ds3_active_job_response**)active_jobs_array->pdata;
10559  g_ptr_array_add(active_jobs_array, active_jobs_response);
10560  } else {
10561  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_active_job_list_response [%s]\n", child_node->name, root->name);
10562  }
10563 
10564  if (error != NULL) {
10565  break;
10566  }
10567 
10568  }
10569 
10570  response->active_jobs = (ds3_active_job_response**)active_jobs_array->pdata;
10571  response->num_active_jobs = active_jobs_array->len;
10572  g_ptr_array_free(active_jobs_array, FALSE);
10573 
10574  xmlFreeDoc(doc);
10575 
10576  if (error == NULL) {
10577  *_response = response;
10578  } else {
10580  }
10581 
10582  return error;
10583 }
10584 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) {
10585  xmlDocPtr doc;
10586  xmlNodePtr root;
10587  xmlNodePtr child_node;
10589  ds3_error* error = NULL;
10590  GPtrArray* canceled_jobs_array = g_ptr_array_new();
10591 
10592  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
10593  if (error != NULL) {
10594  return error;
10595  }
10596 
10597  response = g_new0(ds3_canceled_job_list_response, 1);
10598 
10599  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10600  if (element_equal(child_node, "CanceledJob")) {
10601  ds3_canceled_job_response* canceled_jobs_response = NULL;
10602  error = _parse_ds3_canceled_job_response(client, doc, child_node, &canceled_jobs_response);
10603  response->canceled_jobs = (ds3_canceled_job_response**)canceled_jobs_array->pdata;
10604  g_ptr_array_add(canceled_jobs_array, canceled_jobs_response);
10605  } else {
10606  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_canceled_job_list_response [%s]\n", child_node->name, root->name);
10607  }
10608 
10609  if (error != NULL) {
10610  break;
10611  }
10612 
10613  }
10614 
10615  response->canceled_jobs = (ds3_canceled_job_response**)canceled_jobs_array->pdata;
10616  response->num_canceled_jobs = canceled_jobs_array->len;
10617  g_ptr_array_free(canceled_jobs_array, FALSE);
10618 
10619  xmlFreeDoc(doc);
10620 
10621  if (error == NULL) {
10622  *_response = response;
10623  } else {
10625  }
10626 
10627  return error;
10628 }
10629 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) {
10630  xmlDocPtr doc;
10631  xmlNodePtr root;
10632  xmlNodePtr child_node;
10634  ds3_error* error = NULL;
10635  GPtrArray* completed_jobs_array = g_ptr_array_new();
10636 
10637  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
10638  if (error != NULL) {
10639  return error;
10640  }
10641 
10642  response = g_new0(ds3_completed_job_list_response, 1);
10643 
10644  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10645  if (element_equal(child_node, "CompletedJob")) {
10646  ds3_completed_job_response* completed_jobs_response = NULL;
10647  error = _parse_ds3_completed_job_response(client, doc, child_node, &completed_jobs_response);
10648  response->completed_jobs = (ds3_completed_job_response**)completed_jobs_array->pdata;
10649  g_ptr_array_add(completed_jobs_array, completed_jobs_response);
10650  } else {
10651  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_completed_job_list_response [%s]\n", child_node->name, root->name);
10652  }
10653 
10654  if (error != NULL) {
10655  break;
10656  }
10657 
10658  }
10659 
10660  response->completed_jobs = (ds3_completed_job_response**)completed_jobs_array->pdata;
10661  response->num_completed_jobs = completed_jobs_array->len;
10662  g_ptr_array_free(completed_jobs_array, FALSE);
10663 
10664  xmlFreeDoc(doc);
10665 
10666  if (error == NULL) {
10667  *_response = response;
10668  } else {
10670  }
10671 
10672  return error;
10673 }
10674 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) {
10675  xmlDocPtr doc;
10676  xmlNodePtr root;
10677  xmlNodePtr child_node;
10678  ds3_node_list_response* response;
10679  ds3_error* error = NULL;
10680  GPtrArray* nodes_array = g_ptr_array_new();
10681 
10682  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10683  if (error != NULL) {
10684  return error;
10685  }
10686 
10687  response = g_new0(ds3_node_list_response, 1);
10688 
10689  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10690  if (element_equal(child_node, "Node")) {
10691  ds3_node_response* nodes_response = NULL;
10692  error = _parse_ds3_node_response(client, doc, child_node, &nodes_response);
10693  response->nodes = (ds3_node_response**)nodes_array->pdata;
10694  g_ptr_array_add(nodes_array, nodes_response);
10695  } else {
10696  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_node_list_response [%s]\n", child_node->name, root->name);
10697  }
10698 
10699  if (error != NULL) {
10700  break;
10701  }
10702 
10703  }
10704 
10705  response->nodes = (ds3_node_response**)nodes_array->pdata;
10706  response->num_nodes = nodes_array->len;
10707  g_ptr_array_free(nodes_array, FALSE);
10708 
10709  xmlFreeDoc(doc);
10710 
10711  if (error == NULL) {
10712  *_response = response;
10713  } else {
10714  ds3_node_list_response_free(response);
10715  }
10716 
10717  return error;
10718 }
10720  xmlDocPtr doc;
10721  xmlNodePtr root;
10722  xmlNodePtr child_node;
10724  ds3_error* error = NULL;
10725  GPtrArray* azure_target_failure_notification_registrations_array = g_ptr_array_new();
10726 
10727  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10728  if (error != NULL) {
10729  return error;
10730  }
10731 
10733 
10734  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10735  if (element_equal(child_node, "AzureTargetFailureNotificationRegistration")) {
10736  ds3_azure_target_failure_notification_registration_response* azure_target_failure_notification_registrations_response = NULL;
10737  error = _parse_ds3_azure_target_failure_notification_registration_response(client, doc, child_node, &azure_target_failure_notification_registrations_response);
10738  response->azure_target_failure_notification_registrations = (ds3_azure_target_failure_notification_registration_response**)azure_target_failure_notification_registrations_array->pdata;
10739  g_ptr_array_add(azure_target_failure_notification_registrations_array, azure_target_failure_notification_registrations_response);
10740  } else {
10741  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);
10742  }
10743 
10744  if (error != NULL) {
10745  break;
10746  }
10747 
10748  }
10749 
10750  response->azure_target_failure_notification_registrations = (ds3_azure_target_failure_notification_registration_response**)azure_target_failure_notification_registrations_array->pdata;
10751  response->num_azure_target_failure_notification_registrations = azure_target_failure_notification_registrations_array->len;
10752  g_ptr_array_free(azure_target_failure_notification_registrations_array, FALSE);
10753 
10754  xmlFreeDoc(doc);
10755 
10756  if (error == NULL) {
10757  *_response = response;
10758  } else {
10760  }
10761 
10762  return error;
10763 }
10765  xmlDocPtr doc;
10766  xmlNodePtr root;
10767  xmlNodePtr child_node;
10769  ds3_error* error = NULL;
10770  GPtrArray* ds3_target_failure_notification_registrations_array = g_ptr_array_new();
10771 
10772  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10773  if (error != NULL) {
10774  return error;
10775  }
10776 
10778 
10779  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10780  if (element_equal(child_node, "Ds3TargetFailureNotificationRegistration")) {
10781  ds3_target_failure_notification_registration_response* ds3_target_failure_notification_registrations_response = NULL;
10782  error = _parse_ds3_target_failure_notification_registration_response(client, doc, child_node, &ds3_target_failure_notification_registrations_response);
10783  response->ds3_target_failure_notification_registrations = (ds3_target_failure_notification_registration_response**)ds3_target_failure_notification_registrations_array->pdata;
10784  g_ptr_array_add(ds3_target_failure_notification_registrations_array, ds3_target_failure_notification_registrations_response);
10785  } else {
10786  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);
10787  }
10788 
10789  if (error != NULL) {
10790  break;
10791  }
10792 
10793  }
10794 
10795  response->ds3_target_failure_notification_registrations = (ds3_target_failure_notification_registration_response**)ds3_target_failure_notification_registrations_array->pdata;
10796  response->num_ds3_target_failure_notification_registrations = ds3_target_failure_notification_registrations_array->len;
10797  g_ptr_array_free(ds3_target_failure_notification_registrations_array, FALSE);
10798 
10799  xmlFreeDoc(doc);
10800 
10801  if (error == NULL) {
10802  *_response = response;
10803  } else {
10805  }
10806 
10807  return error;
10808 }
10810  xmlDocPtr doc;
10811  xmlNodePtr root;
10812  xmlNodePtr child_node;
10814  ds3_error* error = NULL;
10815  GPtrArray* job_completed_notification_registrations_array = g_ptr_array_new();
10816 
10817  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10818  if (error != NULL) {
10819  return error;
10820  }
10821 
10823 
10824  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10825  if (element_equal(child_node, "JobCompletedNotificationRegistration")) {
10826  ds3_job_completed_notification_registration_response* job_completed_notification_registrations_response = NULL;
10827  error = _parse_ds3_job_completed_notification_registration_response(client, doc, child_node, &job_completed_notification_registrations_response);
10828  response->job_completed_notification_registrations = (ds3_job_completed_notification_registration_response**)job_completed_notification_registrations_array->pdata;
10829  g_ptr_array_add(job_completed_notification_registrations_array, job_completed_notification_registrations_response);
10830  } else {
10831  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);
10832  }
10833 
10834  if (error != NULL) {
10835  break;
10836  }
10837 
10838  }
10839 
10840  response->job_completed_notification_registrations = (ds3_job_completed_notification_registration_response**)job_completed_notification_registrations_array->pdata;
10841  response->num_job_completed_notification_registrations = job_completed_notification_registrations_array->len;
10842  g_ptr_array_free(job_completed_notification_registrations_array, FALSE);
10843 
10844  xmlFreeDoc(doc);
10845 
10846  if (error == NULL) {
10847  *_response = response;
10848  } else {
10850  }
10851 
10852  return error;
10853 }
10855  xmlDocPtr doc;
10856  xmlNodePtr root;
10857  xmlNodePtr child_node;
10859  ds3_error* error = NULL;
10860  GPtrArray* job_created_notification_registrations_array = g_ptr_array_new();
10861 
10862  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10863  if (error != NULL) {
10864  return error;
10865  }
10866 
10868 
10869  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10870  if (element_equal(child_node, "JobCreatedNotificationRegistration")) {
10871  ds3_job_created_notification_registration_response* job_created_notification_registrations_response = NULL;
10872  error = _parse_ds3_job_created_notification_registration_response(client, doc, child_node, &job_created_notification_registrations_response);
10873  response->job_created_notification_registrations = (ds3_job_created_notification_registration_response**)job_created_notification_registrations_array->pdata;
10874  g_ptr_array_add(job_created_notification_registrations_array, job_created_notification_registrations_response);
10875  } else {
10876  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);
10877  }
10878 
10879  if (error != NULL) {
10880  break;
10881  }
10882 
10883  }
10884 
10885  response->job_created_notification_registrations = (ds3_job_created_notification_registration_response**)job_created_notification_registrations_array->pdata;
10886  response->num_job_created_notification_registrations = job_created_notification_registrations_array->len;
10887  g_ptr_array_free(job_created_notification_registrations_array, FALSE);
10888 
10889  xmlFreeDoc(doc);
10890 
10891  if (error == NULL) {
10892  *_response = response;
10893  } else {
10895  }
10896 
10897  return error;
10898 }
10900  xmlDocPtr doc;
10901  xmlNodePtr root;
10902  xmlNodePtr child_node;
10904  ds3_error* error = NULL;
10905  GPtrArray* job_creation_failed_notification_registrations_array = g_ptr_array_new();
10906 
10907  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10908  if (error != NULL) {
10909  return error;
10910  }
10911 
10913 
10914  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10915  if (element_equal(child_node, "JobCreationFailedNotificationRegistration")) {
10916  ds3_job_creation_failed_notification_registration_response* job_creation_failed_notification_registrations_response = NULL;
10917  error = _parse_ds3_job_creation_failed_notification_registration_response(client, doc, child_node, &job_creation_failed_notification_registrations_response);
10918  response->job_creation_failed_notification_registrations = (ds3_job_creation_failed_notification_registration_response**)job_creation_failed_notification_registrations_array->pdata;
10919  g_ptr_array_add(job_creation_failed_notification_registrations_array, job_creation_failed_notification_registrations_response);
10920  } else {
10921  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);
10922  }
10923 
10924  if (error != NULL) {
10925  break;
10926  }
10927 
10928  }
10929 
10930  response->job_creation_failed_notification_registrations = (ds3_job_creation_failed_notification_registration_response**)job_creation_failed_notification_registrations_array->pdata;
10931  response->num_job_creation_failed_notification_registrations = job_creation_failed_notification_registrations_array->len;
10932  g_ptr_array_free(job_creation_failed_notification_registrations_array, FALSE);
10933 
10934  xmlFreeDoc(doc);
10935 
10936  if (error == NULL) {
10937  *_response = response;
10938  } else {
10940  }
10941 
10942  return error;
10943 }
10945  xmlDocPtr doc;
10946  xmlNodePtr root;
10947  xmlNodePtr child_node;
10949  ds3_error* error = NULL;
10950  GPtrArray* s3_object_cached_notification_registrations_array = g_ptr_array_new();
10951 
10952  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10953  if (error != NULL) {
10954  return error;
10955  }
10956 
10958 
10959  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10960  if (element_equal(child_node, "S3ObjectCachedNotificationRegistration")) {
10961  ds3_s3_object_cached_notification_registration_response* s3_object_cached_notification_registrations_response = NULL;
10962  error = _parse_ds3_s3_object_cached_notification_registration_response(client, doc, child_node, &s3_object_cached_notification_registrations_response);
10963  response->s3_object_cached_notification_registrations = (ds3_s3_object_cached_notification_registration_response**)s3_object_cached_notification_registrations_array->pdata;
10964  g_ptr_array_add(s3_object_cached_notification_registrations_array, s3_object_cached_notification_registrations_response);
10965  } else {
10966  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);
10967  }
10968 
10969  if (error != NULL) {
10970  break;
10971  }
10972 
10973  }
10974 
10975  response->s3_object_cached_notification_registrations = (ds3_s3_object_cached_notification_registration_response**)s3_object_cached_notification_registrations_array->pdata;
10976  response->num_s3_object_cached_notification_registrations = s3_object_cached_notification_registrations_array->len;
10977  g_ptr_array_free(s3_object_cached_notification_registrations_array, FALSE);
10978 
10979  xmlFreeDoc(doc);
10980 
10981  if (error == NULL) {
10982  *_response = response;
10983  } else {
10985  }
10986 
10987  return error;
10988 }
10990  xmlDocPtr doc;
10991  xmlNodePtr root;
10992  xmlNodePtr child_node;
10994  ds3_error* error = NULL;
10995  GPtrArray* s3_object_lost_notification_registrations_array = g_ptr_array_new();
10996 
10997  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10998  if (error != NULL) {
10999  return error;
11000  }
11001 
11003 
11004  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11005  if (element_equal(child_node, "S3ObjectLostNotificationRegistration")) {
11006  ds3_s3_object_lost_notification_registration_response* s3_object_lost_notification_registrations_response = NULL;
11007  error = _parse_ds3_s3_object_lost_notification_registration_response(client, doc, child_node, &s3_object_lost_notification_registrations_response);
11008  response->s3_object_lost_notification_registrations = (ds3_s3_object_lost_notification_registration_response**)s3_object_lost_notification_registrations_array->pdata;
11009  g_ptr_array_add(s3_object_lost_notification_registrations_array, s3_object_lost_notification_registrations_response);
11010  } else {
11011  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);
11012  }
11013 
11014  if (error != NULL) {
11015  break;
11016  }
11017 
11018  }
11019 
11020  response->s3_object_lost_notification_registrations = (ds3_s3_object_lost_notification_registration_response**)s3_object_lost_notification_registrations_array->pdata;
11021  response->num_s3_object_lost_notification_registrations = s3_object_lost_notification_registrations_array->len;
11022  g_ptr_array_free(s3_object_lost_notification_registrations_array, FALSE);
11023 
11024  xmlFreeDoc(doc);
11025 
11026  if (error == NULL) {
11027  *_response = response;
11028  } else {
11030  }
11031 
11032  return error;
11033 }
11035  xmlDocPtr doc;
11036  xmlNodePtr root;
11037  xmlNodePtr child_node;
11039  ds3_error* error = NULL;
11040  GPtrArray* s3_object_persisted_notification_registrations_array = g_ptr_array_new();
11041 
11042  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11043  if (error != NULL) {
11044  return error;
11045  }
11046 
11048 
11049  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11050  if (element_equal(child_node, "S3ObjectPersistedNotificationRegistration")) {
11051  ds3_s3_object_persisted_notification_registration_response* s3_object_persisted_notification_registrations_response = NULL;
11052  error = _parse_ds3_s3_object_persisted_notification_registration_response(client, doc, child_node, &s3_object_persisted_notification_registrations_response);
11053  response->s3_object_persisted_notification_registrations = (ds3_s3_object_persisted_notification_registration_response**)s3_object_persisted_notification_registrations_array->pdata;
11054  g_ptr_array_add(s3_object_persisted_notification_registrations_array, s3_object_persisted_notification_registrations_response);
11055  } else {
11056  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);
11057  }
11058 
11059  if (error != NULL) {
11060  break;
11061  }
11062 
11063  }
11064 
11065  response->s3_object_persisted_notification_registrations = (ds3_s3_object_persisted_notification_registration_response**)s3_object_persisted_notification_registrations_array->pdata;
11066  response->num_s3_object_persisted_notification_registrations = s3_object_persisted_notification_registrations_array->len;
11067  g_ptr_array_free(s3_object_persisted_notification_registrations_array, FALSE);
11068 
11069  xmlFreeDoc(doc);
11070 
11071  if (error == NULL) {
11072  *_response = response;
11073  } else {
11075  }
11076 
11077  return error;
11078 }
11080  xmlDocPtr doc;
11081  xmlNodePtr root;
11082  xmlNodePtr child_node;
11084  ds3_error* error = NULL;
11085  GPtrArray* pool_failure_notification_registrations_array = g_ptr_array_new();
11086 
11087  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11088  if (error != NULL) {
11089  return error;
11090  }
11091 
11093 
11094  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11095  if (element_equal(child_node, "PoolFailureNotificationRegistration")) {
11096  ds3_pool_failure_notification_registration_response* pool_failure_notification_registrations_response = NULL;
11097  error = _parse_ds3_pool_failure_notification_registration_response(client, doc, child_node, &pool_failure_notification_registrations_response);
11098  response->pool_failure_notification_registrations = (ds3_pool_failure_notification_registration_response**)pool_failure_notification_registrations_array->pdata;
11099  g_ptr_array_add(pool_failure_notification_registrations_array, pool_failure_notification_registrations_response);
11100  } else {
11101  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);
11102  }
11103 
11104  if (error != NULL) {
11105  break;
11106  }
11107 
11108  }
11109 
11110  response->pool_failure_notification_registrations = (ds3_pool_failure_notification_registration_response**)pool_failure_notification_registrations_array->pdata;
11111  response->num_pool_failure_notification_registrations = pool_failure_notification_registrations_array->len;
11112  g_ptr_array_free(pool_failure_notification_registrations_array, FALSE);
11113 
11114  xmlFreeDoc(doc);
11115 
11116  if (error == NULL) {
11117  *_response = response;
11118  } else {
11120  }
11121 
11122  return error;
11123 }
11125  xmlDocPtr doc;
11126  xmlNodePtr root;
11127  xmlNodePtr child_node;
11129  ds3_error* error = NULL;
11130  GPtrArray* s3_target_failure_notification_registrations_array = g_ptr_array_new();
11131 
11132  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11133  if (error != NULL) {
11134  return error;
11135  }
11136 
11138 
11139  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11140  if (element_equal(child_node, "S3TargetFailureNotificationRegistration")) {
11141  ds3_s3_target_failure_notification_registration_response* s3_target_failure_notification_registrations_response = NULL;
11142  error = _parse_ds3_s3_target_failure_notification_registration_response(client, doc, child_node, &s3_target_failure_notification_registrations_response);
11143  response->s3_target_failure_notification_registrations = (ds3_s3_target_failure_notification_registration_response**)s3_target_failure_notification_registrations_array->pdata;
11144  g_ptr_array_add(s3_target_failure_notification_registrations_array, s3_target_failure_notification_registrations_response);
11145  } else {
11146  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);
11147  }
11148 
11149  if (error != NULL) {
11150  break;
11151  }
11152 
11153  }
11154 
11155  response->s3_target_failure_notification_registrations = (ds3_s3_target_failure_notification_registration_response**)s3_target_failure_notification_registrations_array->pdata;
11156  response->num_s3_target_failure_notification_registrations = s3_target_failure_notification_registrations_array->len;
11157  g_ptr_array_free(s3_target_failure_notification_registrations_array, FALSE);
11158 
11159  xmlFreeDoc(doc);
11160 
11161  if (error == NULL) {
11162  *_response = response;
11163  } else {
11165  }
11166 
11167  return error;
11168 }
11170  xmlDocPtr doc;
11171  xmlNodePtr root;
11172  xmlNodePtr child_node;
11174  ds3_error* error = NULL;
11175  GPtrArray* storage_domain_failure_notification_registrations_array = g_ptr_array_new();
11176 
11177  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11178  if (error != NULL) {
11179  return error;
11180  }
11181 
11183 
11184  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11185  if (element_equal(child_node, "StorageDomainFailureNotificationRegistration")) {
11186  ds3_storage_domain_failure_notification_registration_response* storage_domain_failure_notification_registrations_response = NULL;
11187  error = _parse_ds3_storage_domain_failure_notification_registration_response(client, doc, child_node, &storage_domain_failure_notification_registrations_response);
11188  response->storage_domain_failure_notification_registrations = (ds3_storage_domain_failure_notification_registration_response**)storage_domain_failure_notification_registrations_array->pdata;
11189  g_ptr_array_add(storage_domain_failure_notification_registrations_array, storage_domain_failure_notification_registrations_response);
11190  } else {
11191  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);
11192  }
11193 
11194  if (error != NULL) {
11195  break;
11196  }
11197 
11198  }
11199 
11200  response->storage_domain_failure_notification_registrations = (ds3_storage_domain_failure_notification_registration_response**)storage_domain_failure_notification_registrations_array->pdata;
11201  response->num_storage_domain_failure_notification_registrations = storage_domain_failure_notification_registrations_array->len;
11202  g_ptr_array_free(storage_domain_failure_notification_registrations_array, FALSE);
11203 
11204  xmlFreeDoc(doc);
11205 
11206  if (error == NULL) {
11207  *_response = response;
11208  } else {
11210  }
11211 
11212  return error;
11213 }
11215  xmlDocPtr doc;
11216  xmlNodePtr root;
11217  xmlNodePtr child_node;
11219  ds3_error* error = NULL;
11220  GPtrArray* system_failure_notification_registrations_array = g_ptr_array_new();
11221 
11222  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11223  if (error != NULL) {
11224  return error;
11225  }
11226 
11228 
11229  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11230  if (element_equal(child_node, "SystemFailureNotificationRegistration")) {
11231  ds3_system_failure_notification_registration_response* system_failure_notification_registrations_response = NULL;
11232  error = _parse_ds3_system_failure_notification_registration_response(client, doc, child_node, &system_failure_notification_registrations_response);
11233  response->system_failure_notification_registrations = (ds3_system_failure_notification_registration_response**)system_failure_notification_registrations_array->pdata;
11234  g_ptr_array_add(system_failure_notification_registrations_array, system_failure_notification_registrations_response);
11235  } else {
11236  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);
11237  }
11238 
11239  if (error != NULL) {
11240  break;
11241  }
11242 
11243  }
11244 
11245  response->system_failure_notification_registrations = (ds3_system_failure_notification_registration_response**)system_failure_notification_registrations_array->pdata;
11246  response->num_system_failure_notification_registrations = system_failure_notification_registrations_array->len;
11247  g_ptr_array_free(system_failure_notification_registrations_array, FALSE);
11248 
11249  xmlFreeDoc(doc);
11250 
11251  if (error == NULL) {
11252  *_response = response;
11253  } else {
11255  }
11256 
11257  return error;
11258 }
11260  xmlDocPtr doc;
11261  xmlNodePtr root;
11262  xmlNodePtr child_node;
11264  ds3_error* error = NULL;
11265  GPtrArray* tape_failure_notification_registrations_array = g_ptr_array_new();
11266 
11267  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11268  if (error != NULL) {
11269  return error;
11270  }
11271 
11273 
11274  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11275  if (element_equal(child_node, "TapeFailureNotificationRegistration")) {
11276  ds3_tape_failure_notification_registration_response* tape_failure_notification_registrations_response = NULL;
11277  error = _parse_ds3_tape_failure_notification_registration_response(client, doc, child_node, &tape_failure_notification_registrations_response);
11278  response->tape_failure_notification_registrations = (ds3_tape_failure_notification_registration_response**)tape_failure_notification_registrations_array->pdata;
11279  g_ptr_array_add(tape_failure_notification_registrations_array, tape_failure_notification_registrations_response);
11280  } else {
11281  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);
11282  }
11283 
11284  if (error != NULL) {
11285  break;
11286  }
11287 
11288  }
11289 
11290  response->tape_failure_notification_registrations = (ds3_tape_failure_notification_registration_response**)tape_failure_notification_registrations_array->pdata;
11291  response->num_tape_failure_notification_registrations = tape_failure_notification_registrations_array->len;
11292  g_ptr_array_free(tape_failure_notification_registrations_array, FALSE);
11293 
11294  xmlFreeDoc(doc);
11295 
11296  if (error == NULL) {
11297  *_response = response;
11298  } else {
11300  }
11301 
11302  return error;
11303 }
11305  xmlDocPtr doc;
11306  xmlNodePtr root;
11307  xmlNodePtr child_node;
11309  ds3_error* error = NULL;
11310  GPtrArray* tape_partition_failure_notification_registrations_array = g_ptr_array_new();
11311 
11312  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11313  if (error != NULL) {
11314  return error;
11315  }
11316 
11318 
11319  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11320  if (element_equal(child_node, "TapePartitionFailureNotificationRegistration")) {
11321  ds3_tape_partition_failure_notification_registration_response* tape_partition_failure_notification_registrations_response = NULL;
11322  error = _parse_ds3_tape_partition_failure_notification_registration_response(client, doc, child_node, &tape_partition_failure_notification_registrations_response);
11323  response->tape_partition_failure_notification_registrations = (ds3_tape_partition_failure_notification_registration_response**)tape_partition_failure_notification_registrations_array->pdata;
11324  g_ptr_array_add(tape_partition_failure_notification_registrations_array, tape_partition_failure_notification_registrations_response);
11325  } else {
11326  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);
11327  }
11328 
11329  if (error != NULL) {
11330  break;
11331  }
11332 
11333  }
11334 
11335  response->tape_partition_failure_notification_registrations = (ds3_tape_partition_failure_notification_registration_response**)tape_partition_failure_notification_registrations_array->pdata;
11336  response->num_tape_partition_failure_notification_registrations = tape_partition_failure_notification_registrations_array->len;
11337  g_ptr_array_free(tape_partition_failure_notification_registrations_array, FALSE);
11338 
11339  xmlFreeDoc(doc);
11340 
11341  if (error == NULL) {
11342  *_response = response;
11343  } else {
11345  }
11346 
11347  return error;
11348 }
11349 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) {
11350  xmlDocPtr doc;
11351  xmlNodePtr root;
11352  xmlNodePtr child_node;
11354  ds3_error* error = NULL;
11355  GPtrArray* pool_failures_array = g_ptr_array_new();
11356 
11357  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11358  if (error != NULL) {
11359  return error;
11360  }
11361 
11362  response = g_new0(ds3_pool_failure_list_response, 1);
11363 
11364  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11365  if (element_equal(child_node, "PoolFailure")) {
11366  ds3_pool_failure_response* pool_failures_response = NULL;
11367  error = _parse_ds3_pool_failure_response(client, doc, child_node, &pool_failures_response);
11368  response->pool_failures = (ds3_pool_failure_response**)pool_failures_array->pdata;
11369  g_ptr_array_add(pool_failures_array, pool_failures_response);
11370  } else {
11371  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_list_response [%s]\n", child_node->name, root->name);
11372  }
11373 
11374  if (error != NULL) {
11375  break;
11376  }
11377 
11378  }
11379 
11380  response->pool_failures = (ds3_pool_failure_response**)pool_failures_array->pdata;
11381  response->num_pool_failures = pool_failures_array->len;
11382  g_ptr_array_free(pool_failures_array, FALSE);
11383 
11384  xmlFreeDoc(doc);
11385 
11386  if (error == NULL) {
11387  *_response = response;
11388  } else {
11390  }
11391 
11392  return error;
11393 }
11394 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) {
11395  xmlDocPtr doc;
11396  xmlNodePtr root;
11397  xmlNodePtr child_node;
11399  ds3_error* error = NULL;
11400  GPtrArray* pool_partitions_array = g_ptr_array_new();
11401 
11402  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11403  if (error != NULL) {
11404  return error;
11405  }
11406 
11407  response = g_new0(ds3_pool_partition_list_response, 1);
11408 
11409  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11410  if (element_equal(child_node, "PoolPartition")) {
11411  ds3_pool_partition_response* pool_partitions_response = NULL;
11412  error = _parse_ds3_pool_partition_response(client, doc, child_node, &pool_partitions_response);
11413  response->pool_partitions = (ds3_pool_partition_response**)pool_partitions_array->pdata;
11414  g_ptr_array_add(pool_partitions_array, pool_partitions_response);
11415  } else {
11416  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_partition_list_response [%s]\n", child_node->name, root->name);
11417  }
11418 
11419  if (error != NULL) {
11420  break;
11421  }
11422 
11423  }
11424 
11425  response->pool_partitions = (ds3_pool_partition_response**)pool_partitions_array->pdata;
11426  response->num_pool_partitions = pool_partitions_array->len;
11427  g_ptr_array_free(pool_partitions_array, FALSE);
11428 
11429  xmlFreeDoc(doc);
11430 
11431  if (error == NULL) {
11432  *_response = response;
11433  } else {
11435  }
11436 
11437  return error;
11438 }
11439 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) {
11440  xmlDocPtr doc;
11441  xmlNodePtr root;
11442  xmlNodePtr child_node;
11443  ds3_pool_list_response* response;
11444  ds3_error* error = NULL;
11445  GPtrArray* pools_array = g_ptr_array_new();
11446 
11447  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11448  if (error != NULL) {
11449  return error;
11450  }
11451 
11452  response = g_new0(ds3_pool_list_response, 1);
11453 
11454  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11455  if (element_equal(child_node, "Pool")) {
11456  ds3_pool_response* pools_response = NULL;
11457  error = _parse_ds3_pool_response(client, doc, child_node, &pools_response);
11458  response->pools = (ds3_pool_response**)pools_array->pdata;
11459  g_ptr_array_add(pools_array, pools_response);
11460  } else {
11461  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_list_response [%s]\n", child_node->name, root->name);
11462  }
11463 
11464  if (error != NULL) {
11465  break;
11466  }
11467 
11468  }
11469 
11470  response->pools = (ds3_pool_response**)pools_array->pdata;
11471  response->num_pools = pools_array->len;
11472  g_ptr_array_free(pools_array, FALSE);
11473 
11474  xmlFreeDoc(doc);
11475 
11476  if (error == NULL) {
11477  *_response = response;
11478  } else {
11479  ds3_pool_list_response_free(response);
11480  }
11481 
11482  return error;
11483 }
11485  xmlDocPtr doc;
11486  xmlNodePtr root;
11487  xmlNodePtr child_node;
11489  ds3_error* error = NULL;
11490  GPtrArray* storage_domain_failures_array = g_ptr_array_new();
11491 
11492  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11493  if (error != NULL) {
11494  return error;
11495  }
11496 
11497  response = g_new0(ds3_storage_domain_failure_list_response, 1);
11498 
11499  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11500  if (element_equal(child_node, "StorageDomainFailure")) {
11501  ds3_storage_domain_failure_response* storage_domain_failures_response = NULL;
11502  error = _parse_ds3_storage_domain_failure_response(client, doc, child_node, &storage_domain_failures_response);
11503  response->storage_domain_failures = (ds3_storage_domain_failure_response**)storage_domain_failures_array->pdata;
11504  g_ptr_array_add(storage_domain_failures_array, storage_domain_failures_response);
11505  } else {
11506  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_failure_list_response [%s]\n", child_node->name, root->name);
11507  }
11508 
11509  if (error != NULL) {
11510  break;
11511  }
11512 
11513  }
11514 
11515  response->storage_domain_failures = (ds3_storage_domain_failure_response**)storage_domain_failures_array->pdata;
11516  response->num_storage_domain_failures = storage_domain_failures_array->len;
11517  g_ptr_array_free(storage_domain_failures_array, FALSE);
11518 
11519  xmlFreeDoc(doc);
11520 
11521  if (error == NULL) {
11522  *_response = response;
11523  } else {
11525  }
11526 
11527  return error;
11528 }
11530  xmlDocPtr doc;
11531  xmlNodePtr root;
11532  xmlNodePtr child_node;
11534  ds3_error* error = NULL;
11535  GPtrArray* storage_domain_members_array = g_ptr_array_new();
11536 
11537  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11538  if (error != NULL) {
11539  return error;
11540  }
11541 
11542  response = g_new0(ds3_storage_domain_member_list_response, 1);
11543 
11544  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11545  if (element_equal(child_node, "StorageDomainMember")) {
11546  ds3_storage_domain_member_response* storage_domain_members_response = NULL;
11547  error = _parse_ds3_storage_domain_member_response(client, doc, child_node, &storage_domain_members_response);
11548  response->storage_domain_members = (ds3_storage_domain_member_response**)storage_domain_members_array->pdata;
11549  g_ptr_array_add(storage_domain_members_array, storage_domain_members_response);
11550  } else {
11551  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_member_list_response [%s]\n", child_node->name, root->name);
11552  }
11553 
11554  if (error != NULL) {
11555  break;
11556  }
11557 
11558  }
11559 
11560  response->storage_domain_members = (ds3_storage_domain_member_response**)storage_domain_members_array->pdata;
11561  response->num_storage_domain_members = storage_domain_members_array->len;
11562  g_ptr_array_free(storage_domain_members_array, FALSE);
11563 
11564  xmlFreeDoc(doc);
11565 
11566  if (error == NULL) {
11567  *_response = response;
11568  } else {
11570  }
11571 
11572  return error;
11573 }
11574 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) {
11575  xmlDocPtr doc;
11576  xmlNodePtr root;
11577  xmlNodePtr child_node;
11579  ds3_error* error = NULL;
11580  GPtrArray* storage_domains_array = g_ptr_array_new();
11581 
11582  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11583  if (error != NULL) {
11584  return error;
11585  }
11586 
11587  response = g_new0(ds3_storage_domain_list_response, 1);
11588 
11589  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11590  if (element_equal(child_node, "StorageDomain")) {
11591  ds3_storage_domain_response* storage_domains_response = NULL;
11592  error = _parse_ds3_storage_domain_response(client, doc, child_node, &storage_domains_response);
11593  response->storage_domains = (ds3_storage_domain_response**)storage_domains_array->pdata;
11594  g_ptr_array_add(storage_domains_array, storage_domains_response);
11595  } else {
11596  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_list_response [%s]\n", child_node->name, root->name);
11597  }
11598 
11599  if (error != NULL) {
11600  break;
11601  }
11602 
11603  }
11604 
11605  response->storage_domains = (ds3_storage_domain_response**)storage_domains_array->pdata;
11606  response->num_storage_domains = storage_domains_array->len;
11607  g_ptr_array_free(storage_domains_array, FALSE);
11608 
11609  xmlFreeDoc(doc);
11610 
11611  if (error == NULL) {
11612  *_response = response;
11613  } else {
11615  }
11616 
11617  return error;
11618 }
11619 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) {
11620  xmlDocPtr doc;
11621  xmlNodePtr root;
11622  xmlNodePtr child_node;
11624  ds3_error* error = NULL;
11625  GPtrArray* feature_keys_array = g_ptr_array_new();
11626 
11627  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11628  if (error != NULL) {
11629  return error;
11630  }
11631 
11632  response = g_new0(ds3_feature_key_list_response, 1);
11633 
11634  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11635  if (element_equal(child_node, "FeatureKey")) {
11636  ds3_feature_key_response* feature_keys_response = NULL;
11637  error = _parse_ds3_feature_key_response(client, doc, child_node, &feature_keys_response);
11638  response->feature_keys = (ds3_feature_key_response**)feature_keys_array->pdata;
11639  g_ptr_array_add(feature_keys_array, feature_keys_response);
11640  } else {
11641  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_feature_key_list_response [%s]\n", child_node->name, root->name);
11642  }
11643 
11644  if (error != NULL) {
11645  break;
11646  }
11647 
11648  }
11649 
11650  response->feature_keys = (ds3_feature_key_response**)feature_keys_array->pdata;
11651  response->num_feature_keys = feature_keys_array->len;
11652  g_ptr_array_free(feature_keys_array, FALSE);
11653 
11654  xmlFreeDoc(doc);
11655 
11656  if (error == NULL) {
11657  *_response = response;
11658  } else {
11660  }
11661 
11662  return error;
11663 }
11664 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) {
11665  xmlDocPtr doc;
11666  xmlNodePtr root;
11667  xmlNodePtr child_node;
11669  ds3_error* error = NULL;
11670  GPtrArray* system_failures_array = g_ptr_array_new();
11671 
11672  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11673  if (error != NULL) {
11674  return error;
11675  }
11676 
11677  response = g_new0(ds3_system_failure_list_response, 1);
11678 
11679  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11680  if (element_equal(child_node, "SystemFailure")) {
11681  ds3_system_failure_response* system_failures_response = NULL;
11682  error = _parse_ds3_system_failure_response(client, doc, child_node, &system_failures_response);
11683  response->system_failures = (ds3_system_failure_response**)system_failures_array->pdata;
11684  g_ptr_array_add(system_failures_array, system_failures_response);
11685  } else {
11686  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_list_response [%s]\n", child_node->name, root->name);
11687  }
11688 
11689  if (error != NULL) {
11690  break;
11691  }
11692 
11693  }
11694 
11695  response->system_failures = (ds3_system_failure_response**)system_failures_array->pdata;
11696  response->num_system_failures = system_failures_array->len;
11697  g_ptr_array_free(system_failures_array, FALSE);
11698 
11699  xmlFreeDoc(doc);
11700 
11701  if (error == NULL) {
11702  *_response = response;
11703  } else {
11705  }
11706 
11707  return error;
11708 }
11710  xmlDocPtr doc;
11711  xmlNodePtr root;
11712  xmlNodePtr child_node;
11714  ds3_error* error = NULL;
11715  GPtrArray* tape_density_directives_array = g_ptr_array_new();
11716 
11717  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11718  if (error != NULL) {
11719  return error;
11720  }
11721 
11722  response = g_new0(ds3_tape_density_directive_list_response, 1);
11723 
11724  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11725  if (element_equal(child_node, "TapeDensityDirective")) {
11726  ds3_tape_density_directive_response* tape_density_directives_response = NULL;
11727  error = _parse_ds3_tape_density_directive_response(client, doc, child_node, &tape_density_directives_response);
11728  response->tape_density_directives = (ds3_tape_density_directive_response**)tape_density_directives_array->pdata;
11729  g_ptr_array_add(tape_density_directives_array, tape_density_directives_response);
11730  } else {
11731  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_density_directive_list_response [%s]\n", child_node->name, root->name);
11732  }
11733 
11734  if (error != NULL) {
11735  break;
11736  }
11737 
11738  }
11739 
11740  response->tape_density_directives = (ds3_tape_density_directive_response**)tape_density_directives_array->pdata;
11741  response->num_tape_density_directives = tape_density_directives_array->len;
11742  g_ptr_array_free(tape_density_directives_array, FALSE);
11743 
11744  xmlFreeDoc(doc);
11745 
11746  if (error == NULL) {
11747  *_response = response;
11748  } else {
11750  }
11751 
11752  return error;
11753 }
11754 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) {
11755  xmlDocPtr doc;
11756  xmlNodePtr root;
11757  xmlNodePtr child_node;
11758  ds3_tape_drive_list_response* response;
11759  ds3_error* error = NULL;
11760  GPtrArray* tape_drives_array = g_ptr_array_new();
11761 
11762  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11763  if (error != NULL) {
11764  return error;
11765  }
11766 
11767  response = g_new0(ds3_tape_drive_list_response, 1);
11768 
11769  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11770  if (element_equal(child_node, "TapeDrive")) {
11771  ds3_tape_drive_response* tape_drives_response = NULL;
11772  error = _parse_ds3_tape_drive_response(client, doc, child_node, &tape_drives_response);
11773  response->tape_drives = (ds3_tape_drive_response**)tape_drives_array->pdata;
11774  g_ptr_array_add(tape_drives_array, tape_drives_response);
11775  } else {
11776  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_drive_list_response [%s]\n", child_node->name, root->name);
11777  }
11778 
11779  if (error != NULL) {
11780  break;
11781  }
11782 
11783  }
11784 
11785  response->tape_drives = (ds3_tape_drive_response**)tape_drives_array->pdata;
11786  response->num_tape_drives = tape_drives_array->len;
11787  g_ptr_array_free(tape_drives_array, FALSE);
11788 
11789  xmlFreeDoc(doc);
11790 
11791  if (error == NULL) {
11792  *_response = response;
11793  } else {
11795  }
11796 
11797  return error;
11798 }
11800  xmlDocPtr doc;
11801  xmlNodePtr root;
11802  xmlNodePtr child_node;
11804  ds3_error* error = NULL;
11805  GPtrArray* detailed_tape_failures_array = g_ptr_array_new();
11806 
11807  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11808  if (error != NULL) {
11809  return error;
11810  }
11811 
11812  response = g_new0(ds3_detailed_tape_failure_list_response, 1);
11813 
11814  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11815  if (element_equal(child_node, "TapeFailure")) {
11816  ds3_detailed_tape_failure_response* detailed_tape_failures_response = NULL;
11817  error = _parse_ds3_detailed_tape_failure_response(client, doc, child_node, &detailed_tape_failures_response);
11818  response->detailed_tape_failures = (ds3_detailed_tape_failure_response**)detailed_tape_failures_array->pdata;
11819  g_ptr_array_add(detailed_tape_failures_array, detailed_tape_failures_response);
11820  } else {
11821  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_tape_failure_list_response [%s]\n", child_node->name, root->name);
11822  }
11823 
11824  if (error != NULL) {
11825  break;
11826  }
11827 
11828  }
11829 
11830  response->detailed_tape_failures = (ds3_detailed_tape_failure_response**)detailed_tape_failures_array->pdata;
11831  response->num_detailed_tape_failures = detailed_tape_failures_array->len;
11832  g_ptr_array_free(detailed_tape_failures_array, FALSE);
11833 
11834  xmlFreeDoc(doc);
11835 
11836  if (error == NULL) {
11837  *_response = response;
11838  } else {
11840  }
11841 
11842  return error;
11843 }
11844 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) {
11845  xmlDocPtr doc;
11846  xmlNodePtr root;
11847  xmlNodePtr child_node;
11849  ds3_error* error = NULL;
11850  GPtrArray* tape_libraries_array = g_ptr_array_new();
11851 
11852  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11853  if (error != NULL) {
11854  return error;
11855  }
11856 
11857  response = g_new0(ds3_tape_library_list_response, 1);
11858 
11859  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11860  if (element_equal(child_node, "TapeLibrary")) {
11861  ds3_tape_library_response* tape_libraries_response = NULL;
11862  error = _parse_ds3_tape_library_response(client, doc, child_node, &tape_libraries_response);
11863  response->tape_libraries = (ds3_tape_library_response**)tape_libraries_array->pdata;
11864  g_ptr_array_add(tape_libraries_array, tape_libraries_response);
11865  } else {
11866  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_library_list_response [%s]\n", child_node->name, root->name);
11867  }
11868 
11869  if (error != NULL) {
11870  break;
11871  }
11872 
11873  }
11874 
11875  response->tape_libraries = (ds3_tape_library_response**)tape_libraries_array->pdata;
11876  response->num_tape_libraries = tape_libraries_array->len;
11877  g_ptr_array_free(tape_libraries_array, FALSE);
11878 
11879  xmlFreeDoc(doc);
11880 
11881  if (error == NULL) {
11882  *_response = response;
11883  } else {
11885  }
11886 
11887  return error;
11888 }
11890  xmlDocPtr doc;
11891  xmlNodePtr root;
11892  xmlNodePtr child_node;
11894  ds3_error* error = NULL;
11895  GPtrArray* tape_partition_failures_array = g_ptr_array_new();
11896 
11897  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11898  if (error != NULL) {
11899  return error;
11900  }
11901 
11902  response = g_new0(ds3_tape_partition_failure_list_response, 1);
11903 
11904  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11905  if (element_equal(child_node, "TapePartitionFailure")) {
11906  ds3_tape_partition_failure_response* tape_partition_failures_response = NULL;
11907  error = _parse_ds3_tape_partition_failure_response(client, doc, child_node, &tape_partition_failures_response);
11908  response->tape_partition_failures = (ds3_tape_partition_failure_response**)tape_partition_failures_array->pdata;
11909  g_ptr_array_add(tape_partition_failures_array, tape_partition_failures_response);
11910  } else {
11911  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_failure_list_response [%s]\n", child_node->name, root->name);
11912  }
11913 
11914  if (error != NULL) {
11915  break;
11916  }
11917 
11918  }
11919 
11920  response->tape_partition_failures = (ds3_tape_partition_failure_response**)tape_partition_failures_array->pdata;
11921  response->num_tape_partition_failures = tape_partition_failures_array->len;
11922  g_ptr_array_free(tape_partition_failures_array, FALSE);
11923 
11924  xmlFreeDoc(doc);
11925 
11926  if (error == NULL) {
11927  *_response = response;
11928  } else {
11930  }
11931 
11932  return error;
11933 }
11934 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) {
11935  xmlDocPtr doc;
11936  xmlNodePtr root;
11937  xmlNodePtr child_node;
11939  ds3_error* error = NULL;
11940  GPtrArray* tape_partitions_array = g_ptr_array_new();
11941 
11942  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11943  if (error != NULL) {
11944  return error;
11945  }
11946 
11947  response = g_new0(ds3_tape_partition_list_response, 1);
11948 
11949  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11950  if (element_equal(child_node, "TapePartition")) {
11951  ds3_tape_partition_response* tape_partitions_response = NULL;
11952  error = _parse_ds3_tape_partition_response(client, doc, child_node, &tape_partitions_response);
11953  response->tape_partitions = (ds3_tape_partition_response**)tape_partitions_array->pdata;
11954  g_ptr_array_add(tape_partitions_array, tape_partitions_response);
11955  } else {
11956  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_list_response [%s]\n", child_node->name, root->name);
11957  }
11958 
11959  if (error != NULL) {
11960  break;
11961  }
11962 
11963  }
11964 
11965  response->tape_partitions = (ds3_tape_partition_response**)tape_partitions_array->pdata;
11966  response->num_tape_partitions = tape_partitions_array->len;
11967  g_ptr_array_free(tape_partitions_array, FALSE);
11968 
11969  xmlFreeDoc(doc);
11970 
11971  if (error == NULL) {
11972  *_response = response;
11973  } else {
11975  }
11976 
11977  return error;
11978 }
11980  xmlDocPtr doc;
11981  xmlNodePtr root;
11982  xmlNodePtr child_node;
11984  ds3_error* error = NULL;
11985  GPtrArray* named_detailed_tape_partitions_array = g_ptr_array_new();
11986 
11987  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11988  if (error != NULL) {
11989  return error;
11990  }
11991 
11993 
11994  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11995  if (element_equal(child_node, "TapePartition")) {
11996  ds3_named_detailed_tape_partition_response* named_detailed_tape_partitions_response = NULL;
11997  error = _parse_ds3_named_detailed_tape_partition_response(client, doc, child_node, &named_detailed_tape_partitions_response);
11998  response->named_detailed_tape_partitions = (ds3_named_detailed_tape_partition_response**)named_detailed_tape_partitions_array->pdata;
11999  g_ptr_array_add(named_detailed_tape_partitions_array, named_detailed_tape_partitions_response);
12000  } else {
12001  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);
12002  }
12003 
12004  if (error != NULL) {
12005  break;
12006  }
12007 
12008  }
12009 
12010  response->named_detailed_tape_partitions = (ds3_named_detailed_tape_partition_response**)named_detailed_tape_partitions_array->pdata;
12011  response->num_named_detailed_tape_partitions = named_detailed_tape_partitions_array->len;
12012  g_ptr_array_free(named_detailed_tape_partitions_array, FALSE);
12013 
12014  xmlFreeDoc(doc);
12015 
12016  if (error == NULL) {
12017  *_response = response;
12018  } else {
12020  }
12021 
12022  return error;
12023 }
12024 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) {
12025  xmlDocPtr doc;
12026  xmlNodePtr root;
12027  xmlNodePtr child_node;
12028  ds3_tape_list_response* response;
12029  ds3_error* error = NULL;
12030  GPtrArray* tapes_array = g_ptr_array_new();
12031 
12032  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12033  if (error != NULL) {
12034  return error;
12035  }
12036 
12037  response = g_new0(ds3_tape_list_response, 1);
12038 
12039  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12040  if (element_equal(child_node, "Tape")) {
12041  ds3_tape_response* tapes_response = NULL;
12042  error = _parse_ds3_tape_response(client, doc, child_node, &tapes_response);
12043  response->tapes = (ds3_tape_response**)tapes_array->pdata;
12044  g_ptr_array_add(tapes_array, tapes_response);
12045  } else {
12046  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_list_response [%s]\n", child_node->name, root->name);
12047  }
12048 
12049  if (error != NULL) {
12050  break;
12051  }
12052 
12053  }
12054 
12055  response->tapes = (ds3_tape_response**)tapes_array->pdata;
12056  response->num_tapes = tapes_array->len;
12057  g_ptr_array_free(tapes_array, FALSE);
12058 
12059  xmlFreeDoc(doc);
12060 
12061  if (error == NULL) {
12062  *_response = response;
12063  } else {
12064  ds3_tape_list_response_free(response);
12065  }
12066 
12067  return error;
12068 }
12070  xmlDocPtr doc;
12071  xmlNodePtr root;
12072  xmlNodePtr child_node;
12074  ds3_error* error = NULL;
12075  GPtrArray* azure_target_bucket_names_array = g_ptr_array_new();
12076 
12077  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12078  if (error != NULL) {
12079  return error;
12080  }
12081 
12082  response = g_new0(ds3_azure_target_bucket_name_list_response, 1);
12083 
12084  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12085  if (element_equal(child_node, "AzureTargetBucketName")) {
12086  ds3_azure_target_bucket_name_response* azure_target_bucket_names_response = NULL;
12087  error = _parse_ds3_azure_target_bucket_name_response(client, doc, child_node, &azure_target_bucket_names_response);
12088  response->azure_target_bucket_names = (ds3_azure_target_bucket_name_response**)azure_target_bucket_names_array->pdata;
12089  g_ptr_array_add(azure_target_bucket_names_array, azure_target_bucket_names_response);
12090  } else {
12091  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);
12092  }
12093 
12094  if (error != NULL) {
12095  break;
12096  }
12097 
12098  }
12099 
12100  response->azure_target_bucket_names = (ds3_azure_target_bucket_name_response**)azure_target_bucket_names_array->pdata;
12101  response->num_azure_target_bucket_names = azure_target_bucket_names_array->len;
12102  g_ptr_array_free(azure_target_bucket_names_array, FALSE);
12103 
12104  xmlFreeDoc(doc);
12105 
12106  if (error == NULL) {
12107  *_response = response;
12108  } else {
12110  }
12111 
12112  return error;
12113 }
12115  xmlDocPtr doc;
12116  xmlNodePtr root;
12117  xmlNodePtr child_node;
12119  ds3_error* error = NULL;
12120  GPtrArray* azure_target_failures_array = g_ptr_array_new();
12121 
12122  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12123  if (error != NULL) {
12124  return error;
12125  }
12126 
12127  response = g_new0(ds3_azure_target_failure_list_response, 1);
12128 
12129  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12130  if (element_equal(child_node, "AzureTargetFailure")) {
12131  ds3_azure_target_failure_response* azure_target_failures_response = NULL;
12132  error = _parse_ds3_azure_target_failure_response(client, doc, child_node, &azure_target_failures_response);
12133  response->azure_target_failures = (ds3_azure_target_failure_response**)azure_target_failures_array->pdata;
12134  g_ptr_array_add(azure_target_failures_array, azure_target_failures_response);
12135  } else {
12136  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_failure_list_response [%s]\n", child_node->name, root->name);
12137  }
12138 
12139  if (error != NULL) {
12140  break;
12141  }
12142 
12143  }
12144 
12145  response->azure_target_failures = (ds3_azure_target_failure_response**)azure_target_failures_array->pdata;
12146  response->num_azure_target_failures = azure_target_failures_array->len;
12147  g_ptr_array_free(azure_target_failures_array, FALSE);
12148 
12149  xmlFreeDoc(doc);
12150 
12151  if (error == NULL) {
12152  *_response = response;
12153  } else {
12155  }
12156 
12157  return error;
12158 }
12160  xmlDocPtr doc;
12161  xmlNodePtr root;
12162  xmlNodePtr child_node;
12164  ds3_error* error = NULL;
12165  GPtrArray* azure_target_read_preferences_array = g_ptr_array_new();
12166 
12167  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12168  if (error != NULL) {
12169  return error;
12170  }
12171 
12172  response = g_new0(ds3_azure_target_read_preference_list_response, 1);
12173 
12174  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12175  if (element_equal(child_node, "AzureTargetReadPreference")) {
12176  ds3_azure_target_read_preference_response* azure_target_read_preferences_response = NULL;
12177  error = _parse_ds3_azure_target_read_preference_response(client, doc, child_node, &azure_target_read_preferences_response);
12178  response->azure_target_read_preferences = (ds3_azure_target_read_preference_response**)azure_target_read_preferences_array->pdata;
12179  g_ptr_array_add(azure_target_read_preferences_array, azure_target_read_preferences_response);
12180  } else {
12181  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);
12182  }
12183 
12184  if (error != NULL) {
12185  break;
12186  }
12187 
12188  }
12189 
12190  response->azure_target_read_preferences = (ds3_azure_target_read_preference_response**)azure_target_read_preferences_array->pdata;
12191  response->num_azure_target_read_preferences = azure_target_read_preferences_array->len;
12192  g_ptr_array_free(azure_target_read_preferences_array, FALSE);
12193 
12194  xmlFreeDoc(doc);
12195 
12196  if (error == NULL) {
12197  *_response = response;
12198  } else {
12200  }
12201 
12202  return error;
12203 }
12204 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) {
12205  xmlDocPtr doc;
12206  xmlNodePtr root;
12207  xmlNodePtr child_node;
12209  ds3_error* error = NULL;
12210  GPtrArray* azure_targets_array = g_ptr_array_new();
12211 
12212  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12213  if (error != NULL) {
12214  return error;
12215  }
12216 
12217  response = g_new0(ds3_azure_target_list_response, 1);
12218 
12219  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12220  if (element_equal(child_node, "AzureTarget")) {
12221  ds3_azure_target_response* azure_targets_response = NULL;
12222  error = _parse_ds3_azure_target_response(client, doc, child_node, &azure_targets_response);
12223  response->azure_targets = (ds3_azure_target_response**)azure_targets_array->pdata;
12224  g_ptr_array_add(azure_targets_array, azure_targets_response);
12225  } else {
12226  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_azure_target_list_response [%s]\n", child_node->name, root->name);
12227  }
12228 
12229  if (error != NULL) {
12230  break;
12231  }
12232 
12233  }
12234 
12235  response->azure_targets = (ds3_azure_target_response**)azure_targets_array->pdata;
12236  response->num_azure_targets = azure_targets_array->len;
12237  g_ptr_array_free(azure_targets_array, FALSE);
12238 
12239  xmlFreeDoc(doc);
12240 
12241  if (error == NULL) {
12242  *_response = response;
12243  } else {
12245  }
12246 
12247  return error;
12248 }
12249 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) {
12250  xmlDocPtr doc;
12251  xmlNodePtr root;
12252  xmlNodePtr child_node;
12254  ds3_error* error = NULL;
12255  GPtrArray* ds3_target_failures_array = g_ptr_array_new();
12256 
12257  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12258  if (error != NULL) {
12259  return error;
12260  }
12261 
12262  response = g_new0(ds3_target_failure_list_response, 1);
12263 
12264  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12265  if (element_equal(child_node, "Ds3TargetFailure")) {
12266  ds3_target_failure_response* ds3_target_failures_response = NULL;
12267  error = _parse_ds3_target_failure_response(client, doc, child_node, &ds3_target_failures_response);
12268  response->ds3_target_failures = (ds3_target_failure_response**)ds3_target_failures_array->pdata;
12269  g_ptr_array_add(ds3_target_failures_array, ds3_target_failures_response);
12270  } else {
12271  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_failure_list_response [%s]\n", child_node->name, root->name);
12272  }
12273 
12274  if (error != NULL) {
12275  break;
12276  }
12277 
12278  }
12279 
12280  response->ds3_target_failures = (ds3_target_failure_response**)ds3_target_failures_array->pdata;
12281  response->num_ds3_target_failures = ds3_target_failures_array->len;
12282  g_ptr_array_free(ds3_target_failures_array, FALSE);
12283 
12284  xmlFreeDoc(doc);
12285 
12286  if (error == NULL) {
12287  *_response = response;
12288  } else {
12290  }
12291 
12292  return error;
12293 }
12295  xmlDocPtr doc;
12296  xmlNodePtr root;
12297  xmlNodePtr child_node;
12299  ds3_error* error = NULL;
12300  GPtrArray* ds3_target_read_preferences_array = g_ptr_array_new();
12301 
12302  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12303  if (error != NULL) {
12304  return error;
12305  }
12306 
12307  response = g_new0(ds3_target_read_preference_list_response, 1);
12308 
12309  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12310  if (element_equal(child_node, "Ds3TargetReadPreference")) {
12311  ds3_target_read_preference_response* ds3_target_read_preferences_response = NULL;
12312  error = _parse_ds3_target_read_preference_response(client, doc, child_node, &ds3_target_read_preferences_response);
12313  response->ds3_target_read_preferences = (ds3_target_read_preference_response**)ds3_target_read_preferences_array->pdata;
12314  g_ptr_array_add(ds3_target_read_preferences_array, ds3_target_read_preferences_response);
12315  } else {
12316  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_read_preference_list_response [%s]\n", child_node->name, root->name);
12317  }
12318 
12319  if (error != NULL) {
12320  break;
12321  }
12322 
12323  }
12324 
12325  response->ds3_target_read_preferences = (ds3_target_read_preference_response**)ds3_target_read_preferences_array->pdata;
12326  response->num_ds3_target_read_preferences = ds3_target_read_preferences_array->len;
12327  g_ptr_array_free(ds3_target_read_preferences_array, FALSE);
12328 
12329  xmlFreeDoc(doc);
12330 
12331  if (error == NULL) {
12332  *_response = response;
12333  } else {
12335  }
12336 
12337  return error;
12338 }
12339 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) {
12340  xmlDocPtr doc;
12341  xmlNodePtr root;
12342  xmlNodePtr child_node;
12343  ds3_target_list_response* response;
12344  ds3_error* error = NULL;
12345  GPtrArray* ds3_targets_array = g_ptr_array_new();
12346 
12347  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12348  if (error != NULL) {
12349  return error;
12350  }
12351 
12352  response = g_new0(ds3_target_list_response, 1);
12353 
12354  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12355  if (element_equal(child_node, "Ds3Target")) {
12356  ds3_target_response* ds3_targets_response = NULL;
12357  error = _parse_ds3_target_response(client, doc, child_node, &ds3_targets_response);
12358  response->ds3_targets = (ds3_target_response**)ds3_targets_array->pdata;
12359  g_ptr_array_add(ds3_targets_array, ds3_targets_response);
12360  } else {
12361  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_target_list_response [%s]\n", child_node->name, root->name);
12362  }
12363 
12364  if (error != NULL) {
12365  break;
12366  }
12367 
12368  }
12369 
12370  response->ds3_targets = (ds3_target_response**)ds3_targets_array->pdata;
12371  response->num_ds3_targets = ds3_targets_array->len;
12372  g_ptr_array_free(ds3_targets_array, FALSE);
12373 
12374  xmlFreeDoc(doc);
12375 
12376  if (error == NULL) {
12377  *_response = response;
12378  } else {
12380  }
12381 
12382  return error;
12383 }
12385  xmlDocPtr doc;
12386  xmlNodePtr root;
12387  xmlNodePtr child_node;
12389  ds3_error* error = NULL;
12390  GPtrArray* s3_target_bucket_names_array = g_ptr_array_new();
12391 
12392  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12393  if (error != NULL) {
12394  return error;
12395  }
12396 
12397  response = g_new0(ds3_s3_target_bucket_name_list_response, 1);
12398 
12399  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12400  if (element_equal(child_node, "S3TargetBucketName")) {
12401  ds3_s3_target_bucket_name_response* s3_target_bucket_names_response = NULL;
12402  error = _parse_ds3_s3_target_bucket_name_response(client, doc, child_node, &s3_target_bucket_names_response);
12403  response->s3_target_bucket_names = (ds3_s3_target_bucket_name_response**)s3_target_bucket_names_array->pdata;
12404  g_ptr_array_add(s3_target_bucket_names_array, s3_target_bucket_names_response);
12405  } else {
12406  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);
12407  }
12408 
12409  if (error != NULL) {
12410  break;
12411  }
12412 
12413  }
12414 
12415  response->s3_target_bucket_names = (ds3_s3_target_bucket_name_response**)s3_target_bucket_names_array->pdata;
12416  response->num_s3_target_bucket_names = s3_target_bucket_names_array->len;
12417  g_ptr_array_free(s3_target_bucket_names_array, FALSE);
12418 
12419  xmlFreeDoc(doc);
12420 
12421  if (error == NULL) {
12422  *_response = response;
12423  } else {
12425  }
12426 
12427  return error;
12428 }
12429 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) {
12430  xmlDocPtr doc;
12431  xmlNodePtr root;
12432  xmlNodePtr child_node;
12434  ds3_error* error = NULL;
12435  GPtrArray* s3_target_failures_array = g_ptr_array_new();
12436 
12437  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12438  if (error != NULL) {
12439  return error;
12440  }
12441 
12442  response = g_new0(ds3_s3_target_failure_list_response, 1);
12443 
12444  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12445  if (element_equal(child_node, "S3TargetFailure")) {
12446  ds3_s3_target_failure_response* s3_target_failures_response = NULL;
12447  error = _parse_ds3_s3_target_failure_response(client, doc, child_node, &s3_target_failures_response);
12448  response->s3_target_failures = (ds3_s3_target_failure_response**)s3_target_failures_array->pdata;
12449  g_ptr_array_add(s3_target_failures_array, s3_target_failures_response);
12450  } else {
12451  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_failure_list_response [%s]\n", child_node->name, root->name);
12452  }
12453 
12454  if (error != NULL) {
12455  break;
12456  }
12457 
12458  }
12459 
12460  response->s3_target_failures = (ds3_s3_target_failure_response**)s3_target_failures_array->pdata;
12461  response->num_s3_target_failures = s3_target_failures_array->len;
12462  g_ptr_array_free(s3_target_failures_array, FALSE);
12463 
12464  xmlFreeDoc(doc);
12465 
12466  if (error == NULL) {
12467  *_response = response;
12468  } else {
12470  }
12471 
12472  return error;
12473 }
12475  xmlDocPtr doc;
12476  xmlNodePtr root;
12477  xmlNodePtr child_node;
12479  ds3_error* error = NULL;
12480  GPtrArray* s3_target_read_preferences_array = g_ptr_array_new();
12481 
12482  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12483  if (error != NULL) {
12484  return error;
12485  }
12486 
12487  response = g_new0(ds3_s3_target_read_preference_list_response, 1);
12488 
12489  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12490  if (element_equal(child_node, "S3TargetReadPreference")) {
12491  ds3_s3_target_read_preference_response* s3_target_read_preferences_response = NULL;
12492  error = _parse_ds3_s3_target_read_preference_response(client, doc, child_node, &s3_target_read_preferences_response);
12493  response->s3_target_read_preferences = (ds3_s3_target_read_preference_response**)s3_target_read_preferences_array->pdata;
12494  g_ptr_array_add(s3_target_read_preferences_array, s3_target_read_preferences_response);
12495  } else {
12496  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);
12497  }
12498 
12499  if (error != NULL) {
12500  break;
12501  }
12502 
12503  }
12504 
12505  response->s3_target_read_preferences = (ds3_s3_target_read_preference_response**)s3_target_read_preferences_array->pdata;
12506  response->num_s3_target_read_preferences = s3_target_read_preferences_array->len;
12507  g_ptr_array_free(s3_target_read_preferences_array, FALSE);
12508 
12509  xmlFreeDoc(doc);
12510 
12511  if (error == NULL) {
12512  *_response = response;
12513  } else {
12515  }
12516 
12517  return error;
12518 }
12519 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) {
12520  xmlDocPtr doc;
12521  xmlNodePtr root;
12522  xmlNodePtr child_node;
12523  ds3_s3_target_list_response* response;
12524  ds3_error* error = NULL;
12525  GPtrArray* s3_targets_array = g_ptr_array_new();
12526 
12527  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12528  if (error != NULL) {
12529  return error;
12530  }
12531 
12532  response = g_new0(ds3_s3_target_list_response, 1);
12533 
12534  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12535  if (element_equal(child_node, "S3Target")) {
12536  ds3_s3_target_response* s3_targets_response = NULL;
12537  error = _parse_ds3_s3_target_response(client, doc, child_node, &s3_targets_response);
12538  response->s3_targets = (ds3_s3_target_response**)s3_targets_array->pdata;
12539  g_ptr_array_add(s3_targets_array, s3_targets_response);
12540  } else {
12541  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_target_list_response [%s]\n", child_node->name, root->name);
12542  }
12543 
12544  if (error != NULL) {
12545  break;
12546  }
12547 
12548  }
12549 
12550  response->s3_targets = (ds3_s3_target_response**)s3_targets_array->pdata;
12551  response->num_s3_targets = s3_targets_array->len;
12552  g_ptr_array_free(s3_targets_array, FALSE);
12553 
12554  xmlFreeDoc(doc);
12555 
12556  if (error == NULL) {
12557  *_response = response;
12558  } else {
12560  }
12561 
12562  return error;
12563 }
12564 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) {
12565  xmlDocPtr doc;
12566  xmlNodePtr root;
12567  xmlNodePtr child_node;
12569  ds3_error* error = NULL;
12570  GPtrArray* spectra_users_array = g_ptr_array_new();
12571 
12572  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12573  if (error != NULL) {
12574  return error;
12575  }
12576 
12577  response = g_new0(ds3_spectra_user_list_response, 1);
12578 
12579  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12580  if (element_equal(child_node, "User")) {
12581  ds3_spectra_user_response* spectra_users_response = NULL;
12582  error = _parse_ds3_spectra_user_response(client, doc, child_node, &spectra_users_response);
12583  response->spectra_users = (ds3_spectra_user_response**)spectra_users_array->pdata;
12584  g_ptr_array_add(spectra_users_array, spectra_users_response);
12585  } else {
12586  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_spectra_user_list_response [%s]\n", child_node->name, root->name);
12587  }
12588 
12589  if (error != NULL) {
12590  break;
12591  }
12592 
12593  }
12594 
12595  response->spectra_users = (ds3_spectra_user_response**)spectra_users_array->pdata;
12596  response->num_spectra_users = spectra_users_array->len;
12597  g_ptr_array_free(spectra_users_array, FALSE);
12598 
12599  xmlFreeDoc(doc);
12600 
12601  if (error == NULL) {
12602  *_response = response;
12603  } else {
12605  }
12606 
12607  return error;
12608 }
12609 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) {
12610  xmlDocPtr doc;
12611  xmlNodePtr root;
12612  xmlNodePtr child_node;
12614  ds3_error* error = NULL;
12615 
12616  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12617  if (error != NULL) {
12618  return error;
12619  }
12620 
12621  response = g_new0(ds3_physical_placement_response, 1);
12622 
12623  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12624  if (element_equal(child_node, "AzureTargets")) {
12625  GPtrArray* azure_targets_array;
12626  error = _parse_ds3_azure_target_response_array(client, doc, child_node, &azure_targets_array);
12627  response->azure_targets = (ds3_azure_target_response**)azure_targets_array->pdata;
12628  response->num_azure_targets = azure_targets_array->len;
12629  g_ptr_array_free(azure_targets_array, FALSE);
12630  } else if (element_equal(child_node, "Ds3Targets")) {
12631  GPtrArray* ds3_targets_array;
12632  error = _parse_ds3_target_response_array(client, doc, child_node, &ds3_targets_array);
12633  response->ds3_targets = (ds3_target_response**)ds3_targets_array->pdata;
12634  response->num_ds3_targets = ds3_targets_array->len;
12635  g_ptr_array_free(ds3_targets_array, FALSE);
12636  } else if (element_equal(child_node, "Pools")) {
12637  GPtrArray* pools_array;
12638  error = _parse_ds3_pool_response_array(client, doc, child_node, &pools_array);
12639  response->pools = (ds3_pool_response**)pools_array->pdata;
12640  response->num_pools = pools_array->len;
12641  g_ptr_array_free(pools_array, FALSE);
12642  } else if (element_equal(child_node, "S3Targets")) {
12643  GPtrArray* s3_targets_array;
12644  error = _parse_ds3_s3_target_response_array(client, doc, child_node, &s3_targets_array);
12645  response->s3_targets = (ds3_s3_target_response**)s3_targets_array->pdata;
12646  response->num_s3_targets = s3_targets_array->len;
12647  g_ptr_array_free(s3_targets_array, FALSE);
12648  } else if (element_equal(child_node, "Tapes")) {
12649  GPtrArray* tapes_array;
12650  error = _parse_ds3_tape_response_array(client, doc, child_node, &tapes_array);
12651  response->tapes = (ds3_tape_response**)tapes_array->pdata;
12652  response->num_tapes = tapes_array->len;
12653  g_ptr_array_free(tapes_array, FALSE);
12654  } else {
12655  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_physical_placement_response [%s]\n", child_node->name, root->name);
12656  }
12657 
12658  if (error != NULL) {
12659  break;
12660  }
12661 
12662  }
12663 
12664 
12665  xmlFreeDoc(doc);
12666 
12667  if (error == NULL) {
12668  *_response = response;
12669  } else {
12671  }
12672 
12673  return error;
12674 }
12676  xmlDocPtr doc;
12677  xmlNodePtr root;
12678  xmlNodePtr child_node;
12680  ds3_error* error = NULL;
12681 
12682  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12683  if (error != NULL) {
12684  return error;
12685  }
12686 
12687  response = g_new0(ds3_capacity_summary_container_response, 1);
12688 
12689  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12690  if (element_equal(child_node, "Pool")) {
12691  error = _parse_ds3_storage_domain_capacity_summary_response(client, doc, child_node, &response->pool);
12692  } else if (element_equal(child_node, "Tape")) {
12693  error = _parse_ds3_storage_domain_capacity_summary_response(client, doc, child_node, &response->tape);
12694  } else {
12695  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_capacity_summary_container_response [%s]\n", child_node->name, root->name);
12696  }
12697 
12698  if (error != NULL) {
12699  break;
12700  }
12701 
12702  }
12703 
12704 
12705  xmlFreeDoc(doc);
12706 
12707  if (error == NULL) {
12708  *_response = response;
12709  } else {
12711  }
12712 
12713  return error;
12714 }
12715 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) {
12716  xmlDocPtr doc;
12717  xmlNodePtr root;
12718  xmlNodePtr child_node;
12720  ds3_error* error = NULL;
12721  GPtrArray* objects_array = g_ptr_array_new();
12722 
12723  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12724  if (error != NULL) {
12725  return error;
12726  }
12727 
12728  response = g_new0(ds3_bulk_object_list_response, 1);
12729 
12730  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12731  if (element_equal(child_node, "Object")) {
12732  ds3_bulk_object_response* objects_response = NULL;
12733  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
12734  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12735  g_ptr_array_add(objects_array, objects_response);
12736  } else {
12737  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bulk_object_list_response [%s]\n", child_node->name, root->name);
12738  }
12739 
12740  if (error != NULL) {
12741  break;
12742  }
12743 
12744  }
12745 
12746  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12747  response->num_objects = objects_array->len;
12748  g_ptr_array_free(objects_array, FALSE);
12749 
12750  xmlFreeDoc(doc);
12751 
12752  if (error == NULL) {
12753  *_response = response;
12754  } else {
12756  }
12757 
12758  return error;
12759 }
12761  xmlDocPtr doc;
12762  xmlNodePtr root;
12763  xmlNodePtr child_node;
12765  ds3_error* error = NULL;
12766 
12767  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListAllMyBucketsResult");
12768  if (error != NULL) {
12769  return error;
12770  }
12771 
12772  response = g_new0(ds3_list_all_my_buckets_result_response, 1);
12773 
12774  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12775  if (element_equal(child_node, "Buckets")) {
12776  GPtrArray* buckets_array;
12777  error = _parse_ds3_bucket_details_response_array(client, doc, child_node, &buckets_array);
12778  response->buckets = (ds3_bucket_details_response**)buckets_array->pdata;
12779  response->num_buckets = buckets_array->len;
12780  g_ptr_array_free(buckets_array, FALSE);
12781  } else if (element_equal(child_node, "Owner")) {
12782  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
12783  } else {
12784  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);
12785  }
12786 
12787  if (error != NULL) {
12788  break;
12789  }
12790 
12791  }
12792 
12793 
12794  xmlFreeDoc(doc);
12795 
12796  if (error == NULL) {
12797  *_response = response;
12798  } else {
12800  }
12801 
12802  return error;
12803 }
12804 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) {
12805  xmlDocPtr doc;
12806  xmlNodePtr root;
12807  xmlNodePtr child_node;
12808  ds3_delete_result_response* response;
12809  ds3_error* error = NULL;
12810  GPtrArray* deleted_objects_array = g_ptr_array_new();
12811  GPtrArray* errors_array = g_ptr_array_new();
12812 
12813  error = _get_request_xml_nodes(xml_blob, &doc, &root, "DeleteResult");
12814  if (error != NULL) {
12815  return error;
12816  }
12817 
12818  response = g_new0(ds3_delete_result_response, 1);
12819 
12820  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12821  if (element_equal(child_node, "Deleted")) {
12822  ds3_s3_object_to_delete_response* deleted_objects_response = NULL;
12823  error = _parse_ds3_s3_object_to_delete_response(client, doc, child_node, &deleted_objects_response);
12824  response->deleted_objects = (ds3_s3_object_to_delete_response**)deleted_objects_array->pdata;
12825  g_ptr_array_add(deleted_objects_array, deleted_objects_response);
12826  } else if (element_equal(child_node, "Error")) {
12827  ds3_delete_object_error_response* errors_response = NULL;
12828  error = _parse_ds3_delete_object_error_response(client, doc, child_node, &errors_response);
12829  response->errors = (ds3_delete_object_error_response**)errors_array->pdata;
12830  g_ptr_array_add(errors_array, errors_response);
12831  } else {
12832  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_delete_result_response [%s]\n", child_node->name, root->name);
12833  }
12834 
12835  if (error != NULL) {
12836  break;
12837  }
12838 
12839  }
12840 
12841  response->deleted_objects = (ds3_s3_object_to_delete_response**)deleted_objects_array->pdata;
12842  response->num_deleted_objects = deleted_objects_array->len;
12843  g_ptr_array_free(deleted_objects_array, FALSE);
12844  response->errors = (ds3_delete_object_error_response**)errors_array->pdata;
12845  response->num_errors = errors_array->len;
12846  g_ptr_array_free(errors_array, FALSE);
12847 
12848  xmlFreeDoc(doc);
12849 
12850  if (error == NULL) {
12851  *_response = response;
12852  } else {
12854  }
12855 
12856  return error;
12857 }
12858 static ds3_error* _parse_top_level_ds3_objects_response(const ds3_client* client, const ds3_request* request, ds3_objects_response** _response, GByteArray* xml_blob) {
12859  xmlDocPtr doc;
12860  xmlNodePtr root;
12861  xmlNodePtr child_node;
12862  struct _xmlAttr* attribute;
12863  ds3_objects_response* response;
12864  ds3_error* error = NULL;
12865  GPtrArray* objects_array = g_ptr_array_new();
12866 
12867  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Objects");
12868  if (error != NULL) {
12869  return error;
12870  }
12871 
12872  response = g_new0(ds3_objects_response, 1);
12873  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
12874  if (attribute_equal(attribute, "ChunkId") == true) {
12875  response->chunk_id = xml_get_string_from_attribute(doc, attribute);
12876  } else if (attribute_equal(attribute, "ChunkNumber") == true) {
12877  response->chunk_number = xml_get_uint16_from_attribute(doc, attribute);
12878  } else if (attribute_equal(attribute, "NodeId") == true) {
12879  response->node_id = xml_get_string_from_attribute(doc, attribute);
12880  } else {
12881  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_objects_response [%s]\n", attribute->name, root->name);
12882  }
12883 
12884  if (error != NULL) {
12885  break;
12886  }
12887 
12888  }
12889 
12890  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12891  if (element_equal(child_node, "Object")) {
12892  ds3_bulk_object_response* objects_response = NULL;
12893  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
12894  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12895  g_ptr_array_add(objects_array, objects_response);
12896  } else {
12897  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_objects_response [%s]\n", child_node->name, root->name);
12898  }
12899 
12900  if (error != NULL) {
12901  break;
12902  }
12903 
12904  }
12905 
12906  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12907  response->num_objects = objects_array->len;
12908  g_ptr_array_free(objects_array, FALSE);
12909 
12910  xmlFreeDoc(doc);
12911 
12912  if (error == NULL) {
12913  *_response = response;
12914  } else {
12915  ds3_objects_response_free(response);
12916  }
12917 
12918  return error;
12919 }
12920 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) {
12921  xmlDocPtr doc;
12922  xmlNodePtr root;
12923  xmlNodePtr child_node;
12924  struct _xmlAttr* attribute;
12926  ds3_error* error = NULL;
12927  GPtrArray* objects_array = g_ptr_array_new();
12928 
12929  error = _get_request_xml_nodes(xml_blob, &doc, &root, "MasterObjectList");
12930  if (error != NULL) {
12931  return error;
12932  }
12933 
12934  response = g_new0(ds3_master_object_list_response, 1);
12935  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
12936  if (attribute_equal(attribute, "Aggregating") == true) {
12937  response->aggregating = xml_get_bool_from_attribute(client->log, doc, attribute);
12938  } else if (attribute_equal(attribute, "BucketName") == true) {
12939  response->bucket_name = xml_get_string_from_attribute(doc, attribute);
12940  } else if (attribute_equal(attribute, "CachedSizeInBytes") == true) {
12941  response->cached_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
12942  } else if (attribute_equal(attribute, "ChunkClientProcessingOrderGuarantee") == true) {
12943  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
12944  if (text == NULL) {
12945  continue;
12946  }
12948  xmlFree(text);
12949  } else if (attribute_equal(attribute, "CompletedSizeInBytes") == true) {
12950  response->completed_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
12951  } else if (attribute_equal(attribute, "EntirelyInCache") == true) {
12952  response->entirely_in_cache = xml_get_bool_from_attribute(client->log, doc, attribute);
12953  } else if (attribute_equal(attribute, "JobId") == true) {
12954  response->job_id = xml_get_string_from_attribute(doc, attribute);
12955  } else if (attribute_equal(attribute, "Naked") == true) {
12956  response->naked = xml_get_bool_from_attribute(client->log, doc, attribute);
12957  } else if (attribute_equal(attribute, "Name") == true) {
12958  response->name = xml_get_string_from_attribute(doc, attribute);
12959  } else if (attribute_equal(attribute, "OriginalSizeInBytes") == true) {
12960  response->original_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
12961  } else if (attribute_equal(attribute, "Priority") == true) {
12962  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
12963  if (text == NULL) {
12964  continue;
12965  }
12966  response->priority = _match_ds3_priority(client->log, text);
12967  xmlFree(text);
12968  } else if (attribute_equal(attribute, "RequestType") == true) {
12969  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
12970  if (text == NULL) {
12971  continue;
12972  }
12973  response->request_type = _match_ds3_job_request_type(client->log, text);
12974  xmlFree(text);
12975  } else if (attribute_equal(attribute, "StartDate") == true) {
12976  response->start_date = xml_get_string_from_attribute(doc, attribute);
12977  } else if (attribute_equal(attribute, "Status") == true) {
12978  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
12979  if (text == NULL) {
12980  continue;
12981  }
12982  response->status = _match_ds3_job_status(client->log, text);
12983  xmlFree(text);
12984  } else if (attribute_equal(attribute, "UserId") == true) {
12985  response->user_id = xml_get_string_from_attribute(doc, attribute);
12986  } else if (attribute_equal(attribute, "UserName") == true) {
12987  response->user_name = xml_get_string_from_attribute(doc, attribute);
12988  } else {
12989  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_master_object_list_response [%s]\n", attribute->name, root->name);
12990  }
12991 
12992  if (error != NULL) {
12993  break;
12994  }
12995 
12996  }
12997 
12998  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12999  if (element_equal(child_node, "Nodes")) {
13000  GPtrArray* nodes_array;
13001  error = _parse_ds3_job_node_response_array(client, doc, child_node, &nodes_array);
13002  response->nodes = (ds3_job_node_response**)nodes_array->pdata;
13003  response->num_nodes = nodes_array->len;
13004  g_ptr_array_free(nodes_array, FALSE);
13005  } else if (element_equal(child_node, "Objects")) {
13006  ds3_objects_response* objects_response = NULL;
13007  error = _parse_ds3_objects_response(client, doc, child_node, &objects_response);
13008  response->objects = (ds3_objects_response**)objects_array->pdata;
13009  g_ptr_array_add(objects_array, objects_response);
13010  } else {
13011  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_master_object_list_response [%s]\n", child_node->name, root->name);
13012  }
13013 
13014  if (error != NULL) {
13015  break;
13016  }
13017 
13018  }
13019 
13020  response->objects = (ds3_objects_response**)objects_array->pdata;
13021  response->num_objects = objects_array->len;
13022  g_ptr_array_free(objects_array, FALSE);
13023 
13024  xmlFreeDoc(doc);
13025 
13026  if (error == NULL) {
13027  *_response = response;
13028  } else {
13030  }
13031 
13032  return error;
13033 }
13034 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) {
13035  xmlDocPtr doc;
13036  xmlNodePtr root;
13037  xmlNodePtr child_node;
13038  ds3_job_list_response* response;
13039  ds3_error* error = NULL;
13040  GPtrArray* jobs_array = g_ptr_array_new();
13041 
13042  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
13043  if (error != NULL) {
13044  return error;
13045  }
13046 
13047  response = g_new0(ds3_job_list_response, 1);
13048 
13049  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13050  if (element_equal(child_node, "Job")) {
13051  ds3_job_response* jobs_response = NULL;
13052  error = _parse_ds3_job_response(client, doc, child_node, &jobs_response);
13053  response->jobs = (ds3_job_response**)jobs_array->pdata;
13054  g_ptr_array_add(jobs_array, jobs_response);
13055  } else {
13056  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_list_response [%s]\n", child_node->name, root->name);
13057  }
13058 
13059  if (error != NULL) {
13060  break;
13061  }
13062 
13063  }
13064 
13065  response->jobs = (ds3_job_response**)jobs_array->pdata;
13066  response->num_jobs = jobs_array->len;
13067  g_ptr_array_free(jobs_array, FALSE);
13068 
13069  xmlFreeDoc(doc);
13070 
13071  if (error == NULL) {
13072  *_response = response;
13073  } else {
13074  ds3_job_list_response_free(response);
13075  }
13076 
13077  return error;
13078 }
13079 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) {
13080  xmlDocPtr doc;
13081  xmlNodePtr root;
13082  xmlNodePtr child_node;
13084  ds3_error* error = NULL;
13085  GPtrArray* parts_array = g_ptr_array_new();
13086 
13087  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListPartsResult");
13088  if (error != NULL) {
13089  return error;
13090  }
13091 
13092  response = g_new0(ds3_list_parts_result_response, 1);
13093 
13094  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13095  if (element_equal(child_node, "Bucket")) {
13096  response->bucket = xml_get_string(doc, child_node);
13097  } else if (element_equal(child_node, "Key")) {
13098  response->key = xml_get_string(doc, child_node);
13099  } else if (element_equal(child_node, "MaxParts")) {
13100  response->max_parts = xml_get_uint16(doc, child_node);
13101  } else if (element_equal(child_node, "NextPartNumberMarker")) {
13102  response->next_part_number_marker = xml_get_uint16(doc, child_node);
13103  } else if (element_equal(child_node, "Owner")) {
13104  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
13105  } else if (element_equal(child_node, "PartNumberMarker")) {
13106  response->part_number_marker = xml_get_uint16(doc, child_node);
13107  } else if (element_equal(child_node, "Part")) {
13108  ds3_multi_part_upload_part_response* parts_response = NULL;
13109  error = _parse_ds3_multi_part_upload_part_response(client, doc, child_node, &parts_response);
13110  response->parts = (ds3_multi_part_upload_part_response**)parts_array->pdata;
13111  g_ptr_array_add(parts_array, parts_response);
13112  } else if (element_equal(child_node, "IsTruncated")) {
13113  response->truncated = xml_get_bool(client->log, doc, child_node);
13114  } else if (element_equal(child_node, "UploadId")) {
13115  response->upload_id = xml_get_string(doc, child_node);
13116  } else {
13117  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_list_parts_result_response [%s]\n", child_node->name, root->name);
13118  }
13119 
13120  if (error != NULL) {
13121  break;
13122  }
13123 
13124  }
13125 
13126  response->parts = (ds3_multi_part_upload_part_response**)parts_array->pdata;
13127  response->num_parts = parts_array->len;
13128  g_ptr_array_free(parts_array, FALSE);
13129 
13130  xmlFreeDoc(doc);
13131 
13132  if (error == NULL) {
13133  *_response = response;
13134  } else {
13136  }
13137 
13138  return error;
13139 }
13141  xmlDocPtr doc;
13142  xmlNodePtr root;
13143  xmlNodePtr child_node;
13145  ds3_error* error = NULL;
13146  GPtrArray* detailed_s3_objects_array = g_ptr_array_new();
13147 
13148  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
13149  if (error != NULL) {
13150  return error;
13151  }
13152 
13153  response = g_new0(ds3_detailed_s3_object_list_response, 1);
13154 
13155  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13156  if (element_equal(child_node, "Object")) {
13157  ds3_detailed_s3_object_response* detailed_s3_objects_response = NULL;
13158  error = _parse_ds3_detailed_s3_object_response(client, doc, child_node, &detailed_s3_objects_response);
13159  response->detailed_s3_objects = (ds3_detailed_s3_object_response**)detailed_s3_objects_array->pdata;
13160  g_ptr_array_add(detailed_s3_objects_array, detailed_s3_objects_response);
13161  } else {
13162  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_s3_object_list_response [%s]\n", child_node->name, root->name);
13163  }
13164 
13165  if (error != NULL) {
13166  break;
13167  }
13168 
13169  }
13170 
13171  response->detailed_s3_objects = (ds3_detailed_s3_object_response**)detailed_s3_objects_array->pdata;
13172  response->num_detailed_s3_objects = detailed_s3_objects_array->len;
13173  g_ptr_array_free(detailed_s3_objects_array, FALSE);
13174 
13175  xmlFreeDoc(doc);
13176 
13177  if (error == NULL) {
13178  *_response = response;
13179  } else {
13181  }
13182 
13183  return error;
13184 }
13185 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) {
13186  xmlDocPtr doc;
13187  xmlNodePtr root;
13188  xmlNodePtr child_node;
13190  ds3_error* error = NULL;
13191  GPtrArray* common_prefixes_array = g_ptr_array_new();
13192  GPtrArray* objects_array = g_ptr_array_new();
13193  GPtrArray* versioned_objects_array = g_ptr_array_new();
13194 
13195  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListBucketResult");
13196  if (error != NULL) {
13197  return error;
13198  }
13199 
13200  response = g_new0(ds3_list_bucket_result_response, 1);
13201 
13202  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13203  if (element_equal(child_node, "CommonPrefixes")) {
13204  xmlNodePtr loop_node;
13205  int num_nodes = 0;
13206  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
13207  ds3_str* common_prefixes = xml_get_string(doc, loop_node);
13208  g_ptr_array_add(common_prefixes_array, common_prefixes);
13209  }
13210  } else if (element_equal(child_node, "CreationDate")) {
13211  response->creation_date = xml_get_string(doc, child_node);
13212  } else if (element_equal(child_node, "Delimiter")) {
13213  response->delimiter = xml_get_string(doc, child_node);
13214  } else if (element_equal(child_node, "Marker")) {
13215  response->marker = xml_get_string(doc, child_node);
13216  } else if (element_equal(child_node, "MaxKeys")) {
13217  response->max_keys = xml_get_uint16(doc, child_node);
13218  } else if (element_equal(child_node, "Name")) {
13219  response->name = xml_get_string(doc, child_node);
13220  } else if (element_equal(child_node, "NextMarker")) {
13221  response->next_marker = xml_get_string(doc, child_node);
13222  } else if (element_equal(child_node, "Contents")) {
13223  ds3_contents_response* objects_response = NULL;
13224  error = _parse_ds3_contents_response(client, doc, child_node, &objects_response);
13225  response->objects = (ds3_contents_response**)objects_array->pdata;
13226  g_ptr_array_add(objects_array, objects_response);
13227  } else if (element_equal(child_node, "Prefix")) {
13228  response->prefix = xml_get_string(doc, child_node);
13229  } else if (element_equal(child_node, "IsTruncated")) {
13230  response->truncated = xml_get_bool(client->log, doc, child_node);
13231  } else if (element_equal(child_node, "Version")) {
13232  ds3_contents_response* versioned_objects_response = NULL;
13233  error = _parse_ds3_contents_response(client, doc, child_node, &versioned_objects_response);
13234  response->versioned_objects = (ds3_contents_response**)versioned_objects_array->pdata;
13235  g_ptr_array_add(versioned_objects_array, versioned_objects_response);
13236  } else {
13237  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_list_bucket_result_response [%s]\n", child_node->name, root->name);
13238  }
13239 
13240  if (error != NULL) {
13241  break;
13242  }
13243 
13244  }
13245 
13246  response->common_prefixes = (ds3_str**)common_prefixes_array->pdata;
13247  response->num_common_prefixes = common_prefixes_array->len;
13248  g_ptr_array_free(common_prefixes_array, FALSE);
13249  response->objects = (ds3_contents_response**)objects_array->pdata;
13250  response->num_objects = objects_array->len;
13251  g_ptr_array_free(objects_array, FALSE);
13252  response->versioned_objects = (ds3_contents_response**)versioned_objects_array->pdata;
13253  response->num_versioned_objects = versioned_objects_array->len;
13254  g_ptr_array_free(versioned_objects_array, FALSE);
13255 
13256  xmlFreeDoc(doc);
13257 
13258  if (error == NULL) {
13259  *_response = response;
13260  } else {
13262  }
13263 
13264  return error;
13265 }
13267  xmlDocPtr doc;
13268  xmlNodePtr root;
13269  xmlNodePtr child_node;
13271  ds3_error* error = NULL;
13272  GPtrArray* common_prefixes_array = g_ptr_array_new();
13273  GPtrArray* uploads_array = g_ptr_array_new();
13274 
13275  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListMultipartUploadsResult");
13276  if (error != NULL) {
13277  return error;
13278  }
13279 
13280  response = g_new0(ds3_list_multi_part_uploads_result_response, 1);
13281 
13282  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13283  if (element_equal(child_node, "Bucket")) {
13284  response->bucket = xml_get_string(doc, child_node);
13285  } else if (element_equal(child_node, "CommonPrefixes")) {
13286  xmlNodePtr loop_node;
13287  int num_nodes = 0;
13288  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
13289  ds3_str* common_prefixes = xml_get_string(doc, loop_node);
13290  g_ptr_array_add(common_prefixes_array, common_prefixes);
13291  }
13292  } else if (element_equal(child_node, "Delimiter")) {
13293  response->delimiter = xml_get_string(doc, child_node);
13294  } else if (element_equal(child_node, "KeyMarker")) {
13295  response->key_marker = xml_get_string(doc, child_node);
13296  } else if (element_equal(child_node, "MaxUploads")) {
13297  response->max_uploads = xml_get_uint16(doc, child_node);
13298  } else if (element_equal(child_node, "NextKeyMarker")) {
13299  response->next_key_marker = xml_get_string(doc, child_node);
13300  } else if (element_equal(child_node, "NextUploadIdMarker")) {
13301  response->next_upload_id_marker = xml_get_string(doc, child_node);
13302  } else if (element_equal(child_node, "Prefix")) {
13303  response->prefix = xml_get_string(doc, child_node);
13304  } else if (element_equal(child_node, "IsTruncated")) {
13305  response->truncated = xml_get_bool(client->log, doc, child_node);
13306  } else if (element_equal(child_node, "UploadIdMarker")) {
13307  response->upload_id_marker = xml_get_string(doc, child_node);
13308  } else if (element_equal(child_node, "Upload")) {
13309  ds3_multi_part_upload_response* uploads_response = NULL;
13310  error = _parse_ds3_multi_part_upload_response(client, doc, child_node, &uploads_response);
13311  response->uploads = (ds3_multi_part_upload_response**)uploads_array->pdata;
13312  g_ptr_array_add(uploads_array, uploads_response);
13313  } else {
13314  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);
13315  }
13316 
13317  if (error != NULL) {
13318  break;
13319  }
13320 
13321  }
13322 
13323  response->common_prefixes = (ds3_str**)common_prefixes_array->pdata;
13324  response->num_common_prefixes = common_prefixes_array->len;
13325  g_ptr_array_free(common_prefixes_array, FALSE);
13326  response->uploads = (ds3_multi_part_upload_response**)uploads_array->pdata;
13327  response->num_uploads = uploads_array->len;
13328  g_ptr_array_free(uploads_array, FALSE);
13329 
13330  xmlFreeDoc(doc);
13331 
13332  if (error == NULL) {
13333  *_response = response;
13334  } else {
13336  }
13337 
13338  return error;
13339 }
13341  ds3_paging* response_paging = NULL;
13342 
13343  ds3_str* page_truncated_key = ds3_str_init("Page-Truncated");
13344  ds3_str* total_result_count_key = ds3_str_init("Total-Result-Count");
13345 
13346  ds3_string_multimap_entry* page_truncated_entry = ds3_string_multimap_lookup(response_headers, page_truncated_key);
13347  ds3_string_multimap_entry* total_result_count_entry = ds3_string_multimap_lookup(response_headers, total_result_count_key);
13348 
13349  if ((page_truncated_entry != NULL) || (total_result_count_entry != NULL)) {
13350  ds3_str* page_truncated_ds3_str = ds3_string_multimap_entry_get_value_by_index(page_truncated_entry, 0);
13351  ds3_str* total_result_count_ds3_str = ds3_string_multimap_entry_get_value_by_index(total_result_count_entry, 0);
13352 
13353  response_paging = g_new0(ds3_paging, 1);
13354  if (page_truncated_ds3_str != NULL) {
13355  response_paging->page_truncated = g_ascii_strtoll(page_truncated_ds3_str->value, NULL, 10);
13356  ds3_str_free(page_truncated_ds3_str);
13357  } else {
13358  response_paging->page_truncated = 0;
13359  }
13360  if (total_result_count_ds3_str != NULL) {
13361  response_paging->total_result_count = g_ascii_strtoll(total_result_count_ds3_str->value, NULL, 10);
13362  ds3_str_free(total_result_count_ds3_str);
13363  } else {
13364  response_paging->total_result_count = 0;
13365  }
13366  }
13367 
13368  ds3_str_free(page_truncated_key);
13369  ds3_str_free(total_result_count_key);
13370  ds3_string_multimap_entry_free(page_truncated_entry);
13371  ds3_string_multimap_entry_free(total_result_count_entry);
13372 
13373  return response_paging;
13374 }
13375 
13376 
13378 
13379  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13380  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13381  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13382  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13383  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13384  }
13385 
13386  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13387 }
13389  ds3_error* error;
13390  ds3_xml_send_buff send_buff;
13391  GByteArray* xml_blob;
13392 
13393  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13394  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13395  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13396  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13397  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13398  }
13399 
13400  error = _init_request_payload(request, &send_buff, COMPLETE_MPU);
13401  if (error != NULL) return error;
13402 
13403  xml_blob = g_byte_array_new();
13404  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
13405 
13406  // Clean up the data sent to the server
13407  xmlFree(send_buff.buff);
13408 
13409  if (error != NULL) {
13410  g_byte_array_free(xml_blob, TRUE);
13411  return error;
13412  }
13413 
13414  return _parse_top_level_ds3_complete_multipart_upload_result_response(client, request, response, xml_blob);
13415 }
13416 ds3_error* ds3_put_bucket_request(const ds3_client* client, const ds3_request* request) {
13417 
13418  if (request->path->size < 2) {
13419  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13420  }
13421 
13422  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13423 }
13424 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*)) {
13425 
13426  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13427  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13428  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13429  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13430  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13431  }
13432 
13433  return _internal_request_dispatcher(client, request, NULL, NULL, user_data, callback, NULL);
13434 }
13435 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*)) {
13436 
13437  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13438  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13439  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13440  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13441  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13442  }
13443 
13444  return _internal_request_dispatcher(client, request, NULL, NULL, user_data, callback, NULL);
13445 }
13447 
13448  if (request->path->size < 2) {
13449  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13450  }
13451 
13452  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13453 }
13455 
13456  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13457  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13458  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13459  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13460  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13461  }
13462 
13463  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13464 }
13466  ds3_error* error;
13467  ds3_xml_send_buff send_buff;
13468  GByteArray* xml_blob;
13469 
13470  if (request->path->size < 2) {
13471  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13472  }
13473 
13474  error = _init_request_payload(request, &send_buff, STRING_LIST);
13475  if (error != NULL) return error;
13476 
13477  xml_blob = g_byte_array_new();
13478  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
13479 
13480  // Clean up the data sent to the server
13481  xmlFree(send_buff.buff);
13482 
13483  if (error != NULL) {
13484  g_byte_array_free(xml_blob, TRUE);
13485  return error;
13486  }
13487 
13488  return _parse_top_level_ds3_delete_result_response(client, request, response, xml_blob);
13489 }
13491  ds3_error* error;
13492  GByteArray* xml_blob;
13493 
13494  if (request->path->size < 2) {
13495  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13496  }
13497 
13498  xml_blob = g_byte_array_new();
13499  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13500  if (error != NULL) {
13501  g_byte_array_free(xml_blob, TRUE);
13502  return error;
13503  }
13504 
13505  return _parse_top_level_ds3_list_bucket_result_response(client, request, response, xml_blob);
13506 }
13508  ds3_error* error;
13509  GByteArray* xml_blob;
13510 
13511 
13512 
13513  xml_blob = g_byte_array_new();
13514  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13515  if (error != NULL) {
13516  g_byte_array_free(xml_blob, TRUE);
13517  return error;
13518  }
13519 
13520  return _parse_top_level_ds3_list_all_my_buckets_result_response(client, request, response, xml_blob);
13521 }
13522 
13523 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*)) {
13524  ds3_error* error;
13525 
13526  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13527  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13528  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13529  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13530  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13531  }
13532 
13533  error = _internal_request_dispatcher(client, request, user_data, callback, NULL, NULL, NULL);
13534 
13535  return error;
13536 }
13537 
13538 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) {
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 bucket 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 object name parameter is required.");
13548  }
13549 
13550  error = _internal_request_dispatcher(client, request, user_data, callback, NULL, NULL, &return_headers);
13551  if (error == NULL) {
13552  metadata = _init_metadata(return_headers);
13553  *_metadata = metadata;
13554  ds3_string_multimap_free(return_headers);
13555  }
13556 
13557  return error;
13558 }
13559 ds3_error* ds3_head_bucket_request(const ds3_client* client, const ds3_request* request) {
13560  if (client == NULL || request == NULL) {
13561  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "All arguments must be filled in for request processing");
13562  }
13563  if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13564  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13565  }
13566 
13567  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13568 }
13569 
13571  ds3_error* error;
13572  ds3_string_multimap* return_headers;
13573  ds3_metadata* metadata;
13574 
13575  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13576  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13577  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13578  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13579  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13580  }
13581 
13582  error = _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, &return_headers);
13583 
13584  if (error == NULL) {
13585  ds3_head_object_response* response_ptr = g_new0(ds3_head_object_response, 1);
13586  response_ptr->metadata = _init_metadata(return_headers);
13587  response_ptr->blob_checksum_type = get_blob_checksum_type(client->log, return_headers);
13588  response_ptr->blob_checksums = get_blob_checksums(client->log, return_headers);
13589  *response = response_ptr;
13590  ds3_string_multimap_free(return_headers);
13591  }
13592 
13593  return error;
13594 }
13595 
13597  ds3_error* error;
13598  GByteArray* xml_blob;
13599 
13600  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13601  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13602  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13603  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13604  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13605  }
13606 
13607  xml_blob = g_byte_array_new();
13608  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13609  if (error != NULL) {
13610  g_byte_array_free(xml_blob, TRUE);
13611  return error;
13612  }
13613 
13614  return _parse_top_level_ds3_initiate_multipart_upload_result_response(client, request, response, xml_blob);
13615 }
13617  ds3_error* error;
13618  GByteArray* xml_blob;
13619 
13620  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13621  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13622  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13623  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13624  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13625  }
13626 
13627  xml_blob = g_byte_array_new();
13628  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13629  if (error != NULL) {
13630  g_byte_array_free(xml_blob, TRUE);
13631  return error;
13632  }
13633 
13634  return _parse_top_level_ds3_list_parts_result_response(client, request, response, xml_blob);
13635 }
13637  ds3_error* error;
13638  GByteArray* xml_blob;
13639 
13640  if (request->path->size < 2) {
13641  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13642  }
13643 
13644  xml_blob = g_byte_array_new();
13645  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13646  if (error != NULL) {
13647  g_byte_array_free(xml_blob, TRUE);
13648  return error;
13649  }
13650 
13651  return _parse_top_level_ds3_list_multi_part_uploads_result_response(client, request, response, xml_blob);
13652 }
13654  ds3_error* error;
13655  GByteArray* xml_blob;
13656 
13657  if (request->path->size < 2) {
13658  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13659  }
13660 
13661  xml_blob = g_byte_array_new();
13662  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13663  if (error != NULL) {
13664  g_byte_array_free(xml_blob, TRUE);
13665  return error;
13666  }
13667 
13668  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13669 }
13671  ds3_error* error;
13672  GByteArray* xml_blob;
13673 
13674  if (request->path->size < 2) {
13675  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13676  }
13677 
13678  xml_blob = g_byte_array_new();
13679  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13680  if (error != NULL) {
13681  g_byte_array_free(xml_blob, TRUE);
13682  return error;
13683  }
13684 
13685  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13686 }
13688  ds3_error* error;
13689  GByteArray* xml_blob;
13690 
13691  if (request->path->size < 2) {
13692  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13693  }
13694 
13695  xml_blob = g_byte_array_new();
13696  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13697  if (error != NULL) {
13698  g_byte_array_free(xml_blob, TRUE);
13699  return error;
13700  }
13701 
13702  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13703 }
13705  ds3_error* error;
13706  GByteArray* xml_blob;
13707 
13708  if (request->path->size < 2) {
13709  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13710  }
13711 
13712  xml_blob = g_byte_array_new();
13713  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13714  if (error != NULL) {
13715  g_byte_array_free(xml_blob, TRUE);
13716  return error;
13717  }
13718 
13719  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13720 }
13722  ds3_error* error;
13723  GByteArray* xml_blob;
13724 
13725  if (request->path->size < 2) {
13726  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13727  }
13728 
13729  xml_blob = g_byte_array_new();
13730  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13731  if (error != NULL) {
13732  g_byte_array_free(xml_blob, TRUE);
13733  return error;
13734  }
13735 
13736  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13737 }
13739  ds3_error* error;
13740  GByteArray* xml_blob;
13741 
13742  if (request->path->size < 2) {
13743  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13744  }
13745 
13746  xml_blob = g_byte_array_new();
13747  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13748  if (error != NULL) {
13749  g_byte_array_free(xml_blob, TRUE);
13750  return error;
13751  }
13752 
13753  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13754 }
13756  ds3_error* error;
13757  GByteArray* xml_blob;
13758 
13759  if (request->path->size < 2) {
13760  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13761  }
13762 
13763  xml_blob = g_byte_array_new();
13764  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13765  if (error != NULL) {
13766  g_byte_array_free(xml_blob, TRUE);
13767  return error;
13768  }
13769 
13770  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13771 }
13773  ds3_error* error;
13774  GByteArray* xml_blob;
13775 
13776  if (request->path->size < 2) {
13777  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13778  }
13779 
13780  xml_blob = g_byte_array_new();
13781  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13782  if (error != NULL) {
13783  g_byte_array_free(xml_blob, TRUE);
13784  return error;
13785  }
13786 
13787  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13788 }
13790 
13791  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13792  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13793  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13794  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13795  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13796  }
13797 
13798  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13799 }
13801 
13802  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13803  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13804  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13805  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13806  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13807  }
13808 
13809  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13810 }
13812  ds3_error* error;
13813  GByteArray* xml_blob;
13814 
13815  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13816  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13817  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13818  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13819  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13820  }
13821 
13822  xml_blob = g_byte_array_new();
13823  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13824  if (error != NULL) {
13825  g_byte_array_free(xml_blob, TRUE);
13826  return error;
13827  }
13828 
13829  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13830 }
13832  ds3_error* error;
13833  GByteArray* xml_blob;
13834  ds3_string_multimap* return_headers = NULL;
13835 
13836  if (request->path->size < 2) {
13837  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13838  }
13839 
13840  xml_blob = g_byte_array_new();
13841  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
13842  if (error != NULL) {
13843  ds3_string_multimap_free(return_headers);
13844  g_byte_array_free(xml_blob, TRUE);
13845  return error;
13846  }
13847 
13848  error = _parse_top_level_ds3_bucket_acl_list_response(client, request, response, xml_blob);
13849 
13850  (*response)->paging = _parse_paging_headers(return_headers);
13851  ds3_string_multimap_free(return_headers);
13852 
13853  return error;
13854 }
13856  ds3_error* error;
13857  GByteArray* xml_blob;
13858 
13859  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13860  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13861  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13862  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13863  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13864  }
13865 
13866  xml_blob = g_byte_array_new();
13867  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13868  if (error != NULL) {
13869  g_byte_array_free(xml_blob, TRUE);
13870  return error;
13871  }
13872 
13873  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13874 }
13876  ds3_error* error;
13877  GByteArray* xml_blob;
13878  ds3_string_multimap* return_headers = NULL;
13879 
13880  if (request->path->size < 2) {
13881  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13882  }
13883 
13884  xml_blob = g_byte_array_new();
13885  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
13886  if (error != NULL) {
13887  ds3_string_multimap_free(return_headers);
13888  g_byte_array_free(xml_blob, TRUE);
13889  return error;
13890  }
13891 
13892  error = _parse_top_level_ds3_data_policy_acl_list_response(client, request, response, xml_blob);
13893 
13894  (*response)->paging = _parse_paging_headers(return_headers);
13895  ds3_string_multimap_free(return_headers);
13896 
13897  return error;
13898 }
13900  ds3_error* error;
13901  GByteArray* xml_blob;
13902 
13903  if (request->path->size < 2) {
13904  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13905  }
13906 
13907  xml_blob = g_byte_array_new();
13908  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13909  if (error != NULL) {
13910  g_byte_array_free(xml_blob, TRUE);
13911  return error;
13912  }
13913 
13914  return _parse_top_level_ds3_bucket_response(client, request, response, xml_blob);
13915 }
13917 
13918  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13919  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13920  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13921  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13922  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13923  }
13924 
13925  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13926 }
13928  ds3_error* error;
13929  GByteArray* xml_blob;
13930 
13931  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13932  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13933  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13934  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13935  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13936  }
13937 
13938  xml_blob = g_byte_array_new();
13939  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13940  if (error != NULL) {
13941  g_byte_array_free(xml_blob, TRUE);
13942  return error;
13943  }
13944 
13945  return _parse_top_level_ds3_bucket_response(client, request, response, xml_blob);
13946 }
13948  ds3_error* error;
13949  GByteArray* xml_blob;
13950  ds3_string_multimap* return_headers = NULL;
13951 
13952  if (request->path->size < 2) {
13953  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13954  }
13955 
13956  xml_blob = g_byte_array_new();
13957  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
13958  if (error != NULL) {
13959  ds3_string_multimap_free(return_headers);
13960  g_byte_array_free(xml_blob, TRUE);
13961  return error;
13962  }
13963 
13964  error = _parse_top_level_ds3_bucket_list_response(client, request, response, xml_blob);
13965 
13966  (*response)->paging = _parse_paging_headers(return_headers);
13967  ds3_string_multimap_free(return_headers);
13968 
13969  return error;
13970 }
13972  ds3_error* error;
13973  GByteArray* xml_blob;
13974 
13975  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13976  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13977  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13978  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13979  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13980  }
13981 
13982  xml_blob = g_byte_array_new();
13983  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13984  if (error != NULL) {
13985  g_byte_array_free(xml_blob, TRUE);
13986  return error;
13987  }
13988 
13989  return _parse_top_level_ds3_bucket_response(client, request, response, xml_blob);
13990 }
13992 
13993  if (request->path->size < 2) {
13994  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13995  }
13996 
13997  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13998 }
14000  ds3_error* error;
14001  GByteArray* xml_blob;
14002 
14003  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14004  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14005  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14006  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14007  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14008  }
14009 
14010  xml_blob = g_byte_array_new();
14011  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14012  if (error != NULL) {
14013  g_byte_array_free(xml_blob, TRUE);
14014  return error;
14015  }
14016 
14017  return _parse_top_level_ds3_cache_filesystem_response(client, request, response, xml_blob);
14018 }
14020  ds3_error* error;
14021  GByteArray* xml_blob;
14022  ds3_string_multimap* return_headers = NULL;
14023 
14024  if (request->path->size < 2) {
14025  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14026  }
14027 
14028  xml_blob = g_byte_array_new();
14029  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14030  if (error != NULL) {
14031  ds3_string_multimap_free(return_headers);
14032  g_byte_array_free(xml_blob, TRUE);
14033  return error;
14034  }
14035 
14036  error = _parse_top_level_ds3_cache_filesystem_list_response(client, request, response, xml_blob);
14037 
14038  (*response)->paging = _parse_paging_headers(return_headers);
14039  ds3_string_multimap_free(return_headers);
14040 
14041  return error;
14042 }
14044  ds3_error* error;
14045  GByteArray* xml_blob;
14046 
14047  if (request->path->size < 2) {
14048  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
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_cache_information_response(client, request, response, xml_blob);
14059 }
14061  ds3_error* error;
14062  GByteArray* xml_blob;
14063 
14064  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14065  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14066  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14067  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14068  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14069  }
14070 
14071  xml_blob = g_byte_array_new();
14072  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14073  if (error != NULL) {
14074  g_byte_array_free(xml_blob, TRUE);
14075  return error;
14076  }
14077 
14078  return _parse_top_level_ds3_cache_filesystem_response(client, request, response, xml_blob);
14079 }
14081  ds3_error* error;
14082  GByteArray* xml_blob;
14083 
14084 
14085 
14086  xml_blob = g_byte_array_new();
14087  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14088  if (error != NULL) {
14089  g_byte_array_free(xml_blob, TRUE);
14090  return error;
14091  }
14092 
14093  return _parse_top_level_ds3_capacity_summary_container_response(client, request, response, xml_blob);
14094 }
14096  ds3_error* error;
14097  GByteArray* xml_blob;
14098 
14099 
14100 
14101  xml_blob = g_byte_array_new();
14102  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14103  if (error != NULL) {
14104  g_byte_array_free(xml_blob, TRUE);
14105  return error;
14106  }
14107 
14108  return _parse_top_level_ds3_capacity_summary_container_response(client, request, response, xml_blob);
14109 }
14111  ds3_error* error;
14112  GByteArray* xml_blob;
14113 
14114 
14115 
14116  xml_blob = g_byte_array_new();
14117  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14118  if (error != NULL) {
14119  g_byte_array_free(xml_blob, TRUE);
14120  return error;
14121  }
14122 
14123  return _parse_top_level_ds3_capacity_summary_container_response(client, request, response, xml_blob);
14124 }
14126  ds3_error* error;
14127  GByteArray* xml_blob;
14128 
14129 
14130 
14131  xml_blob = g_byte_array_new();
14132  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14133  if (error != NULL) {
14134  g_byte_array_free(xml_blob, TRUE);
14135  return error;
14136  }
14137 
14138  return _parse_top_level_ds3_data_path_backend_response(client, request, response, xml_blob);
14139 }
14141  ds3_error* error;
14142  GByteArray* xml_blob;
14143 
14144  if (request->path->size < 2) {
14145  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14146  }
14147 
14148  xml_blob = g_byte_array_new();
14149  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14150  if (error != NULL) {
14151  g_byte_array_free(xml_blob, TRUE);
14152  return error;
14153  }
14154 
14155  return _parse_top_level_ds3_blob_store_tasks_information_response(client, request, response, xml_blob);
14156 }
14158  ds3_error* error;
14159  GByteArray* xml_blob;
14160 
14161 
14162 
14163  xml_blob = g_byte_array_new();
14164  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14165  if (error != NULL) {
14166  g_byte_array_free(xml_blob, TRUE);
14167  return error;
14168  }
14169 
14170  return _parse_top_level_ds3_data_path_backend_response(client, request, response, xml_blob);
14171 }
14173  ds3_error* error;
14174  GByteArray* xml_blob;
14175 
14176  if (request->path->size < 2) {
14177  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14178  }
14179 
14180  xml_blob = g_byte_array_new();
14181  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14182  if (error != NULL) {
14183  g_byte_array_free(xml_blob, TRUE);
14184  return error;
14185  }
14186 
14187  return _parse_top_level_ds3_azure_data_replication_rule_response(client, request, response, xml_blob);
14188 }
14190  ds3_error* error;
14191  GByteArray* xml_blob;
14192 
14193  if (request->path->size < 2) {
14194  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14195  }
14196 
14197  xml_blob = g_byte_array_new();
14198  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14199  if (error != NULL) {
14200  g_byte_array_free(xml_blob, TRUE);
14201  return error;
14202  }
14203 
14204  return _parse_top_level_ds3_data_persistence_rule_response(client, request, response, xml_blob);
14205 }
14207  ds3_error* error;
14208  GByteArray* xml_blob;
14209 
14210  if (request->path->size < 2) {
14211  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14212  }
14213 
14214  xml_blob = g_byte_array_new();
14215  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14216  if (error != NULL) {
14217  g_byte_array_free(xml_blob, TRUE);
14218  return error;
14219  }
14220 
14221  return _parse_top_level_ds3_data_policy_response(client, request, response, xml_blob);
14222 }
14224  ds3_error* error;
14225  GByteArray* xml_blob;
14226 
14227  if (request->path->size < 2) {
14228  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14229  }
14230 
14231  xml_blob = g_byte_array_new();
14232  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14233  if (error != NULL) {
14234  g_byte_array_free(xml_blob, TRUE);
14235  return error;
14236  }
14237 
14238  return _parse_top_level_ds3_data_replication_rule_response(client, request, response, xml_blob);
14239 }
14241  ds3_error* error;
14242  GByteArray* xml_blob;
14243 
14244  if (request->path->size < 2) {
14245  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14246  }
14247 
14248  xml_blob = g_byte_array_new();
14249  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14250  if (error != NULL) {
14251  g_byte_array_free(xml_blob, TRUE);
14252  return error;
14253  }
14254 
14255  return _parse_top_level_ds3_s3_data_replication_rule_response(client, request, response, xml_blob);
14256 }
14258 
14259  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14260  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14261  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14262  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14263  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14264  }
14265 
14266  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14267 }
14269 
14270  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14271  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14272  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14273  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14274  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14275  }
14276 
14277  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14278 }
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  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14289 }
14291 
14292  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14293  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14294  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14295  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14296  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14297  }
14298 
14299  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14300 }
14302 
14303  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14304  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14305  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14306  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14307  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14308  }
14309 
14310  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14311 }
14313  ds3_error* error;
14314  GByteArray* xml_blob;
14315 
14316  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14317  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14318  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14319  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14320  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14321  }
14322 
14323  xml_blob = g_byte_array_new();
14324  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14325  if (error != NULL) {
14326  g_byte_array_free(xml_blob, TRUE);
14327  return error;
14328  }
14329 
14330  return _parse_top_level_ds3_azure_data_replication_rule_response(client, request, response, xml_blob);
14331 }
14333  ds3_error* error;
14334  GByteArray* xml_blob;
14335  ds3_string_multimap* return_headers = NULL;
14336 
14337  if (request->path->size < 2) {
14338  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14339  }
14340 
14341  xml_blob = g_byte_array_new();
14342  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14343  if (error != NULL) {
14344  ds3_string_multimap_free(return_headers);
14345  g_byte_array_free(xml_blob, TRUE);
14346  return error;
14347  }
14348 
14349  error = _parse_top_level_ds3_azure_data_replication_rule_list_response(client, request, response, xml_blob);
14350 
14351  (*response)->paging = _parse_paging_headers(return_headers);
14352  ds3_string_multimap_free(return_headers);
14353 
14354  return error;
14355 }
14357  ds3_error* error;
14358  GByteArray* xml_blob;
14359 
14360  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14361  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14362  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14363  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14364  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14365  }
14366 
14367  xml_blob = g_byte_array_new();
14368  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14369  if (error != NULL) {
14370  g_byte_array_free(xml_blob, TRUE);
14371  return error;
14372  }
14373 
14374  return _parse_top_level_ds3_data_persistence_rule_response(client, request, response, xml_blob);
14375 }
14377  ds3_error* error;
14378  GByteArray* xml_blob;
14379  ds3_string_multimap* return_headers = NULL;
14380 
14381  if (request->path->size < 2) {
14382  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14383  }
14384 
14385  xml_blob = g_byte_array_new();
14386  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14387  if (error != NULL) {
14388  ds3_string_multimap_free(return_headers);
14389  g_byte_array_free(xml_blob, TRUE);
14390  return error;
14391  }
14392 
14393  error = _parse_top_level_ds3_data_persistence_rule_list_response(client, request, response, xml_blob);
14394 
14395  (*response)->paging = _parse_paging_headers(return_headers);
14396  ds3_string_multimap_free(return_headers);
14397 
14398  return error;
14399 }
14401  ds3_error* error;
14402  GByteArray* xml_blob;
14403  ds3_string_multimap* return_headers = NULL;
14404 
14405  if (request->path->size < 2) {
14406  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14407  }
14408 
14409  xml_blob = g_byte_array_new();
14410  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14411  if (error != NULL) {
14412  ds3_string_multimap_free(return_headers);
14413  g_byte_array_free(xml_blob, TRUE);
14414  return error;
14415  }
14416 
14417  error = _parse_top_level_ds3_data_policy_list_response(client, request, response, xml_blob);
14418 
14419  (*response)->paging = _parse_paging_headers(return_headers);
14420  ds3_string_multimap_free(return_headers);
14421 
14422  return error;
14423 }
14425  ds3_error* error;
14426  GByteArray* xml_blob;
14427 
14428  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14429  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14430  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14431  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14432  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14433  }
14434 
14435  xml_blob = g_byte_array_new();
14436  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14437  if (error != NULL) {
14438  g_byte_array_free(xml_blob, TRUE);
14439  return error;
14440  }
14441 
14442  return _parse_top_level_ds3_data_policy_response(client, request, response, xml_blob);
14443 }
14445  ds3_error* error;
14446  GByteArray* xml_blob;
14447 
14448  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14449  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14450  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14451  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14452  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14453  }
14454 
14455  xml_blob = g_byte_array_new();
14456  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14457  if (error != NULL) {
14458  g_byte_array_free(xml_blob, TRUE);
14459  return error;
14460  }
14461 
14462  return _parse_top_level_ds3_data_replication_rule_response(client, request, response, xml_blob);
14463 }
14465  ds3_error* error;
14466  GByteArray* xml_blob;
14467  ds3_string_multimap* return_headers = NULL;
14468 
14469  if (request->path->size < 2) {
14470  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14471  }
14472 
14473  xml_blob = g_byte_array_new();
14474  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14475  if (error != NULL) {
14476  ds3_string_multimap_free(return_headers);
14477  g_byte_array_free(xml_blob, TRUE);
14478  return error;
14479  }
14480 
14481  error = _parse_top_level_ds3_data_replication_rule_list_response(client, request, response, xml_blob);
14482 
14483  (*response)->paging = _parse_paging_headers(return_headers);
14484  ds3_string_multimap_free(return_headers);
14485 
14486  return error;
14487 }
14489  ds3_error* error;
14490  GByteArray* xml_blob;
14491 
14492  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14493  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14494  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14495  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14496  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14497  }
14498 
14499  xml_blob = g_byte_array_new();
14500  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14501  if (error != NULL) {
14502  g_byte_array_free(xml_blob, TRUE);
14503  return error;
14504  }
14505 
14506  return _parse_top_level_ds3_s3_data_replication_rule_response(client, request, response, xml_blob);
14507 }
14509  ds3_error* error;
14510  GByteArray* xml_blob;
14511  ds3_string_multimap* return_headers = NULL;
14512 
14513  if (request->path->size < 2) {
14514  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14515  }
14516 
14517  xml_blob = g_byte_array_new();
14518  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14519  if (error != NULL) {
14520  ds3_string_multimap_free(return_headers);
14521  g_byte_array_free(xml_blob, TRUE);
14522  return error;
14523  }
14524 
14525  error = _parse_top_level_ds3_s3_data_replication_rule_list_response(client, request, response, xml_blob);
14526 
14527  (*response)->paging = _parse_paging_headers(return_headers);
14528  ds3_string_multimap_free(return_headers);
14529 
14530  return error;
14531 }
14533  ds3_error* error;
14534  GByteArray* xml_blob;
14535 
14536  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14537  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14538  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14539  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14540  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14541  }
14542 
14543  xml_blob = g_byte_array_new();
14544  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14545  if (error != NULL) {
14546  g_byte_array_free(xml_blob, TRUE);
14547  return error;
14548  }
14549 
14550  return _parse_top_level_ds3_azure_data_replication_rule_response(client, request, response, xml_blob);
14551 }
14553  ds3_error* error;
14554  GByteArray* xml_blob;
14555 
14556  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14557  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14558  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14559  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14560  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14561  }
14562 
14563  xml_blob = g_byte_array_new();
14564  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14565  if (error != NULL) {
14566  g_byte_array_free(xml_blob, TRUE);
14567  return error;
14568  }
14569 
14570  return _parse_top_level_ds3_data_persistence_rule_response(client, request, response, xml_blob);
14571 }
14573  ds3_error* error;
14574  GByteArray* xml_blob;
14575 
14576  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14577  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14578  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14579  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14580  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14581  }
14582 
14583  xml_blob = g_byte_array_new();
14584  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14585  if (error != NULL) {
14586  g_byte_array_free(xml_blob, TRUE);
14587  return error;
14588  }
14589 
14590  return _parse_top_level_ds3_data_policy_response(client, request, response, xml_blob);
14591 }
14593  ds3_error* error;
14594  GByteArray* xml_blob;
14595 
14596  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14597  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14598  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14599  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14600  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14601  }
14602 
14603  xml_blob = g_byte_array_new();
14604  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14605  if (error != NULL) {
14606  g_byte_array_free(xml_blob, TRUE);
14607  return error;
14608  }
14609 
14610  return _parse_top_level_ds3_data_replication_rule_response(client, request, response, xml_blob);
14611 }
14613  ds3_error* error;
14614  GByteArray* xml_blob;
14615 
14616  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14617  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14618  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14619  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14620  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14621  }
14622 
14623  xml_blob = g_byte_array_new();
14624  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14625  if (error != NULL) {
14626  g_byte_array_free(xml_blob, TRUE);
14627  return error;
14628  }
14629 
14630  return _parse_top_level_ds3_s3_data_replication_rule_response(client, request, response, xml_blob);
14631 }
14633  ds3_error* error;
14634  ds3_xml_send_buff send_buff;
14635 
14636  if (request->path->size < 2) {
14637  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14638  }
14639 
14640  error = _init_request_payload(request, &send_buff, ID_LIST);
14641  if (error != NULL) return error;
14642 
14643  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
14644 
14645  // Clean up the data sent to the server
14646  xmlFree(send_buff.buff);
14647 
14648  return error;
14649 }
14651  ds3_error* error;
14652  ds3_xml_send_buff send_buff;
14653 
14654  if (request->path->size < 2) {
14655  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14656  }
14657 
14658  error = _init_request_payload(request, &send_buff, ID_LIST);
14659  if (error != NULL) return error;
14660 
14661  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
14662 
14663  // Clean up the data sent to the server
14664  xmlFree(send_buff.buff);
14665 
14666  return error;
14667 }
14669  ds3_error* error;
14670  ds3_xml_send_buff send_buff;
14671 
14672  if (request->path->size < 2) {
14673  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14674  }
14675 
14676  error = _init_request_payload(request, &send_buff, ID_LIST);
14677  if (error != NULL) return error;
14678 
14679  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
14680 
14681  // Clean up the data sent to the server
14682  xmlFree(send_buff.buff);
14683 
14684  return error;
14685 }
14687  ds3_error* error;
14688  ds3_xml_send_buff send_buff;
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  error = _init_request_payload(request, &send_buff, ID_LIST);
14695  if (error != NULL) return error;
14696 
14697  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
14698 
14699  // Clean up the data sent to the server
14700  xmlFree(send_buff.buff);
14701 
14702  return error;
14703 }
14705  ds3_error* error;
14706  ds3_xml_send_buff send_buff;
14707 
14708  if (request->path->size < 2) {
14709  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14710  }
14711 
14712  error = _init_request_payload(request, &send_buff, ID_LIST);
14713  if (error != NULL) return error;
14714 
14715  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
14716 
14717  // Clean up the data sent to the server
14718  xmlFree(send_buff.buff);
14719 
14720  return error;
14721 }
14723  ds3_error* error;
14724  GByteArray* xml_blob;
14725  ds3_string_multimap* return_headers = NULL;
14726 
14727  if (request->path->size < 2) {
14728  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14729  }
14730 
14731  xml_blob = g_byte_array_new();
14732  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14733  if (error != NULL) {
14734  ds3_string_multimap_free(return_headers);
14735  g_byte_array_free(xml_blob, TRUE);
14736  return error;
14737  }
14738 
14739  error = _parse_top_level_ds3_azure_data_replication_rule_list_response(client, request, response, xml_blob);
14740 
14741  (*response)->paging = _parse_paging_headers(return_headers);
14742  ds3_string_multimap_free(return_headers);
14743 
14744  return error;
14745 }
14747  ds3_error* error;
14748  GByteArray* xml_blob;
14749  ds3_string_multimap* return_headers = NULL;
14750 
14751  if (request->path->size < 2) {
14752  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14753  }
14754 
14755  xml_blob = g_byte_array_new();
14756  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14757  if (error != NULL) {
14758  ds3_string_multimap_free(return_headers);
14759  g_byte_array_free(xml_blob, TRUE);
14760  return error;
14761  }
14762 
14763  error = _parse_top_level_ds3_degraded_blob_list_response(client, request, response, xml_blob);
14764 
14765  (*response)->paging = _parse_paging_headers(return_headers);
14766  ds3_string_multimap_free(return_headers);
14767 
14768  return error;
14769 }
14771  ds3_error* error;
14772  GByteArray* xml_blob;
14773  ds3_string_multimap* return_headers = NULL;
14774 
14775  if (request->path->size < 2) {
14776  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14777  }
14778 
14779  xml_blob = g_byte_array_new();
14780  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14781  if (error != NULL) {
14782  ds3_string_multimap_free(return_headers);
14783  g_byte_array_free(xml_blob, TRUE);
14784  return error;
14785  }
14786 
14787  error = _parse_top_level_ds3_bucket_list_response(client, request, response, xml_blob);
14788 
14789  (*response)->paging = _parse_paging_headers(return_headers);
14790  ds3_string_multimap_free(return_headers);
14791 
14792  return error;
14793 }
14795  ds3_error* error;
14796  GByteArray* xml_blob;
14797  ds3_string_multimap* return_headers = NULL;
14798 
14799  if (request->path->size < 2) {
14800  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14801  }
14802 
14803  xml_blob = g_byte_array_new();
14804  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14805  if (error != NULL) {
14806  ds3_string_multimap_free(return_headers);
14807  g_byte_array_free(xml_blob, TRUE);
14808  return error;
14809  }
14810 
14811  error = _parse_top_level_ds3_data_persistence_rule_list_response(client, request, response, xml_blob);
14812 
14813  (*response)->paging = _parse_paging_headers(return_headers);
14814  ds3_string_multimap_free(return_headers);
14815 
14816  return error;
14817 }
14819  ds3_error* error;
14820  GByteArray* xml_blob;
14821  ds3_string_multimap* return_headers = NULL;
14822 
14823  if (request->path->size < 2) {
14824  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14825  }
14826 
14827  xml_blob = g_byte_array_new();
14828  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14829  if (error != NULL) {
14830  ds3_string_multimap_free(return_headers);
14831  g_byte_array_free(xml_blob, TRUE);
14832  return error;
14833  }
14834 
14835  error = _parse_top_level_ds3_data_replication_rule_list_response(client, request, response, xml_blob);
14836 
14837  (*response)->paging = _parse_paging_headers(return_headers);
14838  ds3_string_multimap_free(return_headers);
14839 
14840  return error;
14841 }
14843  ds3_error* error;
14844  GByteArray* xml_blob;
14845  ds3_string_multimap* return_headers = NULL;
14846 
14847  if (request->path->size < 2) {
14848  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14849  }
14850 
14851  xml_blob = g_byte_array_new();
14852  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14853  if (error != NULL) {
14854  ds3_string_multimap_free(return_headers);
14855  g_byte_array_free(xml_blob, TRUE);
14856  return error;
14857  }
14858 
14859  error = _parse_top_level_ds3_s3_data_replication_rule_list_response(client, request, response, xml_blob);
14860 
14861  (*response)->paging = _parse_paging_headers(return_headers);
14862  ds3_string_multimap_free(return_headers);
14863 
14864  return error;
14865 }
14867  ds3_error* error;
14868  GByteArray* xml_blob;
14869  ds3_string_multimap* return_headers = NULL;
14870 
14871  if (request->path->size < 2) {
14872  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14873  }
14874 
14875  xml_blob = g_byte_array_new();
14876  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14877  if (error != NULL) {
14878  ds3_string_multimap_free(return_headers);
14879  g_byte_array_free(xml_blob, TRUE);
14880  return error;
14881  }
14882 
14883  error = _parse_top_level_ds3_suspect_blob_azure_target_list_response(client, request, response, xml_blob);
14884 
14885  (*response)->paging = _parse_paging_headers(return_headers);
14886  ds3_string_multimap_free(return_headers);
14887 
14888  return error;
14889 }
14891  ds3_error* error;
14892  GByteArray* xml_blob;
14893  ds3_string_multimap* return_headers = NULL;
14894 
14895  if (request->path->size < 2) {
14896  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14897  }
14898 
14899  xml_blob = g_byte_array_new();
14900  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14901  if (error != NULL) {
14902  ds3_string_multimap_free(return_headers);
14903  g_byte_array_free(xml_blob, TRUE);
14904  return error;
14905  }
14906 
14907  error = _parse_top_level_ds3_suspect_blob_ds3_target_list_response(client, request, response, xml_blob);
14908 
14909  (*response)->paging = _parse_paging_headers(return_headers);
14910  ds3_string_multimap_free(return_headers);
14911 
14912  return error;
14913 }
14915  ds3_error* error;
14916  GByteArray* xml_blob;
14917  ds3_string_multimap* return_headers = NULL;
14918 
14919  if (request->path->size < 2) {
14920  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14921  }
14922 
14923  xml_blob = g_byte_array_new();
14924  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14925  if (error != NULL) {
14926  ds3_string_multimap_free(return_headers);
14927  g_byte_array_free(xml_blob, TRUE);
14928  return error;
14929  }
14930 
14931  error = _parse_top_level_ds3_suspect_blob_pool_list_response(client, request, response, xml_blob);
14932 
14933  (*response)->paging = _parse_paging_headers(return_headers);
14934  ds3_string_multimap_free(return_headers);
14935 
14936  return error;
14937 }
14939  ds3_error* error;
14940  GByteArray* xml_blob;
14941  ds3_string_multimap* return_headers = NULL;
14942 
14943  if (request->path->size < 2) {
14944  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14945  }
14946 
14947  xml_blob = g_byte_array_new();
14948  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14949  if (error != NULL) {
14950  ds3_string_multimap_free(return_headers);
14951  g_byte_array_free(xml_blob, TRUE);
14952  return error;
14953  }
14954 
14955  error = _parse_top_level_ds3_suspect_blob_s3_target_list_response(client, request, response, xml_blob);
14956 
14957  (*response)->paging = _parse_paging_headers(return_headers);
14958  ds3_string_multimap_free(return_headers);
14959 
14960  return error;
14961 }
14963  ds3_error* error;
14964  GByteArray* xml_blob;
14965  ds3_string_multimap* return_headers = NULL;
14966 
14967  if (request->path->size < 2) {
14968  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14969  }
14970 
14971  xml_blob = g_byte_array_new();
14972  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14973  if (error != NULL) {
14974  ds3_string_multimap_free(return_headers);
14975  g_byte_array_free(xml_blob, TRUE);
14976  return error;
14977  }
14978 
14979  error = _parse_top_level_ds3_suspect_blob_tape_list_response(client, request, response, xml_blob);
14980 
14981  (*response)->paging = _parse_paging_headers(return_headers);
14982  ds3_string_multimap_free(return_headers);
14983 
14984  return error;
14985 }
14987  ds3_error* error;
14988  GByteArray* xml_blob;
14989  ds3_string_multimap* return_headers = NULL;
14990 
14991  if (request->path->size < 2) {
14992  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14993  }
14994 
14995  xml_blob = g_byte_array_new();
14996  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
14997  if (error != NULL) {
14998  ds3_string_multimap_free(return_headers);
14999  g_byte_array_free(xml_blob, TRUE);
15000  return error;
15001  }
15002 
15003  error = _parse_top_level_ds3_bucket_list_response(client, request, response, xml_blob);
15004 
15005  (*response)->paging = _parse_paging_headers(return_headers);
15006  ds3_string_multimap_free(return_headers);
15007 
15008  return error;
15009 }
15011  ds3_error* error;
15012  GByteArray* xml_blob;
15013  ds3_string_multimap* return_headers = NULL;
15014 
15015  if (request->path->size < 2) {
15016  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15017  }
15018 
15019  xml_blob = g_byte_array_new();
15020  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15021  if (error != NULL) {
15022  ds3_string_multimap_free(return_headers);
15023  g_byte_array_free(xml_blob, TRUE);
15024  return error;
15025  }
15026 
15027  error = _parse_top_level_ds3_s3_object_list_response(client, request, response, xml_blob);
15028 
15029  (*response)->paging = _parse_paging_headers(return_headers);
15030  ds3_string_multimap_free(return_headers);
15031 
15032  return error;
15033 }
15035  ds3_error* error;
15036  GByteArray* xml_blob;
15037 
15038  if (request->path->size < 2) {
15039  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15040  }
15041 
15042  xml_blob = g_byte_array_new();
15043  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15044  if (error != NULL) {
15045  g_byte_array_free(xml_blob, TRUE);
15046  return error;
15047  }
15048 
15049  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
15050 }
15052  ds3_error* error;
15053  ds3_xml_send_buff send_buff;
15054 
15055  if (request->path->size < 2) {
15056  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15057  }
15058 
15059  error = _init_request_payload(request, &send_buff, ID_LIST);
15060  if (error != NULL) return error;
15061 
15062  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15063 
15064  // Clean up the data sent to the server
15065  xmlFree(send_buff.buff);
15066 
15067  return error;
15068 }
15070  ds3_error* error;
15071  ds3_xml_send_buff send_buff;
15072 
15073  if (request->path->size < 2) {
15074  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15075  }
15076 
15077  error = _init_request_payload(request, &send_buff, ID_LIST);
15078  if (error != NULL) return error;
15079 
15080  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15081 
15082  // Clean up the data sent to the server
15083  xmlFree(send_buff.buff);
15084 
15085  return error;
15086 }
15088  ds3_error* error;
15089  ds3_xml_send_buff send_buff;
15090 
15091  if (request->path->size < 2) {
15092  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15093  }
15094 
15095  error = _init_request_payload(request, &send_buff, ID_LIST);
15096  if (error != NULL) return error;
15097 
15098  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15099 
15100  // Clean up the data sent to the server
15101  xmlFree(send_buff.buff);
15102 
15103  return error;
15104 }
15106  ds3_error* error;
15107  ds3_xml_send_buff send_buff;
15108 
15109  if (request->path->size < 2) {
15110  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15111  }
15112 
15113  error = _init_request_payload(request, &send_buff, ID_LIST);
15114  if (error != NULL) return error;
15115 
15116  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15117 
15118  // Clean up the data sent to the server
15119  xmlFree(send_buff.buff);
15120 
15121  return error;
15122 }
15124  ds3_error* error;
15125  ds3_xml_send_buff send_buff;
15126 
15127  if (request->path->size < 2) {
15128  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15129  }
15130 
15131  error = _init_request_payload(request, &send_buff, ID_LIST);
15132  if (error != NULL) return error;
15133 
15134  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15135 
15136  // Clean up the data sent to the server
15137  xmlFree(send_buff.buff);
15138 
15139  return error;
15140 }
15142  ds3_error* error;
15143  GByteArray* xml_blob;
15144 
15145  if (request->path->size < 2) {
15146  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15147  }
15148 
15149  xml_blob = g_byte_array_new();
15150  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15151  if (error != NULL) {
15152  g_byte_array_free(xml_blob, TRUE);
15153  return error;
15154  }
15155 
15156  return _parse_top_level_ds3_group_member_response(client, request, response, xml_blob);
15157 }
15159  ds3_error* error;
15160  GByteArray* xml_blob;
15161 
15162  if (request->path->size < 2) {
15163  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15164  }
15165 
15166  xml_blob = g_byte_array_new();
15167  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15168  if (error != NULL) {
15169  g_byte_array_free(xml_blob, TRUE);
15170  return error;
15171  }
15172 
15173  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
15174 }
15176  ds3_error* error;
15177  GByteArray* xml_blob;
15178 
15179  if (request->path->size < 2) {
15180  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15181  }
15182 
15183  xml_blob = g_byte_array_new();
15184  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15185  if (error != NULL) {
15186  g_byte_array_free(xml_blob, TRUE);
15187  return error;
15188  }
15189 
15190  return _parse_top_level_ds3_group_member_response(client, request, response, xml_blob);
15191 }
15193 
15194  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15195  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15196  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15197  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15198  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15199  }
15200 
15201  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15202 }
15204 
15205  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15206  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15207  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15208  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15209  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15210  }
15211 
15212  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15213 }
15215  ds3_error* error;
15216  GByteArray* xml_blob;
15217 
15218  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15219  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15220  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15221  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15222  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15223  }
15224 
15225  xml_blob = g_byte_array_new();
15226  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15227  if (error != NULL) {
15228  g_byte_array_free(xml_blob, TRUE);
15229  return error;
15230  }
15231 
15232  return _parse_top_level_ds3_group_member_response(client, request, response, xml_blob);
15233 }
15235  ds3_error* error;
15236  GByteArray* xml_blob;
15237  ds3_string_multimap* return_headers = NULL;
15238 
15239  if (request->path->size < 2) {
15240  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15241  }
15242 
15243  xml_blob = g_byte_array_new();
15244  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15245  if (error != NULL) {
15246  ds3_string_multimap_free(return_headers);
15247  g_byte_array_free(xml_blob, TRUE);
15248  return error;
15249  }
15250 
15251  error = _parse_top_level_ds3_group_member_list_response(client, request, response, xml_blob);
15252 
15253  (*response)->paging = _parse_paging_headers(return_headers);
15254  ds3_string_multimap_free(return_headers);
15255 
15256  return error;
15257 }
15259  ds3_error* error;
15260  GByteArray* xml_blob;
15261 
15262  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15263  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15264  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15265  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15266  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15267  }
15268 
15269  xml_blob = g_byte_array_new();
15270  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15271  if (error != NULL) {
15272  g_byte_array_free(xml_blob, TRUE);
15273  return error;
15274  }
15275 
15276  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
15277 }
15279  ds3_error* error;
15280  GByteArray* xml_blob;
15281  ds3_string_multimap* return_headers = NULL;
15282 
15283  if (request->path->size < 2) {
15284  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15285  }
15286 
15287  xml_blob = g_byte_array_new();
15288  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15289  if (error != NULL) {
15290  ds3_string_multimap_free(return_headers);
15291  g_byte_array_free(xml_blob, TRUE);
15292  return error;
15293  }
15294 
15295  error = _parse_top_level_ds3_group_list_response(client, request, response, xml_blob);
15296 
15297  (*response)->paging = _parse_paging_headers(return_headers);
15298  ds3_string_multimap_free(return_headers);
15299 
15300  return error;
15301 }
15303  ds3_error* error;
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  xml_blob = g_byte_array_new();
15314  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15315  if (error != NULL) {
15316  g_byte_array_free(xml_blob, TRUE);
15317  return error;
15318  }
15319 
15320  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
15321 }
15323  ds3_error* error;
15324  GByteArray* xml_blob;
15325 
15326  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15327  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15328  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15329  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15330  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15331  }
15332 
15333  xml_blob = g_byte_array_new();
15334  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15335  if (error != NULL) {
15336  g_byte_array_free(xml_blob, TRUE);
15337  return error;
15338  }
15339 
15340  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
15341 }
15343  ds3_error* error;
15344  GByteArray* xml_blob;
15345 
15346  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15347  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15348  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15349  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15350  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15351  }
15352 
15353  xml_blob = g_byte_array_new();
15354  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15355  if (error != NULL) {
15356  g_byte_array_free(xml_blob, TRUE);
15357  return error;
15358  }
15359 
15360  return _parse_top_level_ds3_objects_response(client, request, response, xml_blob);
15361 }
15363 
15364  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15365  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15366  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15367  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15368  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15369  }
15370 
15371  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15372 }
15374 
15375  if (request->path->size < 2) {
15376  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15377  }
15378 
15379  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15380 }
15382 
15383  if (request->path->size < 2) {
15384  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15385  }
15386 
15387  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15388 }
15390 
15391  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15392  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15393  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15394  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15395  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15396  }
15397 
15398  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15399 }
15401 
15402  if (request->path->size < 2) {
15403  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15404  }
15405 
15406  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15407 }
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  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15415 }
15417  ds3_error* error;
15418  GByteArray* xml_blob;
15419 
15420  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15421  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15422  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15423  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15424  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15425  }
15426 
15427  xml_blob = g_byte_array_new();
15428  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15429  if (error != NULL) {
15430  g_byte_array_free(xml_blob, TRUE);
15431  return error;
15432  }
15433 
15434  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15435 }
15437  ds3_error* error;
15438  ds3_xml_send_buff send_buff;
15439  GByteArray* xml_blob;
15440 
15441  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15442  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15443  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15444  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15445  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15446  }
15447 
15448  error = _init_request_payload(request, &send_buff, BULK_GET);
15449  if (error != NULL) return error;
15450 
15451  xml_blob = g_byte_array_new();
15452  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15453 
15454  // Clean up the data sent to the server
15455  xmlFree(send_buff.buff);
15456 
15457  if (error != NULL) {
15458  g_byte_array_free(xml_blob, TRUE);
15459  return error;
15460  }
15461 
15462  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15463 }
15465  ds3_error* error;
15466  ds3_xml_send_buff send_buff;
15467  GByteArray* xml_blob;
15468 
15469  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15470  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15471  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15472  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15473  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15474  }
15475 
15476  error = _init_request_payload(request, &send_buff, BULK_PUT);
15477  if (error != NULL) return error;
15478 
15479  xml_blob = g_byte_array_new();
15480  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15481 
15482  // Clean up the data sent to the server
15483  xmlFree(send_buff.buff);
15484 
15485  if (error != NULL) {
15486  g_byte_array_free(xml_blob, TRUE);
15487  return error;
15488  }
15489 
15490  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15491 }
15493  ds3_error* error;
15494  ds3_xml_send_buff send_buff;
15495  GByteArray* xml_blob;
15496 
15497  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15498  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15499  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15500  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15501  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15502  }
15503 
15504  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
15505  if (error != NULL) return error;
15506 
15507  xml_blob = g_byte_array_new();
15508  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15509 
15510  // Clean up the data sent to the server
15511  xmlFree(send_buff.buff);
15512 
15513  if (error != NULL) {
15514  g_byte_array_free(xml_blob, TRUE);
15515  return error;
15516  }
15517 
15518  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15519 }
15521  ds3_error* error;
15522  GByteArray* xml_blob;
15523 
15524  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15525  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15526  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15527  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15528  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15529  }
15530 
15531  xml_blob = g_byte_array_new();
15532  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15533  if (error != NULL) {
15534  g_byte_array_free(xml_blob, TRUE);
15535  return error;
15536  }
15537 
15538  return _parse_top_level_ds3_active_job_response(client, request, response, xml_blob);
15539 }
15541  ds3_error* error;
15542  GByteArray* xml_blob;
15543  ds3_string_multimap* return_headers = NULL;
15544 
15545  if (request->path->size < 2) {
15546  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15547  }
15548 
15549  xml_blob = g_byte_array_new();
15550  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15551  if (error != NULL) {
15552  ds3_string_multimap_free(return_headers);
15553  g_byte_array_free(xml_blob, TRUE);
15554  return error;
15555  }
15556 
15557  error = _parse_top_level_ds3_active_job_list_response(client, request, response, xml_blob);
15558 
15559  (*response)->paging = _parse_paging_headers(return_headers);
15560  ds3_string_multimap_free(return_headers);
15561 
15562  return error;
15563 }
15565  ds3_error* error;
15566  GByteArray* xml_blob;
15567 
15568  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15569  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15570  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15571  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15572  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15573  }
15574 
15575  xml_blob = g_byte_array_new();
15576  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15577  if (error != NULL) {
15578  g_byte_array_free(xml_blob, TRUE);
15579  return error;
15580  }
15581 
15582  return _parse_top_level_ds3_canceled_job_response(client, request, response, xml_blob);
15583 }
15585  ds3_error* error;
15586  GByteArray* xml_blob;
15587  ds3_string_multimap* return_headers = NULL;
15588 
15589  if (request->path->size < 2) {
15590  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15591  }
15592 
15593  xml_blob = g_byte_array_new();
15594  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15595  if (error != NULL) {
15596  ds3_string_multimap_free(return_headers);
15597  g_byte_array_free(xml_blob, TRUE);
15598  return error;
15599  }
15600 
15601  error = _parse_top_level_ds3_canceled_job_list_response(client, request, response, xml_blob);
15602 
15603  (*response)->paging = _parse_paging_headers(return_headers);
15604  ds3_string_multimap_free(return_headers);
15605 
15606  return error;
15607 }
15609  ds3_error* error;
15610  GByteArray* xml_blob;
15611 
15612  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15613  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15614  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15615  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15616  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15617  }
15618 
15619  xml_blob = g_byte_array_new();
15620  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15621  if (error != NULL) {
15622  g_byte_array_free(xml_blob, TRUE);
15623  return error;
15624  }
15625 
15626  return _parse_top_level_ds3_completed_job_response(client, request, response, xml_blob);
15627 }
15629  ds3_error* error;
15630  GByteArray* xml_blob;
15631  ds3_string_multimap* return_headers = NULL;
15632 
15633  if (request->path->size < 2) {
15634  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15635  }
15636 
15637  xml_blob = g_byte_array_new();
15638  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15639  if (error != NULL) {
15640  ds3_string_multimap_free(return_headers);
15641  g_byte_array_free(xml_blob, TRUE);
15642  return error;
15643  }
15644 
15645  error = _parse_top_level_ds3_completed_job_list_response(client, request, response, xml_blob);
15646 
15647  (*response)->paging = _parse_paging_headers(return_headers);
15648  ds3_string_multimap_free(return_headers);
15649 
15650  return error;
15651 }
15653  ds3_error* error;
15654  GByteArray* xml_blob;
15655 
15656  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15657  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15658  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15659  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15660  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15661  }
15662 
15663  xml_blob = g_byte_array_new();
15664  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15665  if (error != NULL) {
15666  g_byte_array_free(xml_blob, TRUE);
15667  return error;
15668  }
15669 
15670  return _parse_top_level_ds3_job_chunk_response(client, request, response, xml_blob);
15671 }
15673  ds3_error* error;
15674  GByteArray* xml_blob;
15675 
15676  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15677  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15678  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15679  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15680  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15681  }
15682 
15683  xml_blob = g_byte_array_new();
15684  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15685  if (error != NULL) {
15686  g_byte_array_free(xml_blob, TRUE);
15687  return error;
15688  }
15689 
15690  return _parse_top_level_ds3_objects_response(client, request, response, xml_blob);
15691 }
15693  ds3_error* error;
15694  GByteArray* xml_blob;
15695 
15696  if (request->path->size < 2) {
15697  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15698  }
15699 
15700  xml_blob = g_byte_array_new();
15701  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15702  if (error != NULL) {
15703  g_byte_array_free(xml_blob, TRUE);
15704  return error;
15705  }
15706 
15707  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15708 }
15710  ds3_error* error;
15711  GByteArray* xml_blob;
15712 
15713  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15714  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15715  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15716  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15717  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15718  }
15719 
15720  xml_blob = g_byte_array_new();
15721  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15722  if (error != NULL) {
15723  g_byte_array_free(xml_blob, TRUE);
15724  return error;
15725  }
15726 
15727  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15728 }
15730  ds3_error* error;
15731  GByteArray* xml_blob;
15732  ds3_str* _response;
15733 
15734  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15735  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15736  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15737  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15738  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15739  }
15740 
15741  xml_blob = g_byte_array_new();
15742  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15743  if (error != NULL) {
15744  g_byte_array_free(xml_blob, TRUE);
15745  return error;
15746  }
15747 
15748  _response = ds3_str_init_with_size((char*)xml_blob->data, xml_blob->len);
15749  g_byte_array_free(xml_blob, TRUE);
15750 
15751  *response = _response;
15752  return error;
15753 }
15755  ds3_error* error;
15756  GByteArray* xml_blob;
15757 
15758  if (request->path->size < 2) {
15759  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15760  }
15761 
15762  xml_blob = g_byte_array_new();
15763  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15764  if (error != NULL) {
15765  g_byte_array_free(xml_blob, TRUE);
15766  return error;
15767  }
15768 
15769  return _parse_top_level_ds3_job_list_response(client, request, response, xml_blob);
15770 }
15772  ds3_error* error;
15773  GByteArray* xml_blob;
15774 
15775  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15776  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15777  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15778  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15779  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id 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, NULL);
15784  if (error != NULL) {
15785  g_byte_array_free(xml_blob, TRUE);
15786  return error;
15787  }
15788 
15789  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15790 }
15792  ds3_error* error;
15793  GByteArray* xml_blob;
15794 
15795  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15796  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15797  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15798  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15799  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15800  }
15801 
15802  xml_blob = g_byte_array_new();
15803  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15804  if (error != NULL) {
15805  g_byte_array_free(xml_blob, TRUE);
15806  return error;
15807  }
15808 
15809  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15810 }
15812  ds3_error* error;
15813  ds3_xml_send_buff send_buff;
15814  GByteArray* xml_blob;
15815 
15816  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15817  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15818  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15819  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15820  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15821  }
15822 
15823  error = _init_request_payload(request, &send_buff, STRING);
15824  if (error != NULL) return error;
15825 
15826  xml_blob = g_byte_array_new();
15827  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15828 
15829  // Clean up the data sent to the server
15830  xmlFree(send_buff.buff);
15831 
15832  if (error != NULL) {
15833  g_byte_array_free(xml_blob, TRUE);
15834  return error;
15835  }
15836 
15837  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15838 }
15840  ds3_error* error;
15841  ds3_xml_send_buff send_buff;
15842  GByteArray* xml_blob;
15843 
15844  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15845  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15846  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15847  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15848  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15849  }
15850 
15851  error = _init_request_payload(request, &send_buff, BULK_GET);
15852  if (error != NULL) return error;
15853 
15854  xml_blob = g_byte_array_new();
15855  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15856 
15857  // Clean up the data sent to the server
15858  xmlFree(send_buff.buff);
15859 
15860  if (error != NULL) {
15861  g_byte_array_free(xml_blob, TRUE);
15862  return error;
15863  }
15864 
15865  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
15866 }
15868 
15869  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15870  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15871  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15872  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15873  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15874  }
15875 
15876  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15877 }
15879 
15880  if (request->path->size < 2) {
15881  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15882  }
15883 
15884  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15885 }
15887 
15888  if (request->path->size < 2) {
15889  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15890  }
15891 
15892  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15893 }
15895 
15896  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15897  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15898  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15899  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15900  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15901  }
15902 
15903  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15904 }
15906 
15907  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15908  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15909  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15910  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15911  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15912  }
15913 
15914  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15915 }
15917  ds3_error* error;
15918  GByteArray* xml_blob;
15919 
15920  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15921  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15922  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15923  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15924  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id 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_node_response(client, request, response, xml_blob);
15935 }
15937  ds3_error* error;
15938  GByteArray* xml_blob;
15939  ds3_string_multimap* return_headers = NULL;
15940 
15941  if (request->path->size < 2) {
15942  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15943  }
15944 
15945  xml_blob = g_byte_array_new();
15946  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
15947  if (error != NULL) {
15948  ds3_string_multimap_free(return_headers);
15949  g_byte_array_free(xml_blob, TRUE);
15950  return error;
15951  }
15952 
15953  error = _parse_top_level_ds3_node_list_response(client, request, response, xml_blob);
15954 
15955  (*response)->paging = _parse_paging_headers(return_headers);
15956  ds3_string_multimap_free(return_headers);
15957 
15958  return error;
15959 }
15961  ds3_error* error;
15962  GByteArray* xml_blob;
15963 
15964  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15965  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15966  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15967  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15968  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15969  }
15970 
15971  xml_blob = g_byte_array_new();
15972  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15973  if (error != NULL) {
15974  g_byte_array_free(xml_blob, TRUE);
15975  return error;
15976  }
15977 
15978  return _parse_top_level_ds3_node_response(client, request, response, xml_blob);
15979 }
15981  ds3_error* error;
15982  GByteArray* xml_blob;
15983 
15984  if (request->path->size < 2) {
15985  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15986  }
15987 
15988  xml_blob = g_byte_array_new();
15989  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15990  if (error != NULL) {
15991  g_byte_array_free(xml_blob, TRUE);
15992  return error;
15993  }
15994 
15995  return _parse_top_level_ds3_azure_target_failure_notification_registration_response(client, request, response, xml_blob);
15996 }
15998  ds3_error* error;
15999  GByteArray* xml_blob;
16000 
16001  if (request->path->size < 2) {
16002  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16003  }
16004 
16005  xml_blob = g_byte_array_new();
16006  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16007  if (error != NULL) {
16008  g_byte_array_free(xml_blob, TRUE);
16009  return error;
16010  }
16011 
16012  return _parse_top_level_ds3_target_failure_notification_registration_response(client, request, response, xml_blob);
16013 }
16015  ds3_error* error;
16016  GByteArray* xml_blob;
16017 
16018  if (request->path->size < 2) {
16019  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16020  }
16021 
16022  xml_blob = g_byte_array_new();
16023  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16024  if (error != NULL) {
16025  g_byte_array_free(xml_blob, TRUE);
16026  return error;
16027  }
16028 
16029  return _parse_top_level_ds3_job_completed_notification_registration_response(client, request, response, xml_blob);
16030 }
16032  ds3_error* error;
16033  GByteArray* xml_blob;
16034 
16035  if (request->path->size < 2) {
16036  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16037  }
16038 
16039  xml_blob = g_byte_array_new();
16040  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16041  if (error != NULL) {
16042  g_byte_array_free(xml_blob, TRUE);
16043  return error;
16044  }
16045 
16046  return _parse_top_level_ds3_job_created_notification_registration_response(client, request, response, xml_blob);
16047 }
16049  ds3_error* error;
16050  GByteArray* xml_blob;
16051 
16052  if (request->path->size < 2) {
16053  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16054  }
16055 
16056  xml_blob = g_byte_array_new();
16057  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16058  if (error != NULL) {
16059  g_byte_array_free(xml_blob, TRUE);
16060  return error;
16061  }
16062 
16063  return _parse_top_level_ds3_job_creation_failed_notification_registration_response(client, request, response, xml_blob);
16064 }
16066  ds3_error* error;
16067  GByteArray* xml_blob;
16068 
16069  if (request->path->size < 2) {
16070  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16071  }
16072 
16073  xml_blob = g_byte_array_new();
16074  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16075  if (error != NULL) {
16076  g_byte_array_free(xml_blob, TRUE);
16077  return error;
16078  }
16079 
16080  return _parse_top_level_ds3_s3_object_cached_notification_registration_response(client, request, response, xml_blob);
16081 }
16083  ds3_error* error;
16084  GByteArray* xml_blob;
16085 
16086  if (request->path->size < 2) {
16087  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16088  }
16089 
16090  xml_blob = g_byte_array_new();
16091  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16092  if (error != NULL) {
16093  g_byte_array_free(xml_blob, TRUE);
16094  return error;
16095  }
16096 
16097  return _parse_top_level_ds3_s3_object_lost_notification_registration_response(client, request, response, xml_blob);
16098 }
16100  ds3_error* error;
16101  GByteArray* xml_blob;
16102 
16103  if (request->path->size < 2) {
16104  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16105  }
16106 
16107  xml_blob = g_byte_array_new();
16108  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16109  if (error != NULL) {
16110  g_byte_array_free(xml_blob, TRUE);
16111  return error;
16112  }
16113 
16114  return _parse_top_level_ds3_s3_object_persisted_notification_registration_response(client, request, response, xml_blob);
16115 }
16117  ds3_error* error;
16118  GByteArray* xml_blob;
16119 
16120  if (request->path->size < 2) {
16121  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16122  }
16123 
16124  xml_blob = g_byte_array_new();
16125  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16126  if (error != NULL) {
16127  g_byte_array_free(xml_blob, TRUE);
16128  return error;
16129  }
16130 
16131  return _parse_top_level_ds3_pool_failure_notification_registration_response(client, request, response, xml_blob);
16132 }
16134  ds3_error* error;
16135  GByteArray* xml_blob;
16136 
16137  if (request->path->size < 2) {
16138  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16139  }
16140 
16141  xml_blob = g_byte_array_new();
16142  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16143  if (error != NULL) {
16144  g_byte_array_free(xml_blob, TRUE);
16145  return error;
16146  }
16147 
16148  return _parse_top_level_ds3_s3_target_failure_notification_registration_response(client, request, response, xml_blob);
16149 }
16151  ds3_error* error;
16152  GByteArray* xml_blob;
16153 
16154  if (request->path->size < 2) {
16155  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16156  }
16157 
16158  xml_blob = g_byte_array_new();
16159  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16160  if (error != NULL) {
16161  g_byte_array_free(xml_blob, TRUE);
16162  return error;
16163  }
16164 
16165  return _parse_top_level_ds3_storage_domain_failure_notification_registration_response(client, request, response, xml_blob);
16166 }
16168  ds3_error* error;
16169  GByteArray* xml_blob;
16170 
16171  if (request->path->size < 2) {
16172  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16173  }
16174 
16175  xml_blob = g_byte_array_new();
16176  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16177  if (error != NULL) {
16178  g_byte_array_free(xml_blob, TRUE);
16179  return error;
16180  }
16181 
16182  return _parse_top_level_ds3_system_failure_notification_registration_response(client, request, response, xml_blob);
16183 }
16185  ds3_error* error;
16186  GByteArray* xml_blob;
16187 
16188  if (request->path->size < 2) {
16189  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16190  }
16191 
16192  xml_blob = g_byte_array_new();
16193  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16194  if (error != NULL) {
16195  g_byte_array_free(xml_blob, TRUE);
16196  return error;
16197  }
16198 
16199  return _parse_top_level_ds3_tape_failure_notification_registration_response(client, request, response, xml_blob);
16200 }
16202  ds3_error* error;
16203  GByteArray* xml_blob;
16204 
16205  if (request->path->size < 2) {
16206  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16207  }
16208 
16209  xml_blob = g_byte_array_new();
16210  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16211  if (error != NULL) {
16212  g_byte_array_free(xml_blob, TRUE);
16213  return error;
16214  }
16215 
16216  return _parse_top_level_ds3_tape_partition_failure_notification_registration_response(client, request, response, xml_blob);
16217 }
16219 
16220  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16221  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16222  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16223  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16224  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16225  }
16226 
16227  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16228 }
16230 
16231  if (request->path->size < 2) {
16232  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16233  }
16234 
16235  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16236 }
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  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16244 }
16246 
16247  if (request->path->size < 2) {
16248  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16249  }
16250 
16251  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16252 }
16254 
16255  if (request->path->size < 2) {
16256  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16257  }
16258 
16259  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16260 }
16262 
16263  if (request->path->size < 2) {
16264  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16265  }
16266 
16267  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16268 }
16270 
16271  if (request->path->size < 2) {
16272  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16273  }
16274 
16275  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16276 }
16278 
16279  if (request->path->size < 2) {
16280  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16281  }
16282 
16283  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16284 }
16286 
16287  if (request->path->size < 2) {
16288  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16289  }
16290 
16291  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16292 }
16294 
16295  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16296  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16297  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16298  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16299  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16300  }
16301 
16302  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16303 }
16305 
16306  if (request->path->size < 2) {
16307  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16308  }
16309 
16310  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16311 }
16313 
16314  if (request->path->size < 2) {
16315  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16316  }
16317 
16318  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16319 }
16321 
16322  if (request->path->size < 2) {
16323  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16324  }
16325 
16326  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16327 }
16329 
16330  if (request->path->size < 2) {
16331  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16332  }
16333 
16334  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16335 }
16337  ds3_error* error;
16338  GByteArray* xml_blob;
16339 
16340  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16341  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16342  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16343  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16344  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16345  }
16346 
16347  xml_blob = g_byte_array_new();
16348  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16349  if (error != NULL) {
16350  g_byte_array_free(xml_blob, TRUE);
16351  return error;
16352  }
16353 
16354  return _parse_top_level_ds3_azure_target_failure_notification_registration_response(client, request, response, xml_blob);
16355 }
16357  ds3_error* error;
16358  GByteArray* xml_blob;
16359  ds3_string_multimap* return_headers = NULL;
16360 
16361  if (request->path->size < 2) {
16362  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16363  }
16364 
16365  xml_blob = g_byte_array_new();
16366  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16367  if (error != NULL) {
16368  ds3_string_multimap_free(return_headers);
16369  g_byte_array_free(xml_blob, TRUE);
16370  return error;
16371  }
16372 
16373  error = _parse_top_level_ds3_azure_target_failure_notification_registration_list_response(client, request, response, xml_blob);
16374 
16375  (*response)->paging = _parse_paging_headers(return_headers);
16376  ds3_string_multimap_free(return_headers);
16377 
16378  return error;
16379 }
16381  ds3_error* error;
16382  GByteArray* xml_blob;
16383 
16384  if (request->path->size < 2) {
16385  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16386  }
16387 
16388  xml_blob = g_byte_array_new();
16389  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16390  if (error != NULL) {
16391  g_byte_array_free(xml_blob, TRUE);
16392  return error;
16393  }
16394 
16395  return _parse_top_level_ds3_target_failure_notification_registration_response(client, request, response, xml_blob);
16396 }
16398  ds3_error* error;
16399  GByteArray* xml_blob;
16400  ds3_string_multimap* return_headers = NULL;
16401 
16402  if (request->path->size < 2) {
16403  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16404  }
16405 
16406  xml_blob = g_byte_array_new();
16407  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16408  if (error != NULL) {
16409  ds3_string_multimap_free(return_headers);
16410  g_byte_array_free(xml_blob, TRUE);
16411  return error;
16412  }
16413 
16414  error = _parse_top_level_ds3_target_failure_notification_registration_list_response(client, request, response, xml_blob);
16415 
16416  (*response)->paging = _parse_paging_headers(return_headers);
16417  ds3_string_multimap_free(return_headers);
16418 
16419  return error;
16420 }
16422  ds3_error* error;
16423  GByteArray* xml_blob;
16424 
16425  if (request->path->size < 2) {
16426  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16427  }
16428 
16429  xml_blob = g_byte_array_new();
16430  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16431  if (error != NULL) {
16432  g_byte_array_free(xml_blob, TRUE);
16433  return error;
16434  }
16435 
16436  return _parse_top_level_ds3_job_completed_notification_registration_response(client, request, response, xml_blob);
16437 }
16439  ds3_error* error;
16440  GByteArray* xml_blob;
16441  ds3_string_multimap* return_headers = NULL;
16442 
16443  if (request->path->size < 2) {
16444  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16445  }
16446 
16447  xml_blob = g_byte_array_new();
16448  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16449  if (error != NULL) {
16450  ds3_string_multimap_free(return_headers);
16451  g_byte_array_free(xml_blob, TRUE);
16452  return error;
16453  }
16454 
16455  error = _parse_top_level_ds3_job_completed_notification_registration_list_response(client, request, response, xml_blob);
16456 
16457  (*response)->paging = _parse_paging_headers(return_headers);
16458  ds3_string_multimap_free(return_headers);
16459 
16460  return error;
16461 }
16463  ds3_error* error;
16464  GByteArray* xml_blob;
16465 
16466  if (request->path->size < 2) {
16467  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16468  }
16469 
16470  xml_blob = g_byte_array_new();
16471  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16472  if (error != NULL) {
16473  g_byte_array_free(xml_blob, TRUE);
16474  return error;
16475  }
16476 
16477  return _parse_top_level_ds3_job_created_notification_registration_response(client, request, response, xml_blob);
16478 }
16480  ds3_error* error;
16481  GByteArray* xml_blob;
16482  ds3_string_multimap* return_headers = NULL;
16483 
16484  if (request->path->size < 2) {
16485  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16486  }
16487 
16488  xml_blob = g_byte_array_new();
16489  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16490  if (error != NULL) {
16491  ds3_string_multimap_free(return_headers);
16492  g_byte_array_free(xml_blob, TRUE);
16493  return error;
16494  }
16495 
16496  error = _parse_top_level_ds3_job_created_notification_registration_list_response(client, request, response, xml_blob);
16497 
16498  (*response)->paging = _parse_paging_headers(return_headers);
16499  ds3_string_multimap_free(return_headers);
16500 
16501  return error;
16502 }
16504  ds3_error* error;
16505  GByteArray* xml_blob;
16506 
16507  if (request->path->size < 2) {
16508  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16509  }
16510 
16511  xml_blob = g_byte_array_new();
16512  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16513  if (error != NULL) {
16514  g_byte_array_free(xml_blob, TRUE);
16515  return error;
16516  }
16517 
16518  return _parse_top_level_ds3_job_creation_failed_notification_registration_response(client, request, response, xml_blob);
16519 }
16521  ds3_error* error;
16522  GByteArray* xml_blob;
16523  ds3_string_multimap* return_headers = NULL;
16524 
16525  if (request->path->size < 2) {
16526  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16527  }
16528 
16529  xml_blob = g_byte_array_new();
16530  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16531  if (error != NULL) {
16532  ds3_string_multimap_free(return_headers);
16533  g_byte_array_free(xml_blob, TRUE);
16534  return error;
16535  }
16536 
16537  error = _parse_top_level_ds3_job_creation_failed_notification_registration_list_response(client, request, response, xml_blob);
16538 
16539  (*response)->paging = _parse_paging_headers(return_headers);
16540  ds3_string_multimap_free(return_headers);
16541 
16542  return error;
16543 }
16545  ds3_error* error;
16546  GByteArray* xml_blob;
16547 
16548  if (request->path->size < 2) {
16549  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16550  }
16551 
16552  xml_blob = g_byte_array_new();
16553  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16554  if (error != NULL) {
16555  g_byte_array_free(xml_blob, TRUE);
16556  return error;
16557  }
16558 
16559  return _parse_top_level_ds3_s3_object_cached_notification_registration_response(client, request, response, xml_blob);
16560 }
16562  ds3_error* error;
16563  GByteArray* xml_blob;
16564  ds3_string_multimap* return_headers = NULL;
16565 
16566  if (request->path->size < 2) {
16567  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16568  }
16569 
16570  xml_blob = g_byte_array_new();
16571  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16572  if (error != NULL) {
16573  ds3_string_multimap_free(return_headers);
16574  g_byte_array_free(xml_blob, TRUE);
16575  return error;
16576  }
16577 
16578  error = _parse_top_level_ds3_s3_object_cached_notification_registration_list_response(client, request, response, xml_blob);
16579 
16580  (*response)->paging = _parse_paging_headers(return_headers);
16581  ds3_string_multimap_free(return_headers);
16582 
16583  return error;
16584 }
16586  ds3_error* error;
16587  GByteArray* xml_blob;
16588 
16589  if (request->path->size < 2) {
16590  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16591  }
16592 
16593  xml_blob = g_byte_array_new();
16594  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16595  if (error != NULL) {
16596  g_byte_array_free(xml_blob, TRUE);
16597  return error;
16598  }
16599 
16600  return _parse_top_level_ds3_s3_object_lost_notification_registration_response(client, request, response, xml_blob);
16601 }
16603  ds3_error* error;
16604  GByteArray* xml_blob;
16605  ds3_string_multimap* return_headers = NULL;
16606 
16607  if (request->path->size < 2) {
16608  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16609  }
16610 
16611  xml_blob = g_byte_array_new();
16612  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16613  if (error != NULL) {
16614  ds3_string_multimap_free(return_headers);
16615  g_byte_array_free(xml_blob, TRUE);
16616  return error;
16617  }
16618 
16619  error = _parse_top_level_ds3_s3_object_lost_notification_registration_list_response(client, request, response, xml_blob);
16620 
16621  (*response)->paging = _parse_paging_headers(return_headers);
16622  ds3_string_multimap_free(return_headers);
16623 
16624  return error;
16625 }
16627  ds3_error* error;
16628  GByteArray* xml_blob;
16629 
16630  if (request->path->size < 2) {
16631  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16632  }
16633 
16634  xml_blob = g_byte_array_new();
16635  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16636  if (error != NULL) {
16637  g_byte_array_free(xml_blob, TRUE);
16638  return error;
16639  }
16640 
16641  return _parse_top_level_ds3_s3_object_persisted_notification_registration_response(client, request, response, xml_blob);
16642 }
16644  ds3_error* error;
16645  GByteArray* xml_blob;
16646  ds3_string_multimap* return_headers = NULL;
16647 
16648  if (request->path->size < 2) {
16649  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16650  }
16651 
16652  xml_blob = g_byte_array_new();
16653  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16654  if (error != NULL) {
16655  ds3_string_multimap_free(return_headers);
16656  g_byte_array_free(xml_blob, TRUE);
16657  return error;
16658  }
16659 
16660  error = _parse_top_level_ds3_s3_object_persisted_notification_registration_list_response(client, request, response, xml_blob);
16661 
16662  (*response)->paging = _parse_paging_headers(return_headers);
16663  ds3_string_multimap_free(return_headers);
16664 
16665  return error;
16666 }
16668  ds3_error* error;
16669  GByteArray* xml_blob;
16670 
16671  if (request->path->size < 2) {
16672  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16673  }
16674 
16675  xml_blob = g_byte_array_new();
16676  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16677  if (error != NULL) {
16678  g_byte_array_free(xml_blob, TRUE);
16679  return error;
16680  }
16681 
16682  return _parse_top_level_ds3_pool_failure_notification_registration_response(client, request, response, xml_blob);
16683 }
16685  ds3_error* error;
16686  GByteArray* xml_blob;
16687  ds3_string_multimap* return_headers = NULL;
16688 
16689  if (request->path->size < 2) {
16690  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16691  }
16692 
16693  xml_blob = g_byte_array_new();
16694  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16695  if (error != NULL) {
16696  ds3_string_multimap_free(return_headers);
16697  g_byte_array_free(xml_blob, TRUE);
16698  return error;
16699  }
16700 
16701  error = _parse_top_level_ds3_pool_failure_notification_registration_list_response(client, request, response, xml_blob);
16702 
16703  (*response)->paging = _parse_paging_headers(return_headers);
16704  ds3_string_multimap_free(return_headers);
16705 
16706  return error;
16707 }
16709  ds3_error* error;
16710  GByteArray* xml_blob;
16711 
16712  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16713  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16714  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16715  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16716  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16717  }
16718 
16719  xml_blob = g_byte_array_new();
16720  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16721  if (error != NULL) {
16722  g_byte_array_free(xml_blob, TRUE);
16723  return error;
16724  }
16725 
16726  return _parse_top_level_ds3_s3_target_failure_notification_registration_response(client, request, response, xml_blob);
16727 }
16729  ds3_error* error;
16730  GByteArray* xml_blob;
16731  ds3_string_multimap* return_headers = NULL;
16732 
16733  if (request->path->size < 2) {
16734  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16735  }
16736 
16737  xml_blob = g_byte_array_new();
16738  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16739  if (error != NULL) {
16740  ds3_string_multimap_free(return_headers);
16741  g_byte_array_free(xml_blob, TRUE);
16742  return error;
16743  }
16744 
16745  error = _parse_top_level_ds3_s3_target_failure_notification_registration_list_response(client, request, response, xml_blob);
16746 
16747  (*response)->paging = _parse_paging_headers(return_headers);
16748  ds3_string_multimap_free(return_headers);
16749 
16750  return error;
16751 }
16753  ds3_error* error;
16754  GByteArray* xml_blob;
16755 
16756  if (request->path->size < 2) {
16757  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16758  }
16759 
16760  xml_blob = g_byte_array_new();
16761  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16762  if (error != NULL) {
16763  g_byte_array_free(xml_blob, TRUE);
16764  return error;
16765  }
16766 
16767  return _parse_top_level_ds3_storage_domain_failure_notification_registration_response(client, request, response, xml_blob);
16768 }
16770  ds3_error* error;
16771  GByteArray* xml_blob;
16772  ds3_string_multimap* return_headers = NULL;
16773 
16774  if (request->path->size < 2) {
16775  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16776  }
16777 
16778  xml_blob = g_byte_array_new();
16779  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16780  if (error != NULL) {
16781  ds3_string_multimap_free(return_headers);
16782  g_byte_array_free(xml_blob, TRUE);
16783  return error;
16784  }
16785 
16787 
16788  (*response)->paging = _parse_paging_headers(return_headers);
16789  ds3_string_multimap_free(return_headers);
16790 
16791  return error;
16792 }
16794  ds3_error* error;
16795  GByteArray* xml_blob;
16796 
16797  if (request->path->size < 2) {
16798  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16799  }
16800 
16801  xml_blob = g_byte_array_new();
16802  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16803  if (error != NULL) {
16804  g_byte_array_free(xml_blob, TRUE);
16805  return error;
16806  }
16807 
16808  return _parse_top_level_ds3_system_failure_notification_registration_response(client, request, response, xml_blob);
16809 }
16811  ds3_error* error;
16812  GByteArray* xml_blob;
16813  ds3_string_multimap* return_headers = NULL;
16814 
16815  if (request->path->size < 2) {
16816  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16817  }
16818 
16819  xml_blob = g_byte_array_new();
16820  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16821  if (error != NULL) {
16822  ds3_string_multimap_free(return_headers);
16823  g_byte_array_free(xml_blob, TRUE);
16824  return error;
16825  }
16826 
16827  error = _parse_top_level_ds3_system_failure_notification_registration_list_response(client, request, response, xml_blob);
16828 
16829  (*response)->paging = _parse_paging_headers(return_headers);
16830  ds3_string_multimap_free(return_headers);
16831 
16832  return error;
16833 }
16835  ds3_error* error;
16836  GByteArray* xml_blob;
16837 
16838  if (request->path->size < 2) {
16839  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16840  }
16841 
16842  xml_blob = g_byte_array_new();
16843  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16844  if (error != NULL) {
16845  g_byte_array_free(xml_blob, TRUE);
16846  return error;
16847  }
16848 
16849  return _parse_top_level_ds3_tape_failure_notification_registration_response(client, request, response, xml_blob);
16850 }
16852  ds3_error* error;
16853  GByteArray* xml_blob;
16854  ds3_string_multimap* return_headers = NULL;
16855 
16856  if (request->path->size < 2) {
16857  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16858  }
16859 
16860  xml_blob = g_byte_array_new();
16861  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16862  if (error != NULL) {
16863  ds3_string_multimap_free(return_headers);
16864  g_byte_array_free(xml_blob, TRUE);
16865  return error;
16866  }
16867 
16868  error = _parse_top_level_ds3_tape_failure_notification_registration_list_response(client, request, response, xml_blob);
16869 
16870  (*response)->paging = _parse_paging_headers(return_headers);
16871  ds3_string_multimap_free(return_headers);
16872 
16873  return error;
16874 }
16876  ds3_error* error;
16877  GByteArray* xml_blob;
16878 
16879  if (request->path->size < 2) {
16880  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16881  }
16882 
16883  xml_blob = g_byte_array_new();
16884  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16885  if (error != NULL) {
16886  g_byte_array_free(xml_blob, TRUE);
16887  return error;
16888  }
16889 
16890  return _parse_top_level_ds3_tape_partition_failure_notification_registration_response(client, request, response, xml_blob);
16891 }
16893  ds3_error* error;
16894  GByteArray* xml_blob;
16895  ds3_string_multimap* return_headers = NULL;
16896 
16897  if (request->path->size < 2) {
16898  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16899  }
16900 
16901  xml_blob = g_byte_array_new();
16902  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16903  if (error != NULL) {
16904  ds3_string_multimap_free(return_headers);
16905  g_byte_array_free(xml_blob, TRUE);
16906  return error;
16907  }
16908 
16910 
16911  (*response)->paging = _parse_paging_headers(return_headers);
16912  ds3_string_multimap_free(return_headers);
16913 
16914  return error;
16915 }
16917 
16918  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16919  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16920  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16921  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16922  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16923  }
16924 
16925  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16926 }
16928  ds3_error* error;
16929  ds3_xml_send_buff send_buff;
16930  GByteArray* xml_blob;
16931  ds3_str* _response;
16932 
16933  if (request->path->size < 2) {
16934  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16935  }
16936 
16937  error = _init_request_payload(request, &send_buff, STRING);
16938  if (error != NULL) return error;
16939 
16940  xml_blob = g_byte_array_new();
16941  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
16942 
16943  // Clean up the data sent to the server
16944  xmlFree(send_buff.buff);
16945 
16946  if (error != NULL) {
16947  g_byte_array_free(xml_blob, TRUE);
16948  return error;
16949  }
16950 
16951  _response = ds3_str_init_with_size((char*)xml_blob->data, xml_blob->len);
16952  g_byte_array_free(xml_blob, TRUE);
16953 
16954  *response = _response;
16955  return error;
16956 }
16958  ds3_error* error;
16959  GByteArray* xml_blob;
16960 
16961  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16962  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16963  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16964  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16965  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16966  }
16967 
16968  xml_blob = g_byte_array_new();
16969  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16970  if (error != NULL) {
16971  g_byte_array_free(xml_blob, TRUE);
16972  return error;
16973  }
16974 
16975  return _parse_top_level_ds3_s3_object_response(client, request, response, xml_blob);
16976 }
16978  ds3_error* error;
16979  GByteArray* xml_blob;
16980  ds3_string_multimap* return_headers = NULL;
16981 
16982  if (request->path->size < 2) {
16983  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16984  }
16985 
16986  xml_blob = g_byte_array_new();
16987  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
16988  if (error != NULL) {
16989  ds3_string_multimap_free(return_headers);
16990  g_byte_array_free(xml_blob, TRUE);
16991  return error;
16992  }
16993 
16994  error = _parse_top_level_ds3_s3_object_list_response(client, request, response, xml_blob);
16995 
16996  (*response)->paging = _parse_paging_headers(return_headers);
16997  ds3_string_multimap_free(return_headers);
16998 
16999  return error;
17000 }
17002  ds3_error* error;
17003  GByteArray* xml_blob;
17004  ds3_string_multimap* return_headers = NULL;
17005 
17006  if (request->path->size < 2) {
17007  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17008  }
17009 
17010  xml_blob = g_byte_array_new();
17011  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17012  if (error != NULL) {
17013  ds3_string_multimap_free(return_headers);
17014  g_byte_array_free(xml_blob, TRUE);
17015  return error;
17016  }
17017 
17018  error = _parse_top_level_ds3_detailed_s3_object_list_response(client, request, response, xml_blob);
17019 
17020  (*response)->paging = _parse_paging_headers(return_headers);
17021  ds3_string_multimap_free(return_headers);
17022 
17023  return error;
17024 }
17026  ds3_error* error;
17027  ds3_xml_send_buff send_buff;
17028  GByteArray* xml_blob;
17029 
17030  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17031  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17032  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17033  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17034  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17035  }
17036 
17037  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
17038  if (error != NULL) return error;
17039 
17040  xml_blob = g_byte_array_new();
17041  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
17042 
17043  // Clean up the data sent to the server
17044  xmlFree(send_buff.buff);
17045 
17046  if (error != NULL) {
17047  g_byte_array_free(xml_blob, TRUE);
17048  return error;
17049  }
17050 
17051  return _parse_top_level_ds3_physical_placement_response(client, request, response, xml_blob);
17052 }
17054  ds3_error* error;
17055  ds3_xml_send_buff send_buff;
17056  GByteArray* xml_blob;
17057 
17058  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17059  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17060  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17061  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17062  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17063  }
17064 
17065  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
17066  if (error != NULL) return error;
17067 
17068  xml_blob = g_byte_array_new();
17069  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
17070 
17071  // Clean up the data sent to the server
17072  xmlFree(send_buff.buff);
17073 
17074  if (error != NULL) {
17075  g_byte_array_free(xml_blob, TRUE);
17076  return error;
17077  }
17078 
17079  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
17080 }
17082  ds3_error* error;
17083  GByteArray* xml_blob;
17084 
17085  if (request->path->size < 2) {
17086  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17087  }
17088 
17089  xml_blob = g_byte_array_new();
17090  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17091  if (error != NULL) {
17092  g_byte_array_free(xml_blob, TRUE);
17093  return error;
17094  }
17095 
17096  return _parse_top_level_ds3_s3_object_response(client, request, response, xml_blob);
17097 }
17099  ds3_error* error;
17100  ds3_xml_send_buff send_buff;
17101  GByteArray* xml_blob;
17102 
17103  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17104  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17105  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17106  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17107  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17108  }
17109 
17110  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
17111  if (error != NULL) return error;
17112 
17113  xml_blob = g_byte_array_new();
17114  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
17115 
17116  // Clean up the data sent to the server
17117  xmlFree(send_buff.buff);
17118 
17119  if (error != NULL) {
17120  g_byte_array_free(xml_blob, TRUE);
17121  return error;
17122  }
17123 
17124  return _parse_top_level_ds3_physical_placement_response(client, request, response, xml_blob);
17125 }
17127  ds3_error* error;
17128  ds3_xml_send_buff send_buff;
17129  GByteArray* xml_blob;
17130 
17131  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17132  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17133  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17134  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17135  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17136  }
17137 
17138  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
17139  if (error != NULL) return error;
17140 
17141  xml_blob = g_byte_array_new();
17142  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
17143 
17144  // Clean up the data sent to the server
17145  xmlFree(send_buff.buff);
17146 
17147  if (error != NULL) {
17148  g_byte_array_free(xml_blob, TRUE);
17149  return error;
17150  }
17151 
17152  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
17153 }
17155 
17156  if (request->path->size < 2) {
17157  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17158  }
17159 
17160  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17161 }
17163  ds3_error* error;
17164  GByteArray* xml_blob;
17165 
17166  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17167  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17168  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17169  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17170  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17171  }
17172 
17173  xml_blob = g_byte_array_new();
17174  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17175  if (error != NULL) {
17176  g_byte_array_free(xml_blob, TRUE);
17177  return error;
17178  }
17179 
17180  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17181 }
17183 
17184  if (request->path->size < 2) {
17185  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17186  }
17187 
17188  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17189 }
17191  ds3_error* error;
17192  GByteArray* xml_blob;
17193 
17194  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17195  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17196  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17197  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17198  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17199  }
17200 
17201  xml_blob = g_byte_array_new();
17202  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17203  if (error != NULL) {
17204  g_byte_array_free(xml_blob, TRUE);
17205  return error;
17206  }
17207 
17208  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17209 }
17211 
17212  if (request->path->size < 2) {
17213  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17214  }
17215 
17216  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17217 }
17219  ds3_error* error;
17220  GByteArray* xml_blob;
17221 
17222  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17223  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17224  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17225  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17226  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17227  }
17228 
17229  xml_blob = g_byte_array_new();
17230  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17231  if (error != NULL) {
17232  g_byte_array_free(xml_blob, TRUE);
17233  return error;
17234  }
17235 
17236  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17237 }
17239  ds3_error* error;
17240  GByteArray* xml_blob;
17241 
17242  if (request->path->size < 2) {
17243  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17244  }
17245 
17246  xml_blob = g_byte_array_new();
17247  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17248  if (error != NULL) {
17249  g_byte_array_free(xml_blob, TRUE);
17250  return error;
17251  }
17252 
17253  return _parse_top_level_ds3_pool_partition_response(client, request, response, xml_blob);
17254 }
17256 
17257  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17258  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17259  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17260  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17261  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17262  }
17263 
17264  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17265 }
17267 
17268  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17269  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17270  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17271  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17272  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17273  }
17274 
17275  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17276 }
17278 
17279  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17280  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17281  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17282  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17283  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17284  }
17285 
17286  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17287 }
17289 
17290  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17291  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17292  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17293  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17294  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17295  }
17296 
17297  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17298 }
17300 
17301 
17302 
17303  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17304 }
17306 
17307  if (request->path->size < 2) {
17308  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17309  }
17310 
17311  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17312 }
17314  ds3_error* error;
17315  GByteArray* xml_blob;
17316 
17317  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17318  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17319  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17320  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17321  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17322  }
17323 
17324  xml_blob = g_byte_array_new();
17325  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17326  if (error != NULL) {
17327  g_byte_array_free(xml_blob, TRUE);
17328  return error;
17329  }
17330 
17331  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17332 }
17334  ds3_error* error;
17335  GByteArray* xml_blob;
17336 
17337  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17338  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17339  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17340  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17341  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17342  }
17343 
17344  xml_blob = g_byte_array_new();
17345  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17346  if (error != NULL) {
17347  g_byte_array_free(xml_blob, TRUE);
17348  return error;
17349  }
17350 
17351  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
17352 }
17354  ds3_error* error;
17355  GByteArray* xml_blob;
17356  ds3_string_multimap* return_headers = NULL;
17357 
17358  if (request->path->size < 2) {
17359  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17360  }
17361 
17362  xml_blob = g_byte_array_new();
17363  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17364  if (error != NULL) {
17365  ds3_string_multimap_free(return_headers);
17366  g_byte_array_free(xml_blob, TRUE);
17367  return error;
17368  }
17369 
17370  error = _parse_top_level_ds3_pool_failure_list_response(client, request, response, xml_blob);
17371 
17372  (*response)->paging = _parse_paging_headers(return_headers);
17373  ds3_string_multimap_free(return_headers);
17374 
17375  return error;
17376 }
17378  ds3_error* error;
17379  GByteArray* xml_blob;
17380 
17381  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17382  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17383  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17384  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17385  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17386  }
17387 
17388  xml_blob = g_byte_array_new();
17389  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17390  if (error != NULL) {
17391  g_byte_array_free(xml_blob, TRUE);
17392  return error;
17393  }
17394 
17395  return _parse_top_level_ds3_pool_partition_response(client, request, response, xml_blob);
17396 }
17398  ds3_error* error;
17399  GByteArray* xml_blob;
17400  ds3_string_multimap* return_headers = NULL;
17401 
17402  if (request->path->size < 2) {
17403  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17404  }
17405 
17406  xml_blob = g_byte_array_new();
17407  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17408  if (error != NULL) {
17409  ds3_string_multimap_free(return_headers);
17410  g_byte_array_free(xml_blob, TRUE);
17411  return error;
17412  }
17413 
17414  error = _parse_top_level_ds3_pool_partition_list_response(client, request, response, xml_blob);
17415 
17416  (*response)->paging = _parse_paging_headers(return_headers);
17417  ds3_string_multimap_free(return_headers);
17418 
17419  return error;
17420 }
17422  ds3_error* error;
17423  GByteArray* xml_blob;
17424 
17425  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17426  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17427  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17428  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17429  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17430  }
17431 
17432  xml_blob = g_byte_array_new();
17433  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17434  if (error != NULL) {
17435  g_byte_array_free(xml_blob, TRUE);
17436  return error;
17437  }
17438 
17439  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17440 }
17442  ds3_error* error;
17443  GByteArray* xml_blob;
17444  ds3_string_multimap* return_headers = NULL;
17445 
17446  if (request->path->size < 2) {
17447  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17448  }
17449 
17450  xml_blob = g_byte_array_new();
17451  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17452  if (error != NULL) {
17453  ds3_string_multimap_free(return_headers);
17454  g_byte_array_free(xml_blob, TRUE);
17455  return error;
17456  }
17457 
17458  error = _parse_top_level_ds3_pool_list_response(client, request, response, xml_blob);
17459 
17460  (*response)->paging = _parse_paging_headers(return_headers);
17461  ds3_string_multimap_free(return_headers);
17462 
17463  return error;
17464 }
17466 
17467  if (request->path->size < 2) {
17468  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17469  }
17470 
17471  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17472 }
17474  ds3_error* error;
17475  GByteArray* xml_blob;
17476 
17477  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17478  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17479  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17480  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17481  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17482  }
17483 
17484  xml_blob = g_byte_array_new();
17485  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17486  if (error != NULL) {
17487  g_byte_array_free(xml_blob, TRUE);
17488  return error;
17489  }
17490 
17491  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17492 }
17494 
17495  if (request->path->size < 2) {
17496  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17497  }
17498 
17499  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17500 }
17502  ds3_error* error;
17503  GByteArray* xml_blob;
17504 
17505  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17506  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17507  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17508  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17509  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17510  }
17511 
17512  xml_blob = g_byte_array_new();
17513  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17514  if (error != NULL) {
17515  g_byte_array_free(xml_blob, TRUE);
17516  return error;
17517  }
17518 
17519  return _parse_top_level_ds3_pool_partition_response(client, request, response, xml_blob);
17520 }
17522  ds3_error* error;
17523  GByteArray* xml_blob;
17524 
17525  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17526  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17527  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17528  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17529  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17530  }
17531 
17532  xml_blob = g_byte_array_new();
17533  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17534  if (error != NULL) {
17535  g_byte_array_free(xml_blob, TRUE);
17536  return error;
17537  }
17538 
17539  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17540 }
17542 
17543  if (request->path->size < 2) {
17544  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17545  }
17546 
17547  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17548 }
17550  ds3_error* error;
17551  GByteArray* xml_blob;
17552 
17553  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17554  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17555  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17556  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17557  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17558  }
17559 
17560  xml_blob = g_byte_array_new();
17561  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17562  if (error != NULL) {
17563  g_byte_array_free(xml_blob, TRUE);
17564  return error;
17565  }
17566 
17567  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
17568 }
17570 
17571  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17572  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17573  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17574  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17575  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17576  }
17577 
17578  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17579 }
17581  ds3_error* error;
17582  GByteArray* xml_blob;
17583 
17584  if (request->path->size < 2) {
17585  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17586  }
17587 
17588  xml_blob = g_byte_array_new();
17589  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17590  if (error != NULL) {
17591  g_byte_array_free(xml_blob, TRUE);
17592  return error;
17593  }
17594 
17595  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
17596 }
17598  ds3_error* error;
17599  GByteArray* xml_blob;
17600 
17601  if (request->path->size < 2) {
17602  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17603  }
17604 
17605  xml_blob = g_byte_array_new();
17606  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17607  if (error != NULL) {
17608  g_byte_array_free(xml_blob, TRUE);
17609  return error;
17610  }
17611 
17612  return _parse_top_level_ds3_storage_domain_response(client, request, response, xml_blob);
17613 }
17615  ds3_error* error;
17616  GByteArray* xml_blob;
17617 
17618  if (request->path->size < 2) {
17619  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17620  }
17621 
17622  xml_blob = g_byte_array_new();
17623  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17624  if (error != NULL) {
17625  g_byte_array_free(xml_blob, TRUE);
17626  return error;
17627  }
17628 
17629  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
17630 }
17632 
17633  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17634  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17635  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17636  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17637  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17638  }
17639 
17640  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17641 }
17643 
17644  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17645  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17646  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17647  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17648  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17649  }
17650 
17651  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17652 }
17654 
17655  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17656  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17657  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17658  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17659  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17660  }
17661 
17662  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17663 }
17665  ds3_error* error;
17666  GByteArray* xml_blob;
17667  ds3_string_multimap* return_headers = NULL;
17668 
17669  if (request->path->size < 2) {
17670  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17671  }
17672 
17673  xml_blob = g_byte_array_new();
17674  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17675  if (error != NULL) {
17676  ds3_string_multimap_free(return_headers);
17677  g_byte_array_free(xml_blob, TRUE);
17678  return error;
17679  }
17680 
17681  error = _parse_top_level_ds3_storage_domain_failure_list_response(client, request, response, xml_blob);
17682 
17683  (*response)->paging = _parse_paging_headers(return_headers);
17684  ds3_string_multimap_free(return_headers);
17685 
17686  return error;
17687 }
17689  ds3_error* error;
17690  GByteArray* xml_blob;
17691 
17692  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17693  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17694  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17695  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17696  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17697  }
17698 
17699  xml_blob = g_byte_array_new();
17700  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17701  if (error != NULL) {
17702  g_byte_array_free(xml_blob, TRUE);
17703  return error;
17704  }
17705 
17706  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
17707 }
17709  ds3_error* error;
17710  GByteArray* xml_blob;
17711  ds3_string_multimap* return_headers = NULL;
17712 
17713  if (request->path->size < 2) {
17714  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17715  }
17716 
17717  xml_blob = g_byte_array_new();
17718  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17719  if (error != NULL) {
17720  ds3_string_multimap_free(return_headers);
17721  g_byte_array_free(xml_blob, TRUE);
17722  return error;
17723  }
17724 
17725  error = _parse_top_level_ds3_storage_domain_member_list_response(client, request, response, xml_blob);
17726 
17727  (*response)->paging = _parse_paging_headers(return_headers);
17728  ds3_string_multimap_free(return_headers);
17729 
17730  return error;
17731 }
17733  ds3_error* error;
17734  GByteArray* xml_blob;
17735 
17736  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17737  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17738  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17739  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17740  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17741  }
17742 
17743  xml_blob = g_byte_array_new();
17744  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17745  if (error != NULL) {
17746  g_byte_array_free(xml_blob, TRUE);
17747  return error;
17748  }
17749 
17750  return _parse_top_level_ds3_storage_domain_response(client, request, response, xml_blob);
17751 }
17753  ds3_error* error;
17754  GByteArray* xml_blob;
17755  ds3_string_multimap* return_headers = NULL;
17756 
17757  if (request->path->size < 2) {
17758  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17759  }
17760 
17761  xml_blob = g_byte_array_new();
17762  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17763  if (error != NULL) {
17764  ds3_string_multimap_free(return_headers);
17765  g_byte_array_free(xml_blob, TRUE);
17766  return error;
17767  }
17768 
17769  error = _parse_top_level_ds3_storage_domain_list_response(client, request, response, xml_blob);
17770 
17771  (*response)->paging = _parse_paging_headers(return_headers);
17772  ds3_string_multimap_free(return_headers);
17773 
17774  return error;
17775 }
17777  ds3_error* error;
17778  GByteArray* xml_blob;
17779 
17780  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17781  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17782  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17783  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17784  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17785  }
17786 
17787  xml_blob = g_byte_array_new();
17788  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17789  if (error != NULL) {
17790  g_byte_array_free(xml_blob, TRUE);
17791  return error;
17792  }
17793 
17794  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
17795 }
17797  ds3_error* error;
17798  GByteArray* xml_blob;
17799 
17800  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17801  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17802  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17803  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17804  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17805  }
17806 
17807  xml_blob = g_byte_array_new();
17808  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17809  if (error != NULL) {
17810  g_byte_array_free(xml_blob, TRUE);
17811  return error;
17812  }
17813 
17814  return _parse_top_level_ds3_storage_domain_response(client, request, response, xml_blob);
17815 }
17817 
17818  if (request->path->size < 2) {
17819  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17820  }
17821 
17822  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17823 }
17825  ds3_error* error;
17826  GByteArray* xml_blob;
17827  ds3_string_multimap* return_headers = NULL;
17828 
17829  if (request->path->size < 2) {
17830  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17831  }
17832 
17833  xml_blob = g_byte_array_new();
17834  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17835  if (error != NULL) {
17836  ds3_string_multimap_free(return_headers);
17837  g_byte_array_free(xml_blob, TRUE);
17838  return error;
17839  }
17840 
17841  error = _parse_top_level_ds3_feature_key_list_response(client, request, response, xml_blob);
17842 
17843  (*response)->paging = _parse_paging_headers(return_headers);
17844  ds3_string_multimap_free(return_headers);
17845 
17846  return error;
17847 }
17849  ds3_error* error;
17850  GByteArray* xml_blob;
17851  ds3_string_multimap* return_headers = NULL;
17852 
17853  if (request->path->size < 2) {
17854  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17855  }
17856 
17857  xml_blob = g_byte_array_new();
17858  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
17859  if (error != NULL) {
17860  ds3_string_multimap_free(return_headers);
17861  g_byte_array_free(xml_blob, TRUE);
17862  return error;
17863  }
17864 
17865  error = _parse_top_level_ds3_system_failure_list_response(client, request, response, xml_blob);
17866 
17867  (*response)->paging = _parse_paging_headers(return_headers);
17868  ds3_string_multimap_free(return_headers);
17869 
17870  return error;
17871 }
17873  ds3_error* error;
17874  GByteArray* xml_blob;
17875 
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_system_information_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_data_path_backend_response(client, request, response, xml_blob);
17903 }
17905  ds3_error* error;
17906  GByteArray* xml_blob;
17907 
17908 
17909 
17910  xml_blob = g_byte_array_new();
17911  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17912  if (error != NULL) {
17913  g_byte_array_free(xml_blob, TRUE);
17914  return error;
17915  }
17916 
17917  return _parse_top_level_ds3_health_verification_result_response(client, request, response, xml_blob);
17918 }
17920  ds3_error* error;
17921  GByteArray* xml_blob;
17922 
17923  if (request->path->size < 2) {
17924  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17925  }
17926 
17927  xml_blob = g_byte_array_new();
17928  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17929  if (error != NULL) {
17930  g_byte_array_free(xml_blob, TRUE);
17931  return error;
17932  }
17933 
17934  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17935 }
17937  ds3_error* error;
17938  GByteArray* xml_blob;
17939 
17940  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17941  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17942  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17943  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17944  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17945  }
17946 
17947  xml_blob = g_byte_array_new();
17948  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17949  if (error != NULL) {
17950  g_byte_array_free(xml_blob, TRUE);
17951  return error;
17952  }
17953 
17954  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17955 }
17957  ds3_error* error;
17958  GByteArray* xml_blob;
17959 
17960  if (request->path->size < 2) {
17961  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17962  }
17963 
17964  xml_blob = g_byte_array_new();
17965  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17966  if (error != NULL) {
17967  g_byte_array_free(xml_blob, TRUE);
17968  return error;
17969  }
17970 
17971  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17972 }
17974  ds3_error* error;
17975  GByteArray* xml_blob;
17976 
17977  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17978  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17979  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17980  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17981  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17982  }
17983 
17984  xml_blob = g_byte_array_new();
17985  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17986  if (error != NULL) {
17987  g_byte_array_free(xml_blob, TRUE);
17988  return error;
17989  }
17990 
17991  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17992 }
17994  ds3_error* error;
17995  GByteArray* xml_blob;
17996 
17997  if (request->path->size < 2) {
17998  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17999  }
18000 
18001  xml_blob = g_byte_array_new();
18002  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18003  if (error != NULL) {
18004  g_byte_array_free(xml_blob, TRUE);
18005  return error;
18006  }
18007 
18008  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18009 }
18011  ds3_error* error;
18012  GByteArray* xml_blob;
18013 
18014  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18015  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18016  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18017  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18018  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18019  }
18020 
18021  xml_blob = g_byte_array_new();
18022  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18023  if (error != NULL) {
18024  g_byte_array_free(xml_blob, TRUE);
18025  return error;
18026  }
18027 
18028  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18029 }
18031  ds3_error* error;
18032  GByteArray* xml_blob;
18033 
18034  if (request->path->size < 2) {
18035  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18036  }
18037 
18038  xml_blob = g_byte_array_new();
18039  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18040  if (error != NULL) {
18041  g_byte_array_free(xml_blob, TRUE);
18042  return error;
18043  }
18044 
18045  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18046 }
18048  ds3_error* error;
18049  GByteArray* xml_blob;
18050 
18051  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18052  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18053  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18054  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18055  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18056  }
18057 
18058  xml_blob = g_byte_array_new();
18059  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18060  if (error != NULL) {
18061  g_byte_array_free(xml_blob, TRUE);
18062  return error;
18063  }
18064 
18065  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18066 }
18068  ds3_error* error;
18069  GByteArray* xml_blob;
18070 
18071  if (request->path->size < 2) {
18072  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18073  }
18074 
18075  xml_blob = g_byte_array_new();
18076  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18077  if (error != NULL) {
18078  g_byte_array_free(xml_blob, TRUE);
18079  return error;
18080  }
18081 
18082  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18083 }
18085  ds3_error* error;
18086  GByteArray* xml_blob;
18087 
18088  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18089  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18090  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18091  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18092  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18093  }
18094 
18095  xml_blob = g_byte_array_new();
18096  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18097  if (error != NULL) {
18098  g_byte_array_free(xml_blob, TRUE);
18099  return error;
18100  }
18101 
18102  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18103 }
18105  ds3_error* error;
18106  GByteArray* xml_blob;
18107 
18108  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18109  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18110  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18111  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18112  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18113  }
18114 
18115  xml_blob = g_byte_array_new();
18116  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18117  if (error != NULL) {
18118  g_byte_array_free(xml_blob, TRUE);
18119  return error;
18120  }
18121 
18122  return _parse_top_level_ds3_tape_drive_response(client, request, response, xml_blob);
18123 }
18125  ds3_error* error;
18126  GByteArray* xml_blob;
18127 
18128  if (request->path->size < 2) {
18129  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18130  }
18131 
18132  xml_blob = g_byte_array_new();
18133  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18134  if (error != NULL) {
18135  g_byte_array_free(xml_blob, TRUE);
18136  return error;
18137  }
18138 
18139  return _parse_top_level_ds3_tape_density_directive_response(client, request, response, xml_blob);
18140 }
18142 
18143  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18144  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18145  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18146  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18147  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18148  }
18149 
18150  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18151 }
18153 
18154  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18155  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18156  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18157  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18158  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18159  }
18160 
18161  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18162 }
18164 
18165  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18166  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18167  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18168  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18169  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18170  }
18171 
18172  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18173 }
18175 
18176  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18177  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18178  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18179  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18180  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18181  }
18182 
18183  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18184 }
18186 
18187  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18188  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18189  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18190  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18191  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18192  }
18193 
18194  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18195 }
18197 
18198  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18199  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18200  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18201  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18202  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18203  }
18204 
18205  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18206 }
18208  ds3_error* error;
18209  GByteArray* xml_blob;
18210 
18211  if (request->path->size < 2) {
18212  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18213  }
18214 
18215  xml_blob = g_byte_array_new();
18216  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18217  if (error != NULL) {
18218  g_byte_array_free(xml_blob, TRUE);
18219  return error;
18220  }
18221 
18222  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18223 }
18225  ds3_error* error;
18226  ds3_xml_send_buff send_buff;
18227 
18228  if (request->path->size < 2) {
18229  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18230  }
18231 
18232  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
18233  if (error != NULL) return error;
18234 
18235  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
18236 
18237  // Clean up the data sent to the server
18238  xmlFree(send_buff.buff);
18239 
18240  return error;
18241 }
18243  ds3_error* error;
18244  GByteArray* xml_blob;
18245 
18246  if (request->path->size < 2) {
18247  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18248  }
18249 
18250  xml_blob = g_byte_array_new();
18251  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18252  if (error != NULL) {
18253  g_byte_array_free(xml_blob, TRUE);
18254  return error;
18255  }
18256 
18257  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18258 }
18260  ds3_error* error;
18261  GByteArray* xml_blob;
18262 
18263  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18264  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18265  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18266  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18267  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18268  }
18269 
18270  xml_blob = g_byte_array_new();
18271  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18272  if (error != NULL) {
18273  g_byte_array_free(xml_blob, TRUE);
18274  return error;
18275  }
18276 
18277  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18278 }
18280 
18281 
18282 
18283  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18284 }
18286  ds3_error* error;
18287  GByteArray* xml_blob;
18288 
18289  if (request->path->size < 2) {
18290  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18291  }
18292 
18293  xml_blob = g_byte_array_new();
18294  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18295  if (error != NULL) {
18296  g_byte_array_free(xml_blob, TRUE);
18297  return error;
18298  }
18299 
18300  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18301 }
18303  ds3_error* error;
18304  GByteArray* xml_blob;
18305 
18306  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18307  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18308  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18309  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18310  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18311  }
18312 
18313  xml_blob = g_byte_array_new();
18314  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18315  if (error != NULL) {
18316  g_byte_array_free(xml_blob, TRUE);
18317  return error;
18318  }
18319 
18320  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18321 }
18323  ds3_error* error;
18324  GByteArray* xml_blob;
18325  ds3_string_multimap* return_headers = NULL;
18326 
18327  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18328  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18329  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18330  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18331  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18332  }
18333 
18334  xml_blob = g_byte_array_new();
18335  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18336  if (error != NULL) {
18337  ds3_string_multimap_free(return_headers);
18338  g_byte_array_free(xml_blob, TRUE);
18339  return error;
18340  }
18341 
18342  error = _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
18343 
18344  (*response)->paging = _parse_paging_headers(return_headers);
18345  ds3_string_multimap_free(return_headers);
18346 
18347  return error;
18348 }
18350  ds3_error* error;
18351  GByteArray* xml_blob;
18352 
18353  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18354  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18355  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18356  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18357  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18358  }
18359 
18360  xml_blob = g_byte_array_new();
18361  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18362  if (error != NULL) {
18363  g_byte_array_free(xml_blob, TRUE);
18364  return error;
18365  }
18366 
18367  return _parse_top_level_ds3_tape_density_directive_response(client, request, response, xml_blob);
18368 }
18370  ds3_error* error;
18371  GByteArray* xml_blob;
18372  ds3_string_multimap* return_headers = NULL;
18373 
18374  if (request->path->size < 2) {
18375  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18376  }
18377 
18378  xml_blob = g_byte_array_new();
18379  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18380  if (error != NULL) {
18381  ds3_string_multimap_free(return_headers);
18382  g_byte_array_free(xml_blob, TRUE);
18383  return error;
18384  }
18385 
18386  error = _parse_top_level_ds3_tape_density_directive_list_response(client, request, response, xml_blob);
18387 
18388  (*response)->paging = _parse_paging_headers(return_headers);
18389  ds3_string_multimap_free(return_headers);
18390 
18391  return error;
18392 }
18394  ds3_error* error;
18395  GByteArray* xml_blob;
18396 
18397  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18398  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18399  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18400  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18401  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18402  }
18403 
18404  xml_blob = g_byte_array_new();
18405  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18406  if (error != NULL) {
18407  g_byte_array_free(xml_blob, TRUE);
18408  return error;
18409  }
18410 
18411  return _parse_top_level_ds3_tape_drive_response(client, request, response, xml_blob);
18412 }
18414  ds3_error* error;
18415  GByteArray* xml_blob;
18416  ds3_string_multimap* return_headers = NULL;
18417 
18418  if (request->path->size < 2) {
18419  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18420  }
18421 
18422  xml_blob = g_byte_array_new();
18423  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18424  if (error != NULL) {
18425  ds3_string_multimap_free(return_headers);
18426  g_byte_array_free(xml_blob, TRUE);
18427  return error;
18428  }
18429 
18430  error = _parse_top_level_ds3_tape_drive_list_response(client, request, response, xml_blob);
18431 
18432  (*response)->paging = _parse_paging_headers(return_headers);
18433  ds3_string_multimap_free(return_headers);
18434 
18435  return error;
18436 }
18438  ds3_error* error;
18439  GByteArray* xml_blob;
18440  ds3_string_multimap* return_headers = NULL;
18441 
18442  if (request->path->size < 2) {
18443  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18444  }
18445 
18446  xml_blob = g_byte_array_new();
18447  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18448  if (error != NULL) {
18449  ds3_string_multimap_free(return_headers);
18450  g_byte_array_free(xml_blob, TRUE);
18451  return error;
18452  }
18453 
18454  error = _parse_top_level_ds3_detailed_tape_failure_list_response(client, request, response, xml_blob);
18455 
18456  (*response)->paging = _parse_paging_headers(return_headers);
18457  ds3_string_multimap_free(return_headers);
18458 
18459  return error;
18460 }
18462  ds3_error* error;
18463  GByteArray* xml_blob;
18464  ds3_string_multimap* return_headers = NULL;
18465 
18466  if (request->path->size < 2) {
18467  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18468  }
18469 
18470  xml_blob = g_byte_array_new();
18471  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18472  if (error != NULL) {
18473  ds3_string_multimap_free(return_headers);
18474  g_byte_array_free(xml_blob, TRUE);
18475  return error;
18476  }
18477 
18478  error = _parse_top_level_ds3_tape_library_list_response(client, request, response, xml_blob);
18479 
18480  (*response)->paging = _parse_paging_headers(return_headers);
18481  ds3_string_multimap_free(return_headers);
18482 
18483  return error;
18484 }
18486  ds3_error* error;
18487  GByteArray* xml_blob;
18488 
18489  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18490  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18491  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18492  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18493  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18494  }
18495 
18496  xml_blob = g_byte_array_new();
18497  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18498  if (error != NULL) {
18499  g_byte_array_free(xml_blob, TRUE);
18500  return error;
18501  }
18502 
18503  return _parse_top_level_ds3_tape_library_response(client, request, response, xml_blob);
18504 }
18506  ds3_error* error;
18507  GByteArray* xml_blob;
18508  ds3_string_multimap* return_headers = NULL;
18509 
18510  if (request->path->size < 2) {
18511  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18512  }
18513 
18514  xml_blob = g_byte_array_new();
18515  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18516  if (error != NULL) {
18517  ds3_string_multimap_free(return_headers);
18518  g_byte_array_free(xml_blob, TRUE);
18519  return error;
18520  }
18521 
18522  error = _parse_top_level_ds3_tape_partition_failure_list_response(client, request, response, xml_blob);
18523 
18524  (*response)->paging = _parse_paging_headers(return_headers);
18525  ds3_string_multimap_free(return_headers);
18526 
18527  return error;
18528 }
18530  ds3_error* error;
18531  GByteArray* xml_blob;
18532 
18533  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18534  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18535  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18536  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18537  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18538  }
18539 
18540  xml_blob = g_byte_array_new();
18541  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18542  if (error != NULL) {
18543  g_byte_array_free(xml_blob, TRUE);
18544  return error;
18545  }
18546 
18547  return _parse_top_level_ds3_tape_partition_response(client, request, response, xml_blob);
18548 }
18550  ds3_error* error;
18551  GByteArray* xml_blob;
18552 
18553  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18554  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18555  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18556  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18557  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18558  }
18559 
18560  xml_blob = g_byte_array_new();
18561  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18562  if (error != NULL) {
18563  g_byte_array_free(xml_blob, TRUE);
18564  return error;
18565  }
18566 
18567  return _parse_top_level_ds3_detailed_tape_partition_response(client, request, response, xml_blob);
18568 }
18570  ds3_error* error;
18571  GByteArray* xml_blob;
18572  ds3_string_multimap* return_headers = NULL;
18573 
18574  if (request->path->size < 2) {
18575  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type 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, &return_headers);
18580  if (error != NULL) {
18581  ds3_string_multimap_free(return_headers);
18582  g_byte_array_free(xml_blob, TRUE);
18583  return error;
18584  }
18585 
18586  error = _parse_top_level_ds3_tape_partition_list_response(client, request, response, xml_blob);
18587 
18588  (*response)->paging = _parse_paging_headers(return_headers);
18589  ds3_string_multimap_free(return_headers);
18590 
18591  return error;
18592 }
18594  ds3_error* error;
18595  GByteArray* xml_blob;
18596  ds3_string_multimap* return_headers = NULL;
18597 
18598  if (request->path->size < 2) {
18599  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18600  }
18601 
18602  xml_blob = g_byte_array_new();
18603  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18604  if (error != NULL) {
18605  ds3_string_multimap_free(return_headers);
18606  g_byte_array_free(xml_blob, TRUE);
18607  return error;
18608  }
18609 
18610  error = _parse_top_level_ds3_named_detailed_tape_partition_list_response(client, request, response, xml_blob);
18611 
18612  (*response)->paging = _parse_paging_headers(return_headers);
18613  ds3_string_multimap_free(return_headers);
18614 
18615  return error;
18616 }
18618  ds3_error* error;
18619  GByteArray* xml_blob;
18620 
18621  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18622  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18623  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18624  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18625  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18626  }
18627 
18628  xml_blob = g_byte_array_new();
18629  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18630  if (error != NULL) {
18631  g_byte_array_free(xml_blob, TRUE);
18632  return error;
18633  }
18634 
18635  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18636 }
18638  ds3_error* error;
18639  GByteArray* xml_blob;
18640  ds3_string_multimap* return_headers = NULL;
18641 
18642  if (request->path->size < 2) {
18643  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18644  }
18645 
18646  xml_blob = g_byte_array_new();
18647  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18648  if (error != NULL) {
18649  ds3_string_multimap_free(return_headers);
18650  g_byte_array_free(xml_blob, TRUE);
18651  return error;
18652  }
18653 
18654  error = _parse_top_level_ds3_tape_list_response(client, request, response, xml_blob);
18655 
18656  (*response)->paging = _parse_paging_headers(return_headers);
18657  ds3_string_multimap_free(return_headers);
18658 
18659  return error;
18660 }
18662 
18663  if (request->path->size < 2) {
18664  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18665  }
18666 
18667  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18668 }
18670  ds3_error* error;
18671  GByteArray* xml_blob;
18672 
18673  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18674  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18675  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18676  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18677  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id 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_response(client, request, response, xml_blob);
18688 }
18690  ds3_error* error;
18691  GByteArray* xml_blob;
18692 
18693  if (request->path->size < 2) {
18694  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18695  }
18696 
18697  xml_blob = g_byte_array_new();
18698  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18699  if (error != NULL) {
18700  g_byte_array_free(xml_blob, TRUE);
18701  return error;
18702  }
18703 
18704  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18705 }
18707  ds3_error* error;
18708  GByteArray* xml_blob;
18709 
18710  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18711  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18712  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18713  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18714  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18715  }
18716 
18717  xml_blob = g_byte_array_new();
18718  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18719  if (error != NULL) {
18720  g_byte_array_free(xml_blob, TRUE);
18721  return error;
18722  }
18723 
18724  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18725 }
18727 
18728  if (request->path->size < 2) {
18729  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18730  }
18731 
18732  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18733 }
18735  ds3_error* error;
18736  GByteArray* xml_blob;
18737 
18738  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18739  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18740  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18741  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18742  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18743  }
18744 
18745  xml_blob = g_byte_array_new();
18746  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18747  if (error != NULL) {
18748  g_byte_array_free(xml_blob, TRUE);
18749  return error;
18750  }
18751 
18752  return _parse_top_level_ds3_tape_drive_response(client, request, response, xml_blob);
18753 }
18755  ds3_error* error;
18756  GByteArray* xml_blob;
18757 
18758  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18759  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18760  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18761  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18762  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18763  }
18764 
18765  xml_blob = g_byte_array_new();
18766  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18767  if (error != NULL) {
18768  g_byte_array_free(xml_blob, TRUE);
18769  return error;
18770  }
18771 
18772  return _parse_top_level_ds3_tape_partition_response(client, request, response, xml_blob);
18773 }
18775  ds3_error* error;
18776  GByteArray* xml_blob;
18777 
18778  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18779  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18780  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18781  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18782  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18783  }
18784 
18785  xml_blob = g_byte_array_new();
18786  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18787  if (error != NULL) {
18788  g_byte_array_free(xml_blob, TRUE);
18789  return error;
18790  }
18791 
18792  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18793 }
18795  ds3_error* error;
18796  GByteArray* xml_blob;
18797 
18798  if (request->path->size < 2) {
18799  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18800  }
18801 
18802  xml_blob = g_byte_array_new();
18803  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18804  if (error != NULL) {
18805  g_byte_array_free(xml_blob, TRUE);
18806  return error;
18807  }
18808 
18809  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18810 }
18812  ds3_error* error;
18813  GByteArray* xml_blob;
18814 
18815  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18816  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18817  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18818  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18819  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18820  }
18821 
18822  xml_blob = g_byte_array_new();
18823  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18824  if (error != NULL) {
18825  g_byte_array_free(xml_blob, TRUE);
18826  return error;
18827  }
18828 
18829  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18830 }
18832 
18833  if (request->path->size < 2) {
18834  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18835  }
18836 
18837  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18838 }
18840  ds3_error* error;
18841  GByteArray* xml_blob;
18842 
18843  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18844  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18845  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18846  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18847  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18848  }
18849 
18850  xml_blob = g_byte_array_new();
18851  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18852  if (error != NULL) {
18853  g_byte_array_free(xml_blob, TRUE);
18854  return error;
18855  }
18856 
18857  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18858 }
18860  ds3_error* error;
18861  GByteArray* xml_blob;
18862 
18863  if (request->path->size < 2) {
18864  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18865  }
18866 
18867  xml_blob = g_byte_array_new();
18868  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18869  if (error != NULL) {
18870  g_byte_array_free(xml_blob, TRUE);
18871  return error;
18872  }
18873 
18874  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
18875 }
18877  ds3_error* error;
18878  GByteArray* xml_blob;
18879 
18880  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18881  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18882  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18883  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18884  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18885  }
18886 
18887  xml_blob = g_byte_array_new();
18888  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18889  if (error != NULL) {
18890  g_byte_array_free(xml_blob, TRUE);
18891  return error;
18892  }
18893 
18894  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
18895 }
18897 
18898  if (request->path->size < 2) {
18899  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18900  }
18901 
18902  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18903 }
18905  ds3_error* error;
18906  GByteArray* xml_blob;
18907 
18908  if (request->path->size < 2) {
18909  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18910  }
18911 
18912  xml_blob = g_byte_array_new();
18913  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18914  if (error != NULL) {
18915  g_byte_array_free(xml_blob, TRUE);
18916  return error;
18917  }
18918 
18919  return _parse_top_level_ds3_azure_target_bucket_name_response(client, request, response, xml_blob);
18920 }
18922  ds3_error* error;
18923  GByteArray* xml_blob;
18924 
18925  if (request->path->size < 2) {
18926  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18927  }
18928 
18929  xml_blob = g_byte_array_new();
18930  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
18931  if (error != NULL) {
18932  g_byte_array_free(xml_blob, TRUE);
18933  return error;
18934  }
18935 
18936  return _parse_top_level_ds3_azure_target_read_preference_response(client, request, response, xml_blob);
18937 }
18939 
18940  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18941  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18942  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18943  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18944  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18945  }
18946 
18947  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18948 }
18950 
18951  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18952  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18953  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18954  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18955  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18956  }
18957 
18958  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18959 }
18961 
18962  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18963  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18964  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18965  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18966  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18967  }
18968 
18969  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18970 }
18972 
18973  int num_slashes = num_chars_in_ds3_str(request->path, '/');
18974  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
18975  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18976  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
18977  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
18978  }
18979 
18980  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
18981 }
18983  ds3_error* error;
18984  GByteArray* xml_blob;
18985  ds3_string_multimap* return_headers = NULL;
18986 
18987  if (request->path->size < 2) {
18988  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
18989  }
18990 
18991  xml_blob = g_byte_array_new();
18992  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
18993  if (error != NULL) {
18994  ds3_string_multimap_free(return_headers);
18995  g_byte_array_free(xml_blob, TRUE);
18996  return error;
18997  }
18998 
18999  error = _parse_top_level_ds3_azure_target_bucket_name_list_response(client, request, response, xml_blob);
19000 
19001  (*response)->paging = _parse_paging_headers(return_headers);
19002  ds3_string_multimap_free(return_headers);
19003 
19004  return error;
19005 }
19007  ds3_error* error;
19008  GByteArray* xml_blob;
19009  ds3_string_multimap* return_headers = NULL;
19010 
19011  if (request->path->size < 2) {
19012  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19013  }
19014 
19015  xml_blob = g_byte_array_new();
19016  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19017  if (error != NULL) {
19018  ds3_string_multimap_free(return_headers);
19019  g_byte_array_free(xml_blob, TRUE);
19020  return error;
19021  }
19022 
19023  error = _parse_top_level_ds3_azure_target_failure_list_response(client, request, response, xml_blob);
19024 
19025  (*response)->paging = _parse_paging_headers(return_headers);
19026  ds3_string_multimap_free(return_headers);
19027 
19028  return error;
19029 }
19031  ds3_error* error;
19032  GByteArray* xml_blob;
19033 
19034  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19035  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19036  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19037  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19038  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19039  }
19040 
19041  xml_blob = g_byte_array_new();
19042  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19043  if (error != NULL) {
19044  g_byte_array_free(xml_blob, TRUE);
19045  return error;
19046  }
19047 
19048  return _parse_top_level_ds3_azure_target_read_preference_response(client, request, response, xml_blob);
19049 }
19051  ds3_error* error;
19052  GByteArray* xml_blob;
19053  ds3_string_multimap* return_headers = NULL;
19054 
19055  if (request->path->size < 2) {
19056  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19057  }
19058 
19059  xml_blob = g_byte_array_new();
19060  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19061  if (error != NULL) {
19062  ds3_string_multimap_free(return_headers);
19063  g_byte_array_free(xml_blob, TRUE);
19064  return error;
19065  }
19066 
19067  error = _parse_top_level_ds3_azure_target_read_preference_list_response(client, request, response, xml_blob);
19068 
19069  (*response)->paging = _parse_paging_headers(return_headers);
19070  ds3_string_multimap_free(return_headers);
19071 
19072  return error;
19073 }
19075  ds3_error* error;
19076  GByteArray* xml_blob;
19077 
19078  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19079  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19080  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19081  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19082  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19083  }
19084 
19085  xml_blob = g_byte_array_new();
19086  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19087  if (error != NULL) {
19088  g_byte_array_free(xml_blob, TRUE);
19089  return error;
19090  }
19091 
19092  return _parse_top_level_ds3_azure_target_response(client, request, response, xml_blob);
19093 }
19095  ds3_error* error;
19096  GByteArray* xml_blob;
19097  ds3_string_multimap* return_headers = NULL;
19098 
19099  if (request->path->size < 2) {
19100  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19101  }
19102 
19103  xml_blob = g_byte_array_new();
19104  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19105  if (error != NULL) {
19106  ds3_string_multimap_free(return_headers);
19107  g_byte_array_free(xml_blob, TRUE);
19108  return error;
19109  }
19110 
19111  error = _parse_top_level_ds3_azure_target_list_response(client, request, response, xml_blob);
19112 
19113  (*response)->paging = _parse_paging_headers(return_headers);
19114  ds3_string_multimap_free(return_headers);
19115 
19116  return error;
19117 }
19119  ds3_error* error;
19120  GByteArray* xml_blob;
19121 
19122  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19123  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19124  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19125  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19126  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19127  }
19128 
19129  xml_blob = g_byte_array_new();
19130  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19131  if (error != NULL) {
19132  g_byte_array_free(xml_blob, TRUE);
19133  return error;
19134  }
19135 
19136  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
19137 }
19139 
19140  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19141  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19142  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19143  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19144  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19145  }
19146 
19147  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19148 }
19150 
19151  if (request->path->size < 2) {
19152  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19153  }
19154 
19155  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19156 }
19158  ds3_error* error;
19159  GByteArray* xml_blob;
19160 
19161  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19162  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19163  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19164  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19165  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19166  }
19167 
19168  xml_blob = g_byte_array_new();
19169  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19170  if (error != NULL) {
19171  g_byte_array_free(xml_blob, TRUE);
19172  return error;
19173  }
19174 
19175  return _parse_top_level_ds3_azure_target_response(client, request, response, xml_blob);
19176 }
19178  ds3_error* error;
19179  GByteArray* xml_blob;
19180 
19181  if (request->path->size < 2) {
19182  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19183  }
19184 
19185  xml_blob = g_byte_array_new();
19186  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19187  if (error != NULL) {
19188  g_byte_array_free(xml_blob, TRUE);
19189  return error;
19190  }
19191 
19192  return _parse_top_level_ds3_azure_target_response(client, request, response, xml_blob);
19193 }
19195  ds3_error* error;
19196  GByteArray* xml_blob;
19197 
19198  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19199  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19200  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19201  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19202  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19203  }
19204 
19205  xml_blob = g_byte_array_new();
19206  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19207  if (error != NULL) {
19208  g_byte_array_free(xml_blob, TRUE);
19209  return error;
19210  }
19211 
19212  return _parse_top_level_ds3_azure_target_response(client, request, response, xml_blob);
19213 }
19215  ds3_error* error;
19216  GByteArray* xml_blob;
19217 
19218  if (request->path->size < 2) {
19219  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19220  }
19221 
19222  xml_blob = g_byte_array_new();
19223  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19224  if (error != NULL) {
19225  g_byte_array_free(xml_blob, TRUE);
19226  return error;
19227  }
19228 
19229  return _parse_top_level_ds3_target_read_preference_response(client, request, response, xml_blob);
19230 }
19232 
19233  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19234  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19235  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19236  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19237  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19238  }
19239 
19240  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19241 }
19243 
19244  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19245  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19246  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19247  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19248  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19249  }
19250 
19251  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19252 }
19254 
19255  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19256  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19257  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19258  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19259  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19260  }
19261 
19262  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19263 }
19265  ds3_error* error;
19266  GByteArray* xml_blob;
19267 
19268  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19269  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19270  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19271  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19272  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19273  }
19274 
19275  xml_blob = g_byte_array_new();
19276  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19277  if (error != NULL) {
19278  g_byte_array_free(xml_blob, TRUE);
19279  return error;
19280  }
19281 
19282  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
19283 }
19285  ds3_error* error;
19286  GByteArray* xml_blob;
19287 
19288  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19289  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19290  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19291  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19292  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19293  }
19294 
19295  xml_blob = g_byte_array_new();
19296  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19297  if (error != NULL) {
19298  g_byte_array_free(xml_blob, TRUE);
19299  return error;
19300  }
19301 
19302  return _parse_top_level_ds3_data_policy_list_response(client, request, response, xml_blob);
19303 }
19305  ds3_error* error;
19306  GByteArray* xml_blob;
19307  ds3_string_multimap* return_headers = NULL;
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, &return_headers);
19315  if (error != NULL) {
19316  ds3_string_multimap_free(return_headers);
19317  g_byte_array_free(xml_blob, TRUE);
19318  return error;
19319  }
19320 
19321  error = _parse_top_level_ds3_target_failure_list_response(client, request, response, xml_blob);
19322 
19323  (*response)->paging = _parse_paging_headers(return_headers);
19324  ds3_string_multimap_free(return_headers);
19325 
19326  return error;
19327 }
19329  ds3_error* error;
19330  GByteArray* xml_blob;
19331 
19332  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19333  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19334  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19335  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19336  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19337  }
19338 
19339  xml_blob = g_byte_array_new();
19340  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19341  if (error != NULL) {
19342  g_byte_array_free(xml_blob, TRUE);
19343  return error;
19344  }
19345 
19346  return _parse_top_level_ds3_target_read_preference_response(client, request, response, xml_blob);
19347 }
19349  ds3_error* error;
19350  GByteArray* xml_blob;
19351  ds3_string_multimap* return_headers = NULL;
19352 
19353  if (request->path->size < 2) {
19354  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19355  }
19356 
19357  xml_blob = g_byte_array_new();
19358  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19359  if (error != NULL) {
19360  ds3_string_multimap_free(return_headers);
19361  g_byte_array_free(xml_blob, TRUE);
19362  return error;
19363  }
19364 
19365  error = _parse_top_level_ds3_target_read_preference_list_response(client, request, response, xml_blob);
19366 
19367  (*response)->paging = _parse_paging_headers(return_headers);
19368  ds3_string_multimap_free(return_headers);
19369 
19370  return error;
19371 }
19373  ds3_error* error;
19374  GByteArray* xml_blob;
19375 
19376  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19377  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19378  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19379  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19380  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19381  }
19382 
19383  xml_blob = g_byte_array_new();
19384  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19385  if (error != NULL) {
19386  g_byte_array_free(xml_blob, TRUE);
19387  return error;
19388  }
19389 
19390  return _parse_top_level_ds3_target_response(client, request, response, xml_blob);
19391 }
19393  ds3_error* error;
19394  GByteArray* xml_blob;
19395  ds3_string_multimap* return_headers = NULL;
19396 
19397  if (request->path->size < 2) {
19398  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19399  }
19400 
19401  xml_blob = g_byte_array_new();
19402  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19403  if (error != NULL) {
19404  ds3_string_multimap_free(return_headers);
19405  g_byte_array_free(xml_blob, TRUE);
19406  return error;
19407  }
19408 
19409  error = _parse_top_level_ds3_target_list_response(client, request, response, xml_blob);
19410 
19411  (*response)->paging = _parse_paging_headers(return_headers);
19412  ds3_string_multimap_free(return_headers);
19413 
19414  return error;
19415 }
19417 
19418  if (request->path->size < 2) {
19419  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19420  }
19421 
19422  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19423 }
19425  ds3_error* error;
19426  GByteArray* xml_blob;
19427 
19428  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19429  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19430  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19431  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19432  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19433  }
19434 
19435  xml_blob = g_byte_array_new();
19436  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19437  if (error != NULL) {
19438  g_byte_array_free(xml_blob, TRUE);
19439  return error;
19440  }
19441 
19442  return _parse_top_level_ds3_target_response(client, request, response, xml_blob);
19443 }
19445 
19446  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19447  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19448  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19449  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19450  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19451  }
19452 
19453  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19454 }
19456  ds3_error* error;
19457  GByteArray* xml_blob;
19458 
19459  if (request->path->size < 2) {
19460  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19461  }
19462 
19463  xml_blob = g_byte_array_new();
19464  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19465  if (error != NULL) {
19466  g_byte_array_free(xml_blob, TRUE);
19467  return error;
19468  }
19469 
19470  return _parse_top_level_ds3_target_response(client, request, response, xml_blob);
19471 }
19473  ds3_error* error;
19474  GByteArray* xml_blob;
19475 
19476  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19477  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19478  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19479  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19480  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19481  }
19482 
19483  xml_blob = g_byte_array_new();
19484  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19485  if (error != NULL) {
19486  g_byte_array_free(xml_blob, TRUE);
19487  return error;
19488  }
19489 
19490  return _parse_top_level_ds3_target_response(client, request, response, xml_blob);
19491 }
19493  ds3_error* error;
19494  GByteArray* xml_blob;
19495 
19496  if (request->path->size < 2) {
19497  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19498  }
19499 
19500  xml_blob = g_byte_array_new();
19501  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19502  if (error != NULL) {
19503  g_byte_array_free(xml_blob, TRUE);
19504  return error;
19505  }
19506 
19507  return _parse_top_level_ds3_s3_target_bucket_name_response(client, request, response, xml_blob);
19508 }
19510  ds3_error* error;
19511  GByteArray* xml_blob;
19512 
19513  if (request->path->size < 2) {
19514  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19515  }
19516 
19517  xml_blob = g_byte_array_new();
19518  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19519  if (error != NULL) {
19520  g_byte_array_free(xml_blob, TRUE);
19521  return error;
19522  }
19523 
19524  return _parse_top_level_ds3_s3_target_read_preference_response(client, request, response, xml_blob);
19525 }
19527 
19528  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19529  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19530  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19531  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19532  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19533  }
19534 
19535  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19536 }
19538 
19539  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19540  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19541  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19542  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19543  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19544  }
19545 
19546  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19547 }
19549 
19550  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19551  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19552  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19553  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19554  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19555  }
19556 
19557  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19558 }
19560 
19561  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19562  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19563  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19564  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19565  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19566  }
19567 
19568  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19569 }
19571  ds3_error* error;
19572  GByteArray* xml_blob;
19573 
19574  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19575  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19576  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19577  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19578  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19579  }
19580 
19581  xml_blob = g_byte_array_new();
19582  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19583  if (error != NULL) {
19584  g_byte_array_free(xml_blob, TRUE);
19585  return error;
19586  }
19587 
19588  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
19589 }
19591  ds3_error* error;
19592  GByteArray* xml_blob;
19593  ds3_string_multimap* return_headers = NULL;
19594 
19595  if (request->path->size < 2) {
19596  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19597  }
19598 
19599  xml_blob = g_byte_array_new();
19600  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19601  if (error != NULL) {
19602  ds3_string_multimap_free(return_headers);
19603  g_byte_array_free(xml_blob, TRUE);
19604  return error;
19605  }
19606 
19607  error = _parse_top_level_ds3_s3_target_bucket_name_list_response(client, request, response, xml_blob);
19608 
19609  (*response)->paging = _parse_paging_headers(return_headers);
19610  ds3_string_multimap_free(return_headers);
19611 
19612  return error;
19613 }
19615  ds3_error* error;
19616  GByteArray* xml_blob;
19617  ds3_string_multimap* return_headers = NULL;
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, &return_headers);
19625  if (error != NULL) {
19626  ds3_string_multimap_free(return_headers);
19627  g_byte_array_free(xml_blob, TRUE);
19628  return error;
19629  }
19630 
19631  error = _parse_top_level_ds3_s3_target_failure_list_response(client, request, response, xml_blob);
19632 
19633  (*response)->paging = _parse_paging_headers(return_headers);
19634  ds3_string_multimap_free(return_headers);
19635 
19636  return error;
19637 }
19639  ds3_error* error;
19640  GByteArray* xml_blob;
19641 
19642  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19643  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19644  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19645  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19646  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19647  }
19648 
19649  xml_blob = g_byte_array_new();
19650  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19651  if (error != NULL) {
19652  g_byte_array_free(xml_blob, TRUE);
19653  return error;
19654  }
19655 
19656  return _parse_top_level_ds3_s3_target_read_preference_response(client, request, response, xml_blob);
19657 }
19659  ds3_error* error;
19660  GByteArray* xml_blob;
19661  ds3_string_multimap* return_headers = NULL;
19662 
19663  if (request->path->size < 2) {
19664  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19665  }
19666 
19667  xml_blob = g_byte_array_new();
19668  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19669  if (error != NULL) {
19670  ds3_string_multimap_free(return_headers);
19671  g_byte_array_free(xml_blob, TRUE);
19672  return error;
19673  }
19674 
19675  error = _parse_top_level_ds3_s3_target_read_preference_list_response(client, request, response, xml_blob);
19676 
19677  (*response)->paging = _parse_paging_headers(return_headers);
19678  ds3_string_multimap_free(return_headers);
19679 
19680  return error;
19681 }
19683  ds3_error* error;
19684  GByteArray* xml_blob;
19685 
19686  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19687  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19688  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19689  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19690  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19691  }
19692 
19693  xml_blob = g_byte_array_new();
19694  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19695  if (error != NULL) {
19696  g_byte_array_free(xml_blob, TRUE);
19697  return error;
19698  }
19699 
19700  return _parse_top_level_ds3_s3_target_response(client, request, response, xml_blob);
19701 }
19703  ds3_error* error;
19704  GByteArray* xml_blob;
19705  ds3_string_multimap* return_headers = NULL;
19706 
19707  if (request->path->size < 2) {
19708  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19709  }
19710 
19711  xml_blob = g_byte_array_new();
19712  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19713  if (error != NULL) {
19714  ds3_string_multimap_free(return_headers);
19715  g_byte_array_free(xml_blob, TRUE);
19716  return error;
19717  }
19718 
19719  error = _parse_top_level_ds3_s3_target_list_response(client, request, response, xml_blob);
19720 
19721  (*response)->paging = _parse_paging_headers(return_headers);
19722  ds3_string_multimap_free(return_headers);
19723 
19724  return error;
19725 }
19727 
19728  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19729  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19730  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19731  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19732  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19733  }
19734 
19735  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19736 }
19738 
19739  if (request->path->size < 2) {
19740  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19741  }
19742 
19743  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19744 }
19746  ds3_error* error;
19747  GByteArray* xml_blob;
19748 
19749  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19750  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19751  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19752  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19753  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19754  }
19755 
19756  xml_blob = g_byte_array_new();
19757  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19758  if (error != NULL) {
19759  g_byte_array_free(xml_blob, TRUE);
19760  return error;
19761  }
19762 
19763  return _parse_top_level_ds3_s3_target_response(client, request, response, xml_blob);
19764 }
19766  ds3_error* error;
19767  GByteArray* xml_blob;
19768 
19769  if (request->path->size < 2) {
19770  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19771  }
19772 
19773  xml_blob = g_byte_array_new();
19774  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19775  if (error != NULL) {
19776  g_byte_array_free(xml_blob, TRUE);
19777  return error;
19778  }
19779 
19780  return _parse_top_level_ds3_s3_target_response(client, request, response, xml_blob);
19781 }
19783  ds3_error* error;
19784  GByteArray* xml_blob;
19785 
19786  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19787  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19788  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19789  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19790  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19791  }
19792 
19793  xml_blob = g_byte_array_new();
19794  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19795  if (error != NULL) {
19796  g_byte_array_free(xml_blob, TRUE);
19797  return error;
19798  }
19799 
19800  return _parse_top_level_ds3_s3_target_response(client, request, response, xml_blob);
19801 }
19803  ds3_error* error;
19804  GByteArray* xml_blob;
19805 
19806  if (request->path->size < 2) {
19807  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19808  }
19809 
19810  xml_blob = g_byte_array_new();
19811  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19812  if (error != NULL) {
19813  g_byte_array_free(xml_blob, TRUE);
19814  return error;
19815  }
19816 
19817  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
19818 }
19820 
19821  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19822  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19823  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19824  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19825  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19826  }
19827 
19828  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
19829 }
19831  ds3_error* error;
19832  GByteArray* xml_blob;
19833 
19834  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19835  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19836  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19837  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19838  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19839  }
19840 
19841  xml_blob = g_byte_array_new();
19842  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19843  if (error != NULL) {
19844  g_byte_array_free(xml_blob, TRUE);
19845  return error;
19846  }
19847 
19848  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
19849 }
19851  ds3_error* error;
19852  GByteArray* xml_blob;
19853  ds3_string_multimap* return_headers = NULL;
19854 
19855  if (request->path->size < 2) {
19856  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19857  }
19858 
19859  xml_blob = g_byte_array_new();
19860  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, &return_headers);
19861  if (error != NULL) {
19862  ds3_string_multimap_free(return_headers);
19863  g_byte_array_free(xml_blob, TRUE);
19864  return error;
19865  }
19866 
19867  error = _parse_top_level_ds3_spectra_user_list_response(client, request, response, xml_blob);
19868 
19869  (*response)->paging = _parse_paging_headers(return_headers);
19870  ds3_string_multimap_free(return_headers);
19871 
19872  return error;
19873 }
19875  ds3_error* error;
19876  GByteArray* xml_blob;
19877 
19878  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19879  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19880  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19881  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19882  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19883  }
19884 
19885  xml_blob = g_byte_array_new();
19886  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19887  if (error != NULL) {
19888  g_byte_array_free(xml_blob, TRUE);
19889  return error;
19890  }
19891 
19892  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
19893 }
19895  ds3_error* error;
19896  GByteArray* xml_blob;
19897 
19898  int num_slashes = num_chars_in_ds3_str(request->path, '/');
19899  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
19900  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
19901  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
19902  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
19903  }
19904 
19905  xml_blob = g_byte_array_new();
19906  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
19907  if (error != NULL) {
19908  g_byte_array_free(xml_blob, TRUE);
19909  return error;
19910  }
19911 
19912  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
19913 }
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:73
void ds3_target_failure_notification_registration_response_free(ds3_target_failure_notification_registration_response *response)
Definition: ds3.c:860
void ds3_cache_filesystem_response_free(ds3_cache_filesystem_response *response)
Definition: ds3.c:1060
uint64_t length
Definition: ds3.h:648
int offline_data_staging_window_in_tb
Definition: ds3.h:1327
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:820
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:2176
static ds3_storage_domain_failure_type _match_ds3_storage_domain_failure_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:772
ds3_suspect_blob_ds3_target_response ** suspect_blob_ds3_targets
Definition: ds3.h:1663
ds3_bool canceled_due_to_timeout
Definition: ds3.h:671
ds3_storage_domain_failure_notification_registration_response ** storage_domain_failure_notification_registrations
Definition: ds3.h:1768
ds3_priority default_get_job_priority
Definition: ds3.h:738
ds3_node_response ** nodes
Definition: ds3.h:1713
ds3_pool_response ** pools
Definition: ds3.h:1932
ds3_str * last_accessed
Definition: ds3.h:1127
ds3_str * name
Definition: ds3.h:856
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:837
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:1478
ds3_str * name
Definition: ds3.h:838
ds3_tape_state previous_state
Definition: ds3.h:1186
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)
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:1101
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:2094
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:964
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:1597
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:2526
void ds3_group_list_response_free(ds3_group_list_response *response)
Definition: ds3.c:2078
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:732
ds3_reserved_task_type reserved_task_type
Definition: ds3.h:1211
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:1242
ds3_str * eject_pending
Definition: ds3.h:1177
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:1182
void ds3_completed_job_response_free(ds3_completed_job_response *response)
Definition: ds3.c:588
ds3_tape_partition_response ** tape_partitions
Definition: ds3.h:1853
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:2680
uint64_t original_size_in_bytes
Definition: ds3.h:2011
ds3_s3_initial_data_placement_policy
Definition: ds3.h:185
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:710
ds3_data_placement_rule_state state
Definition: ds3.h:727
ds3_write_preference_level
Definition: ds3.h:241
void ds3_degraded_blob_list_response_free(ds3_degraded_blob_list_response *response)
Definition: ds3.c:1966
void ds3_tape_failure_response_free(ds3_tape_failure_response *response)
Definition: ds3.c:1790
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:954
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:295
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:784
ds3_bulk_object_list_response * blobs
Definition: ds3.h:2081
ds3_job_request_type request_type
Definition: ds3.h:2013
ds3_user_response * owner
Definition: ds3.h:2075
ds3_bool powered_on
Definition: ds3.h:1133
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:658
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:824
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:2232
ds3_s3_object_to_delete_response ** deleted_objects
Definition: ds3.h:1994
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:2765
static ds3_s3_region _match_ds3_s3_region(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:740
ds3_job_request_type
Definition: ds3.h:171
size_t size
Definition: ds3_string.h:28
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:1181
void ds3_tape_response_free(ds3_tape_response *response)
Definition: ds3.c:1136
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:745
void ds3_s3_target_failure_notification_registration_list_response_free(ds3_s3_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2274
ds3_str * type
Definition: ds3.h:1192
ds3_storage_domain_capacity_summary_response * tape
Definition: ds3.h:1941
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:909
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:2148
void ds3_azure_target_failure_list_response_free(ds3_azure_target_failure_list_response *response)
Definition: ds3.c:2582
ds3_write_optimization write_optimization
Definition: ds3.h:873
ds3_tape_library_response ** tape_libraries
Definition: ds3.h:1843
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:698
ds3_bucket_acl_permission permission
Definition: ds3.h:665
ds3_bool dead_job_cleanup_allowed
Definition: ds3.h:799
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)
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:80
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:1628
void ds3_group_response_free(ds3_group_response *response)
Definition: ds3.c:687
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:701
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:608
void ds3_pool_list_response_free(ds3_pool_list_response *response)
Definition: ds3.c:2372
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:801
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_str * id
Definition: ds3.h:1126
uint64_t auto_eject_media_full_threshold
Definition: ds3.h:860
ds3_quiesced quiesced
Definition: ds3.h:1210
xmlDocPtr ds3_generate_xml_complete_mpu(const ds3_complete_multipart_upload_response *mpu_list)
Definition: ds3_requests.c:427
ds3_data_replication_rule_type type
Definition: ds3.h:771
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:675
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:836
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:812
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:720
ds3_checksum_type
Definition: ds3.h:620
uint64_t available_raw_capacity
Definition: ds3.h:1170
ds3_str * job_id
Definition: ds3.h:822
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:2008
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)
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:719
ds3_data_replication_rule_type type
Definition: ds3.h:641
ds3_str * eject_date
Definition: ds3.h:1174
ds3_str * error_message
Definition: ds3.h:1234
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:683
ds3_database_physical_space_state
Definition: ds3.h:595
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:711
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:1923
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:2003
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:778
ds3_bucket_response ** buckets
Definition: ds3.h:1618
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:1873
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:2044
ds3_str * user_id
Definition: ds3.h:2016
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:1209
ds3_feature_key_response ** feature_keys
Definition: ds3.h:1818
ds3_detailed_s3_object_response ** detailed_s3_objects
Definition: ds3.h:2101
ds3_str * secret_key
Definition: ds3.h:1336
ds3_str * last_modified
Definition: ds3.h:1128
ds3_bool cleaning_required
Definition: ds3.h:1203
ds3_cache_entry_state state
Definition: ds3.h:1474
uint64_t byte_offset
Definition: ds3.h:644
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:237
ds3_data_placement_rule_state state
Definition: ds3.h:847
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:862
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:1783
static ds3_priority _match_ds3_priority(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:572
ds3_request_type
Definition: ds3.h:606
ds3_target_state state
Definition: ds3.h:1265
ds3_bool data_path_https
Definition: ds3.h:1291
ds3_auto_inspect_mode auto_inspect
Definition: ds3.h:709
ds3_data_placement_rule_state state
Definition: ds3.h:768
ds3_priority priority
Definition: ds3.h:699
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:1369
void ds3_data_replication_rule_list_response_free(ds3_data_replication_rule_list_response *response)
Definition: ds3.c:1938
ds3_str * data_path_ip_address
Definition: ds3.h:834
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:647
void ds3_azure_target_read_preference_response_free(ds3_azure_target_read_preference_response *response)
Definition: ds3.c:1276
ds3_tape_drive_type
Definition: ds3.h:305
void ds3_target_failure_notification_registration_list_response_free(ds3_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2162
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:1507
ds3_str * replicated_user_default_data_policy
Definition: ds3.h:1300
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:1643
ds3_import_export_configuration import_export_configuration
Definition: ds3.h:1236
ds3_target_failure_type
Definition: ds3.h:411
ds3_multipart_upload_part_response ** parts
Definition: ds3.h:106
ds3_str * last_accessed
Definition: ds3.h:1180
ds3_str * mountpoint
Definition: ds3.h:1130
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:832
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:1073
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:615
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:1763
ds3_job_response ** jobs
Definition: ds3.h:2049
int max_tape_fragmentation_percent
Definition: ds3.h:867
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:692
static uint64_t xml_get_uint64(xmlDocPtr doc, xmlNodePtr child_node)
Definition: ds3_requests.c:262
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:444
void ds3_azure_target_list_response_free(ds3_azure_target_list_response *response)
Definition: ds3.c:2610
ds3_target_failure_notification_registration_response ** ds3_target_failure_notification_registrations
Definition: ds3.h:1723
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:58
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:2788
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 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:2512
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:864
ds3_str * group_id
Definition: ds3.h:663
ds3_str * error_message
Definition: ds3.h:1305
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:2596
ds3_str * persistence_rule_id
Definition: ds3.h:761
ds3_bool media_ejection_allowed
Definition: ds3.h:869
ds3_error * ds3_truncate_all_active_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_str * id
Definition: ds3.h:783
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:1858
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:2922
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:1172
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:1328
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:1878
ds3_log * log
Definition: ds3.h:2148
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:829
uint64_t completed_size_in_bytes
Definition: ds3.h:2031
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)
ds3_contents_response ** versioned_objects
Definition: ds3.h:2118
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:1472
void ds3_s3_object_cached_notification_registration_list_response_free(ds3_s3_object_cached_notification_registration_list_response *response)
Definition: ds3.c:2218
struct _ds3_metadata ds3_metadata
Definition: ds3.h:62
void ds3_azure_target_response_free(ds3_azure_target_response *response)
Definition: ds3.c:1237
static int num_chars_in_ds3_str(const ds3_str *const str, char ch)
Definition: ds3_requests.c:347
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:2009
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:2010
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:1175
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:1996
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:2990
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:2004
ds3_suspect_blob_pool_response ** suspect_blob_pools
Definition: ds3.h:1668
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:1215
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:1940
ds3_str * bucket_id
Definition: ds3.h:1123
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:688
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:885
Definition: ds3_bool.h:24
ds3_naming_convention_type naming_convention
Definition: ds3.h:1025
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:1828
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_str * version_id
Definition: ds3.h:2078
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:717
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:1308
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:659
ds3_s3_object_type
Definition: ds3.h:191
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:967
void ds3_list_all_my_buckets_result_response_free(ds3_list_all_my_buckets_result_response *response)
Definition: ds3.c:2872
ds3_s3_object_lost_notification_registration_response ** s3_object_lost_notification_registrations
Definition: ds3.h:1748
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:1263
static ds3_unavailable_media_usage_policy _match_ds3_unavailable_media_usage_policy(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:812
ds3_str * job_creation_date
Definition: ds3.h:821
ds3_priority verify_prior_to_auto_eject
Definition: ds3.h:872
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:808
ds3_str * error_message
Definition: ds3.h:676
void ds3_tapes_must_be_onlined_response_free(ds3_tapes_must_be_onlined_response *response)
Definition: ds3.c:1558
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:1854
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)
xmlDocPtr ds3_generate_xml_bulk_objects_list(const ds3_bulk_object_list_response *obj_list, object_list_type list_type)
Definition: ds3_requests.c:393
ds3_bool blobbing_enabled
Definition: ds3.h:734
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:274
ds3_bool force_tape_removal
Definition: ds3.h:1205
ds3_pool_failure_type type
Definition: ds3.h:1147
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:1254
void ds3_job_creation_failed_notification_registration_response_free(ds3_job_creation_failed_notification_registration_response *response)
Definition: ds3.c:918
void ds3_s3_target_read_preference_list_response_free(ds3_s3_target_read_preference_list_response *response)
Definition: ds3.c:2694
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:2316
ds3_str * display_name
Definition: ds3.h:1550
void ds3_s3_target_failure_notification_registration_response_free(ds3_s3_target_failure_notification_registration_response *response)
Definition: ds3.c:990
void ds3_bucket_response_free(ds3_bucket_response *response)
Definition: ds3.c:547
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:133
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:646
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:1297
void ds3_detailed_s3_object_list_response_free(ds3_detailed_s3_object_list_response *response)
Definition: ds3.c:3044
ds3_str * end_point
Definition: ds3.h:1541
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:866
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:1579
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:718
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:1479
static uint16_t xml_get_uint16(xmlDocPtr doc, xmlNodePtr child_node)
Definition: ds3_requests.c:246
ds3_azure_target_response ** azure_targets
Definition: ds3.h:1883
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:1356
ds3_physical_placement_response * physical_placement
Definition: ds3.h:1951
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:930
ds3_priority default_put_job_priority
Definition: ds3.h:739
ds3_str * group_id
Definition: ds3.h:787
ds3_naming_convention_type naming_convention
Definition: ds3.h:931
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:946
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:1519
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:2442
void ds3_azure_data_replication_rule_list_response_free(ds3_azure_data_replication_rule_list_response *response)
Definition: ds3.c:1896
ds3_pool_partition_response ** pool_partitions
Definition: ds3.h:1793
static uint64_t xml_get_uint64_from_attribute(xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3_requests.c:274
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:868
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:1187
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:1345
ds3_str * user_name
Definition: ds3.h:2017
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:1136
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:360
ds3_s3_target_failure_response ** s3_target_failures
Definition: ds3.h:1908
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:590
void ds3_health_verification_result_response_free(ds3_health_verification_result_response *response)
Definition: ds3.c:1763
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:2134
static size_t _ds3_send_xml_buff(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3_requests.c:315
ds3_str * proxy_host
Definition: ds3.h:1330
void ds3_tape_failure_list_response_free(ds3_tape_failure_list_response *response)
Definition: ds3.c:1800
uint64_t used_capacity
Definition: ds3.h:1140
uint64_t max_capacity_in_bytes
Definition: ds3.h:1115
ds3_str * cloud_bucket_prefix
Definition: ds3.h:1256
void ds3_named_detailed_tape_partition_list_response_free(ds3_named_detailed_tape_partition_list_response *response)
Definition: ds3.c:2540
uint64_t cached_size_in_bytes
Definition: ds3.h:689
uint64_t completed_size_in_bytes
Definition: ds3.h:691
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:2470
ds3_http_response_format_type format
Definition: ds3.h:926
static ds3_feature_key_type _match_ds3_feature_key_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:650
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:835
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:1091
static ds3_tape_failure_type _match_ds3_tape_failure_type(const ds3_log *log, const xmlChar *text)
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:2007
ds3_reserved_task_type
Definition: ds3.h:283
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:224
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:662
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:2014
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:2038
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:2092
void ds3_s3_object_list_response_free(ds3_s3_object_list_response *response)
Definition: ds3.c:2050
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_job_restore _match_ds3_job_restore(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:694
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:1899
ds3_str * azure_replication_rule_id
Definition: ds3.h:756
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:2638
void ds3_metadata_entry_free(ds3_metadata_entry *entry)
Definition: ds3_requests.c:203
ds3_feature_key_type key
Definition: ds3.h:778
void ds3_data_path_backend_response_free(ds3_data_path_backend_response *response)
Definition: ds3.c:604
uint64_t num_values
Definition: ds3.h:54
ds3_s3_data_replication_rule_response ** s3_data_replication_rules
Definition: ds3.h:1648
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:1301
void ds3_storage_domain_failure_notification_registration_response_free(ds3_storage_domain_failure_notification_registration_response *response)
Definition: ds3.c:1004
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:1329
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:1176
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:855
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:1288
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:730
ds3_str * rechunked
Definition: ds3.h:682
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:846
ds3_data_policy_acl_response ** data_policy_acls
Definition: ds3.h:1613
void ds3_azure_target_bucket_name_response_free(ds3_azure_target_bucket_name_response *response)
Definition: ds3.c:1252
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:736
ds3_pool_response ** pools
Definition: ds3.h:1798
ds3_s3_target_read_preference_response ** s3_target_read_preferences
Definition: ds3.h:1913
ds3_str * mfg_serial_number
Definition: ds3.h:1208
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:2057
ds3_system_failure_response ** system_failures
Definition: ds3.h:1823
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:857
ds3_metadata_keys_result * ds3_metadata_keys(const ds3_metadata *_metadata)
Definition: ds3_requests.c:162
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:1292
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:807
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:2554
ds3_bucket_acl_response ** bucket_acls
Definition: ds3.h:1608
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:1144
ds3_bool end_to_end_crc_required
Definition: ds3.h:742
ds3_str * storage_class
Definition: ds3.h:2077
object_list_type
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:707
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:1562
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:1086
ds3_job_chunk_client_processing_order_guarantee
Definition: ds3.h:167
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:2775
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:278
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:637
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:1178
ds3_s3_region
Definition: ds3.h:195
void ds3_storage_domain_failure_notification_registration_list_response_free(ds3_storage_domain_failure_notification_registration_list_response *response)
Definition: ds3.c:2288
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:1290
ds3_cache_filesystem_information_response ** filesystems
Definition: ds3.h:1487
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:498
ds3_str * creation_date
Definition: ds3.h:652
void ds3_suspect_blob_ds3_target_list_response_free(ds3_suspect_blob_ds3_target_list_response *response)
Definition: ds3.c:1994
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:779
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:655
uint64_t cached_size_in_bytes
Definition: ds3.h:2002
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:1314
ds3_str * node_id
Definition: ds3.h:823
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:694
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:1544
ds3_delete_objects_response * delete_objects
Definition: ds3_request.h:45
ds3_target_read_preference_type
Definition: ds3.h:421
static uint64_t xml_get_uint16_from_attribute(xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3_requests.c:258
ds3_job_status status
Definition: ds3.h:2015
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_uint64_string_map * blob_checksums
Definition: ds3.h:631
ds3_str ** values
Definition: ds3.h:53
ds3_str * last_fully_verified
Definition: ds3.h:1325
static ds3_tape_partition_state _match_ds3_tape_partition_state(const ds3_log *log, const xmlChar *text)
ds3_tape_response * tape
Definition: ds3.h:1585
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:649
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:1124
xmlDocPtr ds3_generate_xml_ids(ds3_ids_list *ids_list)
Definition: ds3_requests.c:477
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:1331
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:333
uint64_t completed_size_in_bytes
Definition: ds3.h:797
ds3_str * data_path_proxy
Definition: ds3.h:1293
ds3_str * name
Definition: ds3.h:1326
ds3_bool is_latest
Definition: ds3.h:2072
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:43
ds3_bool always_minimize_spanning_across_media
Definition: ds3.h:733
ds3_str * error_message
Definition: ds3.h:1204
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:2024
ds3_http_response_format_type
Definition: ds3.h:601
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:1451
ds3_data_placement_rule_state
Definition: ds3.h:150
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:1803
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:1658
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)
ds3_str * storage_domain_member_id
Definition: ds3.h:1189
void ds3_complete_multipart_upload_result_response_free(ds3_complete_multipart_upload_result_response *response)
Definition: ds3.c:1648
ds3_http_response_format_type format
Definition: ds3.h:993
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:2302
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:1673
ds3_data_placement_rule_state state
Definition: ds3.h:639
ds3_str * read_from_ds3_target_id
Definition: ds3.h:826
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:1633
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:2414
ds3_quiesced quiesced
Definition: ds3.h:1264
ds3_str * expiration_date
Definition: ds3.h:776
ds3_bool auto_compaction_enabled
Definition: ds3.h:1232
void ds3_detailed_tape_partition_response_free(ds3_detailed_tape_partition_response *response)
Definition: ds3.c:1671
ds3_storage_domain_response ** storage_domains
Definition: ds3.h:1813
ds3_bool default_verify_data_prior_to_import
Definition: ds3.h:712
ds3_str * s3_replication_rule_id
Definition: ds3.h:762
ds3_str * date_completed
Definition: ds3.h:693
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:902
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:846
uint64_t num_keys
Definition: ds3.h:59
Definition: ds3.h:51
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:2246
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:560
ds3_str * last_verified
Definition: ds3.h:1183
ds3_naming_convention_type naming_convention
Definition: ds3.h:998
ds3_str * bucket_id
Definition: ds3.h:794
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:433
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:889
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:1116
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:660
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:1213
ds3_priority
Definition: ds3.h:125
ds3_bool assigned_to_storage_domain
Definition: ds3.h:1169
ds3_str * user_id
Definition: ds3.h:685
void ds3_pool_failure_notification_registration_list_response_free(ds3_pool_failure_notification_registration_list_response *response)
Definition: ds3.c:2260
ds3_bool write_protected
Definition: ds3.h:1194
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:145
ds3_naming_convention_type
Definition: ds3.h:613
ds3_pool_failure_response ** pool_failures
Definition: ds3.h:1788
ds3_bool take_ownership_pending
Definition: ds3.h:1190
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:1934
ds3_completed_job_response ** completed_jobs
Definition: ds3.h:1708
ds3_job_request_type request_type
Definition: ds3.h:2042
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:1323
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:1132
ds3_suspect_blob_tape_response ** suspect_blob_tapes
Definition: ds3.h:1678
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:3058
ds3_str * key
Definition: ds3.h:2073
ds3_target_response ** ds3_targets
Definition: ds3.h:1898
ds3_naming_convention_type naming_convention
Definition: ds3.h:959
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:794
ds3_str * read_from_azure_target_id
Definition: ds3.h:825
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:729
ds3_str ** strings_list
Definition: ds3.h:111
The public definitions for the Spectra S3 C SDK.
ds3_job_request_type request_type
Definition: ds3.h:810
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:932
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:836
void ds3_s3_object_persisted_notification_registration_response_free(ds3_s3_object_persisted_notification_registration_response *response)
Definition: ds3.c:975
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:1335
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:905
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:892
void ds3_feature_key_list_response_free(ds3_feature_key_list_response *response)
Definition: ds3.c:2428
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:803
ds3_priority priority
Definition: ds3.h:2012
ds3_str * bucket_name
Definition: ds3.h:2001
void ds3_s3_target_bucket_name_list_response_free(ds3_s3_target_bucket_name_list_response *response)
Definition: ds3.c:2666
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:1200
void ds3_tape_partition_failure_notification_registration_response_free(ds3_tape_partition_failure_notification_registration_response *response)
Definition: ds3.c:1046
ds3_job_creation_failed_notification_registration_response ** job_creation_failed_notification_registrations
Definition: ds3.h:1738
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_error * ds3_undelete_object_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_response **response)
ds3_str * proxy_username
Definition: ds3.h:1333
ds3_error * ds3_delete_object_request(const ds3_client *client, const ds3_request *request)
ds3_bool implicit_job_id_resolution
Definition: ds3.h:802
void ds3_s3_data_replication_rule_response_free(ds3_s3_data_replication_rule_response *response)
Definition: ds3.c:755
ds3_target_failure_type type
Definition: ds3.h:1351
uint64_t reserved_capacity
Definition: ds3.h:1135
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:1596
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:1134
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:1773
ds3_str * id
Definition: ds3.h:1324
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 * storage_domain_member_id
Definition: ds3.h:1137
ds3_str * id
Definition: ds3.h:1551
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:2000
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:2903
ds3_str * ds3_replication_rule_id
Definition: ds3.h:759
void ds3_tape_density_directive_response_free(ds3_tape_density_directive_response *response)
Definition: ds3.c:1161
void ds3_job_chunk_response_free(ds3_job_chunk_response *response)
Definition: ds3.c:724
ds3_str * admin_secret_key
Definition: ds3.h:1289
ds3_str * creation_date
Definition: ds3.h:853
ds3_str * name
Definition: ds3.h:52
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:690
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:1278
void ds3_node_response_free(ds3_node_response *response)
Definition: ds3.c:741
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:1313
ds3_bool verify_after_write
Definition: ds3.h:815
ds3_target_access_control_replication access_control_replication
Definition: ds3.h:1287
ds3_job_completed_notification_registration_response ** job_completed_notification_registrations
Definition: ds3.h:1728
ds3_write_preference_level write_preference
Definition: ds3.h:895
ds3_tape_drive_state
Definition: ds3.h:299
ds3_error * ds3_stage_objects_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
void ds3_cache_filesystem_list_response_free(ds3_cache_filesystem_list_response *response)
Definition: ds3.c:1882
ds3_s3_initial_data_placement_policy initial_data_placement
Definition: ds3.h:844
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:645
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:833
ds3_blob_response * blob
Definition: ds3.h:1473
ds3_multi_part_upload_response ** uploads
Definition: ds3.h:2133
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:190
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:440
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:737
static ds3_job_request_type _match_ds3_job_request_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:682
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:1610
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:654
ds3_error * ds3_get_object_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_response **response)
Definition: ds3_bool.h:24
ds3_str * serial_number
Definition: ds3.h:1212
ds3_str * last_modified
Definition: ds3.h:2074
#define STRING_BUFFER_SIZE
Definition: ds3_requests.c:45
ds3_tape_partition_failure_response ** tape_partition_failures
Definition: ds3.h:1848
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:1334
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:809
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:2023
ds3_str * description_for_identification
Definition: ds3.h:1173
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:1214
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:1903
ds3_str * rechunked
Definition: ds3.h:700
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:709
ds3_versioning_level versioning
Definition: ds3.h:747
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:67
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:818
static bool element_equal(const xmlNodePtr xml_node, const char *element_name)
Definition: ds3_requests.c:242
uint64_t size
Definition: ds3.h:2076
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:42
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:1227
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:1758
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:2400
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:2071
ds3_bool built_in
Definition: ds3.h:782
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:1338
ds3_tape_partition_state state
Definition: ds3.h:1243
ds3_bool aggregating
Definition: ds3.h:793
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:2059
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:684
static ds3_error * _parse_ds3_pool_partition_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_partition_response **_response)
xmlDocPtr ds3_generate_xml_delete_objects(ds3_delete_objects_response *keys_list)
Definition: ds3_requests.c:454
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:871
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:849
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:1888
ds3_error * ds3_head_object_request(const ds3_client *client, const ds3_request *request, ds3_head_object_response **response)
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:657
ds3_ids_list * ids
Definition: ds3_request.h:48
ds3_target_access_control_replication
Definition: ds3.h:407
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:1588
void ds3_cache_entry_information_response_free(ds3_cache_entry_information_response *response)
Definition: ds3.c:1601
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:972
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:1463
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:125
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:560
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:1250
ds3_import_export_configuration import_export_configuration
Definition: ds3.h:1512
int auto_verify_frequency_in_days
Definition: ds3.h:1255
ds3_priority verify_pending
Definition: ds3.h:1193
void ds3_contents_response_free(ds3_contents_response *response)
Definition: ds3.c:3002
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:666
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:920
void ds3_s3_object_response_free(ds3_s3_object_response *response)
Definition: ds3.c:766
void ds3_storage_domain_member_response_free(ds3_storage_domain_member_response *response)
Definition: ds3.c:809
ds3_str * version_id
Definition: ds3.h:1952
ds3_str * creation_date
Definition: ds3.h:1491
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:390
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:1952
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:904
size_t num_deleted_objects
Definition: ds3.h:1995
void ds3_string_multimap_free(ds3_string_multimap *map)
ds3_import_export_configuration import_export_configuration
Definition: ds3.h:1572
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:1139
ds3_http_response_format_type format
Definition: ds3.h:1020
void ds3_job_created_notification_registration_response_free(ds3_job_created_notification_registration_response *response)
Definition: ds3.c:904
uint64_t cached_size_in_bytes
Definition: ds3.h:670
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:828
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:2008
ds3_tape_drive_response ** tape_drives
Definition: ds3.h:1833
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:804
ds3_priority priority
Definition: ds3.h:681
ds3_tape_state state
Definition: ds3.h:1188
static ds3_str * xml_get_string(xmlDocPtr doc, xmlNodePtr child_node)
Definition: ds3_requests.c:278
ds3_active_job_response ** active_jobs
Definition: ds3.h:1698
ds3_tape_failure_response ** failures
Definition: ds3.h:1588
ds3_tape_state
Definition: ds3.h:361
ds3_quiesced quiesced
Definition: ds3.h:1299
ds3_str * data_policy_id
Definition: ds3.h:653
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:1121
ds3_checksum_type * get_blob_checksum_type(const ds3_log *log, ds3_string_multimap *response_headers)
ds3_str * id
Definition: ds3.h:1296
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:1743
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:2973
ds3_str * auto_eject_upon_cron
Definition: ds3.h:861
ds3_azure_target_bucket_name_response ** azure_target_bucket_names
Definition: ds3.h:1868
ds3_priority rebuild_priority
Definition: ds3.h:746
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:1623
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:291
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:656
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:1753
void ds3_group_member_list_response_free(ds3_group_member_list_response *response)
Definition: ds3.c:2064
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:1257
ds3_str * id
Definition: ds3.h:664
ds3_str * partition_id
Definition: ds3.h:1185
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:315
ds3_str * cloud_bucket_suffix
Definition: ds3.h:1320
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)
ds3_job_restore restore
Definition: ds3.h:811
void ds3_bucket_list_response_free(ds3_bucket_list_response *response)
Definition: ds3.c:1868
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:899
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:1703
ds3_data_isolation_level isolation_level
Definition: ds3.h:725
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:262
ds3_azure_target_failure_notification_registration_response ** azure_target_failure_notification_registrations
Definition: ds3.h:1718
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:716
static ds3_bool xml_get_bool(const ds3_log *log, xmlDocPtr doc, const xmlNodePtr xml_node)
Definition: ds3_requests.c:295
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:1138
ds3_data_policy_response ** data_policies
Definition: ds3.h:1638
void ds3_cache_information_response_free(ds3_cache_information_response *response)
Definition: ds3.c:1625
ds3_str * account_key
Definition: ds3.h:1253
ds3_group_member_response ** group_members
Definition: ds3.h:1688
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:2722
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_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:1283
void ds3_pool_response_free(ds3_pool_response *response)
Definition: ds3.c:1071
void ds3_group_member_response_free(ds3_group_member_response *response)
Definition: ds3.c:697
ds3_feature_key_type
Definition: ds3.h:158
ds3_str * serial_number
Definition: ds3.h:839
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:750
ds3_system_failure_type
Definition: ds3.h:219
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:1321
ds3_str * name
Definition: ds3.h:805
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:1223
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:1122
ds3_bool truncated_due_to_timeout
Definition: ds3.h:813
void ds3_job_creation_failed_notification_registration_list_response_free(ds3_job_creation_failed_notification_registration_list_response *response)
Definition: ds3.c:2204
int staged_data_expiration_in_days
Definition: ds3.h:1337
ds3_str * created_at
Definition: ds3.h:674
ds3_job_restore
Definition: ds3.h:176
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:154
void ds3_bucket_acl_list_response_free(ds3_bucket_acl_list_response *response)
Definition: ds3.c:1840
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:2006
void ds3_azure_data_replication_rule_response_free(ds3_azure_data_replication_rule_response *response)
Definition: ds3.c:525
void ds3_tape_failure_notification_registration_response_free(ds3_tape_failure_notification_registration_response *response)
Definition: ds3.c:1032
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:669
ds3_str * last_verified
Definition: ds3.h:1129
ds3_str * read_from_pool_id
Definition: ds3.h:827
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:1295
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:852
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:1693
uint64_t completed_size_in_bytes
Definition: ds3.h:673
void ds3_pool_failure_list_response_free(ds3_pool_failure_list_response *response)
Definition: ds3.c:2344
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:672
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:1131
void ds3_data_policy_response_free(ds3_data_policy_response *response)
Definition: ds3.c:626
ds3_ltfs_file_naming_mode
Definition: ds3.h:181
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:1928
ds3_storage_domain_member_state
Definition: ds3.h:215
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:1317
ds3_checksum_type checksum_type
Definition: ds3.h:735
static ds3_storage_domain_member_state _match_ds3_storage_domain_member_state(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:784
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:210
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:1838
uint64_t original_size_in_bytes
Definition: ds3.h:806
void ds3_detailed_s3_object_response_free(ds3_detailed_s3_object_response *response)
Definition: ds3.c:3016
ds3_storage_domain_member_response ** storage_domain_members
Definition: ds3.h:1808
ds3_error * ds3_delete_tape_partition_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_quiesced quiesced
Definition: ds3.h:1241
ds3_pool_health health
Definition: ds3.h:1125
ds3_job_created_notification_registration_response ** job_created_notification_registrations
Definition: ds3.h:1733
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:2005
int total_result_count
Definition: ds3.h:44
ds3_bool auto_eject_upon_job_completion
Definition: ds3.h:863
uint64_t original_size_in_bytes
Definition: ds3.h:680
ds3_tape_partition_state
Definition: ds3.h:356
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:3085
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:1508
ds3_naming_convention_type naming_convention
Definition: ds3.h:1012
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:1322
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:232
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:758
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:154
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:640
static ds3_tape_drive_type _match_ds3_tape_drive_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:978
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:429
ds3_tape_drive_type drive_type
Definition: ds3.h:1233
int number_of_type
Definition: ds3.h:1598
ds3_bool data_path_verify_certificate
Definition: ds3.h:1294
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:412
int num_strings
Definition: ds3.h:117
ds3_bucket_details_response ** buckets
Definition: ds3.h:1989
void ds3_s3_object_lost_notification_registration_response_free(ds3_s3_object_lost_notification_registration_response *response)
Definition: ds3.c:961
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:790
void ds3_target_response_free(ds3_target_response *response)
Definition: ds3.c:1287
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:1563
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:1184
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:162
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:141
void ds3_s3_target_list_response_free(ds3_s3_target_list_response *response)
Definition: ds3.c:2708
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:1207
ds3_pool_type type
Definition: ds3.h:1152
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:2386
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:796
void ds3_master_object_list_response_free(ds3_master_object_list_response *response)
Definition: ds3.c:2937
static void _ds3_metadata_entry_free(gpointer pointer)
Definition: ds3_requests.c:52
ds3_str * user_id
Definition: ds3.h:814
void ds3_target_failure_list_response_free(ds3_target_failure_list_response *response)
Definition: ds3.c:2624
ds3_bool permit_going_out_of_sync
Definition: ds3.h:1298
int auto_verify_frequency_in_days
Definition: ds3.h:1318
void ds3_target_list_response_free(ds3_target_list_response *response)
Definition: ds3.c:2652
float auto_reclaim_initiate_threshold
Definition: ds3.h:1111
ds3_system_failure_type type
Definition: ds3.h:901
ds3_pool_failure_type
Definition: ds3.h:247
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:1955
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:798
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:953
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:2330
void ds3_job_list_response_free(ds3_job_list_response *response)
Definition: ds3.c:2960
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:706
ds3_str * error_message
Definition: ds3.h:800
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:2358
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:1910
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:2114
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:833
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:1556
ds3_str * serial_number
Definition: ds3.h:1229
ds3_str * bucket
Definition: ds3.h:1944
ds3_auto_inspect_mode
Definition: ds3.h:120
ds3_tape_partition_failure_type
Definition: ds3.h:338
void ds3_initiate_multipart_upload_result_response_free(ds3_initiate_multipart_upload_result_response *response)
Definition: ds3.c:1701
static ds3_data_placement_rule_state _match_ds3_data_placement_rule_state(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:630
static ds3_bool xml_get_bool_from_attribute(const ds3_log *log, xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3_requests.c:311
ds3_s3_object_response ** s3_objects
Definition: ds3.h:1683
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:1325
float auto_reclaim_terminate_threshold
Definition: ds3.h:1112
void ds3_data_policy_list_response_free(ds3_data_policy_list_response *response)
Definition: ds3.c:1924
static ds3_data_persistence_rule_type _match_ds3_data_persistence_rule_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:618
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_metadata * metadata
Definition: ds3.h:629
ds3_target_read_preference_type default_read_preference
Definition: ds3.h:1258
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:2886
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:1078
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:2106
ds3_str * member_group_id
Definition: ds3.h:789
void ds3_system_failure_notification_registration_response_free(ds3_system_failure_notification_registration_response *response)
Definition: ds3.c:1018
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:1918
ds3_tape_drive_type density
Definition: ds3.h:1197
void ds3_suspect_blob_tape_list_response_free(ds3_suspect_blob_tape_list_response *response)
Definition: ds3.c:2036
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:891
void ds3_canceled_job_response_free(ds3_canceled_job_response *response)
Definition: ds3.c:572
ds3_tape_failure_notification_registration_response ** tape_failure_notification_registrations
Definition: ds3.h:1778
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:2568
static ds3_reserved_task_type _match_ds3_reserved_task_type(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:942
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:1319
ds3_blob_store_task_information_response ** tasks
Definition: ds3.h:1469
ds3_tape_drive_type * drive_types
Definition: ds3.h:1568
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:1771
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:266
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:672
void ds3_completed_job_list_response_free(ds3_completed_job_list_response *response)
Definition: ds3.c:2120
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:860
ds3_str * bar_code
Definition: ds3.h:1171
uint64_t current_value
Definition: ds3.h:774
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:2456
ds3_error * ds3_delete_bucket_spectra_s3_request(const ds3_client *client, const ds3_request *request)
ds3_str * node_id
Definition: ds3.h:2022
ds3_unavailable_media_usage_policy
Definition: ds3.h:227
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:854
ds3_degraded_blob_response ** degraded_blobs
Definition: ds3.h:1653
ds3_target_response ** ds3_targets
Definition: ds3.h:1930
ds3_user_response * owner
Definition: ds3.h:2067
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)
ds3_uint64_string_map * get_blob_checksums(const ds3_log *log, ds3_string_multimap *response_headers)
static ds3_versioning_level _match_ds3_versioning_level(const ds3_log *log, const xmlChar *text)
Definition: ds3_requests.c:824
ds3_str * error_message
Definition: ds3.h:775
void ds3_job_created_notification_registration_list_response_free(ds3_job_created_notification_registration_list_response *response)
Definition: ds3.c:2190
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)
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:1172
uint64_t total_raw_capacity
Definition: ds3.h:1191
void ds3_physical_placement_response_free(ds3_physical_placement_response *response)
Definition: ds3.c:2736
ds3_target_read_preference_response ** ds3_target_read_preferences
Definition: ds3.h:1893
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:99
void ds3_system_information_response_free(ds3_system_information_response *response)
Definition: ds3.c:1751
static ds3_metadata_entry * ds3_metadata_entry_init(ds3_string_multimap_entry *header_entry)
Definition: ds3_requests.c:68
void ds3_detailed_tape_failure_list_response_free(ds3_detailed_tape_failure_list_response *response)
Definition: ds3.c:2484
void ds3_suspect_blob_azure_target_list_response_free(ds3_suspect_blob_azure_target_list_response *response)
Definition: ds3.c:1980
char * value
Definition: ds3_string.h:27
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:238
ds3_tape_response ** tapes
Definition: ds3.h:1936
void ds3_tape_partition_response_free(ds3_tape_partition_response *response)
Definition: ds3.c:1212
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)
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:1179
ds3_str * last_fully_verified
Definition: ds3.h:1261
ds3_str * chunk_id
Definition: ds3.h:2020
ds3_priority default_verify_job_priority
Definition: ds3.h:741
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:740
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:2036
ds3_bool
Definition: ds3_bool.h:23
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:2030
ds3_checksum_type * blob_checksum_type
Definition: ds3.h:630
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:2498
ds3_str ** strings_list
Definition: ds3.h:116
void ds3_data_replication_rule_response_free(ds3_data_replication_rule_response *response)
Definition: ds3.c:664
void ds3_suspect_blob_s3_target_list_response_free(ds3_suspect_blob_s3_target_list_response *response)
Definition: ds3.c:2022
ds3_tape_response ** tapes
Definition: ds3.h:1863
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:795