DS3 C SDK  3.0.0
Provides access to the Spectra S3 API with C
ds3.c
Go to the documentation of this file.
1 /*
2  * ******************************************************************************
3  * Copyright 2014-2016 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 <stdio.h>
22 #include <stdbool.h>
23 #include <sys/stat.h>
24 #include <sys/types.h>
25 #include <curl/curl.h>
26 #include <libxml/parser.h>
27 #include <libxml/xmlmemory.h>
28 
29 #include "ds3.h"
30 #include "ds3_request.h"
31 #include "ds3_string_multimap.h"
33 #include "ds3_net.h"
34 #include "ds3_utils.h"
35 
36 #ifdef _WIN32
37 #include <io.h>
38 #else
39 #include <unistd.h>
40 #endif
41 
42 #ifndef S_ISDIR
43 #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
44 #endif
45 
47  if (input == DS3_BUCKET_ACL_PERMISSION_LIST) {
48  return "LIST";
49  } else if (input == DS3_BUCKET_ACL_PERMISSION_READ) {
50  return "READ";
51  } else if (input == DS3_BUCKET_ACL_PERMISSION_WRITE) {
52  return "WRITE";
53  } else if (input == DS3_BUCKET_ACL_PERMISSION_DELETE) {
54  return "DELETE";
55  } else if (input == DS3_BUCKET_ACL_PERMISSION_JOB) {
56  return "JOB";
57  } else if (input == DS3_BUCKET_ACL_PERMISSION_OWNER) {
58  return "OWNER";
59  } else {
60  return "";
61  }
62 
63 }
65  if (input == DS3_POOL_HEALTH_OK) {
66  return "OK";
67  } else if (input == DS3_POOL_HEALTH_DEGRADED) {
68  return "DEGRADED";
69  } else {
70  return "";
71  }
72 
73 }
75  if (input == DS3_POOL_STATE_BLANK) {
76  return "BLANK";
77  } else if (input == DS3_POOL_STATE_NORMAL) {
78  return "NORMAL";
79  } else if (input == DS3_POOL_STATE_LOST) {
80  return "LOST";
81  } else if (input == DS3_POOL_STATE_FOREIGN) {
82  return "FOREIGN";
83  } else if (input == DS3_POOL_STATE_IMPORT_PENDING) {
84  return "IMPORT_PENDING";
85  } else if (input == DS3_POOL_STATE_IMPORT_IN_PROGRESS) {
86  return "IMPORT_IN_PROGRESS";
87  } else {
88  return "";
89  }
90 
91 }
93  if (input == DS3_POOL_TYPE_NEARLINE) {
94  return "NEARLINE";
95  } else if (input == DS3_POOL_TYPE_ONLINE) {
96  return "ONLINE";
97  } else {
98  return "";
99  }
100 
101 }
103  if (input == DS3_TAPE_STATE_NORMAL) {
104  return "NORMAL";
105  } else if (input == DS3_TAPE_STATE_OFFLINE) {
106  return "OFFLINE";
107  } else if (input == DS3_TAPE_STATE_ONLINE_PENDING) {
108  return "ONLINE_PENDING";
109  } else if (input == DS3_TAPE_STATE_ONLINE_IN_PROGRESS) {
110  return "ONLINE_IN_PROGRESS";
111  } else if (input == DS3_TAPE_STATE_PENDING_INSPECTION) {
112  return "PENDING_INSPECTION";
113  } else if (input == DS3_TAPE_STATE_UNKNOWN) {
114  return "UNKNOWN";
115  } else if (input == DS3_TAPE_STATE_DATA_CHECKPOINT_FAILURE) {
116  return "DATA_CHECKPOINT_FAILURE";
118  return "DATA_CHECKPOINT_FAILURE_DUE_TO_READ_ONLY";
119  } else if (input == DS3_TAPE_STATE_DATA_CHECKPOINT_MISSING) {
120  return "DATA_CHECKPOINT_MISSING";
121  } else if (input == DS3_TAPE_STATE_LTFS_WITH_FOREIGN_DATA) {
122  return "LTFS_WITH_FOREIGN_DATA";
123  } else if (input == DS3_TAPE_STATE_FOREIGN) {
124  return "FOREIGN";
125  } else if (input == DS3_TAPE_STATE_IMPORT_PENDING) {
126  return "IMPORT_PENDING";
127  } else if (input == DS3_TAPE_STATE_IMPORT_IN_PROGRESS) {
128  return "IMPORT_IN_PROGRESS";
129  } else if (input == DS3_TAPE_STATE_INCOMPATIBLE) {
130  return "INCOMPATIBLE";
131  } else if (input == DS3_TAPE_STATE_LOST) {
132  return "LOST";
133  } else if (input == DS3_TAPE_STATE_BAD) {
134  return "BAD";
135  } else if (input == DS3_TAPE_STATE_SERIAL_NUMBER_MISMATCH) {
136  return "SERIAL_NUMBER_MISMATCH";
137  } else if (input == DS3_TAPE_STATE_BAR_CODE_MISSING) {
138  return "BAR_CODE_MISSING";
139  } else if (input == DS3_TAPE_STATE_FORMAT_PENDING) {
140  return "FORMAT_PENDING";
141  } else if (input == DS3_TAPE_STATE_FORMAT_IN_PROGRESS) {
142  return "FORMAT_IN_PROGRESS";
143  } else if (input == DS3_TAPE_STATE_EJECT_TO_EE_IN_PROGRESS) {
144  return "EJECT_TO_EE_IN_PROGRESS";
145  } else if (input == DS3_TAPE_STATE_EJECT_FROM_EE_PENDING) {
146  return "EJECT_FROM_EE_PENDING";
147  } else if (input == DS3_TAPE_STATE_EJECTED) {
148  return "EJECTED";
149  } else {
150  return "";
151  }
152 
153 }
155  if (input == DS3_TAPE_TYPE_LTO5) {
156  return "LTO5";
157  } else if (input == DS3_TAPE_TYPE_LTO6) {
158  return "LTO6";
159  } else if (input == DS3_TAPE_TYPE_LTO7) {
160  return "LTO7";
161  } else if (input == DS3_TAPE_TYPE_LTO_CLEANING_TAPE) {
162  return "LTO_CLEANING_TAPE";
163  } else if (input == DS3_TAPE_TYPE_TS_JC) {
164  return "TS_JC";
165  } else if (input == DS3_TAPE_TYPE_TS_JY) {
166  return "TS_JY";
167  } else if (input == DS3_TAPE_TYPE_TS_JK) {
168  return "TS_JK";
169  } else if (input == DS3_TAPE_TYPE_TS_JD) {
170  return "TS_JD";
171  } else if (input == DS3_TAPE_TYPE_TS_JZ) {
172  return "TS_JZ";
173  } else if (input == DS3_TAPE_TYPE_TS_JL) {
174  return "TS_JL";
175  } else if (input == DS3_TAPE_TYPE_TS_CLEANING_TAPE) {
176  return "TS_CLEANING_TAPE";
177  } else if (input == DS3_TAPE_TYPE_UNKNOWN) {
178  return "UNKNOWN";
179  } else if (input == DS3_TAPE_TYPE_FORBIDDEN) {
180  return "FORBIDDEN";
181  } else {
182  return "";
183  }
184 
185 }
187  if (input == DS3_AUTO_INSPECT_MODE_NEVER) {
188  return "NEVER";
189  } else if (input == DS3_AUTO_INSPECT_MODE_MINIMAL) {
190  return "MINIMAL";
191  } else if (input == DS3_AUTO_INSPECT_MODE_DEFAULT) {
192  return "DEFAULT";
193  } else {
194  return "";
195  }
196 
197 }
200  return "CANCEL";
202  return "ACCEPT_MOST_RECENT";
204  return "ACCEPT_HIGHEST_VERSION";
206  return "ACCEPT_IMPORT";
208  return "ACCEPT_EXISTING";
209  } else {
210  return "";
211  }
212 
213 }
216  return "ALLOW";
218  return "DISCOURAGED";
219  } else if (input == DS3_UNAVAILABLE_MEDIA_USAGE_POLICY_DISALLOW) {
220  return "DISALLOW";
221  } else {
222  return "";
223  }
224 
225 }
227  if (input == DS3_DATA_ISOLATION_LEVEL_STANDARD) {
228  return "STANDARD";
229  } else if (input == DS3_DATA_ISOLATION_LEVEL_BUCKET_ISOLATED) {
230  return "BUCKET_ISOLATED";
232  return "SECURE_BUCKET_ISOLATED";
233  } else {
234  return "";
235  }
236 
237 }
240  return "PERMANENT";
241  } else if (input == DS3_DATA_PERSISTENCE_RULE_TYPE_TEMPORARY) {
242  return "TEMPORARY";
243  } else if (input == DS3_DATA_PERSISTENCE_RULE_TYPE_RETIRED) {
244  return "RETIRED";
245  } else {
246  return "";
247  }
248 
249 }
251  if (input == DS3_CHECKSUM_TYPE_CRC_32) {
252  return "CRC_32";
253  } else if (input == DS3_CHECKSUM_TYPE_CRC_32C) {
254  return "CRC_32C";
255  } else if (input == DS3_CHECKSUM_TYPE_MD5) {
256  return "MD5";
257  } else if (input == DS3_CHECKSUM_TYPE_SHA_256) {
258  return "SHA_256";
259  } else if (input == DS3_CHECKSUM_TYPE_SHA_512) {
260  return "SHA_512";
261  } else {
262  return "";
263  }
264 
265 }
266 static char* _get_ds3_priority_str(ds3_priority input) {
267  if (input == DS3_PRIORITY_CRITICAL) {
268  return "CRITICAL";
269  } else if (input == DS3_PRIORITY_URGENT) {
270  return "URGENT";
271  } else if (input == DS3_PRIORITY_HIGH) {
272  return "HIGH";
273  } else if (input == DS3_PRIORITY_NORMAL) {
274  return "NORMAL";
275  } else if (input == DS3_PRIORITY_LOW) {
276  return "LOW";
277  } else if (input == DS3_PRIORITY_BACKGROUND) {
278  return "BACKGROUND";
279  } else {
280  return "";
281  }
282 
283 }
285  if (input == DS3_VERSIONING_LEVEL_NONE) {
286  return "NONE";
287  } else if (input == DS3_VERSIONING_LEVEL_KEEP_LATEST) {
288  return "KEEP_LATEST";
289  } else {
290  return "";
291  }
292 
293 }
296  return "NORMAL";
298  return "INCLUSION_IN_PROGRESS";
299  } else {
300  return "";
301  }
302 
303 }
305  if (input == DS3_JOB_REQUEST_TYPE_PUT) {
306  return "PUT";
307  } else if (input == DS3_JOB_REQUEST_TYPE_GET) {
308  return "GET";
309  } else if (input == DS3_JOB_REQUEST_TYPE_VERIFY) {
310  return "VERIFY";
311  } else {
312  return "";
313  }
314 
315 }
318  return "NONE";
320  return "IN_ORDER";
321  } else {
322  return "";
323  }
324 
325 }
328  return "CANCEL";
330  return "ACCEPT_SOURCE";
332  return "ACCEPT_TARGET";
334  return "ACCEPT_MOST_RECENT";
335  } else {
336  return "";
337  }
338 
339 }
342  return "DEFAULT";
343  } else if (input == DS3_HTTP_RESPONSE_FORMAT_TYPE_JSON) {
344  return "JSON";
345  } else if (input == DS3_HTTP_RESPONSE_FORMAT_TYPE_XML) {
346  return "XML";
347  } else {
348  return "";
349  }
350 
351 }
354  return "CONCAT_LOWERCASE";
355  } else if (input == DS3_NAMING_CONVENTION_TYPE_CONSTANT) {
356  return "CONSTANT";
357  } else if (input == DS3_NAMING_CONVENTION_TYPE_UNDERSCORED) {
358  return "UNDERSCORED";
360  return "CAMEL_CASE_WITH_FIRST_LETTER_UPPERCASE";
362  return "CAMEL_CASE_WITH_FIRST_LETTER_LOWERCASE";
363  } else {
364  return "";
365  }
366 
367 }
369  if (input == DS3_REQUEST_TYPE_DELETE) {
370  return "DELETE";
371  } else if (input == DS3_REQUEST_TYPE_GET) {
372  return "GET";
373  } else if (input == DS3_REQUEST_TYPE_HEAD) {
374  return "HEAD";
375  } else if (input == DS3_REQUEST_TYPE_POST) {
376  return "POST";
377  } else if (input == DS3_REQUEST_TYPE_PUT) {
378  return "PUT";
379  } else {
380  return "";
381  }
382 
383 }
385  if (input == DS3_S3_OBJECT_TYPE_DATA) {
386  return "DATA";
387  } else if (input == DS3_S3_OBJECT_TYPE_FOLDER) {
388  return "FOLDER";
389  } else {
390  return "";
391  }
392 
393 }
396  return "BLOB_READ_FAILED";
397  } else if (input == DS3_POOL_FAILURE_TYPE_DATA_CHECKPOINT_FAILURE) {
398  return "DATA_CHECKPOINT_FAILURE";
399  } else if (input == DS3_POOL_FAILURE_TYPE_DATA_CHECKPOINT_MISSING) {
400  return "DATA_CHECKPOINT_MISSING";
401  } else if (input == DS3_POOL_FAILURE_TYPE_FORMAT_FAILED) {
402  return "FORMAT_FAILED";
403  } else if (input == DS3_POOL_FAILURE_TYPE_IMPORT_FAILED) {
404  return "IMPORT_FAILED";
406  return "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE";
408  return "IMPORT_FAILED_DUE_TO_DATA_INTEGRITY";
409  } else if (input == DS3_POOL_FAILURE_TYPE_INSPECT_FAILED) {
410  return "INSPECT_FAILED";
411  } else if (input == DS3_POOL_FAILURE_TYPE_QUIESCED) {
412  return "QUIESCED";
413  } else if (input == DS3_POOL_FAILURE_TYPE_READ_FAILED) {
414  return "READ_FAILED";
415  } else if (input == DS3_POOL_FAILURE_TYPE_VERIFY_FAILED) {
416  return "VERIFY_FAILED";
417  } else if (input == DS3_POOL_FAILURE_TYPE_WRITE_FAILED) {
418  return "WRITE_FAILED";
419  } else {
420  return "";
421  }
422 
423 }
424 static char* _get_ds3_quiesced_str(ds3_quiesced input) {
425  if (input == DS3_QUIESCED_NO) {
426  return "NO";
427  } else if (input == DS3_QUIESCED_PENDING) {
428  return "PENDING";
429  } else if (input == DS3_QUIESCED_YES) {
430  return "YES";
431  } else {
432  return "";
433  }
434 
435 }
437  if (input == DS3_WRITE_PREFERENCE_LEVEL_HIGH) {
438  return "HIGH";
439  } else if (input == DS3_WRITE_PREFERENCE_LEVEL_NORMAL) {
440  return "NORMAL";
441  } else if (input == DS3_WRITE_PREFERENCE_LEVEL_LOW) {
442  return "LOW";
443  } else if (input == DS3_WRITE_PREFERENCE_LEVEL_NEVER_SELECT) {
444  return "NEVER_SELECT";
445  } else {
446  return "";
447  }
448 
449 }
452  return "OBJECT_NAME";
453  } else if (input == DS3_LTFS_FILE_NAMING_MODE_OBJECT_ID) {
454  return "OBJECT_ID";
455  } else {
456  return "";
457  }
458 
459 }
461  if (input == DS3_WRITE_OPTIMIZATION_CAPACITY) {
462  return "CAPACITY";
463  } else if (input == DS3_WRITE_OPTIMIZATION_PERFORMANCE) {
464  return "PERFORMANCE";
465  } else {
466  return "";
467  }
468 
469 }
472  return "ILLEGAL_EJECTION_OCCURRED";
474  return "MEMBER_BECAME_READ_ONLY";
476  return "WRITES_STALLED_DUE_TO_NO_FREE_MEDIA_REMAINING";
477  } else {
478  return "";
479  }
480 
481 }
484  return "NORMAL";
486  return "EXCLUSION_IN_PROGRESS";
487  } else {
488  return "";
489  }
490 
491 }
494  return "RECONCILE_TAPE_ENVIRONMENT_FAILED";
496  return "RECONCILE_POOL_ENVIRONMENT_FAILED";
497  } else {
498  return "";
499  }
500 
501 }
503  if (input == DS3_TAPE_DRIVE_TYPE_UNKNOWN) {
504  return "UNKNOWN";
505  } else if (input == DS3_TAPE_DRIVE_TYPE_LTO5) {
506  return "LTO5";
507  } else if (input == DS3_TAPE_DRIVE_TYPE_LTO6) {
508  return "LTO6";
509  } else if (input == DS3_TAPE_DRIVE_TYPE_LTO7) {
510  return "LTO7";
511  } else if (input == DS3_TAPE_DRIVE_TYPE_TS1140) {
512  return "TS1140";
513  } else if (input == DS3_TAPE_DRIVE_TYPE_TS1150) {
514  return "TS1150";
515  } else {
516  return "";
517  }
518 
519 }
521  if (input == DS3_TAPE_DRIVE_STATE_OFFLINE) {
522  return "OFFLINE";
523  } else if (input == DS3_TAPE_DRIVE_STATE_NORMAL) {
524  return "NORMAL";
525  } else if (input == DS3_TAPE_DRIVE_STATE_ERROR) {
526  return "ERROR";
528  return "NOT_COMPATIBLE_IN_PARTITION_DUE_TO_NEWER_TAPE_DRIVES";
529  } else {
530  return "";
531  }
532 
533 }
536  return "BAR_CODE_CHANGED";
537  } else if (input == DS3_TAPE_FAILURE_TYPE_BAR_CODE_DUPLICATE) {
538  return "BAR_CODE_DUPLICATE";
539  } else if (input == DS3_TAPE_FAILURE_TYPE_BLOB_READ_FAILED) {
540  return "BLOB_READ_FAILED";
541  } else if (input == DS3_TAPE_FAILURE_TYPE_DATA_CHECKPOINT_FAILURE) {
542  return "DATA_CHECKPOINT_FAILURE";
544  return "DATA_CHECKPOINT_FAILURE_DUE_TO_READ_ONLY";
545  } else if (input == DS3_TAPE_FAILURE_TYPE_DATA_CHECKPOINT_MISSING) {
546  return "DATA_CHECKPOINT_MISSING";
548  return "DELAYED_OWNERSHIP_FAILURE";
549  } else if (input == DS3_TAPE_FAILURE_TYPE_DRIVE_CLEAN_FAILED) {
550  return "DRIVE_CLEAN_FAILED";
551  } else if (input == DS3_TAPE_FAILURE_TYPE_DRIVE_CLEANED) {
552  return "DRIVE_CLEANED";
553  } else if (input == DS3_TAPE_FAILURE_TYPE_FORMAT_FAILED) {
554  return "FORMAT_FAILED";
556  return "GET_TAPE_INFORMATION_FAILED";
557  } else if (input == DS3_TAPE_FAILURE_TYPE_IMPORT_FAILED) {
558  return "IMPORT_FAILED";
560  return "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE";
562  return "IMPORT_FAILED_DUE_TO_DATA_INTEGRITY";
563  } else if (input == DS3_TAPE_FAILURE_TYPE_INSPECT_FAILED) {
564  return "INSPECT_FAILED";
565  } else if (input == DS3_TAPE_FAILURE_TYPE_READ_FAILED) {
566  return "READ_FAILED";
567  } else if (input == DS3_TAPE_FAILURE_TYPE_REIMPORT_REQUIRED) {
568  return "REIMPORT_REQUIRED";
569  } else if (input == DS3_TAPE_FAILURE_TYPE_SERIAL_NUMBER_MISMATCH) {
570  return "SERIAL_NUMBER_MISMATCH";
571  } else if (input == DS3_TAPE_FAILURE_TYPE_VERIFY_FAILED) {
572  return "VERIFY_FAILED";
573  } else if (input == DS3_TAPE_FAILURE_TYPE_WRITE_FAILED) {
574  return "WRITE_FAILED";
575  } else {
576  return "";
577  }
578 
579 }
582  return "CLEANING_TAPE_REQUIRED";
584  return "DUPLICATE_TAPE_BAR_CODES_DETECTED";
586  return "EJECT_STALLED_DUE_TO_OFFLINE_TAPES";
588  return "MINIMUM_DRIVE_COUNT_NOT_MET";
589  } else if (input == DS3_TAPE_PARTITION_FAILURE_TYPE_MOVE_FAILED) {
590  return "MOVE_FAILED";
592  return "MOVE_FAILED_DUE_TO_PREPARE_TAPE_FOR_REMOVAL_FAILURE";
594  return "NO_USABLE_DRIVES";
596  return "ONLINE_STALLED_DUE_TO_NO_STORAGE_SLOTS";
598  return "TAPE_DRIVE_IN_ERROR";
600  return "TAPE_DRIVE_MISSING";
602  return "TAPE_DRIVE_TYPE_MISMATCH";
604  return "TAPE_EJECTION_BY_OPERATOR_REQUIRED";
606  return "TAPE_MEDIA_TYPE_INCOMPATIBLE";
607  } else {
608  return "";
609  }
610 
611 }
614  return "SUPPORTED";
615  } else if (input == DS3_IMPORT_EXPORT_CONFIGURATION_NOT_SUPPORTED) {
616  return "NOT_SUPPORTED";
617  } else {
618  return "";
619  }
620 
621 }
623  if (input == DS3_TAPE_PARTITION_STATE_ONLINE) {
624  return "ONLINE";
625  } else if (input == DS3_TAPE_PARTITION_STATE_OFFLINE) {
626  return "OFFLINE";
627  } else if (input == DS3_TAPE_PARTITION_STATE_ERROR) {
628  return "ERROR";
629  } else {
630  return "";
631  }
632 
633 }
634 
635 
636 struct _ds3_metadata {
637  GHashTable* metadata;
638 };
639 
640 static void _ds3_metadata_entry_free(gpointer pointer) {
641  ds3_metadata_entry* entry;
642  if (pointer == NULL) {
643  return; // do nothing
644  }
645 
646  entry = (ds3_metadata_entry*) pointer;
647 
649 }
650 
651 /*
652  * This copies all the header values in the ds3_string_multimap_entry struct so that they may be safely returned to the user
653  * without having to worry about if the data is freed internally.
654  */
655 static const char* METADATA_PREFIX = "x-amz-meta-";
657  guint i;
658  ds3_str* header_value;
659  GPtrArray* values = g_ptr_array_new();
660  ds3_str* key_name;
661  ds3_str* full_key;
662  ds3_metadata_entry* response = g_new0(ds3_metadata_entry, 1);
663  int metadata_prefix_length = strlen(METADATA_PREFIX);
664 
665  unsigned int num_values = ds3_string_multimap_entry_get_num_values(header_entry);
666  for (i = 0; i < num_values; i++) {
667  header_value = ds3_string_multimap_entry_get_value_by_index(header_entry, i);
668  g_ptr_array_add(values, header_value);
669  }
670 
671  full_key = ds3_string_multimap_entry_get_key(header_entry);
672  key_name = ds3_str_init(full_key->value + metadata_prefix_length);
673  ds3_str_free(full_key);
674 
675  response->num_values = num_values;
676  response->name = key_name;
677  response->values = (ds3_str**) g_ptr_array_free(values, FALSE);
678  fprintf(stderr, "creating metadata entry of: %s\n", key_name->value);
679  return response;
680 }
681 
682 /* The headers hash table contains all the response headers which have the following types:
683  * Key - char*
684  * Value - ds3_response_header
685  *
686  * All values should be copied from the struct to avoid memory issues
687  */
688 static ds3_metadata* _init_metadata(ds3_string_multimap* response_headers) {
689  struct _ds3_metadata* metadata = g_new0(struct _ds3_metadata, 1);
690  GHashTableIter iter;
691  gpointer _key, _value;
692  ds3_str* key;
693  ds3_metadata_entry* entry;
694  metadata->metadata = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, _ds3_metadata_entry_free);
695 
696  if (response_headers == NULL) {
697  fprintf(stderr, "response headers was null\n");
698  }
699 
700  g_hash_table_iter_init(&iter, ds3_string_multimap_get_hashtable(response_headers));
701  while(g_hash_table_iter_next(&iter, &_key, &_value)) {
702  key = (ds3_str*) _key;
703  if (g_str_has_prefix(key->value, "x-amz-meta-")) {
704  ds3_string_multimap_entry* mm_entry = ds3_string_multimap_lookup(response_headers, key);
705  entry = ds3_metadata_entry_init(mm_entry);
706  g_hash_table_insert(metadata->metadata, g_strdup(entry->name->value), entry);
708  }
709  }
710 
711  return (ds3_metadata*) metadata;
712 }
713 
714 ds3_metadata_entry* ds3_metadata_get_entry(const ds3_metadata* _metadata, const char* name) {
715  ds3_metadata_entry* copy;
716  ds3_metadata_entry* orig;
717  ds3_str** metadata_copy;
718  uint64_t i;
719  struct _ds3_metadata* metadata = (struct _ds3_metadata*) _metadata;
720 
721  if (_metadata == NULL) {
722  return NULL;
723  }
724 
725  orig = (ds3_metadata_entry*) g_hash_table_lookup(metadata->metadata, name);
726  if (orig == NULL) {
727  return NULL;
728  }
729  copy = g_new0(ds3_metadata_entry, 1);
730  metadata_copy = g_new0(ds3_str*, orig->num_values);
731 
732  for (i = 0; i < orig->num_values; i++) {
733  metadata_copy[i] = ds3_str_dup(orig->values[i]);
734  }
735 
736  copy->num_values = orig->num_values;
737  copy->name = ds3_str_dup(orig->name);
738  copy->values = metadata_copy;
739 
740  return copy;
741 }
742 
743 unsigned int ds3_metadata_size(const ds3_metadata* _metadata) {
744  struct _ds3_metadata* metadata = (struct _ds3_metadata*) _metadata;
745  if (metadata == NULL) {
746  return 0;
747  }
748  return g_hash_table_size(metadata->metadata);
749 }
750 
752  GPtrArray* return_keys;
753  ds3_metadata_keys_result* result;
754  struct _ds3_metadata* metadata;
755  GList* keys;
756  GList* tmp_key;
757 
758  if (_metadata == NULL) {
759  return NULL;
760  }
761 
762  return_keys = g_ptr_array_new();
763  result = g_new0(ds3_metadata_keys_result, 1);
764  metadata = (struct _ds3_metadata*) _metadata;
765  keys = g_hash_table_get_keys(metadata->metadata);
766  tmp_key = keys;
767 
768  while(tmp_key != NULL) {
769  g_ptr_array_add(return_keys, ds3_str_init((char*)tmp_key->data));
770  tmp_key = tmp_key->next;
771  }
772 
773  g_list_free(keys);
774  result->num_keys = return_keys->len;
775  result->keys = (ds3_str**) g_ptr_array_free(return_keys, FALSE);
776  return result;
777 }
778 
779 static void _cleanup_hash_value(gpointer value) {
780  g_free(value);
781 }
782 
783 static GHashTable* _create_hash_table(void) {
784  GHashTable* hash = g_hash_table_new_full(g_str_hash, g_str_equal, _cleanup_hash_value, _cleanup_hash_value);
785  return hash;
786 }
787 
788 void ds3_metadata_free(ds3_metadata* _metadata) {
789  struct _ds3_metadata* metadata;
790  if (_metadata == NULL) return;
791 
792  metadata = (struct _ds3_metadata*) _metadata;
793 
794  if (metadata->metadata == NULL) return;
795 
796  g_hash_table_destroy(metadata->metadata);
797 
798  g_free(metadata);
799 }
800 
802  int value_index;
803  ds3_str* value;
804  if (entry->name != NULL) {
805  ds3_str_free(entry->name);
806  }
807  if (entry->values != NULL) {
808  for (value_index = 0; value_index < entry->num_values; value_index++) {
809  value = entry->values[value_index];
810  ds3_str_free(value);
811  }
812  g_free(entry->values);
813  }
814  g_free(entry);
815 }
816 
818  uint64_t key_index;
819  if (metadata_keys == NULL) {
820  return;
821  }
822 
823  if (metadata_keys->keys != NULL) {
824  for (key_index = 0; key_index < metadata_keys->num_keys; key_index++) {
825  ds3_str_free(metadata_keys->keys[key_index]);
826  }
827  g_free(metadata_keys->keys);
828  }
829  g_free(metadata_keys);
830 }
831 
832 void ds3_client_register_logging(ds3_client* client, ds3_log_lvl log_lvl, void (* log_callback)(const char* log_message, void* user_data), void* user_data) {
833  if (client == NULL) {
834  fprintf(stderr, "Cannot configure a null ds3_client for logging.\n");
835  return;
836  }
837  if (client->log != NULL) {
838  g_free(client->log);
839  }
840  ds3_log* log = g_new0(ds3_log, 1);
841  log->log_callback = log_callback;
842  log->user_data = user_data;
843  log->log_lvl = log_lvl;
844 
845  client->log = log;
846 }
847 
848 ds3_creds* ds3_create_creds(const char* access_id, const char* secret_key) {
849  ds3_creds* creds;
850  if (access_id == NULL || secret_key == NULL) {
851  fprintf(stderr, "Arguments cannot be NULL\n");
852  return NULL;
853  }
854 
855  creds = g_new0(ds3_creds, 1);
856  creds->access_id = ds3_str_init(access_id);
857  creds->secret_key = ds3_str_init(secret_key);
858 
859  return creds;
860 }
861 
862 void ds3_client_register_net(ds3_client* client, ds3_error* (* net_callback)(const ds3_client* client,
863  const ds3_request* _request,
864  void* read_user_struct,
865  size_t (*read_handler_func)(void*, size_t, size_t, void*),
866  void* write_user_struct,
867  size_t (*write_handler_func)(void*, size_t, size_t, void*),
868  ds3_string_multimap** return_headers)) {
869  if (client == NULL) {
870  fprintf(stderr, "Cannot configure a null ds3_client for net_callback.\n");
871  return;
872  }
873 
874  client->net_callback = net_callback;
875 }
876 
877 ds3_client* ds3_create_client(const char* endpoint, ds3_creds* creds) {
878  ds3_client* client;
879  if (endpoint == NULL) {
880  fprintf(stderr, "Null endpoint\n");
881  return NULL;
882  }
883 
884  client = g_new0(ds3_client, 1);
885  client->endpoint = ds3_str_init(endpoint);
886  client->creds = creds;
887  client->num_redirects = 5L; //default to 5 redirects before failing
888 
890 
891  return client;
892 }
893 
895  ds3_creds* creds;
896  ds3_client* _client;
897  char* endpoint = getenv("DS3_ENDPOINT");
898  char* access_key = getenv("DS3_ACCESS_KEY");
899  char* secret_key = getenv("DS3_SECRET_KEY");
900  char* http_proxy = getenv("http_proxy");
901 
902  if (endpoint == NULL) {
903  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "Missing enviornment variable 'DS3_ENDPOINT'");
904  }
905 
906  if (access_key == NULL) {
907  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "Missing enviornment variable 'DS3_ACCESS_KEY'");
908  }
909 
910  if (secret_key == NULL) {
911  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "Missing enviornment variable 'DS3_SECRET_KEY'");
912  }
913 
914  creds = ds3_create_creds(access_key, secret_key);
915  _client = ds3_create_client(endpoint, creds);
916 
917  if (http_proxy != NULL) {
918  ds3_client_proxy(_client, http_proxy);
919  }
920 
921  *client = _client;
922 
923  return NULL;
924 }
925 
926 void ds3_client_proxy(ds3_client* client, const char* proxy) {
927  client->proxy = ds3_str_init(proxy);
928 }
929 
930 void ds3_creds_free(ds3_creds* creds) {
931  if (creds == NULL) {
932  return;
933  }
934 
935  ds3_str_free(creds->access_id);
936  ds3_str_free(creds->secret_key);
937  g_free(creds);
938 }
939 
941  if (client == NULL) {
942  return;
943  }
944 
945  ds3_str_free(client->endpoint);
946  ds3_str_free(client->proxy);
947  if (client->log != NULL) {
948  g_free(client->log);
949  }
950  g_free(client);
951 }
952 
953 
954 static const char UNSIGNED_LONG_BASE_10[] = "4294967296";
955 static const unsigned int UNSIGNED_LONG_BASE_10_STR_LEN = sizeof(UNSIGNED_LONG_BASE_10);
956 
957 typedef struct {
958  char* buff;
959  size_t size;
960  size_t total_read;
961 }ds3_xml_send_buff;
962 
963 typedef enum {
973 
974 static size_t _ds3_send_xml_buff(void* buffer, size_t size, size_t nmemb, void* user_data) {
975  size_t to_read;
976  size_t remaining;
977  ds3_xml_send_buff* xml_buff;
978 
979  xml_buff = (ds3_xml_send_buff*) user_data;
980  to_read = size * nmemb;
981  remaining = xml_buff->size - xml_buff->total_read;
982 
983  if (remaining < to_read) {
984  to_read = remaining;
985  }
986 
987  strncpy((char*)buffer, xml_buff->buff + xml_buff->total_read, to_read);
988  xml_buff->total_read += to_read;
989  return to_read;
990 }
991 
992 static void _set_map_value(GHashTable* map, const char* key, const char* value) {
993  gpointer escaped_key = (gpointer) escape_url(key);
994 
995  //TODO update this to handle multiple values being set for a header field
996  gpointer escaped_value;
997  if (value != NULL) {
998  if (g_strcmp0(key, "Range") == 0) {
999  escaped_value = (gpointer) escape_url_range_header(value);
1000  } else {
1001  escaped_value = (gpointer) escape_url(value);
1002  }
1003  } else {
1004  escaped_value = NULL;
1005  }
1006  g_hash_table_insert(map, escaped_key, escaped_value);
1007 }
1008 
1009 static void _set_header(ds3_request* _request, const char* key, const char* value) {
1010  struct _ds3_request* request = (struct _ds3_request*) _request;
1011  _set_map_value(request->headers, key, value);
1012 }
1013 
1014 void ds3_request_set_custom_header(ds3_request* _request, const char* header_name, const char* header_value) {
1015  _set_header(_request, header_name, header_value);
1016 }
1017 
1018 void ds3_request_set_metadata(ds3_request* _request, const char* name, const char* value) {
1019  char* prefixed_name = g_strconcat("x-amz-meta-", name, NULL);
1020 
1021  _set_header(_request, prefixed_name, value);
1022 
1023  g_free(prefixed_name);
1024 }
1025 
1027  g_hash_table_remove(_request->headers, "Range");
1028 }
1029 
1030 void ds3_request_set_byte_range(ds3_request* _request, int64_t rangeStart, int64_t rangeEnd) {
1031  char* range_value;
1032 
1033  gpointer header_value = g_hash_table_lookup(_request->headers, "Range");
1034  if (header_value != NULL) {
1035  range_value = g_strdup_printf("%s,%ld-%ld", (char*)header_value, rangeStart, rangeEnd);
1036  } else {
1037  range_value = g_strdup_printf("bytes=%ld-%ld", rangeStart, rangeEnd);
1038  }
1039 
1040  _set_header(_request, "Range", range_value);
1041  g_free(range_value);
1042 }
1043 
1044 void ds3_request_set_md5(ds3_request* _request, const char* md5) {
1045  struct _ds3_request* request = (struct _ds3_request*) _request;
1047  request->checksum = ds3_str_init(md5);
1048 }
1049 
1050 void ds3_request_set_sha256(ds3_request* _request, const char* sha256) {
1051  struct _ds3_request* request = (struct _ds3_request*) _request;
1053  request->checksum = ds3_str_init(sha256);
1054 }
1055 
1056 void ds3_request_set_sha512(ds3_request* _request, const char* sha512) {
1057  struct _ds3_request* request = (struct _ds3_request*) _request;
1059  request->checksum = ds3_str_init(sha512);
1060 }
1061 
1062 void ds3_request_set_crc32(ds3_request* _request, const char* crc32) {
1063  struct _ds3_request* request = (struct _ds3_request*) _request;
1065  request->checksum = ds3_str_init(crc32);
1066 }
1067 
1068 void ds3_request_set_crc32c(ds3_request* _request, const char* crc32c) {
1069  struct _ds3_request* request = (struct _ds3_request*) _request;
1071  request->checksum = ds3_str_init(crc32c);
1072 }
1073 
1074 static void _set_query_param(const ds3_request* _request, const char* key, const char* value) {
1075  const struct _ds3_request* request = (const struct _ds3_request*) _request;
1076  _set_map_value(request->query_params, key, value);
1077 }
1078 
1079 static void _set_query_param_flag(const ds3_request* _request, const char* key, ds3_bool value) {
1080  if (value == False) {
1081  g_hash_table_remove(_request->headers, key);
1082  } else {
1083  _set_query_param(_request, key, NULL);
1084  }
1085 }
1086 
1087 static void _set_query_param_uint64_t(const ds3_request* _request, const char* key, uint64_t value) {
1088  char string_buffer[UNSIGNED_LONG_BASE_10_STR_LEN];
1089  memset(string_buffer, 0, sizeof(string_buffer));
1090  snprintf(string_buffer, sizeof(string_buffer), "%lu", value);
1091  _set_query_param(_request, key, string_buffer);
1092 }
1093 
1094 static void _set_query_param_int(const ds3_request* _request, const char* key, int value) {
1095  char string_buffer[UNSIGNED_LONG_BASE_10_STR_LEN];
1096  memset(string_buffer, 0, sizeof(string_buffer));
1097  snprintf(string_buffer, sizeof(string_buffer), "%d", value);
1098  _set_query_param(_request, key, string_buffer);
1099 }
1100 
1101 static void _set_query_param_float(const ds3_request* _request, const char* key, float value) {
1102  char string_buffer[UNSIGNED_LONG_BASE_10_STR_LEN];
1103  memset(string_buffer, 0, sizeof(string_buffer));
1104  snprintf(string_buffer, sizeof(string_buffer), "%f", value);
1105  _set_query_param(_request, key, string_buffer);
1106 }
1107 void ds3_request_set_activated(const ds3_request* request, ds3_bool value) {
1108  _set_query_param_flag(request, "activated", value);
1109 
1110 }
1111 void ds3_request_set_aggregating(const ds3_request* request, ds3_bool value) {
1112  _set_query_param_flag(request, "aggregating", value);
1113 
1114 }
1116  _set_query_param_flag(request, "assigned_to_storage_domain", value);
1117 
1118 }
1119 void ds3_request_set_auth_id(const ds3_request* request, const char* value) {
1120  _set_query_param(request, "auth_id", value);
1121 
1122 }
1123 void ds3_request_set_auto_activate_timeout_in_mins(const ds3_request* request, const int value) {
1124  _set_query_param_int(request, "auto_activate_timeout_in_mins", value);
1125 
1126 }
1127 void ds3_request_set_auto_eject_upon_cron(const ds3_request* request, const char* value) {
1128  _set_query_param(request, "auto_eject_upon_cron", value);
1129 
1130 }
1132  _set_query_param_flag(request, "auto_eject_upon_job_cancellation", value);
1133 
1134 }
1136  _set_query_param_flag(request, "auto_eject_upon_job_completion", value);
1137 
1138 }
1140  _set_query_param_flag(request, "auto_eject_upon_media_full", value);
1141 
1142 }
1144  _set_query_param(request, "auto_inspect", (const char*)_get_ds3_auto_inspect_mode_str(value));
1145 
1146 }
1147 void ds3_request_set_auto_reclaim_initiate_threshold(const ds3_request* request, const float value) {
1148  _set_query_param_float(request, "auto_reclaim_initiate_threshold", value);
1149 
1150 }
1151 void ds3_request_set_auto_reclaim_terminate_threshold(const ds3_request* request, const float value) {
1152  _set_query_param_float(request, "auto_reclaim_terminate_threshold", value);
1153 
1154 }
1155 void ds3_request_set_bar_code(const ds3_request* request, const char* value) {
1156  _set_query_param(request, "bar_code", value);
1157 
1158 }
1160  _set_query_param_flag(request, "blobbing_enabled", value);
1161 
1162 }
1163 void ds3_request_set_bucket_id(const ds3_request* request, const char* value) {
1164  _set_query_param(request, "bucket_id", value);
1165 
1166 }
1167 void ds3_request_set_built_in(const ds3_request* request, ds3_bool value) {
1168  _set_query_param_flag(request, "built_in", value);
1169 
1170 }
1171 void ds3_request_set_burst_threshold(const ds3_request* request, const float value) {
1172  _set_query_param_float(request, "burst_threshold", value);
1173 
1174 }
1176  _set_query_param(request, "checksum_type", (const char*)_get_ds3_checksum_type_str(value));
1177 
1178 }
1180  _set_query_param(request, "chunk_client_processing_order_guarantee", (const char*)_get_ds3_job_chunk_client_processing_order_guarantee_str(value));
1181 
1182 }
1184  _set_query_param(request, "conflict_resolution_mode", (const char*)_get_ds3_replication_conflict_resolution_mode_str(value));
1185 
1186 }
1188  _set_query_param(request, "conflict_resolution_mode", (const char*)_get_ds3_import_conflict_resolution_mode_str(value));
1189 
1190 }
1191 void ds3_request_set_created_at(const ds3_request* request, const char* value) {
1192  _set_query_param(request, "created_at", value);
1193 
1194 }
1195 void ds3_request_set_data_policy_id(const ds3_request* request, const char* value) {
1196  _set_query_param(request, "data_policy_id", value);
1197 
1198 }
1199 void ds3_request_set_default_blob_size(const ds3_request* request, const uint64_t value) {
1200  _set_query_param_uint64_t(request, "default_blob_size", value);
1201 
1202 }
1203 void ds3_request_set_default_data_policy_id(const ds3_request* request, const char* value) {
1204  _set_query_param(request, "default_data_policy_id", value);
1205 
1206 }
1208  _set_query_param(request, "default_get_job_priority", (const char*)_get_ds3_priority_str(value));
1209 
1210 }
1212  _set_query_param(request, "default_import_conflict_resolution_mode", (const char*)_get_ds3_import_conflict_resolution_mode_str(value));
1213 
1214 }
1216  _set_query_param(request, "default_put_job_priority", (const char*)_get_ds3_priority_str(value));
1217 
1218 }
1220  _set_query_param(request, "default_verify_job_priority", (const char*)_get_ds3_priority_str(value));
1221 
1222 }
1223 void ds3_request_set_delimiter(const ds3_request* request, const char* value) {
1224  _set_query_param(request, "delimiter", value);
1225 
1226 }
1228  _set_query_param(request, "density", (const char*)_get_ds3_tape_drive_type_str(value));
1229 
1230 }
1231 void ds3_request_set_dns_name(const ds3_request* request, const char* value) {
1232  _set_query_param(request, "dns_name", value);
1233 
1234 }
1235 void ds3_request_set_eject_label(const ds3_request* request, const char* value) {
1236  _set_query_param(request, "eject_label", value);
1237 
1238 }
1239 void ds3_request_set_eject_location(const ds3_request* request, const char* value) {
1240  _set_query_param(request, "eject_location", value);
1241 
1242 }
1244  _set_query_param_flag(request, "end_to_end_crc_required", value);
1245 
1246 }
1247 void ds3_request_set_error_message(const ds3_request* request, const char* value) {
1248  _set_query_param(request, "error_message", value);
1249 
1250 }
1251 void ds3_request_set_folder(const ds3_request* request, const char* value) {
1252  _set_query_param(request, "folder", value);
1253 
1254 }
1255 void ds3_request_set_force(const ds3_request* request, ds3_bool value) {
1256  _set_query_param_flag(request, "force", value);
1257 
1258 }
1260  _set_query_param(request, "format", (const char*)_get_ds3_http_response_format_type_str(value));
1261 
1262 }
1264  _set_query_param_flag(request, "full_details", value);
1265 
1266 }
1268  _set_query_param_flag(request, "full_of_data", value);
1269 
1270 }
1271 void ds3_request_set_group_id(const ds3_request* request, const char* value) {
1272  _set_query_param(request, "group_id", value);
1273 
1274 }
1276  _set_query_param(request, "health", (const char*)_get_ds3_pool_health_str(value));
1277 
1278 }
1280  _set_query_param_flag(request, "ignore_naming_conflicts", value);
1281 
1282 }
1284  _set_query_param(request, "import_export_configuration", (const char*)_get_ds3_import_export_configuration_str(value));
1285 
1286 }
1288  _set_query_param_flag(request, "include_physical_placement", value);
1289 
1290 }
1292  _set_query_param(request, "isolation_level", (const char*)_get_ds3_data_isolation_level_str(value));
1293 
1294 }
1295 void ds3_request_set_job(const ds3_request* request, const char* value) {
1296  _set_query_param(request, "job", value);
1297 
1298 }
1299 void ds3_request_set_job_id(const ds3_request* request, const char* value) {
1300  _set_query_param(request, "job_id", value);
1301 
1302 }
1303 void ds3_request_set_key_marker(const ds3_request* request, const char* value) {
1304  _set_query_param(request, "key_marker", value);
1305 
1306 }
1307 void ds3_request_set_last_page(const ds3_request* request, ds3_bool value) {
1308  _set_query_param_flag(request, "last_page", value);
1309 
1310 }
1311 void ds3_request_set_latest(const ds3_request* request, ds3_bool value) {
1312  _set_query_param_flag(request, "latest", value);
1313 
1314 }
1315 void ds3_request_set_library_id(const ds3_request* request, const char* value) {
1316  _set_query_param(request, "library_id", value);
1317 
1318 }
1320  _set_query_param(request, "ltfs_file_naming", (const char*)_get_ds3_ltfs_file_naming_mode_str(value));
1321 
1322 }
1323 void ds3_request_set_management_url(const ds3_request* request, const char* value) {
1324  _set_query_param(request, "management_url", value);
1325 
1326 }
1327 void ds3_request_set_marker(const ds3_request* request, const char* value) {
1328  _set_query_param(request, "marker", value);
1329 
1330 }
1331 void ds3_request_set_max_capacity_in_bytes(const ds3_request* request, const uint64_t value) {
1332  _set_query_param_uint64_t(request, "max_capacity_in_bytes", value);
1333 
1334 }
1335 void ds3_request_set_max_keys(const ds3_request* request, const int value) {
1336  _set_query_param_int(request, "max_keys", value);
1337 
1338 }
1339 void ds3_request_set_max_parts(const ds3_request* request, const int value) {
1340  _set_query_param_int(request, "max_parts", value);
1341 
1342 }
1343 void ds3_request_set_max_tape_fragmentation_percent(const ds3_request* request, const int value) {
1344  _set_query_param_int(request, "max_tape_fragmentation_percent", value);
1345 
1346 }
1347 void ds3_request_set_max_upload_size(const ds3_request* request, const uint64_t value) {
1348  _set_query_param_uint64_t(request, "max_upload_size", value);
1349 
1350 }
1351 void ds3_request_set_max_uploads(const ds3_request* request, const int value) {
1352  _set_query_param_int(request, "max_uploads", value);
1353 
1354 }
1356  _set_query_param_int(request, "maximum_auto_verification_frequency_in_days", value);
1357 
1358 }
1360  _set_query_param_flag(request, "media_ejection_allowed", value);
1361 
1362 }
1363 void ds3_request_set_member_group_id(const ds3_request* request, const char* value) {
1364  _set_query_param(request, "member_group_id", value);
1365 
1366 }
1367 void ds3_request_set_member_user_id(const ds3_request* request, const char* value) {
1368  _set_query_param(request, "member_user_id", value);
1369 
1370 }
1371 void ds3_request_set_minimum_days_to_retain(const ds3_request* request, const int value) {
1372  _set_query_param_int(request, "minimum_days_to_retain", value);
1373 
1374 }
1375 void ds3_request_set_name(const ds3_request* request, const char* value) {
1376  _set_query_param(request, "name", value);
1377 
1378 }
1380  _set_query_param(request, "naming_convention", (const char*)_get_ds3_naming_convention_type_str(value));
1381 
1382 }
1383 void ds3_request_set_node_id(const ds3_request* request, const char* value) {
1384  _set_query_param(request, "node_id", value);
1385 
1386 }
1388  _set_query_param(request, "notification_http_method", (const char*)_get_ds3_request_type_str(value));
1389 
1390 }
1391 void ds3_request_set_offset(const ds3_request* request, const uint64_t value) {
1392  _set_query_param_uint64_t(request, "offset", value);
1393 
1394 }
1395 void ds3_request_set_page_length(const ds3_request* request, const int value) {
1396  _set_query_param_int(request, "page_length", value);
1397 
1398 }
1399 void ds3_request_set_page_offset(const ds3_request* request, const int value) {
1400  _set_query_param_int(request, "page_offset", value);
1401 
1402 }
1403 void ds3_request_set_page_start_marker(const ds3_request* request, const char* value) {
1404  _set_query_param(request, "page_start_marker", value);
1405 
1406 }
1407 void ds3_request_set_part_number_marker(const ds3_request* request, const int value) {
1408  _set_query_param_int(request, "part_number_marker", value);
1409 
1410 }
1411 void ds3_request_set_partition_id(const ds3_request* request, const char* value) {
1412  _set_query_param(request, "partition_id", value);
1413 
1414 }
1416  _set_query_param(request, "permission", (const char*)_get_ds3_bucket_acl_permission_str(value));
1417 
1418 }
1420  _set_query_param(request, "pool_health", (const char*)_get_ds3_pool_health_str(value));
1421 
1422 }
1423 void ds3_request_set_pool_id(const ds3_request* request, const char* value) {
1424  _set_query_param(request, "pool_id", value);
1425 
1426 }
1427 void ds3_request_set_pool_partition_id(const ds3_request* request, const char* value) {
1428  _set_query_param(request, "pool_partition_id", value);
1429 
1430 }
1432  _set_query_param(request, "pool_state", (const char*)_get_ds3_pool_state_str(value));
1433 
1434 }
1436  _set_query_param(request, "pool_type", (const char*)_get_ds3_pool_type_str(value));
1437 
1438 }
1439 void ds3_request_set_powered_on(const ds3_request* request, ds3_bool value) {
1440  _set_query_param_flag(request, "powered_on", value);
1441 
1442 }
1443 void ds3_request_set_preferred_number_of_chunks(const ds3_request* request, const int value) {
1444  _set_query_param_int(request, "preferred_number_of_chunks", value);
1445 
1446 }
1447 void ds3_request_set_prefix(const ds3_request* request, const char* value) {
1448  _set_query_param(request, "prefix", value);
1449 
1450 }
1452  _set_query_param(request, "previous_state", (const char*)_get_ds3_tape_state_str(value));
1453 
1454 }
1456  _set_query_param(request, "priority", (const char*)_get_ds3_priority_str(value));
1457 
1458 }
1460  _set_query_param(request, "quiesced", (const char*)_get_ds3_quiesced_str(value));
1461 
1462 }
1464  _set_query_param(request, "rebuild_priority", (const char*)_get_ds3_priority_str(value));
1465 
1466 }
1467 void ds3_request_set_rechunked(const ds3_request* request, const char* value) {
1468  _set_query_param(request, "rechunked", value);
1469 
1470 }
1472  _set_query_param(request, "request_type", (const char*)_get_ds3_job_request_type_str(value));
1473 
1474 }
1475 void ds3_request_set_roll_back(const ds3_request* request, ds3_bool value) {
1476  _set_query_param_flag(request, "roll_back", value);
1477 
1478 }
1479 void ds3_request_set_serial_number(const ds3_request* request, const char* value) {
1480  _set_query_param(request, "serial_number", value);
1481 
1482 }
1484  _set_query_param(request, "state", (const char*)_get_ds3_data_persistence_rule_state_str(value));
1485 
1486 }
1488  _set_query_param(request, "state", (const char*)_get_ds3_pool_state_str(value));
1489 
1490 }
1492  _set_query_param(request, "state", (const char*)_get_ds3_storage_domain_member_state_str(value));
1493 
1494 }
1496  _set_query_param(request, "state", (const char*)_get_ds3_tape_drive_state_str(value));
1497 
1498 }
1500  _set_query_param(request, "state", (const char*)_get_ds3_tape_partition_state_str(value));
1501 
1502 }
1504  _set_query_param(request, "state", (const char*)_get_ds3_tape_state_str(value));
1505 
1506 }
1507 void ds3_request_set_storage_domain_id(const ds3_request* request, const char* value) {
1508  _set_query_param(request, "storage_domain_id", value);
1509 
1510 }
1511 void ds3_request_set_tape_drive_id(const ds3_request* request, const char* value) {
1512  _set_query_param(request, "tape_drive_id", value);
1513 
1514 }
1515 void ds3_request_set_tape_id(const ds3_request* request, const char* value) {
1516  _set_query_param(request, "tape_id", value);
1517 
1518 }
1519 void ds3_request_set_tape_partition_id(const ds3_request* request, const char* value) {
1520  _set_query_param(request, "tape_partition_id", value);
1521 
1522 }
1524  _set_query_param(request, "tape_state", (const char*)_get_ds3_tape_state_str(value));
1525 
1526 }
1528  _set_query_param(request, "tape_type", (const char*)_get_ds3_tape_type_str(value));
1529 
1530 }
1532  _set_query_param(request, "task_priority", (const char*)_get_ds3_priority_str(value));
1533 
1534 }
1535 void ds3_request_set_truncated(const ds3_request* request, ds3_bool value) {
1536  _set_query_param_flag(request, "truncated", value);
1537 
1538 }
1540  _set_query_param(request, "type", (const char*)_get_ds3_data_persistence_rule_type_str(value));
1541 
1542 }
1544  _set_query_param(request, "type", (const char*)_get_ds3_s3_object_type_str(value));
1545 
1546 }
1548  _set_query_param(request, "type", (const char*)_get_ds3_pool_failure_type_str(value));
1549 
1550 }
1552  _set_query_param(request, "type", (const char*)_get_ds3_pool_type_str(value));
1553 
1554 }
1556  _set_query_param(request, "type", (const char*)_get_ds3_storage_domain_failure_type_str(value));
1557 
1558 }
1560  _set_query_param(request, "type", (const char*)_get_ds3_system_failure_type_str(value));
1561 
1562 }
1564  _set_query_param(request, "type", (const char*)_get_ds3_tape_drive_type_str(value));
1565 
1566 }
1568  _set_query_param(request, "type", (const char*)_get_ds3_tape_failure_type_str(value));
1569 
1570 }
1572  _set_query_param(request, "type", (const char*)_get_ds3_tape_partition_failure_type_str(value));
1573 
1574 }
1576  _set_query_param(request, "type", (const char*)_get_ds3_tape_type_str(value));
1577 
1578 }
1580  _set_query_param(request, "unavailable_media_policy", (const char*)_get_ds3_unavailable_media_usage_policy_str(value));
1581 
1582 }
1584  _set_query_param_int(request, "unavailable_pool_max_job_retry_in_mins", value);
1585 
1586 }
1588  _set_query_param_int(request, "unavailable_tape_partition_max_job_retry_in_mins", value);
1589 
1590 }
1591 void ds3_request_set_upload_id_marker(const ds3_request* request, const char* value) {
1592  _set_query_param(request, "upload_id_marker", value);
1593 
1594 }
1595 void ds3_request_set_user_id(const ds3_request* request, const char* value) {
1596  _set_query_param(request, "user_id", value);
1597 
1598 }
1600  _set_query_param(request, "verify_prior_to_auto_eject", (const char*)_get_ds3_priority_str(value));
1601 
1602 }
1603 void ds3_request_set_version(const ds3_request* request, const uint64_t value) {
1604  _set_query_param_uint64_t(request, "version", value);
1605 
1606 }
1608  _set_query_param(request, "versioning", (const char*)_get_ds3_versioning_level_str(value));
1609 
1610 }
1612  _set_query_param(request, "write_optimization", (const char*)_get_ds3_write_optimization_str(value));
1613 
1614 }
1616  _set_query_param(request, "write_preference", (const char*)_get_ds3_write_preference_level_str(value));
1617 
1618 }
1620  _set_query_param_flag(request, "write_protected", value);
1621 
1622 }
1623 
1625  struct _ds3_request* request = g_new0(struct _ds3_request, 1);
1626  request->headers = _create_hash_table();
1627  request->query_params = _create_hash_table();
1628  request->verb = verb;
1629  request->path = path;
1630  return request;
1631 }
1632 
1633 static ds3_str* _build_path(const char* path_prefix, const char* bucket_name, const char* object_name) {
1634  ds3_str* buildPathArgs = NULL;
1635  char* escaped_bucket_name = NULL;
1636  char* escaped_object_name = NULL;
1637  char* joined_path = NULL;
1638  char* full_path = NULL;
1639 
1640  if (bucket_name != NULL) {
1641  if (g_str_has_suffix(bucket_name, "/") == TRUE) {
1642  char* chomp_bucket = g_strndup(bucket_name, strlen(bucket_name)-1);
1643  escaped_bucket_name = escape_url(chomp_bucket);
1644  g_free(chomp_bucket);
1645  } else {
1646  escaped_bucket_name = escape_url(bucket_name);
1647  }
1648  }
1649  if (object_name != NULL) {
1650  escaped_object_name = escape_url_object_name(object_name);
1651  }
1652 
1653  joined_path = g_strjoin("/", escaped_bucket_name, escaped_object_name, NULL);
1654  full_path = g_strconcat(path_prefix, joined_path, NULL);
1655  g_free(joined_path);
1656 
1657  buildPathArgs = ds3_str_init(full_path);
1658  g_free(full_path);
1659 
1660  if (escaped_bucket_name != NULL) {
1661  g_free(escaped_bucket_name);
1662  }
1663  if (escaped_object_name != NULL) {
1664  g_free(escaped_object_name);
1665  }
1666 
1667  return buildPathArgs;
1668 }
1669 
1670 ds3_request* ds3_init_abort_multi_part_upload_request(const char* bucket_name, const char* object_name, const char* upload_id) {
1671  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/", bucket_name, object_name));
1672  if (upload_id != NULL) {
1673  _set_query_param((ds3_request*) request, "upload_id", upload_id);
1674  }
1675  return (ds3_request*) request;
1676 }
1677 ds3_request* ds3_init_complete_multi_part_upload_request(const char* bucket_name, const char* object_name, const char* upload_id, const ds3_complete_multipart_upload_response* mpu_list) {
1678  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/", bucket_name, object_name));
1679  if (upload_id != NULL) {
1680  _set_query_param((ds3_request*) request, "upload_id", upload_id);
1681  }
1682  request->mpu_list = (ds3_complete_multipart_upload_response*) mpu_list;
1683 
1684  return (ds3_request*) request;
1685 }
1686 ds3_request* ds3_init_put_bucket_request(const char* bucket_name) {
1687  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/", bucket_name, NULL));
1688  return (ds3_request*) request;
1689 }
1690 ds3_request* ds3_init_put_multi_part_upload_part_request(const char* bucket_name, const char* object_name, const int part_number, const char* upload_id) {
1691  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/", bucket_name, object_name));
1692  char tmp_buff[32];
1693  sprintf(tmp_buff, "%d", part_number);
1694  _set_query_param((ds3_request*) request, "part_number", tmp_buff);
1695 
1696  if (upload_id != NULL) {
1697  _set_query_param((ds3_request*) request, "upload_id", upload_id);
1698  }
1699  return (ds3_request*) request;
1700 }
1701 ds3_request* ds3_init_put_object_request(const char* bucket_name, const char* object_name, const uint64_t length) {
1702  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/", bucket_name, object_name));
1703  request->length = length;
1704 
1705  return (ds3_request*) request;
1706 }
1707 ds3_request* ds3_init_delete_bucket_request(const char* bucket_name) {
1708  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/", bucket_name, NULL));
1709  return (ds3_request*) request;
1710 }
1711 ds3_request* ds3_init_delete_object_request(const char* bucket_name, const char* object_name) {
1712  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/", bucket_name, object_name));
1713  return (ds3_request*) request;
1714 }
1715 ds3_request* ds3_init_delete_objects_request(const char* bucket_name, const ds3_delete_objects_response* objects_list) {
1716  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/", bucket_name, NULL));
1717  _set_query_param((ds3_request*) request, "delete", NULL);
1718 
1719  request->delete_objects = (ds3_delete_objects_response*) objects_list;
1720 
1721  return (ds3_request*) request;
1722 }
1723 ds3_request* ds3_init_get_bucket_request(const char* bucket_name) {
1724  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/", bucket_name, NULL));
1725  return (ds3_request*) request;
1726 }
1728  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/", NULL, NULL));
1729  return (ds3_request*) request;
1730 }
1731 ds3_request* ds3_init_get_object_request(const char* bucket_name, const char* object_name, const uint64_t length) {
1732  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/", bucket_name, object_name));
1733  request->length = length;
1734 
1735  return (ds3_request*) request;
1736 }
1737 ds3_request* ds3_init_head_bucket_request(const char* bucket_name) {
1738  struct _ds3_request* request = _common_request_init(HTTP_HEAD, _build_path("/", bucket_name, NULL));
1739  return (ds3_request*) request;
1740 }
1741 ds3_request* ds3_init_head_object_request(const char* bucket_name, const char* object_name) {
1742  struct _ds3_request* request = _common_request_init(HTTP_HEAD, _build_path("/", bucket_name, object_name));
1743  return (ds3_request*) request;
1744 }
1745 ds3_request* ds3_init_initiate_multi_part_upload_request(const char* bucket_name, const char* object_name) {
1746  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/", bucket_name, object_name));
1747  _set_query_param((ds3_request*) request, "uploads", NULL);
1748 
1749  return (ds3_request*) request;
1750 }
1751 ds3_request* ds3_init_list_multi_part_upload_parts_request(const char* bucket_name, const char* object_name, const char* upload_id) {
1752  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/", bucket_name, object_name));
1753  if (upload_id != NULL) {
1754  _set_query_param((ds3_request*) request, "upload_id", upload_id);
1755  }
1756  return (ds3_request*) request;
1757 }
1759  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/", bucket_name, NULL));
1760  _set_query_param((ds3_request*) request, "uploads", NULL);
1761 
1762  return (ds3_request*) request;
1763 }
1764 ds3_request* ds3_init_put_bucket_acl_for_group_spectra_s3_request(const char* bucket_id, const char* group_id, const ds3_bucket_acl_permission permission) {
1765  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/bucket_acl/", NULL, NULL));
1766  if (bucket_id != NULL) {
1767  _set_query_param((ds3_request*) request, "bucket_id", bucket_id);
1768  }
1769  if (group_id != NULL) {
1770  _set_query_param((ds3_request*) request, "group_id", group_id);
1771  }
1772  _set_query_param((ds3_request*) request, "permission", _get_ds3_bucket_acl_permission_str(permission));
1773 
1774  return (ds3_request*) request;
1775 }
1776 ds3_request* ds3_init_put_bucket_acl_for_user_spectra_s3_request(const char* bucket_id, const ds3_bucket_acl_permission permission, const char* user_id) {
1777  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/bucket_acl/", NULL, NULL));
1778  if (bucket_id != NULL) {
1779  _set_query_param((ds3_request*) request, "bucket_id", bucket_id);
1780  }
1781  _set_query_param((ds3_request*) request, "permission", _get_ds3_bucket_acl_permission_str(permission));
1782 
1783  if (user_id != NULL) {
1784  _set_query_param((ds3_request*) request, "user_id", user_id);
1785  }
1786  return (ds3_request*) request;
1787 }
1788 ds3_request* ds3_init_put_data_policy_acl_for_group_spectra_s3_request(const char* data_policy_id, const char* group_id) {
1789  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/data_policy_acl/", NULL, NULL));
1790  if (data_policy_id != NULL) {
1791  _set_query_param((ds3_request*) request, "data_policy_id", data_policy_id);
1792  }
1793  if (group_id != NULL) {
1794  _set_query_param((ds3_request*) request, "group_id", group_id);
1795  }
1796  return (ds3_request*) request;
1797 }
1798 ds3_request* ds3_init_put_data_policy_acl_for_user_spectra_s3_request(const char* data_policy_id, const char* user_id) {
1799  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/data_policy_acl/", NULL, NULL));
1800  if (data_policy_id != NULL) {
1801  _set_query_param((ds3_request*) request, "data_policy_id", data_policy_id);
1802  }
1803  if (user_id != NULL) {
1804  _set_query_param((ds3_request*) request, "user_id", user_id);
1805  }
1806  return (ds3_request*) request;
1807 }
1809  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/bucket_acl/", NULL, NULL));
1810  if (group_id != NULL) {
1811  _set_query_param((ds3_request*) request, "group_id", group_id);
1812  }
1813  _set_query_param((ds3_request*) request, "permission", _get_ds3_bucket_acl_permission_str(permission));
1814 
1815  return (ds3_request*) request;
1816 }
1818  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/bucket_acl/", NULL, NULL));
1819  _set_query_param((ds3_request*) request, "permission", _get_ds3_bucket_acl_permission_str(permission));
1820 
1821  if (user_id != NULL) {
1822  _set_query_param((ds3_request*) request, "user_id", user_id);
1823  }
1824  return (ds3_request*) request;
1825 }
1827  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/data_policy_acl/", NULL, NULL));
1828  if (group_id != NULL) {
1829  _set_query_param((ds3_request*) request, "group_id", group_id);
1830  }
1831  return (ds3_request*) request;
1832 }
1834  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/data_policy_acl/", NULL, NULL));
1835  if (user_id != NULL) {
1836  _set_query_param((ds3_request*) request, "user_id", user_id);
1837  }
1838  return (ds3_request*) request;
1839 }
1841  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/bucket_acl/", resource_id, NULL));
1842  return (ds3_request*) request;
1843 }
1845  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/data_policy_acl/", resource_id, NULL));
1846  return (ds3_request*) request;
1847 }
1849  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/bucket_acl/", resource_id, NULL));
1850  return (ds3_request*) request;
1851 }
1853  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/bucket_acl/", NULL, NULL));
1854  return (ds3_request*) request;
1855 }
1857  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/data_policy_acl/", resource_id, NULL));
1858  return (ds3_request*) request;
1859 }
1861  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/data_policy_acl/", NULL, NULL));
1862  return (ds3_request*) request;
1863 }
1865  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/bucket/", NULL, NULL));
1866  if (name != NULL) {
1867  _set_query_param((ds3_request*) request, "name", name);
1868  }
1869  return (ds3_request*) request;
1870 }
1872  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/bucket/", resource_id, NULL));
1873  return (ds3_request*) request;
1874 }
1876  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/bucket/", resource_id, NULL));
1877  return (ds3_request*) request;
1878 }
1880  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/bucket/", NULL, NULL));
1881  return (ds3_request*) request;
1882 }
1884  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/bucket/", resource_id, NULL));
1885  return (ds3_request*) request;
1886 }
1888  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/cache_filesystem/", NULL, NULL));
1889  _set_query_param((ds3_request*) request, "reclaim", NULL);
1890 
1891  return (ds3_request*) request;
1892 }
1894  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/cache_filesystem/", resource_id, NULL));
1895  return (ds3_request*) request;
1896 }
1898  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/cache_filesystem/", NULL, NULL));
1899  return (ds3_request*) request;
1900 }
1902  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/cache_state/", NULL, NULL));
1903  return (ds3_request*) request;
1904 }
1906  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/cache_filesystem/", resource_id, NULL));
1907  return (ds3_request*) request;
1908 }
1909 ds3_request* ds3_init_get_bucket_capacity_summary_spectra_s3_request(const char* bucket_id, const char* storage_domain_id) {
1910  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/capacity_summary/", NULL, NULL));
1911  if (bucket_id != NULL) {
1912  _set_query_param((ds3_request*) request, "bucket_id", bucket_id);
1913  }
1914  if (storage_domain_id != NULL) {
1915  _set_query_param((ds3_request*) request, "storage_domain_id", storage_domain_id);
1916  }
1917  return (ds3_request*) request;
1918 }
1920  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/capacity_summary/", NULL, NULL));
1921  if (storage_domain_id != NULL) {
1922  _set_query_param((ds3_request*) request, "storage_domain_id", storage_domain_id);
1923  }
1924  return (ds3_request*) request;
1925 }
1927  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/capacity_summary/", NULL, NULL));
1928  return (ds3_request*) request;
1929 }
1931  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/data_path_backend/", NULL, NULL));
1932  return (ds3_request*) request;
1933 }
1935  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/blob_store_task/", NULL, NULL));
1936  return (ds3_request*) request;
1937 }
1939  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/data_path_backend/", NULL, NULL));
1940  return (ds3_request*) request;
1941 }
1942 ds3_request* ds3_init_put_data_persistence_rule_spectra_s3_request(const char* data_policy_id, const ds3_data_isolation_level isolation_level, const char* storage_domain_id, const ds3_data_persistence_rule_type type) {
1943  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/data_persistence_rule/", NULL, NULL));
1944  if (data_policy_id != NULL) {
1945  _set_query_param((ds3_request*) request, "data_policy_id", data_policy_id);
1946  }
1947  _set_query_param((ds3_request*) request, "isolation_level", _get_ds3_data_isolation_level_str(isolation_level));
1948 
1949  if (storage_domain_id != NULL) {
1950  _set_query_param((ds3_request*) request, "storage_domain_id", storage_domain_id);
1951  }
1953 
1954  return (ds3_request*) request;
1955 }
1957  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/data_policy/", NULL, NULL));
1958  if (name != NULL) {
1959  _set_query_param((ds3_request*) request, "name", name);
1960  }
1961  return (ds3_request*) request;
1962 }
1964  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/data_persistence_rule/", resource_id, NULL));
1965  return (ds3_request*) request;
1966 }
1968  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/data_policy/", resource_id, NULL));
1969  return (ds3_request*) request;
1970 }
1972  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/data_persistence_rule/", resource_id, NULL));
1973  return (ds3_request*) request;
1974 }
1976  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/data_persistence_rule/", NULL, NULL));
1977  return (ds3_request*) request;
1978 }
1980  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/data_policy/", NULL, NULL));
1981  return (ds3_request*) request;
1982 }
1984  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/data_policy/", resource_id, NULL));
1985  return (ds3_request*) request;
1986 }
1988  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/data_persistence_rule/", resource_id, NULL));
1989  return (ds3_request*) request;
1990 }
1992  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/data_policy/", resource_id, NULL));
1993  return (ds3_request*) request;
1994 }
1996  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/degraded_bucket/", NULL, NULL));
1997  return (ds3_request*) request;
1998 }
2000  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/degraded_data_persistence_rule/", NULL, NULL));
2001  return (ds3_request*) request;
2002 }
2003 ds3_request* ds3_init_put_group_group_member_spectra_s3_request(const char* group_id, const char* member_group_id) {
2004  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/group_member/", NULL, NULL));
2005  if (group_id != NULL) {
2006  _set_query_param((ds3_request*) request, "group_id", group_id);
2007  }
2008  if (member_group_id != NULL) {
2009  _set_query_param((ds3_request*) request, "member_group_id", member_group_id);
2010  }
2011  return (ds3_request*) request;
2012 }
2014  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/group/", NULL, NULL));
2015  if (name != NULL) {
2016  _set_query_param((ds3_request*) request, "name", name);
2017  }
2018  return (ds3_request*) request;
2019 }
2020 ds3_request* ds3_init_put_user_group_member_spectra_s3_request(const char* group_id, const char* member_user_id) {
2021  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/group_member/", NULL, NULL));
2022  if (group_id != NULL) {
2023  _set_query_param((ds3_request*) request, "group_id", group_id);
2024  }
2025  if (member_user_id != NULL) {
2026  _set_query_param((ds3_request*) request, "member_user_id", member_user_id);
2027  }
2028  return (ds3_request*) request;
2029 }
2031  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/group_member/", resource_id, NULL));
2032  return (ds3_request*) request;
2033 }
2035  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/group/", resource_id, NULL));
2036  return (ds3_request*) request;
2037 }
2039  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/group_member/", resource_id, NULL));
2040  return (ds3_request*) request;
2041 }
2043  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/group_member/", NULL, NULL));
2044  return (ds3_request*) request;
2045 }
2047  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/group/", resource_id, NULL));
2048  return (ds3_request*) request;
2049 }
2051  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/group/", NULL, NULL));
2052  return (ds3_request*) request;
2053 }
2055  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/group/", resource_id, NULL));
2056  return (ds3_request*) request;
2057 }
2059  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/group/", resource_id, NULL));
2060  _set_query_param((ds3_request*) request, "operation", "VERIFY");
2061 
2062  return (ds3_request*) request;
2063 }
2065  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/job_chunk/", resource_id, NULL));
2066  _set_query_param((ds3_request*) request, "operation", "ALLOCATE");
2067 
2068  return (ds3_request*) request;
2069 }
2071  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/job/", NULL, NULL));
2072  return (ds3_request*) request;
2073 }
2075  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/job/", resource_id, NULL));
2076  return (ds3_request*) request;
2077 }
2079  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/canceled_job/", NULL, NULL));
2080  return (ds3_request*) request;
2081 }
2083  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/completed_job/", NULL, NULL));
2084  return (ds3_request*) request;
2085 }
2087  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/bucket/", resource_id, NULL));
2088  _set_query_param((ds3_request*) request, "operation", "START_BULK_GET");
2089 
2090  request->object_list = (ds3_bulk_object_list_response*) object_list;
2091 
2092  return (ds3_request*) request;
2093 }
2095  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/bucket/", resource_id, NULL));
2096  _set_query_param((ds3_request*) request, "operation", "START_BULK_PUT");
2097 
2098  request->object_list = (ds3_bulk_object_list_response*) object_list;
2099 
2100  return (ds3_request*) request;
2101 }
2103  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/bucket/", resource_id, NULL));
2104  _set_query_param((ds3_request*) request, "operation", "START_BULK_VERIFY");
2105 
2106  request->object_list = (ds3_bulk_object_list_response*) object_list;
2107 
2108  return (ds3_request*) request;
2109 }
2111  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/active_job/", NULL, NULL));
2112  return (ds3_request*) request;
2113 }
2115  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/canceled_job/", NULL, NULL));
2116  return (ds3_request*) request;
2117 }
2119  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/completed_job/", NULL, NULL));
2120  return (ds3_request*) request;
2121 }
2123  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/job_chunk/", resource_id, NULL));
2124  return (ds3_request*) request;
2125 }
2127  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/job_chunk/", NULL, NULL));
2128  if (job != NULL) {
2129  _set_query_param((ds3_request*) request, "job", job);
2130  }
2131  return (ds3_request*) request;
2132 }
2134  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/job/", resource_id, NULL));
2135  return (ds3_request*) request;
2136 }
2138  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/job/", NULL, NULL));
2139  return (ds3_request*) request;
2140 }
2142  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/job/", resource_id, NULL));
2143  _set_query_param((ds3_request*) request, "replicate", NULL);
2144 
2145  return (ds3_request*) request;
2146 }
2148  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/job/", resource_id, NULL));
2149  return (ds3_request*) request;
2150 }
2151 ds3_request* ds3_init_replicate_put_job_spectra_s3_request(const char* resource_id, const char* payload) {
2152  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/bucket/", resource_id, NULL));
2153  _set_query_param((ds3_request*) request, "operation", "START_BULK_PUT");
2154 
2155  _set_query_param((ds3_request*) request, "replicate", NULL);
2156 
2157  if (payload != NULL) {
2158  request->delete_objects->strings_list[0]->value = (char*) payload;
2159  request->delete_objects->strings_list[0]->size = strlen(payload); }
2160  return (ds3_request*) request;
2161 }
2163  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/node/", resource_id, NULL));
2164  return (ds3_request*) request;
2165 }
2167  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/node/", NULL, NULL));
2168  return (ds3_request*) request;
2169 }
2171  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/node/", resource_id, NULL));
2172  return (ds3_request*) request;
2173 }
2175  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/job_completed_notification_registration/", NULL, NULL));
2176  if (notification_end_point != NULL) {
2177  _set_query_param((ds3_request*) request, "notification_end_point", notification_end_point);
2178  }
2179  return (ds3_request*) request;
2180 }
2182  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/job_created_notification_registration/", NULL, NULL));
2183  if (notification_end_point != NULL) {
2184  _set_query_param((ds3_request*) request, "notification_end_point", notification_end_point);
2185  }
2186  return (ds3_request*) request;
2187 }
2189  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/object_cached_notification_registration/", NULL, NULL));
2190  if (notification_end_point != NULL) {
2191  _set_query_param((ds3_request*) request, "notification_end_point", notification_end_point);
2192  }
2193  return (ds3_request*) request;
2194 }
2196  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/object_lost_notification_registration/", NULL, NULL));
2197  if (notification_end_point != NULL) {
2198  _set_query_param((ds3_request*) request, "notification_end_point", notification_end_point);
2199  }
2200  return (ds3_request*) request;
2201 }
2203  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/object_persisted_notification_registration/", NULL, NULL));
2204  if (notification_end_point != NULL) {
2205  _set_query_param((ds3_request*) request, "notification_end_point", notification_end_point);
2206  }
2207  return (ds3_request*) request;
2208 }
2210  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/pool_failure_notification_registration/", NULL, NULL));
2211  if (notification_end_point != NULL) {
2212  _set_query_param((ds3_request*) request, "notification_end_point", notification_end_point);
2213  }
2214  return (ds3_request*) request;
2215 }
2217  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/storage_domain_failure_notification_registration/", NULL, NULL));
2218  if (notification_end_point != NULL) {
2219  _set_query_param((ds3_request*) request, "notification_end_point", notification_end_point);
2220  }
2221  return (ds3_request*) request;
2222 }
2224  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/system_failure_notification_registration/", NULL, NULL));
2225  if (notification_end_point != NULL) {
2226  _set_query_param((ds3_request*) request, "notification_end_point", notification_end_point);
2227  }
2228  return (ds3_request*) request;
2229 }
2231  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/tape_failure_notification_registration/", NULL, NULL));
2232  if (notification_end_point != NULL) {
2233  _set_query_param((ds3_request*) request, "notification_end_point", notification_end_point);
2234  }
2235  return (ds3_request*) request;
2236 }
2238  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/tape_partition_failure_notification_registration/", NULL, NULL));
2239  if (notification_end_point != NULL) {
2240  _set_query_param((ds3_request*) request, "notification_end_point", notification_end_point);
2241  }
2242  return (ds3_request*) request;
2243 }
2245  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/job_completed_notification_registration/", NULL, NULL));
2246  return (ds3_request*) request;
2247 }
2249  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/job_created_notification_registration/", NULL, NULL));
2250  return (ds3_request*) request;
2251 }
2253  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/object_cached_notification_registration/", NULL, NULL));
2254  return (ds3_request*) request;
2255 }
2257  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/object_lost_notification_registration/", NULL, NULL));
2258  return (ds3_request*) request;
2259 }
2261  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/object_persisted_notification_registration/", NULL, NULL));
2262  return (ds3_request*) request;
2263 }
2265  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/pool_failure_notification_registration/", NULL, NULL));
2266  return (ds3_request*) request;
2267 }
2269  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/storage_domain_failure_notification_registration/", NULL, NULL));
2270  return (ds3_request*) request;
2271 }
2273  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/system_failure_notification_registration/", NULL, NULL));
2274  return (ds3_request*) request;
2275 }
2277  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/tape_failure_notification_registration/", NULL, NULL));
2278  return (ds3_request*) request;
2279 }
2281  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/tape_partition_failure_notification_registration/", NULL, NULL));
2282  return (ds3_request*) request;
2283 }
2285  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/job_completed_notification_registration/", NULL, NULL));
2286  return (ds3_request*) request;
2287 }
2289  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/job_completed_notification_registration/", NULL, NULL));
2290  return (ds3_request*) request;
2291 }
2293  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/job_created_notification_registration/", NULL, NULL));
2294  return (ds3_request*) request;
2295 }
2297  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/job_created_notification_registration/", NULL, NULL));
2298  return (ds3_request*) request;
2299 }
2301  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/object_cached_notification_registration/", NULL, NULL));
2302  return (ds3_request*) request;
2303 }
2305  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/object_cached_notification_registration/", NULL, NULL));
2306  return (ds3_request*) request;
2307 }
2309  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/object_lost_notification_registration/", NULL, NULL));
2310  return (ds3_request*) request;
2311 }
2313  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/object_lost_notification_registration/", NULL, NULL));
2314  return (ds3_request*) request;
2315 }
2317  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/object_persisted_notification_registration/", NULL, NULL));
2318  return (ds3_request*) request;
2319 }
2321  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/object_persisted_notification_registration/", NULL, NULL));
2322  return (ds3_request*) request;
2323 }
2325  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/pool_failure_notification_registration/", NULL, NULL));
2326  return (ds3_request*) request;
2327 }
2329  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/pool_failure_notification_registration/", NULL, NULL));
2330  return (ds3_request*) request;
2331 }
2333  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/storage_domain_failure_notification_registration/", NULL, NULL));
2334  return (ds3_request*) request;
2335 }
2337  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/storage_domain_failure_notification_registration/", NULL, NULL));
2338  return (ds3_request*) request;
2339 }
2341  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/system_failure_notification_registration/", NULL, NULL));
2342  return (ds3_request*) request;
2343 }
2345  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/system_failure_notification_registration/", NULL, NULL));
2346  return (ds3_request*) request;
2347 }
2349  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_failure_notification_registration/", NULL, NULL));
2350  return (ds3_request*) request;
2351 }
2353  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_failure_notification_registration/", NULL, NULL));
2354  return (ds3_request*) request;
2355 }
2357  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_partition_failure_notification_registration/", NULL, NULL));
2358  return (ds3_request*) request;
2359 }
2361  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_partition_failure_notification_registration/", NULL, NULL));
2362  return (ds3_request*) request;
2363 }
2364 ds3_request* ds3_init_delete_folder_recursively_spectra_s3_request(const char* resource_id, const char* bucket_id) {
2365  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/folder/", resource_id, NULL));
2366  if (bucket_id != NULL) {
2367  _set_query_param((ds3_request*) request, "bucket_id", bucket_id);
2368  }
2369  _set_query_param((ds3_request*) request, "recursive", NULL);
2370 
2371  return (ds3_request*) request;
2372 }
2373 ds3_request* ds3_init_get_object_spectra_s3_request(const char* resource_id, const char* bucket_id) {
2374  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/object/", resource_id, NULL));
2375  if (bucket_id != NULL) {
2376  _set_query_param((ds3_request*) request, "bucket_id", bucket_id);
2377  }
2378  return (ds3_request*) request;
2379 }
2381  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/object/", NULL, NULL));
2382  return (ds3_request*) request;
2383 }
2385  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/object/", NULL, NULL));
2386  _set_query_param((ds3_request*) request, "full_details", NULL);
2387 
2388  return (ds3_request*) request;
2389 }
2391  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/bucket/", resource_id, NULL));
2392  _set_query_param((ds3_request*) request, "operation", "GET_PHYSICAL_PLACEMENT");
2393 
2394  request->object_list = (ds3_bulk_object_list_response*) object_list;
2395 
2396  return (ds3_request*) request;
2397 }
2399  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/bucket/", resource_id, NULL));
2400  _set_query_param((ds3_request*) request, "full_details", NULL);
2401 
2402  _set_query_param((ds3_request*) request, "operation", "GET_PHYSICAL_PLACEMENT");
2403 
2404  request->object_list = (ds3_bulk_object_list_response*) object_list;
2405 
2406  return (ds3_request*) request;
2407 }
2409  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/bucket/", resource_id, NULL));
2410  _set_query_param((ds3_request*) request, "operation", "VERIFY_PHYSICAL_PLACEMENT");
2411 
2412  request->object_list = (ds3_bulk_object_list_response*) object_list;
2413 
2414  return (ds3_request*) request;
2415 }
2417  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/bucket/", resource_id, NULL));
2418  _set_query_param((ds3_request*) request, "full_details", NULL);
2419 
2420  _set_query_param((ds3_request*) request, "operation", "VERIFY_PHYSICAL_PLACEMENT");
2421 
2422  request->object_list = (ds3_bulk_object_list_response*) object_list;
2423 
2424  return (ds3_request*) request;
2425 }
2427  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", NULL, NULL));
2428  _set_query_param((ds3_request*) request, "operation", "CANCEL_IMPORT");
2429 
2430  return (ds3_request*) request;
2431 }
2433  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", resource_id, NULL));
2434  _set_query_param((ds3_request*) request, "operation", "CANCEL_IMPORT");
2435 
2436  return (ds3_request*) request;
2437 }
2439  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", NULL, NULL));
2440  _set_query_param((ds3_request*) request, "operation", "COMPACT");
2441 
2442  return (ds3_request*) request;
2443 }
2445  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", resource_id, NULL));
2446  _set_query_param((ds3_request*) request, "operation", "COMPACT");
2447 
2448  return (ds3_request*) request;
2449 }
2451  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/pool_partition/", NULL, NULL));
2452  if (name != NULL) {
2453  _set_query_param((ds3_request*) request, "name", name);
2454  }
2455  _set_query_param((ds3_request*) request, "type", _get_ds3_pool_type_str(type));
2456 
2457  return (ds3_request*) request;
2458 }
2460  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", resource_id, NULL));
2461  _set_query_param((ds3_request*) request, "operation", "DEALLOCATE");
2462 
2463  return (ds3_request*) request;
2464 }
2466  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/pool/", resource_id, NULL));
2467  return (ds3_request*) request;
2468 }
2470  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/pool_failure/", resource_id, NULL));
2471  return (ds3_request*) request;
2472 }
2474  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/pool_partition/", resource_id, NULL));
2475  return (ds3_request*) request;
2476 }
2478  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool_environment/", NULL, NULL));
2479  return (ds3_request*) request;
2480 }
2482  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", NULL, NULL));
2483  _set_query_param((ds3_request*) request, "operation", "FORMAT");
2484 
2485  return (ds3_request*) request;
2486 }
2488  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", resource_id, NULL));
2489  _set_query_param((ds3_request*) request, "operation", "FORMAT");
2490 
2491  return (ds3_request*) request;
2492 }
2494  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/pool/", resource_id, NULL));
2495  _set_query_param((ds3_request*) request, "operation", "GET_PHYSICAL_PLACEMENT");
2496 
2497  return (ds3_request*) request;
2498 }
2500  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/pool_failure/", NULL, NULL));
2501  return (ds3_request*) request;
2502 }
2504  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/pool_partition/", resource_id, NULL));
2505  return (ds3_request*) request;
2506 }
2508  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/pool_partition/", NULL, NULL));
2509  return (ds3_request*) request;
2510 }
2512  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/pool/", resource_id, NULL));
2513  return (ds3_request*) request;
2514 }
2516  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/pool/", NULL, NULL));
2517  return (ds3_request*) request;
2518 }
2520  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", NULL, NULL));
2521  _set_query_param((ds3_request*) request, "operation", "IMPORT");
2522 
2523  return (ds3_request*) request;
2524 }
2526  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", resource_id, NULL));
2527  _set_query_param((ds3_request*) request, "operation", "IMPORT");
2528 
2529  return (ds3_request*) request;
2530 }
2532  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", NULL, NULL));
2533  _set_query_param((ds3_request*) request, "quiesced", _get_ds3_quiesced_str(quiesced));
2534 
2535  return (ds3_request*) request;
2536 }
2538  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool_partition/", resource_id, NULL));
2539  return (ds3_request*) request;
2540 }
2542  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", resource_id, NULL));
2543  return (ds3_request*) request;
2544 }
2546  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", NULL, NULL));
2547  _set_query_param((ds3_request*) request, "operation", "VERIFY");
2548 
2549  return (ds3_request*) request;
2550 }
2552  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/pool/", resource_id, NULL));
2553  _set_query_param((ds3_request*) request, "operation", "VERIFY");
2554 
2555  return (ds3_request*) request;
2556 }
2557 ds3_request* ds3_init_put_pool_storage_domain_member_spectra_s3_request(const char* pool_partition_id, const char* storage_domain_id) {
2558  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/storage_domain_member/", NULL, NULL));
2559  if (pool_partition_id != NULL) {
2560  _set_query_param((ds3_request*) request, "pool_partition_id", pool_partition_id);
2561  }
2562  if (storage_domain_id != NULL) {
2563  _set_query_param((ds3_request*) request, "storage_domain_id", storage_domain_id);
2564  }
2565  return (ds3_request*) request;
2566 }
2568  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/storage_domain/", NULL, NULL));
2569  if (name != NULL) {
2570  _set_query_param((ds3_request*) request, "name", name);
2571  }
2572  return (ds3_request*) request;
2573 }
2574 ds3_request* ds3_init_put_tape_storage_domain_member_spectra_s3_request(const char* storage_domain_id, const char* tape_partition_id, const ds3_tape_type tape_type) {
2575  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/storage_domain_member/", NULL, NULL));
2576  if (storage_domain_id != NULL) {
2577  _set_query_param((ds3_request*) request, "storage_domain_id", storage_domain_id);
2578  }
2579  if (tape_partition_id != NULL) {
2580  _set_query_param((ds3_request*) request, "tape_partition_id", tape_partition_id);
2581  }
2582  _set_query_param((ds3_request*) request, "tape_type", _get_ds3_tape_type_str(tape_type));
2583 
2584  return (ds3_request*) request;
2585 }
2587  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/storage_domain_failure/", resource_id, NULL));
2588  return (ds3_request*) request;
2589 }
2591  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/storage_domain_member/", resource_id, NULL));
2592  return (ds3_request*) request;
2593 }
2595  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/storage_domain/", resource_id, NULL));
2596  return (ds3_request*) request;
2597 }
2599  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/storage_domain_failure/", NULL, NULL));
2600  return (ds3_request*) request;
2601 }
2603  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/storage_domain_member/", resource_id, NULL));
2604  return (ds3_request*) request;
2605 }
2607  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/storage_domain_member/", NULL, NULL));
2608  return (ds3_request*) request;
2609 }
2611  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/storage_domain/", resource_id, NULL));
2612  return (ds3_request*) request;
2613 }
2615  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/storage_domain/", NULL, NULL));
2616  return (ds3_request*) request;
2617 }
2619  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/storage_domain_member/", resource_id, NULL));
2620  return (ds3_request*) request;
2621 }
2623  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/storage_domain/", resource_id, NULL));
2624  return (ds3_request*) request;
2625 }
2627  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/system_failure/", NULL, NULL));
2628  return (ds3_request*) request;
2629 }
2631  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/system_information/", NULL, NULL));
2632  return (ds3_request*) request;
2633 }
2635  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/system_health/", NULL, NULL));
2636  return (ds3_request*) request;
2637 }
2639  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2640  _set_query_param((ds3_request*) request, "operation", "CANCEL_EJECT");
2641 
2642  return (ds3_request*) request;
2643 }
2645  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2646  _set_query_param((ds3_request*) request, "operation", "CANCEL_EJECT");
2647 
2648  return (ds3_request*) request;
2649 }
2651  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2652  _set_query_param((ds3_request*) request, "operation", "CANCEL_FORMAT");
2653 
2654  return (ds3_request*) request;
2655 }
2657  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2658  _set_query_param((ds3_request*) request, "operation", "CANCEL_FORMAT");
2659 
2660  return (ds3_request*) request;
2661 }
2663  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2664  _set_query_param((ds3_request*) request, "operation", "CANCEL_IMPORT");
2665 
2666  return (ds3_request*) request;
2667 }
2669  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2670  _set_query_param((ds3_request*) request, "operation", "CANCEL_IMPORT");
2671 
2672  return (ds3_request*) request;
2673 }
2675  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2676  _set_query_param((ds3_request*) request, "operation", "CANCEL_ONLINE");
2677 
2678  return (ds3_request*) request;
2679 }
2681  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2682  _set_query_param((ds3_request*) request, "operation", "CANCEL_ONLINE");
2683 
2684  return (ds3_request*) request;
2685 }
2687  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape_drive/", resource_id, NULL));
2688  _set_query_param((ds3_request*) request, "operation", "CLEAN");
2689 
2690  return (ds3_request*) request;
2691 }
2693  struct _ds3_request* request = _common_request_init(HTTP_POST, _build_path("/_rest_/tape_density_directive/", NULL, NULL));
2694  _set_query_param((ds3_request*) request, "density", _get_ds3_tape_drive_type_str(density));
2695 
2696  if (partition_id != NULL) {
2697  _set_query_param((ds3_request*) request, "partition_id", partition_id);
2698  }
2699  _set_query_param((ds3_request*) request, "tape_type", _get_ds3_tape_type_str(tape_type));
2700 
2701  return (ds3_request*) request;
2702 }
2704  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/tape/", resource_id, NULL));
2705  return (ds3_request*) request;
2706 }
2708  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/tape_density_directive/", resource_id, NULL));
2709  return (ds3_request*) request;
2710 }
2712  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/tape_drive/", resource_id, NULL));
2713  return (ds3_request*) request;
2714 }
2716  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/tape_failure/", resource_id, NULL));
2717  return (ds3_request*) request;
2718 }
2720  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/tape_partition_failure/", resource_id, NULL));
2721  return (ds3_request*) request;
2722 }
2724  struct _ds3_request* request = _common_request_init(HTTP_DELETE, _build_path("/_rest_/tape_partition/", resource_id, NULL));
2725  return (ds3_request*) request;
2726 }
2728  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2729  _set_query_param((ds3_request*) request, "operation", "EJECT");
2730 
2731  return (ds3_request*) request;
2732 }
2734  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2735  _set_query_param((ds3_request*) request, "blobs", NULL);
2736 
2737  if (bucket_id != NULL) {
2738  _set_query_param((ds3_request*) request, "bucket_id", bucket_id);
2739  }
2740  _set_query_param((ds3_request*) request, "operation", "EJECT");
2741 
2742  if (storage_domain_id != NULL) {
2743  _set_query_param((ds3_request*) request, "storage_domain_id", storage_domain_id);
2744  }
2745  request->object_list = (ds3_bulk_object_list_response*) object_list;
2746 
2747  return (ds3_request*) request;
2748 }
2750  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2751  _set_query_param((ds3_request*) request, "operation", "EJECT");
2752 
2753  if (storage_domain_id != NULL) {
2754  _set_query_param((ds3_request*) request, "storage_domain_id", storage_domain_id);
2755  }
2756  request->object_list = (ds3_bulk_object_list_response*) object_list;
2757 
2758  return (ds3_request*) request;
2759 }
2761  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2762  _set_query_param((ds3_request*) request, "operation", "EJECT");
2763 
2764  return (ds3_request*) request;
2765 }
2767  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape_environment/", NULL, NULL));
2768  return (ds3_request*) request;
2769 }
2771  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2772  _set_query_param((ds3_request*) request, "operation", "FORMAT");
2773 
2774  return (ds3_request*) request;
2775 }
2777  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2778  _set_query_param((ds3_request*) request, "operation", "FORMAT");
2779 
2780  return (ds3_request*) request;
2781 }
2783  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape/", resource_id, NULL));
2784  _set_query_param((ds3_request*) request, "operation", "GET_PHYSICAL_PLACEMENT");
2785 
2786  return (ds3_request*) request;
2787 }
2789  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_density_directive/", resource_id, NULL));
2790  return (ds3_request*) request;
2791 }
2793  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_density_directive/", NULL, NULL));
2794  return (ds3_request*) request;
2795 }
2797  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_drive/", resource_id, NULL));
2798  return (ds3_request*) request;
2799 }
2801  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_drive/", NULL, NULL));
2802  return (ds3_request*) request;
2803 }
2805  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_failure/", NULL, NULL));
2806  return (ds3_request*) request;
2807 }
2809  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_library/", NULL, NULL));
2810  return (ds3_request*) request;
2811 }
2813  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_library/", resource_id, NULL));
2814  return (ds3_request*) request;
2815 }
2817  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_partition_failure/", NULL, NULL));
2818  return (ds3_request*) request;
2819 }
2821  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_partition/", resource_id, NULL));
2822  return (ds3_request*) request;
2823 }
2825  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_partition/", resource_id, NULL));
2826  _set_query_param((ds3_request*) request, "full_details", NULL);
2827 
2828  return (ds3_request*) request;
2829 }
2831  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_partition/", NULL, NULL));
2832  return (ds3_request*) request;
2833 }
2835  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape_partition/", NULL, NULL));
2836  _set_query_param((ds3_request*) request, "full_details", NULL);
2837 
2838  return (ds3_request*) request;
2839 }
2841  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape/", resource_id, NULL));
2842  return (ds3_request*) request;
2843 }
2845  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape/", resource_id, NULL));
2846  _set_query_param((ds3_request*) request, "full_details", NULL);
2847 
2848  return (ds3_request*) request;
2849 }
2851  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape/", NULL, NULL));
2852  return (ds3_request*) request;
2853 }
2855  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/tape/", NULL, NULL));
2856  _set_query_param((ds3_request*) request, "full_details", NULL);
2857 
2858  return (ds3_request*) request;
2859 }
2861  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2862  _set_query_param((ds3_request*) request, "operation", "IMPORT");
2863 
2864  return (ds3_request*) request;
2865 }
2867  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2868  _set_query_param((ds3_request*) request, "operation", "IMPORT");
2869 
2870  return (ds3_request*) request;
2871 }
2873  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2874  _set_query_param((ds3_request*) request, "operation", "INSPECT");
2875 
2876  return (ds3_request*) request;
2877 }
2879  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2880  _set_query_param((ds3_request*) request, "operation", "INSPECT");
2881 
2882  return (ds3_request*) request;
2883 }
2885  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape_partition/", NULL, NULL));
2886  _set_query_param((ds3_request*) request, "quiesced", _get_ds3_quiesced_str(quiesced));
2887 
2888  return (ds3_request*) request;
2889 }
2891  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape_partition/", resource_id, NULL));
2892  return (ds3_request*) request;
2893 }
2895  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2896  return (ds3_request*) request;
2897 }
2899  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2900  _set_query_param((ds3_request*) request, "operation", "ONLINE");
2901 
2902  return (ds3_request*) request;
2903 }
2905  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2906  _set_query_param((ds3_request*) request, "operation", "ONLINE");
2907 
2908  return (ds3_request*) request;
2909 }
2911  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", NULL, NULL));
2912  _set_query_param((ds3_request*) request, "operation", "VERIFY");
2913 
2914  return (ds3_request*) request;
2915 }
2917  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/tape/", resource_id, NULL));
2918  _set_query_param((ds3_request*) request, "operation", "VERIFY");
2919 
2920  return (ds3_request*) request;
2921 }
2923  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/user/", resource_id, NULL));
2924  return (ds3_request*) request;
2925 }
2927  struct _ds3_request* request = _common_request_init(HTTP_GET, _build_path("/_rest_/user/", NULL, NULL));
2928  return (ds3_request*) request;
2929 }
2931  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/user/", resource_id, NULL));
2932  return (ds3_request*) request;
2933 }
2935  struct _ds3_request* request = _common_request_init(HTTP_PUT, _build_path("/_rest_/user/", resource_id, NULL));
2936  _set_query_param((ds3_request*) request, "operation", "REGENERATE_SECRET_KEY");
2937 
2938  return (ds3_request*) request;
2939 }
2940 
2941 static bool attribute_equal(const struct _xmlAttr* attribute, const char* attribute_name) {
2942  return xmlStrcmp(attribute->name, (const xmlChar*) attribute_name) == 0;
2943 }
2944 
2945 static bool element_equal(const xmlNodePtr xml_node, const char* element_name) {
2946  return xmlStrcmp(xml_node->name, (const xmlChar*) element_name) == 0;
2947 }
2948 
2949 static uint16_t xml_get_uint16(xmlDocPtr doc, xmlNodePtr child_node) {
2950  xmlChar* text;
2951  uint16_t size;
2952  text = xmlNodeListGetString(doc, child_node->xmlChildrenNode, 1);
2953  if (text == NULL) {
2954  return 0;
2955  }
2956  size = atoi((char*)text);
2957  xmlFree(text);
2958  return size;
2959 }
2960 
2961 static uint64_t xml_get_uint16_from_attribute(xmlDocPtr doc, struct _xmlAttr* attribute) {
2962  return xml_get_uint16(doc, (xmlNodePtr) attribute);
2963 }
2964 
2965 static uint64_t xml_get_uint64(xmlDocPtr doc, xmlNodePtr child_node) {
2966  xmlChar* text;
2967  uint64_t size;
2968  text = xmlNodeListGetString(doc, child_node->xmlChildrenNode, 1);
2969  if (text == NULL) {
2970  return 0;
2971  }
2972  size = g_ascii_strtoull((const char*)text, NULL, 10);
2973  xmlFree(text);
2974  return size;
2975 }
2976 
2977 static uint64_t xml_get_uint64_from_attribute(xmlDocPtr doc, struct _xmlAttr* attribute) {
2978  return xml_get_uint64(doc, (xmlNodePtr) attribute);
2979 }
2980 
2981 static ds3_str* xml_get_string(xmlDocPtr doc, xmlNodePtr child_node) {
2982  xmlChar* text;
2983  ds3_str* result;
2984  text = xmlNodeListGetString(doc, child_node->xmlChildrenNode, 1);
2985  if (text == NULL) {
2986  // Element is found, but is empty: <name />
2987  return NULL;
2988  }
2989  result = ds3_str_init((const char*) text);
2990  xmlFree(text);
2991  return result;
2992 }
2993 
2994 static ds3_str* xml_get_string_from_attribute(xmlDocPtr doc, struct _xmlAttr* attribute) {
2995  return xml_get_string(doc, (xmlNodePtr) attribute);
2996 }
2997 
2998 static ds3_bool xml_get_bool(const ds3_log* log, xmlDocPtr doc, const xmlNodePtr xml_node) {
2999  xmlChar* text;
3000  ds3_bool result;
3001  text = xmlNodeListGetString(doc, xml_node->xmlChildrenNode, 1);
3002  if (xmlStrcmp(text, (xmlChar*)"true") == 0) {
3003  result = True;
3004  } else if (xmlStrcmp(text, (xmlChar*)"false") == 0) {
3005  result = False;
3006  } else {
3007  ds3_log_message(log, DS3_ERROR, "Unknown boolean value");
3008  result = False;
3009  }
3010  xmlFree(text);
3011  return result;
3012 }
3013 
3014 static uint64_t xml_get_bool_from_attribute(const ds3_log* log, xmlDocPtr doc, struct _xmlAttr* attribute) {
3015  return xml_get_bool(log, doc, (xmlNodePtr) attribute);
3016 }
3017 
3018 
3020  const ds3_client* client,
3021  const ds3_request* request,
3022  void* read_user_struct,
3023  size_t (*read_handler_func)(void*, size_t, size_t, void*),
3024  void* write_user_struct,
3025  size_t (*write_handler_func)(void*, size_t, size_t, void*),
3026  ds3_string_multimap** return_headers) {
3027  if (client == NULL || request == NULL) {
3028  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "All arguments must be filled in for request processing");
3029  }
3030  return net_process_request(client, request, read_user_struct, read_handler_func, write_user_struct, write_handler_func, return_headers);
3031 }
3032 
3033 static int num_chars_in_ds3_str(const ds3_str* str, char ch) {
3034  int num_matches = 0;
3035  int index;
3036 
3037  for (index = 0; index < str->size; index++) {
3038  if (str->value[index] == '/') {
3039  num_matches++;
3040  }
3041  }
3042 
3043  return num_matches;
3044 }
3045 
3047  GByteArray* xml_blob,
3048  xmlDocPtr* _doc,
3049  xmlNodePtr* _root,
3050  char* root_element_name) {
3051  xmlNodePtr root;
3052 
3053  xmlDocPtr doc = xmlParseMemory((const char*) xml_blob->data, xml_blob->len);
3054  if (doc == NULL) {
3055  char* message = g_strconcat("Failed to parse response document. The actual response is: ", xml_blob->data, NULL);
3056  g_byte_array_free(xml_blob, TRUE);
3058  g_free(message);
3059  return error;
3060  }
3061 
3062  root = xmlDocGetRootElement(doc);
3063  if (element_equal(root, root_element_name) == false) {
3064  char* message = g_strconcat("Expected the root element to be '", root_element_name, "'. The actual response is: ", xml_blob->data, NULL);
3065  xmlFreeDoc(doc);
3066  g_byte_array_free(xml_blob, TRUE);
3068  g_free(message);
3069  return error;
3070  }
3071 
3072  *_doc = doc;
3073  *_root = root;
3074 
3075  g_byte_array_free(xml_blob, TRUE);
3076  return NULL;
3077 }
3078 
3079 #define LENGTH_BUFF_SIZE 21
3080 
3081 static xmlDocPtr _generate_xml_bulk_objects_list(const ds3_bulk_object_list_response* obj_list, object_list_type list_type, ds3_job_chunk_client_processing_order_guarantee order) {
3082  char size_buff[LENGTH_BUFF_SIZE]; //The max size of an uint64_t should be 20 characters
3083  xmlDocPtr doc;
3085  xmlNodePtr objects_node, object_node;
3086  int i;
3087 
3088  // Start creating the xml body to send to the server.
3089  doc = xmlNewDoc((xmlChar*)"1.0");
3090  objects_node = xmlNewNode(NULL, (xmlChar*) "Objects");
3091 
3092  if (list_type == BULK_GET) {
3093  xmlSetProp(objects_node, (xmlChar*) "ChunkClientProcessingOrderGuarantee", (xmlChar*) _get_ds3_job_chunk_client_processing_order_guarantee_str(order));
3094  }
3095 
3096  for (i = 0; i < obj_list->num_objects; i++) {
3097  obj = obj_list->objects[i];
3098  g_snprintf(size_buff, sizeof(char) * LENGTH_BUFF_SIZE, "%llu", (unsigned long long int) obj->length);
3099 
3100  object_node = xmlNewNode(NULL, (xmlChar*) "Object");
3101  xmlAddChild(objects_node, object_node);
3102 
3103  xmlSetProp(object_node, (xmlChar*) "Name", (xmlChar*) obj->name->value);
3104  if (list_type == BULK_PUT) {
3105  xmlSetProp(object_node, (xmlChar*) "Size", (xmlChar*) size_buff);
3106  }
3107  }
3108 
3109  xmlDocSetRootElement(doc, objects_node);
3110 
3111  return doc;
3112 }
3113 
3115  char size_buff[LENGTH_BUFF_SIZE]; //The max size of an uint64_t should be 20 characters
3116  xmlDocPtr doc;
3118  xmlNodePtr parts_node, part_node;
3119  int part_num;
3120 
3121  // Start creating the xml body to send to the server.
3122  doc = xmlNewDoc((xmlChar*)"1.0");
3123  parts_node = xmlNewNode(NULL, (xmlChar*) "CompleteMultipartUpload");
3124 
3125  for (part_num = 0; part_num < mpu_list->num_parts; part_num++) {
3126  part = mpu_list->parts[part_num];
3127 
3128  part_node = xmlNewNode(NULL, (xmlChar*) "Part");
3129  xmlAddChild(parts_node, part_node);
3130 
3131  g_snprintf(size_buff, sizeof(char) * LENGTH_BUFF_SIZE, "%d", part->part_number);
3132  xmlNewTextChild(part_node, NULL, (xmlChar*) "PartNumber", (xmlChar*) size_buff);
3133 
3134  xmlNewTextChild(part_node, NULL, (xmlChar*) "ETag", (xmlChar*) part->etag->value);
3135  }
3136 
3137  xmlDocSetRootElement(doc, parts_node);
3138  return doc;
3139 }
3140 
3142  xmlDocPtr doc;
3143  ds3_str* key;
3144  xmlNodePtr del_node, obj_node;
3145  int key_num;
3146 
3147  // Start creating the xml body to send to the server.
3148  doc = xmlNewDoc((xmlChar*)"1.0");
3149  del_node = xmlNewNode(NULL, (xmlChar*) "Delete");
3150 
3151  for (key_num = 0; key_num < keys_list->num_strings; key_num++) {
3152  key = keys_list->strings_list[key_num];
3153 
3154  obj_node = xmlNewNode(NULL, (xmlChar*) "Object");
3155  xmlAddChild(del_node, obj_node);
3156 
3157  xmlNewTextChild(obj_node, NULL, (xmlChar*) "Key", (xmlChar*) key->value);
3158  }
3159 
3160  xmlDocSetRootElement(doc, del_node);
3161  return doc;
3162 }
3163 
3165  ds3_xml_send_buff* send_buff,
3166  const object_list_type operation_type) {
3167  xmlDocPtr doc;
3168 
3169  struct _ds3_request* request = (struct _ds3_request*) _request;
3170 
3171  // Clear send_buff
3172  memset(send_buff, 0, sizeof(ds3_xml_send_buff));
3173 
3174  switch(operation_type) {
3175  case BULK_PUT:
3176  case BULK_GET:
3178  if (request->object_list == NULL || request->object_list->num_objects == 0) {
3179  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bulk command requires a list of objects to process");
3180  }
3181  doc = _generate_xml_bulk_objects_list(request->object_list, operation_type, request->chunk_ordering);
3182  break;
3183 
3184  case COMPLETE_MPU:
3185  if (request->mpu_list == NULL || request->mpu_list->num_parts == 0) {
3186  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The complete multipart upload command requires a list of objects to process");
3187  }
3188  doc = _generate_xml_complete_mpu(request->mpu_list);
3189  break;
3190 
3191  case BULK_DELETE:
3192  case STRING_LIST:
3193  if (request->delete_objects == NULL || request->delete_objects->num_strings == 0) {
3194  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The delete objects command requires a list of objects to process");
3195  }
3197  break;
3198 
3199  case STRING: // *** not XML - do not interpret
3200  send_buff->buff = request->delete_objects->strings_list[0]->value;
3201  send_buff->size = request->delete_objects->strings_list[0]->size;
3202  request->length = send_buff->size;
3203  return NULL;
3204  break;
3205 
3206  default:
3207  return ds3_create_error(DS3_ERROR_INVALID_XML, "Unknown request payload type");
3208  }
3209 
3210  xmlDocDumpFormatMemory(doc, (xmlChar**) &send_buff->buff, (int*) &send_buff->size, 1);
3211  request->length = send_buff->size; // make sure to set the size of the request.
3212 
3213  xmlFreeDoc(doc);
3214 
3215  return NULL;
3216 }
3217 
3218 
3219 static ds3_auto_inspect_mode _match_ds3_auto_inspect_mode(const ds3_log* log, const xmlChar* text) {
3220  if (xmlStrcmp(text, (const xmlChar*) "NEVER") == 0) {
3222  } else if (xmlStrcmp(text, (const xmlChar*) "MINIMAL") == 0) {
3224  } else if (xmlStrcmp(text, (const xmlChar*) "DEFAULT") == 0) {
3226  } else {
3227  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_AUTO_INSPECT_MODE_NEVER for safety.", text);
3229  }
3230 }
3231 static ds3_priority _match_ds3_priority(const ds3_log* log, const xmlChar* text) {
3232  if (xmlStrcmp(text, (const xmlChar*) "CRITICAL") == 0) {
3233  return DS3_PRIORITY_CRITICAL;
3234  } else if (xmlStrcmp(text, (const xmlChar*) "URGENT") == 0) {
3235  return DS3_PRIORITY_URGENT;
3236  } else if (xmlStrcmp(text, (const xmlChar*) "HIGH") == 0) {
3237  return DS3_PRIORITY_HIGH;
3238  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
3239  return DS3_PRIORITY_NORMAL;
3240  } else if (xmlStrcmp(text, (const xmlChar*) "LOW") == 0) {
3241  return DS3_PRIORITY_LOW;
3242  } else if (xmlStrcmp(text, (const xmlChar*) "BACKGROUND") == 0) {
3243  return DS3_PRIORITY_BACKGROUND;
3244  } else {
3245  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_PRIORITY_CRITICAL for safety.", text);
3246  return DS3_PRIORITY_CRITICAL;
3247  }
3248 }
3249 static ds3_bucket_acl_permission _match_ds3_bucket_acl_permission(const ds3_log* log, const xmlChar* text) {
3250  if (xmlStrcmp(text, (const xmlChar*) "LIST") == 0) {
3252  } else if (xmlStrcmp(text, (const xmlChar*) "READ") == 0) {
3254  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE") == 0) {
3256  } else if (xmlStrcmp(text, (const xmlChar*) "DELETE") == 0) {
3258  } else if (xmlStrcmp(text, (const xmlChar*) "JOB") == 0) {
3260  } else if (xmlStrcmp(text, (const xmlChar*) "OWNER") == 0) {
3262  } else {
3263  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_BUCKET_ACL_PERMISSION_LIST for safety.", text);
3265  }
3266 }
3267 static ds3_data_isolation_level _match_ds3_data_isolation_level(const ds3_log* log, const xmlChar* text) {
3268  if (xmlStrcmp(text, (const xmlChar*) "STANDARD") == 0) {
3270  } else if (xmlStrcmp(text, (const xmlChar*) "BUCKET_ISOLATED") == 0) {
3272  } else if (xmlStrcmp(text, (const xmlChar*) "SECURE_BUCKET_ISOLATED") == 0) {
3274  } else {
3275  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_ISOLATION_LEVEL_STANDARD for safety.", text);
3277  }
3278 }
3280  if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
3282  } else if (xmlStrcmp(text, (const xmlChar*) "INCLUSION_IN_PROGRESS") == 0) {
3284  } else {
3285  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_PERSISTENCE_RULE_STATE_NORMAL for safety.", text);
3287  }
3288 }
3290  if (xmlStrcmp(text, (const xmlChar*) "PERMANENT") == 0) {
3292  } else if (xmlStrcmp(text, (const xmlChar*) "TEMPORARY") == 0) {
3294  } else if (xmlStrcmp(text, (const xmlChar*) "RETIRED") == 0) {
3296  } else {
3297  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATA_PERSISTENCE_RULE_TYPE_PERMANENT for safety.", text);
3299  }
3300 }
3302  if (xmlStrcmp(text, (const xmlChar*) "NONE") == 0) {
3304  } else if (xmlStrcmp(text, (const xmlChar*) "IN_ORDER") == 0) {
3306  } else {
3307  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_CHUNK_CLIENT_PROCESSING_ORDER_GUARANTEE_NONE for safety.", text);
3309  }
3310 }
3311 static ds3_job_request_type _match_ds3_job_request_type(const ds3_log* log, const xmlChar* text) {
3312  if (xmlStrcmp(text, (const xmlChar*) "PUT") == 0) {
3313  return DS3_JOB_REQUEST_TYPE_PUT;
3314  } else if (xmlStrcmp(text, (const xmlChar*) "GET") == 0) {
3315  return DS3_JOB_REQUEST_TYPE_GET;
3316  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY") == 0) {
3318  } else {
3319  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_REQUEST_TYPE_PUT for safety.", text);
3320  return DS3_JOB_REQUEST_TYPE_PUT;
3321  }
3322 }
3323 static ds3_ltfs_file_naming_mode _match_ds3_ltfs_file_naming_mode(const ds3_log* log, const xmlChar* text) {
3324  if (xmlStrcmp(text, (const xmlChar*) "OBJECT_NAME") == 0) {
3326  } else if (xmlStrcmp(text, (const xmlChar*) "OBJECT_ID") == 0) {
3328  } else {
3329  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_LTFS_FILE_NAMING_MODE_OBJECT_NAME for safety.", text);
3331  }
3332 }
3333 static ds3_s3_object_type _match_ds3_s3_object_type(const ds3_log* log, const xmlChar* text) {
3334  if (xmlStrcmp(text, (const xmlChar*) "DATA") == 0) {
3335  return DS3_S3_OBJECT_TYPE_DATA;
3336  } else if (xmlStrcmp(text, (const xmlChar*) "FOLDER") == 0) {
3338  } else {
3339  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_S3_OBJECT_TYPE_DATA for safety.", text);
3340  return DS3_S3_OBJECT_TYPE_DATA;
3341  }
3342 }
3344  if (xmlStrcmp(text, (const xmlChar*) "ILLEGAL_EJECTION_OCCURRED") == 0) {
3346  } else if (xmlStrcmp(text, (const xmlChar*) "MEMBER_BECAME_READ_ONLY") == 0) {
3348  } else if (xmlStrcmp(text, (const xmlChar*) "WRITES_STALLED_DUE_TO_NO_FREE_MEDIA_REMAINING") == 0) {
3350  } else {
3351  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_STORAGE_DOMAIN_FAILURE_TYPE_ILLEGAL_EJECTION_OCCURRED for safety.", text);
3353  }
3354 }
3356  if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
3358  } else if (xmlStrcmp(text, (const xmlChar*) "EXCLUSION_IN_PROGRESS") == 0) {
3360  } else {
3361  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_STORAGE_DOMAIN_MEMBER_STATE_NORMAL for safety.", text);
3363  }
3364 }
3365 static ds3_system_failure_type _match_ds3_system_failure_type(const ds3_log* log, const xmlChar* text) {
3366  if (xmlStrcmp(text, (const xmlChar*) "RECONCILE_TAPE_ENVIRONMENT_FAILED") == 0) {
3368  } else if (xmlStrcmp(text, (const xmlChar*) "RECONCILE_POOL_ENVIRONMENT_FAILED") == 0) {
3370  } else {
3371  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_SYSTEM_FAILURE_TYPE_RECONCILE_TAPE_ENVIRONMENT_FAILED for safety.", text);
3373  }
3374 }
3376  if (xmlStrcmp(text, (const xmlChar*) "ALLOW") == 0) {
3378  } else if (xmlStrcmp(text, (const xmlChar*) "DISCOURAGED") == 0) {
3380  } else if (xmlStrcmp(text, (const xmlChar*) "DISALLOW") == 0) {
3382  } else {
3383  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_UNAVAILABLE_MEDIA_USAGE_POLICY_ALLOW for safety.", text);
3385  }
3386 }
3387 static ds3_versioning_level _match_ds3_versioning_level(const ds3_log* log, const xmlChar* text) {
3388  if (xmlStrcmp(text, (const xmlChar*) "NONE") == 0) {
3390  } else if (xmlStrcmp(text, (const xmlChar*) "KEEP_LATEST") == 0) {
3392  } else {
3393  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_VERSIONING_LEVEL_NONE for safety.", text);
3395  }
3396 }
3397 static ds3_write_optimization _match_ds3_write_optimization(const ds3_log* log, const xmlChar* text) {
3398  if (xmlStrcmp(text, (const xmlChar*) "CAPACITY") == 0) {
3400  } else if (xmlStrcmp(text, (const xmlChar*) "PERFORMANCE") == 0) {
3402  } else {
3403  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_WRITE_OPTIMIZATION_CAPACITY for safety.", text);
3405  }
3406 }
3408  if (xmlStrcmp(text, (const xmlChar*) "HIGH") == 0) {
3410  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
3412  } else if (xmlStrcmp(text, (const xmlChar*) "LOW") == 0) {
3414  } else if (xmlStrcmp(text, (const xmlChar*) "NEVER_SELECT") == 0) {
3416  } else {
3417  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_WRITE_PREFERENCE_LEVEL_HIGH for safety.", text);
3419  }
3420 }
3421 static ds3_pool_failure_type _match_ds3_pool_failure_type(const ds3_log* log, const xmlChar* text) {
3422  if (xmlStrcmp(text, (const xmlChar*) "BLOB_READ_FAILED") == 0) {
3424  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE") == 0) {
3426  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_MISSING") == 0) {
3428  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_FAILED") == 0) {
3430  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
3432  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE") == 0) {
3434  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_DATA_INTEGRITY") == 0) {
3436  } else if (xmlStrcmp(text, (const xmlChar*) "INSPECT_FAILED") == 0) {
3438  } else if (xmlStrcmp(text, (const xmlChar*) "QUIESCED") == 0) {
3440  } else if (xmlStrcmp(text, (const xmlChar*) "READ_FAILED") == 0) {
3442  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY_FAILED") == 0) {
3444  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_FAILED") == 0) {
3446  } else {
3447  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_FAILURE_TYPE_BLOB_READ_FAILED for safety.", text);
3449  }
3450 }
3451 static ds3_pool_health _match_ds3_pool_health(const ds3_log* log, const xmlChar* text) {
3452  if (xmlStrcmp(text, (const xmlChar*) "OK") == 0) {
3453  return DS3_POOL_HEALTH_OK;
3454  } else if (xmlStrcmp(text, (const xmlChar*) "DEGRADED") == 0) {
3455  return DS3_POOL_HEALTH_DEGRADED;
3456  } else {
3457  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_HEALTH_OK for safety.", text);
3458  return DS3_POOL_HEALTH_OK;
3459  }
3460 }
3461 static ds3_pool_state _match_ds3_pool_state(const ds3_log* log, const xmlChar* text) {
3462  if (xmlStrcmp(text, (const xmlChar*) "BLANK") == 0) {
3463  return DS3_POOL_STATE_BLANK;
3464  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
3465  return DS3_POOL_STATE_NORMAL;
3466  } else if (xmlStrcmp(text, (const xmlChar*) "LOST") == 0) {
3467  return DS3_POOL_STATE_LOST;
3468  } else if (xmlStrcmp(text, (const xmlChar*) "FOREIGN") == 0) {
3469  return DS3_POOL_STATE_FOREIGN;
3470  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_PENDING") == 0) {
3472  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_IN_PROGRESS") == 0) {
3474  } else {
3475  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_STATE_BLANK for safety.", text);
3476  return DS3_POOL_STATE_BLANK;
3477  }
3478 }
3479 static ds3_pool_type _match_ds3_pool_type(const ds3_log* log, const xmlChar* text) {
3480  if (xmlStrcmp(text, (const xmlChar*) "NEARLINE") == 0) {
3481  return DS3_POOL_TYPE_NEARLINE;
3482  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE") == 0) {
3483  return DS3_POOL_TYPE_ONLINE;
3484  } else {
3485  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_POOL_TYPE_NEARLINE for safety.", text);
3486  return DS3_POOL_TYPE_NEARLINE;
3487  }
3488 }
3490  if (xmlStrcmp(text, (const xmlChar*) "CANCEL") == 0) {
3492  } else if (xmlStrcmp(text, (const xmlChar*) "ACCEPT_MOST_RECENT") == 0) {
3494  } else if (xmlStrcmp(text, (const xmlChar*) "ACCEPT_HIGHEST_VERSION") == 0) {
3496  } else if (xmlStrcmp(text, (const xmlChar*) "ACCEPT_IMPORT") == 0) {
3498  } else if (xmlStrcmp(text, (const xmlChar*) "ACCEPT_EXISTING") == 0) {
3500  } else {
3501  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_IMPORT_CONFLICT_RESOLUTION_MODE_CANCEL for safety.", text);
3503  }
3504 }
3505 static ds3_quiesced _match_ds3_quiesced(const ds3_log* log, const xmlChar* text) {
3506  if (xmlStrcmp(text, (const xmlChar*) "NO") == 0) {
3507  return DS3_QUIESCED_NO;
3508  } else if (xmlStrcmp(text, (const xmlChar*) "PENDING") == 0) {
3509  return DS3_QUIESCED_PENDING;
3510  } else if (xmlStrcmp(text, (const xmlChar*) "YES") == 0) {
3511  return DS3_QUIESCED_YES;
3512  } else {
3513  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_QUIESCED_NO for safety.", text);
3514  return DS3_QUIESCED_NO;
3515  }
3516 }
3518  if (xmlStrcmp(text, (const xmlChar*) "CANCEL") == 0) {
3520  } else if (xmlStrcmp(text, (const xmlChar*) "ACCEPT_SOURCE") == 0) {
3522  } else if (xmlStrcmp(text, (const xmlChar*) "ACCEPT_TARGET") == 0) {
3524  } else if (xmlStrcmp(text, (const xmlChar*) "ACCEPT_MOST_RECENT") == 0) {
3526  } else {
3527  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_REPLICATION_CONFLICT_RESOLUTION_MODE_CANCEL for safety.", text);
3529  }
3530 }
3532  if (xmlStrcmp(text, (const xmlChar*) "SUPPORTED") == 0) {
3534  } else if (xmlStrcmp(text, (const xmlChar*) "NOT_SUPPORTED") == 0) {
3536  } else {
3537  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_IMPORT_EXPORT_CONFIGURATION_SUPPORTED for safety.", text);
3539  }
3540 }
3541 static ds3_tape_drive_state _match_ds3_tape_drive_state(const ds3_log* log, const xmlChar* text) {
3542  if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
3544  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
3546  } else if (xmlStrcmp(text, (const xmlChar*) "ERROR") == 0) {
3548  } else if (xmlStrcmp(text, (const xmlChar*) "NOT_COMPATIBLE_IN_PARTITION_DUE_TO_NEWER_TAPE_DRIVES") == 0) {
3550  } else {
3551  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_DRIVE_STATE_OFFLINE for safety.", text);
3553  }
3554 }
3555 static ds3_tape_drive_type _match_ds3_tape_drive_type(const ds3_log* log, const xmlChar* text) {
3556  if (xmlStrcmp(text, (const xmlChar*) "UNKNOWN") == 0) {
3558  } else if (xmlStrcmp(text, (const xmlChar*) "LTO5") == 0) {
3559  return DS3_TAPE_DRIVE_TYPE_LTO5;
3560  } else if (xmlStrcmp(text, (const xmlChar*) "LTO6") == 0) {
3561  return DS3_TAPE_DRIVE_TYPE_LTO6;
3562  } else if (xmlStrcmp(text, (const xmlChar*) "LTO7") == 0) {
3563  return DS3_TAPE_DRIVE_TYPE_LTO7;
3564  } else if (xmlStrcmp(text, (const xmlChar*) "TS1140") == 0) {
3566  } else if (xmlStrcmp(text, (const xmlChar*) "TS1150") == 0) {
3568  } else {
3569  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_DRIVE_TYPE_UNKNOWN for safety.", text);
3571  }
3572 }
3573 static ds3_tape_failure_type _match_ds3_tape_failure_type(const ds3_log* log, const xmlChar* text) {
3574  if (xmlStrcmp(text, (const xmlChar*) "BAR_CODE_CHANGED") == 0) {
3576  } else if (xmlStrcmp(text, (const xmlChar*) "BAR_CODE_DUPLICATE") == 0) {
3578  } else if (xmlStrcmp(text, (const xmlChar*) "BLOB_READ_FAILED") == 0) {
3580  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE") == 0) {
3582  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE_DUE_TO_READ_ONLY") == 0) {
3584  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_MISSING") == 0) {
3586  } else if (xmlStrcmp(text, (const xmlChar*) "DELAYED_OWNERSHIP_FAILURE") == 0) {
3588  } else if (xmlStrcmp(text, (const xmlChar*) "DRIVE_CLEAN_FAILED") == 0) {
3590  } else if (xmlStrcmp(text, (const xmlChar*) "DRIVE_CLEANED") == 0) {
3592  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_FAILED") == 0) {
3594  } else if (xmlStrcmp(text, (const xmlChar*) "GET_TAPE_INFORMATION_FAILED") == 0) {
3596  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED") == 0) {
3598  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_TAKE_OWNERSHIP_FAILURE") == 0) {
3600  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_FAILED_DUE_TO_DATA_INTEGRITY") == 0) {
3602  } else if (xmlStrcmp(text, (const xmlChar*) "INSPECT_FAILED") == 0) {
3604  } else if (xmlStrcmp(text, (const xmlChar*) "READ_FAILED") == 0) {
3606  } else if (xmlStrcmp(text, (const xmlChar*) "REIMPORT_REQUIRED") == 0) {
3608  } else if (xmlStrcmp(text, (const xmlChar*) "SERIAL_NUMBER_MISMATCH") == 0) {
3610  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY_FAILED") == 0) {
3612  } else if (xmlStrcmp(text, (const xmlChar*) "WRITE_FAILED") == 0) {
3614  } else {
3615  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_FAILURE_TYPE_BAR_CODE_CHANGED for safety.", text);
3617  }
3618 }
3620  if (xmlStrcmp(text, (const xmlChar*) "CLEANING_TAPE_REQUIRED") == 0) {
3622  } else if (xmlStrcmp(text, (const xmlChar*) "DUPLICATE_TAPE_BAR_CODES_DETECTED") == 0) {
3624  } else if (xmlStrcmp(text, (const xmlChar*) "EJECT_STALLED_DUE_TO_OFFLINE_TAPES") == 0) {
3626  } else if (xmlStrcmp(text, (const xmlChar*) "MINIMUM_DRIVE_COUNT_NOT_MET") == 0) {
3628  } else if (xmlStrcmp(text, (const xmlChar*) "MOVE_FAILED") == 0) {
3630  } else if (xmlStrcmp(text, (const xmlChar*) "MOVE_FAILED_DUE_TO_PREPARE_TAPE_FOR_REMOVAL_FAILURE") == 0) {
3632  } else if (xmlStrcmp(text, (const xmlChar*) "NO_USABLE_DRIVES") == 0) {
3634  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE_STALLED_DUE_TO_NO_STORAGE_SLOTS") == 0) {
3636  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_IN_ERROR") == 0) {
3638  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_MISSING") == 0) {
3640  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE_TYPE_MISMATCH") == 0) {
3642  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_EJECTION_BY_OPERATOR_REQUIRED") == 0) {
3644  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_MEDIA_TYPE_INCOMPATIBLE") == 0) {
3646  } else {
3647  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_PARTITION_FAILURE_TYPE_CLEANING_TAPE_REQUIRED for safety.", text);
3649  }
3650 }
3651 static ds3_tape_partition_state _match_ds3_tape_partition_state(const ds3_log* log, const xmlChar* text) {
3652  if (xmlStrcmp(text, (const xmlChar*) "ONLINE") == 0) {
3654  } else if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
3656  } else if (xmlStrcmp(text, (const xmlChar*) "ERROR") == 0) {
3658  } else {
3659  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_PARTITION_STATE_ONLINE for safety.", text);
3661  }
3662 }
3663 static ds3_tape_state _match_ds3_tape_state(const ds3_log* log, const xmlChar* text) {
3664  if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
3665  return DS3_TAPE_STATE_NORMAL;
3666  } else if (xmlStrcmp(text, (const xmlChar*) "OFFLINE") == 0) {
3667  return DS3_TAPE_STATE_OFFLINE;
3668  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE_PENDING") == 0) {
3670  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE_IN_PROGRESS") == 0) {
3672  } else if (xmlStrcmp(text, (const xmlChar*) "PENDING_INSPECTION") == 0) {
3674  } else if (xmlStrcmp(text, (const xmlChar*) "UNKNOWN") == 0) {
3675  return DS3_TAPE_STATE_UNKNOWN;
3676  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE") == 0) {
3678  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_FAILURE_DUE_TO_READ_ONLY") == 0) {
3680  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_CHECKPOINT_MISSING") == 0) {
3682  } else if (xmlStrcmp(text, (const xmlChar*) "LTFS_WITH_FOREIGN_DATA") == 0) {
3684  } else if (xmlStrcmp(text, (const xmlChar*) "FOREIGN") == 0) {
3685  return DS3_TAPE_STATE_FOREIGN;
3686  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_PENDING") == 0) {
3688  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT_IN_PROGRESS") == 0) {
3690  } else if (xmlStrcmp(text, (const xmlChar*) "INCOMPATIBLE") == 0) {
3692  } else if (xmlStrcmp(text, (const xmlChar*) "LOST") == 0) {
3693  return DS3_TAPE_STATE_LOST;
3694  } else if (xmlStrcmp(text, (const xmlChar*) "BAD") == 0) {
3695  return DS3_TAPE_STATE_BAD;
3696  } else if (xmlStrcmp(text, (const xmlChar*) "SERIAL_NUMBER_MISMATCH") == 0) {
3698  } else if (xmlStrcmp(text, (const xmlChar*) "BAR_CODE_MISSING") == 0) {
3700  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_PENDING") == 0) {
3702  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT_IN_PROGRESS") == 0) {
3704  } else if (xmlStrcmp(text, (const xmlChar*) "EJECT_TO_EE_IN_PROGRESS") == 0) {
3706  } else if (xmlStrcmp(text, (const xmlChar*) "EJECT_FROM_EE_PENDING") == 0) {
3708  } else if (xmlStrcmp(text, (const xmlChar*) "EJECTED") == 0) {
3709  return DS3_TAPE_STATE_EJECTED;
3710  } else {
3711  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_STATE_NORMAL for safety.", text);
3712  return DS3_TAPE_STATE_NORMAL;
3713  }
3714 }
3715 static ds3_tape_type _match_ds3_tape_type(const ds3_log* log, const xmlChar* text) {
3716  if (xmlStrcmp(text, (const xmlChar*) "LTO5") == 0) {
3717  return DS3_TAPE_TYPE_LTO5;
3718  } else if (xmlStrcmp(text, (const xmlChar*) "LTO6") == 0) {
3719  return DS3_TAPE_TYPE_LTO6;
3720  } else if (xmlStrcmp(text, (const xmlChar*) "LTO7") == 0) {
3721  return DS3_TAPE_TYPE_LTO7;
3722  } else if (xmlStrcmp(text, (const xmlChar*) "LTO_CLEANING_TAPE") == 0) {
3724  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JC") == 0) {
3725  return DS3_TAPE_TYPE_TS_JC;
3726  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JY") == 0) {
3727  return DS3_TAPE_TYPE_TS_JY;
3728  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JK") == 0) {
3729  return DS3_TAPE_TYPE_TS_JK;
3730  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JD") == 0) {
3731  return DS3_TAPE_TYPE_TS_JD;
3732  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JZ") == 0) {
3733  return DS3_TAPE_TYPE_TS_JZ;
3734  } else if (xmlStrcmp(text, (const xmlChar*) "TS_JL") == 0) {
3735  return DS3_TAPE_TYPE_TS_JL;
3736  } else if (xmlStrcmp(text, (const xmlChar*) "TS_CLEANING_TAPE") == 0) {
3738  } else if (xmlStrcmp(text, (const xmlChar*) "UNKNOWN") == 0) {
3739  return DS3_TAPE_TYPE_UNKNOWN;
3740  } else if (xmlStrcmp(text, (const xmlChar*) "FORBIDDEN") == 0) {
3741  return DS3_TAPE_TYPE_FORBIDDEN;
3742  } else {
3743  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_TAPE_TYPE_LTO5 for safety.", text);
3744  return DS3_TAPE_TYPE_LTO5;
3745  }
3746 }
3747 static ds3_blob_store_task_state _match_ds3_blob_store_task_state(const ds3_log* log, const xmlChar* text) {
3748  if (xmlStrcmp(text, (const xmlChar*) "NOT_READY") == 0) {
3750  } else if (xmlStrcmp(text, (const xmlChar*) "READY") == 0) {
3752  } else if (xmlStrcmp(text, (const xmlChar*) "PENDING_EXECUTION") == 0) {
3754  } else if (xmlStrcmp(text, (const xmlChar*) "IN_PROGRESS") == 0) {
3756  } else if (xmlStrcmp(text, (const xmlChar*) "COMPLETED") == 0) {
3758  } else {
3759  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_BLOB_STORE_TASK_STATE_NOT_READY for safety.", text);
3761  }
3762 }
3763 static ds3_cache_entry_state _match_ds3_cache_entry_state(const ds3_log* log, const xmlChar* text) {
3764  if (xmlStrcmp(text, (const xmlChar*) "ALLOCATED") == 0) {
3766  } else if (xmlStrcmp(text, (const xmlChar*) "IN_CACHE") == 0) {
3768  } else {
3769  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_CACHE_ENTRY_STATE_ALLOCATED for safety.", text);
3771  }
3772 }
3773 static ds3_job_status _match_ds3_job_status(const ds3_log* log, const xmlChar* text) {
3774  if (xmlStrcmp(text, (const xmlChar*) "IN_PROGRESS") == 0) {
3776  } else if (xmlStrcmp(text, (const xmlChar*) "COMPLETED") == 0) {
3777  return DS3_JOB_STATUS_COMPLETED;
3778  } else if (xmlStrcmp(text, (const xmlChar*) "CANCELED") == 0) {
3779  return DS3_JOB_STATUS_CANCELED;
3780  } else {
3781  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_JOB_STATUS_IN_PROGRESS for safety.", text);
3783  }
3784 }
3785 static ds3_application _match_ds3_application(const ds3_log* log, const xmlChar* text) {
3786  if (xmlStrcmp(text, (const xmlChar*) "S3_SERVER") == 0) {
3788  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_PLANNER") == 0) {
3790  } else {
3791  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_APPLICATION_S3_SERVER for safety.", text);
3793  }
3794 }
3795 static ds3_rest_action_type _match_ds3_rest_action_type(const ds3_log* log, const xmlChar* text) {
3796  if (xmlStrcmp(text, (const xmlChar*) "BULK_DELETE") == 0) {
3798  } else if (xmlStrcmp(text, (const xmlChar*) "BULK_MODIFY") == 0) {
3800  } else if (xmlStrcmp(text, (const xmlChar*) "CREATE") == 0) {
3802  } else if (xmlStrcmp(text, (const xmlChar*) "DELETE") == 0) {
3804  } else if (xmlStrcmp(text, (const xmlChar*) "LIST") == 0) {
3806  } else if (xmlStrcmp(text, (const xmlChar*) "MODIFY") == 0) {
3808  } else if (xmlStrcmp(text, (const xmlChar*) "SHOW") == 0) {
3810  } else {
3811  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_REST_ACTION_TYPE_BULK_DELETE for safety.", text);
3813  }
3814 }
3815 static ds3_rest_domain_type _match_ds3_rest_domain_type(const ds3_log* log, const xmlChar* text) {
3816  if (xmlStrcmp(text, (const xmlChar*) "ACTIVE_JOB") == 0) {
3818  } else if (xmlStrcmp(text, (const xmlChar*) "BEANS_RETRIEVER") == 0) {
3820  } else if (xmlStrcmp(text, (const xmlChar*) "BLOB_STORE_TASK") == 0) {
3822  } else if (xmlStrcmp(text, (const xmlChar*) "BUCKET") == 0) {
3824  } else if (xmlStrcmp(text, (const xmlChar*) "BUCKET_ACL") == 0) {
3826  } else if (xmlStrcmp(text, (const xmlChar*) "BUCKET_CAPACITY_SUMMARY") == 0) {
3828  } else if (xmlStrcmp(text, (const xmlChar*) "CACHE_FILESYSTEM") == 0) {
3830  } else if (xmlStrcmp(text, (const xmlChar*) "CACHE_STATE") == 0) {
3832  } else if (xmlStrcmp(text, (const xmlChar*) "CANCELED_JOB") == 0) {
3834  } else if (xmlStrcmp(text, (const xmlChar*) "CAPACITY_SUMMARY") == 0) {
3836  } else if (xmlStrcmp(text, (const xmlChar*) "COMPLETED_JOB") == 0) {
3838  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_PATH") == 0) {
3840  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_PATH_BACKEND") == 0) {
3842  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_PERSISTENCE_RULE") == 0) {
3844  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_POLICY") == 0) {
3846  } else if (xmlStrcmp(text, (const xmlChar*) "DATA_POLICY_ACL") == 0) {
3848  } else if (xmlStrcmp(text, (const xmlChar*) "DEGRADED_BUCKET") == 0) {
3850  } else if (xmlStrcmp(text, (const xmlChar*) "DEGRADED_DATA_PERSISTENCE_RULE") == 0) {
3852  } else if (xmlStrcmp(text, (const xmlChar*) "FOLDER") == 0) {
3854  } else if (xmlStrcmp(text, (const xmlChar*) "GENERIC_DAO_NOTIFICATION_REGISTRATION") == 0) {
3856  } else if (xmlStrcmp(text, (const xmlChar*) "GROUP") == 0) {
3858  } else if (xmlStrcmp(text, (const xmlChar*) "GROUP_MEMBER") == 0) {
3860  } else if (xmlStrcmp(text, (const xmlChar*) "HEAP_DUMP") == 0) {
3862  } else if (xmlStrcmp(text, (const xmlChar*) "JOB") == 0) {
3863  return DS3_REST_DOMAIN_TYPE_JOB;
3864  } else if (xmlStrcmp(text, (const xmlChar*) "JOB_CHUNK") == 0) {
3866  } else if (xmlStrcmp(text, (const xmlChar*) "JOB_COMPLETED_NOTIFICATION_REGISTRATION") == 0) {
3868  } else if (xmlStrcmp(text, (const xmlChar*) "JOB_CREATED_NOTIFICATION_REGISTRATION") == 0) {
3870  } else if (xmlStrcmp(text, (const xmlChar*) "NODE") == 0) {
3872  } else if (xmlStrcmp(text, (const xmlChar*) "OBJECT") == 0) {
3874  } else if (xmlStrcmp(text, (const xmlChar*) "OBJECT_CACHED_NOTIFICATION_REGISTRATION") == 0) {
3876  } else if (xmlStrcmp(text, (const xmlChar*) "OBJECT_LOST_NOTIFICATION_REGISTRATION") == 0) {
3878  } else if (xmlStrcmp(text, (const xmlChar*) "OBJECT_PERSISTED_NOTIFICATION_REGISTRATION") == 0) {
3880  } else if (xmlStrcmp(text, (const xmlChar*) "POOL") == 0) {
3882  } else if (xmlStrcmp(text, (const xmlChar*) "POOL_ENVIRONMENT") == 0) {
3884  } else if (xmlStrcmp(text, (const xmlChar*) "POOL_FAILURE") == 0) {
3886  } else if (xmlStrcmp(text, (const xmlChar*) "POOL_FAILURE_NOTIFICATION_REGISTRATION") == 0) {
3888  } else if (xmlStrcmp(text, (const xmlChar*) "POOL_PARTITION") == 0) {
3890  } else if (xmlStrcmp(text, (const xmlChar*) "REQUEST_HANDLER") == 0) {
3892  } else if (xmlStrcmp(text, (const xmlChar*) "REQUEST_HANDLER_CONTRACT") == 0) {
3894  } else if (xmlStrcmp(text, (const xmlChar*) "STORAGE_DOMAIN") == 0) {
3896  } else if (xmlStrcmp(text, (const xmlChar*) "STORAGE_DOMAIN_FAILURE") == 0) {
3898  } else if (xmlStrcmp(text, (const xmlChar*) "STORAGE_DOMAIN_FAILURE_NOTIFICATION_REGISTRATION") == 0) {
3900  } else if (xmlStrcmp(text, (const xmlChar*) "STORAGE_DOMAIN_MEMBER") == 0) {
3902  } else if (xmlStrcmp(text, (const xmlChar*) "SYSTEM_FAILURE") == 0) {
3904  } else if (xmlStrcmp(text, (const xmlChar*) "SYSTEM_FAILURE_NOTIFICATION_REGISTRATION") == 0) {
3906  } else if (xmlStrcmp(text, (const xmlChar*) "SYSTEM_HEALTH") == 0) {
3908  } else if (xmlStrcmp(text, (const xmlChar*) "SYSTEM_INFORMATION") == 0) {
3910  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE") == 0) {
3912  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_BUCKET") == 0) {
3914  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DENSITY_DIRECTIVE") == 0) {
3916  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_DRIVE") == 0) {
3918  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_ENVIRONMENT") == 0) {
3920  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_FAILURE") == 0) {
3922  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_FAILURE_NOTIFICATION_REGISTRATION") == 0) {
3924  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_LIBRARY") == 0) {
3926  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_PARTITION") == 0) {
3928  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_PARTITION_FAILURE") == 0) {
3930  } else if (xmlStrcmp(text, (const xmlChar*) "TAPE_PARTITION_FAILURE_NOTIFICATION_REGISTRATION") == 0) {
3932  } else if (xmlStrcmp(text, (const xmlChar*) "USER") == 0) {
3934  } else {
3935  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_REST_DOMAIN_TYPE_ACTIVE_JOB for safety.", text);
3937  }
3938 }
3939 static ds3_rest_operation_type _match_ds3_rest_operation_type(const ds3_log* log, const xmlChar* text) {
3940  if (xmlStrcmp(text, (const xmlChar*) "ALLOCATE") == 0) {
3942  } else if (xmlStrcmp(text, (const xmlChar*) "CANCEL_EJECT") == 0) {
3944  } else if (xmlStrcmp(text, (const xmlChar*) "CANCEL_FORMAT") == 0) {
3946  } else if (xmlStrcmp(text, (const xmlChar*) "CANCEL_IMPORT") == 0) {
3948  } else if (xmlStrcmp(text, (const xmlChar*) "CANCEL_ONLINE") == 0) {
3950  } else if (xmlStrcmp(text, (const xmlChar*) "CLEAN") == 0) {
3952  } else if (xmlStrcmp(text, (const xmlChar*) "COMPACT") == 0) {
3954  } else if (xmlStrcmp(text, (const xmlChar*) "DEALLOCATE") == 0) {
3956  } else if (xmlStrcmp(text, (const xmlChar*) "EJECT") == 0) {
3958  } else if (xmlStrcmp(text, (const xmlChar*) "FORMAT") == 0) {
3960  } else if (xmlStrcmp(text, (const xmlChar*) "GET_PHYSICAL_PLACEMENT") == 0) {
3962  } else if (xmlStrcmp(text, (const xmlChar*) "IMPORT") == 0) {
3964  } else if (xmlStrcmp(text, (const xmlChar*) "INSPECT") == 0) {
3966  } else if (xmlStrcmp(text, (const xmlChar*) "ONLINE") == 0) {
3968  } else if (xmlStrcmp(text, (const xmlChar*) "REGENERATE_SECRET_KEY") == 0) {
3970  } else if (xmlStrcmp(text, (const xmlChar*) "START_BULK_GET") == 0) {
3972  } else if (xmlStrcmp(text, (const xmlChar*) "START_BULK_PUT") == 0) {
3974  } else if (xmlStrcmp(text, (const xmlChar*) "START_BULK_VERIFY") == 0) {
3976  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY") == 0) {
3978  } else if (xmlStrcmp(text, (const xmlChar*) "VERIFY_PHYSICAL_PLACEMENT") == 0) {
3980  } else {
3981  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_REST_OPERATION_TYPE_ALLOCATE for safety.", text);
3983  }
3984 }
3985 static ds3_rest_resource_type _match_ds3_rest_resource_type(const ds3_log* log, const xmlChar* text) {
3986  if (xmlStrcmp(text, (const xmlChar*) "SINGLETON") == 0) {
3988  } else if (xmlStrcmp(text, (const xmlChar*) "NON_SINGLETON") == 0) {
3990  } else {
3991  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_REST_RESOURCE_TYPE_SINGLETON for safety.", text);
3993  }
3994 }
3995 static ds3_sql_operation _match_ds3_sql_operation(const ds3_log* log, const xmlChar* text) {
3996  if (xmlStrcmp(text, (const xmlChar*) "SELECT") == 0) {
3997  return DS3_SQL_OPERATION_SELECT;
3998  } else if (xmlStrcmp(text, (const xmlChar*) "INSERT") == 0) {
3999  return DS3_SQL_OPERATION_INSERT;
4000  } else if (xmlStrcmp(text, (const xmlChar*) "UPDATE") == 0) {
4001  return DS3_SQL_OPERATION_UPDATE;
4002  } else if (xmlStrcmp(text, (const xmlChar*) "DELETE") == 0) {
4003  return DS3_SQL_OPERATION_DELETE;
4004  } else {
4005  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_SQL_OPERATION_SELECT for safety.", text);
4006  return DS3_SQL_OPERATION_SELECT;
4007  }
4008 }
4010  if (xmlStrcmp(text, (const xmlChar*) "CRITICAL") == 0) {
4012  } else if (xmlStrcmp(text, (const xmlChar*) "LOW") == 0) {
4014  } else if (xmlStrcmp(text, (const xmlChar*) "NEAR_LOW") == 0) {
4016  } else if (xmlStrcmp(text, (const xmlChar*) "NORMAL") == 0) {
4018  } else {
4019  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_DATABASE_PHYSICAL_SPACE_STATE_CRITICAL for safety.", text);
4021  }
4022 }
4024  if (xmlStrcmp(text, (const xmlChar*) "DEFAULT") == 0) {
4026  } else if (xmlStrcmp(text, (const xmlChar*) "JSON") == 0) {
4028  } else if (xmlStrcmp(text, (const xmlChar*) "XML") == 0) {
4030  } else {
4031  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_HTTP_RESPONSE_FORMAT_TYPE_DEFAULT for safety.", text);
4033  }
4034 }
4035 static ds3_request_type _match_ds3_request_type(const ds3_log* log, const xmlChar* text) {
4036  if (xmlStrcmp(text, (const xmlChar*) "DELETE") == 0) {
4037  return DS3_REQUEST_TYPE_DELETE;
4038  } else if (xmlStrcmp(text, (const xmlChar*) "GET") == 0) {
4039  return DS3_REQUEST_TYPE_GET;
4040  } else if (xmlStrcmp(text, (const xmlChar*) "HEAD") == 0) {
4041  return DS3_REQUEST_TYPE_HEAD;
4042  } else if (xmlStrcmp(text, (const xmlChar*) "POST") == 0) {
4043  return DS3_REQUEST_TYPE_POST;
4044  } else if (xmlStrcmp(text, (const xmlChar*) "PUT") == 0) {
4045  return DS3_REQUEST_TYPE_PUT;
4046  } else {
4047  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_REQUEST_TYPE_DELETE for safety.", text);
4048  return DS3_REQUEST_TYPE_DELETE;
4049  }
4050 }
4052  if (xmlStrcmp(text, (const xmlChar*) "CONCAT_LOWERCASE") == 0) {
4054  } else if (xmlStrcmp(text, (const xmlChar*) "CONSTANT") == 0) {
4056  } else if (xmlStrcmp(text, (const xmlChar*) "UNDERSCORED") == 0) {
4058  } else if (xmlStrcmp(text, (const xmlChar*) "CAMEL_CASE_WITH_FIRST_LETTER_UPPERCASE") == 0) {
4060  } else if (xmlStrcmp(text, (const xmlChar*) "CAMEL_CASE_WITH_FIRST_LETTER_LOWERCASE") == 0) {
4062  } else {
4063  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_NAMING_CONVENTION_TYPE_CONCAT_LOWERCASE for safety.", text);
4065  }
4066 }
4067 static ds3_checksum_type _match_ds3_checksum_type(const ds3_log* log, const xmlChar* text) {
4068  if (xmlStrcmp(text, (const xmlChar*) "CRC_32") == 0) {
4069  return DS3_CHECKSUM_TYPE_CRC_32;
4070  } else if (xmlStrcmp(text, (const xmlChar*) "CRC_32C") == 0) {
4072  } else if (xmlStrcmp(text, (const xmlChar*) "MD5") == 0) {
4073  return DS3_CHECKSUM_TYPE_MD5;
4074  } else if (xmlStrcmp(text, (const xmlChar*) "SHA_256") == 0) {
4076  } else if (xmlStrcmp(text, (const xmlChar*) "SHA_512") == 0) {
4078  } else {
4079  ds3_log_message(log, DS3_ERROR, "ERROR: Unknown value of '%s'. Returning DS3_CHECKSUM_TYPE_CRC_32 for safety.", text);
4080  return DS3_CHECKSUM_TYPE_CRC_32;
4081  }
4082 }
4083 
4084 //************ STRUCT PARSERS **************
4085 static ds3_error* _parse_ds3_blob_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_blob_response** _response) {
4086  ds3_blob_response* response;
4087  xmlNodePtr child_node;
4088  ds3_error* error = NULL;
4089 
4090  response = g_new0(ds3_blob_response, 1);
4091 
4092 
4093  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4094  if (element_equal(child_node, "ByteOffset")) {
4095  response->byte_offset = xml_get_uint64(doc, child_node);
4096  } else if (element_equal(child_node, "Checksum")) {
4097  response->checksum = xml_get_string(doc, child_node);
4098  } else if (element_equal(child_node, "ChecksumType")) {
4099  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4100  if (text == NULL) {
4101  continue;
4102  }
4103  response->checksum_type = _match_ds3_checksum_type(client->log, text);
4104  xmlFree(text);
4105  } else if (element_equal(child_node, "Id")) {
4106  response->id = xml_get_string(doc, child_node);
4107  } else if (element_equal(child_node, "Length")) {
4108  response->length = xml_get_uint64(doc, child_node);
4109  } else if (element_equal(child_node, "ObjectId")) {
4110  response->object_id = xml_get_string(doc, child_node);
4111  } else {
4112  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_blob_response [%s]\n", child_node->name, root->name);
4113  }
4114 
4115  if (error != NULL) {
4116  break;
4117  }
4118 
4119  }
4120 
4121 
4122  *_response = response;
4123 
4124  return error;
4125 }
4126 
4127 static ds3_error* _parse_ds3_bucket_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_response** _response) {
4128  ds3_bucket_response* response;
4129  xmlNodePtr child_node;
4130  ds3_error* error = NULL;
4131 
4132  response = g_new0(ds3_bucket_response, 1);
4133 
4134 
4135  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4136  if (element_equal(child_node, "CreationDate")) {
4137  response->creation_date = xml_get_string(doc, child_node);
4138  } else if (element_equal(child_node, "DataPolicyId")) {
4139  response->data_policy_id = xml_get_string(doc, child_node);
4140  } else if (element_equal(child_node, "Id")) {
4141  response->id = xml_get_string(doc, child_node);
4142  } else if (element_equal(child_node, "LastPreferredChunkSizeInBytes")) {
4143  response->last_preferred_chunk_size_in_bytes = xml_get_uint64(doc, child_node);
4144  } else if (element_equal(child_node, "LogicalUsedCapacity")) {
4145  response->logical_used_capacity = xml_get_uint64(doc, child_node);
4146  } else if (element_equal(child_node, "Name")) {
4147  response->name = xml_get_string(doc, child_node);
4148  } else if (element_equal(child_node, "UserId")) {
4149  response->user_id = xml_get_string(doc, child_node);
4150  } else {
4151  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_response [%s]\n", child_node->name, root->name);
4152  }
4153 
4154  if (error != NULL) {
4155  break;
4156  }
4157 
4158  }
4159 
4160 
4161  *_response = response;
4162 
4163  return error;
4164 }
4165 
4166 static ds3_error* _parse_ds3_bucket_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4167  ds3_error* error = NULL;
4168  xmlNodePtr child_node;
4169  GPtrArray* ds3_bucket_response_array = g_ptr_array_new();
4170 
4171  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4172  ds3_bucket_response* response = NULL;
4173  error = _parse_ds3_bucket_response(client, doc, child_node, &response);
4174  g_ptr_array_add(ds3_bucket_response_array, response);
4175 
4176  if (error != NULL) {
4177  break;
4178  }
4179  }
4180 
4181  *_response = ds3_bucket_response_array;
4182 
4183  return error;
4184 }
4185 static ds3_error* _parse_ds3_bucket_acl_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_acl_response** _response) {
4186  ds3_bucket_acl_response* response;
4187  xmlNodePtr child_node;
4188  ds3_error* error = NULL;
4189 
4190  response = g_new0(ds3_bucket_acl_response, 1);
4191 
4192 
4193  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4194  if (element_equal(child_node, "BucketId")) {
4195  response->bucket_id = xml_get_string(doc, child_node);
4196  } else if (element_equal(child_node, "GroupId")) {
4197  response->group_id = xml_get_string(doc, child_node);
4198  } else if (element_equal(child_node, "Id")) {
4199  response->id = xml_get_string(doc, child_node);
4200  } else if (element_equal(child_node, "Permission")) {
4201  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4202  if (text == NULL) {
4203  continue;
4204  }
4205  response->permission = _match_ds3_bucket_acl_permission(client->log, text);
4206  xmlFree(text);
4207  } else if (element_equal(child_node, "UserId")) {
4208  response->user_id = xml_get_string(doc, child_node);
4209  } else {
4210  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_acl_response [%s]\n", child_node->name, root->name);
4211  }
4212 
4213  if (error != NULL) {
4214  break;
4215  }
4216 
4217  }
4218 
4219 
4220  *_response = response;
4221 
4222  return error;
4223 }
4224 
4225 static ds3_error* _parse_ds3_bucket_acl_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4226  ds3_error* error = NULL;
4227  xmlNodePtr child_node;
4228  GPtrArray* ds3_bucket_acl_response_array = g_ptr_array_new();
4229 
4230  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4231  ds3_bucket_acl_response* response = NULL;
4232  error = _parse_ds3_bucket_acl_response(client, doc, child_node, &response);
4233  g_ptr_array_add(ds3_bucket_acl_response_array, response);
4234 
4235  if (error != NULL) {
4236  break;
4237  }
4238  }
4239 
4240  *_response = ds3_bucket_acl_response_array;
4241 
4242  return error;
4243 }
4244 static ds3_error* _parse_ds3_canceled_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_canceled_job_response** _response) {
4245  ds3_canceled_job_response* response;
4246  xmlNodePtr child_node;
4247  ds3_error* error = NULL;
4248 
4249  response = g_new0(ds3_canceled_job_response, 1);
4250 
4251 
4252  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4253  if (element_equal(child_node, "BucketId")) {
4254  response->bucket_id = xml_get_string(doc, child_node);
4255  } else if (element_equal(child_node, "CachedSizeInBytes")) {
4256  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
4257  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
4258  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4259  if (text == NULL) {
4260  continue;
4261  }
4263  xmlFree(text);
4264  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
4265  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
4266  } else if (element_equal(child_node, "CreatedAt")) {
4267  response->created_at = xml_get_string(doc, child_node);
4268  } else if (element_equal(child_node, "DateCanceled")) {
4269  response->date_canceled = xml_get_string(doc, child_node);
4270  } else if (element_equal(child_node, "ErrorMessage")) {
4271  response->error_message = xml_get_string(doc, child_node);
4272  } else if (element_equal(child_node, "Id")) {
4273  response->id = xml_get_string(doc, child_node);
4274  } else if (element_equal(child_node, "Naked")) {
4275  response->naked = xml_get_bool(client->log, doc, child_node);
4276  } else if (element_equal(child_node, "Name")) {
4277  response->name = xml_get_string(doc, child_node);
4278  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
4279  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
4280  } else if (element_equal(child_node, "Priority")) {
4281  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4282  if (text == NULL) {
4283  continue;
4284  }
4285  response->priority = _match_ds3_priority(client->log, text);
4286  xmlFree(text);
4287  } else if (element_equal(child_node, "Rechunked")) {
4288  response->rechunked = xml_get_string(doc, child_node);
4289  } else if (element_equal(child_node, "RequestType")) {
4290  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4291  if (text == NULL) {
4292  continue;
4293  }
4294  response->request_type = _match_ds3_job_request_type(client->log, text);
4295  xmlFree(text);
4296  } else if (element_equal(child_node, "Truncated")) {
4297  response->truncated = xml_get_bool(client->log, doc, child_node);
4298  } else if (element_equal(child_node, "UserId")) {
4299  response->user_id = xml_get_string(doc, child_node);
4300  } else {
4301  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_canceled_job_response [%s]\n", child_node->name, root->name);
4302  }
4303 
4304  if (error != NULL) {
4305  break;
4306  }
4307 
4308  }
4309 
4310 
4311  *_response = response;
4312 
4313  return error;
4314 }
4315 
4316 static ds3_error* _parse_ds3_canceled_job_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4317  ds3_error* error = NULL;
4318  xmlNodePtr child_node;
4319  GPtrArray* ds3_canceled_job_response_array = g_ptr_array_new();
4320 
4321  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4322  ds3_canceled_job_response* response = NULL;
4323  error = _parse_ds3_canceled_job_response(client, doc, child_node, &response);
4324  g_ptr_array_add(ds3_canceled_job_response_array, response);
4325 
4326  if (error != NULL) {
4327  break;
4328  }
4329  }
4330 
4331  *_response = ds3_canceled_job_response_array;
4332 
4333  return error;
4334 }
4335 static ds3_error* _parse_ds3_completed_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_completed_job_response** _response) {
4336  ds3_completed_job_response* response;
4337  xmlNodePtr child_node;
4338  ds3_error* error = NULL;
4339 
4340  response = g_new0(ds3_completed_job_response, 1);
4341 
4342 
4343  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4344  if (element_equal(child_node, "BucketId")) {
4345  response->bucket_id = xml_get_string(doc, child_node);
4346  } else if (element_equal(child_node, "CachedSizeInBytes")) {
4347  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
4348  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
4349  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4350  if (text == NULL) {
4351  continue;
4352  }
4354  xmlFree(text);
4355  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
4356  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
4357  } else if (element_equal(child_node, "CreatedAt")) {
4358  response->created_at = xml_get_string(doc, child_node);
4359  } else if (element_equal(child_node, "DateCompleted")) {
4360  response->date_completed = xml_get_string(doc, child_node);
4361  } else if (element_equal(child_node, "ErrorMessage")) {
4362  response->error_message = xml_get_string(doc, child_node);
4363  } else if (element_equal(child_node, "Id")) {
4364  response->id = xml_get_string(doc, child_node);
4365  } else if (element_equal(child_node, "Naked")) {
4366  response->naked = xml_get_bool(client->log, doc, child_node);
4367  } else if (element_equal(child_node, "Name")) {
4368  response->name = xml_get_string(doc, child_node);
4369  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
4370  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
4371  } else if (element_equal(child_node, "Priority")) {
4372  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4373  if (text == NULL) {
4374  continue;
4375  }
4376  response->priority = _match_ds3_priority(client->log, text);
4377  xmlFree(text);
4378  } else if (element_equal(child_node, "Rechunked")) {
4379  response->rechunked = xml_get_string(doc, child_node);
4380  } else if (element_equal(child_node, "RequestType")) {
4381  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4382  if (text == NULL) {
4383  continue;
4384  }
4385  response->request_type = _match_ds3_job_request_type(client->log, text);
4386  xmlFree(text);
4387  } else if (element_equal(child_node, "Truncated")) {
4388  response->truncated = xml_get_bool(client->log, doc, child_node);
4389  } else if (element_equal(child_node, "UserId")) {
4390  response->user_id = xml_get_string(doc, child_node);
4391  } else {
4392  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_completed_job_response [%s]\n", child_node->name, root->name);
4393  }
4394 
4395  if (error != NULL) {
4396  break;
4397  }
4398 
4399  }
4400 
4401 
4402  *_response = response;
4403 
4404  return error;
4405 }
4406 
4407 static ds3_error* _parse_ds3_completed_job_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4408  ds3_error* error = NULL;
4409  xmlNodePtr child_node;
4410  GPtrArray* ds3_completed_job_response_array = g_ptr_array_new();
4411 
4412  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4413  ds3_completed_job_response* response = NULL;
4414  error = _parse_ds3_completed_job_response(client, doc, child_node, &response);
4415  g_ptr_array_add(ds3_completed_job_response_array, response);
4416 
4417  if (error != NULL) {
4418  break;
4419  }
4420  }
4421 
4422  *_response = ds3_completed_job_response_array;
4423 
4424  return error;
4425 }
4426 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) {
4428  xmlNodePtr child_node;
4429  ds3_error* error = NULL;
4430 
4431  response = g_new0(ds3_data_persistence_rule_response, 1);
4432 
4433 
4434  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4435  if (element_equal(child_node, "DataPolicyId")) {
4436  response->data_policy_id = xml_get_string(doc, child_node);
4437  } else if (element_equal(child_node, "Id")) {
4438  response->id = xml_get_string(doc, child_node);
4439  } else if (element_equal(child_node, "IsolationLevel")) {
4440  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4441  if (text == NULL) {
4442  continue;
4443  }
4444  response->isolation_level = _match_ds3_data_isolation_level(client->log, text);
4445  xmlFree(text);
4446  } else if (element_equal(child_node, "MinimumDaysToRetain")) {
4447  response->minimum_days_to_retain = xml_get_uint16(doc, child_node);
4448  } else if (element_equal(child_node, "State")) {
4449  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4450  if (text == NULL) {
4451  continue;
4452  }
4453  response->state = _match_ds3_data_persistence_rule_state(client->log, text);
4454  xmlFree(text);
4455  } else if (element_equal(child_node, "StorageDomainId")) {
4456  response->storage_domain_id = xml_get_string(doc, child_node);
4457  } else if (element_equal(child_node, "Type")) {
4458  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4459  if (text == NULL) {
4460  continue;
4461  }
4462  response->type = _match_ds3_data_persistence_rule_type(client->log, text);
4463  xmlFree(text);
4464  } else {
4465  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_persistence_rule_response [%s]\n", child_node->name, root->name);
4466  }
4467 
4468  if (error != NULL) {
4469  break;
4470  }
4471 
4472  }
4473 
4474 
4475  *_response = response;
4476 
4477  return error;
4478 }
4479 
4480 static ds3_error* _parse_ds3_data_persistence_rule_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4481  ds3_error* error = NULL;
4482  xmlNodePtr child_node;
4483  GPtrArray* ds3_data_persistence_rule_response_array = g_ptr_array_new();
4484 
4485  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4486  ds3_data_persistence_rule_response* response = NULL;
4487  error = _parse_ds3_data_persistence_rule_response(client, doc, child_node, &response);
4488  g_ptr_array_add(ds3_data_persistence_rule_response_array, response);
4489 
4490  if (error != NULL) {
4491  break;
4492  }
4493  }
4494 
4495  *_response = ds3_data_persistence_rule_response_array;
4496 
4497  return error;
4498 }
4499 static ds3_error* _parse_ds3_data_policy_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_policy_response** _response) {
4500  ds3_data_policy_response* response;
4501  xmlNodePtr child_node;
4502  ds3_error* error = NULL;
4503 
4504  response = g_new0(ds3_data_policy_response, 1);
4505 
4506 
4507  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4508  if (element_equal(child_node, "BlobbingEnabled")) {
4509  response->blobbing_enabled = xml_get_bool(client->log, doc, child_node);
4510  } else if (element_equal(child_node, "ChecksumType")) {
4511  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4512  if (text == NULL) {
4513  continue;
4514  }
4515  response->checksum_type = _match_ds3_checksum_type(client->log, text);
4516  xmlFree(text);
4517  } else if (element_equal(child_node, "CreationDate")) {
4518  response->creation_date = xml_get_string(doc, child_node);
4519  } else if (element_equal(child_node, "DefaultBlobSize")) {
4520  response->default_blob_size = xml_get_uint64(doc, child_node);
4521  } else if (element_equal(child_node, "DefaultGetJobPriority")) {
4522  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4523  if (text == NULL) {
4524  continue;
4525  }
4526  response->default_get_job_priority = _match_ds3_priority(client->log, text);
4527  xmlFree(text);
4528  } else if (element_equal(child_node, "DefaultPutJobPriority")) {
4529  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4530  if (text == NULL) {
4531  continue;
4532  }
4533  response->default_put_job_priority = _match_ds3_priority(client->log, text);
4534  xmlFree(text);
4535  } else if (element_equal(child_node, "DefaultVerifyJobPriority")) {
4536  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4537  if (text == NULL) {
4538  continue;
4539  }
4540  response->default_verify_job_priority = _match_ds3_priority(client->log, text);
4541  xmlFree(text);
4542  } else if (element_equal(child_node, "EndToEndCrcRequired")) {
4543  response->end_to_end_crc_required = xml_get_bool(client->log, doc, child_node);
4544  } else if (element_equal(child_node, "Id")) {
4545  response->id = xml_get_string(doc, child_node);
4546  } else if (element_equal(child_node, "LtfsObjectNamingAllowed")) {
4547  response->ltfs_object_naming_allowed = xml_get_bool(client->log, doc, child_node);
4548  } else if (element_equal(child_node, "Name")) {
4549  response->name = xml_get_string(doc, child_node);
4550  } else if (element_equal(child_node, "RebuildPriority")) {
4551  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4552  if (text == NULL) {
4553  continue;
4554  }
4555  response->rebuild_priority = _match_ds3_priority(client->log, text);
4556  xmlFree(text);
4557  } else if (element_equal(child_node, "Versioning")) {
4558  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4559  if (text == NULL) {
4560  continue;
4561  }
4562  response->versioning = _match_ds3_versioning_level(client->log, text);
4563  xmlFree(text);
4564  } else {
4565  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_response [%s]\n", child_node->name, root->name);
4566  }
4567 
4568  if (error != NULL) {
4569  break;
4570  }
4571 
4572  }
4573 
4574 
4575  *_response = response;
4576 
4577  return error;
4578 }
4579 
4580 static ds3_error* _parse_ds3_data_policy_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4581  ds3_error* error = NULL;
4582  xmlNodePtr child_node;
4583  GPtrArray* ds3_data_policy_response_array = g_ptr_array_new();
4584 
4585  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4586  ds3_data_policy_response* response = NULL;
4587  error = _parse_ds3_data_policy_response(client, doc, child_node, &response);
4588  g_ptr_array_add(ds3_data_policy_response_array, response);
4589 
4590  if (error != NULL) {
4591  break;
4592  }
4593  }
4594 
4595  *_response = ds3_data_policy_response_array;
4596 
4597  return error;
4598 }
4599 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) {
4600  ds3_data_policy_acl_response* response;
4601  xmlNodePtr child_node;
4602  ds3_error* error = NULL;
4603 
4604  response = g_new0(ds3_data_policy_acl_response, 1);
4605 
4606 
4607  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4608  if (element_equal(child_node, "DataPolicyId")) {
4609  response->data_policy_id = xml_get_string(doc, child_node);
4610  } else if (element_equal(child_node, "GroupId")) {
4611  response->group_id = xml_get_string(doc, child_node);
4612  } else if (element_equal(child_node, "Id")) {
4613  response->id = xml_get_string(doc, child_node);
4614  } else if (element_equal(child_node, "UserId")) {
4615  response->user_id = xml_get_string(doc, child_node);
4616  } else {
4617  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_acl_response [%s]\n", child_node->name, root->name);
4618  }
4619 
4620  if (error != NULL) {
4621  break;
4622  }
4623 
4624  }
4625 
4626 
4627  *_response = response;
4628 
4629  return error;
4630 }
4631 
4632 static ds3_error* _parse_ds3_data_policy_acl_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4633  ds3_error* error = NULL;
4634  xmlNodePtr child_node;
4635  GPtrArray* ds3_data_policy_acl_response_array = g_ptr_array_new();
4636 
4637  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4638  ds3_data_policy_acl_response* response = NULL;
4639  error = _parse_ds3_data_policy_acl_response(client, doc, child_node, &response);
4640  g_ptr_array_add(ds3_data_policy_acl_response_array, response);
4641 
4642  if (error != NULL) {
4643  break;
4644  }
4645  }
4646 
4647  *_response = ds3_data_policy_acl_response_array;
4648 
4649  return error;
4650 }
4651 static ds3_error* _parse_ds3_group_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_group_response** _response) {
4652  ds3_group_response* response;
4653  xmlNodePtr child_node;
4654  ds3_error* error = NULL;
4655 
4656  response = g_new0(ds3_group_response, 1);
4657 
4658 
4659  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4660  if (element_equal(child_node, "BuiltIn")) {
4661  response->built_in = xml_get_bool(client->log, doc, child_node);
4662  } else if (element_equal(child_node, "Id")) {
4663  response->id = xml_get_string(doc, child_node);
4664  } else if (element_equal(child_node, "Name")) {
4665  response->name = xml_get_string(doc, child_node);
4666  } else {
4667  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_response [%s]\n", child_node->name, root->name);
4668  }
4669 
4670  if (error != NULL) {
4671  break;
4672  }
4673 
4674  }
4675 
4676 
4677  *_response = response;
4678 
4679  return error;
4680 }
4681 
4682 static ds3_error* _parse_ds3_group_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4683  ds3_error* error = NULL;
4684  xmlNodePtr child_node;
4685  GPtrArray* ds3_group_response_array = g_ptr_array_new();
4686 
4687  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4688  ds3_group_response* response = NULL;
4689  error = _parse_ds3_group_response(client, doc, child_node, &response);
4690  g_ptr_array_add(ds3_group_response_array, response);
4691 
4692  if (error != NULL) {
4693  break;
4694  }
4695  }
4696 
4697  *_response = ds3_group_response_array;
4698 
4699  return error;
4700 }
4701 static ds3_error* _parse_ds3_group_member_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_group_member_response** _response) {
4702  ds3_group_member_response* response;
4703  xmlNodePtr child_node;
4704  ds3_error* error = NULL;
4705 
4706  response = g_new0(ds3_group_member_response, 1);
4707 
4708 
4709  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4710  if (element_equal(child_node, "GroupId")) {
4711  response->group_id = xml_get_string(doc, child_node);
4712  } else if (element_equal(child_node, "Id")) {
4713  response->id = xml_get_string(doc, child_node);
4714  } else if (element_equal(child_node, "MemberGroupId")) {
4715  response->member_group_id = xml_get_string(doc, child_node);
4716  } else if (element_equal(child_node, "MemberUserId")) {
4717  response->member_user_id = xml_get_string(doc, child_node);
4718  } else {
4719  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_member_response [%s]\n", child_node->name, root->name);
4720  }
4721 
4722  if (error != NULL) {
4723  break;
4724  }
4725 
4726  }
4727 
4728 
4729  *_response = response;
4730 
4731  return error;
4732 }
4733 
4734 static ds3_error* _parse_ds3_group_member_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4735  ds3_error* error = NULL;
4736  xmlNodePtr child_node;
4737  GPtrArray* ds3_group_member_response_array = g_ptr_array_new();
4738 
4739  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4740  ds3_group_member_response* response = NULL;
4741  error = _parse_ds3_group_member_response(client, doc, child_node, &response);
4742  g_ptr_array_add(ds3_group_member_response_array, response);
4743 
4744  if (error != NULL) {
4745  break;
4746  }
4747  }
4748 
4749  *_response = ds3_group_member_response_array;
4750 
4751  return error;
4752 }
4753 static ds3_error* _parse_ds3_active_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_active_job_response** _response) {
4754  ds3_active_job_response* response;
4755  xmlNodePtr child_node;
4756  ds3_error* error = NULL;
4757 
4758  response = g_new0(ds3_active_job_response, 1);
4759 
4760 
4761  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4762  if (element_equal(child_node, "Aggregating")) {
4763  response->aggregating = xml_get_bool(client->log, doc, child_node);
4764  } else if (element_equal(child_node, "BucketId")) {
4765  response->bucket_id = xml_get_string(doc, child_node);
4766  } else if (element_equal(child_node, "CachedSizeInBytes")) {
4767  response->cached_size_in_bytes = xml_get_uint64(doc, child_node);
4768  } else if (element_equal(child_node, "ChunkClientProcessingOrderGuarantee")) {
4769  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4770  if (text == NULL) {
4771  continue;
4772  }
4774  xmlFree(text);
4775  } else if (element_equal(child_node, "CompletedSizeInBytes")) {
4776  response->completed_size_in_bytes = xml_get_uint64(doc, child_node);
4777  } else if (element_equal(child_node, "CreatedAt")) {
4778  response->created_at = xml_get_string(doc, child_node);
4779  } else if (element_equal(child_node, "ErrorMessage")) {
4780  response->error_message = xml_get_string(doc, child_node);
4781  } else if (element_equal(child_node, "Id")) {
4782  response->id = xml_get_string(doc, child_node);
4783  } else if (element_equal(child_node, "Naked")) {
4784  response->naked = xml_get_bool(client->log, doc, child_node);
4785  } else if (element_equal(child_node, "Name")) {
4786  response->name = xml_get_string(doc, child_node);
4787  } else if (element_equal(child_node, "OriginalSizeInBytes")) {
4788  response->original_size_in_bytes = xml_get_uint64(doc, child_node);
4789  } else if (element_equal(child_node, "Priority")) {
4790  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4791  if (text == NULL) {
4792  continue;
4793  }
4794  response->priority = _match_ds3_priority(client->log, text);
4795  xmlFree(text);
4796  } else if (element_equal(child_node, "Rechunked")) {
4797  response->rechunked = xml_get_string(doc, child_node);
4798  } else if (element_equal(child_node, "RequestType")) {
4799  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4800  if (text == NULL) {
4801  continue;
4802  }
4803  response->request_type = _match_ds3_job_request_type(client->log, text);
4804  xmlFree(text);
4805  } else if (element_equal(child_node, "Truncated")) {
4806  response->truncated = xml_get_bool(client->log, doc, child_node);
4807  } else if (element_equal(child_node, "UserId")) {
4808  response->user_id = xml_get_string(doc, child_node);
4809  } else {
4810  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_active_job_response [%s]\n", child_node->name, root->name);
4811  }
4812 
4813  if (error != NULL) {
4814  break;
4815  }
4816 
4817  }
4818 
4819 
4820  *_response = response;
4821 
4822  return error;
4823 }
4824 
4825 static ds3_error* _parse_ds3_active_job_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4826  ds3_error* error = NULL;
4827  xmlNodePtr child_node;
4828  GPtrArray* ds3_active_job_response_array = g_ptr_array_new();
4829 
4830  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4831  ds3_active_job_response* response = NULL;
4832  error = _parse_ds3_active_job_response(client, doc, child_node, &response);
4833  g_ptr_array_add(ds3_active_job_response_array, response);
4834 
4835  if (error != NULL) {
4836  break;
4837  }
4838  }
4839 
4840  *_response = ds3_active_job_response_array;
4841 
4842  return error;
4843 }
4844 static ds3_error* _parse_ds3_node_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_node_response** _response) {
4845  ds3_node_response* response;
4846  xmlNodePtr child_node;
4847  ds3_error* error = NULL;
4848 
4849  response = g_new0(ds3_node_response, 1);
4850 
4851 
4852  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4853  if (element_equal(child_node, "DataPathHttpPort")) {
4854  response->data_path_http_port = xml_get_uint16(doc, child_node);
4855  } else if (element_equal(child_node, "DataPathHttpsPort")) {
4856  response->data_path_https_port = xml_get_uint16(doc, child_node);
4857  } else if (element_equal(child_node, "DataPathIpAddress")) {
4858  response->data_path_ip_address = xml_get_string(doc, child_node);
4859  } else if (element_equal(child_node, "DnsName")) {
4860  response->dns_name = xml_get_string(doc, child_node);
4861  } else if (element_equal(child_node, "Id")) {
4862  response->id = xml_get_string(doc, child_node);
4863  } else if (element_equal(child_node, "LastHeartbeat")) {
4864  response->last_heartbeat = xml_get_string(doc, child_node);
4865  } else if (element_equal(child_node, "Name")) {
4866  response->name = xml_get_string(doc, child_node);
4867  } else if (element_equal(child_node, "SerialNumber")) {
4868  response->serial_number = xml_get_string(doc, child_node);
4869  } else {
4870  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_node_response [%s]\n", child_node->name, root->name);
4871  }
4872 
4873  if (error != NULL) {
4874  break;
4875  }
4876 
4877  }
4878 
4879 
4880  *_response = response;
4881 
4882  return error;
4883 }
4884 
4885 static ds3_error* _parse_ds3_node_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4886  ds3_error* error = NULL;
4887  xmlNodePtr child_node;
4888  GPtrArray* ds3_node_response_array = g_ptr_array_new();
4889 
4890  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4891  ds3_node_response* response = NULL;
4892  error = _parse_ds3_node_response(client, doc, child_node, &response);
4893  g_ptr_array_add(ds3_node_response_array, response);
4894 
4895  if (error != NULL) {
4896  break;
4897  }
4898  }
4899 
4900  *_response = ds3_node_response_array;
4901 
4902  return error;
4903 }
4904 static ds3_error* _parse_ds3_s3_object_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_object_response** _response) {
4905  ds3_s3_object_response* response;
4906  xmlNodePtr child_node;
4907  ds3_error* error = NULL;
4908 
4909  response = g_new0(ds3_s3_object_response, 1);
4910 
4911 
4912  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4913  if (element_equal(child_node, "BucketId")) {
4914  response->bucket_id = xml_get_string(doc, child_node);
4915  } else if (element_equal(child_node, "CreationDate")) {
4916  response->creation_date = xml_get_string(doc, child_node);
4917  } else if (element_equal(child_node, "Id")) {
4918  response->id = xml_get_string(doc, child_node);
4919  } else if (element_equal(child_node, "Latest")) {
4920  response->latest = xml_get_bool(client->log, doc, child_node);
4921  } else if (element_equal(child_node, "Name")) {
4922  response->name = xml_get_string(doc, child_node);
4923  } else if (element_equal(child_node, "Type")) {
4924  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4925  if (text == NULL) {
4926  continue;
4927  }
4928  response->type = _match_ds3_s3_object_type(client->log, text);
4929  xmlFree(text);
4930  } else if (element_equal(child_node, "Version")) {
4931  response->version = xml_get_uint64(doc, child_node);
4932  } else {
4933  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_response [%s]\n", child_node->name, root->name);
4934  }
4935 
4936  if (error != NULL) {
4937  break;
4938  }
4939 
4940  }
4941 
4942 
4943  *_response = response;
4944 
4945  return error;
4946 }
4947 
4948 static ds3_error* _parse_ds3_s3_object_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
4949  ds3_error* error = NULL;
4950  xmlNodePtr child_node;
4951  GPtrArray* ds3_s3_object_response_array = g_ptr_array_new();
4952 
4953  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4954  ds3_s3_object_response* response = NULL;
4955  error = _parse_ds3_s3_object_response(client, doc, child_node, &response);
4956  g_ptr_array_add(ds3_s3_object_response_array, response);
4957 
4958  if (error != NULL) {
4959  break;
4960  }
4961  }
4962 
4963  *_response = ds3_s3_object_response_array;
4964 
4965  return error;
4966 }
4967 static ds3_error* _parse_ds3_storage_domain_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_response** _response) {
4968  ds3_storage_domain_response* response;
4969  xmlNodePtr child_node;
4970  ds3_error* error = NULL;
4971 
4972  response = g_new0(ds3_storage_domain_response, 1);
4973 
4974 
4975  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
4976  if (element_equal(child_node, "AutoEjectUponCron")) {
4977  response->auto_eject_upon_cron = xml_get_string(doc, child_node);
4978  } else if (element_equal(child_node, "AutoEjectUponJobCancellation")) {
4979  response->auto_eject_upon_job_cancellation = xml_get_bool(client->log, doc, child_node);
4980  } else if (element_equal(child_node, "AutoEjectUponJobCompletion")) {
4981  response->auto_eject_upon_job_completion = xml_get_bool(client->log, doc, child_node);
4982  } else if (element_equal(child_node, "AutoEjectUponMediaFull")) {
4983  response->auto_eject_upon_media_full = xml_get_bool(client->log, doc, child_node);
4984  } else if (element_equal(child_node, "Id")) {
4985  response->id = xml_get_string(doc, child_node);
4986  } else if (element_equal(child_node, "LtfsFileNaming")) {
4987  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
4988  if (text == NULL) {
4989  continue;
4990  }
4991  response->ltfs_file_naming = _match_ds3_ltfs_file_naming_mode(client->log, text);
4992  xmlFree(text);
4993  } else if (element_equal(child_node, "MaxTapeFragmentationPercent")) {
4994  response->max_tape_fragmentation_percent = xml_get_uint16(doc, child_node);
4995  } else if (element_equal(child_node, "MaximumAutoVerificationFrequencyInDays")) {
4996  response->maximum_auto_verification_frequency_in_days = xml_get_uint16(doc, child_node);
4997  } else if (element_equal(child_node, "MediaEjectionAllowed")) {
4998  response->media_ejection_allowed = xml_get_bool(client->log, doc, child_node);
4999  } else if (element_equal(child_node, "Name")) {
5000  response->name = xml_get_string(doc, child_node);
5001  } else if (element_equal(child_node, "VerifyPriorToAutoEject")) {
5002  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5003  if (text == NULL) {
5004  continue;
5005  }
5006  response->verify_prior_to_auto_eject = _match_ds3_priority(client->log, text);
5007  xmlFree(text);
5008  } else if (element_equal(child_node, "WriteOptimization")) {
5009  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5010  if (text == NULL) {
5011  continue;
5012  }
5013  response->write_optimization = _match_ds3_write_optimization(client->log, text);
5014  xmlFree(text);
5015  } else {
5016  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_response [%s]\n", child_node->name, root->name);
5017  }
5018 
5019  if (error != NULL) {
5020  break;
5021  }
5022 
5023  }
5024 
5025 
5026  *_response = response;
5027 
5028  return error;
5029 }
5030 
5031 static ds3_error* _parse_ds3_storage_domain_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5032  ds3_error* error = NULL;
5033  xmlNodePtr child_node;
5034  GPtrArray* ds3_storage_domain_response_array = g_ptr_array_new();
5035 
5036  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5037  ds3_storage_domain_response* response = NULL;
5038  error = _parse_ds3_storage_domain_response(client, doc, child_node, &response);
5039  g_ptr_array_add(ds3_storage_domain_response_array, response);
5040 
5041  if (error != NULL) {
5042  break;
5043  }
5044  }
5045 
5046  *_response = ds3_storage_domain_response_array;
5047 
5048  return error;
5049 }
5050 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) {
5052  xmlNodePtr child_node;
5053  ds3_error* error = NULL;
5054 
5055  response = g_new0(ds3_storage_domain_capacity_summary_response, 1);
5056 
5057 
5058  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5059  if (element_equal(child_node, "PhysicalAllocated")) {
5060  response->physical_allocated = xml_get_uint64(doc, child_node);
5061  } else if (element_equal(child_node, "PhysicalFree")) {
5062  response->physical_free = xml_get_uint64(doc, child_node);
5063  } else if (element_equal(child_node, "PhysicalUsed")) {
5064  response->physical_used = xml_get_uint64(doc, child_node);
5065  } else {
5066  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_capacity_summary_response [%s]\n", child_node->name, root->name);
5067  }
5068 
5069  if (error != NULL) {
5070  break;
5071  }
5072 
5073  }
5074 
5075 
5076  *_response = response;
5077 
5078  return error;
5079 }
5080 
5081 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) {
5083  xmlNodePtr child_node;
5084  ds3_error* error = NULL;
5085 
5086  response = g_new0(ds3_storage_domain_failure_response, 1);
5087 
5088 
5089  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5090  if (element_equal(child_node, "Date")) {
5091  response->date = xml_get_string(doc, child_node);
5092  } else if (element_equal(child_node, "ErrorMessage")) {
5093  response->error_message = xml_get_string(doc, child_node);
5094  } else if (element_equal(child_node, "Id")) {
5095  response->id = xml_get_string(doc, child_node);
5096  } else if (element_equal(child_node, "StorageDomainId")) {
5097  response->storage_domain_id = xml_get_string(doc, child_node);
5098  } else if (element_equal(child_node, "Type")) {
5099  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5100  if (text == NULL) {
5101  continue;
5102  }
5103  response->type = _match_ds3_storage_domain_failure_type(client->log, text);
5104  xmlFree(text);
5105  } else {
5106  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_failure_response [%s]\n", child_node->name, root->name);
5107  }
5108 
5109  if (error != NULL) {
5110  break;
5111  }
5112 
5113  }
5114 
5115 
5116  *_response = response;
5117 
5118  return error;
5119 }
5120 
5121 static ds3_error* _parse_ds3_storage_domain_failure_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5122  ds3_error* error = NULL;
5123  xmlNodePtr child_node;
5124  GPtrArray* ds3_storage_domain_failure_response_array = g_ptr_array_new();
5125 
5126  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5127  ds3_storage_domain_failure_response* response = NULL;
5128  error = _parse_ds3_storage_domain_failure_response(client, doc, child_node, &response);
5129  g_ptr_array_add(ds3_storage_domain_failure_response_array, response);
5130 
5131  if (error != NULL) {
5132  break;
5133  }
5134  }
5135 
5136  *_response = ds3_storage_domain_failure_response_array;
5137 
5138  return error;
5139 }
5140 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) {
5142  xmlNodePtr child_node;
5143  ds3_error* error = NULL;
5144 
5145  response = g_new0(ds3_storage_domain_member_response, 1);
5146 
5147 
5148  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5149  if (element_equal(child_node, "Id")) {
5150  response->id = xml_get_string(doc, child_node);
5151  } else if (element_equal(child_node, "PoolPartitionId")) {
5152  response->pool_partition_id = xml_get_string(doc, child_node);
5153  } else if (element_equal(child_node, "State")) {
5154  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5155  if (text == NULL) {
5156  continue;
5157  }
5158  response->state = _match_ds3_storage_domain_member_state(client->log, text);
5159  xmlFree(text);
5160  } else if (element_equal(child_node, "StorageDomainId")) {
5161  response->storage_domain_id = xml_get_string(doc, child_node);
5162  } else if (element_equal(child_node, "TapePartitionId")) {
5163  response->tape_partition_id = xml_get_string(doc, child_node);
5164  } else if (element_equal(child_node, "TapeType")) {
5165  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5166  if (text == NULL) {
5167  continue;
5168  }
5169  response->tape_type = _match_ds3_tape_type(client->log, text);
5170  xmlFree(text);
5171  } else if (element_equal(child_node, "WritePreference")) {
5172  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5173  if (text == NULL) {
5174  continue;
5175  }
5176  response->write_preference = _match_ds3_write_preference_level(client->log, text);
5177  xmlFree(text);
5178  } else {
5179  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_member_response [%s]\n", child_node->name, root->name);
5180  }
5181 
5182  if (error != NULL) {
5183  break;
5184  }
5185 
5186  }
5187 
5188 
5189  *_response = response;
5190 
5191  return error;
5192 }
5193 
5194 static ds3_error* _parse_ds3_storage_domain_member_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5195  ds3_error* error = NULL;
5196  xmlNodePtr child_node;
5197  GPtrArray* ds3_storage_domain_member_response_array = g_ptr_array_new();
5198 
5199  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5200  ds3_storage_domain_member_response* response = NULL;
5201  error = _parse_ds3_storage_domain_member_response(client, doc, child_node, &response);
5202  g_ptr_array_add(ds3_storage_domain_member_response_array, response);
5203 
5204  if (error != NULL) {
5205  break;
5206  }
5207  }
5208 
5209  *_response = ds3_storage_domain_member_response_array;
5210 
5211  return error;
5212 }
5213 static ds3_error* _parse_ds3_system_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_system_failure_response** _response) {
5214  ds3_system_failure_response* response;
5215  xmlNodePtr child_node;
5216  ds3_error* error = NULL;
5217 
5218  response = g_new0(ds3_system_failure_response, 1);
5219 
5220 
5221  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5222  if (element_equal(child_node, "Date")) {
5223  response->date = xml_get_string(doc, child_node);
5224  } else if (element_equal(child_node, "ErrorMessage")) {
5225  response->error_message = xml_get_string(doc, child_node);
5226  } else if (element_equal(child_node, "Id")) {
5227  response->id = xml_get_string(doc, child_node);
5228  } else if (element_equal(child_node, "Type")) {
5229  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5230  if (text == NULL) {
5231  continue;
5232  }
5233  response->type = _match_ds3_system_failure_type(client->log, text);
5234  xmlFree(text);
5235  } else {
5236  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_response [%s]\n", child_node->name, root->name);
5237  }
5238 
5239  if (error != NULL) {
5240  break;
5241  }
5242 
5243  }
5244 
5245 
5246  *_response = response;
5247 
5248  return error;
5249 }
5250 
5251 static ds3_error* _parse_ds3_system_failure_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5252  ds3_error* error = NULL;
5253  xmlNodePtr child_node;
5254  GPtrArray* ds3_system_failure_response_array = g_ptr_array_new();
5255 
5256  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5257  ds3_system_failure_response* response = NULL;
5258  error = _parse_ds3_system_failure_response(client, doc, child_node, &response);
5259  g_ptr_array_add(ds3_system_failure_response_array, response);
5260 
5261  if (error != NULL) {
5262  break;
5263  }
5264  }
5265 
5266  *_response = ds3_system_failure_response_array;
5267 
5268  return error;
5269 }
5270 static ds3_error* _parse_ds3_spectra_user_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_spectra_user_response** _response) {
5271  ds3_spectra_user_response* response;
5272  xmlNodePtr child_node;
5273  ds3_error* error = NULL;
5274 
5275  response = g_new0(ds3_spectra_user_response, 1);
5276 
5277 
5278  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5279  if (element_equal(child_node, "AuthId")) {
5280  response->auth_id = xml_get_string(doc, child_node);
5281  } else if (element_equal(child_node, "DefaultDataPolicyId")) {
5282  response->default_data_policy_id = xml_get_string(doc, child_node);
5283  } else if (element_equal(child_node, "Id")) {
5284  response->id = xml_get_string(doc, child_node);
5285  } else if (element_equal(child_node, "Name")) {
5286  response->name = xml_get_string(doc, child_node);
5287  } else if (element_equal(child_node, "SecretKey")) {
5288  response->secret_key = xml_get_string(doc, child_node);
5289  } else {
5290  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_spectra_user_response [%s]\n", child_node->name, root->name);
5291  }
5292 
5293  if (error != NULL) {
5294  break;
5295  }
5296 
5297  }
5298 
5299 
5300  *_response = response;
5301 
5302  return error;
5303 }
5304 
5305 static ds3_error* _parse_ds3_spectra_user_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5306  ds3_error* error = NULL;
5307  xmlNodePtr child_node;
5308  GPtrArray* ds3_spectra_user_response_array = g_ptr_array_new();
5309 
5310  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5311  ds3_spectra_user_response* response = NULL;
5312  error = _parse_ds3_spectra_user_response(client, doc, child_node, &response);
5313  g_ptr_array_add(ds3_spectra_user_response_array, response);
5314 
5315  if (error != NULL) {
5316  break;
5317  }
5318  }
5319 
5320  *_response = ds3_spectra_user_response_array;
5321 
5322  return error;
5323 }
5326  xmlNodePtr child_node;
5327  ds3_error* error = NULL;
5328 
5330 
5331 
5332  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5333  if (element_equal(child_node, "CreationDate")) {
5334  response->creation_date = xml_get_string(doc, child_node);
5335  } else if (element_equal(child_node, "Format")) {
5336  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5337  if (text == NULL) {
5338  continue;
5339  }
5340  response->format = _match_ds3_http_response_format_type(client->log, text);
5341  xmlFree(text);
5342  } else if (element_equal(child_node, "Id")) {
5343  response->id = xml_get_string(doc, child_node);
5344  } else if (element_equal(child_node, "JobId")) {
5345  response->job_id = xml_get_string(doc, child_node);
5346  } else if (element_equal(child_node, "LastFailure")) {
5347  response->last_failure = xml_get_string(doc, child_node);
5348  } else if (element_equal(child_node, "LastHttpResponseCode")) {
5349  response->last_http_response_code = xml_get_uint16(doc, child_node);
5350  } else if (element_equal(child_node, "LastNotification")) {
5351  response->last_notification = xml_get_string(doc, child_node);
5352  } else if (element_equal(child_node, "NamingConvention")) {
5353  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5354  if (text == NULL) {
5355  continue;
5356  }
5357  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
5358  xmlFree(text);
5359  } else if (element_equal(child_node, "NotificationEndPoint")) {
5360  response->notification_end_point = xml_get_string(doc, child_node);
5361  } else if (element_equal(child_node, "NotificationHttpMethod")) {
5362  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5363  if (text == NULL) {
5364  continue;
5365  }
5366  response->notification_http_method = _match_ds3_request_type(client->log, text);
5367  xmlFree(text);
5368  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
5369  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
5370  } else if (element_equal(child_node, "UserId")) {
5371  response->user_id = xml_get_string(doc, child_node);
5372  } else {
5373  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_completed_notification_registration_response [%s]\n", child_node->name, root->name);
5374  }
5375 
5376  if (error != NULL) {
5377  break;
5378  }
5379 
5380  }
5381 
5382 
5383  *_response = response;
5384 
5385  return error;
5386 }
5387 
5388 static ds3_error* _parse_ds3_job_completed_notification_registration_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5389  ds3_error* error = NULL;
5390  xmlNodePtr child_node;
5391  GPtrArray* ds3_job_completed_notification_registration_response_array = g_ptr_array_new();
5392 
5393  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5395  error = _parse_ds3_job_completed_notification_registration_response(client, doc, child_node, &response);
5396  g_ptr_array_add(ds3_job_completed_notification_registration_response_array, response);
5397 
5398  if (error != NULL) {
5399  break;
5400  }
5401  }
5402 
5403  *_response = ds3_job_completed_notification_registration_response_array;
5404 
5405  return error;
5406 }
5409  xmlNodePtr child_node;
5410  ds3_error* error = NULL;
5411 
5413 
5414 
5415  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5416  if (element_equal(child_node, "CreationDate")) {
5417  response->creation_date = xml_get_string(doc, child_node);
5418  } else if (element_equal(child_node, "Format")) {
5419  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5420  if (text == NULL) {
5421  continue;
5422  }
5423  response->format = _match_ds3_http_response_format_type(client->log, text);
5424  xmlFree(text);
5425  } else if (element_equal(child_node, "Id")) {
5426  response->id = xml_get_string(doc, child_node);
5427  } else if (element_equal(child_node, "LastFailure")) {
5428  response->last_failure = xml_get_string(doc, child_node);
5429  } else if (element_equal(child_node, "LastHttpResponseCode")) {
5430  response->last_http_response_code = xml_get_uint16(doc, child_node);
5431  } else if (element_equal(child_node, "LastNotification")) {
5432  response->last_notification = xml_get_string(doc, child_node);
5433  } else if (element_equal(child_node, "NamingConvention")) {
5434  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5435  if (text == NULL) {
5436  continue;
5437  }
5438  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
5439  xmlFree(text);
5440  } else if (element_equal(child_node, "NotificationEndPoint")) {
5441  response->notification_end_point = xml_get_string(doc, child_node);
5442  } else if (element_equal(child_node, "NotificationHttpMethod")) {
5443  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5444  if (text == NULL) {
5445  continue;
5446  }
5447  response->notification_http_method = _match_ds3_request_type(client->log, text);
5448  xmlFree(text);
5449  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
5450  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
5451  } else if (element_equal(child_node, "UserId")) {
5452  response->user_id = xml_get_string(doc, child_node);
5453  } else {
5454  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_created_notification_registration_response [%s]\n", child_node->name, root->name);
5455  }
5456 
5457  if (error != NULL) {
5458  break;
5459  }
5460 
5461  }
5462 
5463 
5464  *_response = response;
5465 
5466  return error;
5467 }
5468 
5469 static ds3_error* _parse_ds3_job_created_notification_registration_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5470  ds3_error* error = NULL;
5471  xmlNodePtr child_node;
5472  GPtrArray* ds3_job_created_notification_registration_response_array = g_ptr_array_new();
5473 
5474  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5476  error = _parse_ds3_job_created_notification_registration_response(client, doc, child_node, &response);
5477  g_ptr_array_add(ds3_job_created_notification_registration_response_array, response);
5478 
5479  if (error != NULL) {
5480  break;
5481  }
5482  }
5483 
5484  *_response = ds3_job_created_notification_registration_response_array;
5485 
5486  return error;
5487 }
5490  xmlNodePtr child_node;
5491  ds3_error* error = NULL;
5492 
5494 
5495 
5496  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5497  if (element_equal(child_node, "CreationDate")) {
5498  response->creation_date = xml_get_string(doc, child_node);
5499  } else if (element_equal(child_node, "Format")) {
5500  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5501  if (text == NULL) {
5502  continue;
5503  }
5504  response->format = _match_ds3_http_response_format_type(client->log, text);
5505  xmlFree(text);
5506  } else if (element_equal(child_node, "Id")) {
5507  response->id = xml_get_string(doc, child_node);
5508  } else if (element_equal(child_node, "LastFailure")) {
5509  response->last_failure = xml_get_string(doc, child_node);
5510  } else if (element_equal(child_node, "LastHttpResponseCode")) {
5511  response->last_http_response_code = xml_get_uint16(doc, child_node);
5512  } else if (element_equal(child_node, "LastNotification")) {
5513  response->last_notification = xml_get_string(doc, child_node);
5514  } else if (element_equal(child_node, "NamingConvention")) {
5515  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5516  if (text == NULL) {
5517  continue;
5518  }
5519  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
5520  xmlFree(text);
5521  } else if (element_equal(child_node, "NotificationEndPoint")) {
5522  response->notification_end_point = xml_get_string(doc, child_node);
5523  } else if (element_equal(child_node, "NotificationHttpMethod")) {
5524  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5525  if (text == NULL) {
5526  continue;
5527  }
5528  response->notification_http_method = _match_ds3_request_type(client->log, text);
5529  xmlFree(text);
5530  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
5531  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
5532  } else if (element_equal(child_node, "UserId")) {
5533  response->user_id = xml_get_string(doc, child_node);
5534  } else {
5535  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_notification_registration_response [%s]\n", child_node->name, root->name);
5536  }
5537 
5538  if (error != NULL) {
5539  break;
5540  }
5541 
5542  }
5543 
5544 
5545  *_response = response;
5546 
5547  return error;
5548 }
5549 
5550 static ds3_error* _parse_ds3_pool_failure_notification_registration_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5551  ds3_error* error = NULL;
5552  xmlNodePtr child_node;
5553  GPtrArray* ds3_pool_failure_notification_registration_response_array = g_ptr_array_new();
5554 
5555  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5557  error = _parse_ds3_pool_failure_notification_registration_response(client, doc, child_node, &response);
5558  g_ptr_array_add(ds3_pool_failure_notification_registration_response_array, response);
5559 
5560  if (error != NULL) {
5561  break;
5562  }
5563  }
5564 
5565  *_response = ds3_pool_failure_notification_registration_response_array;
5566 
5567  return error;
5568 }
5571  xmlNodePtr child_node;
5572  ds3_error* error = NULL;
5573 
5575 
5576 
5577  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5578  if (element_equal(child_node, "CreationDate")) {
5579  response->creation_date = xml_get_string(doc, child_node);
5580  } else if (element_equal(child_node, "Format")) {
5581  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5582  if (text == NULL) {
5583  continue;
5584  }
5585  response->format = _match_ds3_http_response_format_type(client->log, text);
5586  xmlFree(text);
5587  } else if (element_equal(child_node, "Id")) {
5588  response->id = xml_get_string(doc, child_node);
5589  } else if (element_equal(child_node, "JobId")) {
5590  response->job_id = xml_get_string(doc, child_node);
5591  } else if (element_equal(child_node, "LastFailure")) {
5592  response->last_failure = xml_get_string(doc, child_node);
5593  } else if (element_equal(child_node, "LastHttpResponseCode")) {
5594  response->last_http_response_code = xml_get_uint16(doc, child_node);
5595  } else if (element_equal(child_node, "LastNotification")) {
5596  response->last_notification = xml_get_string(doc, child_node);
5597  } else if (element_equal(child_node, "NamingConvention")) {
5598  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5599  if (text == NULL) {
5600  continue;
5601  }
5602  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
5603  xmlFree(text);
5604  } else if (element_equal(child_node, "NotificationEndPoint")) {
5605  response->notification_end_point = xml_get_string(doc, child_node);
5606  } else if (element_equal(child_node, "NotificationHttpMethod")) {
5607  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5608  if (text == NULL) {
5609  continue;
5610  }
5611  response->notification_http_method = _match_ds3_request_type(client->log, text);
5612  xmlFree(text);
5613  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
5614  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
5615  } else if (element_equal(child_node, "UserId")) {
5616  response->user_id = xml_get_string(doc, child_node);
5617  } else {
5618  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);
5619  }
5620 
5621  if (error != NULL) {
5622  break;
5623  }
5624 
5625  }
5626 
5627 
5628  *_response = response;
5629 
5630  return error;
5631 }
5632 
5633 static ds3_error* _parse_ds3_s3_object_cached_notification_registration_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5634  ds3_error* error = NULL;
5635  xmlNodePtr child_node;
5636  GPtrArray* ds3_s3_object_cached_notification_registration_response_array = g_ptr_array_new();
5637 
5638  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5640  error = _parse_ds3_s3_object_cached_notification_registration_response(client, doc, child_node, &response);
5641  g_ptr_array_add(ds3_s3_object_cached_notification_registration_response_array, response);
5642 
5643  if (error != NULL) {
5644  break;
5645  }
5646  }
5647 
5648  *_response = ds3_s3_object_cached_notification_registration_response_array;
5649 
5650  return error;
5651 }
5654  xmlNodePtr child_node;
5655  ds3_error* error = NULL;
5656 
5658 
5659 
5660  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5661  if (element_equal(child_node, "CreationDate")) {
5662  response->creation_date = xml_get_string(doc, child_node);
5663  } else if (element_equal(child_node, "Format")) {
5664  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5665  if (text == NULL) {
5666  continue;
5667  }
5668  response->format = _match_ds3_http_response_format_type(client->log, text);
5669  xmlFree(text);
5670  } else if (element_equal(child_node, "Id")) {
5671  response->id = xml_get_string(doc, child_node);
5672  } else if (element_equal(child_node, "LastFailure")) {
5673  response->last_failure = xml_get_string(doc, child_node);
5674  } else if (element_equal(child_node, "LastHttpResponseCode")) {
5675  response->last_http_response_code = xml_get_uint16(doc, child_node);
5676  } else if (element_equal(child_node, "LastNotification")) {
5677  response->last_notification = xml_get_string(doc, child_node);
5678  } else if (element_equal(child_node, "NamingConvention")) {
5679  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5680  if (text == NULL) {
5681  continue;
5682  }
5683  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
5684  xmlFree(text);
5685  } else if (element_equal(child_node, "NotificationEndPoint")) {
5686  response->notification_end_point = xml_get_string(doc, child_node);
5687  } else if (element_equal(child_node, "NotificationHttpMethod")) {
5688  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5689  if (text == NULL) {
5690  continue;
5691  }
5692  response->notification_http_method = _match_ds3_request_type(client->log, text);
5693  xmlFree(text);
5694  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
5695  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
5696  } else if (element_equal(child_node, "UserId")) {
5697  response->user_id = xml_get_string(doc, child_node);
5698  } else {
5699  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);
5700  }
5701 
5702  if (error != NULL) {
5703  break;
5704  }
5705 
5706  }
5707 
5708 
5709  *_response = response;
5710 
5711  return error;
5712 }
5713 
5714 static ds3_error* _parse_ds3_s3_object_lost_notification_registration_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5715  ds3_error* error = NULL;
5716  xmlNodePtr child_node;
5717  GPtrArray* ds3_s3_object_lost_notification_registration_response_array = g_ptr_array_new();
5718 
5719  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5721  error = _parse_ds3_s3_object_lost_notification_registration_response(client, doc, child_node, &response);
5722  g_ptr_array_add(ds3_s3_object_lost_notification_registration_response_array, response);
5723 
5724  if (error != NULL) {
5725  break;
5726  }
5727  }
5728 
5729  *_response = ds3_s3_object_lost_notification_registration_response_array;
5730 
5731  return error;
5732 }
5735  xmlNodePtr child_node;
5736  ds3_error* error = NULL;
5737 
5739 
5740 
5741  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5742  if (element_equal(child_node, "CreationDate")) {
5743  response->creation_date = xml_get_string(doc, child_node);
5744  } else if (element_equal(child_node, "Format")) {
5745  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5746  if (text == NULL) {
5747  continue;
5748  }
5749  response->format = _match_ds3_http_response_format_type(client->log, text);
5750  xmlFree(text);
5751  } else if (element_equal(child_node, "Id")) {
5752  response->id = xml_get_string(doc, child_node);
5753  } else if (element_equal(child_node, "JobId")) {
5754  response->job_id = xml_get_string(doc, child_node);
5755  } else if (element_equal(child_node, "LastFailure")) {
5756  response->last_failure = xml_get_string(doc, child_node);
5757  } else if (element_equal(child_node, "LastHttpResponseCode")) {
5758  response->last_http_response_code = xml_get_uint16(doc, child_node);
5759  } else if (element_equal(child_node, "LastNotification")) {
5760  response->last_notification = xml_get_string(doc, child_node);
5761  } else if (element_equal(child_node, "NamingConvention")) {
5762  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5763  if (text == NULL) {
5764  continue;
5765  }
5766  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
5767  xmlFree(text);
5768  } else if (element_equal(child_node, "NotificationEndPoint")) {
5769  response->notification_end_point = xml_get_string(doc, child_node);
5770  } else if (element_equal(child_node, "NotificationHttpMethod")) {
5771  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5772  if (text == NULL) {
5773  continue;
5774  }
5775  response->notification_http_method = _match_ds3_request_type(client->log, text);
5776  xmlFree(text);
5777  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
5778  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
5779  } else if (element_equal(child_node, "UserId")) {
5780  response->user_id = xml_get_string(doc, child_node);
5781  } else {
5782  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);
5783  }
5784 
5785  if (error != NULL) {
5786  break;
5787  }
5788 
5789  }
5790 
5791 
5792  *_response = response;
5793 
5794  return error;
5795 }
5796 
5797 static ds3_error* _parse_ds3_s3_object_persisted_notification_registration_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5798  ds3_error* error = NULL;
5799  xmlNodePtr child_node;
5800  GPtrArray* ds3_s3_object_persisted_notification_registration_response_array = g_ptr_array_new();
5801 
5802  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5804  error = _parse_ds3_s3_object_persisted_notification_registration_response(client, doc, child_node, &response);
5805  g_ptr_array_add(ds3_s3_object_persisted_notification_registration_response_array, response);
5806 
5807  if (error != NULL) {
5808  break;
5809  }
5810  }
5811 
5812  *_response = ds3_s3_object_persisted_notification_registration_response_array;
5813 
5814  return error;
5815 }
5818  xmlNodePtr child_node;
5819  ds3_error* error = NULL;
5820 
5822 
5823 
5824  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5825  if (element_equal(child_node, "CreationDate")) {
5826  response->creation_date = xml_get_string(doc, child_node);
5827  } else if (element_equal(child_node, "Format")) {
5828  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5829  if (text == NULL) {
5830  continue;
5831  }
5832  response->format = _match_ds3_http_response_format_type(client->log, text);
5833  xmlFree(text);
5834  } else if (element_equal(child_node, "Id")) {
5835  response->id = xml_get_string(doc, child_node);
5836  } else if (element_equal(child_node, "LastFailure")) {
5837  response->last_failure = xml_get_string(doc, child_node);
5838  } else if (element_equal(child_node, "LastHttpResponseCode")) {
5839  response->last_http_response_code = xml_get_uint16(doc, child_node);
5840  } else if (element_equal(child_node, "LastNotification")) {
5841  response->last_notification = xml_get_string(doc, child_node);
5842  } else if (element_equal(child_node, "NamingConvention")) {
5843  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5844  if (text == NULL) {
5845  continue;
5846  }
5847  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
5848  xmlFree(text);
5849  } else if (element_equal(child_node, "NotificationEndPoint")) {
5850  response->notification_end_point = xml_get_string(doc, child_node);
5851  } else if (element_equal(child_node, "NotificationHttpMethod")) {
5852  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5853  if (text == NULL) {
5854  continue;
5855  }
5856  response->notification_http_method = _match_ds3_request_type(client->log, text);
5857  xmlFree(text);
5858  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
5859  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
5860  } else if (element_equal(child_node, "UserId")) {
5861  response->user_id = xml_get_string(doc, child_node);
5862  } else {
5863  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);
5864  }
5865 
5866  if (error != NULL) {
5867  break;
5868  }
5869 
5870  }
5871 
5872 
5873  *_response = response;
5874 
5875  return error;
5876 }
5877 
5878 static ds3_error* _parse_ds3_storage_domain_failure_notification_registration_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5879  ds3_error* error = NULL;
5880  xmlNodePtr child_node;
5881  GPtrArray* ds3_storage_domain_failure_notification_registration_response_array = g_ptr_array_new();
5882 
5883  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5885  error = _parse_ds3_storage_domain_failure_notification_registration_response(client, doc, child_node, &response);
5886  g_ptr_array_add(ds3_storage_domain_failure_notification_registration_response_array, response);
5887 
5888  if (error != NULL) {
5889  break;
5890  }
5891  }
5892 
5893  *_response = ds3_storage_domain_failure_notification_registration_response_array;
5894 
5895  return error;
5896 }
5899  xmlNodePtr child_node;
5900  ds3_error* error = NULL;
5901 
5903 
5904 
5905  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5906  if (element_equal(child_node, "CreationDate")) {
5907  response->creation_date = xml_get_string(doc, child_node);
5908  } else if (element_equal(child_node, "Format")) {
5909  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5910  if (text == NULL) {
5911  continue;
5912  }
5913  response->format = _match_ds3_http_response_format_type(client->log, text);
5914  xmlFree(text);
5915  } else if (element_equal(child_node, "Id")) {
5916  response->id = xml_get_string(doc, child_node);
5917  } else if (element_equal(child_node, "LastFailure")) {
5918  response->last_failure = xml_get_string(doc, child_node);
5919  } else if (element_equal(child_node, "LastHttpResponseCode")) {
5920  response->last_http_response_code = xml_get_uint16(doc, child_node);
5921  } else if (element_equal(child_node, "LastNotification")) {
5922  response->last_notification = xml_get_string(doc, child_node);
5923  } else if (element_equal(child_node, "NamingConvention")) {
5924  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5925  if (text == NULL) {
5926  continue;
5927  }
5928  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
5929  xmlFree(text);
5930  } else if (element_equal(child_node, "NotificationEndPoint")) {
5931  response->notification_end_point = xml_get_string(doc, child_node);
5932  } else if (element_equal(child_node, "NotificationHttpMethod")) {
5933  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5934  if (text == NULL) {
5935  continue;
5936  }
5937  response->notification_http_method = _match_ds3_request_type(client->log, text);
5938  xmlFree(text);
5939  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
5940  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
5941  } else if (element_equal(child_node, "UserId")) {
5942  response->user_id = xml_get_string(doc, child_node);
5943  } else {
5944  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_notification_registration_response [%s]\n", child_node->name, root->name);
5945  }
5946 
5947  if (error != NULL) {
5948  break;
5949  }
5950 
5951  }
5952 
5953 
5954  *_response = response;
5955 
5956  return error;
5957 }
5958 
5959 static ds3_error* _parse_ds3_system_failure_notification_registration_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
5960  ds3_error* error = NULL;
5961  xmlNodePtr child_node;
5962  GPtrArray* ds3_system_failure_notification_registration_response_array = g_ptr_array_new();
5963 
5964  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5966  error = _parse_ds3_system_failure_notification_registration_response(client, doc, child_node, &response);
5967  g_ptr_array_add(ds3_system_failure_notification_registration_response_array, response);
5968 
5969  if (error != NULL) {
5970  break;
5971  }
5972  }
5973 
5974  *_response = ds3_system_failure_notification_registration_response_array;
5975 
5976  return error;
5977 }
5980  xmlNodePtr child_node;
5981  ds3_error* error = NULL;
5982 
5984 
5985 
5986  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
5987  if (element_equal(child_node, "CreationDate")) {
5988  response->creation_date = xml_get_string(doc, child_node);
5989  } else if (element_equal(child_node, "Format")) {
5990  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
5991  if (text == NULL) {
5992  continue;
5993  }
5994  response->format = _match_ds3_http_response_format_type(client->log, text);
5995  xmlFree(text);
5996  } else if (element_equal(child_node, "Id")) {
5997  response->id = xml_get_string(doc, child_node);
5998  } else if (element_equal(child_node, "LastFailure")) {
5999  response->last_failure = xml_get_string(doc, child_node);
6000  } else if (element_equal(child_node, "LastHttpResponseCode")) {
6001  response->last_http_response_code = xml_get_uint16(doc, child_node);
6002  } else if (element_equal(child_node, "LastNotification")) {
6003  response->last_notification = xml_get_string(doc, child_node);
6004  } else if (element_equal(child_node, "NamingConvention")) {
6005  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6006  if (text == NULL) {
6007  continue;
6008  }
6009  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
6010  xmlFree(text);
6011  } else if (element_equal(child_node, "NotificationEndPoint")) {
6012  response->notification_end_point = xml_get_string(doc, child_node);
6013  } else if (element_equal(child_node, "NotificationHttpMethod")) {
6014  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6015  if (text == NULL) {
6016  continue;
6017  }
6018  response->notification_http_method = _match_ds3_request_type(client->log, text);
6019  xmlFree(text);
6020  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
6021  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
6022  } else if (element_equal(child_node, "UserId")) {
6023  response->user_id = xml_get_string(doc, child_node);
6024  } else {
6025  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_notification_registration_response [%s]\n", child_node->name, root->name);
6026  }
6027 
6028  if (error != NULL) {
6029  break;
6030  }
6031 
6032  }
6033 
6034 
6035  *_response = response;
6036 
6037  return error;
6038 }
6039 
6040 static ds3_error* _parse_ds3_tape_failure_notification_registration_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6041  ds3_error* error = NULL;
6042  xmlNodePtr child_node;
6043  GPtrArray* ds3_tape_failure_notification_registration_response_array = g_ptr_array_new();
6044 
6045  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6047  error = _parse_ds3_tape_failure_notification_registration_response(client, doc, child_node, &response);
6048  g_ptr_array_add(ds3_tape_failure_notification_registration_response_array, response);
6049 
6050  if (error != NULL) {
6051  break;
6052  }
6053  }
6054 
6055  *_response = ds3_tape_failure_notification_registration_response_array;
6056 
6057  return error;
6058 }
6061  xmlNodePtr child_node;
6062  ds3_error* error = NULL;
6063 
6065 
6066 
6067  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6068  if (element_equal(child_node, "CreationDate")) {
6069  response->creation_date = xml_get_string(doc, child_node);
6070  } else if (element_equal(child_node, "Format")) {
6071  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6072  if (text == NULL) {
6073  continue;
6074  }
6075  response->format = _match_ds3_http_response_format_type(client->log, text);
6076  xmlFree(text);
6077  } else if (element_equal(child_node, "Id")) {
6078  response->id = xml_get_string(doc, child_node);
6079  } else if (element_equal(child_node, "LastFailure")) {
6080  response->last_failure = xml_get_string(doc, child_node);
6081  } else if (element_equal(child_node, "LastHttpResponseCode")) {
6082  response->last_http_response_code = xml_get_uint16(doc, child_node);
6083  } else if (element_equal(child_node, "LastNotification")) {
6084  response->last_notification = xml_get_string(doc, child_node);
6085  } else if (element_equal(child_node, "NamingConvention")) {
6086  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6087  if (text == NULL) {
6088  continue;
6089  }
6090  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
6091  xmlFree(text);
6092  } else if (element_equal(child_node, "NotificationEndPoint")) {
6093  response->notification_end_point = xml_get_string(doc, child_node);
6094  } else if (element_equal(child_node, "NotificationHttpMethod")) {
6095  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6096  if (text == NULL) {
6097  continue;
6098  }
6099  response->notification_http_method = _match_ds3_request_type(client->log, text);
6100  xmlFree(text);
6101  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
6102  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
6103  } else if (element_equal(child_node, "UserId")) {
6104  response->user_id = xml_get_string(doc, child_node);
6105  } else {
6106  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);
6107  }
6108 
6109  if (error != NULL) {
6110  break;
6111  }
6112 
6113  }
6114 
6115 
6116  *_response = response;
6117 
6118  return error;
6119 }
6120 
6121 static ds3_error* _parse_ds3_tape_partition_failure_notification_registration_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6122  ds3_error* error = NULL;
6123  xmlNodePtr child_node;
6124  GPtrArray* ds3_tape_partition_failure_notification_registration_response_array = g_ptr_array_new();
6125 
6126  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6128  error = _parse_ds3_tape_partition_failure_notification_registration_response(client, doc, child_node, &response);
6129  g_ptr_array_add(ds3_tape_partition_failure_notification_registration_response_array, response);
6130 
6131  if (error != NULL) {
6132  break;
6133  }
6134  }
6135 
6136  *_response = ds3_tape_partition_failure_notification_registration_response_array;
6137 
6138  return error;
6139 }
6140 static ds3_error* _parse_ds3_cache_filesystem_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_cache_filesystem_response** _response) {
6142  xmlNodePtr child_node;
6143  ds3_error* error = NULL;
6144 
6145  response = g_new0(ds3_cache_filesystem_response, 1);
6146 
6147 
6148  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6149  if (element_equal(child_node, "AutoReclaimInitiateThreshold")) {
6150  response->auto_reclaim_initiate_threshold = xml_get_uint64(doc, child_node);
6151  } else if (element_equal(child_node, "AutoReclaimTerminateThreshold")) {
6152  response->auto_reclaim_terminate_threshold = xml_get_uint64(doc, child_node);
6153  } else if (element_equal(child_node, "BurstThreshold")) {
6154  response->burst_threshold = xml_get_uint64(doc, child_node);
6155  } else if (element_equal(child_node, "Id")) {
6156  response->id = xml_get_string(doc, child_node);
6157  } else if (element_equal(child_node, "MaxCapacityInBytes")) {
6158  response->max_capacity_in_bytes = xml_get_uint64(doc, child_node);
6159  } else if (element_equal(child_node, "MaxPercentUtilizationOfFilesystem")) {
6160  response->max_percent_utilization_of_filesystem = xml_get_uint64(doc, child_node);
6161  } else if (element_equal(child_node, "NodeId")) {
6162  response->node_id = xml_get_string(doc, child_node);
6163  } else if (element_equal(child_node, "Path")) {
6164  response->path = xml_get_string(doc, child_node);
6165  } else {
6166  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_response [%s]\n", child_node->name, root->name);
6167  }
6168 
6169  if (error != NULL) {
6170  break;
6171  }
6172 
6173  }
6174 
6175 
6176  *_response = response;
6177 
6178  return error;
6179 }
6180 
6181 static ds3_error* _parse_ds3_cache_filesystem_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6182  ds3_error* error = NULL;
6183  xmlNodePtr child_node;
6184  GPtrArray* ds3_cache_filesystem_response_array = g_ptr_array_new();
6185 
6186  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6187  ds3_cache_filesystem_response* response = NULL;
6188  error = _parse_ds3_cache_filesystem_response(client, doc, child_node, &response);
6189  g_ptr_array_add(ds3_cache_filesystem_response_array, response);
6190 
6191  if (error != NULL) {
6192  break;
6193  }
6194  }
6195 
6196  *_response = ds3_cache_filesystem_response_array;
6197 
6198  return error;
6199 }
6200 static ds3_error* _parse_ds3_pool_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_response** _response) {
6201  ds3_pool_response* response;
6202  xmlNodePtr child_node;
6203  ds3_error* error = NULL;
6204 
6205  response = g_new0(ds3_pool_response, 1);
6206 
6207 
6208  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6209  if (element_equal(child_node, "AssignedToStorageDomain")) {
6210  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
6211  } else if (element_equal(child_node, "AvailableCapacity")) {
6212  response->available_capacity = xml_get_uint64(doc, child_node);
6213  } else if (element_equal(child_node, "BucketId")) {
6214  response->bucket_id = xml_get_string(doc, child_node);
6215  } else if (element_equal(child_node, "Guid")) {
6216  response->guid = xml_get_string(doc, child_node);
6217  } else if (element_equal(child_node, "Health")) {
6218  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6219  if (text == NULL) {
6220  continue;
6221  }
6222  response->health = _match_ds3_pool_health(client->log, text);
6223  xmlFree(text);
6224  } else if (element_equal(child_node, "Id")) {
6225  response->id = xml_get_string(doc, child_node);
6226  } else if (element_equal(child_node, "LastAccessed")) {
6227  response->last_accessed = xml_get_string(doc, child_node);
6228  } else if (element_equal(child_node, "LastModified")) {
6229  response->last_modified = xml_get_string(doc, child_node);
6230  } else if (element_equal(child_node, "LastVerified")) {
6231  response->last_verified = xml_get_string(doc, child_node);
6232  } else if (element_equal(child_node, "Mountpoint")) {
6233  response->mountpoint = xml_get_string(doc, child_node);
6234  } else if (element_equal(child_node, "Name")) {
6235  response->name = xml_get_string(doc, child_node);
6236  } else if (element_equal(child_node, "PartitionId")) {
6237  response->partition_id = xml_get_string(doc, child_node);
6238  } else if (element_equal(child_node, "PoweredOn")) {
6239  response->powered_on = xml_get_bool(client->log, doc, child_node);
6240  } else if (element_equal(child_node, "Quiesced")) {
6241  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6242  if (text == NULL) {
6243  continue;
6244  }
6245  response->quiesced = _match_ds3_quiesced(client->log, text);
6246  xmlFree(text);
6247  } else if (element_equal(child_node, "ReservedCapacity")) {
6248  response->reserved_capacity = xml_get_uint64(doc, child_node);
6249  } else if (element_equal(child_node, "State")) {
6250  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6251  if (text == NULL) {
6252  continue;
6253  }
6254  response->state = _match_ds3_pool_state(client->log, text);
6255  xmlFree(text);
6256  } else if (element_equal(child_node, "StorageDomainId")) {
6257  response->storage_domain_id = xml_get_string(doc, child_node);
6258  } else if (element_equal(child_node, "TotalCapacity")) {
6259  response->total_capacity = xml_get_uint64(doc, child_node);
6260  } else if (element_equal(child_node, "Type")) {
6261  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6262  if (text == NULL) {
6263  continue;
6264  }
6265  response->type = _match_ds3_pool_type(client->log, text);
6266  xmlFree(text);
6267  } else if (element_equal(child_node, "UsedCapacity")) {
6268  response->used_capacity = xml_get_uint64(doc, child_node);
6269  } else {
6270  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_response [%s]\n", child_node->name, root->name);
6271  }
6272 
6273  if (error != NULL) {
6274  break;
6275  }
6276 
6277  }
6278 
6279 
6280  *_response = response;
6281 
6282  return error;
6283 }
6284 
6285 static ds3_error* _parse_ds3_pool_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6286  ds3_error* error = NULL;
6287  xmlNodePtr child_node;
6288  GPtrArray* ds3_pool_response_array = g_ptr_array_new();
6289 
6290  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6291  ds3_pool_response* response = NULL;
6292  error = _parse_ds3_pool_response(client, doc, child_node, &response);
6293  g_ptr_array_add(ds3_pool_response_array, response);
6294 
6295  if (error != NULL) {
6296  break;
6297  }
6298  }
6299 
6300  *_response = ds3_pool_response_array;
6301 
6302  return error;
6303 }
6304 static ds3_error* _parse_ds3_pool_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_failure_response** _response) {
6305  ds3_pool_failure_response* response;
6306  xmlNodePtr child_node;
6307  ds3_error* error = NULL;
6308 
6309  response = g_new0(ds3_pool_failure_response, 1);
6310 
6311 
6312  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6313  if (element_equal(child_node, "Date")) {
6314  response->date = xml_get_string(doc, child_node);
6315  } else if (element_equal(child_node, "ErrorMessage")) {
6316  response->error_message = xml_get_string(doc, child_node);
6317  } else if (element_equal(child_node, "Id")) {
6318  response->id = xml_get_string(doc, child_node);
6319  } else if (element_equal(child_node, "PoolId")) {
6320  response->pool_id = xml_get_string(doc, child_node);
6321  } else if (element_equal(child_node, "Type")) {
6322  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6323  if (text == NULL) {
6324  continue;
6325  }
6326  response->type = _match_ds3_pool_failure_type(client->log, text);
6327  xmlFree(text);
6328  } else {
6329  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_response [%s]\n", child_node->name, root->name);
6330  }
6331 
6332  if (error != NULL) {
6333  break;
6334  }
6335 
6336  }
6337 
6338 
6339  *_response = response;
6340 
6341  return error;
6342 }
6343 
6344 static ds3_error* _parse_ds3_pool_failure_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6345  ds3_error* error = NULL;
6346  xmlNodePtr child_node;
6347  GPtrArray* ds3_pool_failure_response_array = g_ptr_array_new();
6348 
6349  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6350  ds3_pool_failure_response* response = NULL;
6351  error = _parse_ds3_pool_failure_response(client, doc, child_node, &response);
6352  g_ptr_array_add(ds3_pool_failure_response_array, response);
6353 
6354  if (error != NULL) {
6355  break;
6356  }
6357  }
6358 
6359  *_response = ds3_pool_failure_response_array;
6360 
6361  return error;
6362 }
6363 static ds3_error* _parse_ds3_pool_partition_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_partition_response** _response) {
6364  ds3_pool_partition_response* response;
6365  xmlNodePtr child_node;
6366  ds3_error* error = NULL;
6367 
6368  response = g_new0(ds3_pool_partition_response, 1);
6369 
6370 
6371  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6372  if (element_equal(child_node, "Id")) {
6373  response->id = xml_get_string(doc, child_node);
6374  } else if (element_equal(child_node, "Name")) {
6375  response->name = xml_get_string(doc, child_node);
6376  } else if (element_equal(child_node, "Type")) {
6377  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6378  if (text == NULL) {
6379  continue;
6380  }
6381  response->type = _match_ds3_pool_type(client->log, text);
6382  xmlFree(text);
6383  } else {
6384  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_partition_response [%s]\n", child_node->name, root->name);
6385  }
6386 
6387  if (error != NULL) {
6388  break;
6389  }
6390 
6391  }
6392 
6393 
6394  *_response = response;
6395 
6396  return error;
6397 }
6398 
6399 static ds3_error* _parse_ds3_pool_partition_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6400  ds3_error* error = NULL;
6401  xmlNodePtr child_node;
6402  GPtrArray* ds3_pool_partition_response_array = g_ptr_array_new();
6403 
6404  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6405  ds3_pool_partition_response* response = NULL;
6406  error = _parse_ds3_pool_partition_response(client, doc, child_node, &response);
6407  g_ptr_array_add(ds3_pool_partition_response_array, response);
6408 
6409  if (error != NULL) {
6410  break;
6411  }
6412  }
6413 
6414  *_response = ds3_pool_partition_response_array;
6415 
6416  return error;
6417 }
6418 static ds3_error* _parse_ds3_tape_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_response** _response) {
6419  ds3_tape_response* response;
6420  xmlNodePtr child_node;
6421  ds3_error* error = NULL;
6422 
6423  response = g_new0(ds3_tape_response, 1);
6424 
6425 
6426  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6427  if (element_equal(child_node, "AssignedToStorageDomain")) {
6428  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
6429  } else if (element_equal(child_node, "AvailableRawCapacity")) {
6430  response->available_raw_capacity = xml_get_uint64(doc, child_node);
6431  } else if (element_equal(child_node, "BarCode")) {
6432  response->bar_code = xml_get_string(doc, child_node);
6433  } else if (element_equal(child_node, "BucketId")) {
6434  response->bucket_id = xml_get_string(doc, child_node);
6435  } else if (element_equal(child_node, "DescriptionForIdentification")) {
6436  response->description_for_identification = xml_get_string(doc, child_node);
6437  } else if (element_equal(child_node, "EjectDate")) {
6438  response->eject_date = xml_get_string(doc, child_node);
6439  } else if (element_equal(child_node, "EjectLabel")) {
6440  response->eject_label = xml_get_string(doc, child_node);
6441  } else if (element_equal(child_node, "EjectLocation")) {
6442  response->eject_location = xml_get_string(doc, child_node);
6443  } else if (element_equal(child_node, "EjectPending")) {
6444  response->eject_pending = xml_get_string(doc, child_node);
6445  } else if (element_equal(child_node, "FullOfData")) {
6446  response->full_of_data = xml_get_bool(client->log, doc, child_node);
6447  } else if (element_equal(child_node, "Id")) {
6448  response->id = xml_get_string(doc, child_node);
6449  } else if (element_equal(child_node, "LastAccessed")) {
6450  response->last_accessed = xml_get_string(doc, child_node);
6451  } else if (element_equal(child_node, "LastCheckpoint")) {
6452  response->last_checkpoint = xml_get_string(doc, child_node);
6453  } else if (element_equal(child_node, "LastModified")) {
6454  response->last_modified = xml_get_string(doc, child_node);
6455  } else if (element_equal(child_node, "LastVerified")) {
6456  response->last_verified = xml_get_string(doc, child_node);
6457  } else if (element_equal(child_node, "PartitionId")) {
6458  response->partition_id = xml_get_string(doc, child_node);
6459  } else if (element_equal(child_node, "PreviousState")) {
6460  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6461  if (text == NULL) {
6462  continue;
6463  }
6464  response->previous_state = _match_ds3_tape_state(client->log, text);
6465  xmlFree(text);
6466  } else if (element_equal(child_node, "SerialNumber")) {
6467  response->serial_number = xml_get_string(doc, child_node);
6468  } else if (element_equal(child_node, "State")) {
6469  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6470  if (text == NULL) {
6471  continue;
6472  }
6473  response->state = _match_ds3_tape_state(client->log, text);
6474  xmlFree(text);
6475  } else if (element_equal(child_node, "StorageDomainId")) {
6476  response->storage_domain_id = xml_get_string(doc, child_node);
6477  } else if (element_equal(child_node, "TakeOwnershipPending")) {
6478  response->take_ownership_pending = xml_get_bool(client->log, doc, child_node);
6479  } else if (element_equal(child_node, "TotalRawCapacity")) {
6480  response->total_raw_capacity = xml_get_uint64(doc, child_node);
6481  } else if (element_equal(child_node, "Type")) {
6482  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6483  if (text == NULL) {
6484  continue;
6485  }
6486  response->type = _match_ds3_tape_type(client->log, text);
6487  xmlFree(text);
6488  } else if (element_equal(child_node, "VerifyPending")) {
6489  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6490  if (text == NULL) {
6491  continue;
6492  }
6493  response->verify_pending = _match_ds3_priority(client->log, text);
6494  xmlFree(text);
6495  } else if (element_equal(child_node, "WriteProtected")) {
6496  response->write_protected = xml_get_bool(client->log, doc, child_node);
6497  } else {
6498  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_response [%s]\n", child_node->name, root->name);
6499  }
6500 
6501  if (error != NULL) {
6502  break;
6503  }
6504 
6505  }
6506 
6507 
6508  *_response = response;
6509 
6510  return error;
6511 }
6512 
6513 static ds3_error* _parse_ds3_tape_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6514  ds3_error* error = NULL;
6515  xmlNodePtr child_node;
6516  GPtrArray* ds3_tape_response_array = g_ptr_array_new();
6517 
6518  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6519  ds3_tape_response* response = NULL;
6520  error = _parse_ds3_tape_response(client, doc, child_node, &response);
6521  g_ptr_array_add(ds3_tape_response_array, response);
6522 
6523  if (error != NULL) {
6524  break;
6525  }
6526  }
6527 
6528  *_response = ds3_tape_response_array;
6529 
6530  return error;
6531 }
6532 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) {
6534  xmlNodePtr child_node;
6535  ds3_error* error = NULL;
6536 
6537  response = g_new0(ds3_tape_density_directive_response, 1);
6538 
6539 
6540  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6541  if (element_equal(child_node, "Density")) {
6542  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6543  if (text == NULL) {
6544  continue;
6545  }
6546  response->density = _match_ds3_tape_drive_type(client->log, text);
6547  xmlFree(text);
6548  } else if (element_equal(child_node, "Id")) {
6549  response->id = xml_get_string(doc, child_node);
6550  } else if (element_equal(child_node, "PartitionId")) {
6551  response->partition_id = xml_get_string(doc, child_node);
6552  } else if (element_equal(child_node, "TapeType")) {
6553  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6554  if (text == NULL) {
6555  continue;
6556  }
6557  response->tape_type = _match_ds3_tape_type(client->log, text);
6558  xmlFree(text);
6559  } else {
6560  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_density_directive_response [%s]\n", child_node->name, root->name);
6561  }
6562 
6563  if (error != NULL) {
6564  break;
6565  }
6566 
6567  }
6568 
6569 
6570  *_response = response;
6571 
6572  return error;
6573 }
6574 
6575 static ds3_error* _parse_ds3_tape_density_directive_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6576  ds3_error* error = NULL;
6577  xmlNodePtr child_node;
6578  GPtrArray* ds3_tape_density_directive_response_array = g_ptr_array_new();
6579 
6580  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6581  ds3_tape_density_directive_response* response = NULL;
6582  error = _parse_ds3_tape_density_directive_response(client, doc, child_node, &response);
6583  g_ptr_array_add(ds3_tape_density_directive_response_array, response);
6584 
6585  if (error != NULL) {
6586  break;
6587  }
6588  }
6589 
6590  *_response = ds3_tape_density_directive_response_array;
6591 
6592  return error;
6593 }
6594 static ds3_error* _parse_ds3_tape_drive_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_drive_response** _response) {
6595  ds3_tape_drive_response* response;
6596  xmlNodePtr child_node;
6597  ds3_error* error = NULL;
6598 
6599  response = g_new0(ds3_tape_drive_response, 1);
6600 
6601 
6602  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6603  if (element_equal(child_node, "ErrorMessage")) {
6604  response->error_message = xml_get_string(doc, child_node);
6605  } else if (element_equal(child_node, "ForceTapeRemoval")) {
6606  response->force_tape_removal = xml_get_bool(client->log, doc, child_node);
6607  } else if (element_equal(child_node, "Id")) {
6608  response->id = xml_get_string(doc, child_node);
6609  } else if (element_equal(child_node, "LastCleaned")) {
6610  response->last_cleaned = xml_get_string(doc, child_node);
6611  } else if (element_equal(child_node, "PartitionId")) {
6612  response->partition_id = xml_get_string(doc, child_node);
6613  } else if (element_equal(child_node, "SerialNumber")) {
6614  response->serial_number = xml_get_string(doc, child_node);
6615  } else if (element_equal(child_node, "State")) {
6616  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6617  if (text == NULL) {
6618  continue;
6619  }
6620  response->state = _match_ds3_tape_drive_state(client->log, text);
6621  xmlFree(text);
6622  } else if (element_equal(child_node, "TapeId")) {
6623  response->tape_id = xml_get_string(doc, child_node);
6624  } else if (element_equal(child_node, "Type")) {
6625  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6626  if (text == NULL) {
6627  continue;
6628  }
6629  response->type = _match_ds3_tape_drive_type(client->log, text);
6630  xmlFree(text);
6631  } else {
6632  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_drive_response [%s]\n", child_node->name, root->name);
6633  }
6634 
6635  if (error != NULL) {
6636  break;
6637  }
6638 
6639  }
6640 
6641 
6642  *_response = response;
6643 
6644  return error;
6645 }
6646 
6647 static ds3_error* _parse_ds3_tape_drive_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6648  ds3_error* error = NULL;
6649  xmlNodePtr child_node;
6650  GPtrArray* ds3_tape_drive_response_array = g_ptr_array_new();
6651 
6652  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6653  ds3_tape_drive_response* response = NULL;
6654  error = _parse_ds3_tape_drive_response(client, doc, child_node, &response);
6655  g_ptr_array_add(ds3_tape_drive_response_array, response);
6656 
6657  if (error != NULL) {
6658  break;
6659  }
6660  }
6661 
6662  *_response = ds3_tape_drive_response_array;
6663 
6664  return error;
6665 }
6666 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) {
6668  xmlNodePtr child_node;
6669  ds3_error* error = NULL;
6670 
6671  response = g_new0(ds3_detailed_tape_failure_response, 1);
6672 
6673 
6674  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6675  if (element_equal(child_node, "Date")) {
6676  response->date = xml_get_string(doc, child_node);
6677  } else if (element_equal(child_node, "ErrorMessage")) {
6678  response->error_message = xml_get_string(doc, child_node);
6679  } else if (element_equal(child_node, "Id")) {
6680  response->id = xml_get_string(doc, child_node);
6681  } else if (element_equal(child_node, "TapeDriveId")) {
6682  response->tape_drive_id = xml_get_string(doc, child_node);
6683  } else if (element_equal(child_node, "TapeId")) {
6684  response->tape_id = xml_get_string(doc, child_node);
6685  } else if (element_equal(child_node, "Type")) {
6686  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6687  if (text == NULL) {
6688  continue;
6689  }
6690  response->type = _match_ds3_tape_failure_type(client->log, text);
6691  xmlFree(text);
6692  } else {
6693  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_tape_failure_response [%s]\n", child_node->name, root->name);
6694  }
6695 
6696  if (error != NULL) {
6697  break;
6698  }
6699 
6700  }
6701 
6702 
6703  *_response = response;
6704 
6705  return error;
6706 }
6707 
6708 static ds3_error* _parse_ds3_detailed_tape_failure_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6709  ds3_error* error = NULL;
6710  xmlNodePtr child_node;
6711  GPtrArray* ds3_detailed_tape_failure_response_array = g_ptr_array_new();
6712 
6713  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6714  ds3_detailed_tape_failure_response* response = NULL;
6715  error = _parse_ds3_detailed_tape_failure_response(client, doc, child_node, &response);
6716  g_ptr_array_add(ds3_detailed_tape_failure_response_array, response);
6717 
6718  if (error != NULL) {
6719  break;
6720  }
6721  }
6722 
6723  *_response = ds3_detailed_tape_failure_response_array;
6724 
6725  return error;
6726 }
6727 static ds3_error* _parse_ds3_tape_library_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_library_response** _response) {
6728  ds3_tape_library_response* response;
6729  xmlNodePtr child_node;
6730  ds3_error* error = NULL;
6731 
6732  response = g_new0(ds3_tape_library_response, 1);
6733 
6734 
6735  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6736  if (element_equal(child_node, "Id")) {
6737  response->id = xml_get_string(doc, child_node);
6738  } else if (element_equal(child_node, "ManagementUrl")) {
6739  response->management_url = xml_get_string(doc, child_node);
6740  } else if (element_equal(child_node, "Name")) {
6741  response->name = xml_get_string(doc, child_node);
6742  } else if (element_equal(child_node, "SerialNumber")) {
6743  response->serial_number = xml_get_string(doc, child_node);
6744  } else {
6745  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_library_response [%s]\n", child_node->name, root->name);
6746  }
6747 
6748  if (error != NULL) {
6749  break;
6750  }
6751 
6752  }
6753 
6754 
6755  *_response = response;
6756 
6757  return error;
6758 }
6759 
6760 static ds3_error* _parse_ds3_tape_library_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6761  ds3_error* error = NULL;
6762  xmlNodePtr child_node;
6763  GPtrArray* ds3_tape_library_response_array = g_ptr_array_new();
6764 
6765  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6766  ds3_tape_library_response* response = NULL;
6767  error = _parse_ds3_tape_library_response(client, doc, child_node, &response);
6768  g_ptr_array_add(ds3_tape_library_response_array, response);
6769 
6770  if (error != NULL) {
6771  break;
6772  }
6773  }
6774 
6775  *_response = ds3_tape_library_response_array;
6776 
6777  return error;
6778 }
6779 static ds3_error* _parse_ds3_tape_partition_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_partition_response** _response) {
6780  ds3_tape_partition_response* response;
6781  xmlNodePtr child_node;
6782  ds3_error* error = NULL;
6783 
6784  response = g_new0(ds3_tape_partition_response, 1);
6785 
6786 
6787  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6788  if (element_equal(child_node, "DriveType")) {
6789  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6790  if (text == NULL) {
6791  continue;
6792  }
6793  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
6794  xmlFree(text);
6795  } else if (element_equal(child_node, "ErrorMessage")) {
6796  response->error_message = xml_get_string(doc, child_node);
6797  } else if (element_equal(child_node, "Id")) {
6798  response->id = xml_get_string(doc, child_node);
6799  } else if (element_equal(child_node, "ImportExportConfiguration")) {
6800  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6801  if (text == NULL) {
6802  continue;
6803  }
6805  xmlFree(text);
6806  } else if (element_equal(child_node, "LibraryId")) {
6807  response->library_id = xml_get_string(doc, child_node);
6808  } else if (element_equal(child_node, "Name")) {
6809  response->name = xml_get_string(doc, child_node);
6810  } else if (element_equal(child_node, "Quiesced")) {
6811  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6812  if (text == NULL) {
6813  continue;
6814  }
6815  response->quiesced = _match_ds3_quiesced(client->log, text);
6816  xmlFree(text);
6817  } else if (element_equal(child_node, "SerialNumber")) {
6818  response->serial_number = xml_get_string(doc, child_node);
6819  } else if (element_equal(child_node, "State")) {
6820  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6821  if (text == NULL) {
6822  continue;
6823  }
6824  response->state = _match_ds3_tape_partition_state(client->log, text);
6825  xmlFree(text);
6826  } else {
6827  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_response [%s]\n", child_node->name, root->name);
6828  }
6829 
6830  if (error != NULL) {
6831  break;
6832  }
6833 
6834  }
6835 
6836 
6837  *_response = response;
6838 
6839  return error;
6840 }
6841 
6842 static ds3_error* _parse_ds3_tape_partition_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6843  ds3_error* error = NULL;
6844  xmlNodePtr child_node;
6845  GPtrArray* ds3_tape_partition_response_array = g_ptr_array_new();
6846 
6847  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6848  ds3_tape_partition_response* response = NULL;
6849  error = _parse_ds3_tape_partition_response(client, doc, child_node, &response);
6850  g_ptr_array_add(ds3_tape_partition_response_array, response);
6851 
6852  if (error != NULL) {
6853  break;
6854  }
6855  }
6856 
6857  *_response = ds3_tape_partition_response_array;
6858 
6859  return error;
6860 }
6861 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) {
6863  xmlNodePtr child_node;
6864  ds3_error* error = NULL;
6865 
6866  response = g_new0(ds3_tape_partition_failure_response, 1);
6867 
6868 
6869  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6870  if (element_equal(child_node, "Date")) {
6871  response->date = xml_get_string(doc, child_node);
6872  } else if (element_equal(child_node, "ErrorMessage")) {
6873  response->error_message = xml_get_string(doc, child_node);
6874  } else if (element_equal(child_node, "Id")) {
6875  response->id = xml_get_string(doc, child_node);
6876  } else if (element_equal(child_node, "PartitionId")) {
6877  response->partition_id = xml_get_string(doc, child_node);
6878  } else if (element_equal(child_node, "Type")) {
6879  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6880  if (text == NULL) {
6881  continue;
6882  }
6883  response->type = _match_ds3_tape_partition_failure_type(client->log, text);
6884  xmlFree(text);
6885  } else {
6886  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_failure_response [%s]\n", child_node->name, root->name);
6887  }
6888 
6889  if (error != NULL) {
6890  break;
6891  }
6892 
6893  }
6894 
6895 
6896  *_response = response;
6897 
6898  return error;
6899 }
6900 
6901 static ds3_error* _parse_ds3_tape_partition_failure_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
6902  ds3_error* error = NULL;
6903  xmlNodePtr child_node;
6904  GPtrArray* ds3_tape_partition_failure_response_array = g_ptr_array_new();
6905 
6906  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6907  ds3_tape_partition_failure_response* response = NULL;
6908  error = _parse_ds3_tape_partition_failure_response(client, doc, child_node, &response);
6909  g_ptr_array_add(ds3_tape_partition_failure_response_array, response);
6910 
6911  if (error != NULL) {
6912  break;
6913  }
6914  }
6915 
6916  *_response = ds3_tape_partition_failure_response_array;
6917 
6918  return error;
6919 }
6920 static ds3_error* _parse_ds3_build_information_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_build_information_response** _response) {
6922  xmlNodePtr child_node;
6923  ds3_error* error = NULL;
6924 
6925  response = g_new0(ds3_build_information_response, 1);
6926 
6927 
6928  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6929  if (element_equal(child_node, "Branch")) {
6930  response->branch = xml_get_string(doc, child_node);
6931  } else if (element_equal(child_node, "Revision")) {
6932  response->revision = xml_get_string(doc, child_node);
6933  } else if (element_equal(child_node, "Version")) {
6934  response->version = xml_get_string(doc, child_node);
6935  } else {
6936  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_build_information_response [%s]\n", child_node->name, root->name);
6937  }
6938 
6939  if (error != NULL) {
6940  break;
6941  }
6942 
6943  }
6944 
6945 
6946  *_response = response;
6947 
6948  return error;
6949 }
6950 
6951 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) {
6953  xmlNodePtr child_node;
6954  ds3_error* error = NULL;
6955 
6956  response = g_new0(ds3_blob_store_task_information_response, 1);
6957 
6958 
6959  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
6960  if (element_equal(child_node, "DateScheduled")) {
6961  response->date_scheduled = xml_get_string(doc, child_node);
6962  } else if (element_equal(child_node, "DateStarted")) {
6963  response->date_started = xml_get_string(doc, child_node);
6964  } else if (element_equal(child_node, "Description")) {
6965  response->description = xml_get_string(doc, child_node);
6966  } else if (element_equal(child_node, "DriveId")) {
6967  response->drive_id = xml_get_string(doc, child_node);
6968  } else if (element_equal(child_node, "Id")) {
6969  response->id = xml_get_uint64(doc, child_node);
6970  } else if (element_equal(child_node, "Name")) {
6971  response->name = xml_get_string(doc, child_node);
6972  } else if (element_equal(child_node, "PoolId")) {
6973  response->pool_id = xml_get_string(doc, child_node);
6974  } else if (element_equal(child_node, "Priority")) {
6975  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6976  if (text == NULL) {
6977  continue;
6978  }
6979  response->priority = _match_ds3_priority(client->log, text);
6980  xmlFree(text);
6981  } else if (element_equal(child_node, "State")) {
6982  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
6983  if (text == NULL) {
6984  continue;
6985  }
6986  response->state = _match_ds3_blob_store_task_state(client->log, text);
6987  xmlFree(text);
6988  } else if (element_equal(child_node, "TapeId")) {
6989  response->tape_id = xml_get_string(doc, child_node);
6990  } else {
6991  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_blob_store_task_information_response [%s]\n", child_node->name, root->name);
6992  }
6993 
6994  if (error != NULL) {
6995  break;
6996  }
6997 
6998  }
6999 
7000 
7001  *_response = response;
7002 
7003  return error;
7004 }
7005 
7006 static ds3_error* _parse_ds3_blob_store_task_information_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7007  ds3_error* error = NULL;
7008  xmlNodePtr child_node;
7009  GPtrArray* ds3_blob_store_task_information_response_array = g_ptr_array_new();
7010 
7011  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7013  error = _parse_ds3_blob_store_task_information_response(client, doc, child_node, &response);
7014  g_ptr_array_add(ds3_blob_store_task_information_response_array, response);
7015 
7016  if (error != NULL) {
7017  break;
7018  }
7019  }
7020 
7021  *_response = ds3_blob_store_task_information_response_array;
7022 
7023  return error;
7024 }
7025 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) {
7027  xmlNodePtr child_node;
7028  ds3_error* error = NULL;
7029 
7030  response = g_new0(ds3_cache_entry_information_response, 1);
7031 
7032 
7033  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7034  if (element_equal(child_node, "Blob")) {
7035  error = _parse_ds3_blob_response(client, doc, child_node, &response->blob);
7036  } else if (element_equal(child_node, "State")) {
7037  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7038  if (text == NULL) {
7039  continue;
7040  }
7041  response->state = _match_ds3_cache_entry_state(client->log, text);
7042  xmlFree(text);
7043  } else {
7044  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_entry_information_response [%s]\n", child_node->name, root->name);
7045  }
7046 
7047  if (error != NULL) {
7048  break;
7049  }
7050 
7051  }
7052 
7053 
7054  if (error == NULL) {
7055  *_response = response;
7056  } else {
7058  }
7059 
7060  return error;
7061 }
7062 
7063 static ds3_error* _parse_ds3_cache_entry_information_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7064  ds3_error* error = NULL;
7065  xmlNodePtr child_node;
7066  GPtrArray* ds3_cache_entry_information_response_array = g_ptr_array_new();
7067 
7068  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7069  ds3_cache_entry_information_response* response = NULL;
7070  error = _parse_ds3_cache_entry_information_response(client, doc, child_node, &response);
7071  g_ptr_array_add(ds3_cache_entry_information_response_array, response);
7072 
7073  if (error != NULL) {
7074  break;
7075  }
7076  }
7077 
7078  *_response = ds3_cache_entry_information_response_array;
7079 
7080  return error;
7081 }
7082 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) {
7084  xmlNodePtr child_node;
7085  ds3_error* error = NULL;
7086  GPtrArray* entries_array = g_ptr_array_new();
7087 
7088  response = g_new0(ds3_cache_filesystem_information_response, 1);
7089 
7090 
7091  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7092  if (element_equal(child_node, "AvailableCapacityInBytes")) {
7093  response->available_capacity_in_bytes = xml_get_uint64(doc, child_node);
7094  } else if (element_equal(child_node, "CacheFilesystem")) {
7095  error = _parse_ds3_cache_filesystem_response(client, doc, child_node, &response->cache_filesystem);
7096  } else if (element_equal(child_node, "Entries")) {
7097  ds3_cache_entry_information_response* entries_response = NULL;
7098  error = _parse_ds3_cache_entry_information_response(client, doc, child_node, &entries_response);
7099  response->entries = (ds3_cache_entry_information_response**)entries_array->pdata;
7100  g_ptr_array_add(entries_array, entries_response);
7101  } else if (element_equal(child_node, "Summary")) {
7102  response->summary = xml_get_string(doc, child_node);
7103  } else if (element_equal(child_node, "TotalCapacityInBytes")) {
7104  response->total_capacity_in_bytes = xml_get_uint64(doc, child_node);
7105  } else if (element_equal(child_node, "UnavailableCapacityInBytes")) {
7106  response->unavailable_capacity_in_bytes = xml_get_uint64(doc, child_node);
7107  } else if (element_equal(child_node, "UsedCapacityInBytes")) {
7108  response->used_capacity_in_bytes = xml_get_uint64(doc, child_node);
7109  } else {
7110  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_information_response [%s]\n", child_node->name, root->name);
7111  }
7112 
7113  if (error != NULL) {
7114  break;
7115  }
7116 
7117  }
7118 
7119  response->entries = (ds3_cache_entry_information_response**)entries_array->pdata;
7120  response->num_entries = entries_array->len;
7121  g_ptr_array_free(entries_array, FALSE);
7122 
7123  if (error == NULL) {
7124  *_response = response;
7125  } else {
7127  }
7128 
7129  return error;
7130 }
7131 
7132 static ds3_error* _parse_ds3_cache_filesystem_information_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7133  ds3_error* error = NULL;
7134  xmlNodePtr child_node;
7135  GPtrArray* ds3_cache_filesystem_information_response_array = g_ptr_array_new();
7136 
7137  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7139  error = _parse_ds3_cache_filesystem_information_response(client, doc, child_node, &response);
7140  g_ptr_array_add(ds3_cache_filesystem_information_response_array, response);
7141 
7142  if (error != NULL) {
7143  break;
7144  }
7145  }
7146 
7147  *_response = ds3_cache_filesystem_information_response_array;
7148 
7149  return error;
7150 }
7151 static ds3_error* _parse_ds3_bucket_details_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_details_response** _response) {
7152  ds3_bucket_details_response* response;
7153  xmlNodePtr child_node;
7154  ds3_error* error = NULL;
7155 
7156  response = g_new0(ds3_bucket_details_response, 1);
7157 
7158 
7159  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7160  if (element_equal(child_node, "CreationDate")) {
7161  response->creation_date = xml_get_string(doc, child_node);
7162  } else if (element_equal(child_node, "Name")) {
7163  response->name = xml_get_string(doc, child_node);
7164  } else {
7165  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_details_response [%s]\n", child_node->name, root->name);
7166  }
7167 
7168  if (error != NULL) {
7169  break;
7170  }
7171 
7172  }
7173 
7174 
7175  *_response = response;
7176 
7177  return error;
7178 }
7179 
7180 static ds3_error* _parse_ds3_bucket_details_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7181  ds3_error* error = NULL;
7182  xmlNodePtr child_node;
7183  GPtrArray* ds3_bucket_details_response_array = g_ptr_array_new();
7184 
7185  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7186  ds3_bucket_details_response* response = NULL;
7187  error = _parse_ds3_bucket_details_response(client, doc, child_node, &response);
7188  g_ptr_array_add(ds3_bucket_details_response_array, response);
7189 
7190  if (error != NULL) {
7191  break;
7192  }
7193  }
7194 
7195  *_response = ds3_bucket_details_response_array;
7196 
7197  return error;
7198 }
7199 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) {
7201  xmlNodePtr child_node;
7202  ds3_error* error = NULL;
7203 
7204  response = g_new0(ds3_delete_object_error_response, 1);
7205 
7206 
7207  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7208  if (element_equal(child_node, "Code")) {
7209  response->code = xml_get_string(doc, child_node);
7210  } else if (element_equal(child_node, "Key")) {
7211  response->key = xml_get_string(doc, child_node);
7212  } else if (element_equal(child_node, "Message")) {
7213  response->message = xml_get_string(doc, child_node);
7214  } else {
7215  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_delete_object_error_response [%s]\n", child_node->name, root->name);
7216  }
7217 
7218  if (error != NULL) {
7219  break;
7220  }
7221 
7222  }
7223 
7224 
7225  *_response = response;
7226 
7227  return error;
7228 }
7229 
7230 static ds3_error* _parse_ds3_delete_object_error_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7231  ds3_error* error = NULL;
7232  xmlNodePtr child_node;
7233  GPtrArray* ds3_delete_object_error_response_array = g_ptr_array_new();
7234 
7235  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7236  ds3_delete_object_error_response* response = NULL;
7237  error = _parse_ds3_delete_object_error_response(client, doc, child_node, &response);
7238  g_ptr_array_add(ds3_delete_object_error_response_array, response);
7239 
7240  if (error != NULL) {
7241  break;
7242  }
7243  }
7244 
7245  *_response = ds3_delete_object_error_response_array;
7246 
7247  return error;
7248 }
7249 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) {
7251  xmlNodePtr child_node;
7252  ds3_error* error = NULL;
7253 
7254  response = g_new0(ds3_multi_part_upload_part_response, 1);
7255 
7256 
7257  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7258  if (element_equal(child_node, "ETag")) {
7259  response->e_tag = xml_get_string(doc, child_node);
7260  } else if (element_equal(child_node, "LastModified")) {
7261  response->last_modified = xml_get_string(doc, child_node);
7262  } else if (element_equal(child_node, "PartNumber")) {
7263  response->part_number = xml_get_uint16(doc, child_node);
7264  } else {
7265  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_multi_part_upload_part_response [%s]\n", child_node->name, root->name);
7266  }
7267 
7268  if (error != NULL) {
7269  break;
7270  }
7271 
7272  }
7273 
7274 
7275  *_response = response;
7276 
7277  return error;
7278 }
7279 
7280 static ds3_error* _parse_ds3_multi_part_upload_part_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7281  ds3_error* error = NULL;
7282  xmlNodePtr child_node;
7283  GPtrArray* ds3_multi_part_upload_part_response_array = g_ptr_array_new();
7284 
7285  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7286  ds3_multi_part_upload_part_response* response = NULL;
7287  error = _parse_ds3_multi_part_upload_part_response(client, doc, child_node, &response);
7288  g_ptr_array_add(ds3_multi_part_upload_part_response_array, response);
7289 
7290  if (error != NULL) {
7291  break;
7292  }
7293  }
7294 
7295  *_response = ds3_multi_part_upload_part_response_array;
7296 
7297  return error;
7298 }
7299 static ds3_error* _parse_ds3_job_node_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_node_response** _response) {
7300  ds3_job_node_response* response;
7301  struct _xmlAttr* attribute;
7302  ds3_error* error = NULL;
7303 
7304  response = g_new0(ds3_job_node_response, 1);
7305 
7306  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
7307  if (attribute_equal(attribute, "EndPoint") == true) {
7308  response->end_point = xml_get_string_from_attribute(doc, attribute);
7309  } else if (attribute_equal(attribute, "HttpPort") == true) {
7310  response->http_port = xml_get_uint16_from_attribute(doc, attribute);
7311  } else if (attribute_equal(attribute, "HttpsPort") == true) {
7312  response->https_port = xml_get_uint16_from_attribute(doc, attribute);
7313  } else if (attribute_equal(attribute, "Id") == true) {
7314  response->id = xml_get_string_from_attribute(doc, attribute);
7315  } else {
7316  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_job_node_response [%s]\n", attribute->name, root->name);
7317  }
7318 
7319  if (error != NULL) {
7320  break;
7321  }
7322 
7323  }
7324 
7325 
7326 
7327  *_response = response;
7328 
7329  return error;
7330 }
7331 
7332 static ds3_error* _parse_ds3_job_node_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7333  ds3_error* error = NULL;
7334  xmlNodePtr child_node;
7335  GPtrArray* ds3_job_node_response_array = g_ptr_array_new();
7336 
7337  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7338  ds3_job_node_response* response = NULL;
7339  error = _parse_ds3_job_node_response(client, doc, child_node, &response);
7340  g_ptr_array_add(ds3_job_node_response_array, response);
7341 
7342  if (error != NULL) {
7343  break;
7344  }
7345  }
7346 
7347  *_response = ds3_job_node_response_array;
7348 
7349  return error;
7350 }
7351 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) {
7353  xmlNodePtr child_node;
7354  ds3_error* error = NULL;
7355 
7356  response = g_new0(ds3_s3_object_to_delete_response, 1);
7357 
7358 
7359  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7360  if (element_equal(child_node, "Key")) {
7361  response->key = xml_get_string(doc, child_node);
7362  } else {
7363  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_to_delete_response [%s]\n", child_node->name, root->name);
7364  }
7365 
7366  if (error != NULL) {
7367  break;
7368  }
7369 
7370  }
7371 
7372 
7373  *_response = response;
7374 
7375  return error;
7376 }
7377 
7378 static ds3_error* _parse_ds3_s3_object_to_delete_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7379  ds3_error* error = NULL;
7380  xmlNodePtr child_node;
7381  GPtrArray* ds3_s3_object_to_delete_response_array = g_ptr_array_new();
7382 
7383  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7384  ds3_s3_object_to_delete_response* response = NULL;
7385  error = _parse_ds3_s3_object_to_delete_response(client, doc, child_node, &response);
7386  g_ptr_array_add(ds3_s3_object_to_delete_response_array, response);
7387 
7388  if (error != NULL) {
7389  break;
7390  }
7391  }
7392 
7393  *_response = ds3_s3_object_to_delete_response_array;
7394 
7395  return error;
7396 }
7397 static ds3_error* _parse_ds3_user_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_user_response** _response) {
7398  ds3_user_response* response;
7399  xmlNodePtr child_node;
7400  ds3_error* error = NULL;
7401 
7402  response = g_new0(ds3_user_response, 1);
7403 
7404 
7405  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7406  if (element_equal(child_node, "DisplayName")) {
7407  response->display_name = xml_get_string(doc, child_node);
7408  } else if (element_equal(child_node, "ID")) {
7409  response->id = xml_get_string(doc, child_node);
7410  } else {
7411  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_user_response [%s]\n", child_node->name, root->name);
7412  }
7413 
7414  if (error != NULL) {
7415  break;
7416  }
7417 
7418  }
7419 
7420 
7421  *_response = response;
7422 
7423  return error;
7424 }
7425 
7426 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) {
7428  xmlNodePtr child_node;
7429  ds3_error* error = NULL;
7430 
7431  response = g_new0(ds3_named_detailed_tape_partition_response, 1);
7432 
7433 
7434  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7435  if (element_equal(child_node, "DriveType")) {
7436  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7437  if (text == NULL) {
7438  continue;
7439  }
7440  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
7441  xmlFree(text);
7442  } else if (element_equal(child_node, "DriveTypes")) {
7443  xmlNodePtr loop_node;
7444  int num_nodes = 0;
7445  GByteArray* enum_array = g_byte_array_new();
7446  ds3_tape_drive_type drive_types;
7447  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
7448  xmlChar* text = xmlNodeListGetString(doc, loop_node, 1);
7449  if (text == NULL) {
7450  continue;
7451  }
7452  drive_types = _match_ds3_tape_drive_type(client->log, text);
7453  g_byte_array_append(enum_array, (const guint8*) &drive_types, sizeof(ds3_tape_drive_type));
7454  }
7455  response->drive_types = (ds3_tape_drive_type*)enum_array->data;
7456  response->num_drive_types = enum_array->len;
7457  g_byte_array_free(enum_array, FALSE);
7458  } else if (element_equal(child_node, "ErrorMessage")) {
7459  response->error_message = xml_get_string(doc, child_node);
7460  } else if (element_equal(child_node, "Id")) {
7461  response->id = xml_get_string(doc, child_node);
7462  } else if (element_equal(child_node, "ImportExportConfiguration")) {
7463  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7464  if (text == NULL) {
7465  continue;
7466  }
7468  xmlFree(text);
7469  } else if (element_equal(child_node, "LibraryId")) {
7470  response->library_id = xml_get_string(doc, child_node);
7471  } else if (element_equal(child_node, "Name")) {
7472  response->name = xml_get_string(doc, child_node);
7473  } else if (element_equal(child_node, "Quiesced")) {
7474  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7475  if (text == NULL) {
7476  continue;
7477  }
7478  response->quiesced = _match_ds3_quiesced(client->log, text);
7479  xmlFree(text);
7480  } else if (element_equal(child_node, "SerialNumber")) {
7481  response->serial_number = xml_get_string(doc, child_node);
7482  } else if (element_equal(child_node, "State")) {
7483  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7484  if (text == NULL) {
7485  continue;
7486  }
7487  response->state = _match_ds3_tape_partition_state(client->log, text);
7488  xmlFree(text);
7489  } else if (element_equal(child_node, "TapeTypes")) {
7490  xmlNodePtr loop_node;
7491  int num_nodes = 0;
7492  GByteArray* enum_array = g_byte_array_new();
7493  ds3_tape_type tape_types;
7494  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
7495  xmlChar* text = xmlNodeListGetString(doc, loop_node, 1);
7496  if (text == NULL) {
7497  continue;
7498  }
7499  tape_types = _match_ds3_tape_type(client->log, text);
7500  g_byte_array_append(enum_array, (const guint8*) &tape_types, sizeof(ds3_tape_type));
7501  }
7502  response->tape_types = (ds3_tape_type*)enum_array->data;
7503  response->num_tape_types = enum_array->len;
7504  g_byte_array_free(enum_array, FALSE);
7505  } else {
7506  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_named_detailed_tape_partition_response [%s]\n", child_node->name, root->name);
7507  }
7508 
7509  if (error != NULL) {
7510  break;
7511  }
7512 
7513  }
7514 
7515 
7516  if (error == NULL) {
7517  *_response = response;
7518  } else {
7520  }
7521 
7522  return error;
7523 }
7524 
7525 static ds3_error* _parse_ds3_named_detailed_tape_partition_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7526  ds3_error* error = NULL;
7527  xmlNodePtr child_node;
7528  GPtrArray* ds3_named_detailed_tape_partition_response_array = g_ptr_array_new();
7529 
7530  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7532  error = _parse_ds3_named_detailed_tape_partition_response(client, doc, child_node, &response);
7533  g_ptr_array_add(ds3_named_detailed_tape_partition_response_array, response);
7534 
7535  if (error != NULL) {
7536  break;
7537  }
7538  }
7539 
7540  *_response = ds3_named_detailed_tape_partition_response_array;
7541 
7542  return error;
7543 }
7544 static ds3_error* _parse_ds3_named_detailed_tape_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_named_detailed_tape_response** _response) {
7546  xmlNodePtr child_node;
7547  ds3_error* error = NULL;
7548 
7549  response = g_new0(ds3_named_detailed_tape_response, 1);
7550 
7551 
7552  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7553  if (element_equal(child_node, "AssignedToStorageDomain")) {
7554  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
7555  } else if (element_equal(child_node, "AvailableRawCapacity")) {
7556  response->available_raw_capacity = xml_get_uint64(doc, child_node);
7557  } else if (element_equal(child_node, "BarCode")) {
7558  response->bar_code = xml_get_string(doc, child_node);
7559  } else if (element_equal(child_node, "BucketId")) {
7560  response->bucket_id = xml_get_string(doc, child_node);
7561  } else if (element_equal(child_node, "DescriptionForIdentification")) {
7562  response->description_for_identification = xml_get_string(doc, child_node);
7563  } else if (element_equal(child_node, "EjectDate")) {
7564  response->eject_date = xml_get_string(doc, child_node);
7565  } else if (element_equal(child_node, "EjectLabel")) {
7566  response->eject_label = xml_get_string(doc, child_node);
7567  } else if (element_equal(child_node, "EjectLocation")) {
7568  response->eject_location = xml_get_string(doc, child_node);
7569  } else if (element_equal(child_node, "EjectPending")) {
7570  response->eject_pending = xml_get_string(doc, child_node);
7571  } else if (element_equal(child_node, "FullOfData")) {
7572  response->full_of_data = xml_get_bool(client->log, doc, child_node);
7573  } else if (element_equal(child_node, "Id")) {
7574  response->id = xml_get_string(doc, child_node);
7575  } else if (element_equal(child_node, "LastAccessed")) {
7576  response->last_accessed = xml_get_string(doc, child_node);
7577  } else if (element_equal(child_node, "LastCheckpoint")) {
7578  response->last_checkpoint = xml_get_string(doc, child_node);
7579  } else if (element_equal(child_node, "LastModified")) {
7580  response->last_modified = xml_get_string(doc, child_node);
7581  } else if (element_equal(child_node, "LastVerified")) {
7582  response->last_verified = xml_get_string(doc, child_node);
7583  } else if (element_equal(child_node, "MostRecentFailure")) {
7584  error = _parse_ds3_detailed_tape_failure_response(client, doc, child_node, &response->most_recent_failure);
7585  } else if (element_equal(child_node, "PartitionId")) {
7586  response->partition_id = xml_get_string(doc, child_node);
7587  } else if (element_equal(child_node, "PreviousState")) {
7588  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7589  if (text == NULL) {
7590  continue;
7591  }
7592  response->previous_state = _match_ds3_tape_state(client->log, text);
7593  xmlFree(text);
7594  } else if (element_equal(child_node, "SerialNumber")) {
7595  response->serial_number = xml_get_string(doc, child_node);
7596  } else if (element_equal(child_node, "State")) {
7597  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7598  if (text == NULL) {
7599  continue;
7600  }
7601  response->state = _match_ds3_tape_state(client->log, text);
7602  xmlFree(text);
7603  } else if (element_equal(child_node, "StorageDomainId")) {
7604  response->storage_domain_id = xml_get_string(doc, child_node);
7605  } else if (element_equal(child_node, "TakeOwnershipPending")) {
7606  response->take_ownership_pending = xml_get_bool(client->log, doc, child_node);
7607  } else if (element_equal(child_node, "TotalRawCapacity")) {
7608  response->total_raw_capacity = xml_get_uint64(doc, child_node);
7609  } else if (element_equal(child_node, "Type")) {
7610  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7611  if (text == NULL) {
7612  continue;
7613  }
7614  response->type = _match_ds3_tape_type(client->log, text);
7615  xmlFree(text);
7616  } else if (element_equal(child_node, "VerifyPending")) {
7617  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
7618  if (text == NULL) {
7619  continue;
7620  }
7621  response->verify_pending = _match_ds3_priority(client->log, text);
7622  xmlFree(text);
7623  } else if (element_equal(child_node, "WriteProtected")) {
7624  response->write_protected = xml_get_bool(client->log, doc, child_node);
7625  } else {
7626  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_named_detailed_tape_response [%s]\n", child_node->name, root->name);
7627  }
7628 
7629  if (error != NULL) {
7630  break;
7631  }
7632 
7633  }
7634 
7635 
7636  if (error == NULL) {
7637  *_response = response;
7638  } else {
7640  }
7641 
7642  return error;
7643 }
7644 
7645 static ds3_error* _parse_ds3_named_detailed_tape_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7646  ds3_error* error = NULL;
7647  xmlNodePtr child_node;
7648  GPtrArray* ds3_named_detailed_tape_response_array = g_ptr_array_new();
7649 
7650  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7651  ds3_named_detailed_tape_response* response = NULL;
7652  error = _parse_ds3_named_detailed_tape_response(client, doc, child_node, &response);
7653  g_ptr_array_add(ds3_named_detailed_tape_response_array, response);
7654 
7655  if (error != NULL) {
7656  break;
7657  }
7658  }
7659 
7660  *_response = ds3_named_detailed_tape_response_array;
7661 
7662  return error;
7663 }
7664 static ds3_error* _parse_ds3_tape_failure_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_failure_response** _response) {
7665  ds3_tape_failure_response* response;
7666  xmlNodePtr child_node;
7667  ds3_error* error = NULL;
7668 
7669  response = g_new0(ds3_tape_failure_response, 1);
7670 
7671 
7672  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7673  if (element_equal(child_node, "Cause")) {
7674  response->cause = xml_get_string(doc, child_node);
7675  } else if (element_equal(child_node, "Tape")) {
7676  error = _parse_ds3_tape_response(client, doc, child_node, &response->tape);
7677  } else {
7678  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_response [%s]\n", child_node->name, root->name);
7679  }
7680 
7681  if (error != NULL) {
7682  break;
7683  }
7684 
7685  }
7686 
7687 
7688  if (error == NULL) {
7689  *_response = response;
7690  } else {
7692  }
7693 
7694  return error;
7695 }
7696 
7697 static ds3_error* _parse_ds3_tape_failure_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7698  ds3_error* error = NULL;
7699  xmlNodePtr child_node;
7700  GPtrArray* ds3_tape_failure_response_array = g_ptr_array_new();
7701 
7702  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7703  ds3_tape_failure_response* response = NULL;
7704  error = _parse_ds3_tape_failure_response(client, doc, child_node, &response);
7705  g_ptr_array_add(ds3_tape_failure_response_array, response);
7706 
7707  if (error != NULL) {
7708  break;
7709  }
7710  }
7711 
7712  *_response = ds3_tape_failure_response_array;
7713 
7714  return error;
7715 }
7716 static ds3_error* _parse_ds3_type_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_type_response** _response) {
7717  ds3_type_response* response;
7718  xmlNodePtr child_node;
7719  ds3_error* error = NULL;
7720 
7721  response = g_new0(ds3_type_response, 1);
7722 
7723 
7724  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7725  if (element_equal(child_node, "BeansRetrieverName")) {
7726  response->beans_retriever_name = xml_get_string(doc, child_node);
7727  } else if (element_equal(child_node, "DomainName")) {
7728  response->domain_name = xml_get_string(doc, child_node);
7729  } else if (element_equal(child_node, "NumberOfType")) {
7730  response->number_of_type = xml_get_uint16(doc, child_node);
7731  } else {
7732  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_type_response [%s]\n", child_node->name, root->name);
7733  }
7734 
7735  if (error != NULL) {
7736  break;
7737  }
7738 
7739  }
7740 
7741 
7742  *_response = response;
7743 
7744  return error;
7745 }
7746 
7747 static ds3_error* _parse_ds3_type_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7748  ds3_error* error = NULL;
7749  xmlNodePtr child_node;
7750  GPtrArray* ds3_type_response_array = g_ptr_array_new();
7751 
7752  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7753  ds3_type_response* response = NULL;
7754  error = _parse_ds3_type_response(client, doc, child_node, &response);
7755  g_ptr_array_add(ds3_type_response_array, response);
7756 
7757  if (error != NULL) {
7758  break;
7759  }
7760  }
7761 
7762  *_response = ds3_type_response_array;
7763 
7764  return error;
7765 }
7766 static ds3_error* _parse_ds3_physical_placement_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_physical_placement_response** _response) {
7768  xmlNodePtr child_node;
7769  ds3_error* error = NULL;
7770 
7771  response = g_new0(ds3_physical_placement_response, 1);
7772 
7773 
7774  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7775  if (element_equal(child_node, "Pools")) {
7776  GPtrArray* pools_array;
7777  error = _parse_ds3_pool_response_array(client, doc, child_node, &pools_array);
7778  response->pools = (ds3_pool_response**)pools_array->pdata;
7779  response->num_pools = pools_array->len;
7780  g_ptr_array_free(pools_array, FALSE);
7781  } else if (element_equal(child_node, "Tapes")) {
7782  GPtrArray* tapes_array;
7783  error = _parse_ds3_tape_response_array(client, doc, child_node, &tapes_array);
7784  response->tapes = (ds3_tape_response**)tapes_array->pdata;
7785  response->num_tapes = tapes_array->len;
7786  g_ptr_array_free(tapes_array, FALSE);
7787  } else {
7788  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_physical_placement_response [%s]\n", child_node->name, root->name);
7789  }
7790 
7791  if (error != NULL) {
7792  break;
7793  }
7794 
7795  }
7796 
7797 
7798  if (error == NULL) {
7799  *_response = response;
7800  } else {
7802  }
7803 
7804  return error;
7805 }
7806 
7807 static ds3_error* _parse_ds3_bulk_object_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bulk_object_response** _response) {
7808  ds3_bulk_object_response* response;
7809  struct _xmlAttr* attribute;
7810  xmlNodePtr child_node;
7811  ds3_error* error = NULL;
7812 
7813  response = g_new0(ds3_bulk_object_response, 1);
7814 
7815  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
7816  if (attribute_equal(attribute, "InCache") == true) {
7817  response->in_cache = xml_get_bool_from_attribute(client->log, doc, attribute);
7818  } else if (attribute_equal(attribute, "Latest") == true) {
7819  response->latest = xml_get_bool_from_attribute(client->log, doc, attribute);
7820  } else if (attribute_equal(attribute, "Length") == true) {
7821  response->length = xml_get_uint64_from_attribute(doc, attribute);
7822  } else if (attribute_equal(attribute, "Name") == true) {
7823  response->name = xml_get_string_from_attribute(doc, attribute);
7824  } else if (attribute_equal(attribute, "Offset") == true) {
7825  response->offset = xml_get_uint64_from_attribute(doc, attribute);
7826  } else if (attribute_equal(attribute, "Version") == true) {
7827  response->version = xml_get_uint64_from_attribute(doc, attribute);
7828  } else {
7829  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_bulk_object_response [%s]\n", attribute->name, root->name);
7830  }
7831 
7832  if (error != NULL) {
7833  break;
7834  }
7835 
7836  }
7837 
7838  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7839  if (element_equal(child_node, "PhysicalPlacement")) {
7840  error = _parse_ds3_physical_placement_response(client, doc, child_node, &response->physical_placement);
7841  } else {
7842  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bulk_object_response [%s]\n", child_node->name, root->name);
7843  }
7844 
7845  if (error != NULL) {
7846  break;
7847  }
7848 
7849  }
7850 
7851 
7852  if (error == NULL) {
7853  *_response = response;
7854  } else {
7856  }
7857 
7858  return error;
7859 }
7860 
7861 static ds3_error* _parse_ds3_bulk_object_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
7862  ds3_error* error = NULL;
7863  xmlNodePtr child_node;
7864  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
7865 
7866  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7867  ds3_bulk_object_response* response = NULL;
7868  error = _parse_ds3_bulk_object_response(client, doc, child_node, &response);
7869  g_ptr_array_add(ds3_bulk_object_response_array, response);
7870 
7871  if (error != NULL) {
7872  break;
7873  }
7874  }
7875 
7876  *_response = ds3_bulk_object_response_array;
7877 
7878  return error;
7879 }
7880 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) {
7882  xmlNodePtr child_node;
7883  ds3_error* error = NULL;
7884  GPtrArray* objects_array = g_ptr_array_new();
7885 
7886  response = g_new0(ds3_bulk_object_list_response, 1);
7887 
7888 
7889  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7890  if (element_equal(child_node, "Object")) {
7891  ds3_bulk_object_response* objects_response = NULL;
7892  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
7893  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
7894  g_ptr_array_add(objects_array, objects_response);
7895  } else {
7896  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bulk_object_list_response [%s]\n", child_node->name, root->name);
7897  }
7898 
7899  if (error != NULL) {
7900  break;
7901  }
7902 
7903  }
7904 
7905  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
7906  response->num_objects = objects_array->len;
7907  g_ptr_array_free(objects_array, FALSE);
7908 
7909  if (error == NULL) {
7910  *_response = response;
7911  } else {
7913  }
7914 
7915  return error;
7916 }
7917 
7918 static ds3_error* _parse_ds3_job_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_response** _response) {
7919  ds3_job_response* response;
7920  struct _xmlAttr* attribute;
7921  xmlNodePtr child_node;
7922  ds3_error* error = NULL;
7923 
7924  response = g_new0(ds3_job_response, 1);
7925 
7926  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
7927  if (attribute_equal(attribute, "Aggregating") == true) {
7928  response->aggregating = xml_get_bool_from_attribute(client->log, doc, attribute);
7929  } else if (attribute_equal(attribute, "BucketName") == true) {
7930  response->bucket_name = xml_get_string_from_attribute(doc, attribute);
7931  } else if (attribute_equal(attribute, "CachedSizeInBytes") == true) {
7932  response->cached_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
7933  } else if (attribute_equal(attribute, "ChunkClientProcessingOrderGuarantee") == true) {
7934  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
7935  if (text == NULL) {
7936  continue;
7937  }
7939  xmlFree(text);
7940  } else if (attribute_equal(attribute, "CompletedSizeInBytes") == true) {
7941  response->completed_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
7942  } else if (attribute_equal(attribute, "JobId") == true) {
7943  response->job_id = xml_get_string_from_attribute(doc, attribute);
7944  } else if (attribute_equal(attribute, "Naked") == true) {
7945  response->naked = xml_get_bool_from_attribute(client->log, doc, attribute);
7946  } else if (attribute_equal(attribute, "Name") == true) {
7947  response->name = xml_get_string_from_attribute(doc, attribute);
7948  } else if (attribute_equal(attribute, "OriginalSizeInBytes") == true) {
7949  response->original_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
7950  } else if (attribute_equal(attribute, "Priority") == true) {
7951  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
7952  if (text == NULL) {
7953  continue;
7954  }
7955  response->priority = _match_ds3_priority(client->log, text);
7956  xmlFree(text);
7957  } else if (attribute_equal(attribute, "RequestType") == true) {
7958  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
7959  if (text == NULL) {
7960  continue;
7961  }
7962  response->request_type = _match_ds3_job_request_type(client->log, text);
7963  xmlFree(text);
7964  } else if (attribute_equal(attribute, "StartDate") == true) {
7965  response->start_date = xml_get_string_from_attribute(doc, attribute);
7966  } else if (attribute_equal(attribute, "Status") == true) {
7967  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
7968  if (text == NULL) {
7969  continue;
7970  }
7971  response->status = _match_ds3_job_status(client->log, text);
7972  xmlFree(text);
7973  } else if (attribute_equal(attribute, "UserId") == true) {
7974  response->user_id = xml_get_string_from_attribute(doc, attribute);
7975  } else if (attribute_equal(attribute, "UserName") == true) {
7976  response->user_name = xml_get_string_from_attribute(doc, attribute);
7977  } else if (attribute_equal(attribute, "WriteOptimization") == true) {
7978  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
7979  if (text == NULL) {
7980  continue;
7981  }
7982  response->write_optimization = _match_ds3_write_optimization(client->log, text);
7983  xmlFree(text);
7984  } else {
7985  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_job_response [%s]\n", attribute->name, root->name);
7986  }
7987 
7988  if (error != NULL) {
7989  break;
7990  }
7991 
7992  }
7993 
7994  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
7995  if (element_equal(child_node, "Nodes")) {
7996  GPtrArray* nodes_array;
7997  error = _parse_ds3_job_node_response_array(client, doc, child_node, &nodes_array);
7998  response->nodes = (ds3_job_node_response**)nodes_array->pdata;
7999  response->num_nodes = nodes_array->len;
8000  g_ptr_array_free(nodes_array, FALSE);
8001  } else {
8002  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_response [%s]\n", child_node->name, root->name);
8003  }
8004 
8005  if (error != NULL) {
8006  break;
8007  }
8008 
8009  }
8010 
8011 
8012  if (error == NULL) {
8013  *_response = response;
8014  } else {
8015  ds3_job_response_free(response);
8016  }
8017 
8018  return error;
8019 }
8020 
8021 static ds3_error* _parse_ds3_job_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
8022  ds3_error* error = NULL;
8023  xmlNodePtr child_node;
8024  GPtrArray* ds3_job_response_array = g_ptr_array_new();
8025 
8026  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8027  ds3_job_response* response = NULL;
8028  error = _parse_ds3_job_response(client, doc, child_node, &response);
8029  g_ptr_array_add(ds3_job_response_array, response);
8030 
8031  if (error != NULL) {
8032  break;
8033  }
8034  }
8035 
8036  *_response = ds3_job_response_array;
8037 
8038  return error;
8039 }
8040 static ds3_error* _parse_ds3_objects_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_objects_response** _response) {
8041  ds3_objects_response* response;
8042  struct _xmlAttr* attribute;
8043  xmlNodePtr child_node;
8044  ds3_error* error = NULL;
8045  GPtrArray* objects_array = g_ptr_array_new();
8046 
8047  response = g_new0(ds3_objects_response, 1);
8048 
8049  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
8050  if (attribute_equal(attribute, "ChunkId") == true) {
8051  response->chunk_id = xml_get_string_from_attribute(doc, attribute);
8052  } else if (attribute_equal(attribute, "ChunkNumber") == true) {
8053  response->chunk_number = xml_get_uint16_from_attribute(doc, attribute);
8054  } else if (attribute_equal(attribute, "NodeId") == true) {
8055  response->node_id = xml_get_string_from_attribute(doc, attribute);
8056  } else {
8057  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_objects_response [%s]\n", attribute->name, root->name);
8058  }
8059 
8060  if (error != NULL) {
8061  break;
8062  }
8063 
8064  }
8065 
8066  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8067  if (element_equal(child_node, "Object")) {
8068  ds3_bulk_object_response* objects_response = NULL;
8069  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
8070  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
8071  g_ptr_array_add(objects_array, objects_response);
8072  } else {
8073  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_objects_response [%s]\n", child_node->name, root->name);
8074  }
8075 
8076  if (error != NULL) {
8077  break;
8078  }
8079 
8080  }
8081 
8082  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
8083  response->num_objects = objects_array->len;
8084  g_ptr_array_free(objects_array, FALSE);
8085 
8086  if (error == NULL) {
8087  *_response = response;
8088  } else {
8089  ds3_objects_response_free(response);
8090  }
8091 
8092  return error;
8093 }
8094 
8095 static ds3_error* _parse_ds3_objects_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
8096  ds3_error* error = NULL;
8097  xmlNodePtr child_node;
8098  GPtrArray* ds3_objects_response_array = g_ptr_array_new();
8099 
8100  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8101  ds3_objects_response* response = NULL;
8102  error = _parse_ds3_objects_response(client, doc, child_node, &response);
8103  g_ptr_array_add(ds3_objects_response_array, response);
8104 
8105  if (error != NULL) {
8106  break;
8107  }
8108  }
8109 
8110  *_response = ds3_objects_response_array;
8111 
8112  return error;
8113 }
8114 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) {
8116  xmlNodePtr child_node;
8117  ds3_error* error = NULL;
8118 
8119  response = g_new0(ds3_multi_part_upload_response, 1);
8120 
8121 
8122  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8123  if (element_equal(child_node, "Initiated")) {
8124  response->initiated = xml_get_string(doc, child_node);
8125  } else if (element_equal(child_node, "Key")) {
8126  response->key = xml_get_string(doc, child_node);
8127  } else if (element_equal(child_node, "Owner")) {
8128  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
8129  } else if (element_equal(child_node, "UploadId")) {
8130  response->upload_id = xml_get_string(doc, child_node);
8131  } else {
8132  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_multi_part_upload_response [%s]\n", child_node->name, root->name);
8133  }
8134 
8135  if (error != NULL) {
8136  break;
8137  }
8138 
8139  }
8140 
8141 
8142  if (error == NULL) {
8143  *_response = response;
8144  } else {
8146  }
8147 
8148  return error;
8149 }
8150 
8151 static ds3_error* _parse_ds3_multi_part_upload_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
8152  ds3_error* error = NULL;
8153  xmlNodePtr child_node;
8154  GPtrArray* ds3_multi_part_upload_response_array = g_ptr_array_new();
8155 
8156  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8157  ds3_multi_part_upload_response* response = NULL;
8158  error = _parse_ds3_multi_part_upload_response(client, doc, child_node, &response);
8159  g_ptr_array_add(ds3_multi_part_upload_response_array, response);
8160 
8161  if (error != NULL) {
8162  break;
8163  }
8164  }
8165 
8166  *_response = ds3_multi_part_upload_response_array;
8167 
8168  return error;
8169 }
8170 static ds3_error* _parse_ds3_contents_response(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, ds3_contents_response** _response) {
8171  ds3_contents_response* response;
8172  xmlNodePtr child_node;
8173  ds3_error* error = NULL;
8174 
8175  response = g_new0(ds3_contents_response, 1);
8176 
8177 
8178  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8179  if (element_equal(child_node, "ETag")) {
8180  response->e_tag = xml_get_string(doc, child_node);
8181  } else if (element_equal(child_node, "Key")) {
8182  response->key = xml_get_string(doc, child_node);
8183  } else if (element_equal(child_node, "LastModified")) {
8184  response->last_modified = xml_get_string(doc, child_node);
8185  } else if (element_equal(child_node, "Owner")) {
8186  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
8187  } else if (element_equal(child_node, "Size")) {
8188  response->size = xml_get_uint64(doc, child_node);
8189  } else if (element_equal(child_node, "StorageClass")) {
8190  response->storage_class = xml_get_string(doc, child_node);
8191  } else {
8192  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_contents_response [%s]\n", child_node->name, root->name);
8193  }
8194 
8195  if (error != NULL) {
8196  break;
8197  }
8198 
8199  }
8200 
8201 
8202  if (error == NULL) {
8203  *_response = response;
8204  } else {
8205  ds3_contents_response_free(response);
8206  }
8207 
8208  return error;
8209 }
8210 
8211 static ds3_error* _parse_ds3_contents_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
8212  ds3_error* error = NULL;
8213  xmlNodePtr child_node;
8214  GPtrArray* ds3_contents_response_array = g_ptr_array_new();
8215 
8216  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8217  ds3_contents_response* response = NULL;
8218  error = _parse_ds3_contents_response(client, doc, child_node, &response);
8219  g_ptr_array_add(ds3_contents_response_array, response);
8220 
8221  if (error != NULL) {
8222  break;
8223  }
8224  }
8225 
8226  *_response = ds3_contents_response_array;
8227 
8228  return error;
8229 }
8230 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) {
8232  xmlNodePtr child_node;
8233  ds3_error* error = NULL;
8234 
8235  response = g_new0(ds3_detailed_s3_object_response, 1);
8236 
8237 
8238  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8239  if (element_equal(child_node, "Blobs")) {
8240  error = _parse_ds3_bulk_object_list_response(client, doc, child_node, &response->blobs);
8241  } else if (element_equal(child_node, "BlobsBeingPersisted")) {
8242  response->blobs_being_persisted = xml_get_uint16(doc, child_node);
8243  } else if (element_equal(child_node, "BlobsDegraded")) {
8244  response->blobs_degraded = xml_get_uint16(doc, child_node);
8245  } else if (element_equal(child_node, "BlobsInCache")) {
8246  response->blobs_in_cache = xml_get_uint16(doc, child_node);
8247  } else if (element_equal(child_node, "BlobsTotal")) {
8248  response->blobs_total = xml_get_uint16(doc, child_node);
8249  } else if (element_equal(child_node, "BucketId")) {
8250  response->bucket_id = xml_get_string(doc, child_node);
8251  } else if (element_equal(child_node, "CreationDate")) {
8252  response->creation_date = xml_get_string(doc, child_node);
8253  } else if (element_equal(child_node, "ETag")) {
8254  response->e_tag = xml_get_string(doc, child_node);
8255  } else if (element_equal(child_node, "Id")) {
8256  response->id = xml_get_string(doc, child_node);
8257  } else if (element_equal(child_node, "Latest")) {
8258  response->latest = xml_get_bool(client->log, doc, child_node);
8259  } else if (element_equal(child_node, "Name")) {
8260  response->name = xml_get_string(doc, child_node);
8261  } else if (element_equal(child_node, "Owner")) {
8262  response->owner = xml_get_string(doc, child_node);
8263  } else if (element_equal(child_node, "Size")) {
8264  response->size = xml_get_uint64(doc, child_node);
8265  } else if (element_equal(child_node, "Type")) {
8266  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8267  if (text == NULL) {
8268  continue;
8269  }
8270  response->type = _match_ds3_s3_object_type(client->log, text);
8271  xmlFree(text);
8272  } else if (element_equal(child_node, "Version")) {
8273  response->version = xml_get_uint64(doc, child_node);
8274  } else {
8275  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_s3_object_response [%s]\n", child_node->name, root->name);
8276  }
8277 
8278  if (error != NULL) {
8279  break;
8280  }
8281 
8282  }
8283 
8284 
8285  if (error == NULL) {
8286  *_response = response;
8287  } else {
8289  }
8290 
8291  return error;
8292 }
8293 
8294 static ds3_error* _parse_ds3_detailed_s3_object_response_array(const ds3_client* client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray** _response) {
8295  ds3_error* error = NULL;
8296  xmlNodePtr child_node;
8297  GPtrArray* ds3_detailed_s3_object_response_array = g_ptr_array_new();
8298 
8299  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8300  ds3_detailed_s3_object_response* response = NULL;
8301  error = _parse_ds3_detailed_s3_object_response(client, doc, child_node, &response);
8302  g_ptr_array_add(ds3_detailed_s3_object_response_array, response);
8303 
8304  if (error != NULL) {
8305  break;
8306  }
8307  }
8308 
8309  *_response = ds3_detailed_s3_object_response_array;
8310 
8311  return error;
8312 }
8313 
8314 //************ TOP LEVEL STRUCT PARSERS **************
8315 static ds3_error* _parse_top_level_ds3_bucket_response(const ds3_client* client, const ds3_request* request, ds3_bucket_response** _response, GByteArray* xml_blob) {
8316  xmlDocPtr doc;
8317  xmlNodePtr root;
8318  xmlNodePtr child_node;
8319  ds3_bucket_response* response;
8320  ds3_error* error = NULL;
8321 
8322  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8323  if (error != NULL) {
8324  return error;
8325  }
8326 
8327  response = g_new0(ds3_bucket_response, 1);
8328 
8329  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8330  if (element_equal(child_node, "CreationDate")) {
8331  response->creation_date = xml_get_string(doc, child_node);
8332  } else if (element_equal(child_node, "DataPolicyId")) {
8333  response->data_policy_id = xml_get_string(doc, child_node);
8334  } else if (element_equal(child_node, "Id")) {
8335  response->id = xml_get_string(doc, child_node);
8336  } else if (element_equal(child_node, "LastPreferredChunkSizeInBytes")) {
8337  response->last_preferred_chunk_size_in_bytes = xml_get_uint64(doc, child_node);
8338  } else if (element_equal(child_node, "LogicalUsedCapacity")) {
8339  response->logical_used_capacity = xml_get_uint64(doc, child_node);
8340  } else if (element_equal(child_node, "Name")) {
8341  response->name = xml_get_string(doc, child_node);
8342  } else if (element_equal(child_node, "UserId")) {
8343  response->user_id = xml_get_string(doc, child_node);
8344  } else {
8345  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_response [%s]\n", child_node->name, root->name);
8346  }
8347 
8348  if (error != NULL) {
8349  break;
8350  }
8351 
8352  }
8353 
8354 
8355  xmlFreeDoc(doc);
8356 
8357  if (error == NULL) {
8358  *_response = response;
8359  } else {
8360  ds3_bucket_response_free(response);
8361  }
8362 
8363  return error;
8364 }
8365 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) {
8366  xmlDocPtr doc;
8367  xmlNodePtr root;
8368  xmlNodePtr child_node;
8369  ds3_bucket_acl_response* response;
8370  ds3_error* error = NULL;
8371 
8372  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8373  if (error != NULL) {
8374  return error;
8375  }
8376 
8377  response = g_new0(ds3_bucket_acl_response, 1);
8378 
8379  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8380  if (element_equal(child_node, "BucketId")) {
8381  response->bucket_id = xml_get_string(doc, child_node);
8382  } else if (element_equal(child_node, "GroupId")) {
8383  response->group_id = xml_get_string(doc, child_node);
8384  } else if (element_equal(child_node, "Id")) {
8385  response->id = xml_get_string(doc, child_node);
8386  } else if (element_equal(child_node, "Permission")) {
8387  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8388  if (text == NULL) {
8389  continue;
8390  }
8391  response->permission = _match_ds3_bucket_acl_permission(client->log, text);
8392  xmlFree(text);
8393  } else if (element_equal(child_node, "UserId")) {
8394  response->user_id = xml_get_string(doc, child_node);
8395  } else {
8396  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_acl_response [%s]\n", child_node->name, root->name);
8397  }
8398 
8399  if (error != NULL) {
8400  break;
8401  }
8402 
8403  }
8404 
8405 
8406  xmlFreeDoc(doc);
8407 
8408  if (error == NULL) {
8409  *_response = response;
8410  } else {
8411  ds3_bucket_acl_response_free(response);
8412  }
8413 
8414  return error;
8415 }
8416 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) {
8417  xmlDocPtr doc;
8418  xmlNodePtr root;
8419  xmlNodePtr child_node;
8421  ds3_error* error = NULL;
8422 
8423  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8424  if (error != NULL) {
8425  return error;
8426  }
8427 
8428  response = g_new0(ds3_data_path_backend_response, 1);
8429 
8430  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8431  if (element_equal(child_node, "Activated")) {
8432  response->activated = xml_get_bool(client->log, doc, child_node);
8433  } else if (element_equal(child_node, "AutoActivateTimeoutInMins")) {
8434  response->auto_activate_timeout_in_mins = xml_get_uint16(doc, child_node);
8435  } else if (element_equal(child_node, "AutoInspect")) {
8436  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8437  if (text == NULL) {
8438  continue;
8439  }
8440  response->auto_inspect = _match_ds3_auto_inspect_mode(client->log, text);
8441  xmlFree(text);
8442  } else if (element_equal(child_node, "DefaultImportConflictResolutionMode")) {
8443  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8444  if (text == NULL) {
8445  continue;
8446  }
8448  xmlFree(text);
8449  } else if (element_equal(child_node, "Id")) {
8450  response->id = xml_get_string(doc, child_node);
8451  } else if (element_equal(child_node, "LastHeartbeat")) {
8452  response->last_heartbeat = xml_get_string(doc, child_node);
8453  } else if (element_equal(child_node, "UnavailableMediaPolicy")) {
8454  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8455  if (text == NULL) {
8456  continue;
8457  }
8459  xmlFree(text);
8460  } else if (element_equal(child_node, "UnavailablePoolMaxJobRetryInMins")) {
8461  response->unavailable_pool_max_job_retry_in_mins = xml_get_uint16(doc, child_node);
8462  } else if (element_equal(child_node, "UnavailableTapePartitionMaxJobRetryInMins")) {
8464  } else {
8465  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_path_backend_response [%s]\n", child_node->name, root->name);
8466  }
8467 
8468  if (error != NULL) {
8469  break;
8470  }
8471 
8472  }
8473 
8474 
8475  xmlFreeDoc(doc);
8476 
8477  if (error == NULL) {
8478  *_response = response;
8479  } else {
8481  }
8482 
8483  return error;
8484 }
8485 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) {
8486  xmlDocPtr doc;
8487  xmlNodePtr root;
8488  xmlNodePtr child_node;
8490  ds3_error* error = NULL;
8491 
8492  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8493  if (error != NULL) {
8494  return error;
8495  }
8496 
8497  response = g_new0(ds3_data_persistence_rule_response, 1);
8498 
8499  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8500  if (element_equal(child_node, "DataPolicyId")) {
8501  response->data_policy_id = xml_get_string(doc, child_node);
8502  } else if (element_equal(child_node, "Id")) {
8503  response->id = xml_get_string(doc, child_node);
8504  } else if (element_equal(child_node, "IsolationLevel")) {
8505  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8506  if (text == NULL) {
8507  continue;
8508  }
8509  response->isolation_level = _match_ds3_data_isolation_level(client->log, text);
8510  xmlFree(text);
8511  } else if (element_equal(child_node, "MinimumDaysToRetain")) {
8512  response->minimum_days_to_retain = xml_get_uint16(doc, child_node);
8513  } else if (element_equal(child_node, "State")) {
8514  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8515  if (text == NULL) {
8516  continue;
8517  }
8518  response->state = _match_ds3_data_persistence_rule_state(client->log, text);
8519  xmlFree(text);
8520  } else if (element_equal(child_node, "StorageDomainId")) {
8521  response->storage_domain_id = xml_get_string(doc, child_node);
8522  } else if (element_equal(child_node, "Type")) {
8523  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8524  if (text == NULL) {
8525  continue;
8526  }
8527  response->type = _match_ds3_data_persistence_rule_type(client->log, text);
8528  xmlFree(text);
8529  } else {
8530  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_persistence_rule_response [%s]\n", child_node->name, root->name);
8531  }
8532 
8533  if (error != NULL) {
8534  break;
8535  }
8536 
8537  }
8538 
8539 
8540  xmlFreeDoc(doc);
8541 
8542  if (error == NULL) {
8543  *_response = response;
8544  } else {
8546  }
8547 
8548  return error;
8549 }
8550 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) {
8551  xmlDocPtr doc;
8552  xmlNodePtr root;
8553  xmlNodePtr child_node;
8554  ds3_data_policy_response* response;
8555  ds3_error* error = NULL;
8556 
8557  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8558  if (error != NULL) {
8559  return error;
8560  }
8561 
8562  response = g_new0(ds3_data_policy_response, 1);
8563 
8564  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8565  if (element_equal(child_node, "BlobbingEnabled")) {
8566  response->blobbing_enabled = xml_get_bool(client->log, doc, child_node);
8567  } else if (element_equal(child_node, "ChecksumType")) {
8568  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8569  if (text == NULL) {
8570  continue;
8571  }
8572  response->checksum_type = _match_ds3_checksum_type(client->log, text);
8573  xmlFree(text);
8574  } else if (element_equal(child_node, "CreationDate")) {
8575  response->creation_date = xml_get_string(doc, child_node);
8576  } else if (element_equal(child_node, "DefaultBlobSize")) {
8577  response->default_blob_size = xml_get_uint64(doc, child_node);
8578  } else if (element_equal(child_node, "DefaultGetJobPriority")) {
8579  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8580  if (text == NULL) {
8581  continue;
8582  }
8583  response->default_get_job_priority = _match_ds3_priority(client->log, text);
8584  xmlFree(text);
8585  } else if (element_equal(child_node, "DefaultPutJobPriority")) {
8586  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8587  if (text == NULL) {
8588  continue;
8589  }
8590  response->default_put_job_priority = _match_ds3_priority(client->log, text);
8591  xmlFree(text);
8592  } else if (element_equal(child_node, "DefaultVerifyJobPriority")) {
8593  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8594  if (text == NULL) {
8595  continue;
8596  }
8597  response->default_verify_job_priority = _match_ds3_priority(client->log, text);
8598  xmlFree(text);
8599  } else if (element_equal(child_node, "EndToEndCrcRequired")) {
8600  response->end_to_end_crc_required = xml_get_bool(client->log, doc, child_node);
8601  } else if (element_equal(child_node, "Id")) {
8602  response->id = xml_get_string(doc, child_node);
8603  } else if (element_equal(child_node, "LtfsObjectNamingAllowed")) {
8604  response->ltfs_object_naming_allowed = xml_get_bool(client->log, doc, child_node);
8605  } else if (element_equal(child_node, "Name")) {
8606  response->name = xml_get_string(doc, child_node);
8607  } else if (element_equal(child_node, "RebuildPriority")) {
8608  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8609  if (text == NULL) {
8610  continue;
8611  }
8612  response->rebuild_priority = _match_ds3_priority(client->log, text);
8613  xmlFree(text);
8614  } else if (element_equal(child_node, "Versioning")) {
8615  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8616  if (text == NULL) {
8617  continue;
8618  }
8619  response->versioning = _match_ds3_versioning_level(client->log, text);
8620  xmlFree(text);
8621  } else {
8622  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_response [%s]\n", child_node->name, root->name);
8623  }
8624 
8625  if (error != NULL) {
8626  break;
8627  }
8628 
8629  }
8630 
8631 
8632  xmlFreeDoc(doc);
8633 
8634  if (error == NULL) {
8635  *_response = response;
8636  } else {
8638  }
8639 
8640  return error;
8641 }
8642 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) {
8643  xmlDocPtr doc;
8644  xmlNodePtr root;
8645  xmlNodePtr child_node;
8646  ds3_data_policy_acl_response* response;
8647  ds3_error* error = NULL;
8648 
8649  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8650  if (error != NULL) {
8651  return error;
8652  }
8653 
8654  response = g_new0(ds3_data_policy_acl_response, 1);
8655 
8656  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8657  if (element_equal(child_node, "DataPolicyId")) {
8658  response->data_policy_id = xml_get_string(doc, child_node);
8659  } else if (element_equal(child_node, "GroupId")) {
8660  response->group_id = xml_get_string(doc, child_node);
8661  } else if (element_equal(child_node, "Id")) {
8662  response->id = xml_get_string(doc, child_node);
8663  } else if (element_equal(child_node, "UserId")) {
8664  response->user_id = xml_get_string(doc, child_node);
8665  } else {
8666  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_acl_response [%s]\n", child_node->name, root->name);
8667  }
8668 
8669  if (error != NULL) {
8670  break;
8671  }
8672 
8673  }
8674 
8675 
8676  xmlFreeDoc(doc);
8677 
8678  if (error == NULL) {
8679  *_response = response;
8680  } else {
8682  }
8683 
8684  return error;
8685 }
8686 static ds3_error* _parse_top_level_ds3_group_response(const ds3_client* client, const ds3_request* request, ds3_group_response** _response, GByteArray* xml_blob) {
8687  xmlDocPtr doc;
8688  xmlNodePtr root;
8689  xmlNodePtr child_node;
8690  ds3_group_response* response;
8691  ds3_error* error = NULL;
8692 
8693  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8694  if (error != NULL) {
8695  return error;
8696  }
8697 
8698  response = g_new0(ds3_group_response, 1);
8699 
8700  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8701  if (element_equal(child_node, "BuiltIn")) {
8702  response->built_in = xml_get_bool(client->log, doc, child_node);
8703  } else if (element_equal(child_node, "Id")) {
8704  response->id = xml_get_string(doc, child_node);
8705  } else if (element_equal(child_node, "Name")) {
8706  response->name = xml_get_string(doc, child_node);
8707  } else {
8708  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_response [%s]\n", child_node->name, root->name);
8709  }
8710 
8711  if (error != NULL) {
8712  break;
8713  }
8714 
8715  }
8716 
8717 
8718  xmlFreeDoc(doc);
8719 
8720  if (error == NULL) {
8721  *_response = response;
8722  } else {
8723  ds3_group_response_free(response);
8724  }
8725 
8726  return error;
8727 }
8728 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) {
8729  xmlDocPtr doc;
8730  xmlNodePtr root;
8731  xmlNodePtr child_node;
8732  ds3_group_member_response* response;
8733  ds3_error* error = NULL;
8734 
8735  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8736  if (error != NULL) {
8737  return error;
8738  }
8739 
8740  response = g_new0(ds3_group_member_response, 1);
8741 
8742  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8743  if (element_equal(child_node, "GroupId")) {
8744  response->group_id = xml_get_string(doc, child_node);
8745  } else if (element_equal(child_node, "Id")) {
8746  response->id = xml_get_string(doc, child_node);
8747  } else if (element_equal(child_node, "MemberGroupId")) {
8748  response->member_group_id = xml_get_string(doc, child_node);
8749  } else if (element_equal(child_node, "MemberUserId")) {
8750  response->member_user_id = xml_get_string(doc, child_node);
8751  } else {
8752  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_member_response [%s]\n", child_node->name, root->name);
8753  }
8754 
8755  if (error != NULL) {
8756  break;
8757  }
8758 
8759  }
8760 
8761 
8762  xmlFreeDoc(doc);
8763 
8764  if (error == NULL) {
8765  *_response = response;
8766  } else {
8768  }
8769 
8770  return error;
8771 }
8772 static ds3_error* _parse_top_level_ds3_node_response(const ds3_client* client, const ds3_request* request, ds3_node_response** _response, GByteArray* xml_blob) {
8773  xmlDocPtr doc;
8774  xmlNodePtr root;
8775  xmlNodePtr child_node;
8776  ds3_node_response* response;
8777  ds3_error* error = NULL;
8778 
8779  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8780  if (error != NULL) {
8781  return error;
8782  }
8783 
8784  response = g_new0(ds3_node_response, 1);
8785 
8786  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8787  if (element_equal(child_node, "DataPathHttpPort")) {
8788  response->data_path_http_port = xml_get_uint16(doc, child_node);
8789  } else if (element_equal(child_node, "DataPathHttpsPort")) {
8790  response->data_path_https_port = xml_get_uint16(doc, child_node);
8791  } else if (element_equal(child_node, "DataPathIpAddress")) {
8792  response->data_path_ip_address = xml_get_string(doc, child_node);
8793  } else if (element_equal(child_node, "DnsName")) {
8794  response->dns_name = xml_get_string(doc, child_node);
8795  } else if (element_equal(child_node, "Id")) {
8796  response->id = xml_get_string(doc, child_node);
8797  } else if (element_equal(child_node, "LastHeartbeat")) {
8798  response->last_heartbeat = xml_get_string(doc, child_node);
8799  } else if (element_equal(child_node, "Name")) {
8800  response->name = xml_get_string(doc, child_node);
8801  } else if (element_equal(child_node, "SerialNumber")) {
8802  response->serial_number = xml_get_string(doc, child_node);
8803  } else {
8804  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_node_response [%s]\n", child_node->name, root->name);
8805  }
8806 
8807  if (error != NULL) {
8808  break;
8809  }
8810 
8811  }
8812 
8813 
8814  xmlFreeDoc(doc);
8815 
8816  if (error == NULL) {
8817  *_response = response;
8818  } else {
8819  ds3_node_response_free(response);
8820  }
8821 
8822  return error;
8823 }
8824 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) {
8825  xmlDocPtr doc;
8826  xmlNodePtr root;
8827  xmlNodePtr child_node;
8828  ds3_s3_object_response* response;
8829  ds3_error* error = NULL;
8830 
8831  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8832  if (error != NULL) {
8833  return error;
8834  }
8835 
8836  response = g_new0(ds3_s3_object_response, 1);
8837 
8838  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8839  if (element_equal(child_node, "BucketId")) {
8840  response->bucket_id = xml_get_string(doc, child_node);
8841  } else if (element_equal(child_node, "CreationDate")) {
8842  response->creation_date = xml_get_string(doc, child_node);
8843  } else if (element_equal(child_node, "Id")) {
8844  response->id = xml_get_string(doc, child_node);
8845  } else if (element_equal(child_node, "Latest")) {
8846  response->latest = xml_get_bool(client->log, doc, child_node);
8847  } else if (element_equal(child_node, "Name")) {
8848  response->name = xml_get_string(doc, child_node);
8849  } else if (element_equal(child_node, "Type")) {
8850  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8851  if (text == NULL) {
8852  continue;
8853  }
8854  response->type = _match_ds3_s3_object_type(client->log, text);
8855  xmlFree(text);
8856  } else if (element_equal(child_node, "Version")) {
8857  response->version = xml_get_uint64(doc, child_node);
8858  } else {
8859  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_response [%s]\n", child_node->name, root->name);
8860  }
8861 
8862  if (error != NULL) {
8863  break;
8864  }
8865 
8866  }
8867 
8868 
8869  xmlFreeDoc(doc);
8870 
8871  if (error == NULL) {
8872  *_response = response;
8873  } else {
8874  ds3_s3_object_response_free(response);
8875  }
8876 
8877  return error;
8878 }
8879 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) {
8880  xmlDocPtr doc;
8881  xmlNodePtr root;
8882  xmlNodePtr child_node;
8883  ds3_storage_domain_response* response;
8884  ds3_error* error = NULL;
8885 
8886  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8887  if (error != NULL) {
8888  return error;
8889  }
8890 
8891  response = g_new0(ds3_storage_domain_response, 1);
8892 
8893  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8894  if (element_equal(child_node, "AutoEjectUponCron")) {
8895  response->auto_eject_upon_cron = xml_get_string(doc, child_node);
8896  } else if (element_equal(child_node, "AutoEjectUponJobCancellation")) {
8897  response->auto_eject_upon_job_cancellation = xml_get_bool(client->log, doc, child_node);
8898  } else if (element_equal(child_node, "AutoEjectUponJobCompletion")) {
8899  response->auto_eject_upon_job_completion = xml_get_bool(client->log, doc, child_node);
8900  } else if (element_equal(child_node, "AutoEjectUponMediaFull")) {
8901  response->auto_eject_upon_media_full = xml_get_bool(client->log, doc, child_node);
8902  } else if (element_equal(child_node, "Id")) {
8903  response->id = xml_get_string(doc, child_node);
8904  } else if (element_equal(child_node, "LtfsFileNaming")) {
8905  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8906  if (text == NULL) {
8907  continue;
8908  }
8909  response->ltfs_file_naming = _match_ds3_ltfs_file_naming_mode(client->log, text);
8910  xmlFree(text);
8911  } else if (element_equal(child_node, "MaxTapeFragmentationPercent")) {
8912  response->max_tape_fragmentation_percent = xml_get_uint16(doc, child_node);
8913  } else if (element_equal(child_node, "MaximumAutoVerificationFrequencyInDays")) {
8914  response->maximum_auto_verification_frequency_in_days = xml_get_uint16(doc, child_node);
8915  } else if (element_equal(child_node, "MediaEjectionAllowed")) {
8916  response->media_ejection_allowed = xml_get_bool(client->log, doc, child_node);
8917  } else if (element_equal(child_node, "Name")) {
8918  response->name = xml_get_string(doc, child_node);
8919  } else if (element_equal(child_node, "VerifyPriorToAutoEject")) {
8920  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8921  if (text == NULL) {
8922  continue;
8923  }
8924  response->verify_prior_to_auto_eject = _match_ds3_priority(client->log, text);
8925  xmlFree(text);
8926  } else if (element_equal(child_node, "WriteOptimization")) {
8927  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8928  if (text == NULL) {
8929  continue;
8930  }
8931  response->write_optimization = _match_ds3_write_optimization(client->log, text);
8932  xmlFree(text);
8933  } else {
8934  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_response [%s]\n", child_node->name, root->name);
8935  }
8936 
8937  if (error != NULL) {
8938  break;
8939  }
8940 
8941  }
8942 
8943 
8944  xmlFreeDoc(doc);
8945 
8946  if (error == NULL) {
8947  *_response = response;
8948  } else {
8950  }
8951 
8952  return error;
8953 }
8954 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) {
8955  xmlDocPtr doc;
8956  xmlNodePtr root;
8957  xmlNodePtr child_node;
8959  ds3_error* error = NULL;
8960 
8961  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
8962  if (error != NULL) {
8963  return error;
8964  }
8965 
8966  response = g_new0(ds3_storage_domain_member_response, 1);
8967 
8968  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
8969  if (element_equal(child_node, "Id")) {
8970  response->id = xml_get_string(doc, child_node);
8971  } else if (element_equal(child_node, "PoolPartitionId")) {
8972  response->pool_partition_id = xml_get_string(doc, child_node);
8973  } else if (element_equal(child_node, "State")) {
8974  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8975  if (text == NULL) {
8976  continue;
8977  }
8978  response->state = _match_ds3_storage_domain_member_state(client->log, text);
8979  xmlFree(text);
8980  } else if (element_equal(child_node, "StorageDomainId")) {
8981  response->storage_domain_id = xml_get_string(doc, child_node);
8982  } else if (element_equal(child_node, "TapePartitionId")) {
8983  response->tape_partition_id = xml_get_string(doc, child_node);
8984  } else if (element_equal(child_node, "TapeType")) {
8985  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8986  if (text == NULL) {
8987  continue;
8988  }
8989  response->tape_type = _match_ds3_tape_type(client->log, text);
8990  xmlFree(text);
8991  } else if (element_equal(child_node, "WritePreference")) {
8992  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
8993  if (text == NULL) {
8994  continue;
8995  }
8996  response->write_preference = _match_ds3_write_preference_level(client->log, text);
8997  xmlFree(text);
8998  } else {
8999  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_member_response [%s]\n", child_node->name, root->name);
9000  }
9001 
9002  if (error != NULL) {
9003  break;
9004  }
9005 
9006  }
9007 
9008 
9009  xmlFreeDoc(doc);
9010 
9011  if (error == NULL) {
9012  *_response = response;
9013  } else {
9015  }
9016 
9017  return error;
9018 }
9019 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) {
9020  xmlDocPtr doc;
9021  xmlNodePtr root;
9022  xmlNodePtr child_node;
9023  ds3_spectra_user_response* response;
9024  ds3_error* error = NULL;
9025 
9026  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9027  if (error != NULL) {
9028  return error;
9029  }
9030 
9031  response = g_new0(ds3_spectra_user_response, 1);
9032 
9033  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9034  if (element_equal(child_node, "AuthId")) {
9035  response->auth_id = xml_get_string(doc, child_node);
9036  } else if (element_equal(child_node, "DefaultDataPolicyId")) {
9037  response->default_data_policy_id = xml_get_string(doc, child_node);
9038  } else if (element_equal(child_node, "Id")) {
9039  response->id = xml_get_string(doc, child_node);
9040  } else if (element_equal(child_node, "Name")) {
9041  response->name = xml_get_string(doc, child_node);
9042  } else if (element_equal(child_node, "SecretKey")) {
9043  response->secret_key = xml_get_string(doc, child_node);
9044  } else {
9045  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_spectra_user_response [%s]\n", child_node->name, root->name);
9046  }
9047 
9048  if (error != NULL) {
9049  break;
9050  }
9051 
9052  }
9053 
9054 
9055  xmlFreeDoc(doc);
9056 
9057  if (error == NULL) {
9058  *_response = response;
9059  } else {
9061  }
9062 
9063  return error;
9064 }
9066  xmlDocPtr doc;
9067  xmlNodePtr root;
9068  xmlNodePtr child_node;
9070  ds3_error* error = NULL;
9071 
9072  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9073  if (error != NULL) {
9074  return error;
9075  }
9076 
9078 
9079  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9080  if (element_equal(child_node, "CreationDate")) {
9081  response->creation_date = xml_get_string(doc, child_node);
9082  } else if (element_equal(child_node, "Format")) {
9083  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9084  if (text == NULL) {
9085  continue;
9086  }
9087  response->format = _match_ds3_http_response_format_type(client->log, text);
9088  xmlFree(text);
9089  } else if (element_equal(child_node, "Id")) {
9090  response->id = xml_get_string(doc, child_node);
9091  } else if (element_equal(child_node, "JobId")) {
9092  response->job_id = xml_get_string(doc, child_node);
9093  } else if (element_equal(child_node, "LastFailure")) {
9094  response->last_failure = xml_get_string(doc, child_node);
9095  } else if (element_equal(child_node, "LastHttpResponseCode")) {
9096  response->last_http_response_code = xml_get_uint16(doc, child_node);
9097  } else if (element_equal(child_node, "LastNotification")) {
9098  response->last_notification = xml_get_string(doc, child_node);
9099  } else if (element_equal(child_node, "NamingConvention")) {
9100  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9101  if (text == NULL) {
9102  continue;
9103  }
9104  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
9105  xmlFree(text);
9106  } else if (element_equal(child_node, "NotificationEndPoint")) {
9107  response->notification_end_point = xml_get_string(doc, child_node);
9108  } else if (element_equal(child_node, "NotificationHttpMethod")) {
9109  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9110  if (text == NULL) {
9111  continue;
9112  }
9113  response->notification_http_method = _match_ds3_request_type(client->log, text);
9114  xmlFree(text);
9115  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
9116  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
9117  } else if (element_equal(child_node, "UserId")) {
9118  response->user_id = xml_get_string(doc, child_node);
9119  } else {
9120  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_completed_notification_registration_response [%s]\n", child_node->name, root->name);
9121  }
9122 
9123  if (error != NULL) {
9124  break;
9125  }
9126 
9127  }
9128 
9129 
9130  xmlFreeDoc(doc);
9131 
9132  if (error == NULL) {
9133  *_response = response;
9134  } else {
9136  }
9137 
9138  return error;
9139 }
9141  xmlDocPtr doc;
9142  xmlNodePtr root;
9143  xmlNodePtr child_node;
9145  ds3_error* error = NULL;
9146 
9147  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9148  if (error != NULL) {
9149  return error;
9150  }
9151 
9153 
9154  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9155  if (element_equal(child_node, "CreationDate")) {
9156  response->creation_date = xml_get_string(doc, child_node);
9157  } else if (element_equal(child_node, "Format")) {
9158  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9159  if (text == NULL) {
9160  continue;
9161  }
9162  response->format = _match_ds3_http_response_format_type(client->log, text);
9163  xmlFree(text);
9164  } else if (element_equal(child_node, "Id")) {
9165  response->id = xml_get_string(doc, child_node);
9166  } else if (element_equal(child_node, "LastFailure")) {
9167  response->last_failure = xml_get_string(doc, child_node);
9168  } else if (element_equal(child_node, "LastHttpResponseCode")) {
9169  response->last_http_response_code = xml_get_uint16(doc, child_node);
9170  } else if (element_equal(child_node, "LastNotification")) {
9171  response->last_notification = xml_get_string(doc, child_node);
9172  } else if (element_equal(child_node, "NamingConvention")) {
9173  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9174  if (text == NULL) {
9175  continue;
9176  }
9177  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
9178  xmlFree(text);
9179  } else if (element_equal(child_node, "NotificationEndPoint")) {
9180  response->notification_end_point = xml_get_string(doc, child_node);
9181  } else if (element_equal(child_node, "NotificationHttpMethod")) {
9182  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9183  if (text == NULL) {
9184  continue;
9185  }
9186  response->notification_http_method = _match_ds3_request_type(client->log, text);
9187  xmlFree(text);
9188  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
9189  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
9190  } else if (element_equal(child_node, "UserId")) {
9191  response->user_id = xml_get_string(doc, child_node);
9192  } else {
9193  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_created_notification_registration_response [%s]\n", child_node->name, root->name);
9194  }
9195 
9196  if (error != NULL) {
9197  break;
9198  }
9199 
9200  }
9201 
9202 
9203  xmlFreeDoc(doc);
9204 
9205  if (error == NULL) {
9206  *_response = response;
9207  } else {
9209  }
9210 
9211  return error;
9212 }
9214  xmlDocPtr doc;
9215  xmlNodePtr root;
9216  xmlNodePtr child_node;
9218  ds3_error* error = NULL;
9219 
9220  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9221  if (error != NULL) {
9222  return error;
9223  }
9224 
9226 
9227  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9228  if (element_equal(child_node, "CreationDate")) {
9229  response->creation_date = xml_get_string(doc, child_node);
9230  } else if (element_equal(child_node, "Format")) {
9231  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9232  if (text == NULL) {
9233  continue;
9234  }
9235  response->format = _match_ds3_http_response_format_type(client->log, text);
9236  xmlFree(text);
9237  } else if (element_equal(child_node, "Id")) {
9238  response->id = xml_get_string(doc, child_node);
9239  } else if (element_equal(child_node, "LastFailure")) {
9240  response->last_failure = xml_get_string(doc, child_node);
9241  } else if (element_equal(child_node, "LastHttpResponseCode")) {
9242  response->last_http_response_code = xml_get_uint16(doc, child_node);
9243  } else if (element_equal(child_node, "LastNotification")) {
9244  response->last_notification = xml_get_string(doc, child_node);
9245  } else if (element_equal(child_node, "NamingConvention")) {
9246  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9247  if (text == NULL) {
9248  continue;
9249  }
9250  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
9251  xmlFree(text);
9252  } else if (element_equal(child_node, "NotificationEndPoint")) {
9253  response->notification_end_point = xml_get_string(doc, child_node);
9254  } else if (element_equal(child_node, "NotificationHttpMethod")) {
9255  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9256  if (text == NULL) {
9257  continue;
9258  }
9259  response->notification_http_method = _match_ds3_request_type(client->log, text);
9260  xmlFree(text);
9261  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
9262  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
9263  } else if (element_equal(child_node, "UserId")) {
9264  response->user_id = xml_get_string(doc, child_node);
9265  } else {
9266  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_notification_registration_response [%s]\n", child_node->name, root->name);
9267  }
9268 
9269  if (error != NULL) {
9270  break;
9271  }
9272 
9273  }
9274 
9275 
9276  xmlFreeDoc(doc);
9277 
9278  if (error == NULL) {
9279  *_response = response;
9280  } else {
9282  }
9283 
9284  return error;
9285 }
9287  xmlDocPtr doc;
9288  xmlNodePtr root;
9289  xmlNodePtr child_node;
9291  ds3_error* error = NULL;
9292 
9293  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9294  if (error != NULL) {
9295  return error;
9296  }
9297 
9299 
9300  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9301  if (element_equal(child_node, "CreationDate")) {
9302  response->creation_date = xml_get_string(doc, child_node);
9303  } else if (element_equal(child_node, "Format")) {
9304  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9305  if (text == NULL) {
9306  continue;
9307  }
9308  response->format = _match_ds3_http_response_format_type(client->log, text);
9309  xmlFree(text);
9310  } else if (element_equal(child_node, "Id")) {
9311  response->id = xml_get_string(doc, child_node);
9312  } else if (element_equal(child_node, "JobId")) {
9313  response->job_id = xml_get_string(doc, child_node);
9314  } else if (element_equal(child_node, "LastFailure")) {
9315  response->last_failure = xml_get_string(doc, child_node);
9316  } else if (element_equal(child_node, "LastHttpResponseCode")) {
9317  response->last_http_response_code = xml_get_uint16(doc, child_node);
9318  } else if (element_equal(child_node, "LastNotification")) {
9319  response->last_notification = xml_get_string(doc, child_node);
9320  } else if (element_equal(child_node, "NamingConvention")) {
9321  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9322  if (text == NULL) {
9323  continue;
9324  }
9325  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
9326  xmlFree(text);
9327  } else if (element_equal(child_node, "NotificationEndPoint")) {
9328  response->notification_end_point = xml_get_string(doc, child_node);
9329  } else if (element_equal(child_node, "NotificationHttpMethod")) {
9330  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9331  if (text == NULL) {
9332  continue;
9333  }
9334  response->notification_http_method = _match_ds3_request_type(client->log, text);
9335  xmlFree(text);
9336  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
9337  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
9338  } else if (element_equal(child_node, "UserId")) {
9339  response->user_id = xml_get_string(doc, child_node);
9340  } else {
9341  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);
9342  }
9343 
9344  if (error != NULL) {
9345  break;
9346  }
9347 
9348  }
9349 
9350 
9351  xmlFreeDoc(doc);
9352 
9353  if (error == NULL) {
9354  *_response = response;
9355  } else {
9357  }
9358 
9359  return error;
9360 }
9362  xmlDocPtr doc;
9363  xmlNodePtr root;
9364  xmlNodePtr child_node;
9366  ds3_error* error = NULL;
9367 
9368  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9369  if (error != NULL) {
9370  return error;
9371  }
9372 
9374 
9375  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9376  if (element_equal(child_node, "CreationDate")) {
9377  response->creation_date = xml_get_string(doc, child_node);
9378  } else if (element_equal(child_node, "Format")) {
9379  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9380  if (text == NULL) {
9381  continue;
9382  }
9383  response->format = _match_ds3_http_response_format_type(client->log, text);
9384  xmlFree(text);
9385  } else if (element_equal(child_node, "Id")) {
9386  response->id = xml_get_string(doc, child_node);
9387  } else if (element_equal(child_node, "LastFailure")) {
9388  response->last_failure = xml_get_string(doc, child_node);
9389  } else if (element_equal(child_node, "LastHttpResponseCode")) {
9390  response->last_http_response_code = xml_get_uint16(doc, child_node);
9391  } else if (element_equal(child_node, "LastNotification")) {
9392  response->last_notification = xml_get_string(doc, child_node);
9393  } else if (element_equal(child_node, "NamingConvention")) {
9394  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9395  if (text == NULL) {
9396  continue;
9397  }
9398  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
9399  xmlFree(text);
9400  } else if (element_equal(child_node, "NotificationEndPoint")) {
9401  response->notification_end_point = xml_get_string(doc, child_node);
9402  } else if (element_equal(child_node, "NotificationHttpMethod")) {
9403  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9404  if (text == NULL) {
9405  continue;
9406  }
9407  response->notification_http_method = _match_ds3_request_type(client->log, text);
9408  xmlFree(text);
9409  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
9410  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
9411  } else if (element_equal(child_node, "UserId")) {
9412  response->user_id = xml_get_string(doc, child_node);
9413  } else {
9414  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);
9415  }
9416 
9417  if (error != NULL) {
9418  break;
9419  }
9420 
9421  }
9422 
9423 
9424  xmlFreeDoc(doc);
9425 
9426  if (error == NULL) {
9427  *_response = response;
9428  } else {
9430  }
9431 
9432  return error;
9433 }
9435  xmlDocPtr doc;
9436  xmlNodePtr root;
9437  xmlNodePtr child_node;
9439  ds3_error* error = NULL;
9440 
9441  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9442  if (error != NULL) {
9443  return error;
9444  }
9445 
9447 
9448  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9449  if (element_equal(child_node, "CreationDate")) {
9450  response->creation_date = xml_get_string(doc, child_node);
9451  } else if (element_equal(child_node, "Format")) {
9452  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9453  if (text == NULL) {
9454  continue;
9455  }
9456  response->format = _match_ds3_http_response_format_type(client->log, text);
9457  xmlFree(text);
9458  } else if (element_equal(child_node, "Id")) {
9459  response->id = xml_get_string(doc, child_node);
9460  } else if (element_equal(child_node, "JobId")) {
9461  response->job_id = xml_get_string(doc, child_node);
9462  } else if (element_equal(child_node, "LastFailure")) {
9463  response->last_failure = xml_get_string(doc, child_node);
9464  } else if (element_equal(child_node, "LastHttpResponseCode")) {
9465  response->last_http_response_code = xml_get_uint16(doc, child_node);
9466  } else if (element_equal(child_node, "LastNotification")) {
9467  response->last_notification = xml_get_string(doc, child_node);
9468  } else if (element_equal(child_node, "NamingConvention")) {
9469  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9470  if (text == NULL) {
9471  continue;
9472  }
9473  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
9474  xmlFree(text);
9475  } else if (element_equal(child_node, "NotificationEndPoint")) {
9476  response->notification_end_point = xml_get_string(doc, child_node);
9477  } else if (element_equal(child_node, "NotificationHttpMethod")) {
9478  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9479  if (text == NULL) {
9480  continue;
9481  }
9482  response->notification_http_method = _match_ds3_request_type(client->log, text);
9483  xmlFree(text);
9484  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
9485  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
9486  } else if (element_equal(child_node, "UserId")) {
9487  response->user_id = xml_get_string(doc, child_node);
9488  } else {
9489  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);
9490  }
9491 
9492  if (error != NULL) {
9493  break;
9494  }
9495 
9496  }
9497 
9498 
9499  xmlFreeDoc(doc);
9500 
9501  if (error == NULL) {
9502  *_response = response;
9503  } else {
9505  }
9506 
9507  return error;
9508 }
9510  xmlDocPtr doc;
9511  xmlNodePtr root;
9512  xmlNodePtr child_node;
9514  ds3_error* error = NULL;
9515 
9516  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9517  if (error != NULL) {
9518  return error;
9519  }
9520 
9522 
9523  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9524  if (element_equal(child_node, "CreationDate")) {
9525  response->creation_date = xml_get_string(doc, child_node);
9526  } else if (element_equal(child_node, "Format")) {
9527  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9528  if (text == NULL) {
9529  continue;
9530  }
9531  response->format = _match_ds3_http_response_format_type(client->log, text);
9532  xmlFree(text);
9533  } else if (element_equal(child_node, "Id")) {
9534  response->id = xml_get_string(doc, child_node);
9535  } else if (element_equal(child_node, "LastFailure")) {
9536  response->last_failure = xml_get_string(doc, child_node);
9537  } else if (element_equal(child_node, "LastHttpResponseCode")) {
9538  response->last_http_response_code = xml_get_uint16(doc, child_node);
9539  } else if (element_equal(child_node, "LastNotification")) {
9540  response->last_notification = xml_get_string(doc, child_node);
9541  } else if (element_equal(child_node, "NamingConvention")) {
9542  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9543  if (text == NULL) {
9544  continue;
9545  }
9546  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
9547  xmlFree(text);
9548  } else if (element_equal(child_node, "NotificationEndPoint")) {
9549  response->notification_end_point = xml_get_string(doc, child_node);
9550  } else if (element_equal(child_node, "NotificationHttpMethod")) {
9551  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9552  if (text == NULL) {
9553  continue;
9554  }
9555  response->notification_http_method = _match_ds3_request_type(client->log, text);
9556  xmlFree(text);
9557  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
9558  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
9559  } else if (element_equal(child_node, "UserId")) {
9560  response->user_id = xml_get_string(doc, child_node);
9561  } else {
9562  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);
9563  }
9564 
9565  if (error != NULL) {
9566  break;
9567  }
9568 
9569  }
9570 
9571 
9572  xmlFreeDoc(doc);
9573 
9574  if (error == NULL) {
9575  *_response = response;
9576  } else {
9578  }
9579 
9580  return error;
9581 }
9583  xmlDocPtr doc;
9584  xmlNodePtr root;
9585  xmlNodePtr child_node;
9587  ds3_error* error = NULL;
9588 
9589  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9590  if (error != NULL) {
9591  return error;
9592  }
9593 
9595 
9596  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9597  if (element_equal(child_node, "CreationDate")) {
9598  response->creation_date = xml_get_string(doc, child_node);
9599  } else if (element_equal(child_node, "Format")) {
9600  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9601  if (text == NULL) {
9602  continue;
9603  }
9604  response->format = _match_ds3_http_response_format_type(client->log, text);
9605  xmlFree(text);
9606  } else if (element_equal(child_node, "Id")) {
9607  response->id = xml_get_string(doc, child_node);
9608  } else if (element_equal(child_node, "LastFailure")) {
9609  response->last_failure = xml_get_string(doc, child_node);
9610  } else if (element_equal(child_node, "LastHttpResponseCode")) {
9611  response->last_http_response_code = xml_get_uint16(doc, child_node);
9612  } else if (element_equal(child_node, "LastNotification")) {
9613  response->last_notification = xml_get_string(doc, child_node);
9614  } else if (element_equal(child_node, "NamingConvention")) {
9615  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9616  if (text == NULL) {
9617  continue;
9618  }
9619  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
9620  xmlFree(text);
9621  } else if (element_equal(child_node, "NotificationEndPoint")) {
9622  response->notification_end_point = xml_get_string(doc, child_node);
9623  } else if (element_equal(child_node, "NotificationHttpMethod")) {
9624  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9625  if (text == NULL) {
9626  continue;
9627  }
9628  response->notification_http_method = _match_ds3_request_type(client->log, text);
9629  xmlFree(text);
9630  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
9631  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
9632  } else if (element_equal(child_node, "UserId")) {
9633  response->user_id = xml_get_string(doc, child_node);
9634  } else {
9635  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_notification_registration_response [%s]\n", child_node->name, root->name);
9636  }
9637 
9638  if (error != NULL) {
9639  break;
9640  }
9641 
9642  }
9643 
9644 
9645  xmlFreeDoc(doc);
9646 
9647  if (error == NULL) {
9648  *_response = response;
9649  } else {
9651  }
9652 
9653  return error;
9654 }
9656  xmlDocPtr doc;
9657  xmlNodePtr root;
9658  xmlNodePtr child_node;
9660  ds3_error* error = NULL;
9661 
9662  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9663  if (error != NULL) {
9664  return error;
9665  }
9666 
9668 
9669  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9670  if (element_equal(child_node, "CreationDate")) {
9671  response->creation_date = xml_get_string(doc, child_node);
9672  } else if (element_equal(child_node, "Format")) {
9673  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9674  if (text == NULL) {
9675  continue;
9676  }
9677  response->format = _match_ds3_http_response_format_type(client->log, text);
9678  xmlFree(text);
9679  } else if (element_equal(child_node, "Id")) {
9680  response->id = xml_get_string(doc, child_node);
9681  } else if (element_equal(child_node, "LastFailure")) {
9682  response->last_failure = xml_get_string(doc, child_node);
9683  } else if (element_equal(child_node, "LastHttpResponseCode")) {
9684  response->last_http_response_code = xml_get_uint16(doc, child_node);
9685  } else if (element_equal(child_node, "LastNotification")) {
9686  response->last_notification = xml_get_string(doc, child_node);
9687  } else if (element_equal(child_node, "NamingConvention")) {
9688  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9689  if (text == NULL) {
9690  continue;
9691  }
9692  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
9693  xmlFree(text);
9694  } else if (element_equal(child_node, "NotificationEndPoint")) {
9695  response->notification_end_point = xml_get_string(doc, child_node);
9696  } else if (element_equal(child_node, "NotificationHttpMethod")) {
9697  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9698  if (text == NULL) {
9699  continue;
9700  }
9701  response->notification_http_method = _match_ds3_request_type(client->log, text);
9702  xmlFree(text);
9703  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
9704  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
9705  } else if (element_equal(child_node, "UserId")) {
9706  response->user_id = xml_get_string(doc, child_node);
9707  } else {
9708  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_notification_registration_response [%s]\n", child_node->name, root->name);
9709  }
9710 
9711  if (error != NULL) {
9712  break;
9713  }
9714 
9715  }
9716 
9717 
9718  xmlFreeDoc(doc);
9719 
9720  if (error == NULL) {
9721  *_response = response;
9722  } else {
9724  }
9725 
9726  return error;
9727 }
9729  xmlDocPtr doc;
9730  xmlNodePtr root;
9731  xmlNodePtr child_node;
9733  ds3_error* error = NULL;
9734 
9735  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9736  if (error != NULL) {
9737  return error;
9738  }
9739 
9741 
9742  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9743  if (element_equal(child_node, "CreationDate")) {
9744  response->creation_date = xml_get_string(doc, child_node);
9745  } else if (element_equal(child_node, "Format")) {
9746  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9747  if (text == NULL) {
9748  continue;
9749  }
9750  response->format = _match_ds3_http_response_format_type(client->log, text);
9751  xmlFree(text);
9752  } else if (element_equal(child_node, "Id")) {
9753  response->id = xml_get_string(doc, child_node);
9754  } else if (element_equal(child_node, "LastFailure")) {
9755  response->last_failure = xml_get_string(doc, child_node);
9756  } else if (element_equal(child_node, "LastHttpResponseCode")) {
9757  response->last_http_response_code = xml_get_uint16(doc, child_node);
9758  } else if (element_equal(child_node, "LastNotification")) {
9759  response->last_notification = xml_get_string(doc, child_node);
9760  } else if (element_equal(child_node, "NamingConvention")) {
9761  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9762  if (text == NULL) {
9763  continue;
9764  }
9765  response->naming_convention = _match_ds3_naming_convention_type(client->log, text);
9766  xmlFree(text);
9767  } else if (element_equal(child_node, "NotificationEndPoint")) {
9768  response->notification_end_point = xml_get_string(doc, child_node);
9769  } else if (element_equal(child_node, "NotificationHttpMethod")) {
9770  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9771  if (text == NULL) {
9772  continue;
9773  }
9774  response->notification_http_method = _match_ds3_request_type(client->log, text);
9775  xmlFree(text);
9776  } else if (element_equal(child_node, "NumberOfFailuresSinceLastSuccess")) {
9777  response->number_of_failures_since_last_success = xml_get_uint16(doc, child_node);
9778  } else if (element_equal(child_node, "UserId")) {
9779  response->user_id = xml_get_string(doc, child_node);
9780  } else {
9781  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);
9782  }
9783 
9784  if (error != NULL) {
9785  break;
9786  }
9787 
9788  }
9789 
9790 
9791  xmlFreeDoc(doc);
9792 
9793  if (error == NULL) {
9794  *_response = response;
9795  } else {
9797  }
9798 
9799  return error;
9800 }
9801 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) {
9802  xmlDocPtr doc;
9803  xmlNodePtr root;
9804  xmlNodePtr child_node;
9806  ds3_error* error = NULL;
9807 
9808  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9809  if (error != NULL) {
9810  return error;
9811  }
9812 
9813  response = g_new0(ds3_cache_filesystem_response, 1);
9814 
9815  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9816  if (element_equal(child_node, "AutoReclaimInitiateThreshold")) {
9817  response->auto_reclaim_initiate_threshold = xml_get_uint64(doc, child_node);
9818  } else if (element_equal(child_node, "AutoReclaimTerminateThreshold")) {
9819  response->auto_reclaim_terminate_threshold = xml_get_uint64(doc, child_node);
9820  } else if (element_equal(child_node, "BurstThreshold")) {
9821  response->burst_threshold = xml_get_uint64(doc, child_node);
9822  } else if (element_equal(child_node, "Id")) {
9823  response->id = xml_get_string(doc, child_node);
9824  } else if (element_equal(child_node, "MaxCapacityInBytes")) {
9825  response->max_capacity_in_bytes = xml_get_uint64(doc, child_node);
9826  } else if (element_equal(child_node, "MaxPercentUtilizationOfFilesystem")) {
9827  response->max_percent_utilization_of_filesystem = xml_get_uint64(doc, child_node);
9828  } else if (element_equal(child_node, "NodeId")) {
9829  response->node_id = xml_get_string(doc, child_node);
9830  } else if (element_equal(child_node, "Path")) {
9831  response->path = xml_get_string(doc, child_node);
9832  } else {
9833  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_response [%s]\n", child_node->name, root->name);
9834  }
9835 
9836  if (error != NULL) {
9837  break;
9838  }
9839 
9840  }
9841 
9842 
9843  xmlFreeDoc(doc);
9844 
9845  if (error == NULL) {
9846  *_response = response;
9847  } else {
9849  }
9850 
9851  return error;
9852 }
9853 static ds3_error* _parse_top_level_ds3_pool_response(const ds3_client* client, const ds3_request* request, ds3_pool_response** _response, GByteArray* xml_blob) {
9854  xmlDocPtr doc;
9855  xmlNodePtr root;
9856  xmlNodePtr child_node;
9857  ds3_pool_response* response;
9858  ds3_error* error = NULL;
9859 
9860  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9861  if (error != NULL) {
9862  return error;
9863  }
9864 
9865  response = g_new0(ds3_pool_response, 1);
9866 
9867  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9868  if (element_equal(child_node, "AssignedToStorageDomain")) {
9869  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
9870  } else if (element_equal(child_node, "AvailableCapacity")) {
9871  response->available_capacity = xml_get_uint64(doc, child_node);
9872  } else if (element_equal(child_node, "BucketId")) {
9873  response->bucket_id = xml_get_string(doc, child_node);
9874  } else if (element_equal(child_node, "Guid")) {
9875  response->guid = xml_get_string(doc, child_node);
9876  } else if (element_equal(child_node, "Health")) {
9877  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9878  if (text == NULL) {
9879  continue;
9880  }
9881  response->health = _match_ds3_pool_health(client->log, text);
9882  xmlFree(text);
9883  } else if (element_equal(child_node, "Id")) {
9884  response->id = xml_get_string(doc, child_node);
9885  } else if (element_equal(child_node, "LastAccessed")) {
9886  response->last_accessed = xml_get_string(doc, child_node);
9887  } else if (element_equal(child_node, "LastModified")) {
9888  response->last_modified = xml_get_string(doc, child_node);
9889  } else if (element_equal(child_node, "LastVerified")) {
9890  response->last_verified = xml_get_string(doc, child_node);
9891  } else if (element_equal(child_node, "Mountpoint")) {
9892  response->mountpoint = xml_get_string(doc, child_node);
9893  } else if (element_equal(child_node, "Name")) {
9894  response->name = xml_get_string(doc, child_node);
9895  } else if (element_equal(child_node, "PartitionId")) {
9896  response->partition_id = xml_get_string(doc, child_node);
9897  } else if (element_equal(child_node, "PoweredOn")) {
9898  response->powered_on = xml_get_bool(client->log, doc, child_node);
9899  } else if (element_equal(child_node, "Quiesced")) {
9900  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9901  if (text == NULL) {
9902  continue;
9903  }
9904  response->quiesced = _match_ds3_quiesced(client->log, text);
9905  xmlFree(text);
9906  } else if (element_equal(child_node, "ReservedCapacity")) {
9907  response->reserved_capacity = xml_get_uint64(doc, child_node);
9908  } else if (element_equal(child_node, "State")) {
9909  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9910  if (text == NULL) {
9911  continue;
9912  }
9913  response->state = _match_ds3_pool_state(client->log, text);
9914  xmlFree(text);
9915  } else if (element_equal(child_node, "StorageDomainId")) {
9916  response->storage_domain_id = xml_get_string(doc, child_node);
9917  } else if (element_equal(child_node, "TotalCapacity")) {
9918  response->total_capacity = xml_get_uint64(doc, child_node);
9919  } else if (element_equal(child_node, "Type")) {
9920  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9921  if (text == NULL) {
9922  continue;
9923  }
9924  response->type = _match_ds3_pool_type(client->log, text);
9925  xmlFree(text);
9926  } else if (element_equal(child_node, "UsedCapacity")) {
9927  response->used_capacity = xml_get_uint64(doc, child_node);
9928  } else {
9929  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_response [%s]\n", child_node->name, root->name);
9930  }
9931 
9932  if (error != NULL) {
9933  break;
9934  }
9935 
9936  }
9937 
9938 
9939  xmlFreeDoc(doc);
9940 
9941  if (error == NULL) {
9942  *_response = response;
9943  } else {
9944  ds3_pool_response_free(response);
9945  }
9946 
9947  return error;
9948 }
9949 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) {
9950  xmlDocPtr doc;
9951  xmlNodePtr root;
9952  xmlNodePtr child_node;
9953  ds3_pool_partition_response* response;
9954  ds3_error* error = NULL;
9955 
9956  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
9957  if (error != NULL) {
9958  return error;
9959  }
9960 
9961  response = g_new0(ds3_pool_partition_response, 1);
9962 
9963  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
9964  if (element_equal(child_node, "Id")) {
9965  response->id = xml_get_string(doc, child_node);
9966  } else if (element_equal(child_node, "Name")) {
9967  response->name = xml_get_string(doc, child_node);
9968  } else if (element_equal(child_node, "Type")) {
9969  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
9970  if (text == NULL) {
9971  continue;
9972  }
9973  response->type = _match_ds3_pool_type(client->log, text);
9974  xmlFree(text);
9975  } else {
9976  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_partition_response [%s]\n", child_node->name, root->name);
9977  }
9978 
9979  if (error != NULL) {
9980  break;
9981  }
9982 
9983  }
9984 
9985 
9986  xmlFreeDoc(doc);
9987 
9988  if (error == NULL) {
9989  *_response = response;
9990  } else {
9992  }
9993 
9994  return error;
9995 }
9996 static ds3_error* _parse_top_level_ds3_tape_response(const ds3_client* client, const ds3_request* request, ds3_tape_response** _response, GByteArray* xml_blob) {
9997  xmlDocPtr doc;
9998  xmlNodePtr root;
9999  xmlNodePtr child_node;
10000  ds3_tape_response* response;
10001  ds3_error* error = NULL;
10002 
10003  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10004  if (error != NULL) {
10005  return error;
10006  }
10007 
10008  response = g_new0(ds3_tape_response, 1);
10009 
10010  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10011  if (element_equal(child_node, "AssignedToStorageDomain")) {
10012  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
10013  } else if (element_equal(child_node, "AvailableRawCapacity")) {
10014  response->available_raw_capacity = xml_get_uint64(doc, child_node);
10015  } else if (element_equal(child_node, "BarCode")) {
10016  response->bar_code = xml_get_string(doc, child_node);
10017  } else if (element_equal(child_node, "BucketId")) {
10018  response->bucket_id = xml_get_string(doc, child_node);
10019  } else if (element_equal(child_node, "DescriptionForIdentification")) {
10020  response->description_for_identification = xml_get_string(doc, child_node);
10021  } else if (element_equal(child_node, "EjectDate")) {
10022  response->eject_date = xml_get_string(doc, child_node);
10023  } else if (element_equal(child_node, "EjectLabel")) {
10024  response->eject_label = xml_get_string(doc, child_node);
10025  } else if (element_equal(child_node, "EjectLocation")) {
10026  response->eject_location = xml_get_string(doc, child_node);
10027  } else if (element_equal(child_node, "EjectPending")) {
10028  response->eject_pending = xml_get_string(doc, child_node);
10029  } else if (element_equal(child_node, "FullOfData")) {
10030  response->full_of_data = xml_get_bool(client->log, doc, child_node);
10031  } else if (element_equal(child_node, "Id")) {
10032  response->id = xml_get_string(doc, child_node);
10033  } else if (element_equal(child_node, "LastAccessed")) {
10034  response->last_accessed = xml_get_string(doc, child_node);
10035  } else if (element_equal(child_node, "LastCheckpoint")) {
10036  response->last_checkpoint = xml_get_string(doc, child_node);
10037  } else if (element_equal(child_node, "LastModified")) {
10038  response->last_modified = xml_get_string(doc, child_node);
10039  } else if (element_equal(child_node, "LastVerified")) {
10040  response->last_verified = xml_get_string(doc, child_node);
10041  } else if (element_equal(child_node, "PartitionId")) {
10042  response->partition_id = xml_get_string(doc, child_node);
10043  } else if (element_equal(child_node, "PreviousState")) {
10044  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10045  if (text == NULL) {
10046  continue;
10047  }
10048  response->previous_state = _match_ds3_tape_state(client->log, text);
10049  xmlFree(text);
10050  } else if (element_equal(child_node, "SerialNumber")) {
10051  response->serial_number = xml_get_string(doc, child_node);
10052  } else if (element_equal(child_node, "State")) {
10053  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10054  if (text == NULL) {
10055  continue;
10056  }
10057  response->state = _match_ds3_tape_state(client->log, text);
10058  xmlFree(text);
10059  } else if (element_equal(child_node, "StorageDomainId")) {
10060  response->storage_domain_id = xml_get_string(doc, child_node);
10061  } else if (element_equal(child_node, "TakeOwnershipPending")) {
10062  response->take_ownership_pending = xml_get_bool(client->log, doc, child_node);
10063  } else if (element_equal(child_node, "TotalRawCapacity")) {
10064  response->total_raw_capacity = xml_get_uint64(doc, child_node);
10065  } else if (element_equal(child_node, "Type")) {
10066  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10067  if (text == NULL) {
10068  continue;
10069  }
10070  response->type = _match_ds3_tape_type(client->log, text);
10071  xmlFree(text);
10072  } else if (element_equal(child_node, "VerifyPending")) {
10073  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10074  if (text == NULL) {
10075  continue;
10076  }
10077  response->verify_pending = _match_ds3_priority(client->log, text);
10078  xmlFree(text);
10079  } else if (element_equal(child_node, "WriteProtected")) {
10080  response->write_protected = xml_get_bool(client->log, doc, child_node);
10081  } else {
10082  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_response [%s]\n", child_node->name, root->name);
10083  }
10084 
10085  if (error != NULL) {
10086  break;
10087  }
10088 
10089  }
10090 
10091 
10092  xmlFreeDoc(doc);
10093 
10094  if (error == NULL) {
10095  *_response = response;
10096  } else {
10097  ds3_tape_response_free(response);
10098  }
10099 
10100  return error;
10101 }
10102 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) {
10103  xmlDocPtr doc;
10104  xmlNodePtr root;
10105  xmlNodePtr child_node;
10107  ds3_error* error = NULL;
10108 
10109  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10110  if (error != NULL) {
10111  return error;
10112  }
10113 
10114  response = g_new0(ds3_tape_density_directive_response, 1);
10115 
10116  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10117  if (element_equal(child_node, "Density")) {
10118  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10119  if (text == NULL) {
10120  continue;
10121  }
10122  response->density = _match_ds3_tape_drive_type(client->log, text);
10123  xmlFree(text);
10124  } else if (element_equal(child_node, "Id")) {
10125  response->id = xml_get_string(doc, child_node);
10126  } else if (element_equal(child_node, "PartitionId")) {
10127  response->partition_id = xml_get_string(doc, child_node);
10128  } else if (element_equal(child_node, "TapeType")) {
10129  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10130  if (text == NULL) {
10131  continue;
10132  }
10133  response->tape_type = _match_ds3_tape_type(client->log, text);
10134  xmlFree(text);
10135  } else {
10136  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_density_directive_response [%s]\n", child_node->name, root->name);
10137  }
10138 
10139  if (error != NULL) {
10140  break;
10141  }
10142 
10143  }
10144 
10145 
10146  xmlFreeDoc(doc);
10147 
10148  if (error == NULL) {
10149  *_response = response;
10150  } else {
10152  }
10153 
10154  return error;
10155 }
10156 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) {
10157  xmlDocPtr doc;
10158  xmlNodePtr root;
10159  xmlNodePtr child_node;
10160  ds3_tape_drive_response* response;
10161  ds3_error* error = NULL;
10162 
10163  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10164  if (error != NULL) {
10165  return error;
10166  }
10167 
10168  response = g_new0(ds3_tape_drive_response, 1);
10169 
10170  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10171  if (element_equal(child_node, "ErrorMessage")) {
10172  response->error_message = xml_get_string(doc, child_node);
10173  } else if (element_equal(child_node, "ForceTapeRemoval")) {
10174  response->force_tape_removal = xml_get_bool(client->log, doc, child_node);
10175  } else if (element_equal(child_node, "Id")) {
10176  response->id = xml_get_string(doc, child_node);
10177  } else if (element_equal(child_node, "LastCleaned")) {
10178  response->last_cleaned = xml_get_string(doc, child_node);
10179  } else if (element_equal(child_node, "PartitionId")) {
10180  response->partition_id = xml_get_string(doc, child_node);
10181  } else if (element_equal(child_node, "SerialNumber")) {
10182  response->serial_number = xml_get_string(doc, child_node);
10183  } else if (element_equal(child_node, "State")) {
10184  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10185  if (text == NULL) {
10186  continue;
10187  }
10188  response->state = _match_ds3_tape_drive_state(client->log, text);
10189  xmlFree(text);
10190  } else if (element_equal(child_node, "TapeId")) {
10191  response->tape_id = xml_get_string(doc, child_node);
10192  } else if (element_equal(child_node, "Type")) {
10193  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10194  if (text == NULL) {
10195  continue;
10196  }
10197  response->type = _match_ds3_tape_drive_type(client->log, text);
10198  xmlFree(text);
10199  } else {
10200  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_drive_response [%s]\n", child_node->name, root->name);
10201  }
10202 
10203  if (error != NULL) {
10204  break;
10205  }
10206 
10207  }
10208 
10209 
10210  xmlFreeDoc(doc);
10211 
10212  if (error == NULL) {
10213  *_response = response;
10214  } else {
10215  ds3_tape_drive_response_free(response);
10216  }
10217 
10218  return error;
10219 }
10220 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) {
10221  xmlDocPtr doc;
10222  xmlNodePtr root;
10223  xmlNodePtr child_node;
10224  ds3_tape_library_response* response;
10225  ds3_error* error = NULL;
10226 
10227  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10228  if (error != NULL) {
10229  return error;
10230  }
10231 
10232  response = g_new0(ds3_tape_library_response, 1);
10233 
10234  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10235  if (element_equal(child_node, "Id")) {
10236  response->id = xml_get_string(doc, child_node);
10237  } else if (element_equal(child_node, "ManagementUrl")) {
10238  response->management_url = xml_get_string(doc, child_node);
10239  } else if (element_equal(child_node, "Name")) {
10240  response->name = xml_get_string(doc, child_node);
10241  } else if (element_equal(child_node, "SerialNumber")) {
10242  response->serial_number = xml_get_string(doc, child_node);
10243  } else {
10244  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_library_response [%s]\n", child_node->name, root->name);
10245  }
10246 
10247  if (error != NULL) {
10248  break;
10249  }
10250 
10251  }
10252 
10253 
10254  xmlFreeDoc(doc);
10255 
10256  if (error == NULL) {
10257  *_response = response;
10258  } else {
10260  }
10261 
10262  return error;
10263 }
10264 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) {
10265  xmlDocPtr doc;
10266  xmlNodePtr root;
10267  xmlNodePtr child_node;
10268  ds3_tape_partition_response* response;
10269  ds3_error* error = NULL;
10270 
10271  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10272  if (error != NULL) {
10273  return error;
10274  }
10275 
10276  response = g_new0(ds3_tape_partition_response, 1);
10277 
10278  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10279  if (element_equal(child_node, "DriveType")) {
10280  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10281  if (text == NULL) {
10282  continue;
10283  }
10284  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
10285  xmlFree(text);
10286  } else if (element_equal(child_node, "ErrorMessage")) {
10287  response->error_message = xml_get_string(doc, child_node);
10288  } else if (element_equal(child_node, "Id")) {
10289  response->id = xml_get_string(doc, child_node);
10290  } else if (element_equal(child_node, "ImportExportConfiguration")) {
10291  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10292  if (text == NULL) {
10293  continue;
10294  }
10296  xmlFree(text);
10297  } else if (element_equal(child_node, "LibraryId")) {
10298  response->library_id = xml_get_string(doc, child_node);
10299  } else if (element_equal(child_node, "Name")) {
10300  response->name = xml_get_string(doc, child_node);
10301  } else if (element_equal(child_node, "Quiesced")) {
10302  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10303  if (text == NULL) {
10304  continue;
10305  }
10306  response->quiesced = _match_ds3_quiesced(client->log, text);
10307  xmlFree(text);
10308  } else if (element_equal(child_node, "SerialNumber")) {
10309  response->serial_number = xml_get_string(doc, child_node);
10310  } else if (element_equal(child_node, "State")) {
10311  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10312  if (text == NULL) {
10313  continue;
10314  }
10315  response->state = _match_ds3_tape_partition_state(client->log, text);
10316  xmlFree(text);
10317  } else {
10318  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_response [%s]\n", child_node->name, root->name);
10319  }
10320 
10321  if (error != NULL) {
10322  break;
10323  }
10324 
10325  }
10326 
10327 
10328  xmlFreeDoc(doc);
10329 
10330  if (error == NULL) {
10331  *_response = response;
10332  } else {
10334  }
10335 
10336  return error;
10337 }
10339  xmlDocPtr doc;
10340  xmlNodePtr root;
10341  xmlNodePtr child_node;
10343  ds3_error* error = NULL;
10344  GPtrArray* tasks_array = g_ptr_array_new();
10345 
10346  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10347  if (error != NULL) {
10348  return error;
10349  }
10350 
10351  response = g_new0(ds3_blob_store_tasks_information_response, 1);
10352 
10353  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10354  if (element_equal(child_node, "Tasks")) {
10355  ds3_blob_store_task_information_response* tasks_response = NULL;
10356  error = _parse_ds3_blob_store_task_information_response(client, doc, child_node, &tasks_response);
10357  response->tasks = (ds3_blob_store_task_information_response**)tasks_array->pdata;
10358  g_ptr_array_add(tasks_array, tasks_response);
10359  } else {
10360  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_blob_store_tasks_information_response [%s]\n", child_node->name, root->name);
10361  }
10362 
10363  if (error != NULL) {
10364  break;
10365  }
10366 
10367  }
10368 
10369  response->tasks = (ds3_blob_store_task_information_response**)tasks_array->pdata;
10370  response->num_tasks = tasks_array->len;
10371  g_ptr_array_free(tasks_array, FALSE);
10372 
10373  xmlFreeDoc(doc);
10374 
10375  if (error == NULL) {
10376  *_response = response;
10377  } else {
10379  }
10380 
10381  return error;
10382 }
10383 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) {
10384  xmlDocPtr doc;
10385  xmlNodePtr root;
10386  xmlNodePtr child_node;
10388  ds3_error* error = NULL;
10389  GPtrArray* filesystems_array = g_ptr_array_new();
10390 
10391  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10392  if (error != NULL) {
10393  return error;
10394  }
10395 
10396  response = g_new0(ds3_cache_information_response, 1);
10397 
10398  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10399  if (element_equal(child_node, "Filesystems")) {
10400  ds3_cache_filesystem_information_response* filesystems_response = NULL;
10401  error = _parse_ds3_cache_filesystem_information_response(client, doc, child_node, &filesystems_response);
10402  response->filesystems = (ds3_cache_filesystem_information_response**)filesystems_array->pdata;
10403  g_ptr_array_add(filesystems_array, filesystems_response);
10404  } else {
10405  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_information_response [%s]\n", child_node->name, root->name);
10406  }
10407 
10408  if (error != NULL) {
10409  break;
10410  }
10411 
10412  }
10413 
10414  response->filesystems = (ds3_cache_filesystem_information_response**)filesystems_array->pdata;
10415  response->num_filesystems = filesystems_array->len;
10416  g_ptr_array_free(filesystems_array, FALSE);
10417 
10418  xmlFreeDoc(doc);
10419 
10420  if (error == NULL) {
10421  *_response = response;
10422  } else {
10424  }
10425 
10426  return error;
10427 }
10429  xmlDocPtr doc;
10430  xmlNodePtr root;
10431  xmlNodePtr child_node;
10433  ds3_error* error = NULL;
10434 
10435  error = _get_request_xml_nodes(xml_blob, &doc, &root, "CompleteMultipartUploadResult");
10436  if (error != NULL) {
10437  return error;
10438  }
10439 
10440  response = g_new0(ds3_complete_multipart_upload_result_response, 1);
10441 
10442  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10443  if (element_equal(child_node, "Bucket")) {
10444  response->bucket = xml_get_string(doc, child_node);
10445  } else if (element_equal(child_node, "ETag")) {
10446  response->e_tag = xml_get_string(doc, child_node);
10447  } else if (element_equal(child_node, "Key")) {
10448  response->key = xml_get_string(doc, child_node);
10449  } else if (element_equal(child_node, "Location")) {
10450  response->location = xml_get_string(doc, child_node);
10451  } else {
10452  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_complete_multipart_upload_result_response [%s]\n", child_node->name, root->name);
10453  }
10454 
10455  if (error != NULL) {
10456  break;
10457  }
10458 
10459  }
10460 
10461 
10462  xmlFreeDoc(doc);
10463 
10464  if (error == NULL) {
10465  *_response = response;
10466  } else {
10468  }
10469 
10470  return error;
10471 }
10472 static ds3_error* _parse_top_level_ds3_detailed_tape_response(const ds3_client* client, const ds3_request* request, ds3_detailed_tape_response** _response, GByteArray* xml_blob) {
10473  xmlDocPtr doc;
10474  xmlNodePtr root;
10475  xmlNodePtr child_node;
10476  ds3_detailed_tape_response* response;
10477  ds3_error* error = NULL;
10478 
10479  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10480  if (error != NULL) {
10481  return error;
10482  }
10483 
10484  response = g_new0(ds3_detailed_tape_response, 1);
10485 
10486  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10487  if (element_equal(child_node, "AssignedToStorageDomain")) {
10488  response->assigned_to_storage_domain = xml_get_bool(client->log, doc, child_node);
10489  } else if (element_equal(child_node, "AvailableRawCapacity")) {
10490  response->available_raw_capacity = xml_get_uint64(doc, child_node);
10491  } else if (element_equal(child_node, "BarCode")) {
10492  response->bar_code = xml_get_string(doc, child_node);
10493  } else if (element_equal(child_node, "BucketId")) {
10494  response->bucket_id = xml_get_string(doc, child_node);
10495  } else if (element_equal(child_node, "DescriptionForIdentification")) {
10496  response->description_for_identification = xml_get_string(doc, child_node);
10497  } else if (element_equal(child_node, "EjectDate")) {
10498  response->eject_date = xml_get_string(doc, child_node);
10499  } else if (element_equal(child_node, "EjectLabel")) {
10500  response->eject_label = xml_get_string(doc, child_node);
10501  } else if (element_equal(child_node, "EjectLocation")) {
10502  response->eject_location = xml_get_string(doc, child_node);
10503  } else if (element_equal(child_node, "EjectPending")) {
10504  response->eject_pending = xml_get_string(doc, child_node);
10505  } else if (element_equal(child_node, "FullOfData")) {
10506  response->full_of_data = xml_get_bool(client->log, doc, child_node);
10507  } else if (element_equal(child_node, "Id")) {
10508  response->id = xml_get_string(doc, child_node);
10509  } else if (element_equal(child_node, "LastAccessed")) {
10510  response->last_accessed = xml_get_string(doc, child_node);
10511  } else if (element_equal(child_node, "LastCheckpoint")) {
10512  response->last_checkpoint = xml_get_string(doc, child_node);
10513  } else if (element_equal(child_node, "LastModified")) {
10514  response->last_modified = xml_get_string(doc, child_node);
10515  } else if (element_equal(child_node, "LastVerified")) {
10516  response->last_verified = xml_get_string(doc, child_node);
10517  } else if (element_equal(child_node, "MostRecentFailure")) {
10518  error = _parse_ds3_detailed_tape_failure_response(client, doc, child_node, &response->most_recent_failure);
10519  } else if (element_equal(child_node, "PartitionId")) {
10520  response->partition_id = xml_get_string(doc, child_node);
10521  } else if (element_equal(child_node, "PreviousState")) {
10522  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10523  if (text == NULL) {
10524  continue;
10525  }
10526  response->previous_state = _match_ds3_tape_state(client->log, text);
10527  xmlFree(text);
10528  } else if (element_equal(child_node, "SerialNumber")) {
10529  response->serial_number = xml_get_string(doc, child_node);
10530  } else if (element_equal(child_node, "State")) {
10531  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10532  if (text == NULL) {
10533  continue;
10534  }
10535  response->state = _match_ds3_tape_state(client->log, text);
10536  xmlFree(text);
10537  } else if (element_equal(child_node, "StorageDomainId")) {
10538  response->storage_domain_id = xml_get_string(doc, child_node);
10539  } else if (element_equal(child_node, "TakeOwnershipPending")) {
10540  response->take_ownership_pending = xml_get_bool(client->log, doc, child_node);
10541  } else if (element_equal(child_node, "TotalRawCapacity")) {
10542  response->total_raw_capacity = xml_get_uint64(doc, child_node);
10543  } else if (element_equal(child_node, "Type")) {
10544  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10545  if (text == NULL) {
10546  continue;
10547  }
10548  response->type = _match_ds3_tape_type(client->log, text);
10549  xmlFree(text);
10550  } else if (element_equal(child_node, "VerifyPending")) {
10551  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10552  if (text == NULL) {
10553  continue;
10554  }
10555  response->verify_pending = _match_ds3_priority(client->log, text);
10556  xmlFree(text);
10557  } else if (element_equal(child_node, "WriteProtected")) {
10558  response->write_protected = xml_get_bool(client->log, doc, child_node);
10559  } else {
10560  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_tape_response [%s]\n", child_node->name, root->name);
10561  }
10562 
10563  if (error != NULL) {
10564  break;
10565  }
10566 
10567  }
10568 
10569 
10570  xmlFreeDoc(doc);
10571 
10572  if (error == NULL) {
10573  *_response = response;
10574  } else {
10576  }
10577 
10578  return error;
10579 }
10581  xmlDocPtr doc;
10582  xmlNodePtr root;
10583  xmlNodePtr child_node;
10585  ds3_error* error = NULL;
10586 
10587  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10588  if (error != NULL) {
10589  return error;
10590  }
10591 
10592  response = g_new0(ds3_detailed_tape_partition_response, 1);
10593 
10594  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10595  if (element_equal(child_node, "DriveType")) {
10596  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10597  if (text == NULL) {
10598  continue;
10599  }
10600  response->drive_type = _match_ds3_tape_drive_type(client->log, text);
10601  xmlFree(text);
10602  } else if (element_equal(child_node, "DriveTypes")) {
10603  xmlNodePtr loop_node;
10604  int num_nodes = 0;
10605  GByteArray* enum_array = g_byte_array_new();
10606  ds3_tape_drive_type drive_types;
10607  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
10608  xmlChar* text = xmlNodeListGetString(doc, loop_node, 1);
10609  if (text == NULL) {
10610  continue;
10611  }
10612  drive_types = _match_ds3_tape_drive_type(client->log, text);
10613  g_byte_array_append(enum_array, (const guint8*) &drive_types, sizeof(ds3_tape_drive_type));
10614  }
10615  response->drive_types = (ds3_tape_drive_type*)enum_array->data;
10616  response->num_drive_types = enum_array->len;
10617  g_byte_array_free(enum_array, FALSE);
10618  } else if (element_equal(child_node, "ErrorMessage")) {
10619  response->error_message = xml_get_string(doc, child_node);
10620  } else if (element_equal(child_node, "Id")) {
10621  response->id = xml_get_string(doc, child_node);
10622  } else if (element_equal(child_node, "ImportExportConfiguration")) {
10623  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10624  if (text == NULL) {
10625  continue;
10626  }
10628  xmlFree(text);
10629  } else if (element_equal(child_node, "LibraryId")) {
10630  response->library_id = xml_get_string(doc, child_node);
10631  } else if (element_equal(child_node, "Name")) {
10632  response->name = xml_get_string(doc, child_node);
10633  } else if (element_equal(child_node, "Quiesced")) {
10634  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10635  if (text == NULL) {
10636  continue;
10637  }
10638  response->quiesced = _match_ds3_quiesced(client->log, text);
10639  xmlFree(text);
10640  } else if (element_equal(child_node, "SerialNumber")) {
10641  response->serial_number = xml_get_string(doc, child_node);
10642  } else if (element_equal(child_node, "State")) {
10643  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10644  if (text == NULL) {
10645  continue;
10646  }
10647  response->state = _match_ds3_tape_partition_state(client->log, text);
10648  xmlFree(text);
10649  } else if (element_equal(child_node, "TapeTypes")) {
10650  xmlNodePtr loop_node;
10651  int num_nodes = 0;
10652  GByteArray* enum_array = g_byte_array_new();
10653  ds3_tape_type tape_types;
10654  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
10655  xmlChar* text = xmlNodeListGetString(doc, loop_node, 1);
10656  if (text == NULL) {
10657  continue;
10658  }
10659  tape_types = _match_ds3_tape_type(client->log, text);
10660  g_byte_array_append(enum_array, (const guint8*) &tape_types, sizeof(ds3_tape_type));
10661  }
10662  response->tape_types = (ds3_tape_type*)enum_array->data;
10663  response->num_tape_types = enum_array->len;
10664  g_byte_array_free(enum_array, FALSE);
10665  } else {
10666  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_tape_partition_response [%s]\n", child_node->name, root->name);
10667  }
10668 
10669  if (error != NULL) {
10670  break;
10671  }
10672 
10673  }
10674 
10675 
10676  xmlFreeDoc(doc);
10677 
10678  if (error == NULL) {
10679  *_response = response;
10680  } else {
10682  }
10683 
10684  return error;
10685 }
10687  xmlDocPtr doc;
10688  xmlNodePtr root;
10689  xmlNodePtr child_node;
10691  ds3_error* error = NULL;
10692 
10693  error = _get_request_xml_nodes(xml_blob, &doc, &root, "InitiateMultipartUploadResult");
10694  if (error != NULL) {
10695  return error;
10696  }
10697 
10698  response = g_new0(ds3_initiate_multipart_upload_result_response, 1);
10699 
10700  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10701  if (element_equal(child_node, "Bucket")) {
10702  response->bucket = xml_get_string(doc, child_node);
10703  } else if (element_equal(child_node, "Key")) {
10704  response->key = xml_get_string(doc, child_node);
10705  } else if (element_equal(child_node, "UploadId")) {
10706  response->upload_id = xml_get_string(doc, child_node);
10707  } else {
10708  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_initiate_multipart_upload_result_response [%s]\n", child_node->name, root->name);
10709  }
10710 
10711  if (error != NULL) {
10712  break;
10713  }
10714 
10715  }
10716 
10717 
10718  xmlFreeDoc(doc);
10719 
10720  if (error == NULL) {
10721  *_response = response;
10722  } else {
10724  }
10725 
10726  return error;
10727 }
10728 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) {
10729  xmlDocPtr doc;
10730  xmlNodePtr root;
10731  xmlNodePtr child_node;
10733  ds3_error* error = NULL;
10734 
10735  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10736  if (error != NULL) {
10737  return error;
10738  }
10739 
10740  response = g_new0(ds3_system_information_response, 1);
10741 
10742  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10743  if (element_equal(child_node, "ApiVersion")) {
10744  response->api_version = xml_get_string(doc, child_node);
10745  } else if (element_equal(child_node, "BackendActivated")) {
10746  response->backend_activated = xml_get_bool(client->log, doc, child_node);
10747  } else if (element_equal(child_node, "BuildInformation")) {
10748  error = _parse_ds3_build_information_response(client, doc, child_node, &response->build_information);
10749  } else if (element_equal(child_node, "SerialNumber")) {
10750  response->serial_number = xml_get_string(doc, child_node);
10751  } else {
10752  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_information_response [%s]\n", child_node->name, root->name);
10753  }
10754 
10755  if (error != NULL) {
10756  break;
10757  }
10758 
10759  }
10760 
10761 
10762  xmlFreeDoc(doc);
10763 
10764  if (error == NULL) {
10765  *_response = response;
10766  } else {
10768  }
10769 
10770  return error;
10771 }
10773  xmlDocPtr doc;
10774  xmlNodePtr root;
10775  xmlNodePtr child_node;
10777  ds3_error* error = NULL;
10778 
10779  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10780  if (error != NULL) {
10781  return error;
10782  }
10783 
10784  response = g_new0(ds3_health_verification_result_response, 1);
10785 
10786  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10787  if (element_equal(child_node, "DatabaseFilesystemFreeSpace")) {
10788  xmlChar* text = xmlNodeListGetString(doc, child_node, 1);
10789  if (text == NULL) {
10790  continue;
10791  }
10793  xmlFree(text);
10794  } else if (element_equal(child_node, "MsRequiredToVerifyDataPlannerHealth")) {
10795  response->ms_required_to_verify_data_planner_health = xml_get_uint64(doc, child_node);
10796  } else {
10797  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_health_verification_result_response [%s]\n", child_node->name, root->name);
10798  }
10799 
10800  if (error != NULL) {
10801  break;
10802  }
10803 
10804  }
10805 
10806 
10807  xmlFreeDoc(doc);
10808 
10809  if (error == NULL) {
10810  *_response = response;
10811  } else {
10813  }
10814 
10815  return error;
10816 }
10817 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) {
10818  xmlDocPtr doc;
10819  xmlNodePtr root;
10820  xmlNodePtr child_node;
10822  ds3_error* error = NULL;
10823  GPtrArray* failures_array = g_ptr_array_new();
10824 
10825  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10826  if (error != NULL) {
10827  return error;
10828  }
10829 
10830  response = g_new0(ds3_tape_failure_list_response, 1);
10831 
10832  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10833  if (element_equal(child_node, "Failure")) {
10834  ds3_tape_failure_response* failures_response = NULL;
10835  error = _parse_ds3_tape_failure_response(client, doc, child_node, &failures_response);
10836  response->failures = (ds3_tape_failure_response**)failures_array->pdata;
10837  g_ptr_array_add(failures_array, failures_response);
10838  } else {
10839  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_failure_list_response [%s]\n", child_node->name, root->name);
10840  }
10841 
10842  if (error != NULL) {
10843  break;
10844  }
10845 
10846  }
10847 
10848  response->failures = (ds3_tape_failure_response**)failures_array->pdata;
10849  response->num_failures = failures_array->len;
10850  g_ptr_array_free(failures_array, FALSE);
10851 
10852  xmlFreeDoc(doc);
10853 
10854  if (error == NULL) {
10855  *_response = response;
10856  } else {
10858  }
10859 
10860  return error;
10861 }
10862 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) {
10863  xmlDocPtr doc;
10864  xmlNodePtr root;
10865  xmlNodePtr child_node;
10866  ds3_bucket_acl_list_response* response;
10867  ds3_error* error = NULL;
10868  GPtrArray* bucket_acls_array = g_ptr_array_new();
10869 
10870  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10871  if (error != NULL) {
10872  return error;
10873  }
10874 
10875  response = g_new0(ds3_bucket_acl_list_response, 1);
10876 
10877  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10878  if (element_equal(child_node, "BucketAcl")) {
10879  ds3_bucket_acl_response* bucket_acls_response = NULL;
10880  error = _parse_ds3_bucket_acl_response(client, doc, child_node, &bucket_acls_response);
10881  response->bucket_acls = (ds3_bucket_acl_response**)bucket_acls_array->pdata;
10882  g_ptr_array_add(bucket_acls_array, bucket_acls_response);
10883  } else {
10884  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_acl_list_response [%s]\n", child_node->name, root->name);
10885  }
10886 
10887  if (error != NULL) {
10888  break;
10889  }
10890 
10891  }
10892 
10893  response->bucket_acls = (ds3_bucket_acl_response**)bucket_acls_array->pdata;
10894  response->num_bucket_acls = bucket_acls_array->len;
10895  g_ptr_array_free(bucket_acls_array, FALSE);
10896 
10897  xmlFreeDoc(doc);
10898 
10899  if (error == NULL) {
10900  *_response = response;
10901  } else {
10903  }
10904 
10905  return error;
10906 }
10907 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) {
10908  xmlDocPtr doc;
10909  xmlNodePtr root;
10910  xmlNodePtr child_node;
10912  ds3_error* error = NULL;
10913  GPtrArray* data_policy_acls_array = g_ptr_array_new();
10914 
10915  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10916  if (error != NULL) {
10917  return error;
10918  }
10919 
10920  response = g_new0(ds3_data_policy_acl_list_response, 1);
10921 
10922  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10923  if (element_equal(child_node, "DataPolicyAcl")) {
10924  ds3_data_policy_acl_response* data_policy_acls_response = NULL;
10925  error = _parse_ds3_data_policy_acl_response(client, doc, child_node, &data_policy_acls_response);
10926  response->data_policy_acls = (ds3_data_policy_acl_response**)data_policy_acls_array->pdata;
10927  g_ptr_array_add(data_policy_acls_array, data_policy_acls_response);
10928  } else {
10929  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_acl_list_response [%s]\n", child_node->name, root->name);
10930  }
10931 
10932  if (error != NULL) {
10933  break;
10934  }
10935 
10936  }
10937 
10938  response->data_policy_acls = (ds3_data_policy_acl_response**)data_policy_acls_array->pdata;
10939  response->num_data_policy_acls = data_policy_acls_array->len;
10940  g_ptr_array_free(data_policy_acls_array, FALSE);
10941 
10942  xmlFreeDoc(doc);
10943 
10944  if (error == NULL) {
10945  *_response = response;
10946  } else {
10948  }
10949 
10950  return error;
10951 }
10952 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) {
10953  xmlDocPtr doc;
10954  xmlNodePtr root;
10955  xmlNodePtr child_node;
10956  ds3_bucket_list_response* response;
10957  ds3_error* error = NULL;
10958  GPtrArray* buckets_array = g_ptr_array_new();
10959 
10960  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
10961  if (error != NULL) {
10962  return error;
10963  }
10964 
10965  response = g_new0(ds3_bucket_list_response, 1);
10966 
10967  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
10968  if (element_equal(child_node, "Bucket")) {
10969  ds3_bucket_response* buckets_response = NULL;
10970  error = _parse_ds3_bucket_response(client, doc, child_node, &buckets_response);
10971  response->buckets = (ds3_bucket_response**)buckets_array->pdata;
10972  g_ptr_array_add(buckets_array, buckets_response);
10973  } else {
10974  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bucket_list_response [%s]\n", child_node->name, root->name);
10975  }
10976 
10977  if (error != NULL) {
10978  break;
10979  }
10980 
10981  }
10982 
10983  response->buckets = (ds3_bucket_response**)buckets_array->pdata;
10984  response->num_buckets = buckets_array->len;
10985  g_ptr_array_free(buckets_array, FALSE);
10986 
10987  xmlFreeDoc(doc);
10988 
10989  if (error == NULL) {
10990  *_response = response;
10991  } else {
10993  }
10994 
10995  return error;
10996 }
10997 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) {
10998  xmlDocPtr doc;
10999  xmlNodePtr root;
11000  xmlNodePtr child_node;
11002  ds3_error* error = NULL;
11003  GPtrArray* cache_filesystems_array = g_ptr_array_new();
11004 
11005  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11006  if (error != NULL) {
11007  return error;
11008  }
11009 
11010  response = g_new0(ds3_cache_filesystem_list_response, 1);
11011 
11012  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11013  if (element_equal(child_node, "CacheFilesystem")) {
11014  ds3_cache_filesystem_response* cache_filesystems_response = NULL;
11015  error = _parse_ds3_cache_filesystem_response(client, doc, child_node, &cache_filesystems_response);
11016  response->cache_filesystems = (ds3_cache_filesystem_response**)cache_filesystems_array->pdata;
11017  g_ptr_array_add(cache_filesystems_array, cache_filesystems_response);
11018  } else {
11019  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_cache_filesystem_list_response [%s]\n", child_node->name, root->name);
11020  }
11021 
11022  if (error != NULL) {
11023  break;
11024  }
11025 
11026  }
11027 
11028  response->cache_filesystems = (ds3_cache_filesystem_response**)cache_filesystems_array->pdata;
11029  response->num_cache_filesystems = cache_filesystems_array->len;
11030  g_ptr_array_free(cache_filesystems_array, FALSE);
11031 
11032  xmlFreeDoc(doc);
11033 
11034  if (error == NULL) {
11035  *_response = response;
11036  } else {
11038  }
11039 
11040  return error;
11041 }
11043  xmlDocPtr doc;
11044  xmlNodePtr root;
11045  xmlNodePtr child_node;
11047  ds3_error* error = NULL;
11048  GPtrArray* data_persistence_rules_array = g_ptr_array_new();
11049 
11050  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11051  if (error != NULL) {
11052  return error;
11053  }
11054 
11055  response = g_new0(ds3_data_persistence_rule_list_response, 1);
11056 
11057  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11058  if (element_equal(child_node, "DataPersistenceRule")) {
11059  ds3_data_persistence_rule_response* data_persistence_rules_response = NULL;
11060  error = _parse_ds3_data_persistence_rule_response(client, doc, child_node, &data_persistence_rules_response);
11061  response->data_persistence_rules = (ds3_data_persistence_rule_response**)data_persistence_rules_array->pdata;
11062  g_ptr_array_add(data_persistence_rules_array, data_persistence_rules_response);
11063  } else {
11064  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_persistence_rule_list_response [%s]\n", child_node->name, root->name);
11065  }
11066 
11067  if (error != NULL) {
11068  break;
11069  }
11070 
11071  }
11072 
11073  response->data_persistence_rules = (ds3_data_persistence_rule_response**)data_persistence_rules_array->pdata;
11074  response->num_data_persistence_rules = data_persistence_rules_array->len;
11075  g_ptr_array_free(data_persistence_rules_array, FALSE);
11076 
11077  xmlFreeDoc(doc);
11078 
11079  if (error == NULL) {
11080  *_response = response;
11081  } else {
11083  }
11084 
11085  return error;
11086 }
11087 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) {
11088  xmlDocPtr doc;
11089  xmlNodePtr root;
11090  xmlNodePtr child_node;
11092  ds3_error* error = NULL;
11093  GPtrArray* data_policies_array = g_ptr_array_new();
11094 
11095  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11096  if (error != NULL) {
11097  return error;
11098  }
11099 
11100  response = g_new0(ds3_data_policy_list_response, 1);
11101 
11102  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11103  if (element_equal(child_node, "DataPolicy")) {
11104  ds3_data_policy_response* data_policies_response = NULL;
11105  error = _parse_ds3_data_policy_response(client, doc, child_node, &data_policies_response);
11106  response->data_policies = (ds3_data_policy_response**)data_policies_array->pdata;
11107  g_ptr_array_add(data_policies_array, data_policies_response);
11108  } else {
11109  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_data_policy_list_response [%s]\n", child_node->name, root->name);
11110  }
11111 
11112  if (error != NULL) {
11113  break;
11114  }
11115 
11116  }
11117 
11118  response->data_policies = (ds3_data_policy_response**)data_policies_array->pdata;
11119  response->num_data_policies = data_policies_array->len;
11120  g_ptr_array_free(data_policies_array, FALSE);
11121 
11122  xmlFreeDoc(doc);
11123 
11124  if (error == NULL) {
11125  *_response = response;
11126  } else {
11128  }
11129 
11130  return error;
11131 }
11132 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) {
11133  xmlDocPtr doc;
11134  xmlNodePtr root;
11135  xmlNodePtr child_node;
11137  ds3_error* error = NULL;
11138  GPtrArray* group_members_array = g_ptr_array_new();
11139 
11140  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11141  if (error != NULL) {
11142  return error;
11143  }
11144 
11145  response = g_new0(ds3_group_member_list_response, 1);
11146 
11147  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11148  if (element_equal(child_node, "GroupMember")) {
11149  ds3_group_member_response* group_members_response = NULL;
11150  error = _parse_ds3_group_member_response(client, doc, child_node, &group_members_response);
11151  response->group_members = (ds3_group_member_response**)group_members_array->pdata;
11152  g_ptr_array_add(group_members_array, group_members_response);
11153  } else {
11154  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_member_list_response [%s]\n", child_node->name, root->name);
11155  }
11156 
11157  if (error != NULL) {
11158  break;
11159  }
11160 
11161  }
11162 
11163  response->group_members = (ds3_group_member_response**)group_members_array->pdata;
11164  response->num_group_members = group_members_array->len;
11165  g_ptr_array_free(group_members_array, FALSE);
11166 
11167  xmlFreeDoc(doc);
11168 
11169  if (error == NULL) {
11170  *_response = response;
11171  } else {
11173  }
11174 
11175  return error;
11176 }
11177 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) {
11178  xmlDocPtr doc;
11179  xmlNodePtr root;
11180  xmlNodePtr child_node;
11181  ds3_group_list_response* response;
11182  ds3_error* error = NULL;
11183  GPtrArray* groups_array = g_ptr_array_new();
11184 
11185  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11186  if (error != NULL) {
11187  return error;
11188  }
11189 
11190  response = g_new0(ds3_group_list_response, 1);
11191 
11192  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11193  if (element_equal(child_node, "Group")) {
11194  ds3_group_response* groups_response = NULL;
11195  error = _parse_ds3_group_response(client, doc, child_node, &groups_response);
11196  response->groups = (ds3_group_response**)groups_array->pdata;
11197  g_ptr_array_add(groups_array, groups_response);
11198  } else {
11199  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_group_list_response [%s]\n", child_node->name, root->name);
11200  }
11201 
11202  if (error != NULL) {
11203  break;
11204  }
11205 
11206  }
11207 
11208  response->groups = (ds3_group_response**)groups_array->pdata;
11209  response->num_groups = groups_array->len;
11210  g_ptr_array_free(groups_array, FALSE);
11211 
11212  xmlFreeDoc(doc);
11213 
11214  if (error == NULL) {
11215  *_response = response;
11216  } else {
11217  ds3_group_list_response_free(response);
11218  }
11219 
11220  return error;
11221 }
11222 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) {
11223  xmlDocPtr doc;
11224  xmlNodePtr root;
11225  xmlNodePtr child_node;
11226  ds3_active_job_list_response* response;
11227  ds3_error* error = NULL;
11228  GPtrArray* active_jobs_array = g_ptr_array_new();
11229 
11230  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
11231  if (error != NULL) {
11232  return error;
11233  }
11234 
11235  response = g_new0(ds3_active_job_list_response, 1);
11236 
11237  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11238  if (element_equal(child_node, "Job")) {
11239  ds3_active_job_response* active_jobs_response = NULL;
11240  error = _parse_ds3_active_job_response(client, doc, child_node, &active_jobs_response);
11241  response->active_jobs = (ds3_active_job_response**)active_jobs_array->pdata;
11242  g_ptr_array_add(active_jobs_array, active_jobs_response);
11243  } else {
11244  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_active_job_list_response [%s]\n", child_node->name, root->name);
11245  }
11246 
11247  if (error != NULL) {
11248  break;
11249  }
11250 
11251  }
11252 
11253  response->active_jobs = (ds3_active_job_response**)active_jobs_array->pdata;
11254  response->num_active_jobs = active_jobs_array->len;
11255  g_ptr_array_free(active_jobs_array, FALSE);
11256 
11257  xmlFreeDoc(doc);
11258 
11259  if (error == NULL) {
11260  *_response = response;
11261  } else {
11263  }
11264 
11265  return error;
11266 }
11267 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) {
11268  xmlDocPtr doc;
11269  xmlNodePtr root;
11270  xmlNodePtr child_node;
11272  ds3_error* error = NULL;
11273  GPtrArray* canceled_jobs_array = g_ptr_array_new();
11274 
11275  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
11276  if (error != NULL) {
11277  return error;
11278  }
11279 
11280  response = g_new0(ds3_canceled_job_list_response, 1);
11281 
11282  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11283  if (element_equal(child_node, "CanceledJob")) {
11284  ds3_canceled_job_response* canceled_jobs_response = NULL;
11285  error = _parse_ds3_canceled_job_response(client, doc, child_node, &canceled_jobs_response);
11286  response->canceled_jobs = (ds3_canceled_job_response**)canceled_jobs_array->pdata;
11287  g_ptr_array_add(canceled_jobs_array, canceled_jobs_response);
11288  } else {
11289  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_canceled_job_list_response [%s]\n", child_node->name, root->name);
11290  }
11291 
11292  if (error != NULL) {
11293  break;
11294  }
11295 
11296  }
11297 
11298  response->canceled_jobs = (ds3_canceled_job_response**)canceled_jobs_array->pdata;
11299  response->num_canceled_jobs = canceled_jobs_array->len;
11300  g_ptr_array_free(canceled_jobs_array, FALSE);
11301 
11302  xmlFreeDoc(doc);
11303 
11304  if (error == NULL) {
11305  *_response = response;
11306  } else {
11308  }
11309 
11310  return error;
11311 }
11312 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) {
11313  xmlDocPtr doc;
11314  xmlNodePtr root;
11315  xmlNodePtr child_node;
11317  ds3_error* error = NULL;
11318  GPtrArray* completed_jobs_array = g_ptr_array_new();
11319 
11320  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
11321  if (error != NULL) {
11322  return error;
11323  }
11324 
11325  response = g_new0(ds3_completed_job_list_response, 1);
11326 
11327  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11328  if (element_equal(child_node, "CompletedJob")) {
11329  ds3_completed_job_response* completed_jobs_response = NULL;
11330  error = _parse_ds3_completed_job_response(client, doc, child_node, &completed_jobs_response);
11331  response->completed_jobs = (ds3_completed_job_response**)completed_jobs_array->pdata;
11332  g_ptr_array_add(completed_jobs_array, completed_jobs_response);
11333  } else {
11334  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_completed_job_list_response [%s]\n", child_node->name, root->name);
11335  }
11336 
11337  if (error != NULL) {
11338  break;
11339  }
11340 
11341  }
11342 
11343  response->completed_jobs = (ds3_completed_job_response**)completed_jobs_array->pdata;
11344  response->num_completed_jobs = completed_jobs_array->len;
11345  g_ptr_array_free(completed_jobs_array, FALSE);
11346 
11347  xmlFreeDoc(doc);
11348 
11349  if (error == NULL) {
11350  *_response = response;
11351  } else {
11353  }
11354 
11355  return error;
11356 }
11357 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) {
11358  xmlDocPtr doc;
11359  xmlNodePtr root;
11360  xmlNodePtr child_node;
11361  ds3_node_list_response* response;
11362  ds3_error* error = NULL;
11363  GPtrArray* nodes_array = g_ptr_array_new();
11364 
11365  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11366  if (error != NULL) {
11367  return error;
11368  }
11369 
11370  response = g_new0(ds3_node_list_response, 1);
11371 
11372  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11373  if (element_equal(child_node, "Node")) {
11374  ds3_node_response* nodes_response = NULL;
11375  error = _parse_ds3_node_response(client, doc, child_node, &nodes_response);
11376  response->nodes = (ds3_node_response**)nodes_array->pdata;
11377  g_ptr_array_add(nodes_array, nodes_response);
11378  } else {
11379  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_node_list_response [%s]\n", child_node->name, root->name);
11380  }
11381 
11382  if (error != NULL) {
11383  break;
11384  }
11385 
11386  }
11387 
11388  response->nodes = (ds3_node_response**)nodes_array->pdata;
11389  response->num_nodes = nodes_array->len;
11390  g_ptr_array_free(nodes_array, FALSE);
11391 
11392  xmlFreeDoc(doc);
11393 
11394  if (error == NULL) {
11395  *_response = response;
11396  } else {
11397  ds3_node_list_response_free(response);
11398  }
11399 
11400  return error;
11401 }
11403  xmlDocPtr doc;
11404  xmlNodePtr root;
11405  xmlNodePtr child_node;
11407  ds3_error* error = NULL;
11408  GPtrArray* job_completed_notification_registrations_array = g_ptr_array_new();
11409 
11410  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11411  if (error != NULL) {
11412  return error;
11413  }
11414 
11416 
11417  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11418  if (element_equal(child_node, "JobCompletedNotificationRegistration")) {
11419  ds3_job_completed_notification_registration_response* job_completed_notification_registrations_response = NULL;
11420  error = _parse_ds3_job_completed_notification_registration_response(client, doc, child_node, &job_completed_notification_registrations_response);
11421  response->job_completed_notification_registrations = (ds3_job_completed_notification_registration_response**)job_completed_notification_registrations_array->pdata;
11422  g_ptr_array_add(job_completed_notification_registrations_array, job_completed_notification_registrations_response);
11423  } else {
11424  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);
11425  }
11426 
11427  if (error != NULL) {
11428  break;
11429  }
11430 
11431  }
11432 
11433  response->job_completed_notification_registrations = (ds3_job_completed_notification_registration_response**)job_completed_notification_registrations_array->pdata;
11434  response->num_job_completed_notification_registrations = job_completed_notification_registrations_array->len;
11435  g_ptr_array_free(job_completed_notification_registrations_array, FALSE);
11436 
11437  xmlFreeDoc(doc);
11438 
11439  if (error == NULL) {
11440  *_response = response;
11441  } else {
11443  }
11444 
11445  return error;
11446 }
11448  xmlDocPtr doc;
11449  xmlNodePtr root;
11450  xmlNodePtr child_node;
11452  ds3_error* error = NULL;
11453  GPtrArray* job_created_notification_registrations_array = g_ptr_array_new();
11454 
11455  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11456  if (error != NULL) {
11457  return error;
11458  }
11459 
11461 
11462  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11463  if (element_equal(child_node, "JobCreatedNotificationRegistration")) {
11464  ds3_job_created_notification_registration_response* job_created_notification_registrations_response = NULL;
11465  error = _parse_ds3_job_created_notification_registration_response(client, doc, child_node, &job_created_notification_registrations_response);
11466  response->job_created_notification_registrations = (ds3_job_created_notification_registration_response**)job_created_notification_registrations_array->pdata;
11467  g_ptr_array_add(job_created_notification_registrations_array, job_created_notification_registrations_response);
11468  } else {
11469  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);
11470  }
11471 
11472  if (error != NULL) {
11473  break;
11474  }
11475 
11476  }
11477 
11478  response->job_created_notification_registrations = (ds3_job_created_notification_registration_response**)job_created_notification_registrations_array->pdata;
11479  response->num_job_created_notification_registrations = job_created_notification_registrations_array->len;
11480  g_ptr_array_free(job_created_notification_registrations_array, FALSE);
11481 
11482  xmlFreeDoc(doc);
11483 
11484  if (error == NULL) {
11485  *_response = response;
11486  } else {
11488  }
11489 
11490  return error;
11491 }
11493  xmlDocPtr doc;
11494  xmlNodePtr root;
11495  xmlNodePtr child_node;
11497  ds3_error* error = NULL;
11498  GPtrArray* s3_object_cached_notification_registrations_array = g_ptr_array_new();
11499 
11500  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11501  if (error != NULL) {
11502  return error;
11503  }
11504 
11506 
11507  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11508  if (element_equal(child_node, "S3ObjectCachedNotificationRegistration")) {
11509  ds3_s3_object_cached_notification_registration_response* s3_object_cached_notification_registrations_response = NULL;
11510  error = _parse_ds3_s3_object_cached_notification_registration_response(client, doc, child_node, &s3_object_cached_notification_registrations_response);
11511  response->s3_object_cached_notification_registrations = (ds3_s3_object_cached_notification_registration_response**)s3_object_cached_notification_registrations_array->pdata;
11512  g_ptr_array_add(s3_object_cached_notification_registrations_array, s3_object_cached_notification_registrations_response);
11513  } else {
11514  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);
11515  }
11516 
11517  if (error != NULL) {
11518  break;
11519  }
11520 
11521  }
11522 
11523  response->s3_object_cached_notification_registrations = (ds3_s3_object_cached_notification_registration_response**)s3_object_cached_notification_registrations_array->pdata;
11524  response->num_s3_object_cached_notification_registrations = s3_object_cached_notification_registrations_array->len;
11525  g_ptr_array_free(s3_object_cached_notification_registrations_array, FALSE);
11526 
11527  xmlFreeDoc(doc);
11528 
11529  if (error == NULL) {
11530  *_response = response;
11531  } else {
11533  }
11534 
11535  return error;
11536 }
11538  xmlDocPtr doc;
11539  xmlNodePtr root;
11540  xmlNodePtr child_node;
11542  ds3_error* error = NULL;
11543  GPtrArray* s3_object_lost_notification_registrations_array = g_ptr_array_new();
11544 
11545  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11546  if (error != NULL) {
11547  return error;
11548  }
11549 
11551 
11552  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11553  if (element_equal(child_node, "S3ObjectLostNotificationRegistration")) {
11554  ds3_s3_object_lost_notification_registration_response* s3_object_lost_notification_registrations_response = NULL;
11555  error = _parse_ds3_s3_object_lost_notification_registration_response(client, doc, child_node, &s3_object_lost_notification_registrations_response);
11556  response->s3_object_lost_notification_registrations = (ds3_s3_object_lost_notification_registration_response**)s3_object_lost_notification_registrations_array->pdata;
11557  g_ptr_array_add(s3_object_lost_notification_registrations_array, s3_object_lost_notification_registrations_response);
11558  } else {
11559  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);
11560  }
11561 
11562  if (error != NULL) {
11563  break;
11564  }
11565 
11566  }
11567 
11568  response->s3_object_lost_notification_registrations = (ds3_s3_object_lost_notification_registration_response**)s3_object_lost_notification_registrations_array->pdata;
11569  response->num_s3_object_lost_notification_registrations = s3_object_lost_notification_registrations_array->len;
11570  g_ptr_array_free(s3_object_lost_notification_registrations_array, FALSE);
11571 
11572  xmlFreeDoc(doc);
11573 
11574  if (error == NULL) {
11575  *_response = response;
11576  } else {
11578  }
11579 
11580  return error;
11581 }
11583  xmlDocPtr doc;
11584  xmlNodePtr root;
11585  xmlNodePtr child_node;
11587  ds3_error* error = NULL;
11588  GPtrArray* s3_object_persisted_notification_registrations_array = g_ptr_array_new();
11589 
11590  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11591  if (error != NULL) {
11592  return error;
11593  }
11594 
11596 
11597  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11598  if (element_equal(child_node, "S3ObjectPersistedNotificationRegistration")) {
11599  ds3_s3_object_persisted_notification_registration_response* s3_object_persisted_notification_registrations_response = NULL;
11600  error = _parse_ds3_s3_object_persisted_notification_registration_response(client, doc, child_node, &s3_object_persisted_notification_registrations_response);
11601  response->s3_object_persisted_notification_registrations = (ds3_s3_object_persisted_notification_registration_response**)s3_object_persisted_notification_registrations_array->pdata;
11602  g_ptr_array_add(s3_object_persisted_notification_registrations_array, s3_object_persisted_notification_registrations_response);
11603  } else {
11604  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);
11605  }
11606 
11607  if (error != NULL) {
11608  break;
11609  }
11610 
11611  }
11612 
11613  response->s3_object_persisted_notification_registrations = (ds3_s3_object_persisted_notification_registration_response**)s3_object_persisted_notification_registrations_array->pdata;
11614  response->num_s3_object_persisted_notification_registrations = s3_object_persisted_notification_registrations_array->len;
11615  g_ptr_array_free(s3_object_persisted_notification_registrations_array, FALSE);
11616 
11617  xmlFreeDoc(doc);
11618 
11619  if (error == NULL) {
11620  *_response = response;
11621  } else {
11623  }
11624 
11625  return error;
11626 }
11628  xmlDocPtr doc;
11629  xmlNodePtr root;
11630  xmlNodePtr child_node;
11632  ds3_error* error = NULL;
11633  GPtrArray* pool_failure_notification_registrations_array = g_ptr_array_new();
11634 
11635  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11636  if (error != NULL) {
11637  return error;
11638  }
11639 
11641 
11642  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11643  if (element_equal(child_node, "PoolFailureNotificationRegistration")) {
11644  ds3_pool_failure_notification_registration_response* pool_failure_notification_registrations_response = NULL;
11645  error = _parse_ds3_pool_failure_notification_registration_response(client, doc, child_node, &pool_failure_notification_registrations_response);
11646  response->pool_failure_notification_registrations = (ds3_pool_failure_notification_registration_response**)pool_failure_notification_registrations_array->pdata;
11647  g_ptr_array_add(pool_failure_notification_registrations_array, pool_failure_notification_registrations_response);
11648  } else {
11649  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);
11650  }
11651 
11652  if (error != NULL) {
11653  break;
11654  }
11655 
11656  }
11657 
11658  response->pool_failure_notification_registrations = (ds3_pool_failure_notification_registration_response**)pool_failure_notification_registrations_array->pdata;
11659  response->num_pool_failure_notification_registrations = pool_failure_notification_registrations_array->len;
11660  g_ptr_array_free(pool_failure_notification_registrations_array, FALSE);
11661 
11662  xmlFreeDoc(doc);
11663 
11664  if (error == NULL) {
11665  *_response = response;
11666  } else {
11668  }
11669 
11670  return error;
11671 }
11673  xmlDocPtr doc;
11674  xmlNodePtr root;
11675  xmlNodePtr child_node;
11677  ds3_error* error = NULL;
11678  GPtrArray* storage_domain_failure_notification_registrations_array = g_ptr_array_new();
11679 
11680  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11681  if (error != NULL) {
11682  return error;
11683  }
11684 
11686 
11687  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11688  if (element_equal(child_node, "StorageDomainFailureNotificationRegistration")) {
11689  ds3_storage_domain_failure_notification_registration_response* storage_domain_failure_notification_registrations_response = NULL;
11690  error = _parse_ds3_storage_domain_failure_notification_registration_response(client, doc, child_node, &storage_domain_failure_notification_registrations_response);
11691  response->storage_domain_failure_notification_registrations = (ds3_storage_domain_failure_notification_registration_response**)storage_domain_failure_notification_registrations_array->pdata;
11692  g_ptr_array_add(storage_domain_failure_notification_registrations_array, storage_domain_failure_notification_registrations_response);
11693  } else {
11694  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);
11695  }
11696 
11697  if (error != NULL) {
11698  break;
11699  }
11700 
11701  }
11702 
11703  response->storage_domain_failure_notification_registrations = (ds3_storage_domain_failure_notification_registration_response**)storage_domain_failure_notification_registrations_array->pdata;
11704  response->num_storage_domain_failure_notification_registrations = storage_domain_failure_notification_registrations_array->len;
11705  g_ptr_array_free(storage_domain_failure_notification_registrations_array, FALSE);
11706 
11707  xmlFreeDoc(doc);
11708 
11709  if (error == NULL) {
11710  *_response = response;
11711  } else {
11713  }
11714 
11715  return error;
11716 }
11718  xmlDocPtr doc;
11719  xmlNodePtr root;
11720  xmlNodePtr child_node;
11722  ds3_error* error = NULL;
11723  GPtrArray* system_failure_notification_registrations_array = g_ptr_array_new();
11724 
11725  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11726  if (error != NULL) {
11727  return error;
11728  }
11729 
11731 
11732  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11733  if (element_equal(child_node, "SystemFailureNotificationRegistration")) {
11734  ds3_system_failure_notification_registration_response* system_failure_notification_registrations_response = NULL;
11735  error = _parse_ds3_system_failure_notification_registration_response(client, doc, child_node, &system_failure_notification_registrations_response);
11736  response->system_failure_notification_registrations = (ds3_system_failure_notification_registration_response**)system_failure_notification_registrations_array->pdata;
11737  g_ptr_array_add(system_failure_notification_registrations_array, system_failure_notification_registrations_response);
11738  } else {
11739  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);
11740  }
11741 
11742  if (error != NULL) {
11743  break;
11744  }
11745 
11746  }
11747 
11748  response->system_failure_notification_registrations = (ds3_system_failure_notification_registration_response**)system_failure_notification_registrations_array->pdata;
11749  response->num_system_failure_notification_registrations = system_failure_notification_registrations_array->len;
11750  g_ptr_array_free(system_failure_notification_registrations_array, FALSE);
11751 
11752  xmlFreeDoc(doc);
11753 
11754  if (error == NULL) {
11755  *_response = response;
11756  } else {
11758  }
11759 
11760  return error;
11761 }
11763  xmlDocPtr doc;
11764  xmlNodePtr root;
11765  xmlNodePtr child_node;
11767  ds3_error* error = NULL;
11768  GPtrArray* tape_failure_notification_registrations_array = g_ptr_array_new();
11769 
11770  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11771  if (error != NULL) {
11772  return error;
11773  }
11774 
11776 
11777  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11778  if (element_equal(child_node, "TapeFailureNotificationRegistration")) {
11779  ds3_tape_failure_notification_registration_response* tape_failure_notification_registrations_response = NULL;
11780  error = _parse_ds3_tape_failure_notification_registration_response(client, doc, child_node, &tape_failure_notification_registrations_response);
11781  response->tape_failure_notification_registrations = (ds3_tape_failure_notification_registration_response**)tape_failure_notification_registrations_array->pdata;
11782  g_ptr_array_add(tape_failure_notification_registrations_array, tape_failure_notification_registrations_response);
11783  } else {
11784  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);
11785  }
11786 
11787  if (error != NULL) {
11788  break;
11789  }
11790 
11791  }
11792 
11793  response->tape_failure_notification_registrations = (ds3_tape_failure_notification_registration_response**)tape_failure_notification_registrations_array->pdata;
11794  response->num_tape_failure_notification_registrations = tape_failure_notification_registrations_array->len;
11795  g_ptr_array_free(tape_failure_notification_registrations_array, FALSE);
11796 
11797  xmlFreeDoc(doc);
11798 
11799  if (error == NULL) {
11800  *_response = response;
11801  } else {
11803  }
11804 
11805  return error;
11806 }
11808  xmlDocPtr doc;
11809  xmlNodePtr root;
11810  xmlNodePtr child_node;
11812  ds3_error* error = NULL;
11813  GPtrArray* tape_partition_failure_notification_registrations_array = g_ptr_array_new();
11814 
11815  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11816  if (error != NULL) {
11817  return error;
11818  }
11819 
11821 
11822  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11823  if (element_equal(child_node, "TapePartitionFailureNotificationRegistration")) {
11824  ds3_tape_partition_failure_notification_registration_response* tape_partition_failure_notification_registrations_response = NULL;
11825  error = _parse_ds3_tape_partition_failure_notification_registration_response(client, doc, child_node, &tape_partition_failure_notification_registrations_response);
11826  response->tape_partition_failure_notification_registrations = (ds3_tape_partition_failure_notification_registration_response**)tape_partition_failure_notification_registrations_array->pdata;
11827  g_ptr_array_add(tape_partition_failure_notification_registrations_array, tape_partition_failure_notification_registrations_response);
11828  } else {
11829  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);
11830  }
11831 
11832  if (error != NULL) {
11833  break;
11834  }
11835 
11836  }
11837 
11838  response->tape_partition_failure_notification_registrations = (ds3_tape_partition_failure_notification_registration_response**)tape_partition_failure_notification_registrations_array->pdata;
11839  response->num_tape_partition_failure_notification_registrations = tape_partition_failure_notification_registrations_array->len;
11840  g_ptr_array_free(tape_partition_failure_notification_registrations_array, FALSE);
11841 
11842  xmlFreeDoc(doc);
11843 
11844  if (error == NULL) {
11845  *_response = response;
11846  } else {
11848  }
11849 
11850  return error;
11851 }
11852 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) {
11853  xmlDocPtr doc;
11854  xmlNodePtr root;
11855  xmlNodePtr child_node;
11856  ds3_s3_object_list_response* response;
11857  ds3_error* error = NULL;
11858  GPtrArray* s3_objects_array = g_ptr_array_new();
11859 
11860  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11861  if (error != NULL) {
11862  return error;
11863  }
11864 
11865  response = g_new0(ds3_s3_object_list_response, 1);
11866 
11867  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11868  if (element_equal(child_node, "S3Object")) {
11869  ds3_s3_object_response* s3_objects_response = NULL;
11870  error = _parse_ds3_s3_object_response(client, doc, child_node, &s3_objects_response);
11871  response->s3_objects = (ds3_s3_object_response**)s3_objects_array->pdata;
11872  g_ptr_array_add(s3_objects_array, s3_objects_response);
11873  } else {
11874  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_s3_object_list_response [%s]\n", child_node->name, root->name);
11875  }
11876 
11877  if (error != NULL) {
11878  break;
11879  }
11880 
11881  }
11882 
11883  response->s3_objects = (ds3_s3_object_response**)s3_objects_array->pdata;
11884  response->num_s3_objects = s3_objects_array->len;
11885  g_ptr_array_free(s3_objects_array, FALSE);
11886 
11887  xmlFreeDoc(doc);
11888 
11889  if (error == NULL) {
11890  *_response = response;
11891  } else {
11893  }
11894 
11895  return error;
11896 }
11897 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) {
11898  xmlDocPtr doc;
11899  xmlNodePtr root;
11900  xmlNodePtr child_node;
11902  ds3_error* error = NULL;
11903  GPtrArray* pool_failures_array = g_ptr_array_new();
11904 
11905  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11906  if (error != NULL) {
11907  return error;
11908  }
11909 
11910  response = g_new0(ds3_pool_failure_list_response, 1);
11911 
11912  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11913  if (element_equal(child_node, "PoolFailure")) {
11914  ds3_pool_failure_response* pool_failures_response = NULL;
11915  error = _parse_ds3_pool_failure_response(client, doc, child_node, &pool_failures_response);
11916  response->pool_failures = (ds3_pool_failure_response**)pool_failures_array->pdata;
11917  g_ptr_array_add(pool_failures_array, pool_failures_response);
11918  } else {
11919  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_failure_list_response [%s]\n", child_node->name, root->name);
11920  }
11921 
11922  if (error != NULL) {
11923  break;
11924  }
11925 
11926  }
11927 
11928  response->pool_failures = (ds3_pool_failure_response**)pool_failures_array->pdata;
11929  response->num_pool_failures = pool_failures_array->len;
11930  g_ptr_array_free(pool_failures_array, FALSE);
11931 
11932  xmlFreeDoc(doc);
11933 
11934  if (error == NULL) {
11935  *_response = response;
11936  } else {
11938  }
11939 
11940  return error;
11941 }
11942 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) {
11943  xmlDocPtr doc;
11944  xmlNodePtr root;
11945  xmlNodePtr child_node;
11947  ds3_error* error = NULL;
11948  GPtrArray* pool_partitions_array = g_ptr_array_new();
11949 
11950  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11951  if (error != NULL) {
11952  return error;
11953  }
11954 
11955  response = g_new0(ds3_pool_partition_list_response, 1);
11956 
11957  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
11958  if (element_equal(child_node, "PoolPartition")) {
11959  ds3_pool_partition_response* pool_partitions_response = NULL;
11960  error = _parse_ds3_pool_partition_response(client, doc, child_node, &pool_partitions_response);
11961  response->pool_partitions = (ds3_pool_partition_response**)pool_partitions_array->pdata;
11962  g_ptr_array_add(pool_partitions_array, pool_partitions_response);
11963  } else {
11964  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_partition_list_response [%s]\n", child_node->name, root->name);
11965  }
11966 
11967  if (error != NULL) {
11968  break;
11969  }
11970 
11971  }
11972 
11973  response->pool_partitions = (ds3_pool_partition_response**)pool_partitions_array->pdata;
11974  response->num_pool_partitions = pool_partitions_array->len;
11975  g_ptr_array_free(pool_partitions_array, FALSE);
11976 
11977  xmlFreeDoc(doc);
11978 
11979  if (error == NULL) {
11980  *_response = response;
11981  } else {
11983  }
11984 
11985  return error;
11986 }
11987 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) {
11988  xmlDocPtr doc;
11989  xmlNodePtr root;
11990  xmlNodePtr child_node;
11991  ds3_pool_list_response* response;
11992  ds3_error* error = NULL;
11993  GPtrArray* pools_array = g_ptr_array_new();
11994 
11995  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
11996  if (error != NULL) {
11997  return error;
11998  }
11999 
12000  response = g_new0(ds3_pool_list_response, 1);
12001 
12002  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12003  if (element_equal(child_node, "Pool")) {
12004  ds3_pool_response* pools_response = NULL;
12005  error = _parse_ds3_pool_response(client, doc, child_node, &pools_response);
12006  response->pools = (ds3_pool_response**)pools_array->pdata;
12007  g_ptr_array_add(pools_array, pools_response);
12008  } else {
12009  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_pool_list_response [%s]\n", child_node->name, root->name);
12010  }
12011 
12012  if (error != NULL) {
12013  break;
12014  }
12015 
12016  }
12017 
12018  response->pools = (ds3_pool_response**)pools_array->pdata;
12019  response->num_pools = pools_array->len;
12020  g_ptr_array_free(pools_array, FALSE);
12021 
12022  xmlFreeDoc(doc);
12023 
12024  if (error == NULL) {
12025  *_response = response;
12026  } else {
12027  ds3_pool_list_response_free(response);
12028  }
12029 
12030  return error;
12031 }
12033  xmlDocPtr doc;
12034  xmlNodePtr root;
12035  xmlNodePtr child_node;
12037  ds3_error* error = NULL;
12038  GPtrArray* storage_domain_failures_array = g_ptr_array_new();
12039 
12040  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12041  if (error != NULL) {
12042  return error;
12043  }
12044 
12045  response = g_new0(ds3_storage_domain_failure_list_response, 1);
12046 
12047  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12048  if (element_equal(child_node, "StorageDomainFailure")) {
12049  ds3_storage_domain_failure_response* storage_domain_failures_response = NULL;
12050  error = _parse_ds3_storage_domain_failure_response(client, doc, child_node, &storage_domain_failures_response);
12051  response->storage_domain_failures = (ds3_storage_domain_failure_response**)storage_domain_failures_array->pdata;
12052  g_ptr_array_add(storage_domain_failures_array, storage_domain_failures_response);
12053  } else {
12054  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_failure_list_response [%s]\n", child_node->name, root->name);
12055  }
12056 
12057  if (error != NULL) {
12058  break;
12059  }
12060 
12061  }
12062 
12063  response->storage_domain_failures = (ds3_storage_domain_failure_response**)storage_domain_failures_array->pdata;
12064  response->num_storage_domain_failures = storage_domain_failures_array->len;
12065  g_ptr_array_free(storage_domain_failures_array, FALSE);
12066 
12067  xmlFreeDoc(doc);
12068 
12069  if (error == NULL) {
12070  *_response = response;
12071  } else {
12073  }
12074 
12075  return error;
12076 }
12078  xmlDocPtr doc;
12079  xmlNodePtr root;
12080  xmlNodePtr child_node;
12082  ds3_error* error = NULL;
12083  GPtrArray* storage_domain_members_array = g_ptr_array_new();
12084 
12085  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12086  if (error != NULL) {
12087  return error;
12088  }
12089 
12090  response = g_new0(ds3_storage_domain_member_list_response, 1);
12091 
12092  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12093  if (element_equal(child_node, "StorageDomainMember")) {
12094  ds3_storage_domain_member_response* storage_domain_members_response = NULL;
12095  error = _parse_ds3_storage_domain_member_response(client, doc, child_node, &storage_domain_members_response);
12096  response->storage_domain_members = (ds3_storage_domain_member_response**)storage_domain_members_array->pdata;
12097  g_ptr_array_add(storage_domain_members_array, storage_domain_members_response);
12098  } else {
12099  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_member_list_response [%s]\n", child_node->name, root->name);
12100  }
12101 
12102  if (error != NULL) {
12103  break;
12104  }
12105 
12106  }
12107 
12108  response->storage_domain_members = (ds3_storage_domain_member_response**)storage_domain_members_array->pdata;
12109  response->num_storage_domain_members = storage_domain_members_array->len;
12110  g_ptr_array_free(storage_domain_members_array, FALSE);
12111 
12112  xmlFreeDoc(doc);
12113 
12114  if (error == NULL) {
12115  *_response = response;
12116  } else {
12118  }
12119 
12120  return error;
12121 }
12122 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) {
12123  xmlDocPtr doc;
12124  xmlNodePtr root;
12125  xmlNodePtr child_node;
12127  ds3_error* error = NULL;
12128  GPtrArray* storage_domains_array = g_ptr_array_new();
12129 
12130  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12131  if (error != NULL) {
12132  return error;
12133  }
12134 
12135  response = g_new0(ds3_storage_domain_list_response, 1);
12136 
12137  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12138  if (element_equal(child_node, "StorageDomain")) {
12139  ds3_storage_domain_response* storage_domains_response = NULL;
12140  error = _parse_ds3_storage_domain_response(client, doc, child_node, &storage_domains_response);
12141  response->storage_domains = (ds3_storage_domain_response**)storage_domains_array->pdata;
12142  g_ptr_array_add(storage_domains_array, storage_domains_response);
12143  } else {
12144  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_storage_domain_list_response [%s]\n", child_node->name, root->name);
12145  }
12146 
12147  if (error != NULL) {
12148  break;
12149  }
12150 
12151  }
12152 
12153  response->storage_domains = (ds3_storage_domain_response**)storage_domains_array->pdata;
12154  response->num_storage_domains = storage_domains_array->len;
12155  g_ptr_array_free(storage_domains_array, FALSE);
12156 
12157  xmlFreeDoc(doc);
12158 
12159  if (error == NULL) {
12160  *_response = response;
12161  } else {
12163  }
12164 
12165  return error;
12166 }
12167 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) {
12168  xmlDocPtr doc;
12169  xmlNodePtr root;
12170  xmlNodePtr child_node;
12172  ds3_error* error = NULL;
12173  GPtrArray* system_failures_array = g_ptr_array_new();
12174 
12175  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12176  if (error != NULL) {
12177  return error;
12178  }
12179 
12180  response = g_new0(ds3_system_failure_list_response, 1);
12181 
12182  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12183  if (element_equal(child_node, "SystemFailure")) {
12184  ds3_system_failure_response* system_failures_response = NULL;
12185  error = _parse_ds3_system_failure_response(client, doc, child_node, &system_failures_response);
12186  response->system_failures = (ds3_system_failure_response**)system_failures_array->pdata;
12187  g_ptr_array_add(system_failures_array, system_failures_response);
12188  } else {
12189  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_system_failure_list_response [%s]\n", child_node->name, root->name);
12190  }
12191 
12192  if (error != NULL) {
12193  break;
12194  }
12195 
12196  }
12197 
12198  response->system_failures = (ds3_system_failure_response**)system_failures_array->pdata;
12199  response->num_system_failures = system_failures_array->len;
12200  g_ptr_array_free(system_failures_array, FALSE);
12201 
12202  xmlFreeDoc(doc);
12203 
12204  if (error == NULL) {
12205  *_response = response;
12206  } else {
12208  }
12209 
12210  return error;
12211 }
12213  xmlDocPtr doc;
12214  xmlNodePtr root;
12215  xmlNodePtr child_node;
12217  ds3_error* error = NULL;
12218  GPtrArray* tape_density_directives_array = g_ptr_array_new();
12219 
12220  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12221  if (error != NULL) {
12222  return error;
12223  }
12224 
12225  response = g_new0(ds3_tape_density_directive_list_response, 1);
12226 
12227  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12228  if (element_equal(child_node, "TapeDensityDirective")) {
12229  ds3_tape_density_directive_response* tape_density_directives_response = NULL;
12230  error = _parse_ds3_tape_density_directive_response(client, doc, child_node, &tape_density_directives_response);
12231  response->tape_density_directives = (ds3_tape_density_directive_response**)tape_density_directives_array->pdata;
12232  g_ptr_array_add(tape_density_directives_array, tape_density_directives_response);
12233  } else {
12234  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_density_directive_list_response [%s]\n", child_node->name, root->name);
12235  }
12236 
12237  if (error != NULL) {
12238  break;
12239  }
12240 
12241  }
12242 
12243  response->tape_density_directives = (ds3_tape_density_directive_response**)tape_density_directives_array->pdata;
12244  response->num_tape_density_directives = tape_density_directives_array->len;
12245  g_ptr_array_free(tape_density_directives_array, FALSE);
12246 
12247  xmlFreeDoc(doc);
12248 
12249  if (error == NULL) {
12250  *_response = response;
12251  } else {
12253  }
12254 
12255  return error;
12256 }
12257 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) {
12258  xmlDocPtr doc;
12259  xmlNodePtr root;
12260  xmlNodePtr child_node;
12261  ds3_tape_drive_list_response* response;
12262  ds3_error* error = NULL;
12263  GPtrArray* tape_drives_array = g_ptr_array_new();
12264 
12265  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12266  if (error != NULL) {
12267  return error;
12268  }
12269 
12270  response = g_new0(ds3_tape_drive_list_response, 1);
12271 
12272  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12273  if (element_equal(child_node, "TapeDrive")) {
12274  ds3_tape_drive_response* tape_drives_response = NULL;
12275  error = _parse_ds3_tape_drive_response(client, doc, child_node, &tape_drives_response);
12276  response->tape_drives = (ds3_tape_drive_response**)tape_drives_array->pdata;
12277  g_ptr_array_add(tape_drives_array, tape_drives_response);
12278  } else {
12279  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_drive_list_response [%s]\n", child_node->name, root->name);
12280  }
12281 
12282  if (error != NULL) {
12283  break;
12284  }
12285 
12286  }
12287 
12288  response->tape_drives = (ds3_tape_drive_response**)tape_drives_array->pdata;
12289  response->num_tape_drives = tape_drives_array->len;
12290  g_ptr_array_free(tape_drives_array, FALSE);
12291 
12292  xmlFreeDoc(doc);
12293 
12294  if (error == NULL) {
12295  *_response = response;
12296  } else {
12298  }
12299 
12300  return error;
12301 }
12303  xmlDocPtr doc;
12304  xmlNodePtr root;
12305  xmlNodePtr child_node;
12307  ds3_error* error = NULL;
12308  GPtrArray* detailed_tape_failures_array = g_ptr_array_new();
12309 
12310  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12311  if (error != NULL) {
12312  return error;
12313  }
12314 
12315  response = g_new0(ds3_detailed_tape_failure_list_response, 1);
12316 
12317  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12318  if (element_equal(child_node, "TapeFailure")) {
12319  ds3_detailed_tape_failure_response* detailed_tape_failures_response = NULL;
12320  error = _parse_ds3_detailed_tape_failure_response(client, doc, child_node, &detailed_tape_failures_response);
12321  response->detailed_tape_failures = (ds3_detailed_tape_failure_response**)detailed_tape_failures_array->pdata;
12322  g_ptr_array_add(detailed_tape_failures_array, detailed_tape_failures_response);
12323  } else {
12324  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_tape_failure_list_response [%s]\n", child_node->name, root->name);
12325  }
12326 
12327  if (error != NULL) {
12328  break;
12329  }
12330 
12331  }
12332 
12333  response->detailed_tape_failures = (ds3_detailed_tape_failure_response**)detailed_tape_failures_array->pdata;
12334  response->num_detailed_tape_failures = detailed_tape_failures_array->len;
12335  g_ptr_array_free(detailed_tape_failures_array, FALSE);
12336 
12337  xmlFreeDoc(doc);
12338 
12339  if (error == NULL) {
12340  *_response = response;
12341  } else {
12343  }
12344 
12345  return error;
12346 }
12347 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) {
12348  xmlDocPtr doc;
12349  xmlNodePtr root;
12350  xmlNodePtr child_node;
12352  ds3_error* error = NULL;
12353  GPtrArray* tape_libraries_array = g_ptr_array_new();
12354 
12355  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12356  if (error != NULL) {
12357  return error;
12358  }
12359 
12360  response = g_new0(ds3_tape_library_list_response, 1);
12361 
12362  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12363  if (element_equal(child_node, "TapeLibrary")) {
12364  ds3_tape_library_response* tape_libraries_response = NULL;
12365  error = _parse_ds3_tape_library_response(client, doc, child_node, &tape_libraries_response);
12366  response->tape_libraries = (ds3_tape_library_response**)tape_libraries_array->pdata;
12367  g_ptr_array_add(tape_libraries_array, tape_libraries_response);
12368  } else {
12369  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_library_list_response [%s]\n", child_node->name, root->name);
12370  }
12371 
12372  if (error != NULL) {
12373  break;
12374  }
12375 
12376  }
12377 
12378  response->tape_libraries = (ds3_tape_library_response**)tape_libraries_array->pdata;
12379  response->num_tape_libraries = tape_libraries_array->len;
12380  g_ptr_array_free(tape_libraries_array, FALSE);
12381 
12382  xmlFreeDoc(doc);
12383 
12384  if (error == NULL) {
12385  *_response = response;
12386  } else {
12388  }
12389 
12390  return error;
12391 }
12393  xmlDocPtr doc;
12394  xmlNodePtr root;
12395  xmlNodePtr child_node;
12397  ds3_error* error = NULL;
12398  GPtrArray* tape_partition_failures_array = g_ptr_array_new();
12399 
12400  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12401  if (error != NULL) {
12402  return error;
12403  }
12404 
12405  response = g_new0(ds3_tape_partition_failure_list_response, 1);
12406 
12407  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12408  if (element_equal(child_node, "TapePartitionFailure")) {
12409  ds3_tape_partition_failure_response* tape_partition_failures_response = NULL;
12410  error = _parse_ds3_tape_partition_failure_response(client, doc, child_node, &tape_partition_failures_response);
12411  response->tape_partition_failures = (ds3_tape_partition_failure_response**)tape_partition_failures_array->pdata;
12412  g_ptr_array_add(tape_partition_failures_array, tape_partition_failures_response);
12413  } else {
12414  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_failure_list_response [%s]\n", child_node->name, root->name);
12415  }
12416 
12417  if (error != NULL) {
12418  break;
12419  }
12420 
12421  }
12422 
12423  response->tape_partition_failures = (ds3_tape_partition_failure_response**)tape_partition_failures_array->pdata;
12424  response->num_tape_partition_failures = tape_partition_failures_array->len;
12425  g_ptr_array_free(tape_partition_failures_array, FALSE);
12426 
12427  xmlFreeDoc(doc);
12428 
12429  if (error == NULL) {
12430  *_response = response;
12431  } else {
12433  }
12434 
12435  return error;
12436 }
12437 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) {
12438  xmlDocPtr doc;
12439  xmlNodePtr root;
12440  xmlNodePtr child_node;
12442  ds3_error* error = NULL;
12443  GPtrArray* tape_partitions_array = g_ptr_array_new();
12444 
12445  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12446  if (error != NULL) {
12447  return error;
12448  }
12449 
12450  response = g_new0(ds3_tape_partition_list_response, 1);
12451 
12452  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12453  if (element_equal(child_node, "TapePartition")) {
12454  ds3_tape_partition_response* tape_partitions_response = NULL;
12455  error = _parse_ds3_tape_partition_response(client, doc, child_node, &tape_partitions_response);
12456  response->tape_partitions = (ds3_tape_partition_response**)tape_partitions_array->pdata;
12457  g_ptr_array_add(tape_partitions_array, tape_partitions_response);
12458  } else {
12459  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_partition_list_response [%s]\n", child_node->name, root->name);
12460  }
12461 
12462  if (error != NULL) {
12463  break;
12464  }
12465 
12466  }
12467 
12468  response->tape_partitions = (ds3_tape_partition_response**)tape_partitions_array->pdata;
12469  response->num_tape_partitions = tape_partitions_array->len;
12470  g_ptr_array_free(tape_partitions_array, FALSE);
12471 
12472  xmlFreeDoc(doc);
12473 
12474  if (error == NULL) {
12475  *_response = response;
12476  } else {
12478  }
12479 
12480  return error;
12481 }
12483  xmlDocPtr doc;
12484  xmlNodePtr root;
12485  xmlNodePtr child_node;
12487  ds3_error* error = NULL;
12488  GPtrArray* named_detailed_tape_partitions_array = g_ptr_array_new();
12489 
12490  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12491  if (error != NULL) {
12492  return error;
12493  }
12494 
12496 
12497  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12498  if (element_equal(child_node, "NamedDetailedTapePartition")) {
12499  ds3_named_detailed_tape_partition_response* named_detailed_tape_partitions_response = NULL;
12500  error = _parse_ds3_named_detailed_tape_partition_response(client, doc, child_node, &named_detailed_tape_partitions_response);
12501  response->named_detailed_tape_partitions = (ds3_named_detailed_tape_partition_response**)named_detailed_tape_partitions_array->pdata;
12502  g_ptr_array_add(named_detailed_tape_partitions_array, named_detailed_tape_partitions_response);
12503  } else {
12504  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);
12505  }
12506 
12507  if (error != NULL) {
12508  break;
12509  }
12510 
12511  }
12512 
12513  response->named_detailed_tape_partitions = (ds3_named_detailed_tape_partition_response**)named_detailed_tape_partitions_array->pdata;
12514  response->num_named_detailed_tape_partitions = named_detailed_tape_partitions_array->len;
12515  g_ptr_array_free(named_detailed_tape_partitions_array, FALSE);
12516 
12517  xmlFreeDoc(doc);
12518 
12519  if (error == NULL) {
12520  *_response = response;
12521  } else {
12523  }
12524 
12525  return error;
12526 }
12527 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) {
12528  xmlDocPtr doc;
12529  xmlNodePtr root;
12530  xmlNodePtr child_node;
12531  ds3_tape_list_response* response;
12532  ds3_error* error = NULL;
12533  GPtrArray* tapes_array = g_ptr_array_new();
12534 
12535  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12536  if (error != NULL) {
12537  return error;
12538  }
12539 
12540  response = g_new0(ds3_tape_list_response, 1);
12541 
12542  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12543  if (element_equal(child_node, "Tape")) {
12544  ds3_tape_response* tapes_response = NULL;
12545  error = _parse_ds3_tape_response(client, doc, child_node, &tapes_response);
12546  response->tapes = (ds3_tape_response**)tapes_array->pdata;
12547  g_ptr_array_add(tapes_array, tapes_response);
12548  } else {
12549  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_tape_list_response [%s]\n", child_node->name, root->name);
12550  }
12551 
12552  if (error != NULL) {
12553  break;
12554  }
12555 
12556  }
12557 
12558  response->tapes = (ds3_tape_response**)tapes_array->pdata;
12559  response->num_tapes = tapes_array->len;
12560  g_ptr_array_free(tapes_array, FALSE);
12561 
12562  xmlFreeDoc(doc);
12563 
12564  if (error == NULL) {
12565  *_response = response;
12566  } else {
12567  ds3_tape_list_response_free(response);
12568  }
12569 
12570  return error;
12571 }
12573  xmlDocPtr doc;
12574  xmlNodePtr root;
12575  xmlNodePtr child_node;
12577  ds3_error* error = NULL;
12578  GPtrArray* named_detailed_tapes_array = g_ptr_array_new();
12579 
12580  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12581  if (error != NULL) {
12582  return error;
12583  }
12584 
12585  response = g_new0(ds3_named_detailed_tape_list_response, 1);
12586 
12587  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12588  if (element_equal(child_node, "Tape")) {
12589  ds3_named_detailed_tape_response* named_detailed_tapes_response = NULL;
12590  error = _parse_ds3_named_detailed_tape_response(client, doc, child_node, &named_detailed_tapes_response);
12591  response->named_detailed_tapes = (ds3_named_detailed_tape_response**)named_detailed_tapes_array->pdata;
12592  g_ptr_array_add(named_detailed_tapes_array, named_detailed_tapes_response);
12593  } else {
12594  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_named_detailed_tape_list_response [%s]\n", child_node->name, root->name);
12595  }
12596 
12597  if (error != NULL) {
12598  break;
12599  }
12600 
12601  }
12602 
12603  response->named_detailed_tapes = (ds3_named_detailed_tape_response**)named_detailed_tapes_array->pdata;
12604  response->num_named_detailed_tapes = named_detailed_tapes_array->len;
12605  g_ptr_array_free(named_detailed_tapes_array, FALSE);
12606 
12607  xmlFreeDoc(doc);
12608 
12609  if (error == NULL) {
12610  *_response = response;
12611  } else {
12613  }
12614 
12615  return error;
12616 }
12617 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) {
12618  xmlDocPtr doc;
12619  xmlNodePtr root;
12620  xmlNodePtr child_node;
12622  ds3_error* error = NULL;
12623  GPtrArray* spectra_users_array = g_ptr_array_new();
12624 
12625  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12626  if (error != NULL) {
12627  return error;
12628  }
12629 
12630  response = g_new0(ds3_spectra_user_list_response, 1);
12631 
12632  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12633  if (element_equal(child_node, "User")) {
12634  ds3_spectra_user_response* spectra_users_response = NULL;
12635  error = _parse_ds3_spectra_user_response(client, doc, child_node, &spectra_users_response);
12636  response->spectra_users = (ds3_spectra_user_response**)spectra_users_array->pdata;
12637  g_ptr_array_add(spectra_users_array, spectra_users_response);
12638  } else {
12639  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_spectra_user_list_response [%s]\n", child_node->name, root->name);
12640  }
12641 
12642  if (error != NULL) {
12643  break;
12644  }
12645 
12646  }
12647 
12648  response->spectra_users = (ds3_spectra_user_response**)spectra_users_array->pdata;
12649  response->num_spectra_users = spectra_users_array->len;
12650  g_ptr_array_free(spectra_users_array, FALSE);
12651 
12652  xmlFreeDoc(doc);
12653 
12654  if (error == NULL) {
12655  *_response = response;
12656  } else {
12658  }
12659 
12660  return error;
12661 }
12662 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) {
12663  xmlDocPtr doc;
12664  xmlNodePtr root;
12665  xmlNodePtr child_node;
12667  ds3_error* error = NULL;
12668 
12669  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12670  if (error != NULL) {
12671  return error;
12672  }
12673 
12674  response = g_new0(ds3_physical_placement_response, 1);
12675 
12676  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12677  if (element_equal(child_node, "Pools")) {
12678  GPtrArray* pools_array;
12679  error = _parse_ds3_pool_response_array(client, doc, child_node, &pools_array);
12680  response->pools = (ds3_pool_response**)pools_array->pdata;
12681  response->num_pools = pools_array->len;
12682  g_ptr_array_free(pools_array, FALSE);
12683  } else if (element_equal(child_node, "Tapes")) {
12684  GPtrArray* tapes_array;
12685  error = _parse_ds3_tape_response_array(client, doc, child_node, &tapes_array);
12686  response->tapes = (ds3_tape_response**)tapes_array->pdata;
12687  response->num_tapes = tapes_array->len;
12688  g_ptr_array_free(tapes_array, FALSE);
12689  } else {
12690  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_physical_placement_response [%s]\n", child_node->name, root->name);
12691  }
12692 
12693  if (error != NULL) {
12694  break;
12695  }
12696 
12697  }
12698 
12699 
12700  xmlFreeDoc(doc);
12701 
12702  if (error == NULL) {
12703  *_response = response;
12704  } else {
12706  }
12707 
12708  return error;
12709 }
12711  xmlDocPtr doc;
12712  xmlNodePtr root;
12713  xmlNodePtr child_node;
12715  ds3_error* error = NULL;
12716 
12717  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12718  if (error != NULL) {
12719  return error;
12720  }
12721 
12722  response = g_new0(ds3_capacity_summary_container_response, 1);
12723 
12724  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12725  if (element_equal(child_node, "Pool")) {
12726  error = _parse_ds3_storage_domain_capacity_summary_response(client, doc, child_node, &response->pool);
12727  } else if (element_equal(child_node, "Tape")) {
12728  error = _parse_ds3_storage_domain_capacity_summary_response(client, doc, child_node, &response->tape);
12729  } else {
12730  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_capacity_summary_container_response [%s]\n", child_node->name, root->name);
12731  }
12732 
12733  if (error != NULL) {
12734  break;
12735  }
12736 
12737  }
12738 
12739 
12740  xmlFreeDoc(doc);
12741 
12742  if (error == NULL) {
12743  *_response = response;
12744  } else {
12746  }
12747 
12748  return error;
12749 }
12750 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) {
12751  xmlDocPtr doc;
12752  xmlNodePtr root;
12753  xmlNodePtr child_node;
12755  ds3_error* error = NULL;
12756  GPtrArray* objects_array = g_ptr_array_new();
12757 
12758  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
12759  if (error != NULL) {
12760  return error;
12761  }
12762 
12763  response = g_new0(ds3_bulk_object_list_response, 1);
12764 
12765  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12766  if (element_equal(child_node, "Object")) {
12767  ds3_bulk_object_response* objects_response = NULL;
12768  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
12769  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12770  g_ptr_array_add(objects_array, objects_response);
12771  } else {
12772  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_bulk_object_list_response [%s]\n", child_node->name, root->name);
12773  }
12774 
12775  if (error != NULL) {
12776  break;
12777  }
12778 
12779  }
12780 
12781  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12782  response->num_objects = objects_array->len;
12783  g_ptr_array_free(objects_array, FALSE);
12784 
12785  xmlFreeDoc(doc);
12786 
12787  if (error == NULL) {
12788  *_response = response;
12789  } else {
12791  }
12792 
12793  return error;
12794 }
12796  xmlDocPtr doc;
12797  xmlNodePtr root;
12798  xmlNodePtr child_node;
12800  ds3_error* error = NULL;
12801 
12802  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListAllMyBucketsResult");
12803  if (error != NULL) {
12804  return error;
12805  }
12806 
12807  response = g_new0(ds3_list_all_my_buckets_result_response, 1);
12808 
12809  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12810  if (element_equal(child_node, "Buckets")) {
12811  GPtrArray* buckets_array;
12812  error = _parse_ds3_bucket_details_response_array(client, doc, child_node, &buckets_array);
12813  response->buckets = (ds3_bucket_details_response**)buckets_array->pdata;
12814  response->num_buckets = buckets_array->len;
12815  g_ptr_array_free(buckets_array, FALSE);
12816  } else if (element_equal(child_node, "Owner")) {
12817  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
12818  } else {
12819  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);
12820  }
12821 
12822  if (error != NULL) {
12823  break;
12824  }
12825 
12826  }
12827 
12828 
12829  xmlFreeDoc(doc);
12830 
12831  if (error == NULL) {
12832  *_response = response;
12833  } else {
12835  }
12836 
12837  return error;
12838 }
12839 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) {
12840  xmlDocPtr doc;
12841  xmlNodePtr root;
12842  xmlNodePtr child_node;
12843  ds3_delete_result_response* response;
12844  ds3_error* error = NULL;
12845  GPtrArray* deleted_objects_array = g_ptr_array_new();
12846  GPtrArray* errors_array = g_ptr_array_new();
12847 
12848  error = _get_request_xml_nodes(xml_blob, &doc, &root, "DeleteResult");
12849  if (error != NULL) {
12850  return error;
12851  }
12852 
12853  response = g_new0(ds3_delete_result_response, 1);
12854 
12855  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12856  if (element_equal(child_node, "Deleted")) {
12857  ds3_s3_object_to_delete_response* deleted_objects_response = NULL;
12858  error = _parse_ds3_s3_object_to_delete_response(client, doc, child_node, &deleted_objects_response);
12859  response->deleted_objects = (ds3_s3_object_to_delete_response**)deleted_objects_array->pdata;
12860  g_ptr_array_add(deleted_objects_array, deleted_objects_response);
12861  } else if (element_equal(child_node, "Error")) {
12862  ds3_delete_object_error_response* errors_response = NULL;
12863  error = _parse_ds3_delete_object_error_response(client, doc, child_node, &errors_response);
12864  response->errors = (ds3_delete_object_error_response**)errors_array->pdata;
12865  g_ptr_array_add(errors_array, errors_response);
12866  } else {
12867  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_delete_result_response [%s]\n", child_node->name, root->name);
12868  }
12869 
12870  if (error != NULL) {
12871  break;
12872  }
12873 
12874  }
12875 
12876  response->deleted_objects = (ds3_s3_object_to_delete_response**)deleted_objects_array->pdata;
12877  response->num_deleted_objects = deleted_objects_array->len;
12878  g_ptr_array_free(deleted_objects_array, FALSE);
12879  response->errors = (ds3_delete_object_error_response**)errors_array->pdata;
12880  response->num_errors = errors_array->len;
12881  g_ptr_array_free(errors_array, FALSE);
12882 
12883  xmlFreeDoc(doc);
12884 
12885  if (error == NULL) {
12886  *_response = response;
12887  } else {
12889  }
12890 
12891  return error;
12892 }
12893 static ds3_error* _parse_top_level_ds3_objects_response(const ds3_client* client, const ds3_request* request, ds3_objects_response** _response, GByteArray* xml_blob) {
12894  xmlDocPtr doc;
12895  xmlNodePtr root;
12896  xmlNodePtr child_node;
12897  struct _xmlAttr* attribute;
12898  ds3_objects_response* response;
12899  ds3_error* error = NULL;
12900  GPtrArray* objects_array = g_ptr_array_new();
12901 
12902  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Objects");
12903  if (error != NULL) {
12904  return error;
12905  }
12906 
12907  response = g_new0(ds3_objects_response, 1);
12908  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
12909  if (attribute_equal(attribute, "ChunkId") == true) {
12910  response->chunk_id = xml_get_string_from_attribute(doc, attribute);
12911  } else if (attribute_equal(attribute, "ChunkNumber") == true) {
12912  response->chunk_number = xml_get_uint16_from_attribute(doc, attribute);
12913  } else if (attribute_equal(attribute, "NodeId") == true) {
12914  response->node_id = xml_get_string_from_attribute(doc, attribute);
12915  } else {
12916  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_objects_response [%s]\n", attribute->name, root->name);
12917  }
12918 
12919  if (error != NULL) {
12920  break;
12921  }
12922 
12923  }
12924 
12925  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
12926  if (element_equal(child_node, "Object")) {
12927  ds3_bulk_object_response* objects_response = NULL;
12928  error = _parse_ds3_bulk_object_response(client, doc, child_node, &objects_response);
12929  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12930  g_ptr_array_add(objects_array, objects_response);
12931  } else {
12932  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_objects_response [%s]\n", child_node->name, root->name);
12933  }
12934 
12935  if (error != NULL) {
12936  break;
12937  }
12938 
12939  }
12940 
12941  response->objects = (ds3_bulk_object_response**)objects_array->pdata;
12942  response->num_objects = objects_array->len;
12943  g_ptr_array_free(objects_array, FALSE);
12944 
12945  xmlFreeDoc(doc);
12946 
12947  if (error == NULL) {
12948  *_response = response;
12949  } else {
12950  ds3_objects_response_free(response);
12951  }
12952 
12953  return error;
12954 }
12955 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) {
12956  xmlDocPtr doc;
12957  xmlNodePtr root;
12958  xmlNodePtr child_node;
12959  struct _xmlAttr* attribute;
12961  ds3_error* error = NULL;
12962  GPtrArray* objects_array = g_ptr_array_new();
12963 
12964  error = _get_request_xml_nodes(xml_blob, &doc, &root, "MasterObjectList");
12965  if (error != NULL) {
12966  return error;
12967  }
12968 
12969  response = g_new0(ds3_master_object_list_response, 1);
12970  for (attribute = root->properties; attribute != NULL; attribute = attribute->next) {
12971  if (attribute_equal(attribute, "Aggregating") == true) {
12972  response->aggregating = xml_get_bool_from_attribute(client->log, doc, attribute);
12973  } else if (attribute_equal(attribute, "BucketName") == true) {
12974  response->bucket_name = xml_get_string_from_attribute(doc, attribute);
12975  } else if (attribute_equal(attribute, "CachedSizeInBytes") == true) {
12976  response->cached_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
12977  } else if (attribute_equal(attribute, "ChunkClientProcessingOrderGuarantee") == true) {
12978  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
12979  if (text == NULL) {
12980  continue;
12981  }
12983  xmlFree(text);
12984  } else if (attribute_equal(attribute, "CompletedSizeInBytes") == true) {
12985  response->completed_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
12986  } else if (attribute_equal(attribute, "JobId") == true) {
12987  response->job_id = xml_get_string_from_attribute(doc, attribute);
12988  } else if (attribute_equal(attribute, "Naked") == true) {
12989  response->naked = xml_get_bool_from_attribute(client->log, doc, attribute);
12990  } else if (attribute_equal(attribute, "Name") == true) {
12991  response->name = xml_get_string_from_attribute(doc, attribute);
12992  } else if (attribute_equal(attribute, "OriginalSizeInBytes") == true) {
12993  response->original_size_in_bytes = xml_get_uint64_from_attribute(doc, attribute);
12994  } else if (attribute_equal(attribute, "Priority") == true) {
12995  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
12996  if (text == NULL) {
12997  continue;
12998  }
12999  response->priority = _match_ds3_priority(client->log, text);
13000  xmlFree(text);
13001  } else if (attribute_equal(attribute, "RequestType") == true) {
13002  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
13003  if (text == NULL) {
13004  continue;
13005  }
13006  response->request_type = _match_ds3_job_request_type(client->log, text);
13007  xmlFree(text);
13008  } else if (attribute_equal(attribute, "StartDate") == true) {
13009  response->start_date = xml_get_string_from_attribute(doc, attribute);
13010  } else if (attribute_equal(attribute, "Status") == true) {
13011  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
13012  if (text == NULL) {
13013  continue;
13014  }
13015  response->status = _match_ds3_job_status(client->log, text);
13016  xmlFree(text);
13017  } else if (attribute_equal(attribute, "UserId") == true) {
13018  response->user_id = xml_get_string_from_attribute(doc, attribute);
13019  } else if (attribute_equal(attribute, "UserName") == true) {
13020  response->user_name = xml_get_string_from_attribute(doc, attribute);
13021  } else if (attribute_equal(attribute, "WriteOptimization") == true) {
13022  xmlChar* text = xmlNodeListGetString(doc, attribute->children, 1);
13023  if (text == NULL) {
13024  continue;
13025  }
13026  response->write_optimization = _match_ds3_write_optimization(client->log, text);
13027  xmlFree(text);
13028  } else {
13029  ds3_log_message(client->log, DS3_ERROR, "Unknown attribute[%s] of ds3_master_object_list_response [%s]\n", attribute->name, root->name);
13030  }
13031 
13032  if (error != NULL) {
13033  break;
13034  }
13035 
13036  }
13037 
13038  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13039  if (element_equal(child_node, "Nodes")) {
13040  GPtrArray* nodes_array;
13041  error = _parse_ds3_job_node_response_array(client, doc, child_node, &nodes_array);
13042  response->nodes = (ds3_job_node_response**)nodes_array->pdata;
13043  response->num_nodes = nodes_array->len;
13044  g_ptr_array_free(nodes_array, FALSE);
13045  } else if (element_equal(child_node, "Objects")) {
13046  ds3_objects_response* objects_response = NULL;
13047  error = _parse_ds3_objects_response(client, doc, child_node, &objects_response);
13048  response->objects = (ds3_objects_response**)objects_array->pdata;
13049  g_ptr_array_add(objects_array, objects_response);
13050  } else {
13051  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_master_object_list_response [%s]\n", child_node->name, root->name);
13052  }
13053 
13054  if (error != NULL) {
13055  break;
13056  }
13057 
13058  }
13059 
13060  response->objects = (ds3_objects_response**)objects_array->pdata;
13061  response->num_objects = objects_array->len;
13062  g_ptr_array_free(objects_array, FALSE);
13063 
13064  xmlFreeDoc(doc);
13065 
13066  if (error == NULL) {
13067  *_response = response;
13068  } else {
13070  }
13071 
13072  return error;
13073 }
13074 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) {
13075  xmlDocPtr doc;
13076  xmlNodePtr root;
13077  xmlNodePtr child_node;
13078  ds3_job_list_response* response;
13079  ds3_error* error = NULL;
13080  GPtrArray* jobs_array = g_ptr_array_new();
13081 
13082  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Jobs");
13083  if (error != NULL) {
13084  return error;
13085  }
13086 
13087  response = g_new0(ds3_job_list_response, 1);
13088 
13089  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13090  if (element_equal(child_node, "Job")) {
13091  ds3_job_response* jobs_response = NULL;
13092  error = _parse_ds3_job_response(client, doc, child_node, &jobs_response);
13093  response->jobs = (ds3_job_response**)jobs_array->pdata;
13094  g_ptr_array_add(jobs_array, jobs_response);
13095  } else {
13096  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_job_list_response [%s]\n", child_node->name, root->name);
13097  }
13098 
13099  if (error != NULL) {
13100  break;
13101  }
13102 
13103  }
13104 
13105  response->jobs = (ds3_job_response**)jobs_array->pdata;
13106  response->num_jobs = jobs_array->len;
13107  g_ptr_array_free(jobs_array, FALSE);
13108 
13109  xmlFreeDoc(doc);
13110 
13111  if (error == NULL) {
13112  *_response = response;
13113  } else {
13114  ds3_job_list_response_free(response);
13115  }
13116 
13117  return error;
13118 }
13119 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) {
13120  xmlDocPtr doc;
13121  xmlNodePtr root;
13122  xmlNodePtr child_node;
13124  ds3_error* error = NULL;
13125  GPtrArray* parts_array = g_ptr_array_new();
13126 
13127  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListPartsResult");
13128  if (error != NULL) {
13129  return error;
13130  }
13131 
13132  response = g_new0(ds3_list_parts_result_response, 1);
13133 
13134  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13135  if (element_equal(child_node, "Bucket")) {
13136  response->bucket = xml_get_string(doc, child_node);
13137  } else if (element_equal(child_node, "Key")) {
13138  response->key = xml_get_string(doc, child_node);
13139  } else if (element_equal(child_node, "MaxParts")) {
13140  response->max_parts = xml_get_uint16(doc, child_node);
13141  } else if (element_equal(child_node, "NextPartNumberMarker")) {
13142  response->next_part_number_marker = xml_get_uint16(doc, child_node);
13143  } else if (element_equal(child_node, "Owner")) {
13144  error = _parse_ds3_user_response(client, doc, child_node, &response->owner);
13145  } else if (element_equal(child_node, "PartNumberMarker")) {
13146  response->part_number_marker = xml_get_uint16(doc, child_node);
13147  } else if (element_equal(child_node, "Part")) {
13148  ds3_multi_part_upload_part_response* parts_response = NULL;
13149  error = _parse_ds3_multi_part_upload_part_response(client, doc, child_node, &parts_response);
13150  response->parts = (ds3_multi_part_upload_part_response**)parts_array->pdata;
13151  g_ptr_array_add(parts_array, parts_response);
13152  } else if (element_equal(child_node, "IsTruncated")) {
13153  response->truncated = xml_get_bool(client->log, doc, child_node);
13154  } else if (element_equal(child_node, "UploadId")) {
13155  response->upload_id = xml_get_string(doc, child_node);
13156  } else {
13157  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_list_parts_result_response [%s]\n", child_node->name, root->name);
13158  }
13159 
13160  if (error != NULL) {
13161  break;
13162  }
13163 
13164  }
13165 
13166  response->parts = (ds3_multi_part_upload_part_response**)parts_array->pdata;
13167  response->num_parts = parts_array->len;
13168  g_ptr_array_free(parts_array, FALSE);
13169 
13170  xmlFreeDoc(doc);
13171 
13172  if (error == NULL) {
13173  *_response = response;
13174  } else {
13176  }
13177 
13178  return error;
13179 }
13181  xmlDocPtr doc;
13182  xmlNodePtr root;
13183  xmlNodePtr child_node;
13185  ds3_error* error = NULL;
13186  GPtrArray* detailed_s3_objects_array = g_ptr_array_new();
13187 
13188  error = _get_request_xml_nodes(xml_blob, &doc, &root, "Data");
13189  if (error != NULL) {
13190  return error;
13191  }
13192 
13193  response = g_new0(ds3_detailed_s3_object_list_response, 1);
13194 
13195  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13196  if (element_equal(child_node, "DetailedS3Object")) {
13197  ds3_detailed_s3_object_response* detailed_s3_objects_response = NULL;
13198  error = _parse_ds3_detailed_s3_object_response(client, doc, child_node, &detailed_s3_objects_response);
13199  response->detailed_s3_objects = (ds3_detailed_s3_object_response**)detailed_s3_objects_array->pdata;
13200  g_ptr_array_add(detailed_s3_objects_array, detailed_s3_objects_response);
13201  } else {
13202  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_detailed_s3_object_list_response [%s]\n", child_node->name, root->name);
13203  }
13204 
13205  if (error != NULL) {
13206  break;
13207  }
13208 
13209  }
13210 
13211  response->detailed_s3_objects = (ds3_detailed_s3_object_response**)detailed_s3_objects_array->pdata;
13212  response->num_detailed_s3_objects = detailed_s3_objects_array->len;
13213  g_ptr_array_free(detailed_s3_objects_array, FALSE);
13214 
13215  xmlFreeDoc(doc);
13216 
13217  if (error == NULL) {
13218  *_response = response;
13219  } else {
13221  }
13222 
13223  return error;
13224 }
13225 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) {
13226  xmlDocPtr doc;
13227  xmlNodePtr root;
13228  xmlNodePtr child_node;
13230  ds3_error* error = NULL;
13231  GPtrArray* objects_array = g_ptr_array_new();
13232 
13233  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListBucketResult");
13234  if (error != NULL) {
13235  return error;
13236  }
13237 
13238  response = g_new0(ds3_list_bucket_result_response, 1);
13239 
13240  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13241  if (element_equal(child_node, "CommonPrefixes")) {
13242  xmlNodePtr loop_node;
13243  GPtrArray* common_prefixes_array = g_ptr_array_new();
13244  int num_nodes = 0;
13245  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
13246  ds3_str* common_prefixes = xml_get_string(doc, loop_node);
13247  g_ptr_array_add(common_prefixes_array, common_prefixes);
13248  }
13249  response->common_prefixes = (ds3_str**)common_prefixes_array->pdata;
13250  response->num_common_prefixes = common_prefixes_array->len;
13251  g_ptr_array_free(common_prefixes_array, FALSE);
13252  } else if (element_equal(child_node, "CreationDate")) {
13253  response->creation_date = xml_get_string(doc, child_node);
13254  } else if (element_equal(child_node, "Delimiter")) {
13255  response->delimiter = xml_get_string(doc, child_node);
13256  } else if (element_equal(child_node, "Marker")) {
13257  response->marker = xml_get_string(doc, child_node);
13258  } else if (element_equal(child_node, "MaxKeys")) {
13259  response->max_keys = xml_get_uint16(doc, child_node);
13260  } else if (element_equal(child_node, "Name")) {
13261  response->name = xml_get_string(doc, child_node);
13262  } else if (element_equal(child_node, "NextMarker")) {
13263  response->next_marker = xml_get_string(doc, child_node);
13264  } else if (element_equal(child_node, "Contents")) {
13265  ds3_contents_response* objects_response = NULL;
13266  error = _parse_ds3_contents_response(client, doc, child_node, &objects_response);
13267  response->objects = (ds3_contents_response**)objects_array->pdata;
13268  g_ptr_array_add(objects_array, objects_response);
13269  } else if (element_equal(child_node, "Prefix")) {
13270  response->prefix = xml_get_string(doc, child_node);
13271  } else if (element_equal(child_node, "IsTruncated")) {
13272  response->truncated = xml_get_bool(client->log, doc, child_node);
13273  } else {
13274  ds3_log_message(client->log, DS3_ERROR, "Unknown node[%s] of ds3_list_bucket_result_response [%s]\n", child_node->name, root->name);
13275  }
13276 
13277  if (error != NULL) {
13278  break;
13279  }
13280 
13281  }
13282 
13283  response->objects = (ds3_contents_response**)objects_array->pdata;
13284  response->num_objects = objects_array->len;
13285  g_ptr_array_free(objects_array, FALSE);
13286 
13287  xmlFreeDoc(doc);
13288 
13289  if (error == NULL) {
13290  *_response = response;
13291  } else {
13293  }
13294 
13295  return error;
13296 }
13298  xmlDocPtr doc;
13299  xmlNodePtr root;
13300  xmlNodePtr child_node;
13302  ds3_error* error = NULL;
13303  GPtrArray* uploads_array = g_ptr_array_new();
13304 
13305  error = _get_request_xml_nodes(xml_blob, &doc, &root, "ListMultipartUploadsResult");
13306  if (error != NULL) {
13307  return error;
13308  }
13309 
13310  response = g_new0(ds3_list_multi_part_uploads_result_response, 1);
13311 
13312  for (child_node = root->xmlChildrenNode; child_node != NULL; child_node = child_node->next) {
13313  if (element_equal(child_node, "Bucket")) {
13314  response->bucket = xml_get_string(doc, child_node);
13315  } else if (element_equal(child_node, "CommonPrefixes")) {
13316  xmlNodePtr loop_node;
13317  GPtrArray* common_prefixes_array = g_ptr_array_new();
13318  int num_nodes = 0;
13319  for (loop_node = child_node->xmlChildrenNode; loop_node != NULL; loop_node = loop_node->next, num_nodes++) {
13320  ds3_str* common_prefixes = xml_get_string(doc, loop_node);
13321  g_ptr_array_add(common_prefixes_array, common_prefixes);
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  } else if (element_equal(child_node, "Delimiter")) {
13327  response->delimiter = xml_get_string(doc, child_node);
13328  } else if (element_equal(child_node, "KeyMarker")) {
13329  response->key_marker = xml_get_string(doc, child_node);
13330  } else if (element_equal(child_node, "MaxUploads")) {
13331  response->max_uploads = xml_get_uint16(doc, child_node);
13332  } else if (element_equal(child_node, "NextKeyMarker")) {
13333  response->next_key_marker = xml_get_string(doc, child_node);
13334  } else if (element_equal(child_node, "NextUploadIdMarker")) {
13335  response->next_upload_id_marker = xml_get_string(doc, child_node);
13336  } else if (element_equal(child_node, "Prefix")) {
13337  response->prefix = xml_get_string(doc, child_node);
13338  } else if (element_equal(child_node, "IsTruncated")) {
13339  response->truncated = xml_get_bool(client->log, doc, child_node);
13340  } else if (element_equal(child_node, "UploadIdMarker")) {
13341  response->upload_id_marker = xml_get_string(doc, child_node);
13342  } else if (element_equal(child_node, "Upload")) {
13343  ds3_multi_part_upload_response* uploads_response = NULL;
13344  error = _parse_ds3_multi_part_upload_response(client, doc, child_node, &uploads_response);
13345  response->uploads = (ds3_multi_part_upload_response**)uploads_array->pdata;
13346  g_ptr_array_add(uploads_array, uploads_response);
13347  } else {
13348  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);
13349  }
13350 
13351  if (error != NULL) {
13352  break;
13353  }
13354 
13355  }
13356 
13357  response->uploads = (ds3_multi_part_upload_response**)uploads_array->pdata;
13358  response->num_uploads = uploads_array->len;
13359  g_ptr_array_free(uploads_array, FALSE);
13360 
13361  xmlFreeDoc(doc);
13362 
13363  if (error == NULL) {
13364  *_response = response;
13365  } else {
13367  }
13368 
13369  return error;
13370 }
13371 
13372 ds3_error* ds3_head_bucket_request(const ds3_client* client, const ds3_request* request) {
13373  if (client == NULL || request == NULL) {
13374  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "All arguments must be filled in for request processing");
13375  }
13376  if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13377  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13378  }
13379 
13380  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13381 }
13382 
13383 ds3_error* ds3_head_object_request(const ds3_client* client, const ds3_request* request, ds3_metadata** _metadata) {
13384  ds3_error* error;
13385  ds3_string_multimap* return_headers;
13386  ds3_metadata* metadata;
13387 
13388  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13389  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13390  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13391  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13392  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13393  }
13394 
13395  error = _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, &return_headers);
13396 
13397  if (error == NULL) {
13398  metadata = _init_metadata(return_headers);
13399  *_metadata = metadata;
13400  ds3_string_multimap_free(return_headers);
13401  }
13402 
13403  return error;
13404 }
13405 
13406 
13407 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) {
13408  ds3_error* error;
13409  ds3_string_multimap* return_headers;
13410  ds3_metadata* metadata;
13411 
13412  error = _internal_request_dispatcher(client, request, user_data, callback, NULL, NULL, &return_headers);
13413  if (error == NULL) {
13414  metadata = _init_metadata(return_headers);
13415  *_metadata = metadata;
13416  ds3_string_multimap_free(return_headers);
13417  }
13418 
13419  return error;
13420 }
13421 
13423 
13424  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13425  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13426  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13427  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13428  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13429  }
13430 
13431  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13432 }
13434  ds3_error* error;
13435  ds3_xml_send_buff send_buff;
13436  GByteArray* xml_blob;
13437 
13438  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13439  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13440  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13441  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13442  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13443  }
13444 
13445  error = _init_request_payload(request, &send_buff, COMPLETE_MPU);
13446  if (error != NULL) return error;
13447 
13448  xml_blob = g_byte_array_new();
13449  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
13450 
13451  // Clean up the data sent to the server
13452  xmlFree(send_buff.buff);
13453 
13454  if (error != NULL) {
13455  g_byte_array_free(xml_blob, TRUE);
13456  return error;
13457  }
13458 
13459  return _parse_top_level_ds3_complete_multipart_upload_result_response(client, request, response, xml_blob);
13460 }
13461 ds3_error* ds3_put_bucket_request(const ds3_client* client, const ds3_request* request) {
13462 
13463  if (request->path->size < 2) {
13464  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13465  }
13466 
13467  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13468 }
13469 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*)) {
13470 
13471  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13472  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13473  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13474  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13475  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13476  }
13477 
13478  return _internal_request_dispatcher(client, request, NULL, NULL, user_data, callback, NULL);
13479 }
13480 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*)) {
13481 
13482  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13483  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13484  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13485  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13486  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13487  }
13488 
13489  return _internal_request_dispatcher(client, request, NULL, NULL, user_data, callback, NULL);
13490 }
13492 
13493  if (request->path->size < 2) {
13494  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13495  }
13496 
13497  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13498 }
13500 
13501  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13502  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13503  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13504  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13505  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13506  }
13507 
13508  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13509 }
13511  ds3_error* error;
13512  ds3_xml_send_buff send_buff;
13513  GByteArray* xml_blob;
13514 
13515  if (request->path->size < 2) {
13516  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13517  }
13518 
13519  error = _init_request_payload(request, &send_buff, STRING_LIST);
13520  if (error != NULL) return error;
13521 
13522  xml_blob = g_byte_array_new();
13523  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
13524 
13525  // Clean up the data sent to the server
13526  xmlFree(send_buff.buff);
13527 
13528  if (error != NULL) {
13529  g_byte_array_free(xml_blob, TRUE);
13530  return error;
13531  }
13532 
13533  return _parse_top_level_ds3_delete_result_response(client, request, response, xml_blob);
13534 }
13536  ds3_error* error;
13537  GByteArray* xml_blob;
13538 
13539  if (request->path->size < 2) {
13540  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13541  }
13542 
13543  xml_blob = g_byte_array_new();
13544  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13545  if (error != NULL) {
13546  g_byte_array_free(xml_blob, TRUE);
13547  return error;
13548  }
13549 
13550  return _parse_top_level_ds3_list_bucket_result_response(client, request, response, xml_blob);
13551 }
13553  ds3_error* error;
13554  GByteArray* xml_blob;
13555 
13556 
13557 
13558  xml_blob = g_byte_array_new();
13559  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13560  if (error != NULL) {
13561  g_byte_array_free(xml_blob, TRUE);
13562  return error;
13563  }
13564 
13565  return _parse_top_level_ds3_list_all_my_buckets_result_response(client, request, response, xml_blob);
13566 }
13567 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*)) {
13568 
13569  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13570  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13571  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13572  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13573  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13574  }
13575 
13576  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13577 }
13579  ds3_error* error;
13580  GByteArray* xml_blob;
13581 
13582  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13583  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13584  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13585  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13586  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13587  }
13588 
13589  xml_blob = g_byte_array_new();
13590  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13591  if (error != NULL) {
13592  g_byte_array_free(xml_blob, TRUE);
13593  return error;
13594  }
13595 
13596  return _parse_top_level_ds3_initiate_multipart_upload_result_response(client, request, response, xml_blob);
13597 }
13599  ds3_error* error;
13600  GByteArray* xml_blob;
13601 
13602  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13603  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13604  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13605  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13606  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The object name parameter is required.");
13607  }
13608 
13609  xml_blob = g_byte_array_new();
13610  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13611  if (error != NULL) {
13612  g_byte_array_free(xml_blob, TRUE);
13613  return error;
13614  }
13615 
13616  return _parse_top_level_ds3_list_parts_result_response(client, request, response, xml_blob);
13617 }
13619  ds3_error* error;
13620  GByteArray* xml_blob;
13621 
13622  if (request->path->size < 2) {
13623  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The bucket name parameter is required.");
13624  }
13625 
13626  xml_blob = g_byte_array_new();
13627  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13628  if (error != NULL) {
13629  g_byte_array_free(xml_blob, TRUE);
13630  return error;
13631  }
13632 
13633  return _parse_top_level_ds3_list_multi_part_uploads_result_response(client, request, response, xml_blob);
13634 }
13636  ds3_error* error;
13637  GByteArray* xml_blob;
13638 
13639  if (request->path->size < 2) {
13640  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13641  }
13642 
13643  xml_blob = g_byte_array_new();
13644  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13645  if (error != NULL) {
13646  g_byte_array_free(xml_blob, TRUE);
13647  return error;
13648  }
13649 
13650  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13651 }
13653  ds3_error* error;
13654  GByteArray* xml_blob;
13655 
13656  if (request->path->size < 2) {
13657  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13658  }
13659 
13660  xml_blob = g_byte_array_new();
13661  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13662  if (error != NULL) {
13663  g_byte_array_free(xml_blob, TRUE);
13664  return error;
13665  }
13666 
13667  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13668 }
13670  ds3_error* error;
13671  GByteArray* xml_blob;
13672 
13673  if (request->path->size < 2) {
13674  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13675  }
13676 
13677  xml_blob = g_byte_array_new();
13678  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13679  if (error != NULL) {
13680  g_byte_array_free(xml_blob, TRUE);
13681  return error;
13682  }
13683 
13684  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13685 }
13687  ds3_error* error;
13688  GByteArray* xml_blob;
13689 
13690  if (request->path->size < 2) {
13691  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13692  }
13693 
13694  xml_blob = g_byte_array_new();
13695  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13696  if (error != NULL) {
13697  g_byte_array_free(xml_blob, TRUE);
13698  return error;
13699  }
13700 
13701  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13702 }
13704  ds3_error* error;
13705  GByteArray* xml_blob;
13706 
13707  if (request->path->size < 2) {
13708  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13709  }
13710 
13711  xml_blob = g_byte_array_new();
13712  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13713  if (error != NULL) {
13714  g_byte_array_free(xml_blob, TRUE);
13715  return error;
13716  }
13717 
13718  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13719 }
13721  ds3_error* error;
13722  GByteArray* xml_blob;
13723 
13724  if (request->path->size < 2) {
13725  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13726  }
13727 
13728  xml_blob = g_byte_array_new();
13729  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13730  if (error != NULL) {
13731  g_byte_array_free(xml_blob, TRUE);
13732  return error;
13733  }
13734 
13735  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13736 }
13738  ds3_error* error;
13739  GByteArray* xml_blob;
13740 
13741  if (request->path->size < 2) {
13742  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13743  }
13744 
13745  xml_blob = g_byte_array_new();
13746  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13747  if (error != NULL) {
13748  g_byte_array_free(xml_blob, TRUE);
13749  return error;
13750  }
13751 
13752  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13753 }
13755  ds3_error* error;
13756  GByteArray* xml_blob;
13757 
13758  if (request->path->size < 2) {
13759  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13760  }
13761 
13762  xml_blob = g_byte_array_new();
13763  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13764  if (error != NULL) {
13765  g_byte_array_free(xml_blob, TRUE);
13766  return error;
13767  }
13768 
13769  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13770 }
13772 
13773  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13774  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13775  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13776  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13777  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13778  }
13779 
13780  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13781 }
13783 
13784  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13785  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13786  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13787  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13788  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13789  }
13790 
13791  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13792 }
13794  ds3_error* error;
13795  GByteArray* xml_blob;
13796 
13797  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13798  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13799  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13800  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13801  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13802  }
13803 
13804  xml_blob = g_byte_array_new();
13805  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13806  if (error != NULL) {
13807  g_byte_array_free(xml_blob, TRUE);
13808  return error;
13809  }
13810 
13811  return _parse_top_level_ds3_bucket_acl_response(client, request, response, xml_blob);
13812 }
13814  ds3_error* error;
13815  GByteArray* xml_blob;
13816 
13817  if (request->path->size < 2) {
13818  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13819  }
13820 
13821  xml_blob = g_byte_array_new();
13822  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13823  if (error != NULL) {
13824  g_byte_array_free(xml_blob, TRUE);
13825  return error;
13826  }
13827 
13828  return _parse_top_level_ds3_bucket_acl_list_response(client, request, response, xml_blob);
13829 }
13831  ds3_error* error;
13832  GByteArray* xml_blob;
13833 
13834  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13835  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13836  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13837  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13838  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13839  }
13840 
13841  xml_blob = g_byte_array_new();
13842  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13843  if (error != NULL) {
13844  g_byte_array_free(xml_blob, TRUE);
13845  return error;
13846  }
13847 
13848  return _parse_top_level_ds3_data_policy_acl_response(client, request, response, xml_blob);
13849 }
13851  ds3_error* error;
13852  GByteArray* xml_blob;
13853 
13854  if (request->path->size < 2) {
13855  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13856  }
13857 
13858  xml_blob = g_byte_array_new();
13859  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13860  if (error != NULL) {
13861  g_byte_array_free(xml_blob, TRUE);
13862  return error;
13863  }
13864 
13865  return _parse_top_level_ds3_data_policy_acl_list_response(client, request, response, xml_blob);
13866 }
13868  ds3_error* error;
13869  GByteArray* xml_blob;
13870 
13871  if (request->path->size < 2) {
13872  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13873  }
13874 
13875  xml_blob = g_byte_array_new();
13876  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13877  if (error != NULL) {
13878  g_byte_array_free(xml_blob, TRUE);
13879  return error;
13880  }
13881 
13882  return _parse_top_level_ds3_bucket_response(client, request, response, xml_blob);
13883 }
13885 
13886  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13887  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13888  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13889  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13890  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13891  }
13892 
13893  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13894 }
13896  ds3_error* error;
13897  GByteArray* xml_blob;
13898 
13899  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13900  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13901  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13902  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13903  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13904  }
13905 
13906  xml_blob = g_byte_array_new();
13907  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13908  if (error != NULL) {
13909  g_byte_array_free(xml_blob, TRUE);
13910  return error;
13911  }
13912 
13913  return _parse_top_level_ds3_bucket_response(client, request, response, xml_blob);
13914 }
13916  ds3_error* error;
13917  GByteArray* xml_blob;
13918 
13919  if (request->path->size < 2) {
13920  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13921  }
13922 
13923  xml_blob = g_byte_array_new();
13924  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13925  if (error != NULL) {
13926  g_byte_array_free(xml_blob, TRUE);
13927  return error;
13928  }
13929 
13930  return _parse_top_level_ds3_bucket_list_response(client, request, response, xml_blob);
13931 }
13933  ds3_error* error;
13934  GByteArray* xml_blob;
13935 
13936  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13937  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13938  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13939  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13940  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13941  }
13942 
13943  xml_blob = g_byte_array_new();
13944  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13945  if (error != NULL) {
13946  g_byte_array_free(xml_blob, TRUE);
13947  return error;
13948  }
13949 
13950  return _parse_top_level_ds3_bucket_response(client, request, response, xml_blob);
13951 }
13953 
13954  if (request->path->size < 2) {
13955  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13956  }
13957 
13958  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
13959 }
13961  ds3_error* error;
13962  GByteArray* xml_blob;
13963 
13964  int num_slashes = num_chars_in_ds3_str(request->path, '/');
13965  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
13966  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13967  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
13968  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
13969  }
13970 
13971  xml_blob = g_byte_array_new();
13972  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13973  if (error != NULL) {
13974  g_byte_array_free(xml_blob, TRUE);
13975  return error;
13976  }
13977 
13978  return _parse_top_level_ds3_cache_filesystem_response(client, request, response, xml_blob);
13979 }
13981  ds3_error* error;
13982  GByteArray* xml_blob;
13983 
13984  if (request->path->size < 2) {
13985  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
13986  }
13987 
13988  xml_blob = g_byte_array_new();
13989  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
13990  if (error != NULL) {
13991  g_byte_array_free(xml_blob, TRUE);
13992  return error;
13993  }
13994 
13995  return _parse_top_level_ds3_cache_filesystem_list_response(client, request, response, xml_blob);
13996 }
13998  ds3_error* error;
13999  GByteArray* xml_blob;
14000 
14001  if (request->path->size < 2) {
14002  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14003  }
14004 
14005  xml_blob = g_byte_array_new();
14006  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14007  if (error != NULL) {
14008  g_byte_array_free(xml_blob, TRUE);
14009  return error;
14010  }
14011 
14012  return _parse_top_level_ds3_cache_information_response(client, request, response, xml_blob);
14013 }
14015  ds3_error* error;
14016  GByteArray* xml_blob;
14017 
14018  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14019  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14020  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14021  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14022  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14023  }
14024 
14025  xml_blob = g_byte_array_new();
14026  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14027  if (error != NULL) {
14028  g_byte_array_free(xml_blob, TRUE);
14029  return error;
14030  }
14031 
14032  return _parse_top_level_ds3_cache_filesystem_response(client, request, response, xml_blob);
14033 }
14035  ds3_error* error;
14036  GByteArray* xml_blob;
14037 
14038 
14039 
14040  xml_blob = g_byte_array_new();
14041  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14042  if (error != NULL) {
14043  g_byte_array_free(xml_blob, TRUE);
14044  return error;
14045  }
14046 
14047  return _parse_top_level_ds3_capacity_summary_container_response(client, request, response, xml_blob);
14048 }
14050  ds3_error* error;
14051  GByteArray* xml_blob;
14052 
14053 
14054 
14055  xml_blob = g_byte_array_new();
14056  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14057  if (error != NULL) {
14058  g_byte_array_free(xml_blob, TRUE);
14059  return error;
14060  }
14061 
14062  return _parse_top_level_ds3_capacity_summary_container_response(client, request, response, xml_blob);
14063 }
14065  ds3_error* error;
14066  GByteArray* xml_blob;
14067 
14068 
14069 
14070  xml_blob = g_byte_array_new();
14071  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14072  if (error != NULL) {
14073  g_byte_array_free(xml_blob, TRUE);
14074  return error;
14075  }
14076 
14077  return _parse_top_level_ds3_capacity_summary_container_response(client, request, response, xml_blob);
14078 }
14080  ds3_error* error;
14081  GByteArray* xml_blob;
14082 
14083 
14084 
14085  xml_blob = g_byte_array_new();
14086  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14087  if (error != NULL) {
14088  g_byte_array_free(xml_blob, TRUE);
14089  return error;
14090  }
14091 
14092  return _parse_top_level_ds3_data_path_backend_response(client, request, response, xml_blob);
14093 }
14095  ds3_error* error;
14096  GByteArray* xml_blob;
14097 
14098  if (request->path->size < 2) {
14099  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14100  }
14101 
14102  xml_blob = g_byte_array_new();
14103  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14104  if (error != NULL) {
14105  g_byte_array_free(xml_blob, TRUE);
14106  return error;
14107  }
14108 
14109  return _parse_top_level_ds3_blob_store_tasks_information_response(client, request, response, xml_blob);
14110 }
14112  ds3_error* error;
14113  GByteArray* xml_blob;
14114 
14115 
14116 
14117  xml_blob = g_byte_array_new();
14118  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14119  if (error != NULL) {
14120  g_byte_array_free(xml_blob, TRUE);
14121  return error;
14122  }
14123 
14124  return _parse_top_level_ds3_data_path_backend_response(client, request, response, xml_blob);
14125 }
14127  ds3_error* error;
14128  GByteArray* xml_blob;
14129 
14130  if (request->path->size < 2) {
14131  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14132  }
14133 
14134  xml_blob = g_byte_array_new();
14135  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14136  if (error != NULL) {
14137  g_byte_array_free(xml_blob, TRUE);
14138  return error;
14139  }
14140 
14141  return _parse_top_level_ds3_data_persistence_rule_response(client, request, response, xml_blob);
14142 }
14144  ds3_error* error;
14145  GByteArray* xml_blob;
14146 
14147  if (request->path->size < 2) {
14148  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14149  }
14150 
14151  xml_blob = g_byte_array_new();
14152  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14153  if (error != NULL) {
14154  g_byte_array_free(xml_blob, TRUE);
14155  return error;
14156  }
14157 
14158  return _parse_top_level_ds3_data_policy_response(client, request, response, xml_blob);
14159 }
14161 
14162  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14163  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14164  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14165  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14166  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14167  }
14168 
14169  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14170 }
14172 
14173  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14174  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14175  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14176  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14177  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14178  }
14179 
14180  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14181 }
14183  ds3_error* error;
14184  GByteArray* xml_blob;
14185 
14186  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14187  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14188  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14189  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14190  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14191  }
14192 
14193  xml_blob = g_byte_array_new();
14194  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14195  if (error != NULL) {
14196  g_byte_array_free(xml_blob, TRUE);
14197  return error;
14198  }
14199 
14200  return _parse_top_level_ds3_data_persistence_rule_response(client, request, response, xml_blob);
14201 }
14203  ds3_error* error;
14204  GByteArray* xml_blob;
14205 
14206  if (request->path->size < 2) {
14207  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14208  }
14209 
14210  xml_blob = g_byte_array_new();
14211  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14212  if (error != NULL) {
14213  g_byte_array_free(xml_blob, TRUE);
14214  return error;
14215  }
14216 
14217  return _parse_top_level_ds3_data_persistence_rule_list_response(client, request, response, xml_blob);
14218 }
14220  ds3_error* error;
14221  GByteArray* xml_blob;
14222 
14223  if (request->path->size < 2) {
14224  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14225  }
14226 
14227  xml_blob = g_byte_array_new();
14228  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14229  if (error != NULL) {
14230  g_byte_array_free(xml_blob, TRUE);
14231  return error;
14232  }
14233 
14234  return _parse_top_level_ds3_data_policy_list_response(client, request, response, xml_blob);
14235 }
14237  ds3_error* error;
14238  GByteArray* xml_blob;
14239 
14240  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14241  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14242  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14243  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14244  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14245  }
14246 
14247  xml_blob = g_byte_array_new();
14248  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14249  if (error != NULL) {
14250  g_byte_array_free(xml_blob, TRUE);
14251  return error;
14252  }
14253 
14254  return _parse_top_level_ds3_data_policy_response(client, request, response, xml_blob);
14255 }
14257  ds3_error* error;
14258  GByteArray* xml_blob;
14259 
14260  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14261  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14262  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14263  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14264  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14265  }
14266 
14267  xml_blob = g_byte_array_new();
14268  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14269  if (error != NULL) {
14270  g_byte_array_free(xml_blob, TRUE);
14271  return error;
14272  }
14273 
14274  return _parse_top_level_ds3_data_persistence_rule_response(client, request, response, xml_blob);
14275 }
14277  ds3_error* error;
14278  GByteArray* xml_blob;
14279 
14280  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14281  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14282  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14283  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14284  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14285  }
14286 
14287  xml_blob = g_byte_array_new();
14288  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14289  if (error != NULL) {
14290  g_byte_array_free(xml_blob, TRUE);
14291  return error;
14292  }
14293 
14294  return _parse_top_level_ds3_data_policy_response(client, request, response, xml_blob);
14295 }
14297  ds3_error* error;
14298  GByteArray* xml_blob;
14299 
14300  if (request->path->size < 2) {
14301  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14302  }
14303 
14304  xml_blob = g_byte_array_new();
14305  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14306  if (error != NULL) {
14307  g_byte_array_free(xml_blob, TRUE);
14308  return error;
14309  }
14310 
14311  return _parse_top_level_ds3_bucket_list_response(client, request, response, xml_blob);
14312 }
14314  ds3_error* error;
14315  GByteArray* xml_blob;
14316 
14317  if (request->path->size < 2) {
14318  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14319  }
14320 
14321  xml_blob = g_byte_array_new();
14322  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14323  if (error != NULL) {
14324  g_byte_array_free(xml_blob, TRUE);
14325  return error;
14326  }
14327 
14328  return _parse_top_level_ds3_data_persistence_rule_list_response(client, request, response, xml_blob);
14329 }
14331  ds3_error* error;
14332  GByteArray* xml_blob;
14333 
14334  if (request->path->size < 2) {
14335  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14336  }
14337 
14338  xml_blob = g_byte_array_new();
14339  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14340  if (error != NULL) {
14341  g_byte_array_free(xml_blob, TRUE);
14342  return error;
14343  }
14344 
14345  return _parse_top_level_ds3_group_member_response(client, request, response, xml_blob);
14346 }
14348  ds3_error* error;
14349  GByteArray* xml_blob;
14350 
14351  if (request->path->size < 2) {
14352  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14353  }
14354 
14355  xml_blob = g_byte_array_new();
14356  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14357  if (error != NULL) {
14358  g_byte_array_free(xml_blob, TRUE);
14359  return error;
14360  }
14361 
14362  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
14363 }
14365  ds3_error* error;
14366  GByteArray* xml_blob;
14367 
14368  if (request->path->size < 2) {
14369  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14370  }
14371 
14372  xml_blob = g_byte_array_new();
14373  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14374  if (error != NULL) {
14375  g_byte_array_free(xml_blob, TRUE);
14376  return error;
14377  }
14378 
14379  return _parse_top_level_ds3_group_member_response(client, request, response, xml_blob);
14380 }
14382 
14383  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14384  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14385  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14386  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14387  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14388  }
14389 
14390  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14391 }
14393 
14394  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14395  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14396  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14397  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14398  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14399  }
14400 
14401  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14402 }
14404  ds3_error* error;
14405  GByteArray* xml_blob;
14406 
14407  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14408  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14409  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14410  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14411  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14412  }
14413 
14414  xml_blob = g_byte_array_new();
14415  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14416  if (error != NULL) {
14417  g_byte_array_free(xml_blob, TRUE);
14418  return error;
14419  }
14420 
14421  return _parse_top_level_ds3_group_member_response(client, request, response, xml_blob);
14422 }
14424  ds3_error* error;
14425  GByteArray* xml_blob;
14426 
14427  if (request->path->size < 2) {
14428  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14429  }
14430 
14431  xml_blob = g_byte_array_new();
14432  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14433  if (error != NULL) {
14434  g_byte_array_free(xml_blob, TRUE);
14435  return error;
14436  }
14437 
14438  return _parse_top_level_ds3_group_member_list_response(client, request, response, xml_blob);
14439 }
14441  ds3_error* error;
14442  GByteArray* xml_blob;
14443 
14444  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14445  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14446  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14447  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14448  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14449  }
14450 
14451  xml_blob = g_byte_array_new();
14452  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14453  if (error != NULL) {
14454  g_byte_array_free(xml_blob, TRUE);
14455  return error;
14456  }
14457 
14458  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
14459 }
14461  ds3_error* error;
14462  GByteArray* xml_blob;
14463 
14464  if (request->path->size < 2) {
14465  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14466  }
14467 
14468  xml_blob = g_byte_array_new();
14469  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14470  if (error != NULL) {
14471  g_byte_array_free(xml_blob, TRUE);
14472  return error;
14473  }
14474 
14475  return _parse_top_level_ds3_group_list_response(client, request, response, xml_blob);
14476 }
14478  ds3_error* error;
14479  GByteArray* xml_blob;
14480 
14481  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14482  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14483  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14484  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14485  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14486  }
14487 
14488  xml_blob = g_byte_array_new();
14489  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14490  if (error != NULL) {
14491  g_byte_array_free(xml_blob, TRUE);
14492  return error;
14493  }
14494 
14495  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
14496 }
14498  ds3_error* error;
14499  GByteArray* xml_blob;
14500 
14501  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14502  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14503  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14504  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14505  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14506  }
14507 
14508  xml_blob = g_byte_array_new();
14509  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14510  if (error != NULL) {
14511  g_byte_array_free(xml_blob, TRUE);
14512  return error;
14513  }
14514 
14515  return _parse_top_level_ds3_group_response(client, request, response, xml_blob);
14516 }
14518  ds3_error* error;
14519  GByteArray* xml_blob;
14520 
14521  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14522  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14523  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14524  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14525  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14526  }
14527 
14528  xml_blob = g_byte_array_new();
14529  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14530  if (error != NULL) {
14531  g_byte_array_free(xml_blob, TRUE);
14532  return error;
14533  }
14534 
14535  return _parse_top_level_ds3_objects_response(client, request, response, xml_blob);
14536 }
14538 
14539  if (request->path->size < 2) {
14540  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14541  }
14542 
14543  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14544 }
14546 
14547  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14548  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14549  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14550  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14551  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14552  }
14553 
14554  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14555 }
14557 
14558  if (request->path->size < 2) {
14559  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14560  }
14561 
14562  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14563 }
14565 
14566  if (request->path->size < 2) {
14567  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14568  }
14569 
14570  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
14571 }
14573  ds3_error* error;
14574  ds3_xml_send_buff send_buff;
14575  GByteArray* xml_blob;
14576 
14577  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14578  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14579  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14580  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14581  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14582  }
14583 
14584  error = _init_request_payload(request, &send_buff, BULK_GET);
14585  if (error != NULL) return error;
14586 
14587  xml_blob = g_byte_array_new();
14588  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
14589 
14590  // Clean up the data sent to the server
14591  xmlFree(send_buff.buff);
14592 
14593  if (error != NULL) {
14594  g_byte_array_free(xml_blob, TRUE);
14595  return error;
14596  }
14597 
14598  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
14599 }
14601  ds3_error* error;
14602  ds3_xml_send_buff send_buff;
14603  GByteArray* xml_blob;
14604 
14605  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14606  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14607  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14608  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14609  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14610  }
14611 
14612  error = _init_request_payload(request, &send_buff, BULK_PUT);
14613  if (error != NULL) return error;
14614 
14615  xml_blob = g_byte_array_new();
14616  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
14617 
14618  // Clean up the data sent to the server
14619  xmlFree(send_buff.buff);
14620 
14621  if (error != NULL) {
14622  g_byte_array_free(xml_blob, TRUE);
14623  return error;
14624  }
14625 
14626  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
14627 }
14629  ds3_error* error;
14630  ds3_xml_send_buff send_buff;
14631  GByteArray* xml_blob;
14632 
14633  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14634  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14635  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14636  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14637  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14638  }
14639 
14640  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
14641  if (error != NULL) return error;
14642 
14643  xml_blob = g_byte_array_new();
14644  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
14645 
14646  // Clean up the data sent to the server
14647  xmlFree(send_buff.buff);
14648 
14649  if (error != NULL) {
14650  g_byte_array_free(xml_blob, TRUE);
14651  return error;
14652  }
14653 
14654  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
14655 }
14657  ds3_error* error;
14658  GByteArray* xml_blob;
14659 
14660  if (request->path->size < 2) {
14661  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14662  }
14663 
14664  xml_blob = g_byte_array_new();
14665  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14666  if (error != NULL) {
14667  g_byte_array_free(xml_blob, TRUE);
14668  return error;
14669  }
14670 
14671  return _parse_top_level_ds3_active_job_list_response(client, request, response, xml_blob);
14672 }
14674  ds3_error* error;
14675  GByteArray* xml_blob;
14676 
14677  if (request->path->size < 2) {
14678  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14679  }
14680 
14681  xml_blob = g_byte_array_new();
14682  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14683  if (error != NULL) {
14684  g_byte_array_free(xml_blob, TRUE);
14685  return error;
14686  }
14687 
14688  return _parse_top_level_ds3_canceled_job_list_response(client, request, response, xml_blob);
14689 }
14691  ds3_error* error;
14692  GByteArray* xml_blob;
14693 
14694  if (request->path->size < 2) {
14695  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14696  }
14697 
14698  xml_blob = g_byte_array_new();
14699  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14700  if (error != NULL) {
14701  g_byte_array_free(xml_blob, TRUE);
14702  return error;
14703  }
14704 
14705  return _parse_top_level_ds3_completed_job_list_response(client, request, response, xml_blob);
14706 }
14708  ds3_error* error;
14709  GByteArray* xml_blob;
14710 
14711  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14712  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14713  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14714  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14715  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14716  }
14717 
14718  xml_blob = g_byte_array_new();
14719  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14720  if (error != NULL) {
14721  g_byte_array_free(xml_blob, TRUE);
14722  return error;
14723  }
14724 
14725  return _parse_top_level_ds3_objects_response(client, request, response, xml_blob);
14726 }
14728  ds3_error* error;
14729  GByteArray* xml_blob;
14730 
14731  if (request->path->size < 2) {
14732  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14733  }
14734 
14735  xml_blob = g_byte_array_new();
14736  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14737  if (error != NULL) {
14738  g_byte_array_free(xml_blob, TRUE);
14739  return error;
14740  }
14741 
14742  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
14743 }
14745  ds3_error* error;
14746  GByteArray* xml_blob;
14747 
14748  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14749  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14750  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14751  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14752  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id 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, NULL);
14757  if (error != NULL) {
14758  g_byte_array_free(xml_blob, TRUE);
14759  return error;
14760  }
14761 
14762  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
14763 }
14765  ds3_error* error;
14766  GByteArray* xml_blob;
14767 
14768  if (request->path->size < 2) {
14769  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14770  }
14771 
14772  xml_blob = g_byte_array_new();
14773  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14774  if (error != NULL) {
14775  g_byte_array_free(xml_blob, TRUE);
14776  return error;
14777  }
14778 
14779  return _parse_top_level_ds3_job_list_response(client, request, response, xml_blob);
14780 }
14782  ds3_error* error;
14783  GByteArray* xml_blob;
14784 
14785  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14786  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14787  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14788  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14789  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14790  }
14791 
14792  xml_blob = g_byte_array_new();
14793  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14794  if (error != NULL) {
14795  g_byte_array_free(xml_blob, TRUE);
14796  return error;
14797  }
14798 
14799  response->value = (char*)xml_blob->data;
14800  response->size = xml_blob->len;
14801  g_byte_array_free(xml_blob, FALSE);
14802  return error;
14803 }
14805  ds3_error* error;
14806  GByteArray* xml_blob;
14807 
14808  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14809  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14810  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14811  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14812  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14813  }
14814 
14815  xml_blob = g_byte_array_new();
14816  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14817  if (error != NULL) {
14818  g_byte_array_free(xml_blob, TRUE);
14819  return error;
14820  }
14821 
14822  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
14823 }
14825  ds3_error* error;
14826  ds3_xml_send_buff send_buff;
14827  GByteArray* xml_blob;
14828 
14829  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14830  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14831  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14832  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14833  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14834  }
14835 
14836  error = _init_request_payload(request, &send_buff, STRING);
14837  if (error != NULL) return error;
14838 
14839  xml_blob = g_byte_array_new();
14840  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
14841 
14842  // Clean up the data sent to the server
14843  xmlFree(send_buff.buff);
14844 
14845  if (error != NULL) {
14846  g_byte_array_free(xml_blob, TRUE);
14847  return error;
14848  }
14849 
14850  return _parse_top_level_ds3_master_object_list_response(client, request, response, xml_blob);
14851 }
14853  ds3_error* error;
14854  GByteArray* xml_blob;
14855 
14856  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14857  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14858  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14859  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14860  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14861  }
14862 
14863  xml_blob = g_byte_array_new();
14864  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14865  if (error != NULL) {
14866  g_byte_array_free(xml_blob, TRUE);
14867  return error;
14868  }
14869 
14870  return _parse_top_level_ds3_node_response(client, request, response, xml_blob);
14871 }
14873  ds3_error* error;
14874  GByteArray* xml_blob;
14875 
14876  if (request->path->size < 2) {
14877  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14878  }
14879 
14880  xml_blob = g_byte_array_new();
14881  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14882  if (error != NULL) {
14883  g_byte_array_free(xml_blob, TRUE);
14884  return error;
14885  }
14886 
14887  return _parse_top_level_ds3_node_list_response(client, request, response, xml_blob);
14888 }
14890  ds3_error* error;
14891  GByteArray* xml_blob;
14892 
14893  int num_slashes = num_chars_in_ds3_str(request->path, '/');
14894  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
14895  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14896  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
14897  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
14898  }
14899 
14900  xml_blob = g_byte_array_new();
14901  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14902  if (error != NULL) {
14903  g_byte_array_free(xml_blob, TRUE);
14904  return error;
14905  }
14906 
14907  return _parse_top_level_ds3_node_response(client, request, response, xml_blob);
14908 }
14910  ds3_error* error;
14911  GByteArray* xml_blob;
14912 
14913  if (request->path->size < 2) {
14914  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14915  }
14916 
14917  xml_blob = g_byte_array_new();
14918  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14919  if (error != NULL) {
14920  g_byte_array_free(xml_blob, TRUE);
14921  return error;
14922  }
14923 
14924  return _parse_top_level_ds3_job_completed_notification_registration_response(client, request, response, xml_blob);
14925 }
14927  ds3_error* error;
14928  GByteArray* xml_blob;
14929 
14930  if (request->path->size < 2) {
14931  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14932  }
14933 
14934  xml_blob = g_byte_array_new();
14935  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14936  if (error != NULL) {
14937  g_byte_array_free(xml_blob, TRUE);
14938  return error;
14939  }
14940 
14941  return _parse_top_level_ds3_job_created_notification_registration_response(client, request, response, xml_blob);
14942 }
14944  ds3_error* error;
14945  GByteArray* xml_blob;
14946 
14947  if (request->path->size < 2) {
14948  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14949  }
14950 
14951  xml_blob = g_byte_array_new();
14952  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14953  if (error != NULL) {
14954  g_byte_array_free(xml_blob, TRUE);
14955  return error;
14956  }
14957 
14958  return _parse_top_level_ds3_s3_object_cached_notification_registration_response(client, request, response, xml_blob);
14959 }
14961  ds3_error* error;
14962  GByteArray* xml_blob;
14963 
14964  if (request->path->size < 2) {
14965  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14966  }
14967 
14968  xml_blob = g_byte_array_new();
14969  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14970  if (error != NULL) {
14971  g_byte_array_free(xml_blob, TRUE);
14972  return error;
14973  }
14974 
14975  return _parse_top_level_ds3_s3_object_lost_notification_registration_response(client, request, response, xml_blob);
14976 }
14978  ds3_error* error;
14979  GByteArray* xml_blob;
14980 
14981  if (request->path->size < 2) {
14982  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
14983  }
14984 
14985  xml_blob = g_byte_array_new();
14986  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
14987  if (error != NULL) {
14988  g_byte_array_free(xml_blob, TRUE);
14989  return error;
14990  }
14991 
14992  return _parse_top_level_ds3_s3_object_persisted_notification_registration_response(client, request, response, xml_blob);
14993 }
14995  ds3_error* error;
14996  GByteArray* xml_blob;
14997 
14998  if (request->path->size < 2) {
14999  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15000  }
15001 
15002  xml_blob = g_byte_array_new();
15003  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15004  if (error != NULL) {
15005  g_byte_array_free(xml_blob, TRUE);
15006  return error;
15007  }
15008 
15009  return _parse_top_level_ds3_pool_failure_notification_registration_response(client, request, response, xml_blob);
15010 }
15012  ds3_error* error;
15013  GByteArray* xml_blob;
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, NULL);
15021  if (error != NULL) {
15022  g_byte_array_free(xml_blob, TRUE);
15023  return error;
15024  }
15025 
15026  return _parse_top_level_ds3_storage_domain_failure_notification_registration_response(client, request, response, xml_blob);
15027 }
15029  ds3_error* error;
15030  GByteArray* xml_blob;
15031 
15032  if (request->path->size < 2) {
15033  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15034  }
15035 
15036  xml_blob = g_byte_array_new();
15037  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15038  if (error != NULL) {
15039  g_byte_array_free(xml_blob, TRUE);
15040  return error;
15041  }
15042 
15043  return _parse_top_level_ds3_system_failure_notification_registration_response(client, request, response, xml_blob);
15044 }
15046  ds3_error* error;
15047  GByteArray* xml_blob;
15048 
15049  if (request->path->size < 2) {
15050  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15051  }
15052 
15053  xml_blob = g_byte_array_new();
15054  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15055  if (error != NULL) {
15056  g_byte_array_free(xml_blob, TRUE);
15057  return error;
15058  }
15059 
15060  return _parse_top_level_ds3_tape_failure_notification_registration_response(client, request, response, xml_blob);
15061 }
15063  ds3_error* error;
15064  GByteArray* xml_blob;
15065 
15066  if (request->path->size < 2) {
15067  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15068  }
15069 
15070  xml_blob = g_byte_array_new();
15071  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15072  if (error != NULL) {
15073  g_byte_array_free(xml_blob, TRUE);
15074  return error;
15075  }
15076 
15077  return _parse_top_level_ds3_tape_partition_failure_notification_registration_response(client, request, response, xml_blob);
15078 }
15080 
15081  if (request->path->size < 2) {
15082  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15083  }
15084 
15085  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15086 }
15088 
15089  if (request->path->size < 2) {
15090  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15091  }
15092 
15093  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15094 }
15096 
15097  if (request->path->size < 2) {
15098  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15099  }
15100 
15101  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15102 }
15104 
15105  if (request->path->size < 2) {
15106  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15107  }
15108 
15109  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15110 }
15112 
15113  if (request->path->size < 2) {
15114  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15115  }
15116 
15117  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15118 }
15120 
15121  if (request->path->size < 2) {
15122  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15123  }
15124 
15125  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15126 }
15128 
15129  if (request->path->size < 2) {
15130  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15131  }
15132 
15133  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15134 }
15136 
15137  if (request->path->size < 2) {
15138  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15139  }
15140 
15141  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15142 }
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  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15150 }
15152 
15153  if (request->path->size < 2) {
15154  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15155  }
15156 
15157  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15158 }
15160  ds3_error* error;
15161  GByteArray* xml_blob;
15162 
15163  if (request->path->size < 2) {
15164  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15165  }
15166 
15167  xml_blob = g_byte_array_new();
15168  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15169  if (error != NULL) {
15170  g_byte_array_free(xml_blob, TRUE);
15171  return error;
15172  }
15173 
15174  return _parse_top_level_ds3_job_completed_notification_registration_response(client, request, response, xml_blob);
15175 }
15177  ds3_error* error;
15178  GByteArray* xml_blob;
15179 
15180  if (request->path->size < 2) {
15181  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15182  }
15183 
15184  xml_blob = g_byte_array_new();
15185  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15186  if (error != NULL) {
15187  g_byte_array_free(xml_blob, TRUE);
15188  return error;
15189  }
15190 
15191  return _parse_top_level_ds3_job_completed_notification_registration_list_response(client, request, response, xml_blob);
15192 }
15194  ds3_error* error;
15195  GByteArray* xml_blob;
15196 
15197  if (request->path->size < 2) {
15198  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15199  }
15200 
15201  xml_blob = g_byte_array_new();
15202  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15203  if (error != NULL) {
15204  g_byte_array_free(xml_blob, TRUE);
15205  return error;
15206  }
15207 
15208  return _parse_top_level_ds3_job_created_notification_registration_response(client, request, response, xml_blob);
15209 }
15211  ds3_error* error;
15212  GByteArray* xml_blob;
15213 
15214  if (request->path->size < 2) {
15215  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15216  }
15217 
15218  xml_blob = g_byte_array_new();
15219  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15220  if (error != NULL) {
15221  g_byte_array_free(xml_blob, TRUE);
15222  return error;
15223  }
15224 
15225  return _parse_top_level_ds3_job_created_notification_registration_list_response(client, request, response, xml_blob);
15226 }
15228  ds3_error* error;
15229  GByteArray* xml_blob;
15230 
15231  if (request->path->size < 2) {
15232  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15233  }
15234 
15235  xml_blob = g_byte_array_new();
15236  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15237  if (error != NULL) {
15238  g_byte_array_free(xml_blob, TRUE);
15239  return error;
15240  }
15241 
15242  return _parse_top_level_ds3_s3_object_cached_notification_registration_response(client, request, response, xml_blob);
15243 }
15245  ds3_error* error;
15246  GByteArray* xml_blob;
15247 
15248  if (request->path->size < 2) {
15249  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15250  }
15251 
15252  xml_blob = g_byte_array_new();
15253  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15254  if (error != NULL) {
15255  g_byte_array_free(xml_blob, TRUE);
15256  return error;
15257  }
15258 
15259  return _parse_top_level_ds3_s3_object_cached_notification_registration_list_response(client, request, response, xml_blob);
15260 }
15262  ds3_error* error;
15263  GByteArray* xml_blob;
15264 
15265  if (request->path->size < 2) {
15266  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type 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_s3_object_lost_notification_registration_response(client, request, response, xml_blob);
15277 }
15279  ds3_error* error;
15280  GByteArray* xml_blob;
15281 
15282  if (request->path->size < 2) {
15283  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15284  }
15285 
15286  xml_blob = g_byte_array_new();
15287  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15288  if (error != NULL) {
15289  g_byte_array_free(xml_blob, TRUE);
15290  return error;
15291  }
15292 
15293  return _parse_top_level_ds3_s3_object_lost_notification_registration_list_response(client, request, response, xml_blob);
15294 }
15296  ds3_error* error;
15297  GByteArray* xml_blob;
15298 
15299  if (request->path->size < 2) {
15300  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15301  }
15302 
15303  xml_blob = g_byte_array_new();
15304  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15305  if (error != NULL) {
15306  g_byte_array_free(xml_blob, TRUE);
15307  return error;
15308  }
15309 
15310  return _parse_top_level_ds3_s3_object_persisted_notification_registration_response(client, request, response, xml_blob);
15311 }
15313  ds3_error* error;
15314  GByteArray* xml_blob;
15315 
15316  if (request->path->size < 2) {
15317  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15318  }
15319 
15320  xml_blob = g_byte_array_new();
15321  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15322  if (error != NULL) {
15323  g_byte_array_free(xml_blob, TRUE);
15324  return error;
15325  }
15326 
15328 }
15330  ds3_error* error;
15331  GByteArray* xml_blob;
15332 
15333  if (request->path->size < 2) {
15334  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15335  }
15336 
15337  xml_blob = g_byte_array_new();
15338  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15339  if (error != NULL) {
15340  g_byte_array_free(xml_blob, TRUE);
15341  return error;
15342  }
15343 
15344  return _parse_top_level_ds3_pool_failure_notification_registration_response(client, request, response, xml_blob);
15345 }
15347  ds3_error* error;
15348  GByteArray* xml_blob;
15349 
15350  if (request->path->size < 2) {
15351  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15352  }
15353 
15354  xml_blob = g_byte_array_new();
15355  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15356  if (error != NULL) {
15357  g_byte_array_free(xml_blob, TRUE);
15358  return error;
15359  }
15360 
15361  return _parse_top_level_ds3_pool_failure_notification_registration_list_response(client, request, response, xml_blob);
15362 }
15364  ds3_error* error;
15365  GByteArray* xml_blob;
15366 
15367  if (request->path->size < 2) {
15368  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15369  }
15370 
15371  xml_blob = g_byte_array_new();
15372  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15373  if (error != NULL) {
15374  g_byte_array_free(xml_blob, TRUE);
15375  return error;
15376  }
15377 
15378  return _parse_top_level_ds3_storage_domain_failure_notification_registration_response(client, request, response, xml_blob);
15379 }
15381  ds3_error* error;
15382  GByteArray* xml_blob;
15383 
15384  if (request->path->size < 2) {
15385  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15386  }
15387 
15388  xml_blob = g_byte_array_new();
15389  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15390  if (error != NULL) {
15391  g_byte_array_free(xml_blob, TRUE);
15392  return error;
15393  }
15394 
15396 }
15398  ds3_error* error;
15399  GByteArray* xml_blob;
15400 
15401  if (request->path->size < 2) {
15402  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15403  }
15404 
15405  xml_blob = g_byte_array_new();
15406  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15407  if (error != NULL) {
15408  g_byte_array_free(xml_blob, TRUE);
15409  return error;
15410  }
15411 
15412  return _parse_top_level_ds3_system_failure_notification_registration_response(client, request, response, xml_blob);
15413 }
15415  ds3_error* error;
15416  GByteArray* xml_blob;
15417 
15418  if (request->path->size < 2) {
15419  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15420  }
15421 
15422  xml_blob = g_byte_array_new();
15423  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15424  if (error != NULL) {
15425  g_byte_array_free(xml_blob, TRUE);
15426  return error;
15427  }
15428 
15429  return _parse_top_level_ds3_system_failure_notification_registration_list_response(client, request, response, xml_blob);
15430 }
15432  ds3_error* error;
15433  GByteArray* xml_blob;
15434 
15435  if (request->path->size < 2) {
15436  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15437  }
15438 
15439  xml_blob = g_byte_array_new();
15440  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15441  if (error != NULL) {
15442  g_byte_array_free(xml_blob, TRUE);
15443  return error;
15444  }
15445 
15446  return _parse_top_level_ds3_tape_failure_notification_registration_response(client, request, response, xml_blob);
15447 }
15449  ds3_error* error;
15450  GByteArray* xml_blob;
15451 
15452  if (request->path->size < 2) {
15453  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15454  }
15455 
15456  xml_blob = g_byte_array_new();
15457  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15458  if (error != NULL) {
15459  g_byte_array_free(xml_blob, TRUE);
15460  return error;
15461  }
15462 
15463  return _parse_top_level_ds3_tape_failure_notification_registration_list_response(client, request, response, xml_blob);
15464 }
15466  ds3_error* error;
15467  GByteArray* xml_blob;
15468 
15469  if (request->path->size < 2) {
15470  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15471  }
15472 
15473  xml_blob = g_byte_array_new();
15474  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15475  if (error != NULL) {
15476  g_byte_array_free(xml_blob, TRUE);
15477  return error;
15478  }
15479 
15480  return _parse_top_level_ds3_tape_partition_failure_notification_registration_response(client, request, response, xml_blob);
15481 }
15483  ds3_error* error;
15484  GByteArray* xml_blob;
15485 
15486  if (request->path->size < 2) {
15487  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15488  }
15489 
15490  xml_blob = g_byte_array_new();
15491  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15492  if (error != NULL) {
15493  g_byte_array_free(xml_blob, TRUE);
15494  return error;
15495  }
15496 
15498 }
15500 
15501  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15502  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15503  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15504  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15505  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15506  }
15507 
15508  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15509 }
15511  ds3_error* error;
15512  GByteArray* xml_blob;
15513 
15514  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15515  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15516  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15517  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15518  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15519  }
15520 
15521  xml_blob = g_byte_array_new();
15522  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15523  if (error != NULL) {
15524  g_byte_array_free(xml_blob, TRUE);
15525  return error;
15526  }
15527 
15528  return _parse_top_level_ds3_s3_object_response(client, request, response, xml_blob);
15529 }
15531  ds3_error* error;
15532  GByteArray* xml_blob;
15533 
15534  if (request->path->size < 2) {
15535  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15536  }
15537 
15538  xml_blob = g_byte_array_new();
15539  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15540  if (error != NULL) {
15541  g_byte_array_free(xml_blob, TRUE);
15542  return error;
15543  }
15544 
15545  return _parse_top_level_ds3_s3_object_list_response(client, request, response, xml_blob);
15546 }
15548  ds3_error* error;
15549  GByteArray* xml_blob;
15550 
15551  if (request->path->size < 2) {
15552  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15553  }
15554 
15555  xml_blob = g_byte_array_new();
15556  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15557  if (error != NULL) {
15558  g_byte_array_free(xml_blob, TRUE);
15559  return error;
15560  }
15561 
15562  return _parse_top_level_ds3_detailed_s3_object_list_response(client, request, response, xml_blob);
15563 }
15565  ds3_error* error;
15566  ds3_xml_send_buff send_buff;
15567  GByteArray* xml_blob;
15568 
15569  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15570  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15571  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15572  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15573  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15574  }
15575 
15576  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
15577  if (error != NULL) return error;
15578 
15579  xml_blob = g_byte_array_new();
15580  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15581 
15582  // Clean up the data sent to the server
15583  xmlFree(send_buff.buff);
15584 
15585  if (error != NULL) {
15586  g_byte_array_free(xml_blob, TRUE);
15587  return error;
15588  }
15589 
15590  return _parse_top_level_ds3_physical_placement_response(client, request, response, xml_blob);
15591 }
15593  ds3_error* error;
15594  ds3_xml_send_buff send_buff;
15595  GByteArray* xml_blob;
15596 
15597  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15598  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15599  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15600  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15601  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15602  }
15603 
15604  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
15605  if (error != NULL) return error;
15606 
15607  xml_blob = g_byte_array_new();
15608  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15609 
15610  // Clean up the data sent to the server
15611  xmlFree(send_buff.buff);
15612 
15613  if (error != NULL) {
15614  g_byte_array_free(xml_blob, TRUE);
15615  return error;
15616  }
15617 
15618  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
15619 }
15621  ds3_error* error;
15622  ds3_xml_send_buff send_buff;
15623  GByteArray* xml_blob;
15624 
15625  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15626  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15627  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15628  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15629  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15630  }
15631 
15632  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
15633  if (error != NULL) return error;
15634 
15635  xml_blob = g_byte_array_new();
15636  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15637 
15638  // Clean up the data sent to the server
15639  xmlFree(send_buff.buff);
15640 
15641  if (error != NULL) {
15642  g_byte_array_free(xml_blob, TRUE);
15643  return error;
15644  }
15645 
15646  return _parse_top_level_ds3_physical_placement_response(client, request, response, xml_blob);
15647 }
15649  ds3_error* error;
15650  ds3_xml_send_buff send_buff;
15651  GByteArray* xml_blob;
15652 
15653  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15654  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15655  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15656  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15657  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15658  }
15659 
15660  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
15661  if (error != NULL) return error;
15662 
15663  xml_blob = g_byte_array_new();
15664  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
15665 
15666  // Clean up the data sent to the server
15667  xmlFree(send_buff.buff);
15668 
15669  if (error != NULL) {
15670  g_byte_array_free(xml_blob, TRUE);
15671  return error;
15672  }
15673 
15674  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
15675 }
15677 
15678  if (request->path->size < 2) {
15679  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15680  }
15681 
15682  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15683 }
15685  ds3_error* error;
15686  GByteArray* xml_blob;
15687 
15688  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15689  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15690  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15691  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15692  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15693  }
15694 
15695  xml_blob = g_byte_array_new();
15696  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15697  if (error != NULL) {
15698  g_byte_array_free(xml_blob, TRUE);
15699  return error;
15700  }
15701 
15702  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
15703 }
15705 
15706  if (request->path->size < 2) {
15707  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15708  }
15709 
15710  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15711 }
15713  ds3_error* error;
15714  GByteArray* xml_blob;
15715 
15716  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15717  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15718  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15719  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15720  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15721  }
15722 
15723  xml_blob = g_byte_array_new();
15724  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15725  if (error != NULL) {
15726  g_byte_array_free(xml_blob, TRUE);
15727  return error;
15728  }
15729 
15730  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
15731 }
15733  ds3_error* error;
15734  GByteArray* xml_blob;
15735 
15736  if (request->path->size < 2) {
15737  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15738  }
15739 
15740  xml_blob = g_byte_array_new();
15741  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15742  if (error != NULL) {
15743  g_byte_array_free(xml_blob, TRUE);
15744  return error;
15745  }
15746 
15747  return _parse_top_level_ds3_pool_partition_response(client, request, response, xml_blob);
15748 }
15750 
15751  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15752  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15753  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15754  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15755  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15756  }
15757 
15758  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15759 }
15761 
15762  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15763  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15764  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15765  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15766  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15767  }
15768 
15769  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15770 }
15772 
15773  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15774  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15775  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15776  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15777  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15778  }
15779 
15780  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15781 }
15783 
15784  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15785  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15786  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15787  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15788  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15789  }
15790 
15791  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15792 }
15794 
15795 
15796 
15797  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15798 }
15800 
15801  if (request->path->size < 2) {
15802  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15803  }
15804 
15805  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15806 }
15808  ds3_error* error;
15809  GByteArray* xml_blob;
15810 
15811  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15812  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15813  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15814  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15815  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15816  }
15817 
15818  xml_blob = g_byte_array_new();
15819  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15820  if (error != NULL) {
15821  g_byte_array_free(xml_blob, TRUE);
15822  return error;
15823  }
15824 
15825  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
15826 }
15828  ds3_error* error;
15829  GByteArray* xml_blob;
15830 
15831  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15832  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15833  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15834  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15835  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15836  }
15837 
15838  xml_blob = g_byte_array_new();
15839  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15840  if (error != NULL) {
15841  g_byte_array_free(xml_blob, TRUE);
15842  return error;
15843  }
15844 
15845  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
15846 }
15848  ds3_error* error;
15849  GByteArray* xml_blob;
15850 
15851  if (request->path->size < 2) {
15852  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15853  }
15854 
15855  xml_blob = g_byte_array_new();
15856  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15857  if (error != NULL) {
15858  g_byte_array_free(xml_blob, TRUE);
15859  return error;
15860  }
15861 
15862  return _parse_top_level_ds3_pool_failure_list_response(client, request, response, xml_blob);
15863 }
15865  ds3_error* error;
15866  GByteArray* xml_blob;
15867 
15868  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15869  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15870  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15871  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15872  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15873  }
15874 
15875  xml_blob = g_byte_array_new();
15876  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15877  if (error != NULL) {
15878  g_byte_array_free(xml_blob, TRUE);
15879  return error;
15880  }
15881 
15882  return _parse_top_level_ds3_pool_partition_response(client, request, response, xml_blob);
15883 }
15885  ds3_error* error;
15886  GByteArray* xml_blob;
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  xml_blob = g_byte_array_new();
15893  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15894  if (error != NULL) {
15895  g_byte_array_free(xml_blob, TRUE);
15896  return error;
15897  }
15898 
15899  return _parse_top_level_ds3_pool_partition_list_response(client, request, response, xml_blob);
15900 }
15902  ds3_error* error;
15903  GByteArray* xml_blob;
15904 
15905  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15906  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15907  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15908  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15909  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15910  }
15911 
15912  xml_blob = g_byte_array_new();
15913  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15914  if (error != NULL) {
15915  g_byte_array_free(xml_blob, TRUE);
15916  return error;
15917  }
15918 
15919  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
15920 }
15922  ds3_error* error;
15923  GByteArray* xml_blob;
15924 
15925  if (request->path->size < 2) {
15926  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15927  }
15928 
15929  xml_blob = g_byte_array_new();
15930  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15931  if (error != NULL) {
15932  g_byte_array_free(xml_blob, TRUE);
15933  return error;
15934  }
15935 
15936  return _parse_top_level_ds3_pool_list_response(client, request, response, xml_blob);
15937 }
15939 
15940  if (request->path->size < 2) {
15941  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15942  }
15943 
15944  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15945 }
15947  ds3_error* error;
15948  GByteArray* xml_blob;
15949 
15950  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15951  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15952  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15953  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15954  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15955  }
15956 
15957  xml_blob = g_byte_array_new();
15958  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15959  if (error != NULL) {
15960  g_byte_array_free(xml_blob, TRUE);
15961  return error;
15962  }
15963 
15964  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
15965 }
15967 
15968  if (request->path->size < 2) {
15969  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15970  }
15971 
15972  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
15973 }
15975  ds3_error* error;
15976  GByteArray* xml_blob;
15977 
15978  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15979  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
15980  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
15981  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
15982  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
15983  }
15984 
15985  xml_blob = g_byte_array_new();
15986  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
15987  if (error != NULL) {
15988  g_byte_array_free(xml_blob, TRUE);
15989  return error;
15990  }
15991 
15992  return _parse_top_level_ds3_pool_partition_response(client, request, response, xml_blob);
15993 }
15995  ds3_error* error;
15996  GByteArray* xml_blob;
15997 
15998  int num_slashes = num_chars_in_ds3_str(request->path, '/');
15999  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16000  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16001  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16002  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id 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_pool_response(client, request, response, xml_blob);
16013 }
16015 
16016  if (request->path->size < 2) {
16017  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16018  }
16019 
16020  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16021 }
16023  ds3_error* error;
16024  GByteArray* xml_blob;
16025 
16026  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16027  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16028  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16029  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16030  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16031  }
16032 
16033  xml_blob = g_byte_array_new();
16034  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16035  if (error != NULL) {
16036  g_byte_array_free(xml_blob, TRUE);
16037  return error;
16038  }
16039 
16040  return _parse_top_level_ds3_pool_response(client, request, response, xml_blob);
16041 }
16043  ds3_error* error;
16044  GByteArray* xml_blob;
16045 
16046  if (request->path->size < 2) {
16047  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16048  }
16049 
16050  xml_blob = g_byte_array_new();
16051  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16052  if (error != NULL) {
16053  g_byte_array_free(xml_blob, TRUE);
16054  return error;
16055  }
16056 
16057  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
16058 }
16060  ds3_error* error;
16061  GByteArray* xml_blob;
16062 
16063  if (request->path->size < 2) {
16064  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16065  }
16066 
16067  xml_blob = g_byte_array_new();
16068  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16069  if (error != NULL) {
16070  g_byte_array_free(xml_blob, TRUE);
16071  return error;
16072  }
16073 
16074  return _parse_top_level_ds3_storage_domain_response(client, request, response, xml_blob);
16075 }
16077  ds3_error* error;
16078  GByteArray* xml_blob;
16079 
16080  if (request->path->size < 2) {
16081  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16082  }
16083 
16084  xml_blob = g_byte_array_new();
16085  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16086  if (error != NULL) {
16087  g_byte_array_free(xml_blob, TRUE);
16088  return error;
16089  }
16090 
16091  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
16092 }
16094 
16095  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16096  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16097  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16098  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16099  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16100  }
16101 
16102  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16103 }
16105 
16106  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16107  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16108  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16109  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16110  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16111  }
16112 
16113  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16114 }
16116 
16117  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16118  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16119  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16120  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16121  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16122  }
16123 
16124  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16125 }
16127  ds3_error* error;
16128  GByteArray* xml_blob;
16129 
16130  if (request->path->size < 2) {
16131  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16132  }
16133 
16134  xml_blob = g_byte_array_new();
16135  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16136  if (error != NULL) {
16137  g_byte_array_free(xml_blob, TRUE);
16138  return error;
16139  }
16140 
16141  return _parse_top_level_ds3_storage_domain_failure_list_response(client, request, response, xml_blob);
16142 }
16144  ds3_error* error;
16145  GByteArray* xml_blob;
16146 
16147  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16148  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16149  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16150  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16151  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16152  }
16153 
16154  xml_blob = g_byte_array_new();
16155  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16156  if (error != NULL) {
16157  g_byte_array_free(xml_blob, TRUE);
16158  return error;
16159  }
16160 
16161  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
16162 }
16164  ds3_error* error;
16165  GByteArray* xml_blob;
16166 
16167  if (request->path->size < 2) {
16168  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16169  }
16170 
16171  xml_blob = g_byte_array_new();
16172  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16173  if (error != NULL) {
16174  g_byte_array_free(xml_blob, TRUE);
16175  return error;
16176  }
16177 
16178  return _parse_top_level_ds3_storage_domain_member_list_response(client, request, response, xml_blob);
16179 }
16181  ds3_error* error;
16182  GByteArray* xml_blob;
16183 
16184  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16185  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16186  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16187  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16188  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16189  }
16190 
16191  xml_blob = g_byte_array_new();
16192  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16193  if (error != NULL) {
16194  g_byte_array_free(xml_blob, TRUE);
16195  return error;
16196  }
16197 
16198  return _parse_top_level_ds3_storage_domain_response(client, request, response, xml_blob);
16199 }
16201  ds3_error* error;
16202  GByteArray* xml_blob;
16203 
16204  if (request->path->size < 2) {
16205  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16206  }
16207 
16208  xml_blob = g_byte_array_new();
16209  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16210  if (error != NULL) {
16211  g_byte_array_free(xml_blob, TRUE);
16212  return error;
16213  }
16214 
16215  return _parse_top_level_ds3_storage_domain_list_response(client, request, response, xml_blob);
16216 }
16218  ds3_error* error;
16219  GByteArray* xml_blob;
16220 
16221  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16222  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16223  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16224  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16225  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16226  }
16227 
16228  xml_blob = g_byte_array_new();
16229  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16230  if (error != NULL) {
16231  g_byte_array_free(xml_blob, TRUE);
16232  return error;
16233  }
16234 
16235  return _parse_top_level_ds3_storage_domain_member_response(client, request, response, xml_blob);
16236 }
16238  ds3_error* error;
16239  GByteArray* xml_blob;
16240 
16241  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16242  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16243  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16244  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16245  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16246  }
16247 
16248  xml_blob = g_byte_array_new();
16249  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16250  if (error != NULL) {
16251  g_byte_array_free(xml_blob, TRUE);
16252  return error;
16253  }
16254 
16255  return _parse_top_level_ds3_storage_domain_response(client, request, response, xml_blob);
16256 }
16258  ds3_error* error;
16259  GByteArray* xml_blob;
16260 
16261  if (request->path->size < 2) {
16262  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16263  }
16264 
16265  xml_blob = g_byte_array_new();
16266  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16267  if (error != NULL) {
16268  g_byte_array_free(xml_blob, TRUE);
16269  return error;
16270  }
16271 
16272  return _parse_top_level_ds3_system_failure_list_response(client, request, response, xml_blob);
16273 }
16275  ds3_error* error;
16276  GByteArray* xml_blob;
16277 
16278 
16279 
16280  xml_blob = g_byte_array_new();
16281  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16282  if (error != NULL) {
16283  g_byte_array_free(xml_blob, TRUE);
16284  return error;
16285  }
16286 
16287  return _parse_top_level_ds3_system_information_response(client, request, response, xml_blob);
16288 }
16290  ds3_error* error;
16291  GByteArray* xml_blob;
16292 
16293 
16294 
16295  xml_blob = g_byte_array_new();
16296  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16297  if (error != NULL) {
16298  g_byte_array_free(xml_blob, TRUE);
16299  return error;
16300  }
16301 
16302  return _parse_top_level_ds3_health_verification_result_response(client, request, response, xml_blob);
16303 }
16305  ds3_error* error;
16306  GByteArray* xml_blob;
16307 
16308  if (request->path->size < 2) {
16309  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16310  }
16311 
16312  xml_blob = g_byte_array_new();
16313  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16314  if (error != NULL) {
16315  g_byte_array_free(xml_blob, TRUE);
16316  return error;
16317  }
16318 
16319  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
16320 }
16322  ds3_error* error;
16323  GByteArray* xml_blob;
16324 
16325  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16326  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16327  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16328  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16329  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16330  }
16331 
16332  xml_blob = g_byte_array_new();
16333  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16334  if (error != NULL) {
16335  g_byte_array_free(xml_blob, TRUE);
16336  return error;
16337  }
16338 
16339  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
16340 }
16342  ds3_error* error;
16343  GByteArray* xml_blob;
16344 
16345  if (request->path->size < 2) {
16346  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16347  }
16348 
16349  xml_blob = g_byte_array_new();
16350  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16351  if (error != NULL) {
16352  g_byte_array_free(xml_blob, TRUE);
16353  return error;
16354  }
16355 
16356  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
16357 }
16359  ds3_error* error;
16360  GByteArray* xml_blob;
16361 
16362  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16363  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16364  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16365  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16366  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16367  }
16368 
16369  xml_blob = g_byte_array_new();
16370  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16371  if (error != NULL) {
16372  g_byte_array_free(xml_blob, TRUE);
16373  return error;
16374  }
16375 
16376  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
16377 }
16379  ds3_error* error;
16380  GByteArray* xml_blob;
16381 
16382  if (request->path->size < 2) {
16383  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16384  }
16385 
16386  xml_blob = g_byte_array_new();
16387  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16388  if (error != NULL) {
16389  g_byte_array_free(xml_blob, TRUE);
16390  return error;
16391  }
16392 
16393  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
16394 }
16396  ds3_error* error;
16397  GByteArray* xml_blob;
16398 
16399  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16400  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16401  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16402  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16403  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id 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, NULL);
16408  if (error != NULL) {
16409  g_byte_array_free(xml_blob, TRUE);
16410  return error;
16411  }
16412 
16413  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
16414 }
16416  ds3_error* error;
16417  GByteArray* xml_blob;
16418 
16419  if (request->path->size < 2) {
16420  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16421  }
16422 
16423  xml_blob = g_byte_array_new();
16424  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16425  if (error != NULL) {
16426  g_byte_array_free(xml_blob, TRUE);
16427  return error;
16428  }
16429 
16430  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
16431 }
16433  ds3_error* error;
16434  GByteArray* xml_blob;
16435 
16436  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16437  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16438  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16439  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16440  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16441  }
16442 
16443  xml_blob = g_byte_array_new();
16444  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16445  if (error != NULL) {
16446  g_byte_array_free(xml_blob, TRUE);
16447  return error;
16448  }
16449 
16450  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
16451 }
16453  ds3_error* error;
16454  GByteArray* xml_blob;
16455 
16456  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16457  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16458  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16459  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16460  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16461  }
16462 
16463  xml_blob = g_byte_array_new();
16464  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16465  if (error != NULL) {
16466  g_byte_array_free(xml_blob, TRUE);
16467  return error;
16468  }
16469 
16470  return _parse_top_level_ds3_tape_drive_response(client, request, response, xml_blob);
16471 }
16473  ds3_error* error;
16474  GByteArray* xml_blob;
16475 
16476  if (request->path->size < 2) {
16477  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16478  }
16479 
16480  xml_blob = g_byte_array_new();
16481  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16482  if (error != NULL) {
16483  g_byte_array_free(xml_blob, TRUE);
16484  return error;
16485  }
16486 
16487  return _parse_top_level_ds3_tape_density_directive_response(client, request, response, xml_blob);
16488 }
16490 
16491  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16492  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16493  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16494  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16495  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16496  }
16497 
16498  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16499 }
16501 
16502  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16503  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16504  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16505  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16506  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16507  }
16508 
16509  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16510 }
16512 
16513  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16514  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16515  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16516  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16517  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16518  }
16519 
16520  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16521 }
16523 
16524  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16525  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16526  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16527  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16528  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16529  }
16530 
16531  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16532 }
16534 
16535  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16536  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16537  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16538  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16539  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16540  }
16541 
16542  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16543 }
16545 
16546  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16547  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16548  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16549  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16550  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16551  }
16552 
16553  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16554 }
16556  ds3_error* error;
16557  GByteArray* xml_blob;
16558 
16559  if (request->path->size < 2) {
16560  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16561  }
16562 
16563  xml_blob = g_byte_array_new();
16564  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16565  if (error != NULL) {
16566  g_byte_array_free(xml_blob, TRUE);
16567  return error;
16568  }
16569 
16570  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
16571 }
16573  ds3_error* error;
16574  ds3_xml_send_buff send_buff;
16575 
16576  if (request->path->size < 2) {
16577  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16578  }
16579 
16580  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
16581  if (error != NULL) return error;
16582 
16583  error = _internal_request_dispatcher(client, request, NULL, NULL, (void*) &send_buff, _ds3_send_xml_buff, NULL);
16584 
16585  // Clean up the data sent to the server
16586  xmlFree(send_buff.buff);
16587 
16588  return error;
16589 }
16591  ds3_error* error;
16592  ds3_xml_send_buff send_buff;
16593  GByteArray* xml_blob;
16594 
16595  if (request->path->size < 2) {
16596  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16597  }
16598 
16599  error = _init_request_payload(request, &send_buff, GET_PHYSICAL_PLACEMENT);
16600  if (error != NULL) return error;
16601 
16602  xml_blob = g_byte_array_new();
16603  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, (void*) &send_buff, _ds3_send_xml_buff, NULL);
16604 
16605  // Clean up the data sent to the server
16606  xmlFree(send_buff.buff);
16607 
16608  if (error != NULL) {
16609  g_byte_array_free(xml_blob, TRUE);
16610  return error;
16611  }
16612 
16613  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
16614 }
16616  ds3_error* error;
16617  GByteArray* xml_blob;
16618 
16619  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16620  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16621  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16622  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16623  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16624  }
16625 
16626  xml_blob = g_byte_array_new();
16627  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16628  if (error != NULL) {
16629  g_byte_array_free(xml_blob, TRUE);
16630  return error;
16631  }
16632 
16633  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
16634 }
16636 
16637 
16638 
16639  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
16640 }
16642  ds3_error* error;
16643  GByteArray* xml_blob;
16644 
16645  if (request->path->size < 2) {
16646  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16647  }
16648 
16649  xml_blob = g_byte_array_new();
16650  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16651  if (error != NULL) {
16652  g_byte_array_free(xml_blob, TRUE);
16653  return error;
16654  }
16655 
16656  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
16657 }
16659  ds3_error* error;
16660  GByteArray* xml_blob;
16661 
16662  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16663  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16664  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16665  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16666  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16667  }
16668 
16669  xml_blob = g_byte_array_new();
16670  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16671  if (error != NULL) {
16672  g_byte_array_free(xml_blob, TRUE);
16673  return error;
16674  }
16675 
16676  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
16677 }
16679  ds3_error* error;
16680  GByteArray* xml_blob;
16681 
16682  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16683  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16684  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16685  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16686  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16687  }
16688 
16689  xml_blob = g_byte_array_new();
16690  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16691  if (error != NULL) {
16692  g_byte_array_free(xml_blob, TRUE);
16693  return error;
16694  }
16695 
16696  return _parse_top_level_ds3_bulk_object_list_response(client, request, response, xml_blob);
16697 }
16699  ds3_error* error;
16700  GByteArray* xml_blob;
16701 
16702  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16703  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16704  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16705  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16706  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16707  }
16708 
16709  xml_blob = g_byte_array_new();
16710  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16711  if (error != NULL) {
16712  g_byte_array_free(xml_blob, TRUE);
16713  return error;
16714  }
16715 
16716  return _parse_top_level_ds3_tape_density_directive_response(client, request, response, xml_blob);
16717 }
16719  ds3_error* error;
16720  GByteArray* xml_blob;
16721 
16722  if (request->path->size < 2) {
16723  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16724  }
16725 
16726  xml_blob = g_byte_array_new();
16727  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16728  if (error != NULL) {
16729  g_byte_array_free(xml_blob, TRUE);
16730  return error;
16731  }
16732 
16733  return _parse_top_level_ds3_tape_density_directive_list_response(client, request, response, xml_blob);
16734 }
16736  ds3_error* error;
16737  GByteArray* xml_blob;
16738 
16739  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16740  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16741  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16742  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16743  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16744  }
16745 
16746  xml_blob = g_byte_array_new();
16747  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16748  if (error != NULL) {
16749  g_byte_array_free(xml_blob, TRUE);
16750  return error;
16751  }
16752 
16753  return _parse_top_level_ds3_tape_drive_response(client, request, response, xml_blob);
16754 }
16756  ds3_error* error;
16757  GByteArray* xml_blob;
16758 
16759  if (request->path->size < 2) {
16760  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16761  }
16762 
16763  xml_blob = g_byte_array_new();
16764  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16765  if (error != NULL) {
16766  g_byte_array_free(xml_blob, TRUE);
16767  return error;
16768  }
16769 
16770  return _parse_top_level_ds3_tape_drive_list_response(client, request, response, xml_blob);
16771 }
16773  ds3_error* error;
16774  GByteArray* xml_blob;
16775 
16776  if (request->path->size < 2) {
16777  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16778  }
16779 
16780  xml_blob = g_byte_array_new();
16781  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16782  if (error != NULL) {
16783  g_byte_array_free(xml_blob, TRUE);
16784  return error;
16785  }
16786 
16787  return _parse_top_level_ds3_detailed_tape_failure_list_response(client, request, response, xml_blob);
16788 }
16790  ds3_error* error;
16791  GByteArray* xml_blob;
16792 
16793  if (request->path->size < 2) {
16794  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16795  }
16796 
16797  xml_blob = g_byte_array_new();
16798  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16799  if (error != NULL) {
16800  g_byte_array_free(xml_blob, TRUE);
16801  return error;
16802  }
16803 
16804  return _parse_top_level_ds3_tape_library_list_response(client, request, response, xml_blob);
16805 }
16807  ds3_error* error;
16808  GByteArray* xml_blob;
16809 
16810  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16811  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16812  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16813  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16814  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16815  }
16816 
16817  xml_blob = g_byte_array_new();
16818  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16819  if (error != NULL) {
16820  g_byte_array_free(xml_blob, TRUE);
16821  return error;
16822  }
16823 
16824  return _parse_top_level_ds3_tape_library_response(client, request, response, xml_blob);
16825 }
16827  ds3_error* error;
16828  GByteArray* xml_blob;
16829 
16830  if (request->path->size < 2) {
16831  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16832  }
16833 
16834  xml_blob = g_byte_array_new();
16835  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16836  if (error != NULL) {
16837  g_byte_array_free(xml_blob, TRUE);
16838  return error;
16839  }
16840 
16841  return _parse_top_level_ds3_tape_partition_failure_list_response(client, request, response, xml_blob);
16842 }
16844  ds3_error* error;
16845  GByteArray* xml_blob;
16846 
16847  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16848  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16849  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16850  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16851  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16852  }
16853 
16854  xml_blob = g_byte_array_new();
16855  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16856  if (error != NULL) {
16857  g_byte_array_free(xml_blob, TRUE);
16858  return error;
16859  }
16860 
16861  return _parse_top_level_ds3_tape_partition_response(client, request, response, xml_blob);
16862 }
16864  ds3_error* error;
16865  GByteArray* xml_blob;
16866 
16867  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16868  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16869  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16870  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16871  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16872  }
16873 
16874  xml_blob = g_byte_array_new();
16875  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16876  if (error != NULL) {
16877  g_byte_array_free(xml_blob, TRUE);
16878  return error;
16879  }
16880 
16881  return _parse_top_level_ds3_detailed_tape_partition_response(client, request, response, xml_blob);
16882 }
16884  ds3_error* error;
16885  GByteArray* xml_blob;
16886 
16887  if (request->path->size < 2) {
16888  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16889  }
16890 
16891  xml_blob = g_byte_array_new();
16892  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16893  if (error != NULL) {
16894  g_byte_array_free(xml_blob, TRUE);
16895  return error;
16896  }
16897 
16898  return _parse_top_level_ds3_tape_partition_list_response(client, request, response, xml_blob);
16899 }
16901  ds3_error* error;
16902  GByteArray* xml_blob;
16903 
16904  if (request->path->size < 2) {
16905  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16906  }
16907 
16908  xml_blob = g_byte_array_new();
16909  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16910  if (error != NULL) {
16911  g_byte_array_free(xml_blob, TRUE);
16912  return error;
16913  }
16914 
16915  return _parse_top_level_ds3_named_detailed_tape_partition_list_response(client, request, response, xml_blob);
16916 }
16918  ds3_error* error;
16919  GByteArray* xml_blob;
16920 
16921  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16922  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16923  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16924  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16925  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16926  }
16927 
16928  xml_blob = g_byte_array_new();
16929  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16930  if (error != NULL) {
16931  g_byte_array_free(xml_blob, TRUE);
16932  return error;
16933  }
16934 
16935  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
16936 }
16938  ds3_error* error;
16939  GByteArray* xml_blob;
16940 
16941  int num_slashes = num_chars_in_ds3_str(request->path, '/');
16942  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
16943  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16944  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
16945  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
16946  }
16947 
16948  xml_blob = g_byte_array_new();
16949  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16950  if (error != NULL) {
16951  g_byte_array_free(xml_blob, TRUE);
16952  return error;
16953  }
16954 
16955  return _parse_top_level_ds3_detailed_tape_response(client, request, response, xml_blob);
16956 }
16958  ds3_error* error;
16959  GByteArray* xml_blob;
16960 
16961  if (request->path->size < 2) {
16962  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16963  }
16964 
16965  xml_blob = g_byte_array_new();
16966  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16967  if (error != NULL) {
16968  g_byte_array_free(xml_blob, TRUE);
16969  return error;
16970  }
16971 
16972  return _parse_top_level_ds3_tape_list_response(client, request, response, xml_blob);
16973 }
16975  ds3_error* error;
16976  GByteArray* xml_blob;
16977 
16978  if (request->path->size < 2) {
16979  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16980  }
16981 
16982  xml_blob = g_byte_array_new();
16983  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
16984  if (error != NULL) {
16985  g_byte_array_free(xml_blob, TRUE);
16986  return error;
16987  }
16988 
16989  return _parse_top_level_ds3_named_detailed_tape_list_response(client, request, response, xml_blob);
16990 }
16992  ds3_error* error;
16993  GByteArray* xml_blob;
16994 
16995  if (request->path->size < 2) {
16996  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
16997  }
16998 
16999  xml_blob = g_byte_array_new();
17000  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17001  if (error != NULL) {
17002  g_byte_array_free(xml_blob, TRUE);
17003  return error;
17004  }
17005 
17006  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17007 }
17009  ds3_error* error;
17010  GByteArray* xml_blob;
17011 
17012  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17013  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17014  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17015  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17016  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17017  }
17018 
17019  xml_blob = g_byte_array_new();
17020  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17021  if (error != NULL) {
17022  g_byte_array_free(xml_blob, TRUE);
17023  return error;
17024  }
17025 
17026  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17027 }
17029  ds3_error* error;
17030  GByteArray* xml_blob;
17031 
17032  if (request->path->size < 2) {
17033  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17034  }
17035 
17036  xml_blob = g_byte_array_new();
17037  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17038  if (error != NULL) {
17039  g_byte_array_free(xml_blob, TRUE);
17040  return error;
17041  }
17042 
17043  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17044 }
17046  ds3_error* error;
17047  GByteArray* xml_blob;
17048 
17049  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17050  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17051  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17052  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17053  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17054  }
17055 
17056  xml_blob = g_byte_array_new();
17057  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17058  if (error != NULL) {
17059  g_byte_array_free(xml_blob, TRUE);
17060  return error;
17061  }
17062 
17063  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17064 }
17066 
17067  if (request->path->size < 2) {
17068  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17069  }
17070 
17071  return _internal_request_dispatcher(client, request, NULL, NULL, NULL, NULL, NULL);
17072 }
17074  ds3_error* error;
17075  GByteArray* xml_blob;
17076 
17077  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17078  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17079  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17080  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17081  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17082  }
17083 
17084  xml_blob = g_byte_array_new();
17085  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17086  if (error != NULL) {
17087  g_byte_array_free(xml_blob, TRUE);
17088  return error;
17089  }
17090 
17091  return _parse_top_level_ds3_tape_partition_response(client, request, response, xml_blob);
17092 }
17094  ds3_error* error;
17095  GByteArray* xml_blob;
17096 
17097  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17098  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17099  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17100  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17101  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17102  }
17103 
17104  xml_blob = g_byte_array_new();
17105  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17106  if (error != NULL) {
17107  g_byte_array_free(xml_blob, TRUE);
17108  return error;
17109  }
17110 
17111  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17112 }
17114  ds3_error* error;
17115  GByteArray* xml_blob;
17116 
17117  if (request->path->size < 2) {
17118  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17119  }
17120 
17121  xml_blob = g_byte_array_new();
17122  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17123  if (error != NULL) {
17124  g_byte_array_free(xml_blob, TRUE);
17125  return error;
17126  }
17127 
17128  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17129 }
17131  ds3_error* error;
17132  GByteArray* xml_blob;
17133 
17134  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17135  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17136  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17137  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17138  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17139  }
17140 
17141  xml_blob = g_byte_array_new();
17142  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17143  if (error != NULL) {
17144  g_byte_array_free(xml_blob, TRUE);
17145  return error;
17146  }
17147 
17148  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17149 }
17151  ds3_error* error;
17152  GByteArray* xml_blob;
17153 
17154  if (request->path->size < 2) {
17155  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17156  }
17157 
17158  xml_blob = g_byte_array_new();
17159  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17160  if (error != NULL) {
17161  g_byte_array_free(xml_blob, TRUE);
17162  return error;
17163  }
17164 
17165  return _parse_top_level_ds3_tape_failure_list_response(client, request, response, xml_blob);
17166 }
17168  ds3_error* error;
17169  GByteArray* xml_blob;
17170 
17171  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17172  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17173  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17174  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17175  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17176  }
17177 
17178  xml_blob = g_byte_array_new();
17179  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17180  if (error != NULL) {
17181  g_byte_array_free(xml_blob, TRUE);
17182  return error;
17183  }
17184 
17185  return _parse_top_level_ds3_tape_response(client, request, response, xml_blob);
17186 }
17188  ds3_error* error;
17189  GByteArray* xml_blob;
17190 
17191  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17192  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17193  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17194  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17195  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17196  }
17197 
17198  xml_blob = g_byte_array_new();
17199  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17200  if (error != NULL) {
17201  g_byte_array_free(xml_blob, TRUE);
17202  return error;
17203  }
17204 
17205  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
17206 }
17208  ds3_error* error;
17209  GByteArray* xml_blob;
17210 
17211  if (request->path->size < 2) {
17212  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17213  }
17214 
17215  xml_blob = g_byte_array_new();
17216  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17217  if (error != NULL) {
17218  g_byte_array_free(xml_blob, TRUE);
17219  return error;
17220  }
17221 
17222  return _parse_top_level_ds3_spectra_user_list_response(client, request, response, xml_blob);
17223 }
17225  ds3_error* error;
17226  GByteArray* xml_blob;
17227 
17228  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17229  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17230  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17231  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17232  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17233  }
17234 
17235  xml_blob = g_byte_array_new();
17236  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17237  if (error != NULL) {
17238  g_byte_array_free(xml_blob, TRUE);
17239  return error;
17240  }
17241 
17242  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
17243 }
17245  ds3_error* error;
17246  GByteArray* xml_blob;
17247 
17248  int num_slashes = num_chars_in_ds3_str(request->path, '/');
17249  if (num_slashes < 2 || ((num_slashes == 2) && ('/' == request->path->value[request->path->size-1]))) {
17250  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource type parameter is required.");
17251  } else if (g_ascii_strncasecmp(request->path->value, "//", 2) == 0) {
17252  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "The resource id parameter is required.");
17253  }
17254 
17255  xml_blob = g_byte_array_new();
17256  error = _internal_request_dispatcher(client, request, xml_blob, ds3_load_buffer, NULL, NULL, NULL);
17257  if (error != NULL) {
17258  g_byte_array_free(xml_blob, TRUE);
17259  return error;
17260  }
17261 
17262  return _parse_top_level_ds3_spectra_user_response(client, request, response, xml_blob);
17263 }
17264 
17266  if (response == NULL) {
17267  return;
17268  }
17269 
17270  ds3_str_free(response->etag);
17271 
17272  g_free(response);
17273 }
17274 
17276  if (response == NULL) {
17277  return;
17278  }
17279 
17280  int index;
17281  for (index = 0; index < response->num_parts; index++) {
17283  }
17284  g_free(response->parts);
17285  g_free(response);
17286 }
17287 
17289  if (response == NULL) {
17290  return;
17291  }
17292 
17293  int index;
17294  for (index = 0; index < response->num_strings; index++) {
17295  ds3_str_free(response->strings_list[index]);
17296  }
17297  g_free(response->strings_list);
17298  g_free(response);
17299 }
17300 
17302  struct _ds3_request* request;
17303  if (_request == NULL) {
17304  return;
17305  }
17306 
17307  request = (struct _ds3_request*) _request;
17308 
17309  ds3_str_free(request->path);
17310  ds3_str_free(request->checksum);
17311 
17312  if (request->headers != NULL) {
17313  g_hash_table_destroy(request->headers);
17314  }
17315  if (request->query_params != NULL) {
17316  g_hash_table_destroy(request->query_params);
17317  }
17318 
17319  g_free(request);
17320 }
17321 
17323  if (error == NULL) {
17324  return;
17325  }
17326 
17327  ds3_str_free(error->message);
17328 
17330 
17331  g_free(error);
17332 }
17333 
17334 void ds3_cleanup(void) {
17335  net_cleanup();
17336  xmlCleanupParser();
17337 }
17338 
17339 
17341  if (response == NULL) {
17342  return;
17343  }
17344 
17345  ds3_str_free(response->checksum);
17346  ds3_str_free(response->id);
17347  ds3_str_free(response->object_id);
17348 
17349  g_free(response);
17350 }
17352  if (response == NULL) {
17353  return;
17354  }
17355 
17356  ds3_str_free(response->creation_date);
17357  ds3_str_free(response->data_policy_id);
17358  ds3_str_free(response->id);
17359  ds3_str_free(response->name);
17360  ds3_str_free(response->user_id);
17361 
17362  g_free(response);
17363 }
17365  if (response == NULL) {
17366  return;
17367  }
17368 
17369  ds3_str_free(response->bucket_id);
17370  ds3_str_free(response->group_id);
17371  ds3_str_free(response->id);
17372  ds3_str_free(response->user_id);
17373 
17374  g_free(response);
17375 }
17377  if (response == NULL) {
17378  return;
17379  }
17380 
17381  ds3_str_free(response->bucket_id);
17382  ds3_str_free(response->created_at);
17383  ds3_str_free(response->date_canceled);
17384  ds3_str_free(response->error_message);
17385  ds3_str_free(response->id);
17386  ds3_str_free(response->name);
17387  ds3_str_free(response->rechunked);
17388  ds3_str_free(response->user_id);
17389 
17390  g_free(response);
17391 }
17393  if (response == NULL) {
17394  return;
17395  }
17396 
17397  ds3_str_free(response->bucket_id);
17398  ds3_str_free(response->created_at);
17399  ds3_str_free(response->date_completed);
17400  ds3_str_free(response->error_message);
17401  ds3_str_free(response->id);
17402  ds3_str_free(response->name);
17403  ds3_str_free(response->rechunked);
17404  ds3_str_free(response->user_id);
17405 
17406  g_free(response);
17407 }
17409  if (response == NULL) {
17410  return;
17411  }
17412 
17413  ds3_str_free(response->id);
17414  ds3_str_free(response->last_heartbeat);
17415 
17416  g_free(response);
17417 }
17419  if (response == NULL) {
17420  return;
17421  }
17422 
17423  ds3_str_free(response->data_policy_id);
17424  ds3_str_free(response->id);
17425  ds3_str_free(response->storage_domain_id);
17426 
17427  g_free(response);
17428 }
17430  if (response == NULL) {
17431  return;
17432  }
17433 
17434  ds3_str_free(response->creation_date);
17435  ds3_str_free(response->id);
17436  ds3_str_free(response->name);
17437 
17438  g_free(response);
17439 }
17441  if (response == NULL) {
17442  return;
17443  }
17444 
17445  ds3_str_free(response->data_policy_id);
17446  ds3_str_free(response->group_id);
17447  ds3_str_free(response->id);
17448  ds3_str_free(response->user_id);
17449 
17450  g_free(response);
17451 }
17453  if (response == NULL) {
17454  return;
17455  }
17456 
17457  ds3_str_free(response->id);
17458  ds3_str_free(response->name);
17459 
17460  g_free(response);
17461 }
17463  if (response == NULL) {
17464  return;
17465  }
17466 
17467  ds3_str_free(response->group_id);
17468  ds3_str_free(response->id);
17469  ds3_str_free(response->member_group_id);
17470  ds3_str_free(response->member_user_id);
17471 
17472  g_free(response);
17473 }
17475  if (response == NULL) {
17476  return;
17477  }
17478 
17479  ds3_str_free(response->bucket_id);
17480  ds3_str_free(response->created_at);
17481  ds3_str_free(response->error_message);
17482  ds3_str_free(response->id);
17483  ds3_str_free(response->name);
17484  ds3_str_free(response->rechunked);
17485  ds3_str_free(response->user_id);
17486 
17487  g_free(response);
17488 }
17490  if (response == NULL) {
17491  return;
17492  }
17493 
17495  ds3_str_free(response->dns_name);
17496  ds3_str_free(response->id);
17497  ds3_str_free(response->last_heartbeat);
17498  ds3_str_free(response->name);
17499  ds3_str_free(response->serial_number);
17500 
17501  g_free(response);
17502 }
17504  if (response == NULL) {
17505  return;
17506  }
17507 
17508  ds3_str_free(response->bucket_id);
17509  ds3_str_free(response->creation_date);
17510  ds3_str_free(response->id);
17511  ds3_str_free(response->name);
17512 
17513  g_free(response);
17514 }
17516  if (response == NULL) {
17517  return;
17518  }
17519 
17521  ds3_str_free(response->id);
17522  ds3_str_free(response->name);
17523 
17524  g_free(response);
17525 }
17527  if (response == NULL) {
17528  return;
17529  }
17530 
17531 
17532  g_free(response);
17533 }
17535  if (response == NULL) {
17536  return;
17537  }
17538 
17539  ds3_str_free(response->date);
17540  ds3_str_free(response->error_message);
17541  ds3_str_free(response->id);
17542  ds3_str_free(response->storage_domain_id);
17543 
17544  g_free(response);
17545 }
17547  if (response == NULL) {
17548  return;
17549  }
17550 
17551  ds3_str_free(response->id);
17552  ds3_str_free(response->pool_partition_id);
17553  ds3_str_free(response->storage_domain_id);
17554  ds3_str_free(response->tape_partition_id);
17555 
17556  g_free(response);
17557 }
17559  if (response == NULL) {
17560  return;
17561  }
17562 
17563  ds3_str_free(response->date);
17564  ds3_str_free(response->error_message);
17565  ds3_str_free(response->id);
17566 
17567  g_free(response);
17568 }
17570  if (response == NULL) {
17571  return;
17572  }
17573 
17574  ds3_str_free(response->auth_id);
17576  ds3_str_free(response->id);
17577  ds3_str_free(response->name);
17578  ds3_str_free(response->secret_key);
17579 
17580  g_free(response);
17581 }
17583  if (response == NULL) {
17584  return;
17585  }
17586 
17587  ds3_str_free(response->creation_date);
17588  ds3_str_free(response->dao_type);
17589  ds3_str_free(response->id);
17590  ds3_str_free(response->last_failure);
17591  ds3_str_free(response->last_notification);
17593  ds3_str_free(response->user_id);
17594 
17595  g_free(response);
17596 }
17598  if (response == NULL) {
17599  return;
17600  }
17601 
17602  ds3_str_free(response->creation_date);
17603  ds3_str_free(response->id);
17604  ds3_str_free(response->job_id);
17605  ds3_str_free(response->last_failure);
17606  ds3_str_free(response->last_notification);
17608  ds3_str_free(response->user_id);
17609 
17610  g_free(response);
17611 }
17613  if (response == NULL) {
17614  return;
17615  }
17616 
17617  ds3_str_free(response->creation_date);
17618  ds3_str_free(response->id);
17619  ds3_str_free(response->last_failure);
17620  ds3_str_free(response->last_notification);
17622  ds3_str_free(response->user_id);
17623 
17624  g_free(response);
17625 }
17627  if (response == NULL) {
17628  return;
17629  }
17630 
17631  ds3_str_free(response->creation_date);
17632  ds3_str_free(response->id);
17633  ds3_str_free(response->last_failure);
17634  ds3_str_free(response->last_notification);
17636  ds3_str_free(response->user_id);
17637 
17638  g_free(response);
17639 }
17641  if (response == NULL) {
17642  return;
17643  }
17644 
17645  ds3_str_free(response->creation_date);
17646  ds3_str_free(response->id);
17647  ds3_str_free(response->job_id);
17648  ds3_str_free(response->last_failure);
17649  ds3_str_free(response->last_notification);
17651  ds3_str_free(response->user_id);
17652 
17653  g_free(response);
17654 }
17656  if (response == NULL) {
17657  return;
17658  }
17659 
17660  ds3_str_free(response->creation_date);
17661  ds3_str_free(response->id);
17662  ds3_str_free(response->last_failure);
17663  ds3_str_free(response->last_notification);
17665  ds3_str_free(response->user_id);
17666 
17667  g_free(response);
17668 }
17670  if (response == NULL) {
17671  return;
17672  }
17673 
17674  ds3_str_free(response->creation_date);
17675  ds3_str_free(response->id);
17676  ds3_str_free(response->job_id);
17677  ds3_str_free(response->last_failure);
17678  ds3_str_free(response->last_notification);
17680  ds3_str_free(response->user_id);
17681 
17682  g_free(response);
17683 }
17685  if (response == NULL) {
17686  return;
17687  }
17688 
17689  ds3_str_free(response->creation_date);
17690  ds3_str_free(response->id);
17691  ds3_str_free(response->last_failure);
17692  ds3_str_free(response->last_notification);
17694  ds3_str_free(response->user_id);
17695 
17696  g_free(response);
17697 }
17699  if (response == NULL) {
17700  return;
17701  }
17702 
17703  ds3_str_free(response->creation_date);
17704  ds3_str_free(response->id);
17705  ds3_str_free(response->last_failure);
17706  ds3_str_free(response->last_notification);
17708  ds3_str_free(response->user_id);
17709 
17710  g_free(response);
17711 }
17713  if (response == NULL) {
17714  return;
17715  }
17716 
17717  ds3_str_free(response->creation_date);
17718  ds3_str_free(response->id);
17719  ds3_str_free(response->last_failure);
17720  ds3_str_free(response->last_notification);
17722  ds3_str_free(response->user_id);
17723 
17724  g_free(response);
17725 }
17727  if (response == NULL) {
17728  return;
17729  }
17730 
17731  ds3_str_free(response->creation_date);
17732  ds3_str_free(response->id);
17733  ds3_str_free(response->last_failure);
17734  ds3_str_free(response->last_notification);
17736  ds3_str_free(response->user_id);
17737 
17738  g_free(response);
17739 }
17741  if (response == NULL) {
17742  return;
17743  }
17744 
17745  ds3_str_free(response->id);
17746  ds3_str_free(response->node_id);
17747  ds3_str_free(response->path);
17748 
17749  g_free(response);
17750 }
17752  if (response == NULL) {
17753  return;
17754  }
17755 
17756  ds3_str_free(response->bucket_id);
17757  ds3_str_free(response->guid);
17758  ds3_str_free(response->id);
17759  ds3_str_free(response->last_accessed);
17760  ds3_str_free(response->last_modified);
17761  ds3_str_free(response->last_verified);
17762  ds3_str_free(response->mountpoint);
17763  ds3_str_free(response->name);
17764  ds3_str_free(response->partition_id);
17765  ds3_str_free(response->storage_domain_id);
17766 
17767  g_free(response);
17768 }
17770  if (response == NULL) {
17771  return;
17772  }
17773 
17774  ds3_str_free(response->date);
17775  ds3_str_free(response->error_message);
17776  ds3_str_free(response->id);
17777  ds3_str_free(response->pool_id);
17778 
17779  g_free(response);
17780 }
17782  if (response == NULL) {
17783  return;
17784  }
17785 
17786  ds3_str_free(response->id);
17787  ds3_str_free(response->name);
17788 
17789  g_free(response);
17790 }
17792  if (response == NULL) {
17793  return;
17794  }
17795 
17796  ds3_str_free(response->bar_code);
17797  ds3_str_free(response->bucket_id);
17799  ds3_str_free(response->eject_date);
17800  ds3_str_free(response->eject_label);
17801  ds3_str_free(response->eject_location);
17802  ds3_str_free(response->eject_pending);
17803  ds3_str_free(response->id);
17804  ds3_str_free(response->last_accessed);
17805  ds3_str_free(response->last_checkpoint);
17806  ds3_str_free(response->last_modified);
17807  ds3_str_free(response->last_verified);
17808  ds3_str_free(response->partition_id);
17809  ds3_str_free(response->serial_number);
17810  ds3_str_free(response->storage_domain_id);
17811 
17812  g_free(response);
17813 }
17815  if (response == NULL) {
17816  return;
17817  }
17818 
17819  ds3_str_free(response->id);
17820  ds3_str_free(response->partition_id);
17821 
17822  g_free(response);
17823 }
17825  if (response == NULL) {
17826  return;
17827  }
17828 
17829  ds3_str_free(response->error_message);
17830  ds3_str_free(response->id);
17831  ds3_str_free(response->last_cleaned);
17832  ds3_str_free(response->partition_id);
17833  ds3_str_free(response->serial_number);
17834  ds3_str_free(response->tape_id);
17835 
17836  g_free(response);
17837 }
17839  if (response == NULL) {
17840  return;
17841  }
17842 
17843  ds3_str_free(response->date);
17844  ds3_str_free(response->error_message);
17845  ds3_str_free(response->id);
17846  ds3_str_free(response->tape_drive_id);
17847  ds3_str_free(response->tape_id);
17848 
17849  g_free(response);
17850 }
17852  if (response == NULL) {
17853  return;
17854  }
17855 
17856  ds3_str_free(response->id);
17857  ds3_str_free(response->management_url);
17858  ds3_str_free(response->name);
17859  ds3_str_free(response->serial_number);
17860 
17861  g_free(response);
17862 }
17864  if (response == NULL) {
17865  return;
17866  }
17867 
17868  ds3_str_free(response->error_message);
17869  ds3_str_free(response->id);
17870  ds3_str_free(response->library_id);
17871  ds3_str_free(response->name);
17872  ds3_str_free(response->serial_number);
17873 
17874  g_free(response);
17875 }
17877  if (response == NULL) {
17878  return;
17879  }
17880 
17881  ds3_str_free(response->date);
17882  ds3_str_free(response->error_message);
17883  ds3_str_free(response->id);
17884  ds3_str_free(response->partition_id);
17885 
17886  g_free(response);
17887 }
17889  if (response == NULL) {
17890  return;
17891  }
17892 
17893  ds3_str_free(response->branch);
17894  ds3_str_free(response->revision);
17895  ds3_str_free(response->version);
17896 
17897  g_free(response);
17898 }
17900  if (response == NULL) {
17901  return;
17902  }
17903 
17904  size_t index;
17905  ds3_str_free(response->dao_type);
17906  for (index = 0; index < response->num_ids; index++) {
17907  ds3_str_free(response->ids[index]);
17908  }
17909  g_free(response->ids);
17911 
17912  g_free(response);
17913 }
17915  if (response == NULL) {
17916  return;
17917  }
17918 
17919  ds3_str_free(response->job_id);
17921 
17922  g_free(response);
17923 }
17925  if (response == NULL) {
17926  return;
17927  }
17928 
17929  ds3_str_free(response->date);
17930  ds3_str_free(response->error_message);
17932  ds3_str_free(response->pool_id);
17933 
17934  g_free(response);
17935 }
17937  if (response == NULL) {
17938  return;
17939  }
17940 
17941  ds3_str_free(response->date);
17942  ds3_str_free(response->error_message);
17944  ds3_str_free(response->storage_domain_id);
17945 
17946  g_free(response);
17947 }
17949  if (response == NULL) {
17950  return;
17951  }
17952 
17953  ds3_str_free(response->date);
17954  ds3_str_free(response->error_message);
17956 
17957  g_free(response);
17958 }
17960  if (response == NULL) {
17961  return;
17962  }
17963 
17964  ds3_str_free(response->date);
17965  ds3_str_free(response->error_message);
17967  ds3_str_free(response->tape_drive_id);
17968  ds3_str_free(response->tape_id);
17969 
17970  g_free(response);
17971 }
17973  if (response == NULL) {
17974  return;
17975  }
17976 
17977  ds3_str_free(response->date);
17978  ds3_str_free(response->error_message);
17980  ds3_str_free(response->partition_id);
17981 
17982  g_free(response);
17983 }
17985  if (response == NULL) {
17986  return;
17987  }
17988 
17989  ds3_str_free(response->date_scheduled);
17990  ds3_str_free(response->date_started);
17991  ds3_str_free(response->description);
17992  ds3_str_free(response->drive_id);
17993  ds3_str_free(response->name);
17994  ds3_str_free(response->pool_id);
17995  ds3_str_free(response->tape_id);
17996 
17997  g_free(response);
17998 }
18000  if (response == NULL) {
18001  return;
18002  }
18003 
18004  size_t index;
18005  for (index = 0; index < response->num_tasks; index++) {
18007  }
18008  g_free(response->tasks);
18009 
18010  g_free(response);
18011 }
18013  if (response == NULL) {
18014  return;
18015  }
18016 
18017  ds3_blob_response_free(response->blob);
18018 
18019  g_free(response);
18020 }
18022  if (response == NULL) {
18023  return;
18024  }
18025 
18026  size_t index;
18028  for (index = 0; index < response->num_entries; index++) {
18030  }
18031  g_free(response->entries);
18032  ds3_str_free(response->summary);
18033 
18034  g_free(response);
18035 }
18037  if (response == NULL) {
18038  return;
18039  }
18040 
18041  size_t index;
18042  for (index = 0; index < response->num_filesystems; index++) {
18044  }
18045  g_free(response->filesystems);
18046 
18047  g_free(response);
18048 }
18050  if (response == NULL) {
18051  return;
18052  }
18053 
18054  ds3_str_free(response->creation_date);
18055  ds3_str_free(response->name);
18056 
18057  g_free(response);
18058 }
18060  if (response == NULL) {
18061  return;
18062  }
18063 
18064  ds3_str_free(response->bucket);
18065  ds3_str_free(response->e_tag);
18066  ds3_str_free(response->key);
18067  ds3_str_free(response->location);
18068 
18069  g_free(response);
18070 }
18072  if (response == NULL) {
18073  return;
18074  }
18075 
18076  ds3_str_free(response->code);
18077  ds3_str_free(response->key);
18078  ds3_str_free(response->message);
18079 
18080  g_free(response);
18081 }
18083  if (response == NULL) {
18084  return;
18085  }
18086 
18087  ds3_str_free(response->bar_code);
18088  ds3_str_free(response->bucket_id);
18090  ds3_str_free(response->eject_date);
18091  ds3_str_free(response->eject_label);
18092  ds3_str_free(response->eject_location);
18093  ds3_str_free(response->eject_pending);
18094  ds3_str_free(response->id);
18095  ds3_str_free(response->last_accessed);
18096  ds3_str_free(response->last_checkpoint);
18097  ds3_str_free(response->last_modified);
18098  ds3_str_free(response->last_verified);
18100  ds3_str_free(response->partition_id);
18101  ds3_str_free(response->serial_number);
18102  ds3_str_free(response->storage_domain_id);
18103 
18104  g_free(response);
18105 }
18107  if (response == NULL) {
18108  return;
18109  }
18110 
18111  g_free(response->drive_types);
18112  ds3_str_free(response->error_message);
18113  ds3_str_free(response->id);
18114  ds3_str_free(response->library_id);
18115  ds3_str_free(response->name);
18116  ds3_str_free(response->serial_number);
18117  g_free(response->tape_types);
18118 
18119  g_free(response);
18120 }
18122  if (response == NULL) {
18123  return;
18124  }
18125 
18126  ds3_str_free(response->code);
18127  ds3_str_free(response->message);
18128  ds3_str_free(response->resource);
18129 
18130  g_free(response);
18131 }
18133  if (response == NULL) {
18134  return;
18135  }
18136 
18137  ds3_str_free(response->bucket);
18138  ds3_str_free(response->key);
18139  ds3_str_free(response->upload_id);
18140 
18141  g_free(response);
18142 }
18144  if (response == NULL) {
18145  return;
18146  }
18147 
18148  ds3_str_free(response->e_tag);
18149  ds3_str_free(response->last_modified);
18150 
18151  g_free(response);
18152 }
18154  if (response == NULL) {
18155  return;
18156  }
18157 
18158  ds3_str_free(response->end_point);
18159  ds3_str_free(response->id);
18160 
18161  g_free(response);
18162 }
18164  if (response == NULL) {
18165  return;
18166  }
18167 
18168  ds3_str_free(response->key);
18169 
18170  g_free(response);
18171 }
18173  if (response == NULL) {
18174  return;
18175  }
18176 
18177  ds3_str_free(response->display_name);
18178  ds3_str_free(response->id);
18179 
18180  g_free(response);
18181 }
18183  if (response == NULL) {
18184  return;
18185  }
18186 
18187  ds3_str_free(response->api_version);
18189  ds3_str_free(response->serial_number);
18190 
18191  g_free(response);
18192 }
18194  if (response == NULL) {
18195  return;
18196  }
18197 
18198 
18199  g_free(response);
18200 }
18202  if (response == NULL) {
18203  return;
18204  }
18205 
18206  g_free(response->drive_types);
18207  ds3_str_free(response->error_message);
18208  ds3_str_free(response->id);
18209  ds3_str_free(response->library_id);
18210  ds3_str_free(response->name);
18211  ds3_str_free(response->serial_number);
18212  g_free(response->tape_types);
18213 
18214  g_free(response);
18215 }
18217  if (response == NULL) {
18218  return;
18219  }
18220 
18221  ds3_str_free(response->bar_code);
18222  ds3_str_free(response->bucket_id);
18224  ds3_str_free(response->eject_date);
18225  ds3_str_free(response->eject_label);
18226  ds3_str_free(response->eject_location);
18227  ds3_str_free(response->eject_pending);
18228  ds3_str_free(response->id);
18229  ds3_str_free(response->last_accessed);
18230  ds3_str_free(response->last_checkpoint);
18231  ds3_str_free(response->last_modified);
18232  ds3_str_free(response->last_verified);
18234  ds3_str_free(response->partition_id);
18235  ds3_str_free(response->serial_number);
18236  ds3_str_free(response->storage_domain_id);
18237 
18238  g_free(response);
18239 }
18241  if (response == NULL) {
18242  return;
18243  }
18244 
18245  ds3_str_free(response->cause);
18246  ds3_tape_response_free(response->tape);
18247 
18248  g_free(response);
18249 }
18251  if (response == NULL) {
18252  return;
18253  }
18254 
18255  size_t index;
18256  for (index = 0; index < response->num_failures; index++) {
18257  ds3_tape_failure_response_free(response->failures[index]);
18258  }
18259  g_free(response->failures);
18260 
18261  g_free(response);
18262 }
18264  if (response == NULL) {
18265  return;
18266  }
18267 
18268  ds3_str_free(response->path);
18269 
18270  g_free(response);
18271 }
18273  if (response == NULL) {
18274  return;
18275  }
18276 
18278  ds3_str_free(response->domain_name);
18279 
18280  g_free(response);
18281 }
18283  if (response == NULL) {
18284  return;
18285  }
18286 
18287 
18288  g_free(response);
18289 }
18291  if (response == NULL) {
18292  return;
18293  }
18294 
18295  size_t index;
18296  for (index = 0; index < response->num_bucket_acls; index++) {
18297  ds3_bucket_acl_response_free(response->bucket_acls[index]);
18298  }
18299  g_free(response->bucket_acls);
18300 
18301  g_free(response);
18302 }
18304  if (response == NULL) {
18305  return;
18306  }
18307 
18308  size_t index;
18309  for (index = 0; index < response->num_data_policy_acls; index++) {
18311  }
18312  g_free(response->data_policy_acls);
18313 
18314  g_free(response);
18315 }
18317  if (response == NULL) {
18318  return;
18319  }
18320 
18321  size_t index;
18322  for (index = 0; index < response->num_buckets; index++) {
18323  ds3_bucket_response_free(response->buckets[index]);
18324  }
18325  g_free(response->buckets);
18326 
18327  g_free(response);
18328 }
18330  if (response == NULL) {
18331  return;
18332  }
18333 
18334  size_t index;
18335  for (index = 0; index < response->num_cache_filesystems; index++) {
18337  }
18338  g_free(response->cache_filesystems);
18339 
18340  g_free(response);
18341 }
18343  if (response == NULL) {
18344  return;
18345  }
18346 
18347  size_t index;
18348  for (index = 0; index < response->num_data_persistence_rules; index++) {
18350  }
18351  g_free(response->data_persistence_rules);
18352 
18353  g_free(response);
18354 }
18356  if (response == NULL) {
18357  return;
18358  }
18359 
18360  size_t index;
18361  for (index = 0; index < response->num_data_policies; index++) {
18362  ds3_data_policy_response_free(response->data_policies[index]);
18363  }
18364  g_free(response->data_policies);
18365 
18366  g_free(response);
18367 }
18369  if (response == NULL) {
18370  return;
18371  }
18372 
18373  size_t index;
18374  for (index = 0; index < response->num_group_members; index++) {
18376  }
18377  g_free(response->group_members);
18378 
18379  g_free(response);
18380 }
18382  if (response == NULL) {
18383  return;
18384  }
18385 
18386  size_t index;
18387  for (index = 0; index < response->num_groups; index++) {
18388  ds3_group_response_free(response->groups[index]);
18389  }
18390  g_free(response->groups);
18391 
18392  g_free(response);
18393 }
18395  if (response == NULL) {
18396  return;
18397  }
18398 
18399  size_t index;
18400  for (index = 0; index < response->num_active_jobs; index++) {
18401  ds3_active_job_response_free(response->active_jobs[index]);
18402  }
18403  g_free(response->active_jobs);
18404 
18405  g_free(response);
18406 }
18408  if (response == NULL) {
18409  return;
18410  }
18411 
18412  size_t index;
18413  for (index = 0; index < response->num_canceled_jobs; index++) {
18415  }
18416  g_free(response->canceled_jobs);
18417 
18418  g_free(response);
18419 }
18421  if (response == NULL) {
18422  return;
18423  }
18424 
18425  size_t index;
18426  for (index = 0; index < response->num_completed_jobs; index++) {
18428  }
18429  g_free(response->completed_jobs);
18430 
18431  g_free(response);
18432 }
18434  if (response == NULL) {
18435  return;
18436  }
18437 
18438  size_t index;
18439  for (index = 0; index < response->num_nodes; index++) {
18440  ds3_node_response_free(response->nodes[index]);
18441  }
18442  g_free(response->nodes);
18443 
18444  g_free(response);
18445 }
18447  if (response == NULL) {
18448  return;
18449  }
18450 
18451  size_t index;
18452  for (index = 0; index < response->num_job_completed_notification_registrations; index++) {
18454  }
18455  g_free(response->job_completed_notification_registrations);
18456 
18457  g_free(response);
18458 }
18460  if (response == NULL) {
18461  return;
18462  }
18463 
18464  size_t index;
18465  for (index = 0; index < response->num_job_created_notification_registrations; index++) {
18467  }
18468  g_free(response->job_created_notification_registrations);
18469 
18470  g_free(response);
18471 }
18473  if (response == NULL) {
18474  return;
18475  }
18476 
18477  size_t index;
18478  for (index = 0; index < response->num_s3_object_cached_notification_registrations; index++) {
18480  }
18482 
18483  g_free(response);
18484 }
18486  if (response == NULL) {
18487  return;
18488  }
18489 
18490  size_t index;
18491  for (index = 0; index < response->num_s3_object_lost_notification_registrations; index++) {
18493  }
18495 
18496  g_free(response);
18497 }
18499  if (response == NULL) {
18500  return;
18501  }
18502 
18503  size_t index;
18504  for (index = 0; index < response->num_s3_object_persisted_notification_registrations; index++) {
18506  }
18508 
18509  g_free(response);
18510 }
18512  if (response == NULL) {
18513  return;
18514  }
18515 
18516  size_t index;
18517  for (index = 0; index < response->num_pool_failure_notification_registrations; index++) {
18519  }
18520  g_free(response->pool_failure_notification_registrations);
18521 
18522  g_free(response);
18523 }
18525  if (response == NULL) {
18526  return;
18527  }
18528 
18529  size_t index;
18530  for (index = 0; index < response->num_storage_domain_failure_notification_registrations; index++) {
18532  }
18534 
18535  g_free(response);
18536 }
18538  if (response == NULL) {
18539  return;
18540  }
18541 
18542  size_t index;
18543  for (index = 0; index < response->num_system_failure_notification_registrations; index++) {
18545  }
18547 
18548  g_free(response);
18549 }
18551  if (response == NULL) {
18552  return;
18553  }
18554 
18555  size_t index;
18556  for (index = 0; index < response->num_tape_failure_notification_registrations; index++) {
18558  }
18559  g_free(response->tape_failure_notification_registrations);
18560 
18561  g_free(response);
18562 }
18564  if (response == NULL) {
18565  return;
18566  }
18567 
18568  size_t index;
18569  for (index = 0; index < response->num_tape_partition_failure_notification_registrations; index++) {
18571  }
18573 
18574  g_free(response);
18575 }
18577  if (response == NULL) {
18578  return;
18579  }
18580 
18581  size_t index;
18582  for (index = 0; index < response->num_s3_objects; index++) {
18583  ds3_s3_object_response_free(response->s3_objects[index]);
18584  }
18585  g_free(response->s3_objects);
18586 
18587  g_free(response);
18588 }
18590  if (response == NULL) {
18591  return;
18592  }
18593 
18594  size_t index;
18595  for (index = 0; index < response->num_pool_failures; index++) {
18597  }
18598  g_free(response->pool_failures);
18599 
18600  g_free(response);
18601 }
18603  if (response == NULL) {
18604  return;
18605  }
18606 
18607  size_t index;
18608  for (index = 0; index < response->num_pool_partitions; index++) {
18610  }
18611  g_free(response->pool_partitions);
18612 
18613  g_free(response);
18614 }
18616  if (response == NULL) {
18617  return;
18618  }
18619 
18620  size_t index;
18621  for (index = 0; index < response->num_pools; index++) {
18622  ds3_pool_response_free(response->pools[index]);
18623  }
18624  g_free(response->pools);
18625 
18626  g_free(response);
18627 }
18629  if (response == NULL) {
18630  return;
18631  }
18632 
18633  size_t index;
18634  for (index = 0; index < response->num_storage_domain_failures; index++) {
18636  }
18637  g_free(response->storage_domain_failures);
18638 
18639  g_free(response);
18640 }
18642  if (response == NULL) {
18643  return;
18644  }
18645 
18646  size_t index;
18647  for (index = 0; index < response->num_storage_domain_members; index++) {
18649  }
18650  g_free(response->storage_domain_members);
18651 
18652  g_free(response);
18653 }
18655  if (response == NULL) {
18656  return;
18657  }
18658 
18659  size_t index;
18660  for (index = 0; index < response->num_storage_domains; index++) {
18662  }
18663  g_free(response->storage_domains);
18664 
18665  g_free(response);
18666 }
18668  if (response == NULL) {
18669  return;
18670  }
18671 
18672  size_t index;
18673  for (index = 0; index < response->num_system_failures; index++) {
18675  }
18676  g_free(response->system_failures);
18677 
18678  g_free(response);
18679 }
18681  if (response == NULL) {
18682  return;
18683  }
18684 
18685  size_t index;
18686  for (index = 0; index < response->num_tape_density_directives; index++) {
18688  }
18689  g_free(response->tape_density_directives);
18690 
18691  g_free(response);
18692 }
18694  if (response == NULL) {
18695  return;
18696  }
18697 
18698  size_t index;
18699  for (index = 0; index < response->num_tape_drives; index++) {
18700  ds3_tape_drive_response_free(response->tape_drives[index]);
18701  }
18702  g_free(response->tape_drives);
18703 
18704  g_free(response);
18705 }
18707  if (response == NULL) {
18708  return;
18709  }
18710 
18711  size_t index;
18712  for (index = 0; index < response->num_detailed_tape_failures; index++) {
18714  }
18715  g_free(response->detailed_tape_failures);
18716 
18717  g_free(response);
18718 }
18720  if (response == NULL) {
18721  return;
18722  }
18723 
18724  size_t index;
18725  for (index = 0; index < response->num_tape_libraries; index++) {
18727  }
18728  g_free(response->tape_libraries);
18729 
18730  g_free(response);
18731 }
18733  if (response == NULL) {
18734  return;
18735  }
18736 
18737  size_t index;
18738  for (index = 0; index < response->num_tape_partition_failures; index++) {
18740  }
18741  g_free(response->tape_partition_failures);
18742 
18743  g_free(response);
18744 }
18746  if (response == NULL) {
18747  return;
18748  }
18749 
18750  size_t index;
18751  for (index = 0; index < response->num_tape_partitions; index++) {
18753  }
18754  g_free(response->tape_partitions);
18755 
18756  g_free(response);
18757 }
18759  if (response == NULL) {
18760  return;
18761  }
18762 
18763  size_t index;
18764  for (index = 0; index < response->num_named_detailed_tape_partitions; index++) {
18766  }
18767  g_free(response->named_detailed_tape_partitions);
18768 
18769  g_free(response);
18770 }
18772  if (response == NULL) {
18773  return;
18774  }
18775 
18776  size_t index;
18777  for (index = 0; index < response->num_tapes; index++) {
18778  ds3_tape_response_free(response->tapes[index]);
18779  }
18780  g_free(response->tapes);
18781 
18782  g_free(response);
18783 }
18785  if (response == NULL) {
18786  return;
18787  }
18788 
18789  size_t index;
18790  for (index = 0; index < response->num_named_detailed_tapes; index++) {
18792  }
18793  g_free(response->named_detailed_tapes);
18794 
18795  g_free(response);
18796 }
18798  if (response == NULL) {
18799  return;
18800  }
18801 
18802  size_t index;
18803  for (index = 0; index < response->num_spectra_users; index++) {
18805  }
18806  g_free(response->spectra_users);
18807 
18808  g_free(response);
18809 }
18811  if (response == NULL) {
18812  return;
18813  }
18814 
18815  size_t index;
18816  for (index = 0; index < response->num_pools; index++) {
18817  ds3_pool_response_free(response->pools[index]);
18818  }
18819  g_free(response->pools);
18820  for (index = 0; index < response->num_tapes; index++) {
18821  ds3_tape_response_free(response->tapes[index]);
18822  }
18823  g_free(response->tapes);
18824 
18825  g_free(response);
18826 }
18828  if (response == NULL) {
18829  return;
18830  }
18831 
18834 
18835  g_free(response);
18836 }
18838  if (response == NULL) {
18839  return;
18840  }
18841 
18842  ds3_str_free(response->name);
18844 
18845  g_free(response);
18846 }
18848  if (response == NULL) {
18849  return;
18850  }
18851 
18852  size_t index;
18853  for (index = 0; index < response->num_objects; index++) {
18854  ds3_bulk_object_response_free(response->objects[index]);
18855  }
18856  g_free(response->objects);
18857 
18858  g_free(response);
18859 }
18861  if (response == NULL) {
18862  return;
18863  }
18864 
18865  size_t index;
18866  ds3_str_free(response->job_id);
18868  for (index = 0; index < response->num_objects_not_persisted; index++) {
18870  }
18871  g_free(response->objects_not_persisted);
18872 
18873  g_free(response);
18874 }
18876  if (response == NULL) {
18877  return;
18878  }
18879 
18880  size_t index;
18881  ds3_str_free(response->job_id);
18883  for (index = 0; index < response->num_objects; index++) {
18884  ds3_bulk_object_response_free(response->objects[index]);
18885  }
18886  g_free(response->objects);
18887 
18888  g_free(response);
18889 }
18891  if (response == NULL) {
18892  return;
18893  }
18894 
18895  size_t index;
18897  for (index = 0; index < response->num_objects; index++) {
18898  ds3_bulk_object_response_free(response->objects[index]);
18899  }
18900  g_free(response->objects);
18901 
18902  g_free(response);
18903 }
18905  if (response == NULL) {
18906  return;
18907  }
18908 
18909  size_t index;
18910  ds3_str_free(response->job_id);
18912  for (index = 0; index < response->num_objects; index++) {
18913  ds3_bulk_object_response_free(response->objects[index]);
18914  }
18915  g_free(response->objects);
18916 
18917  g_free(response);
18918 }
18920  if (response == NULL) {
18921  return;
18922  }
18923 
18924  size_t index;
18925  for (index = 0; index < response->num_buckets; index++) {
18926  ds3_bucket_details_response_free(response->buckets[index]);
18927  }
18928  g_free(response->buckets);
18929  ds3_user_response_free(response->owner);
18930 
18931  g_free(response);
18932 }
18934  if (response == NULL) {
18935  return;
18936  }
18937 
18938  size_t index;
18939  for (index = 0; index < response->num_deleted_objects; index++) {
18941  }
18942  g_free(response->deleted_objects);
18943  for (index = 0; index < response->num_errors; index++) {
18945  }
18946  g_free(response->errors);
18947 
18948  g_free(response);
18949 }
18951  if (response == NULL) {
18952  return;
18953  }
18954 
18955  size_t index;
18956  ds3_str_free(response->bucket_name);
18957  ds3_str_free(response->job_id);
18958  ds3_str_free(response->name);
18959  for (index = 0; index < response->num_nodes; index++) {
18960  ds3_job_node_response_free(response->nodes[index]);
18961  }
18962  g_free(response->nodes);
18963  ds3_str_free(response->start_date);
18964  ds3_str_free(response->user_id);
18965  ds3_str_free(response->user_name);
18966 
18967  g_free(response);
18968 }
18970  if (response == NULL) {
18971  return;
18972  }
18973 
18974  size_t index;
18975  ds3_str_free(response->chunk_id);
18976  ds3_str_free(response->node_id);
18977  for (index = 0; index < response->num_objects; index++) {
18978  ds3_bulk_object_response_free(response->objects[index]);
18979  }
18980  g_free(response->objects);
18981 
18982  g_free(response);
18983 }
18985  if (response == NULL) {
18986  return;
18987  }
18988 
18989  size_t index;
18990  ds3_str_free(response->bucket_name);
18991  ds3_str_free(response->job_id);
18992  ds3_str_free(response->name);
18993  for (index = 0; index < response->num_nodes; index++) {
18994  ds3_job_node_response_free(response->nodes[index]);
18995  }
18996  g_free(response->nodes);
18997  for (index = 0; index < response->num_objects; index++) {
18998  ds3_objects_response_free(response->objects[index]);
18999  }
19000  g_free(response->objects);
19001  ds3_str_free(response->start_date);
19002  ds3_str_free(response->user_id);
19003  ds3_str_free(response->user_name);
19004 
19005  g_free(response);
19006 }
19008  if (response == NULL) {
19009  return;
19010  }
19011 
19012  size_t index;
19013  for (index = 0; index < response->num_jobs; index++) {
19014  ds3_job_response_free(response->jobs[index]);
19015  }
19016  g_free(response->jobs);
19017 
19018  g_free(response);
19019 }
19021  if (response == NULL) {
19022  return;
19023  }
19024 
19025  size_t index;
19026  ds3_str_free(response->bucket);
19027  ds3_str_free(response->key);
19028  ds3_user_response_free(response->owner);
19029  for (index = 0; index < response->num_parts; index++) {
19031  }
19032  g_free(response->parts);
19033  ds3_str_free(response->upload_id);
19034 
19035  g_free(response);
19036 }
19038  if (response == NULL) {
19039  return;
19040  }
19041 
19042  ds3_str_free(response->initiated);
19043  ds3_str_free(response->key);
19044  ds3_user_response_free(response->owner);
19045  ds3_str_free(response->upload_id);
19046 
19047  g_free(response);
19048 }
19050  if (response == NULL) {
19051  return;
19052  }
19053 
19054  ds3_str_free(response->e_tag);
19055  ds3_str_free(response->key);
19056  ds3_str_free(response->last_modified);
19057  ds3_user_response_free(response->owner);
19058  ds3_str_free(response->storage_class);
19059 
19060  g_free(response);
19061 }
19063  if (response == NULL) {
19064  return;
19065  }
19066 
19068  ds3_str_free(response->bucket_id);
19069  ds3_str_free(response->creation_date);
19070  ds3_str_free(response->e_tag);
19071  ds3_str_free(response->id);
19072  ds3_str_free(response->name);
19073  ds3_str_free(response->owner);
19074 
19075  g_free(response);
19076 }
19078  if (response == NULL) {
19079  return;
19080  }
19081 
19082  size_t index;
19083  for (index = 0; index < response->num_types; index++) {
19084  ds3_type_response_free(response->types[index]);
19085  }
19086  g_free(response->types);
19087 
19088  g_free(response);
19089 }
19091  if (response == NULL) {
19092  return;
19093  }
19094 
19095  size_t index;
19096  for (index = 0; index < response->num_detailed_s3_objects; index++) {
19098  }
19099  g_free(response->detailed_s3_objects);
19100 
19101  g_free(response);
19102 }
19104  if (response == NULL) {
19105  return;
19106  }
19107 
19108  size_t index;
19109  for (index = 0; index < response->num_common_prefixes; index++) {
19110  ds3_str_free(response->common_prefixes[index]);
19111  }
19112  g_free(response->common_prefixes);
19113  ds3_str_free(response->creation_date);
19114  ds3_str_free(response->delimiter);
19115  ds3_str_free(response->marker);
19116  ds3_str_free(response->name);
19117  ds3_str_free(response->next_marker);
19118  for (index = 0; index < response->num_objects; index++) {
19119  ds3_contents_response_free(response->objects[index]);
19120  }
19121  g_free(response->objects);
19122  ds3_str_free(response->prefix);
19123 
19124  g_free(response);
19125 }
19127  if (response == NULL) {
19128  return;
19129  }
19130 
19131  size_t index;
19132  ds3_str_free(response->bucket);
19133  for (index = 0; index < response->num_common_prefixes; index++) {
19134  ds3_str_free(response->common_prefixes[index]);
19135  }
19136  g_free(response->common_prefixes);
19137  ds3_str_free(response->delimiter);
19138  ds3_str_free(response->key_marker);
19139  ds3_str_free(response->next_key_marker);
19141  ds3_str_free(response->prefix);
19142  ds3_str_free(response->upload_id_marker);
19143  for (index = 0; index < response->num_uploads; index++) {
19144  ds3_multi_part_upload_response_free(response->uploads[index]);
19145  }
19146  g_free(response->uploads);
19147 
19148  g_free(response);
19149 }
19150 
19151 
19152 size_t ds3_write_to_file(void* buffer, size_t size, size_t nmemb, void* user_data) {
19153  return fwrite(buffer, size, nmemb, (FILE*) user_data);
19154 }
19155 
19156 size_t ds3_read_from_file(void* buffer, size_t size, size_t nmemb, void* user_data) {
19157  return fread(buffer, size, nmemb, (FILE*) user_data);
19158 }
19159 
19160 size_t ds3_write_to_fd(void* buffer, size_t size, size_t nmemb, void* user_data) {
19161  return write(*(int*)user_data, buffer, size * nmemb);
19162 }
19163 
19164 size_t ds3_read_from_fd(void* buffer, size_t size, size_t nmemb, void* user_data) {
19165  return read(*(int*)user_data, buffer, size * nmemb);
19166 }
19167 
19168 static ds3_bulk_object_response* _ds3_bulk_object_from_file(const char* file_name, const char* base_path) {
19169  struct stat file_info;
19170  int result;
19172  char* file_to_stat;
19173  memset(&file_info, 0, sizeof(struct stat));
19174 
19175  if (base_path != NULL) {
19176  file_to_stat = g_strconcat(base_path, file_name, NULL);
19177  } else {
19178  file_to_stat = g_strdup(file_name);
19179  }
19180 
19181  result = stat(file_to_stat, &file_info);
19182  if (result != 0) {
19183  fprintf(stderr, "Failed to get file info for %s\n", file_name);
19184  }
19185 
19186  obj->name = ds3_str_init(file_name);
19187 
19188  if (S_ISDIR(file_info.st_mode)) {
19189  obj->length = 0;
19190  } else {
19191  obj->length = file_info.st_size;
19192  }
19193 
19194  g_free(file_to_stat);
19195 
19196  return obj;
19197 }
19198 
19199 ds3_bulk_object_list_response* ds3_convert_file_list(const char** file_list, size_t num_files) {
19200  return ds3_convert_file_list_with_basepath(file_list, num_files, NULL);
19201 }
19202 
19203 ds3_bulk_object_list_response* ds3_convert_file_list_with_basepath(const char** file_list, size_t num_files, const char* base_path) {
19204  size_t file_index;
19206 
19207  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
19208  for (file_index = 0; file_index < num_files; file_index++) {
19209  g_ptr_array_add(ds3_bulk_object_response_array, _ds3_bulk_object_from_file(file_list[file_index], base_path));
19210  }
19211 
19212  obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
19213  obj_list->num_objects = ds3_bulk_object_response_array->len;
19214  g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
19215 
19216  return obj_list;
19217 }
19218 
19220  size_t object_index;
19222 
19223  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
19224 
19225  for (object_index = 0; object_index < num_objects; object_index++) {
19226  ds3_bulk_object_response* response = g_new0(ds3_bulk_object_response, 1);
19227  response->name = ds3_str_dup(objects[object_index]->key);
19228  g_ptr_array_add(ds3_bulk_object_response_array, response);
19229  }
19230 
19231  obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
19232  obj_list->num_objects = ds3_bulk_object_response_array->len;
19233  g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
19234 
19235  return obj_list;
19236 }
19237 
19239  return g_new0(ds3_bulk_object_list_response, 1);
19240 }
void ds3_job_node_response_free(ds3_job_node_response *response)
Definition: ds3.c:18153
ds3_error * ds3_get_object_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_response **response)
Definition: ds3.c:15510
void ds3_detailed_tape_response_free(ds3_detailed_tape_response *response)
Definition: ds3.c:18082
ds3_request * ds3_init_delete_bucket_request(const char *bucket_name)
Definition: ds3.c:1707
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)
Definition: ds3.c:12437
Definition: ds3.h:76
void ds3_cache_filesystem_response_free(ds3_cache_filesystem_response *response)
Definition: ds3.c:17740
ds3_request * ds3_init_cancel_format_on_all_tapes_spectra_s3_request(void)
Definition: ds3.c:2650
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)
Definition: ds3.c:7249
static ds3_error * _parse_ds3_cache_filesystem_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6181
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)
Definition: ds3.c:14202
void ds3_request_set_custom_header(ds3_request *_request, const char *header_name, const char *header_value)
Definition: ds3.c:1014
uint64_t length
Definition: ds3.h:509
void ds3_error_response_free(ds3_error_response *response)
Definition: ds3.c:18121
ds3_request * ds3_init_format_all_foreign_pools_spectra_s3_request(void)
Definition: ds3.c:2481
size_t ds3_read_from_fd(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:19164
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)
Definition: ds3.c:8114
void ds3_job_completed_notification_registration_list_response_free(ds3_job_completed_notification_registration_list_response *response)
Definition: ds3.c:18446
static ds3_error * _parse_top_level_ds3_detailed_tape_response(const ds3_client *client, const ds3_request *request, ds3_detailed_tape_response **_response, GByteArray *xml_blob)
Definition: ds3.c:10472
ds3_error * ds3_clear_all_completed_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:14564
ds3_storage_domain_failure_notification_registration_response ** storage_domain_failure_notification_registrations
Definition: ds3.h:1290
ds3_request * ds3_init_get_tape_library_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2812
ds3_priority default_get_job_priority
Definition: ds3.h:589
ds3_log_lvl
Definition: ds3.h:75
ds3_node_response ** nodes
Definition: ds3.h:1262
ds3_checksum_type checksum_type
Definition: ds3_request.h:35
ds3_pool_response ** pools
Definition: ds3.h:1378
ds3_str * last_accessed
Definition: ds3.h:865
ds3_tape_state previous_state
Definition: ds3.h:1184
ds3_str * name
Definition: ds3.h:649
ds3_request * ds3_init_get_tape_partitions_with_full_details_spectra_s3_request(void)
Definition: ds3.c:2834
Definition: ds3.c:971
ds3_str * last_heartbeat
Definition: ds3.h:640
static ds3_rest_resource_type _match_ds3_rest_resource_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3985
ds3_cache_filesystem_response * cache_filesystem
Definition: ds3.h:1041
ds3_error * ds3_online_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
Definition: ds3.c:17113
ds3_str * name
Definition: ds3.h:641
ds3_request * ds3_init_get_system_capacity_summary_spectra_s3_request(void)
Definition: ds3.c:1926
ds3_error * ds3_format_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:16658
ds3_tape_state previous_state
Definition: ds3.h:909
static ds3_error * _parse_ds3_s3_object_to_delete_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7378
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)
Definition: ds3.c:16900
void ds3_request_set_crc32(ds3_request *_request, const char *crc32)
Definition: ds3.c:1062
void ds3_storage_domain_failure_response_free(ds3_storage_domain_failure_response *response)
Definition: ds3.c:17534
ds3_named_detailed_tape_response ** named_detailed_tapes
Definition: ds3.h:1370
ds3_request * ds3_init_get_tape_density_directives_spectra_s3_request(void)
Definition: ds3.c:2792
ds3_request * ds3_init_cancel_online_on_all_tapes_spectra_s3_request(void)
Definition: ds3.c:2674
void ds3_cleanup(void)
Definition: ds3.c:17334
uint64_t version
Definition: ds3.h:651
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)
Definition: ds3.c:10102
ds3_request * ds3_init_verify_system_health_spectra_s3_request(void)
Definition: ds3.c:2634
static ds3_error * _parse_ds3_pool_failure_notification_registration_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5550
void ds3_request_set_auto_eject_upon_job_completion(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1135
ds3_request * ds3_init_modify_pool_partition_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2537
ds3_request * ds3_init_get_pool_failure_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2324
char * escape_url(const char *url)
Definition: ds3_net.c:67
void ds3_pool_partition_response_free(ds3_pool_partition_response *response)
Definition: ds3.c:17781
ds3_str * eject_date
Definition: ds3.h:1074
ds3_request * ds3_init_get_system_failures_spectra_s3_request(void)
Definition: ds3.c:2626
void ds3_request_set_auto_inspect_ds3_auto_inspect_mode(const ds3_request *request, const ds3_auto_inspect_mode value)
Definition: ds3.c:1143
ds3_s3_object_type type
Definition: ds3.h:1528
ds3_write_optimization write_optimization
Definition: ds3.h:1453
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)
Definition: ds3.c:8824
ds3_error * ds3_get_tape_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_partition_response **response)
Definition: ds3.c:16843
ds3_str * domain_name
Definition: ds3.h:1208
static char * _get_ds3_replication_conflict_resolution_mode_str(ds3_replication_conflict_resolution_mode input)
Definition: ds3.c:326
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)
Definition: ds3.c:13180
ds3_request * ds3_init_get_system_failure_notification_registrations_spectra_s3_request(void)
Definition: ds3.c:2344
ds3_error * ds3_verify_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:17167
ds3_error * ds3_modify_user_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_spectra_user_response **response)
Definition: ds3.c:17224
void ds3_tape_partition_list_response_free(ds3_tape_partition_list_response *response)
Definition: ds3.c:18745
ds3_http_response_format_type format
Definition: ds3.h:757
void ds3_group_list_response_free(ds3_group_list_response *response)
Definition: ds3.c:18381
static ds3_error * _parse_ds3_contents_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:8211
ds3_request * ds3_init_delete_group_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2034
static uint64_t xml_get_uint16_from_attribute(xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3.c:2961
ds3_str * pool_id
Definition: ds3.h:884
ds3_error * ds3_get_buckets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_list_response **response)
Definition: ds3.c:13915
static ds3_error * _parse_ds3_multi_part_upload_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:8151
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)
Definition: ds3.c:13407
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)
Definition: ds3.c:11447
ds3_str * serial_number
Definition: ds3.h:958
ds3_request * ds3_init_cancel_eject_on_all_tapes_spectra_s3_request(void)
Definition: ds3.c:2638
ds3_str * eject_pending
Definition: ds3.h:901
ds3_str * last_modified
Definition: ds3.h:906
void ds3_completed_job_response_free(ds3_completed_job_response *response)
Definition: ds3.c:17392
static ds3_error * _parse_ds3_active_job_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_active_job_response **_response)
Definition: ds3.c:4753
ds3_tape_partition_response ** tape_partitions
Definition: ds3.h:1358
static ds3_rest_operation_type _match_ds3_rest_operation_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3939
uint64_t original_size_in_bytes
Definition: ds3.h:1446
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)
Definition: ds3.c:12839
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)
Definition: ds3.c:15028
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.c:3019
static ds3_error * _parse_ds3_type_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7747
ds3_error * ds3_get_data_path_backend_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_path_backend_response **response)
Definition: ds3.c:14079
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)
Definition: ds3.c:12122
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)
Definition: ds3.c:15193
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)
Definition: ds3.c:12617
ds3_request * ds3_init_put_pool_partition_spectra_s3_request(const char *name, const ds3_pool_type type)
Definition: ds3.c:2450
ds3_request * ds3_init_get_job_created_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2292
ds3_write_preference_level
Definition: ds3.h:196
ds3_request * ds3_init_put_bulk_job_spectra_s3_request(const char *resource_id, const ds3_bulk_object_list_response *object_list)
Definition: ds3.c:2094
void ds3_request_set_crc32c(ds3_request *_request, const char *crc32c)
Definition: ds3.c:1068
void ds3_tape_failure_response_free(ds3_tape_failure_response *response)
Definition: ds3.c:18240
ds3_request * ds3_init_get_buckets_spectra_s3_request(void)
Definition: ds3.c:1879
static ds3_error * _parse_top_level_ds3_group_response(const ds3_client *client, const ds3_request *request, ds3_group_response **_response, GByteArray *xml_blob)
Definition: ds3.c:8686
ds3_import_export_configuration
Definition: ds3.h:250
static ds3_error * _parse_ds3_cache_filesystem_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_cache_filesystem_response **_response)
Definition: ds3.c:6140
void ds3_request_set_state_ds3_storage_domain_member_state(const ds3_request *request, const ds3_storage_domain_member_state value)
Definition: ds3.c:1491
ds3_str * name
Definition: ds3.h:608
static void _ds3_metadata_entry_free(gpointer pointer)
Definition: ds3.c:640
ds3_error * ds3_get_node_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_node_response **response)
Definition: ds3.c:14852
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)
Definition: ds3.c:11492
void ds3_generic_dao_notification_payload_response_free(ds3_generic_dao_notification_payload_response *response)
Definition: ds3.c:17899
ds3_bulk_object_list_response * blobs
Definition: ds3.h:1515
ds3_job_request_type request_type
Definition: ds3.h:1448
ds3_bool ltfs_object_naming_allowed
Definition: ds3.h:594
ds3_user_response * owner
Definition: ds3.h:1510
ds3_bool powered_on
Definition: ds3.h:871
void ds3_request_set_default_import_conflict_resolution_mode_ds3_import_conflict_resolution_mode(const ds3_request *request, const ds3_import_conflict_resolution_mode value)
Definition: ds3.c:1211
ds3_bulk_object_response ** objects_not_persisted
Definition: ds3.h:1404
ds3_error * ds3_get_data_policy_acl_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_acl_response **response)
Definition: ds3.c:13830
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)
Definition: ds3.c:6861
ds3_request * ds3_init_get_job_created_notification_registrations_spectra_s3_request(void)
Definition: ds3.c:2296
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)
Definition: ds3.c:5407
ds3_str * message
Definition: ds3.h:1114
ds3_str * name
Definition: ds3.h:518
ds3_request * ds3_init_delete_object_cached_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2252
void ds3_s3_object_lost_notification_registration_list_response_free(ds3_s3_object_lost_notification_registration_list_response *response)
Definition: ds3.c:18485
ds3_s3_object_to_delete_response ** deleted_objects
Definition: ds3.h:1430
void ds3_capacity_summary_container_response_free(ds3_capacity_summary_container_response *response)
Definition: ds3.c:18827
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)
Definition: ds3.c:12710
ds3_job_request_type
Definition: ds3.h:157
size_t size
Definition: ds3_string.h:38
ds3_str * last_checkpoint
Definition: ds3.h:905
void ds3_tape_response_free(ds3_tape_response *response)
Definition: ds3.c:17791
ds3_request * ds3_init_get_system_failure_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2340
ds3_request * ds3_init_eject_storage_domain_blobs_spectra_s3_request(const char *bucket_id, const char *storage_domain_id, const ds3_bulk_object_list_response *object_list)
Definition: ds3.c:2733
ds3_str * name
Definition: ds3.h:595
ds3_storage_domain_capacity_summary_response * tape
Definition: ds3.h:1385
uint64_t length
Definition: ds3_request.h:33
static ds3_tape_drive_state _match_ds3_tape_drive_state(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3541
ds3_request * ds3_init_delete_tape_failure_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2276
void ds3_request_set_part_number_marker(const ds3_request *request, const int value)
Definition: ds3.c:1407
ds3_request * ds3_init_get_groups_spectra_s3_request(void)
Definition: ds3.c:2050
Definition: ds3.c:964
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)
Definition: ds3.c:10383
ds3_error * ds3_put_storage_domain_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_response **response)
Definition: ds3.c:16059
ds3_str * secret_key
Definition: ds3.h:699
static ds3_system_failure_type _match_ds3_system_failure_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3365
void ds3_request_set_page_start_marker(const ds3_request *request, const char *value)
Definition: ds3.c:1403
ds3_request * ds3_init_list_multi_part_upload_parts_request(const char *bucket_name, const char *object_name, const char *upload_id)
Definition: ds3.c:1751
ds3_error * ds3_get_groups_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_list_response **response)
Definition: ds3.c:14460
ds3_write_optimization write_optimization
Definition: ds3.h:665
ds3_tape_library_response ** tape_libraries
Definition: ds3.h:1350
static ds3_metadata * _init_metadata(ds3_string_multimap *response_headers)
Definition: ds3.c:688
static ds3_error * _parse_top_level_ds3_tape_response(const ds3_client *client, const ds3_request *request, ds3_tape_response **_response, GByteArray *xml_blob)
Definition: ds3.c:9996
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)
Definition: ds3.c:13703
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)
Definition: ds3.c:6532
ds3_request * ds3_init_modify_storage_domain_member_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2618
ds3_request * ds3_init_put_global_bucket_acl_for_user_spectra_s3_request(const ds3_bucket_acl_permission permission, const char *user_id)
Definition: ds3.c:1817
uint64_t original_size_in_bytes
Definition: ds3.h:557
ds3_bucket_acl_permission permission
Definition: ds3.h:525
static struct _ds3_request * _common_request_init(http_verb verb, ds3_str *path)
Definition: ds3.c:1624
void ds3_build_information_response_free(ds3_build_information_response *response)
Definition: ds3.c:17888
ds3_error * ds3_delete_pool_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15119
Definition: ds3.h:83
ds3_request * ds3_init_modify_job_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2147
void ds3_request_set_type_ds3_tape_drive_type(const ds3_request *request, const ds3_tape_drive_type value)
Definition: ds3.c:1563
ds3_request * ds3_init_get_tape_drive_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2796
void ds3_request_set_density_ds3_tape_drive_type(const ds3_request *request, const ds3_tape_drive_type value)
Definition: ds3.c:1227
static char * _get_ds3_data_persistence_rule_type_str(ds3_data_persistence_rule_type input)
Definition: ds3.c:238
void ds3_creds_free(ds3_creds *creds)
Definition: ds3.c:930
void ds3_group_response_free(ds3_group_response *response)
Definition: ds3.c:17452
ds3_job_request_type request_type
Definition: ds3.h:560
void ds3_request_set_state_ds3_tape_state(const ds3_request *request, const ds3_tape_state value)
Definition: ds3.c:1503
void ds3_pool_list_response_free(ds3_pool_list_response *response)
Definition: ds3.c:18615
static ds3_import_conflict_resolution_mode _match_ds3_import_conflict_resolution_mode(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3489
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)
Definition: ds3.c:15278
ds3_error * ds3_get_degraded_buckets_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_list_response **response)
Definition: ds3.c:14296
ds3_str * id
Definition: ds3.h:624
void ds3_request_set_name(const ds3_request *request, const char *value)
Definition: ds3.c:1375
ds3_job_chunk_client_processing_order_guarantee chunk_ordering
Definition: ds3_request.h:41
ds3_str * id
Definition: ds3.h:864
ds3_request * ds3_init_compact_pool_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2444
ds3_client * ds3_create_client(const char *endpoint, ds3_creds *creds)
Definition: ds3.c:877
ds3_error * ds3_create_client_from_env(ds3_client **client)
Definition: ds3.c:894
ds3_error * ds3_get_objects_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_s3_object_list_response **response)
Definition: ds3.c:15530
void ds3_request_set_page_offset(const ds3_request *request, const int value)
Definition: ds3.c:1399
void ds3_request_set_import_export_configuration_ds3_import_export_configuration(const ds3_request *request, const ds3_import_export_configuration value)
Definition: ds3.c:1283
static char * _get_ds3_import_conflict_resolution_mode_str(ds3_import_conflict_resolution_mode input)
Definition: ds3.c:198
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)
Definition: ds3.c:5050
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)
Definition: ds3.c:13686
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)
Definition: ds3.c:8230
ds3_str * date_canceled
Definition: ds3.h:534
ds3_import_conflict_resolution_mode default_import_conflict_resolution_mode
Definition: ds3.h:568
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)
Definition: ds3.c:14943
ds3_bool truncated
Definition: ds3.h:631
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)
Definition: ds3.c:12482
int unavailable_tape_partition_max_job_retry_in_mins
Definition: ds3.h:573
ds3_checksum_type
Definition: ds3.h:497
void ds3_request_set_md5(ds3_request *_request, const char *md5)
Definition: ds3.c:1044
uint64_t available_raw_capacity
Definition: ds3.h:894
static ds3_storage_domain_failure_type _match_ds3_storage_domain_failure_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3343
ds3_creds * creds
Definition: ds3.h:1579
ds3_request * ds3_init_delete_tape_partition_failure_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2280
char * escape_url_object_name(const char *url)
Definition: ds3_net.c:94
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)
Definition: ds3.c:9582
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)
Definition: ds3.c:9949
ds3_request * ds3_init_put_global_bucket_acl_for_group_spectra_s3_request(const char *group_id, const ds3_bucket_acl_permission permission)
Definition: ds3.c:1808
ds3_bool
Definition: ds3.h:63
static ds3_pool_state _match_ds3_pool_state(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3461
void ds3_request_set_type_ds3_system_failure_type(const ds3_request *request, const ds3_system_failure_type value)
Definition: ds3.c:1559
int unavailable_pool_max_job_retry_in_mins
Definition: ds3.h:572
ds3_str * eject_date
Definition: ds3.h:898
ds3_str * error_message
Definition: ds3.h:952
ds3_job_request_type request_type
Definition: ds3.h:542
ds3_request * ds3_init_import_all_pools_spectra_s3_request(void)
Definition: ds3.c:2519
ds3_database_physical_space_state
Definition: ds3.h:472
static ds3_error * _parse_top_level_ds3_pool_response(const ds3_client *client, const ds3_request *request, ds3_pool_response **_response, GByteArray *xml_blob)
Definition: ds3.c:9853
static size_t _ds3_send_xml_buff(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:974
ds3_error * ds3_get_pool_partitions_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_partition_list_response **response)
Definition: ds3.c:15884
ds3_error * ds3_clean_tape_drive_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_drive_response **response)
Definition: ds3.c:16452
ds3_error * ds3_delete_pool_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15771
ds3_spectra_user_response ** spectra_users
Definition: ds3.h:1374
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)
Definition: ds3.c:13720
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:1439
ds3_request * ds3_init_get_bucket_capacity_summary_spectra_s3_request(const char *bucket_id, const char *storage_domain_id)
Definition: ds3.c:1909
ds3_request * ds3_init_get_bulk_job_spectra_s3_request(const char *resource_id, const ds3_bulk_object_list_response *object_list)
Definition: ds3.c:2086
static ds3_replication_conflict_resolution_mode _match_ds3_replication_conflict_resolution_mode(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3517
void ds3_storage_domain_response_free(ds3_storage_domain_response *response)
Definition: ds3.c:17515
ds3_request * ds3_init_clear_all_canceled_jobs_spectra_s3_request(void)
Definition: ds3.c:2078
ds3_bucket_response ** buckets
Definition: ds3.h:1226
void ds3_request_set_metadata(ds3_request *_request, const char *name, const char *value)
Definition: ds3.c:1018
ds3_request * ds3_init_get_degraded_data_persistence_rules_spectra_s3_request(void)
Definition: ds3.c:1999
void ds3_request_set_max_keys(const ds3_request *request, const int value)
Definition: ds3.c:1335
void ds3_s3_objects_persisted_notification_payload_response_free(ds3_s3_objects_persisted_notification_payload_response *response)
Definition: ds3.c:18904
ds3_job_status status
Definition: ds3.h:1479
ds3_str * user_id
Definition: ds3.h:1451
ds3_str * partition_id
Definition: ds3.h:930
ds3_request * ds3_init_modify_group_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2054
void ds3_request_set_serial_number(const ds3_request *request, const char *value)
Definition: ds3.c:1479
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)
Definition: ds3.c:15363
ds3_detailed_s3_object_response ** detailed_s3_objects
Definition: ds3.h:1536
ds3_str * last_modified
Definition: ds3.h:866
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)
Definition: ds3.c:10264
ds3_request * ds3_init_clean_tape_drive_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2686
ds3_cache_entry_state state
Definition: ds3.h:1037
uint64_t byte_offset
Definition: ds3.h:505
ds3_write_optimization
Definition: ds3.h:192
static char * _get_ds3_pool_state_str(ds3_pool_state input)
Definition: ds3.c:74
ds3_bool auto_eject_upon_job_cancellation
Definition: ds3.h:655
ds3_request * ds3_init_get_pool_failures_spectra_s3_request(void)
Definition: ds3.c:2499
ds3_tape_partition_failure_notification_registration_response ** tape_partition_failure_notification_registrations
Definition: ds3.h:1302
ds3_error * ds3_get_tape_with_full_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_detailed_tape_response **response)
Definition: ds3.c:16937
static ds3_import_export_configuration _match_ds3_import_export_configuration(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3531
ds3_request * ds3_init_get_data_policy_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1983
ds3_request_type
Definition: ds3.h:483
static ds3_error * _parse_ds3_bucket_details_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_details_response **_response)
Definition: ds3.c:7151
ds3_request * ds3_init_get_tape_partition_failure_notification_registrations_spectra_s3_request(void)
Definition: ds3.c:2360
static char * _get_ds3_versioning_level_str(ds3_versioning_level input)
Definition: ds3.c:284
ds3_auto_inspect_mode auto_inspect
Definition: ds3.h:567
ds3_priority priority
Definition: ds3.h:558
ds3_str * data_path_ip_address
Definition: ds3.h:637
void ds3_request_set_naming_convention_ds3_naming_convention_type(const ds3_request *request, const ds3_naming_convention_type value)
Definition: ds3.c:1379
void ds3_request_set_type_ds3_tape_type(const ds3_request *request, const ds3_tape_type value)
Definition: ds3.c:1575
static xmlDocPtr _generate_xml_delete_objects(ds3_delete_objects_response *keys_list)
Definition: ds3.c:3141
void ds3_delete_object_error_response_free(ds3_delete_object_error_response *response)
Definition: ds3.c:18071
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)
Definition: ds3.c:8365
void ds3_request_set_rechunked(const ds3_request *request, const char *value)
Definition: ds3.c:1467
ds3_request * ds3_init_get_jobs_spectra_s3_request(void)
Definition: ds3.c:2137
static char * _get_ds3_naming_convention_type_str(ds3_naming_convention_type input)
Definition: ds3.c:352
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)
Definition: ds3.c:13225
ds3_str * id
Definition: ds3.h:508
static xmlDocPtr _generate_xml_bulk_objects_list(const ds3_bulk_object_list_response *obj_list, object_list_type list_type, ds3_job_chunk_client_processing_order_guarantee order)
Definition: ds3.c:3081
static ds3_error * _parse_ds3_tape_density_directive_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6575
ds3_tape_drive_type
Definition: ds3.h:260
ds3_error * ds3_verify_system_health_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_health_verification_result_response **response)
Definition: ds3.c:16289
static void _set_header(ds3_request *_request, const char *key, const char *value)
Definition: ds3.c:1009
ds3_str * last_modified
Definition: ds3.h:1082
void ds3_request_set_blobbing_enabled(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1159
ds3_error * ds3_get_storage_domains_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_list_response **response)
Definition: ds3.c:16200
ds3_type_response ** types
Definition: ds3.h:1532
ds3_tape_drive_type drive_type
Definition: ds3.h:1097
GHashTable * ds3_string_multimap_get_hashtable(const ds3_string_multimap *mp)
ds3_request * ds3_init_import_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2866
ds3_import_export_configuration import_export_configuration
Definition: ds3.h:954
ds3_multipart_upload_part_response ** parts
Definition: ds3.h:109
ds3_request * ds3_init_eject_storage_domain_spectra_s3_request(const char *storage_domain_id, const ds3_bulk_object_list_response *object_list)
Definition: ds3.c:2749
ds3_str * last_accessed
Definition: ds3.h:904
ds3_str * mountpoint
Definition: ds3.h:868
static bool attribute_equal(const struct _xmlAttr *attribute, const char *attribute_name)
Definition: ds3.c:2941
ds3_request * ds3_init_get_system_information_spectra_s3_request(void)
Definition: ds3.c:2630
int data_path_http_port
Definition: ds3.h:635
static ds3_error * _parse_ds3_delete_object_error_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7230
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)
Definition: ds3.c:5324
ds3_http_response_format_type format
Definition: ds3.h:811
void ds3_data_persistence_rule_response_free(ds3_data_persistence_rule_response *response)
Definition: ds3.c:17418
static ds3_request_type _match_ds3_request_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:4035
static ds3_error * _parse_ds3_tape_library_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6760
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)
Definition: ds3.c:8642
ds3_error * ds3_import_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
Definition: ds3.c:15946
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)
Definition: ds3.c:12032
void ds3_request_set_type_ds3_tape_partition_failure_type(const ds3_request *request, const ds3_tape_partition_failure_type value)
Definition: ds3.c:1571
ds3_error * ds3_get_tape_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_detailed_tape_failure_list_response **response)
Definition: ds3.c:16772
void ds3_request_set_tape_drive_id(const ds3_request *request, const char *value)
Definition: ds3.c:1511
ds3_rest_domain_type
Definition: ds3.h:379
void ds3_request_set_default_blob_size(const ds3_request *request, const uint64_t value)
Definition: ds3.c:1199
static ds3_error * _parse_ds3_tape_partition_failure_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6901
void ds3_request_set_unavailable_tape_partition_max_job_retry_in_mins(const ds3_request *request, const int value)
Definition: ds3.c:1587
static ds3_error * _parse_ds3_s3_object_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_s3_object_response **_response)
Definition: ds3.c:4904
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)
Definition: ds3.c:15414
ds3_job_response ** jobs
Definition: ds3.h:1485
int max_tape_fragmentation_percent
Definition: ds3.h:660
void ds3_request_set_dns_name(const ds3_request *request, const char *value)
Definition: ds3.c:1231
ds3_str * created_at
Definition: ds3.h:551
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)
Definition: ds3.c:9655
ds3_error * ds3_get_nodes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_node_list_response **response)
Definition: ds3.c:14872
ds3_job_status
Definition: ds3.h:361
ds3_str ** keys
Definition: ds3.h:57
ds3_request * ds3_init_get_job_completed_notification_registrations_spectra_s3_request(void)
Definition: ds3.c:2288
static ds3_error * _parse_ds3_s3_object_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4948
static ds3_tape_partition_failure_type _match_ds3_tape_partition_failure_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3619
ds3_error * ds3_clear_all_canceled_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:14556
void ds3_bulk_object_list_response_free(ds3_bulk_object_list_response *response)
Definition: ds3.c:18847
ds3_request * ds3_init_get_pool_failure_notification_registrations_spectra_s3_request(void)
Definition: ds3.c:2328
ds3_request * ds3_init_get_tape_failures_spectra_s3_request(void)
Definition: ds3.c:2804
void ds3_tape_partition_failure_list_response_free(ds3_tape_partition_failure_list_response *response)
Definition: ds3.c:18732
void ds3_named_detailed_tape_response_free(ds3_named_detailed_tape_response *response)
Definition: ds3.c:18216
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)
Definition: ds3.c:10428
static char * _get_ds3_storage_domain_member_state_str(ds3_storage_domain_member_state input)
Definition: ds3.c:482
void ds3_tape_failure_notification_payload_response_free(ds3_tape_failure_notification_payload_response *response)
Definition: ds3.c:17959
ds3_tape_type type
Definition: ds3.h:915
ds3_bool auto_eject_upon_media_full
Definition: ds3.h:657
static void _set_query_param_float(const ds3_request *_request, const char *key, float value)
Definition: ds3.c:1101
ds3_str * group_id
Definition: ds3.h:523
ds3_error * ds3_modify_data_path_backend_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_path_backend_response **response)
Definition: ds3.c:14111
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)
Definition: ds3.c:10338
static char * _get_ds3_ltfs_file_naming_mode_str(ds3_ltfs_file_naming_mode input)
Definition: ds3.c:450
void ds3_client_register_logging(ds3_client *client, ds3_log_lvl log_lvl, void(*log_callback)(const char *log_message, void *user_data), void *user_data)
Definition: ds3.c:832
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)
Definition: ds3.c:16863
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)
Definition: ds3.c:12347
ds3_bool media_ejection_allowed
Definition: ds3.h:662
ds3_str * id
Definition: ds3.h:607
static char * _get_ds3_data_isolation_level_str(ds3_data_isolation_level input)
Definition: ds3.c:226
ds3_named_detailed_tape_partition_response ** named_detailed_tape_partitions
Definition: ds3.h:1362
ds3_request * ds3_init_get_object_persisted_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2316
void ds3_multipart_upload_part_response_free(ds3_multipart_upload_part_response *response)
Definition: ds3.c:17265
void ds3_objects_response_free(ds3_objects_response *response)
Definition: ds3.c:18969
ds3_str * bucket_id
Definition: ds3.h:896
void ds3_log_message(const ds3_log *log, ds3_log_lvl lvl, const char *message,...)
Definition: ds3_utils.c:38
ds3_error * ds3_cancel_all_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:14537
void ds3_request_set_type_ds3_pool_failure_type(const ds3_request *request, const ds3_pool_failure_type value)
Definition: ds3.c:1547
static ds3_application _match_ds3_application(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3785
static ds3_storage_domain_member_state _match_ds3_storage_domain_member_state(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3355
ds3_request * ds3_init_modify_storage_domain_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2622
void ds3_request_reset_byte_range(ds3_request *_request)
Definition: ds3.c:1026
ds3_log * log
Definition: ds3.h:1580
uint64_t completed_size_in_bytes
Definition: ds3.h:1467
ds3_request * ds3_init_put_bucket_acl_for_user_spectra_s3_request(const char *bucket_id, const ds3_bucket_acl_permission permission, const char *user_id)
Definition: ds3.c:1776
ds3_str * path
Definition: ds3_request.h:32
ds3_request * ds3_init_delete_storage_domain_member_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2590
ds3_error * ds3_delete_job_completed_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15079
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)
Definition: ds3.c:13669
static ds3_database_physical_space_state _match_ds3_database_physical_space_state(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:4009
Definition: ds3.h:1035
void ds3_request_set_management_url(const ds3_request *request, const char *value)
Definition: ds3.c:1323
ds3_error * ds3_get_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:16917
static ds3_error * _parse_ds3_pool_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_response **_response)
Definition: ds3.c:6200
void ds3_s3_object_cached_notification_registration_list_response_free(ds3_s3_object_cached_notification_registration_list_response *response)
Definition: ds3.c:18472
void ds3_request_set_request_type_ds3_job_request_type(const ds3_request *request, const ds3_job_request_type value)
Definition: ds3.c:1471
struct _ds3_metadata ds3_metadata
Definition: ds3.h:61
ds3_str * library_id
Definition: ds3.h:955
ds3_detailed_tape_failure_response * most_recent_failure
Definition: ds3.h:1182
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)
Definition: ds3.c:11807
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)
Definition: ds3.c:12955
ds3_job_node_response ** nodes
Definition: ds3.h:1444
static ds3_error * _parse_ds3_group_member_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_group_member_response **_response)
Definition: ds3.c:4701
void ds3_request_set_versioning_ds3_versioning_level(const ds3_request *request, const ds3_versioning_level value)
Definition: ds3.c:1607
ds3_request * ds3_init_get_object_request(const char *bucket_name, const char *object_name, const uint64_t length)
Definition: ds3.c:1731
size_t num_nodes
Definition: ds3.h:1445
static char * _get_ds3_s3_object_type_str(ds3_s3_object_type input)
Definition: ds3.c:384
ds3_str * resource
Definition: ds3.h:1115
static ds3_error * _parse_ds3_job_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_response **_response)
Definition: ds3.c:7918
static ds3_checksum_type _match_ds3_checksum_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:4067
ds3_str * eject_label
Definition: ds3.h:899
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)
Definition: ds3.c:13119
ds3_request * ds3_init_put_bucket_request(const char *bucket_name)
Definition: ds3.c:1686
void ds3_request_set_user_id(const ds3_request *request, const char *value)
Definition: ds3.c:1595
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)
Definition: ds3.c:7025
ds3_delete_object_error_response ** errors
Definition: ds3.h:1432
void ds3_request_set_ignore_naming_conflicts(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1279
void ds3_multi_part_upload_response_free(ds3_multi_part_upload_response *response)
Definition: ds3.c:19037
void ds3_create_heap_dump_params_response_free(ds3_create_heap_dump_params_response *response)
Definition: ds3.c:18263
void ds3_request_set_node_id(const ds3_request *request, const char *value)
Definition: ds3.c:1383
ds3_request * ds3_init_get_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2840
ds3_error * ds3_verify_physical_placement_for_objects_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_physical_placement_response **response)
Definition: ds3.c:15620
uint64_t completed_size_in_bytes
Definition: ds3.h:1440
void ds3_request_set_byte_range(ds3_request *_request, int64_t rangeStart, int64_t rangeEnd)
Definition: ds3.c:1030
void ds3_request_set_roll_back(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1475
ds3_request * ds3_init_modify_user_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2930
static const unsigned int UNSIGNED_LONG_BASE_10_STR_LEN
Definition: ds3.c:955
ds3_tape_drive_type type
Definition: ds3.h:934
void ds3_client_free(ds3_client *client)
Definition: ds3.c:940
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)
Definition: ds3.c:7426
static ds3_job_status _match_ds3_job_status(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3773
ds3_request * ds3_init_get_object_lost_notification_registrations_spectra_s3_request(void)
Definition: ds3.c:2312
ds3_request * ds3_init_delete_pool_partition_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2473
void ds3_request_set_job(const ds3_request *request, const char *value)
Definition: ds3.c:1295
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)
Definition: ds3.c:7880
object_list_type
Definition: ds3.c:963
ds3_storage_domain_capacity_summary_response * pool
Definition: ds3.h:1384
ds3_str * bucket_id
Definition: ds3.h:861
ds3_bool take_ownership_pending
Definition: ds3.h:1090
Definition: ds3.h:72
void ds3_request_free(ds3_request *_request)
Definition: ds3.c:17301
void ds3_request_set_unavailable_media_policy_ds3_unavailable_media_usage_policy(const ds3_request *request, const ds3_unavailable_media_usage_policy value)
Definition: ds3.c:1579
ds3_str * bucket_id
Definition: ds3.h:547
ds3_storage_domain_failure_type type
Definition: ds3.h:677
ds3_request * ds3_init_put_data_policy_spectra_s3_request(const char *name)
Definition: ds3.c:1956
ds3_str * eject_location
Definition: ds3.h:1076
ds3_error * ds3_delete_group_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:14392
ds3_error * ds3_inspect_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
Definition: ds3.c:17028
ds3_str * last_accessed
Definition: ds3.h:1080
ds3_naming_convention_type naming_convention
Definition: ds3.h:776
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)
Definition: ds3.c:13074
void ds3_request_set_built_in(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1167
static ds3_error * _parse_top_level_ds3_node_response(const ds3_client *client, const ds3_request *request, ds3_node_response **_response, GByteArray *xml_blob)
Definition: ds3.c:8772
ds3_error *(* net_callback)(const struct _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.h:1581
ds3_error * ds3_force_full_cache_reclaim_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:13952
ds3_tape_density_directive_response ** tape_density_directives
Definition: ds3.h:1338
void ds3_request_set_key_marker(const ds3_request *request, const char *value)
Definition: ds3.c:1303
ds3_request * ds3_init_verify_bulk_job_spectra_s3_request(const char *resource_id, const ds3_bulk_object_list_response *object_list)
Definition: ds3.c:2102
ds3_error * ds3_get_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
Definition: ds3.c:14744
static ds3_error * _parse_ds3_bucket_details_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7180
void ds3_request_set_data_policy_id(const ds3_request *request, const char *value)
Definition: ds3.c:1195
static ds3_error * _parse_ds3_tape_drive_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_drive_response **_response)
Definition: ds3.c:6594
ds3_request * ds3_init_put_job_created_notification_registration_spectra_s3_request(const char *notification_end_point)
Definition: ds3.c:2181
ds3_str * user_id
Definition: ds3.h:519
ds3_s3_object_type
Definition: ds3.h:166
ds3_error * ds3_modify_data_persistence_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_persistence_rule_response **response)
Definition: ds3.c:14256
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)
Definition: ds3.c:10862
ds3_http_response_format_type format
Definition: ds3.h:731
ds3_error * ds3_get_tape_partitions_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_partition_list_response **response)
Definition: ds3.c:16883
ds3_str * eject_label
Definition: ds3.h:1075
static char * _get_ds3_tape_partition_failure_type_str(ds3_tape_partition_failure_type input)
Definition: ds3.c:580
void ds3_list_all_my_buckets_result_response_free(ds3_list_all_my_buckets_result_response *response)
Definition: ds3.c:18919
void ds3_request_set_checksum_type_ds3_checksum_type(const ds3_request *request, const ds3_checksum_type value)
Definition: ds3.c:1175
ds3_s3_object_lost_notification_registration_response ** s3_object_lost_notification_registrations
Definition: ds3.h:1278
static ds3_error * _parse_ds3_objects_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_objects_response **_response)
Definition: ds3.c:8040
ds3_priority verify_prior_to_auto_eject
Definition: ds3.h:664
ds3_error * ds3_put_pool_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_partition_response **response)
Definition: ds3.c:15732
ds3_str * rechunked
Definition: ds3.h:629
ds3_str * error_message
Definition: ds3.h:535
ds3_error * ds3_get_data_policies_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_list_response **response)
Definition: ds3.c:14219
void ds3_request_set_bucket_id(const ds3_request *request, const char *value)
Definition: ds3.c:1163
ds3_request * ds3_init_get_bucket_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1875
ds3_error * ds3_modify_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
Definition: ds3.c:15994
ds3_error * ds3_modify_data_policy_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_response **response)
Definition: ds3.c:14276
ds3_request * ds3_init_put_group_spectra_s3_request(const char *name)
Definition: ds3.c:2013
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 *))
Definition: ds3.c:13469
void ds3_data_policy_acl_list_response_free(ds3_data_policy_acl_list_response *response)
Definition: ds3.c:18303
static ds3_error * _parse_ds3_bucket_acl_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4225
ds3_bool blobbing_enabled
Definition: ds3.h:585
ds3_pool_type
Definition: ds3.h:228
ds3_error * ds3_cancel_import_on_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15676
ds3_bool force_tape_removal
Definition: ds3.h:927
void ds3_request_set_priority_ds3_priority(const ds3_request *request, const ds3_priority value)
Definition: ds3.c:1455
ds3_error * ds3_delete_job_created_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15087
ds3_request * ds3_init_inspect_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2878
static ds3_blob_store_task_state _match_ds3_blob_store_task_state(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3747
void ds3_request_set_conflict_resolution_mode_ds3_replication_conflict_resolution_mode(const ds3_request *request, const ds3_replication_conflict_resolution_mode value)
Definition: ds3.c:1183
static ds3_error * _parse_ds3_canceled_job_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4316
static ds3_http_response_format_type _match_ds3_http_response_format_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:4023
ds3_pool_failure_type type
Definition: ds3.h:885
Definition: ds3.h:64
void ds3_metadata_keys_free(ds3_metadata_keys_result *metadata_keys)
Definition: ds3.c:817
void ds3_delete_objects_response_free(ds3_delete_objects_response *response)
Definition: ds3.c:17288
void ds3_tape_failure_notification_registration_list_response_free(ds3_tape_failure_notification_registration_list_response *response)
Definition: ds3.c:18550
ds3_str * display_name
Definition: ds3.h:1138
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)
Definition: ds3.c:12662
void ds3_bucket_response_free(ds3_bucket_response *response)
Definition: ds3.c:17351
ds3_bucket_acl_permission
Definition: ds3.h:131
ds3_checksum_type checksum_type
Definition: ds3.h:507
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)
Definition: ds3.c:15346
ds3_str * storage_domain_id
Definition: ds3.h:912
ds3_error * ds3_get_cache_filesystem_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_cache_filesystem_response **response)
Definition: ds3.c:13960
ds3_request * ds3_init_put_bucket_acl_for_group_spectra_s3_request(const char *bucket_id, const char *group_id, const ds3_bucket_acl_permission permission)
Definition: ds3.c:1764
static ds3_str * xml_get_string(xmlDocPtr doc, xmlNodePtr child_node)
Definition: ds3.c:2981
void ds3_request_set_last_page(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1307
ds3_request * ds3_init_get_tape_partition_failures_spectra_s3_request(void)
Definition: ds3.c:2816
void ds3_detailed_s3_object_list_response_free(ds3_detailed_s3_object_list_response *response)
Definition: ds3.c:19090
ds3_str * end_point
Definition: ds3.h:1129
ds3_ltfs_file_naming_mode ltfs_file_naming
Definition: ds3.h:659
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)
Definition: ds3.c:13297
ds3_request * ds3_init_put_user_group_member_spectra_s3_request(const char *group_id, const char *member_user_id)
Definition: ds3.c:2020
ds3_request * ds3_init_get_tape_partition_with_full_details_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2824
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)
Definition: ds3.c:10580
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)
Definition: ds3.c:6666
static uint64_t xml_get_bool_from_attribute(const ds3_log *log, xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3.c:3014
ds3_tape_partition_state state
Definition: ds3.h:1162
ds3_request * ds3_init_replicate_put_job_spectra_s3_request(const char *resource_id, const char *payload)
Definition: ds3.c:2151
static char * _get_ds3_tape_type_str(ds3_tape_type input)
Definition: ds3.c:154
static ds3_error * _parse_ds3_physical_placement_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_physical_placement_response **_response)
Definition: ds3.c:7766
ds3_unavailable_media_usage_policy unavailable_media_policy
Definition: ds3.h:571
ds3_cache_entry_information_response ** entries
Definition: ds3.h:1042
ds3_request * ds3_init_get_storage_domain_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2610
ds3_request * ds3_init_get_nodes_spectra_s3_request(void)
Definition: ds3.c:2166
ds3_physical_placement_response * physical_placement
Definition: ds3.h:1393
Definition: ds3.h:89
static ds3_error * _parse_ds3_system_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_system_failure_response **_response)
Definition: ds3.c:5213
ds3_request * ds3_init_get_tape_partitions_spectra_s3_request(void)
Definition: ds3.c:2830
ds3_str * last_verified
Definition: ds3.h:1083
ds3_priority default_put_job_priority
Definition: ds3.h:590
ds3_str * group_id
Definition: ds3.h:611
static char * _get_ds3_system_failure_type_str(ds3_system_failure_type input)
Definition: ds3.c:492
static ds3_error * _parse_ds3_cache_entry_information_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7063
void ds3_s3_object_cached_notification_registration_response_free(ds3_s3_object_cached_notification_registration_response *response)
Definition: ds3.c:17640
ds3_error * ds3_put_group_group_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_member_response **response)
Definition: ds3.c:14330
ds3_tape_partition_state state
Definition: ds3.h:1107
char * escape_url_range_header(const char *url)
Definition: ds3_net.c:100
void ds3_system_failure_list_response_free(ds3_system_failure_list_response *response)
Definition: ds3.c:18667
ds3_pool_partition_response ** pool_partitions
Definition: ds3.h:1314
ds3_request * ds3_init_put_data_persistence_rule_spectra_s3_request(const char *data_policy_id, const ds3_data_isolation_level isolation_level, const char *storage_domain_id, const ds3_data_persistence_rule_type type)
Definition: ds3.c:1942
int maximum_auto_verification_frequency_in_days
Definition: ds3.h:661
ds3_error * ds3_get_blobs_on_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **response)
Definition: ds3.c:16678
ds3_str * serial_number
Definition: ds3.h:910
static ds3_error * _parse_ds3_node_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4885
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)
Definition: ds3.c:12167
ds3_error * ds3_cancel_format_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:16358
unsigned int ds3_metadata_size(const ds3_metadata *_metadata)
Definition: ds3.c:743
void ds3_request_set_powered_on(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1439
ds3_str * user_name
Definition: ds3.h:1452
void ds3_s3_objects_cached_notification_payload_response_free(ds3_s3_objects_cached_notification_payload_response *response)
Definition: ds3.c:18875
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.c:3301
static char * _get_ds3_job_request_type_str(ds3_job_request_type input)
Definition: ds3.c:304
void ds3_request_set_health_ds3_pool_health(const ds3_request *request, const ds3_pool_health value)
Definition: ds3.c:1275
ds3_request * ds3_init_get_tape_partition_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2820
void ds3_request_set_activated(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1107
ds3_pool_state state
Definition: ds3.h:874
void ds3_health_verification_result_response_free(ds3_health_verification_result_response *response)
Definition: ds3.c:18193
ds3_error * ds3_get_users_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_spectra_user_list_response **response)
Definition: ds3.c:17207
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)
Definition: ds3.c:8550
void ds3_node_list_response_free(ds3_node_list_response *response)
Definition: ds3.c:18433
ds3_request * ds3_init_get_bucket_acls_spectra_s3_request(void)
Definition: ds3.c:1852
void ds3_tape_failure_list_response_free(ds3_tape_failure_list_response *response)
Definition: ds3.c:18250
uint64_t used_capacity
Definition: ds3.h:878
uint64_t max_capacity_in_bytes
Definition: ds3.h:853
ds3_request * ds3_init_put_pool_storage_domain_member_spectra_s3_request(const char *pool_partition_id, const char *storage_domain_id)
Definition: ds3.c:2557
void ds3_named_detailed_tape_partition_list_response_free(ds3_named_detailed_tape_partition_list_response *response)
Definition: ds3.c:18758
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)
Definition: ds3.c:10728
uint64_t cached_size_in_bytes
Definition: ds3.h:548
uint64_t completed_size_in_bytes
Definition: ds3.h:550
ds3_error * ds3_delete_bucket_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:13491
ds3_string_multimap_entry * ds3_string_multimap_lookup(ds3_string_multimap *map, const ds3_str *key)
ds3_request * ds3_init_allocate_job_chunk_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2064
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)
Definition: ds3.c:10156
void ds3_pool_failure_response_free(ds3_pool_failure_response *response)
Definition: ds3.c:17769
void ds3_tape_drive_list_response_free(ds3_tape_drive_list_response *response)
Definition: ds3.c:18693
ds3_request * ds3_init_delete_pool_failure_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2469
static void _cleanup_hash_value(gpointer value)
Definition: ds3.c:779
void ds3_request_set_library_id(const ds3_request *request, const char *value)
Definition: ds3.c:1315
void ds3_request_set_quiesced_ds3_quiesced(const ds3_request *request, const ds3_quiesced value)
Definition: ds3.c:1459
ds3_error * ds3_list_multi_part_upload_parts_request(const ds3_client *client, const ds3_request *request, ds3_list_parts_result_response **response)
Definition: ds3.c:13598
static ds3_error * _parse_ds3_group_member_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4734
static ds3_error * _parse_ds3_bucket_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4166
ds3_request * ds3_init_delete_permanently_lost_pool_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2465
ds3_str * dns_name
Definition: ds3.h:638
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)
Definition: ds3.c:10220
ds3_naming_convention_type naming_convention
Definition: ds3.h:829
ds3_request * ds3_init_delete_data_policy_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1967
ds3_request * ds3_init_regenerate_user_secret_key_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2934
ds3_replication_conflict_resolution_mode
Definition: ds3.h:244
ds3_request * ds3_init_clear_all_completed_jobs_spectra_s3_request(void)
Definition: ds3.c:2082
ds3_error * ds3_get_bucket_acls_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_list_response **response)
Definition: ds3.c:13813
ds3_bool naked
Definition: ds3.h:1442
static ds3_data_isolation_level _match_ds3_data_isolation_level(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3267
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)
Definition: ds3.c:15329
ds3_priority verify_pending
Definition: ds3.h:1093
ds3_request * ds3_init_get_canceled_jobs_spectra_s3_request(void)
Definition: ds3.c:2114
ds3_error * ds3_delete_system_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15135
static char * _get_ds3_write_preference_level_str(ds3_write_preference_level input)
Definition: ds3.c:436
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)
Definition: ds3.c:11672
static ds3_error * _parse_ds3_data_persistence_rule_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4480
ds3_str * bucket_id
Definition: ds3.h:522
ds3_error * ds3_get_data_policy_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_response **response)
Definition: ds3.c:14236
void ds3_request_set_offset(const ds3_request *request, const uint64_t value)
Definition: ds3.c:1391
ds3_request * ds3_init_get_service_request(void)
Definition: ds3.c:1727
ds3_error * ds3_format_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
Definition: ds3.c:16641
ds3_str * start_date
Definition: ds3.h:1449
ds3_error * ds3_put_bulk_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
Definition: ds3.c:14600
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)
Definition: ds3.c:15295
ds3_request * ds3_init_delete_tape_partition_failure_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2719
ds3_objects_response ** objects
Definition: ds3.h:1473
void ds3_active_job_list_response_free(ds3_active_job_list_response *response)
Definition: ds3.c:18394
void ds3_s3_object_list_response_free(ds3_s3_object_list_response *response)
Definition: ds3.c:18576
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)
Definition: ds3.c:15227
void ds3_named_detailed_tape_list_response_free(ds3_named_detailed_tape_list_response *response)
Definition: ds3.c:18784
ds3_request * ds3_init_get_cache_filesystems_spectra_s3_request(void)
Definition: ds3.c:1897
ds3_error * ds3_get_pool_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_failure_list_response **response)
Definition: ds3.c:15847
ds3_error * ds3_get_tape_library_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_library_response **response)
Definition: ds3.c:16806
ds3_request * ds3_init_put_tape_failure_notification_registration_spectra_s3_request(const char *notification_end_point)
Definition: ds3.c:2230
ds3_request * ds3_init_delete_data_persistence_rule_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1963
ds3_request * ds3_init_delete_permanently_lost_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2703
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)
Definition: ds3.c:15045
void ds3_data_path_backend_response_free(ds3_data_path_backend_response *response)
Definition: ds3.c:17408
ds3_request * ds3_init_verify_all_tapes_spectra_s3_request(void)
Definition: ds3.c:2910
uint64_t num_values
Definition: ds3.h:53
void ds3_request_set_partition_id(const ds3_request *request, const char *value)
Definition: ds3.c:1411
ds3_request * ds3_init_get_data_policy_acls_spectra_s3_request(void)
Definition: ds3.c:1860
ds3_request * ds3_init_get_put_job_to_replicate_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2141
void ds3_request_set_auth_id(const ds3_request *request, const char *value)
Definition: ds3.c:1119
void ds3_request_set_tape_id(const ds3_request *request, const char *value)
Definition: ds3.c:1515
ds3_request * ds3_init_verify_all_pools_spectra_s3_request(void)
Definition: ds3.c:2545
ds3_str * code
Definition: ds3.h:1112
void ds3_storage_domain_failure_notification_registration_response_free(ds3_storage_domain_failure_notification_registration_response *response)
Definition: ds3.c:17684
void ds3_request_set_task_priority_ds3_priority(const ds3_request *request, const ds3_priority value)
Definition: ds3.c:1531
static ds3_error * _parse_ds3_objects_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:8095
ds3_str * eject_location
Definition: ds3.h:900
ds3_request * ds3_init_put_multi_part_upload_part_request(const char *bucket_name, const char *object_name, const int part_number, const char *upload_id)
Definition: ds3.c:1690
static ds3_error * _parse_ds3_pool_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6285
static ds3_error * _parse_ds3_completed_job_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_completed_job_response **_response)
Definition: ds3.c:4335
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)
Definition: ds3.c:8954
ds3_bool latest
Definition: ds3.h:648
uint64_t total_raw_capacity
Definition: ds3.h:1091
void ds3_database_contents_response_free(ds3_database_contents_response *response)
Definition: ds3.c:19077
ds3_error * ds3_modify_cache_filesystem_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_cache_filesystem_response **response)
Definition: ds3.c:14014
ds3_priority verify_pending
Definition: ds3.h:1191
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)
Definition: ds3.c:9509
ds3_str * rechunked
Definition: ds3.h:541
ds3_error * ds3_modify_tape_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_partition_response **response)
Definition: ds3.c:17073
ds3_error * ds3_delete_group_member_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:14381
ds3_data_policy_acl_response ** data_policy_acls
Definition: ds3.h:1222
ds3_request * ds3_init_import_pool_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2525
ds3_request * ds3_init_get_users_spectra_s3_request(void)
Definition: ds3.c:2926
ds3_request * ds3_init_force_full_cache_reclaim_spectra_s3_request(void)
Definition: ds3.c:1887
static ds3_error * _parse_ds3_storage_domain_member_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5194
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)
Definition: ds3.c:11852
ds3_str * creation_date
Definition: ds3.h:587
ds3_pool_response ** pools
Definition: ds3.h:1318
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.c:16076
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)
Definition: ds3.c:11177
ds3_user_response * owner
Definition: ds3.h:1493
ds3_system_failure_response ** system_failures
Definition: ds3.h:1334
ds3_s3_object_type type
Definition: ds3.h:650
void ds3_request_set_media_ejection_allowed(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1359
ds3_request * ds3_init_get_job_chunks_ready_for_client_processing_spectra_s3_request(const char *job)
Definition: ds3.c:2126
ds3_error * ds3_delete_tape_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15143
ds3_request * ds3_init_put_data_policy_acl_for_user_spectra_s3_request(const char *data_policy_id, const char *user_id)
Definition: ds3.c:1798
ds3_priority priority
Definition: ds3.h:628
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)
Definition: ds3.c:5978
void ds3_job_created_notification_payload_response_free(ds3_job_created_notification_payload_response *response)
Definition: ds3.c:17914
void ds3_tape_list_response_free(ds3_tape_list_response *response)
Definition: ds3.c:18771
ds3_request * ds3_init_abort_multi_part_upload_request(const char *bucket_name, const char *object_name, const char *upload_id)
Definition: ds3.c:1670
ds3_bucket_acl_response ** bucket_acls
Definition: ds3.h:1218
static ds3_tape_drive_type _match_ds3_tape_drive_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3555
ds3_error * ds3_get_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_job_list_response **response)
Definition: ds3.c:14764
ds3_error * ds3_import_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:17008
ds3_str * error_message
Definition: ds3.h:882
ds3_request * ds3_init_get_user_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2922
ds3_bool end_to_end_crc_required
Definition: ds3.h:592
ds3_str * storage_class
Definition: ds3.h:1512
static ds3_error * _parse_ds3_tape_partition_failure_notification_registration_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6121
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)
Definition: ds3.c:11537
ds3_error * ds3_get_storage_domain_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_member_response **response)
Definition: ds3.c:16143
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)
Definition: ds3.c:15431
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:1148
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)
Definition: ds3.c:10772
ds3_http_response_format_type format
Definition: ds3.h:824
ds3_job_chunk_client_processing_order_guarantee
Definition: ds3.h:153
void ds3_request_set_pool_type_ds3_pool_type(const ds3_request *request, const ds3_pool_type value)
Definition: ds3.c:1435
ds3_error * ds3_force_tape_environment_refresh_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16635
void ds3_bulk_object_response_free(ds3_bulk_object_response *response)
Definition: ds3.c:18837
ds3_error * ds3_delete_permanently_lost_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16489
ds3_request * ds3_init_get_group_member_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2038
ds3_str * checksum
Definition: ds3_request.h:34
ds3_request * ds3_init_delete_object_lost_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2256
ds3_quiesced
Definition: ds3.h:239
void ds3_data_policy_acl_response_free(ds3_data_policy_acl_response *response)
Definition: ds3.c:17440
ds3_bool full_of_data
Definition: ds3.h:902
static char * _get_ds3_data_persistence_rule_state_str(ds3_data_persistence_rule_state input)
Definition: ds3.c:294
void ds3_storage_domain_failure_notification_registration_list_response_free(ds3_storage_domain_failure_notification_registration_list_response *response)
Definition: ds3.c:18524
ds3_cache_filesystem_information_response ** filesystems
Definition: ds3.h:1050
ds3_str * creation_date
Definition: ds3.h:513
static ds3_error * _parse_ds3_blob_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_blob_response **_response)
Definition: ds3.c:4085
ds3_str * id
Definition: ds3.h:515
ds3_request * ds3_init_put_bucket_spectra_s3_request(const char *name)
Definition: ds3.c:1864
uint64_t cached_size_in_bytes
Definition: ds3.h:1438
ds3_error * ds3_get_cache_filesystems_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_cache_filesystem_list_response **response)
Definition: ds3.c:13980
ds3_error * ds3_get_put_job_to_replicate_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_str *response)
Definition: ds3.c:14781
http_verb verb
Definition: ds3_request.h:31
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)
Definition: ds3.c:9065
void ds3_request_set_version(const ds3_request *request, const uint64_t value)
Definition: ds3.c:1603
ds3_request * ds3_init_delete_tape_density_directive_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2707
ds3_bulk_object_list_response * ds3_init_bulk_object_list()
Definition: ds3.c:19238
void ds3_request_set_tape_partition_id(const ds3_request *request, const char *value)
Definition: ds3.c:1519
ds3_str * error_message
Definition: ds3.h:553
static uint64_t xml_get_uint64(xmlDocPtr doc, xmlNodePtr child_node)
Definition: ds3.c:2965
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)
Definition: ds3.c:14994
ds3_str * id
Definition: ds3.h:928
http_verb
Definition: ds3.h:67
ds3_str * id
Definition: ds3.h:1132
ds3_delete_objects_response * delete_objects
Definition: ds3_request.h:45
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)
Definition: ds3.c:15648
ds3_job_status status
Definition: ds3.h:1450
ds3_str ** values
Definition: ds3.h:52
ds3_rest_action_type
Definition: ds3.h:370
ds3_error * ds3_get_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_list_response **response)
Definition: ds3.c:16957
ds3_request * ds3_init_online_all_tapes_spectra_s3_request(void)
Definition: ds3.c:2898
ds3_request * ds3_init_cancel_all_jobs_spectra_s3_request(void)
Definition: ds3.c:2070
ds3_tape_response * tape
Definition: ds3.h:1196
ds3_request * ds3_init_force_pool_environment_refresh_spectra_s3_request(void)
Definition: ds3.c:2477
size_t ds3_write_to_fd(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:19160
ds3_error * ds3_force_pool_environment_refresh_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15793
ds3_error * ds3_get_completed_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_completed_job_list_response **response)
Definition: ds3.c:14690
ds3_str * object_id
Definition: ds3.h:510
ds3_request * ds3_init_get_group_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2046
ds3_str * guid
Definition: ds3.h:862
ds3_error * ds3_get_tape_libraries_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_library_list_response **response)
Definition: ds3.c:16789
ds3_error * ds3_put_bucket_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_response **response)
Definition: ds3.c:13867
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)
Definition: ds3.c:15210
ds3_error * ds3_get_active_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_active_job_list_response **response)
Definition: ds3.c:14656
static ds3_error * _parse_ds3_job_node_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_job_node_response **_response)
Definition: ds3.c:7299
void ds3_storage_domain_capacity_summary_response_free(ds3_storage_domain_capacity_summary_response *response)
Definition: ds3.c:17526
void ds3_request_set_end_to_end_crc_required(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1243
ds3_request * ds3_init_get_pool_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2511
ds3_error * ds3_complete_multi_part_upload_request(const ds3_client *client, const ds3_request *request, ds3_complete_multipart_upload_result_response **response)
Definition: ds3.c:13433
uint64_t completed_size_in_bytes
Definition: ds3.h:621
ds3_request * ds3_init_put_system_failure_notification_registration_spectra_s3_request(const char *notification_end_point)
Definition: ds3.c:2223
static char * _get_ds3_auto_inspect_mode_str(ds3_auto_inspect_mode input)
Definition: ds3.c:186
ds3_error * ds3_modify_node_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_node_response **response)
Definition: ds3.c:14889
ds3_request * ds3_init_put_object_persisted_notification_registration_spectra_s3_request(const char *notification_end_point)
Definition: ds3.c:2202
ds3_request * ds3_init_delete_object_request(const char *bucket_name, const char *object_name)
Definition: ds3.c:1711
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)
Definition: ds3.c:15380
size_t ds3_write_to_file(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:19152
ds3_request * ds3_init_modify_bucket_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1883
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)
Definition: ds3.c:11087
ds3_request * ds3_init_verify_pool_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2551
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)
Definition: ds3.c:5733
void ds3_request_set_created_at(const ds3_request *request, const char *value)
Definition: ds3.c:1191
void ds3_request_set_tape_type_ds3_tape_type(const ds3_request *request, const ds3_tape_type value)
Definition: ds3.c:1527
void ds3_request_set_type_ds3_s3_object_type(const ds3_request *request, const ds3_s3_object_type value)
Definition: ds3.c:1543
ds3_request * ds3_init_get_object_lost_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2308
void ds3_request_set_write_protected(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1619
ds3_str * error_message
Definition: ds3.h:926
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)
Definition: ds3.c:13754
static ds3_tape_partition_state _match_ds3_tape_partition_state(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3651
void ds3_request_set_pool_state_ds3_pool_state(const ds3_request *request, const ds3_pool_state value)
Definition: ds3.c:1431
size_t num_objects
Definition: ds3.h:1460
ds3_str * access_id
Definition: ds3.h:90
ds3_http_response_format_type
Definition: ds3.h:478
ds3_request * ds3_init_get_object_cached_notification_registrations_spectra_s3_request(void)
Definition: ds3.c:2304
static char * _get_ds3_tape_state_str(ds3_tape_state input)
Definition: ds3.c:102
ds3_bulk_object_list_response * ds3_convert_object_list(const ds3_contents_response **objects, size_t num_objects)
Definition: ds3.c:19219
ds3_str * storage_domain_id
Definition: ds3.h:875
ds3_error * ds3_get_pool_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_partition_response **response)
Definition: ds3.c:15864
ds3_storage_domain_failure_response ** storage_domain_failures
Definition: ds3.h:1322
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)
Definition: ds3.c:11402
ds3_request * ds3_init_get_object_spectra_s3_request(const char *resource_id, const char *bucket_id)
Definition: ds3.c:2373
void ds3_request_set_max_capacity_in_bytes(const ds3_request *request, const uint64_t value)
Definition: ds3.c:1331
void ds3_request_set_sha512(ds3_request *_request, const char *sha512)
Definition: ds3.c:1056
ds3_request * ds3_init_put_data_policy_acl_for_group_spectra_s3_request(const char *data_policy_id, const char *group_id)
Definition: ds3.c:1788
void ds3_complete_multipart_upload_result_response_free(ds3_complete_multipart_upload_result_response *response)
Definition: ds3.c:18059
void ds3_request_set_tape_state_ds3_tape_state(const ds3_request *request, const ds3_tape_state value)
Definition: ds3.c:1523
ds3_http_response_format_type format
Definition: ds3.h:744
ds3_error * ds3_compact_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15704
void ds3_system_failure_notification_registration_list_response_free(ds3_system_failure_notification_registration_list_response *response)
Definition: ds3.c:18537
void ds3_storage_domain_failure_notification_payload_response_free(ds3_storage_domain_failure_notification_payload_response *response)
Definition: ds3.c:17936
GHashTable * query_params
Definition: ds3_request.h:37
void ds3_request_set_storage_domain_id(const ds3_request *request, const char *value)
Definition: ds3.c:1507
void ds3_request_set_default_put_job_priority_ds3_priority(const ds3_request *request, const ds3_priority value)
Definition: ds3.c:1215
void ds3_request_set_auto_reclaim_initiate_threshold(const ds3_request *request, const float value)
Definition: ds3.c:1147
static ds3_write_optimization _match_ds3_write_optimization(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3397
ds3_error * ds3_delete_storage_domain_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16115
static ds3_error * _parse_ds3_bucket_acl_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_acl_response **_response)
Definition: ds3.c:4185
ds3_data_persistence_rule_response ** data_persistence_rules
Definition: ds3.h:1234
void ds3_storage_domain_list_response_free(ds3_storage_domain_list_response *response)
Definition: ds3.c:18654
void ds3_detailed_tape_partition_response_free(ds3_detailed_tape_partition_response *response)
Definition: ds3.c:18106
ds3_request * ds3_init_get_storage_domain_failure_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2332
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)
Definition: ds3.c:14960
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)
Definition: ds3.c:9140
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)
Definition: ds3.c:10952
static ds3_error * _parse_ds3_multi_part_upload_part_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7280
void ds3_request_set_job_id(const ds3_request *request, const char *value)
Definition: ds3.c:1299
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)
Definition: ds3.c:11987
ds3_storage_domain_response ** storage_domains
Definition: ds3.h:1330
ds3_error * ds3_delete_bucket_acl_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:13771
ds3_request * ds3_init_get_job_completed_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2284
ds3_request * ds3_init_get_object_persisted_notification_registrations_spectra_s3_request(void)
Definition: ds3.c:2320
void ds3_request_set_maximum_auto_verification_frequency_in_days(const ds3_request *request, const int value)
Definition: ds3.c:1355
ds3_error * ds3_inspect_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:17045
ds3_error * ds3_cancel_import_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:16395
static ds3_bulk_object_response * _ds3_bulk_object_from_file(const char *file_name, const char *base_path)
Definition: ds3.c:19168
ds3_bool assigned_to_storage_domain
Definition: ds3.h:1167
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)
Definition: ds3.c:14049
ds3_str * date_completed
Definition: ds3.h:552
void ds3_request_set_auto_activate_timeout_in_mins(const ds3_request *request, const int value)
Definition: ds3.c:1123
static char * _get_ds3_tape_drive_type_str(ds3_tape_drive_type input)
Definition: ds3.c:502
ds3_request * ds3_init_compact_all_pools_spectra_s3_request(void)
Definition: ds3.c:2438
ds3_request * ds3_init_delete_storage_domain_failure_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2586
ds3_request * ds3_init_verify_physical_placement_for_objects_spectra_s3_request(const char *resource_id, const ds3_bulk_object_list_response *object_list)
Definition: ds3.c:2408
ds3_error * ds3_head_object_request(const ds3_client *client, const ds3_request *request, ds3_metadata **_metadata)
Definition: ds3.c:13383
static ds3_error * _parse_ds3_named_detailed_tape_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7645
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)
Definition: ds3.c:11312
ds3_request * ds3_init_delete_object_persisted_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2260
uint64_t num_keys
Definition: ds3.h:58
Definition: ds3.h:50
ds3_error * ds3_get_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_list_response **response)
Definition: ds3.c:15921
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_ds3_node_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_node_response **_response)
Definition: ds3.c:4844
ds3_error * ds3_get_cache_state_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_cache_information_response **response)
Definition: ds3.c:13997
ds3_request * ds3_init_delete_data_policy_acl_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1844
static ds3_error * _parse_ds3_build_information_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_build_information_response **_response)
Definition: ds3.c:6920
void ds3_s3_object_persisted_notification_registration_list_response_free(ds3_s3_object_persisted_notification_registration_list_response *response)
Definition: ds3.c:18498
void ds3_request_set_error_message(const ds3_request *request, const char *value)
Definition: ds3.c:1247
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)
Definition: ds3.c:5652
ds3_str * last_verified
Definition: ds3.h:907
ds3_naming_convention_type naming_convention
Definition: ds3.h:749
ds3_error * ds3_verify_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16014
ds3_str * bucket_id
Definition: ds3.h:618
ds3_blob_store_task_state
Definition: ds3.h:350
static ds3_error * _parse_ds3_s3_object_cached_notification_registration_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5633
Definition: ds3.h:70
void ds3_job_completed_notification_registration_response_free(ds3_job_completed_notification_registration_response *response)
Definition: ds3.c:17597
ds3_error * ds3_cancel_format_on_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
Definition: ds3.c:16341
ds3_request * ds3_init_format_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2776
float max_percent_utilization_of_filesystem
Definition: ds3.h:854
void ds3_request_set_upload_id_marker(const ds3_request *request, const char *value)
Definition: ds3.c:1591
ds3_error * ds3_get_storage_domain_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_response **response)
Definition: ds3.c:16180
ds3_tape_drive_state state
Definition: ds3.h:932
static ds3_rest_domain_type _match_ds3_rest_domain_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3815
ds3_priority
Definition: ds3.h:123
ds3_request * ds3_init_cancel_import_pool_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2432
ds3_bool assigned_to_storage_domain
Definition: ds3.h:893
void ds3_request_set_preferred_number_of_chunks(const ds3_request *request, const int value)
Definition: ds3.c:1443
static xmlDocPtr _generate_xml_complete_mpu(const ds3_complete_multipart_upload_response *mpu_list)
Definition: ds3.c:3114
ds3_str * user_id
Definition: ds3.h:544
ds3_request * ds3_init_modify_data_policy_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1991
void ds3_request_set_eject_label(const ds3_request *request, const char *value)
Definition: ds3.c:1235
void ds3_pool_failure_notification_registration_list_response_free(ds3_pool_failure_notification_registration_list_response *response)
Definition: ds3.c:18511
ds3_bool write_protected
Definition: ds3.h:917
ds3_error * ds3_get_tapes_with_full_details_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_named_detailed_tape_list_response **response)
Definition: ds3.c:16974
ds3_data_persistence_rule_type
Definition: ds3.h:148
static ds3_error * _parse_ds3_tape_drive_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6647
ds3_naming_convention_type
Definition: ds3.h:490
ds3_pool_failure_response ** pool_failures
Definition: ds3.h:1310
ds3_bool take_ownership_pending
Definition: ds3.h:913
void ds3_request_set_type_ds3_pool_type(const ds3_request *request, const ds3_pool_type value)
Definition: ds3.c:1551
void ds3_request_set_auto_eject_upon_media_full(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1139
ds3_error * ds3_delete_pool_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15782
ds3_request * ds3_init_get_bucket_request(const char *bucket_name)
Definition: ds3.c:1723
void ds3_blob_response_free(ds3_blob_response *response)
Definition: ds3.c:17340
ds3_request * ds3_init_delete_bucket_acl_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1840
ds3_request * ds3_init_modify_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2894
void ds3_str_free(ds3_str *string)
Definition: ds3_string.c:48
ds3_completed_job_response ** completed_jobs
Definition: ds3.h:1258
ds3_error * ds3_delete_object_lost_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15103
ds3_job_request_type request_type
Definition: ds3.h:1477
Definition: ds3.c:969
ds3_application
Definition: ds3.h:366
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)
Definition: ds3.c:8879
ds3_request * ds3_init_get_data_policies_spectra_s3_request(void)
Definition: ds3.c:1979
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)
Definition: ds3.c:12750
ds3_str * partition_id
Definition: ds3.h:870
ds3_error * ds3_get_bucket_capacity_summary_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_capacity_summary_container_response **response)
Definition: ds3.c:14034
ds3_str * ds3_str_dup(const ds3_str *string)
Definition: ds3_string.c:33
void ds3_list_bucket_result_response_free(ds3_list_bucket_result_response *response)
Definition: ds3.c:19103
ds3_str * key
Definition: ds3.h:1508
ds3_naming_convention_type naming_convention
Definition: ds3.h:723
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)
Definition: ds3.c:15244
ds3_error * ds3_modify_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:17093
static ds3_rest_action_type _match_ds3_rest_action_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3795
ds3_data_persistence_rule_type type
Definition: ds3.h:582
ds3_str * eject_pending
Definition: ds3.h:1077
ds3_request * ds3_init_get_data_policy_acl_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1856
void ds3_request_set_max_uploads(const ds3_request *request, const int value)
Definition: ds3.c:1351
ds3_str ** strings_list
Definition: ds3.h:114
The public definitions for the Spectra S3 C SDK.
ds3_job_request_type request_type
Definition: ds3.h:630
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)
Definition: ds3.c:12257
void ds3_pool_failure_notification_registration_response_free(ds3_pool_failure_notification_registration_response *response)
Definition: ds3.c:17626
ds3_str * id
Definition: ds3.h:639
void ds3_s3_object_persisted_notification_registration_response_free(ds3_s3_object_persisted_notification_registration_response *response)
Definition: ds3.c:17669
ds3_request * ds3_init_get_tapes_spectra_s3_request(void)
Definition: ds3.c:2850
static void _set_query_param(const ds3_request *_request, const char *key, const char *value)
Definition: ds3.c:1074
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)
Definition: ds3.c:11357
ds3_str * default_data_policy_id
Definition: ds3.h:696
ds3_error * ds3_cancel_online_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:16432
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)
Definition: ds3.c:15397
static void _set_query_param_flag(const ds3_request *_request, const char *key, ds3_bool value)
Definition: ds3.c:1079
void ds3_request_set_force(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1255
ds3_error * ds3_delete_tape_density_directive_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16500
ds3_request * ds3_init_get_storage_domain_failure_notification_registrations_spectra_s3_request(void)
Definition: ds3.c:2336
ds3_priority priority
Definition: ds3.h:1447
ds3_error * ds3_allocate_job_chunk_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_objects_response **response)
Definition: ds3.c:14517
ds3_request * ds3_init_get_active_jobs_spectra_s3_request(void)
Definition: ds3.c:2110
static ds3_error * _parse_ds3_data_policy_acl_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4632
ds3_str * bucket_name
Definition: ds3.h:1437
ds3_error * ds3_delete_tape_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16522
void ds3_tape_library_response_free(ds3_tape_library_response *response)
Definition: ds3.c:17851
void ds3_tape_partition_failure_notification_registration_response_free(ds3_tape_partition_failure_notification_registration_response *response)
Definition: ds3.c:17726
ds3_request * ds3_init_get_storage_domain_members_spectra_s3_request(void)
Definition: ds3.c:2606
ds3_request * ds3_init_get_data_planner_blob_store_tasks_spectra_s3_request(void)
Definition: ds3.c:1934
uint64_t reserved_capacity
Definition: ds3.h:873
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)
Definition: ds3.c:12077
static GHashTable * _create_hash_table(void)
Definition: ds3.c:783
ds3_request * ds3_init_format_foreign_pool_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2487
ds3_error * ds3_get_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
Definition: ds3.c:15901
void ds3_request_set_group_id(const ds3_request *request, const char *value)
Definition: ds3.c:1271
void ds3_request_set_aggregating(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1111
ds3_error * ds3_modify_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
Definition: ds3.c:14804
static char * _get_ds3_bucket_acl_permission_str(ds3_bucket_acl_permission input)
Definition: ds3.c:46
ds3_request * ds3_init_verify_physical_placement_for_objects_with_full_details_spectra_s3_request(const char *resource_id, const ds3_bulk_object_list_response *object_list)
Definition: ds3.c:2416
ds3_str * beans_retriever_name
Definition: ds3.h:1207
static ds3_error * _parse_ds3_pool_partition_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_partition_response **_response)
Definition: ds3.c:6363
uint64_t num_redirects
Definition: ds3.h:1578
ds3_quiesced quiesced
Definition: ds3.h:872
ds3_request * ds3_init_get_data_persistence_rule_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1971
void ds3_s3_objects_lost_notification_payload_response_free(ds3_s3_objects_lost_notification_payload_response *response)
Definition: ds3.c:18890
ds3_system_failure_notification_registration_response ** system_failure_notification_registrations
Definition: ds3.h:1294
static ds3_error * _parse_ds3_storage_domain_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_storage_domain_response **_response)
Definition: ds3.c:4967
ds3_rest_operation_type
Definition: ds3.h:440
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)
Definition: ds3.c:11582
ds3_str * id
Definition: ds3.h:1139
static ds3_error * _parse_ds3_job_node_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7332
ds3_error * ds3_import_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15938
static ds3_error * _parse_ds3_storage_domain_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5031
static bool element_equal(const xmlNodePtr xml_node, const char *element_name)
Definition: ds3.c:2945
ds3_bool aggregating
Definition: ds3.h:1436
void ds3_job_response_free(ds3_job_response *response)
Definition: ds3.c:18950
static ds3_bool xml_get_bool(const ds3_log *log, xmlDocPtr doc, const xmlNodePtr xml_node)
Definition: ds3.c:2998
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)
Definition: ds3.c:15011
static char * _get_ds3_tape_drive_state_str(ds3_tape_drive_state input)
Definition: ds3.c:520
void ds3_tape_density_directive_response_free(ds3_tape_density_directive_response *response)
Definition: ds3.c:17814
ds3_str * creation_date
Definition: ds3.h:646
ds3_error * ds3_cancel_eject_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:16321
ds3_request * ds3_init_modify_all_pools_spectra_s3_request(const ds3_quiesced quiesced)
Definition: ds3.c:2531
ds3_str * name
Definition: ds3.h:51
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:549
void ds3_request_set_assigned_to_storage_domain(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1115
void ds3_node_response_free(ds3_node_response *response)
Definition: ds3.c:17489
static ds3_error * _parse_ds3_tape_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_failure_response **_response)
Definition: ds3.c:7664
ds3_request * ds3_init_eject_all_tapes_spectra_s3_request(void)
Definition: ds3.c:2727
ds3_job_completed_notification_registration_response ** job_completed_notification_registrations
Definition: ds3.h:1266
ds3_write_preference_level write_preference
Definition: ds3.h:686
ds3_tape_drive_state
Definition: ds3.h:254
ds3_request * ds3_init_get_physical_placement_for_objects_with_full_details_spectra_s3_request(const char *resource_id, const ds3_bulk_object_list_response *object_list)
Definition: ds3.c:2398
void ds3_cache_filesystem_list_response_free(ds3_cache_filesystem_list_response *response)
Definition: ds3.c:18329
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)
Definition: ds3.c:11132
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)
Definition: ds3.c:9801
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)
Definition: ds3.c:16718
static ds3_s3_object_type _match_ds3_s3_object_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3333
ds3_str * checksum
Definition: ds3.h:506
ds3_error * ds3_delete_storage_domain_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15127
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)
Definition: ds3.c:15159
int data_path_https_port
Definition: ds3.h:636
ds3_request * ds3_init_modify_pool_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2541
ds3_blob_response * blob
Definition: ds3.h:1036
ds3_multi_part_upload_response ** uploads
Definition: ds3.h:1565
ds3_request * ds3_init_deallocate_pool_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2459
void ds3_request_set_minimum_days_to_retain(const ds3_request *request, const int value)
Definition: ds3.c:1371
ds3_request * ds3_init_get_object_cached_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2300
ds3_cache_entry_state
Definition: ds3.h:357
static char * _get_ds3_job_chunk_client_processing_order_guarantee_str(ds3_job_chunk_client_processing_order_guarantee input)
Definition: ds3.c:316
static ds3_error * _parse_ds3_type_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_type_response **_response)
Definition: ds3.c:7716
ds3_error * ds3_delete_storage_domain_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16093
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)
Definition: ds3.c:14094
ds3_bulk_object_list_response * object_list
Definition: ds3_request.h:40
uint64_t default_blob_size
Definition: ds3.h:588
ds3_error * ds3_delete_folder_recursively_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15499
static ds3_error * _parse_ds3_tape_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6513
void ds3_duration_response_free(ds3_duration_response *response)
Definition: ds3.c:18282
void ds3_cache_filesystem_information_response_free(ds3_cache_filesystem_information_response *response)
Definition: ds3.c:18021
void ds3_request_set_burst_threshold(const ds3_request *request, const float value)
Definition: ds3.c:1171
ds3_data_persistence_rule_state
Definition: ds3.h:144
ds3_error * ds3_modify_storage_domain_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_response **response)
Definition: ds3.c:16237
void ds3_job_completed_notification_payload_response_free(ds3_job_completed_notification_payload_response *response)
Definition: ds3.c:18860
ds3_error * ds3_get_tape_density_directive_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_density_directive_response **response)
Definition: ds3.c:16698
void ds3_request_set_conflict_resolution_mode_ds3_import_conflict_resolution_mode(const ds3_request *request, const ds3_import_conflict_resolution_mode value)
Definition: ds3.c:1187
ds3_str * serial_number
Definition: ds3.h:931
ds3_str * serial_number
Definition: ds3.h:1087
ds3_str * last_modified
Definition: ds3.h:1509
ds3_tape_partition_failure_response ** tape_partition_failures
Definition: ds3.h:1354
ds3_request * ds3_init_get_degraded_buckets_spectra_s3_request(void)
Definition: ds3.c:1995
unsigned int ds3_string_multimap_entry_get_num_values(const ds3_string_multimap_entry *map_entry)
static ds3_error * _parse_ds3_active_job_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4825
void ds3_request_set_ltfs_file_naming_ds3_ltfs_file_naming_mode(const ds3_request *request, const ds3_ltfs_file_naming_mode value)
Definition: ds3.c:1319
ds3_request * ds3_init_get_tape_failure_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2348
ds3_error * ds3_replicate_put_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
Definition: ds3.c:14824
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)
Definition: ds3.c:15482
uint64_t available_raw_capacity
Definition: ds3.h:1070
ds3_bulk_object_response ** objects
Definition: ds3.h:1459
ds3_request * ds3_init_get_pools_spectra_s3_request(void)
Definition: ds3.c:2515
ds3_str * description_for_identification
Definition: ds3.h:897
static ds3_error * _parse_ds3_contents_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_contents_response **_response)
Definition: ds3.c:8170
ds3_str * tape_id
Definition: ds3.h:933
static uint64_t xml_get_uint64_from_attribute(xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3.c:2977
static char * _get_ds3_tape_partition_state_str(ds3_tape_partition_state input)
Definition: ds3.c:622
ds3_request * ds3_init_put_tape_partition_failure_notification_registration_spectra_s3_request(const char *notification_end_point)
Definition: ds3.c:2237
ds3_str * rechunked
Definition: ds3.h:559
ds3_error * ds3_cancel_import_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
Definition: ds3.c:15684
void ds3_active_job_response_free(ds3_active_job_response *response)
Definition: ds3.c:17474
ds3_versioning_level versioning
Definition: ds3.h:597
ds3_metadata_entry * ds3_metadata_get_entry(const ds3_metadata *_metadata, const char *name)
Definition: ds3.c:714
static char * _get_ds3_pool_failure_type_str(ds3_pool_failure_type input)
Definition: ds3.c:394
static ds3_error * _parse_ds3_named_detailed_tape_partition_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7525
static ds3_error * _parse_ds3_pool_partition_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6399
uint64_t size
Definition: ds3.h:1511
ds3_request * ds3_init_delete_tape_drive_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2711
ds3_str * management_url
Definition: ds3.h:946
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)
Definition: ds3.c:15592
ds3_log_lvl log_lvl
Definition: ds3.h:86
static ds3_versioning_level _match_ds3_versioning_level(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3387
static ds3_ltfs_file_naming_mode _match_ds3_ltfs_file_naming_mode(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3323
ds3_request * ds3_init_cancel_online_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2680
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)
Definition: ds3.c:11717
ds3_pool_failure_notification_registration_response ** pool_failure_notification_registrations
Definition: ds3.h:1286
ds3_request * ds3_init_put_global_data_policy_acl_for_group_spectra_s3_request(const char *group_id)
Definition: ds3.c:1826
ds3_error * ds3_get_bucket_request(const ds3_client *client, const ds3_request *request, ds3_list_bucket_result_response **response)
Definition: ds3.c:13535
static ds3_quiesced _match_ds3_quiesced(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3505
ds3_request * ds3_init_head_bucket_request(const char *bucket_name)
Definition: ds3.c:1737
static ds3_error * _parse_ds3_system_failure_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5251
ds3_error * ds3_get_blobs_on_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bulk_object_list_response **response)
Definition: ds3.c:15827
ds3_request * ds3_init_modify_cache_filesystem_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1905
void ds3_request_set_pool_id(const ds3_request *request, const char *value)
Definition: ds3.c:1423
void ds3_storage_domain_member_list_response_free(ds3_storage_domain_member_list_response *response)
Definition: ds3.c:18641
ds3_write_optimization write_optimization
Definition: ds3.h:1482
void net_cleanup(void)
Definition: ds3_net.c:584
ds3_str * e_tag
Definition: ds3.h:1507
ds3_bool built_in
Definition: ds3.h:606
ds3_request * ds3_init_get_cache_filesystem_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1893
void ds3_request_set_pool_health_ds3_pool_health(const ds3_request *request, const ds3_pool_health value)
Definition: ds3.c:1419
static char * _get_ds3_request_type_str(ds3_request_type input)
Definition: ds3.c:368
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)
Definition: ds3.c:9434
static ds3_error * _parse_ds3_tape_partition_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6842
#define LENGTH_BUFF_SIZE
Definition: ds3.c:3079
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)
Definition: ds3.c:11942
ds3_error * ds3_eject_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:16615
static ds3_error * _parse_ds3_bulk_object_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7861
ds3_tape_partition_state state
Definition: ds3.h:959
void ds3_request_set_member_user_id(const ds3_request *request, const char *value)
Definition: ds3.c:1367
ds3_bool aggregating
Definition: ds3.h:617
static ds3_pool_failure_type _match_ds3_pool_failure_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3421
ds3_multi_part_upload_part_response ** parts
Definition: ds3.h:1495
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)
Definition: ds3.c:15312
void ds3_detailed_tape_failure_response_free(ds3_detailed_tape_failure_response *response)
Definition: ds3.c:17838
void ds3_pool_failure_notification_payload_response_free(ds3_pool_failure_notification_payload_response *response)
Definition: ds3.c:17924
ds3_bool truncated
Definition: ds3.h:543
ds3_request * ds3_init_delete_system_failure_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2272
void ds3_request_set_default_data_policy_id(const ds3_request *request, const char *value)
Definition: ds3.c:1203
static ds3_error * _parse_ds3_data_policy_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4580
ds3_request * ds3_init_complete_multi_part_upload_request(const char *bucket_name, const char *object_name, const char *upload_id, const ds3_complete_multipart_upload_response *mpu_list)
Definition: ds3.c:1677
ds3_request * ds3_init_delete_group_member_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2030
ds3_bool assigned_to_storage_domain
Definition: ds3.h:1069
static ds3_error * _parse_ds3_storage_domain_failure_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5121
static ds3_metadata_entry * ds3_metadata_entry_init(ds3_string_multimap_entry *header_entry)
Definition: ds3.c:656
static ds3_tape_type _match_ds3_tape_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3715
static char * _get_ds3_http_response_format_type_str(ds3_http_response_format_type input)
Definition: ds3.c:340
uint64_t logical_used_capacity
Definition: ds3.h:517
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)
Definition: ds3.c:5488
ds3_request * ds3_init_get_completed_jobs_spectra_s3_request(void)
Definition: ds3.c:2118
ds3_error * ds3_delete_tape_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16544
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)
Definition: ds3.c:14926
ds3_request * ds3_init_get_objects_with_full_details_spectra_s3_request(void)
Definition: ds3.c:2384
void ds3_blob_store_tasks_information_response_free(ds3_blob_store_tasks_information_response *response)
Definition: ds3.c:17999
ds3_request * ds3_init_cancel_format_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2656
static int num_chars_in_ds3_str(const ds3_str *str, char ch)
Definition: ds3.c:3033
void ds3_cache_entry_information_response_free(ds3_cache_entry_information_response *response)
Definition: ds3.c:18012
static ds3_error * _parse_ds3_cache_filesystem_information_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7132
static ds3_error * _parse_ds3_detailed_tape_failure_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6708
static ds3_pool_type _match_ds3_pool_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3479
void ds3_request_set_full_of_data(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1267
static ds3_error * _parse_ds3_blob_store_task_information_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7006
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.c:13480
ds3_naming_convention_type naming_convention
Definition: ds3.h:736
static ds3_error * _parse_ds3_tape_failure_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:7697
ds3_request * ds3_init_delete_pool_failure_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2264
ds3_blob_store_task_state state
Definition: ds3.h:1028
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)
Definition: ds3.c:5897
ds3_error * ds3_verify_user_is_member_of_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_response **response)
Definition: ds3.c:14497
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)
Definition: ds3.c:12795
static void _set_query_param_uint64_t(const ds3_request *_request, const char *key, uint64_t value)
Definition: ds3.c:1087
static const char * METADATA_PREFIX
Definition: ds3.c:655
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)
Definition: ds3.c:10997
ds3_request * ds3_init_force_tape_environment_refresh_spectra_s3_request(void)
Definition: ds3.c:2766
void ds3_request_set_isolation_level_ds3_data_isolation_level(const ds3_request *request, const ds3_data_isolation_level value)
Definition: ds3.c:1291
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)
Definition: ds3.c:4426
void ds3_bucket_acl_response_free(ds3_bucket_acl_response *response)
Definition: ds3.c:17364
ds3_tape_partition_failure_type type
Definition: ds3.h:966
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)
Definition: ds3.c:9019
static void _set_map_value(GHashTable *map, const char *key, const char *value)
Definition: ds3.c:992
ds3_import_export_configuration import_export_configuration
Definition: ds3.h:1102
ds3_error * ds3_get_bucket_acl_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_response **response)
Definition: ds3.c:13793
ds3_priority verify_pending
Definition: ds3.h:916
void ds3_contents_response_free(ds3_contents_response *response)
Definition: ds3.c:19049
void ds3_request_set_state_ds3_data_persistence_rule_state(const ds3_request *request, const ds3_data_persistence_rule_state value)
Definition: ds3.c:1483
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)
Definition: ds3.c:8728
ds3_str * user_id
Definition: ds3.h:526
ds3_request * ds3_init_cancel_eject_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2644
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)
Definition: ds3.c:16826
void ds3_s3_object_response_free(ds3_s3_object_response *response)
Definition: ds3.c:17503
void ds3_storage_domain_member_response_free(ds3_storage_domain_member_response *response)
Definition: ds3.c:17546
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)
Definition: ds3.c:14909
ds3_str * creation_date
Definition: ds3.h:1054
ds3_sql_operation
Definition: ds3.h:466
ds3_error_response * error
Definition: ds3.h:1572
void ds3_request_set_pool_partition_id(const ds3_request *request, const char *value)
Definition: ds3.c:1427
ds3_tape_type
Definition: ds3.h:335
ds3_complete_multipart_upload_response * mpu_list
Definition: ds3_request.h:43
ds3_str * auth_id
Definition: ds3.h:695
static ds3_error * _parse_ds3_tape_library_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_library_response **_response)
Definition: ds3.c:6727
size_t num_deleted_objects
Definition: ds3.h:1431
ds3_error * ds3_abort_multi_part_upload_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:13422
void ds3_string_multimap_free(ds3_string_multimap *map)
ds3_import_export_configuration import_export_configuration
Definition: ds3.h:1157
ds3_pool_type type
Definition: ds3.h:877
ds3_http_response_format_type format
Definition: ds3.h:771
void ds3_job_created_notification_registration_response_free(ds3_job_created_notification_registration_response *response)
Definition: ds3.c:17612
uint64_t cached_size_in_bytes
Definition: ds3.h:530
void ds3_request_set_write_preference_ds3_write_preference_level(const ds3_request *request, const ds3_write_preference_level value)
Definition: ds3.c:1615
void ds3_request_set_default_verify_job_priority_ds3_priority(const ds3_request *request, const ds3_priority value)
Definition: ds3.c:1219
void(* log_callback)(const char *log_message, void *user_data)
Definition: ds3.h:84
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)
Definition: ds3.c:15448
ds3_error * ds3_put_data_policy_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_policy_response **response)
Definition: ds3.c:14143
ds3_str * name
Definition: ds3.h:1443
static ds3_error * _parse_ds3_bucket_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bucket_response **_response)
Definition: ds3.c:4127
ds3_tape_drive_response ** tape_drives
Definition: ds3.h:1342
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)
Definition: ds3.c:15465
static ds3_str * xml_get_string_from_attribute(xmlDocPtr doc, struct _xmlAttr *attribute)
Definition: ds3.c:2994
static const char UNSIGNED_LONG_BASE_10[]
Definition: ds3.c:954
ds3_request * ds3_init_get_blobs_on_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2782
void ds3_bucket_details_response_free(ds3_bucket_details_response *response)
Definition: ds3.c:18049
ds3_bool naked
Definition: ds3.h:625
ds3_priority priority
Definition: ds3.h:540
ds3_tape_state state
Definition: ds3.h:911
ds3_bool write_protected
Definition: ds3.h:1094
void ds3_request_set_latest(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1311
ds3_request * ds3_init_modify_node_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2170
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)
Definition: ds3.c:10907
ds3_active_job_response ** active_jobs
Definition: ds3.h:1250
void ds3_blob_store_task_information_response_free(ds3_blob_store_task_information_response *response)
Definition: ds3.c:17984
ds3_tape_failure_response ** failures
Definition: ds3.h:1199
ds3_request * ds3_init_inspect_all_tapes_spectra_s3_request(void)
Definition: ds3.c:2872
ds3_tape_state
Definition: ds3.h:310
ds3_request * ds3_init_get_tapes_with_full_details_spectra_s3_request(void)
Definition: ds3.c:2854
ds3_request * ds3_init_put_object_request(const char *bucket_name, const char *object_name, const uint64_t length)
Definition: ds3.c:1701
static char * _get_ds3_tape_failure_type_str(ds3_tape_failure_type input)
Definition: ds3.c:534
ds3_request * ds3_init_delete_storage_domain_failure_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2268
ds3_request * ds3_init_modify_all_tape_partitions_spectra_s3_request(const ds3_quiesced quiesced)
Definition: ds3.c:2884
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)
Definition: ds3.c:8485
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)
Definition: ds3.c:16042
ds3_error * ds3_format_foreign_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
Definition: ds3.c:15807
static ds3_data_persistence_rule_type _match_ds3_data_persistence_rule_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3289
ds3_str * data_policy_id
Definition: ds3.h:514
ds3_error * ds3_get_canceled_jobs_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_canceled_job_list_response **response)
Definition: ds3.c:14673
ds3_bool assigned_to_storage_domain
Definition: ds3.h:859
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)
Definition: ds3.c:12527
void ds3_multi_part_upload_part_response_free(ds3_multi_part_upload_part_response *response)
Definition: ds3.c:18143
ds3_request * ds3_init_get_pool_partitions_spectra_s3_request(void)
Definition: ds3.c:2507
ds3_request * ds3_init_get_bucket_acl_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1848
ds3_request * ds3_init_put_job_completed_notification_registration_spectra_s3_request(const char *notification_end_point)
Definition: ds3.c:2174
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)
Definition: ds3.c:7082
ds3_s3_object_cached_notification_registration_response ** s3_object_cached_notification_registrations
Definition: ds3.h:1274
void ds3_list_parts_result_response_free(ds3_list_parts_result_response *response)
Definition: ds3.c:19020
ds3_str * auto_eject_upon_cron
Definition: ds3.h:654
static ds3_error * _parse_ds3_storage_domain_failure_notification_registration_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5878
ds3_priority rebuild_priority
Definition: ds3.h:596
ds3_cache_filesystem_response ** cache_filesystems
Definition: ds3.h:1230
ds3_request * ds3_init_get_storage_domains_spectra_s3_request(void)
Definition: ds3.c:2614
ds3_error * ds3_initiate_multi_part_upload_request(const ds3_client *client, const ds3_request *request, ds3_initiate_multipart_upload_result_response **response)
Definition: ds3.c:13578
ds3_request * ds3_init_get_blobs_on_pool_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2493
uint64_t last_preferred_chunk_size_in_bytes
Definition: ds3.h:516
ds3_s3_object_persisted_notification_registration_response ** s3_object_persisted_notification_registrations
Definition: ds3.h:1282
ds3_request * ds3_init_cancel_import_on_all_tapes_spectra_s3_request(void)
Definition: ds3.c:2662
void ds3_group_member_list_response_free(ds3_group_member_list_response *response)
Definition: ds3.c:18368
ds3_error * ds3_modify_all_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15966
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)
Definition: ds3.c:9728
ds3_error * ds3_get_job_chunk_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_objects_response **response)
Definition: ds3.c:14707
ds3_str * id
Definition: ds3.h:524
ds3_str * partition_id
Definition: ds3.h:908
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)
Definition: ds3.c:16415
void ds3_request_set_previous_state_ds3_tape_state(const ds3_request *request, const ds3_tape_state value)
Definition: ds3.c:1451
void ds3_request_set_notification_http_method_ds3_request_type(const ds3_request *request, const ds3_request_type value)
Definition: ds3.c:1387
ds3_error * ds3_get_physical_placement_for_objects_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_physical_placement_response **response)
Definition: ds3.c:15564
void ds3_request_set_format_ds3_http_response_format_type(const ds3_request *request, const ds3_http_response_format_type value)
Definition: ds3.c:1259
ds3_request * ds3_init_cancel_import_on_all_pools_spectra_s3_request(void)
Definition: ds3.c:2426
ds3_error * ds3_get_bulk_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
Definition: ds3.c:14572
ds3_tape_failure_type
Definition: ds3.h:268
static ds3_tape_failure_type _match_ds3_tape_failure_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3573
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)
Definition: ds3.c:12302
ds3_request * ds3_init_put_tape_density_directive_spectra_s3_request(const ds3_tape_drive_type density, const char *partition_id, const ds3_tape_type tape_type)
Definition: ds3.c:2692
void ds3_bucket_list_response_free(ds3_bucket_list_response *response)
Definition: ds3.c:18316
ds3_tape_state previous_state
Definition: ds3.h:1086
void ds3_request_set_delimiter(const ds3_request *request, const char *value)
Definition: ds3.c:1223
ds3_str * error_message
Definition: ds3.h:690
void ds3_request_set_folder(const ds3_request *request, const char *value)
Definition: ds3.c:1251
void ds3_request_set_max_upload_size(const ds3_request *request, const uint64_t value)
Definition: ds3.c:1347
ds3_canceled_job_response ** canceled_jobs
Definition: ds3.h:1254
ds3_data_isolation_level isolation_level
Definition: ds3.h:578
ds3_pool_health
Definition: ds3.h:216
ds3_str * last_checkpoint
Definition: ds3.h:1081
uint64_t total_capacity
Definition: ds3.h:876
ds3_request * ds3_init_put_storage_domain_spectra_s3_request(const char *name)
Definition: ds3.c:2567
ds3_metadata_keys_result * ds3_metadata_keys(const ds3_metadata *_metadata)
Definition: ds3.c:751
ds3_data_policy_response ** data_policies
Definition: ds3.h:1238
void ds3_cache_information_response_free(ds3_cache_information_response *response)
Definition: ds3.c:18036
ds3_group_member_response ** group_members
Definition: ds3.h:1242
void ds3_spectra_user_list_response_free(ds3_spectra_user_list_response *response)
Definition: ds3.c:18797
ds3_error * ds3_modify_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_response **response)
Definition: ds3.c:14477
ds3_bulk_object_response ** objects
Definition: ds3.h:1415
void ds3_request_set_verify_prior_to_auto_eject_ds3_priority(const ds3_request *request, const ds3_priority value)
Definition: ds3.c:1599
ds3_request * ds3_init_put_storage_domain_failure_notification_registration_spectra_s3_request(const char *notification_end_point)
Definition: ds3.c:2216
void ds3_pool_response_free(ds3_pool_response *response)
Definition: ds3.c:17751
void ds3_group_member_response_free(ds3_group_member_response *response)
Definition: ds3.c:17462
static ds3_error * _parse_ds3_pool_failure_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_pool_failure_response **_response)
Definition: ds3.c:6304
ds3_str * serial_number
Definition: ds3.h:642
static char * _get_ds3_pool_health_str(ds3_pool_health input)
Definition: ds3.c:64
void ds3_request_set_sha256(ds3_request *_request, const char *sha256)
Definition: ds3.c:1050
ds3_str * message
Definition: ds3.h:1571
ds3_request * ds3_init_delete_job_created_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2248
ds3_request * ds3_init_initiate_multi_part_upload_request(const char *bucket_name, const char *object_name)
Definition: ds3.c:1745
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)
Definition: ds3.c:15176
ds3_error * ds3_cancel_job_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:14545
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)
Definition: ds3.c:9213
ds3_str * data_policy_id
Definition: ds3.h:600
ds3_system_failure_type
Definition: ds3.h:179
ds3_str * name
Definition: ds3.h:626
static char * _get_ds3_write_optimization_str(ds3_write_optimization input)
Definition: ds3.c:460
ds3_request * ds3_init_get_physical_placement_for_objects_spectra_s3_request(const char *resource_id, const ds3_bulk_object_list_response *object_list)
Definition: ds3.c:2390
ds3_tape_failure_type type
Definition: ds3.h:942
static ds3_error * _parse_ds3_tape_failure_notification_registration_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6040
uint64_t available_capacity
Definition: ds3.h:860
static ds3_naming_convention_type _match_ds3_naming_convention_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:4051
ds3_str * created_at
Definition: ds3.h:533
ds3_error * ds3_delete_object_cached_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15095
ds3_request * ds3_init_get_job_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2133
void ds3_bucket_acl_list_response_free(ds3_bucket_acl_list_response *response)
Definition: ds3.c:18290
static ds3_auto_inspect_mode _match_ds3_auto_inspect_mode(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3219
ds3_str * job_id
Definition: ds3.h:1441
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)
Definition: ds3.c:14727
void ds3_tape_failure_notification_registration_response_free(ds3_tape_failure_notification_registration_response *response)
Definition: ds3.c:17712
void ds3_request_set_max_tape_fragmentation_percent(const ds3_request *request, const int value)
Definition: ds3.c:1343
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)
Definition: ds3.c:11897
void ds3_request_set_page_length(const ds3_request *request, const int value)
Definition: ds3.c:1395
ds3_str * bucket_id
Definition: ds3.h:529
ds3_request * ds3_init_get_tape_libraries_spectra_s3_request(void)
Definition: ds3.c:2808
ds3_str * last_verified
Definition: ds3.h:867
ds3_error * ds3_put_bucket_acl_for_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_acl_response **response)
Definition: ds3.c:13635
ds3_request * ds3_init_put_pool_failure_notification_registration_spectra_s3_request(const char *notification_end_point)
Definition: ds3.c:2209
ds3_error * ds3_put_user_group_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_member_response **response)
Definition: ds3.c:14364
ds3_request * ds3_init_get_cache_state_spectra_s3_request(void)
Definition: ds3.c:1901
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)
Definition: ds3.c:16163
static ds3_error * _parse_ds3_completed_job_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4407
ds3_str * bucket_id
Definition: ds3.h:645
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)
Definition: ds3.c:15547
ds3_error * ds3_verify_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
Definition: ds3.c:16022
static ds3_write_preference_level _match_ds3_write_preference_level(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3407
ds3_request * ds3_init_delete_objects_request(const char *bucket_name, const ds3_delete_objects_response *objects_list)
Definition: ds3.c:1715
ds3_rest_resource_type
Definition: ds3.h:462
ds3_request * ds3_init_delete_storage_domain_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2594
static char * _get_ds3_pool_type_str(ds3_pool_type input)
Definition: ds3.c:92
ds3_group_response ** groups
Definition: ds3.h:1246
uint64_t completed_size_in_bytes
Definition: ds3.h:532
void ds3_request_set_permission_ds3_bucket_acl_permission(const ds3_request *request, const ds3_bucket_acl_permission value)
Definition: ds3.c:1415
void ds3_pool_failure_list_response_free(ds3_pool_failure_list_response *response)
Definition: ds3.c:18589
ds3_request * ds3_init_get_pool_partition_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2503
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)
Definition: ds3.c:5140
ds3_error * ds3_get_group_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_member_response **response)
Definition: ds3.c:14403
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)
Definition: ds3.c:6059
ds3_str * name
Definition: ds3.h:869
ds3_str * description_for_identification
Definition: ds3.h:1073
void ds3_data_policy_response_free(ds3_data_policy_response *response)
Definition: ds3.c:17429
ds3_ltfs_file_naming_mode
Definition: ds3.h:162
ds3_request * ds3_init_get_group_members_spectra_s3_request(void)
Definition: ds3.c:2042
ds3_str * storage_domain_id
Definition: ds3.h:1089
ds3_import_conflict_resolution_mode
Definition: ds3.h:232
GHashTable * headers
Definition: ds3_request.h:36
static ds3_error * _parse_ds3_job_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:8021
void ds3_system_failure_notification_payload_response_free(ds3_system_failure_notification_payload_response *response)
Definition: ds3.c:17948
ds3_storage_domain_member_state
Definition: ds3.h:175
#define S_ISDIR(mode)
Definition: ds3.c:43
ds3_checksum_type checksum_type
Definition: ds3.h:586
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)
Definition: ds3.c:9361
size_t ds3_read_from_file(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:19156
ds3_storage_domain_failure_type
Definition: ds3.h:170
ds3_error * ds3_verify_bulk_job_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_master_object_list_response **response)
Definition: ds3.c:14628
static uint16_t xml_get_uint16(xmlDocPtr doc, xmlNodePtr child_node)
Definition: ds3.c:2949
static ds3_error * _parse_ds3_user_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_user_response **_response)
Definition: ds3.c:7397
void ds3_request_set_marker(const ds3_request *request, const char *value)
Definition: ds3.c:1327
static char * _get_ds3_unavailable_media_usage_policy_str(ds3_unavailable_media_usage_policy input)
Definition: ds3.c:214
static char * _get_ds3_import_export_configuration_str(ds3_import_export_configuration input)
Definition: ds3.c:612
ds3_error * ds3_format_all_foreign_pools_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15799
ds3_detailed_tape_failure_response ** detailed_tape_failures
Definition: ds3.h:1346
uint64_t original_size_in_bytes
Definition: ds3.h:627
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)
Definition: ds3.c:11042
void ds3_detailed_s3_object_response_free(ds3_detailed_s3_object_response *response)
Definition: ds3.c:19062
void ds3_request_set_prefix(const ds3_request *request, const char *value)
Definition: ds3.c:1447
void ds3_tape_partition_failure_notification_payload_response_free(ds3_tape_partition_failure_notification_payload_response *response)
Definition: ds3.c:17972
static ds3_error * _parse_ds3_detailed_s3_object_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:8294
void ds3_request_set_unavailable_pool_max_job_retry_in_mins(const ds3_request *request, const int value)
Definition: ds3.c:1583
ds3_storage_domain_member_response ** storage_domain_members
Definition: ds3.h:1326
ds3_str * proxy
Definition: ds3.h:1577
ds3_request * ds3_init_online_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2904
void ds3_error_free(ds3_error *error)
Definition: ds3.c:17322
ds3_quiesced quiesced
Definition: ds3.h:957
void ds3_request_set_chunk_client_processing_order_guarantee_ds3_job_chunk_client_processing_order_guarantee(const ds3_request *request, const ds3_job_chunk_client_processing_order_guarantee value)
Definition: ds3.c:1179
ds3_pool_health health
Definition: ds3.h:863
static ds3_error * _init_request_payload(const ds3_request *_request, ds3_xml_send_buff *send_buff, const object_list_type operation_type)
Definition: ds3.c:3164
ds3_job_created_notification_registration_response ** job_created_notification_registrations
Definition: ds3.h:1270
void ds3_user_response_free(ds3_user_response *response)
Definition: ds3.c:18172
void ds3_s3_object_to_delete_response_free(ds3_s3_object_to_delete_response *response)
Definition: ds3.c:18163
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)
Definition: ds3.c:11762
ds3_error * ds3_eject_storage_domain_blobs_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16572
void ds3_request_set_state_ds3_tape_partition_state(const ds3_request *request, const ds3_tape_partition_state value)
Definition: ds3.c:1499
static ds3_error * _parse_ds3_group_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:4682
ds3_bool auto_eject_upon_job_completion
Definition: ds3.h:656
ds3_error * ds3_verify_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
Definition: ds3.c:17150
ds3_error * ds3_get_service_request(const ds3_client *client, const ds3_request *request, ds3_list_all_my_buckets_result_response **response)
Definition: ds3.c:13552
uint64_t original_size_in_bytes
Definition: ds3.h:539
static ds3_error * _parse_ds3_group_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_group_response **_response)
Definition: ds3.c:4651
ds3_tape_partition_state
Definition: ds3.h:305
void ds3_metadata_free(ds3_metadata *_metadata)
Definition: ds3.c:788
void ds3_list_multi_part_uploads_result_response_free(ds3_list_multi_part_uploads_result_response *response)
Definition: ds3.c:19126
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)
Definition: ds3.c:14313
ds3_error * ds3_put_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_response **response)
Definition: ds3.c:14347
static ds3_priority _match_ds3_priority(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3231
ds3_error * ds3_eject_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
Definition: ds3.c:16555
ds3_tape_drive_type * drive_types
Definition: ds3.h:1098
ds3_naming_convention_type naming_convention
Definition: ds3.h:763
static ds3_data_persistence_rule_state _match_ds3_data_persistence_rule_state(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3279
ds3_bulk_object_list_response * ds3_convert_file_list_with_basepath(const char **file_list, size_t num_files, const char *base_path)
Definition: ds3.c:19203
ds3_request * ds3_init_cancel_import_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2668
void ds3_request_set_auto_reclaim_terminate_threshold(const ds3_request *request, const float value)
Definition: ds3.c:1151
ds3_versioning_level
Definition: ds3.h:188
ds3_error * ds3_modify_all_tape_partitions_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:17065
ds3_request * ds3_init_get_storage_domain_capacity_summary_spectra_s3_request(const char *storage_domain_id)
Definition: ds3.c:1919
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)
Definition: ds3.c:15261
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)
Definition: ds3.c:7199
static void _set_query_param_int(const ds3_request *_request, const char *key, int value)
Definition: ds3.c:1094
ds3_error * ds3_import_all_tapes_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
Definition: ds3.c:16991
ds3_error * ds3_online_tape_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_response **response)
Definition: ds3.c:17130
void ds3_request_set_include_physical_placement(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1287
static ds3_error * _parse_ds3_job_created_notification_registration_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5469
static ds3_unavailable_media_usage_policy _match_ds3_unavailable_media_usage_policy(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3375
ds3_request * ds3_init_get_node_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2162
ds3_request * ds3_init_format_all_tapes_spectra_s3_request(void)
Definition: ds3.c:2770
Definition: ds3.h:68
ds3_tape_drive_type drive_type
Definition: ds3.h:951
int number_of_type
Definition: ds3.h:1209
void ds3_client_proxy(ds3_client *client, const char *proxy)
Definition: ds3.c:926
void ds3_request_set_full_details(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1263
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)
Definition: ds3.c:5081
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:374
ds3_error * ds3_get_user_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_spectra_user_response **response)
Definition: ds3.c:17187
static ds3_error * _parse_ds3_tape_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_response **_response)
Definition: ds3.c:6418
ds3_bucket_details_response ** buckets
Definition: ds3.h:1425
ds3_request * ds3_init_get_job_chunk_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2122
void ds3_s3_object_lost_notification_registration_response_free(ds3_s3_object_lost_notification_registration_response *response)
Definition: ds3.c:17655
ds3_tape_state state
Definition: ds3.h:1088
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)
Definition: ds3.c:16378
ds3_error * ds3_get_group_members_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_member_list_response **response)
Definition: ds3.c:14423
void ds3_request_set_member_group_id(const ds3_request *request, const char *value)
Definition: ds3.c:1363
ds3_error * ds3_delete_tape_drive_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16511
ds3_error * ds3_delete_object_persisted_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15111
ds3_error * ds3_delete_object_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:13499
static ds3_error * _parse_ds3_job_completed_notification_registration_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5388
ds3_request * ds3_init_get_tape_drives_spectra_s3_request(void)
Definition: ds3.c:2800
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)
Definition: ds3.c:12212
ds3_str * member_user_id
Definition: ds3.h:614
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)
Definition: ds3.c:4599
ds3_error * ds3_put_tape_density_directive_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_density_directive_response **response)
Definition: ds3.c:16472
static ds3_error * _parse_top_level_ds3_bucket_response(const ds3_client *client, const ds3_request *request, ds3_bucket_response **_response, GByteArray *xml_blob)
Definition: ds3.c:8315
void ds3_request_set_default_get_job_priority_ds3_priority(const ds3_request *request, const ds3_priority value)
Definition: ds3.c:1207
uint64_t ms_required_to_verify_data_planner_health
Definition: ds3.h:1149
void ds3_request_set_rebuild_priority_ds3_priority(const ds3_request *request, const ds3_priority value)
Definition: ds3.c:1463
static ds3_error * _parse_ds3_pool_failure_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:6344
static ds3_cache_entry_state _match_ds3_cache_entry_state(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3763
ds3_data_isolation_level
Definition: ds3.h:139
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.c:13652
ds3_str * last_cleaned
Definition: ds3.h:929
ds3_pool_type type
Definition: ds3.h:890
void ds3_storage_domain_failure_list_response_free(ds3_storage_domain_failure_list_response *response)
Definition: ds3.c:18628
ds3_error * ds3_head_bucket_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:13372
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:620
ds3_request * ds3_init_delete_folder_recursively_spectra_s3_request(const char *resource_id, const char *bucket_id)
Definition: ds3.c:2364
void ds3_master_object_list_response_free(ds3_master_object_list_response *response)
Definition: ds3.c:18984
static ds3_error * _parse_top_level_ds3_named_detailed_tape_list_response(const ds3_client *client, const ds3_request *request, ds3_named_detailed_tape_list_response **_response, GByteArray *xml_blob)
Definition: ds3.c:12572
ds3_str * user_id
Definition: ds3.h:632
void ds3_request_set_write_optimization_ds3_write_optimization(const ds3_request *request, const ds3_write_optimization value)
Definition: ds3.c:1611
ds3_request * ds3_init_delete_tape_partition_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2723
ds3_error * ds3_modify_pool_partition_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_partition_response **response)
Definition: ds3.c:15974
static ds3_error * _parse_ds3_canceled_job_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_canceled_job_response **_response)
Definition: ds3.c:4244
float auto_reclaim_initiate_threshold
Definition: ds3.h:849
static ds3_error * _parse_ds3_spectra_user_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5305
static char * _get_ds3_checksum_type_str(ds3_checksum_type input)
Definition: ds3.c:250
ds3_system_failure_type type
Definition: ds3.h:692
ds3_pool_failure_type
Definition: ds3.h:202
ds3_bulk_object_response ** objects
Definition: ds3.h:1410
void ds3_system_failure_response_free(ds3_system_failure_response *response)
Definition: ds3.c:17558
ds3_request * ds3_init_delete_bucket_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1871
ds3_bulk_object_response ** objects
Definition: ds3.h:1397
ds3_request * ds3_init_modify_data_path_backend_spectra_s3_request(void)
Definition: ds3.c:1938
ds3_error * ds3_delete_data_persistence_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:14160
ds3_str * created_at
Definition: ds3.h:622
ds3_http_response_format_type format
Definition: ds3.h:717
void ds3_tape_partition_failure_response_free(ds3_tape_partition_failure_response *response)
Definition: ds3.c:17876
ds3_error * ds3_get_bucket_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_response **response)
Definition: ds3.c:13895
void ds3_request_set_auto_eject_upon_job_cancellation(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1131
Definition: ds3.c:965
void ds3_tape_partition_failure_notification_registration_list_response_free(ds3_tape_partition_failure_notification_registration_list_response *response)
Definition: ds3.c:18563
static ds3_pool_health _match_ds3_pool_health(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3451
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)
Definition: ds3.c:7351
void ds3_job_list_response_free(ds3_job_list_response *response)
Definition: ds3.c:19007
void ds3_request_set_type_ds3_data_persistence_rule_type(const ds3_request *request, const ds3_data_persistence_rule_type value)
Definition: ds3.c:1539
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)
Definition: ds3.c:11267
static char * _get_ds3_storage_domain_failure_type_str(ds3_storage_domain_failure_type input)
Definition: ds3.c:470
static char * _get_ds3_quiesced_str(ds3_quiesced input)
Definition: ds3.c:424
ds3_str * error_message
Definition: ds3.h:623
void ds3_pool_partition_list_response_free(ds3_pool_partition_list_response *response)
Definition: ds3.c:18602
void ds3_data_persistence_rule_list_response_free(ds3_data_persistence_rule_list_response *response)
Definition: ds3.c:18342
ds3_request * ds3_init_get_storage_domain_failures_spectra_s3_request(void)
Definition: ds3.c:2598
ds3_contents_response ** objects
Definition: ds3.h:1548
ds3_request * ds3_init_get_storage_domain_member_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2602
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)
Definition: ds3.c:9286
void ds3_spectra_user_response_free(ds3_spectra_user_response *response)
Definition: ds3.c:17569
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)
Definition: ds3.c:6951
void ds3_string_multimap_entry_free(ds3_string_multimap_entry *entry)
ds3_build_information_response * build_information
Definition: ds3.h:1144
ds3_str * serial_number
Definition: ds3.h:948
static ds3_bucket_acl_permission _match_ds3_bucket_acl_permission(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3249
ds3_auto_inspect_mode
Definition: ds3.h:118
ds3_request * ds3_init_import_all_tapes_spectra_s3_request(void)
Definition: ds3.c:2860
ds3_tape_partition_failure_type
Definition: ds3.h:290
void ds3_initiate_multipart_upload_result_response_free(ds3_initiate_multipart_upload_result_response *response)
Definition: ds3.c:18132
void ds3_request_set_max_parts(const ds3_request *request, const int value)
Definition: ds3.c:1339
ds3_error * ds3_compact_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_pool_response **response)
Definition: ds3.c:15712
ds3_s3_object_response ** s3_objects
Definition: ds3.h:1306
ds3_error * ds3_get_system_information_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_system_information_response **response)
Definition: ds3.c:16274
ds3_error * ds3_delete_tape_partition_failure_notification_registration_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15151
static ds3_tape_state _match_ds3_tape_state(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3663
float auto_reclaim_terminate_threshold
Definition: ds3.h:850
ds3_request * ds3_init_get_tape_with_full_details_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2844
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)
Definition: ds3.c:13737
void ds3_data_policy_list_response_free(ds3_data_policy_list_response *response)
Definition: ds3.c:18355
ds3_error * ds3_get_tape_drive_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_drive_response **response)
Definition: ds3.c:16735
ds3_str * ds3_str_init(const char *string)
Definition: ds3_string.c:21
ds3_request * ds3_init_delete_job_completed_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2244
ds3_bulk_object_list_response * ds3_convert_file_list(const char **file_list, size_t num_files)
Definition: ds3.c:19199
void ds3_delete_result_response_free(ds3_delete_result_response *response)
Definition: ds3.c:18933
ds3_request * ds3_init_put_object_lost_notification_registration_spectra_s3_request(const char *notification_end_point)
Definition: ds3.c:2195
ds3_request * ds3_init_put_group_group_member_spectra_s3_request(const char *group_id, const char *member_group_id)
Definition: ds3.c:2003
ds3_naming_convention_type naming_convention
Definition: ds3.h:816
ds3_error * ds3_put_bucket_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:13461
ds3_error * ds3_delete_storage_domain_member_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16104
void ds3_canceled_job_list_response_free(ds3_canceled_job_list_response *response)
Definition: ds3.c:18407
ds3_str * member_group_id
Definition: ds3.h:613
ds3_error * ds3_get_system_capacity_summary_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_capacity_summary_container_response **response)
Definition: ds3.c:14064
static ds3_job_request_type _match_ds3_job_request_type(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3311
void ds3_request_set_eject_location(const ds3_request *request, const char *value)
Definition: ds3.c:1239
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 *))
Definition: ds3.c:13567
void ds3_system_failure_notification_registration_response_free(ds3_system_failure_notification_registration_response *response)
Definition: ds3.c:17698
static ds3_error * _parse_ds3_named_detailed_tape_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_named_detailed_tape_response **_response)
Definition: ds3.c:7544
ds3_error * ds3_get_system_failures_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_system_failure_list_response **response)
Definition: ds3.c:16257
static ds3_str * _build_path(const char *path_prefix, const char *bucket_name, const char *object_name)
Definition: ds3.c:1633
ds3_tape_drive_type density
Definition: ds3.h:920
ds3_storage_domain_member_state state
Definition: ds3.h:682
void ds3_canceled_job_response_free(ds3_canceled_job_response *response)
Definition: ds3.c:17376
ds3_tape_failure_notification_registration_response ** tape_failure_notification_registrations
Definition: ds3.h:1298
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)
Definition: ds3.c:15062
static ds3_error * _parse_ds3_s3_object_lost_notification_registration_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5714
ds3_request * ds3_init_modify_data_persistence_rule_spectra_s3_request(const char *resource_id)
Definition: ds3.c:1987
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)
Definition: ds3.c:8416
ds3_request * ds3_init_head_object_request(const char *bucket_name, const char *object_name)
Definition: ds3.c:1741
static ds3_error * _parse_ds3_data_policy_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_data_policy_response **_response)
Definition: ds3.c:4499
ds3_error * ds3_get_data_persistence_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_persistence_rule_response **response)
Definition: ds3.c:14182
ds3_error * ds3_modify_bucket_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_bucket_response **response)
Definition: ds3.c:13932
ds3_error * ds3_delete_objects_request(const ds3_client *client, const ds3_request *request, ds3_delete_result_response **response)
Definition: ds3.c:13510
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)
Definition: ds3.c:5569
static ds3_error * _parse_ds3_s3_object_persisted_notification_registration_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5797
void ds3_type_response_free(ds3_type_response *response)
Definition: ds3.c:18272
void ds3_request_set_state_ds3_tape_drive_state(const ds3_request *request, const ds3_tape_drive_state value)
Definition: ds3.c:1495
ds3_str * ds3_string_multimap_entry_get_value_by_index(const ds3_string_multimap_entry *entry, int index)
ds3_blob_store_task_information_response ** tasks
Definition: ds3.h:1032
ds3_error * ds3_delete_data_policy_acl_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:13782
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)
Definition: ds3.c:11222
ds3_request * ds3_init_get_tape_partition_failure_notification_registration_spectra_s3_request(void)
Definition: ds3.c:2356
ds3_tape_drive_type * drive_types
Definition: ds3.h:1153
ds3_error * ds3_put_data_persistence_rule_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_data_persistence_rule_response **response)
Definition: ds3.c:14126
ds3_error * ds3_delete_permanently_lost_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15760
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)
Definition: ds3.c:13850
ds3_data_persistence_rule_state state
Definition: ds3.h:580
void ds3_complete_multipart_upload_response_free(ds3_complete_multipart_upload_response *response)
Definition: ds3.c:17275
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)
Definition: ds3.c:14977
static ds3_error * _parse_ds3_system_failure_notification_registration_response_array(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, GPtrArray **_response)
Definition: ds3.c:5959
void ds3_named_detailed_tape_partition_response_free(ds3_named_detailed_tape_partition_response *response)
Definition: ds3.c:18201
ds3_creds * ds3_create_creds(const char *access_id, const char *secret_key)
Definition: ds3.c:848
ds3_pool_state
Definition: ds3.h:220
ds3_str * ds3_string_multimap_entry_get_key(const ds3_string_multimap_entry *entry)
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)
Definition: ds3.c:5816
ds3_request * ds3_init_get_tape_density_directive_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2788
ds3_str * partition_id
Definition: ds3.h:1085
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:531
void ds3_completed_job_list_response_free(ds3_completed_job_list_response *response)
Definition: ds3.c:18420
static ds3_error * _parse_top_level_ds3_objects_response(const ds3_client *client, const ds3_request *request, ds3_objects_response **_response, GByteArray *xml_blob)
Definition: ds3.c:12893
ds3_request * ds3_init_get_data_persistence_rules_spectra_s3_request(void)
Definition: ds3.c:1975
void * user_data
Definition: ds3.h:85
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)
Definition: ds3.c:11627
ds3_str * bar_code
Definition: ds3.h:895
void ds3_tape_density_directive_list_response_free(ds3_tape_density_directive_list_response *response)
Definition: ds3.c:18680
ds3_request * ds3_init_get_data_path_backend_spectra_s3_request(void)
Definition: ds3.c:1930
static ds3_error * _parse_ds3_bulk_object_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_bulk_object_response **_response)
Definition: ds3.c:7807
ds3_str * node_id
Definition: ds3.h:1458
void ds3_request_set_type_ds3_storage_domain_failure_type(const ds3_request *request, const ds3_storage_domain_failure_type value)
Definition: ds3.c:1555
ds3_unavailable_media_usage_policy
Definition: ds3.h:183
ds3_str * secret_key
Definition: ds3.h:91
ds3_str * id
Definition: ds3.h:647
ds3_request * ds3_init_get_objects_spectra_s3_request(void)
Definition: ds3.c:2380
void ds3_request_set_type_ds3_tape_failure_type(const ds3_request *request, const ds3_tape_failure_type value)
Definition: ds3.c:1567
Definition: ds3.h:69
ds3_error * ds3_deallocate_pool_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:15749
ds3_error * ds3_modify_storage_domain_member_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_storage_domain_member_response **response)
Definition: ds3.c:16217
void ds3_request_set_bar_code(const ds3_request *request, const char *value)
Definition: ds3.c:1155
ds3_user_response * owner
Definition: ds3.h:1503
void ds3_generic_dao_notification_registration_response_free(ds3_generic_dao_notification_registration_response *response)
Definition: ds3.c:17582
ds3_error * ds3_get_group_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_group_response **response)
Definition: ds3.c:14440
void ds3_job_created_notification_registration_list_response_free(ds3_job_created_notification_registration_list_response *response)
Definition: ds3.c:18459
void ds3_metadata_entry_free(ds3_metadata_entry *entry)
Definition: ds3.c:801
void ds3_client_register_net(ds3_client *client, ds3_error *(*net_callback)(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.c:862
Definition: ds3.h:64
static char * _get_ds3_priority_str(ds3_priority input)
Definition: ds3.c:266
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)
Definition: ds3.c:12392
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)
Definition: ds3.c:16304
void ds3_tape_drive_response_free(ds3_tape_drive_response *response)
Definition: ds3.c:17824
uint64_t total_raw_capacity
Definition: ds3.h:914
void ds3_physical_placement_response_free(ds3_physical_placement_response *response)
Definition: ds3.c:18810
ds3_detailed_tape_failure_response * most_recent_failure
Definition: ds3.h:1084
ds3_request * ds3_init_put_global_data_policy_acl_for_user_spectra_s3_request(const char *user_id)
Definition: ds3.c:1833
void ds3_system_information_response_free(ds3_system_information_response *response)
Definition: ds3.c:18182
static ds3_error * _parse_ds3_tape_partition_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_tape_partition_response **_response)
Definition: ds3.c:6779
ds3_request * ds3_init_list_multi_part_uploads_request(const char *bucket_name)
Definition: ds3.c:1758
void ds3_detailed_tape_failure_list_response_free(ds3_detailed_tape_failure_list_response *response)
Definition: ds3.c:18706
void ds3_request_set_truncated(const ds3_request *request, ds3_bool value)
Definition: ds3.c:1535
ds3_str * endpoint
Definition: ds3.h:1576
ds3_request * ds3_init_put_tape_storage_domain_member_spectra_s3_request(const char *storage_domain_id, const char *tape_partition_id, const ds3_tape_type tape_type)
Definition: ds3.c:2574
void ds3_request_set_state_ds3_pool_state(const ds3_request *request, const ds3_pool_state value)
Definition: ds3.c:1487
char * value
Definition: ds3_string.h:37
ds3_tape_response ** tapes
Definition: ds3.h:1380
ds3_error * ds3_delete_data_policy_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:14171
void ds3_tape_partition_response_free(ds3_tape_partition_response *response)
Definition: ds3.c:17863
static ds3_sql_operation _match_ds3_sql_operation(const ds3_log *log, const xmlChar *text)
Definition: ds3.c:3995
ds3_request * ds3_init_put_object_cached_notification_registration_spectra_s3_request(const char *notification_end_point)
Definition: ds3.c:2188
ds3_str * id
Definition: ds3.h:903
ds3_str * chunk_id
Definition: ds3.h:1456
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)
Definition: ds3.c:10817
ds3_priority default_verify_job_priority
Definition: ds3.h:591
ds3_error * ds3_regenerate_user_secret_key_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_spectra_user_response **response)
Definition: ds3.c:17244
ds3_request * ds3_init_delete_tape_failure_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2715
ds3_error * ds3_get_tape_drives_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_drive_list_response **response)
Definition: ds3.c:16755
ds3_request * ds3_init_modify_tape_partition_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2890
ds3_request * ds3_init_verify_user_is_member_of_group_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2058
ds3_error * ds3_list_multi_part_uploads_request(const ds3_client *client, const ds3_request *request, ds3_list_multi_part_uploads_result_response **response)
Definition: ds3.c:13618
ds3_job_node_response ** nodes
Definition: ds3.h:1471
ds3_job_chunk_client_processing_order_guarantee chunk_client_processing_order_guarantee
Definition: ds3.h:1466
void ds3_tape_library_list_response_free(ds3_tape_library_list_response *response)
Definition: ds3.c:18719
ds3_request * ds3_init_eject_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2760
ds3_request * ds3_init_get_tape_failure_notification_registrations_spectra_s3_request(void)
Definition: ds3.c:2352
ds3_str * description_for_identification
Definition: ds3.h:1171
ds3_error * ds3_delete_bucket_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:13884
static ds3_error * _parse_ds3_spectra_user_response(const ds3_client *client, const xmlDocPtr doc, const xmlNodePtr root, ds3_spectra_user_response **_response)
Definition: ds3.c:5270
ds3_error * ds3_delete_tape_partition_failure_spectra_s3_request(const ds3_client *client, const ds3_request *request)
Definition: ds3.c:16533
ds3_request * ds3_init_cancel_job_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2074
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)
Definition: ds3.c:10686
static ds3_error * _get_request_xml_nodes(GByteArray *xml_blob, xmlDocPtr *_doc, xmlNodePtr *_root, char *root_element_name)
Definition: ds3.c:3046
ds3_tape_response ** tapes
Definition: ds3.h:1366
void ds3_request_set_auto_eject_upon_cron(const ds3_request *request, const char *value)
Definition: ds3.c:1127
ds3_tape_type type
Definition: ds3.h:1092
ds3_error * ds3_eject_storage_domain_spectra_s3_request(const ds3_client *client, const ds3_request *request, ds3_tape_failure_list_response **response)
Definition: ds3.c:16590
ds3_request * ds3_init_verify_tape_spectra_s3_request(const char *resource_id)
Definition: ds3.c:2916
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)
Definition: ds3.c:16126
uint64_t cached_size_in_bytes
Definition: ds3.h:619