DS3 C SDK  4.1.0
Provides access to the Spectra S3 API with C
ds3.c
Go to the documentation of this file.
1 /*
2  * ******************************************************************************
3  * Copyright 2014-2017 Spectra Logic Corporation. All Rights Reserved.
4  * Licensed under the Apache License, Version 2.0 (the "License"). You may not use
5  * this file except in compliance with the License. A copy of the License is located at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * or in the "license" file accompanying this file.
10  * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
11  * CONDITIONS OF ANY KIND, either express or implied. See the License for the
12  * specific language governing permissions and limitations under the License.
13  * ****************************************************************************
14  */
15 
16 /* This Code is Auto-Generated; DO NOT MODIFY! */
17 
18 
19 #include <glib.h>
20 #include <stdlib.h>
21 #include <stdio.h>
22 #include <sys/stat.h>
23 #include <libxml/parser.h>
24 #include <errno.h>
25 
26 #include "ds3.h"
27 #include "ds3_net.h"
28 #include "ds3_connection.h"
29 #include "ds3_request.h"
31 #include "ds3_utils.h"
32 
33 #ifdef _WIN32
34 #include <io.h>
35 #else
36 #include <unistd.h>
37 #endif
38 
39 #ifndef S_ISDIR
40 #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
41 #endif
42 
43 
44 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) {
45  if (client == NULL) {
46  fprintf(stderr, "Cannot configure a null ds3_client for logging.\n");
47  return;
48  }
49  if (client->log != NULL) {
50  g_free(client->log);
51  }
52  ds3_log* log = g_new0(ds3_log, 1);
53  log->log_callback = log_callback;
54  log->user_data = user_data;
55  log->log_lvl = log_lvl;
56 
57  client->log = log;
58 }
59 
60 ds3_creds* ds3_create_creds(const char* access_id, const char* secret_key) {
61  ds3_creds* creds;
62  if (access_id == NULL || secret_key == NULL) {
63  fprintf(stderr, "Arguments cannot be NULL\n");
64  return NULL;
65  }
66 
67  creds = g_new0(ds3_creds, 1);
68  creds->access_id = ds3_str_init(access_id);
69  creds->secret_key = ds3_str_init(secret_key);
70 
71  return creds;
72 }
73 
74 void ds3_client_register_net(ds3_client* client, ds3_error* (* net_callback)(const ds3_client* client,
75  const ds3_request* _request,
76  void* read_user_struct,
77  size_t (*read_handler_func)(void*, size_t, size_t, void*),
78  void* write_user_struct,
79  size_t (*write_handler_func)(void*, size_t, size_t, void*),
80  ds3_string_multimap** return_headers)) {
81  if (client == NULL) {
82  fprintf(stderr, "Cannot configure a null ds3_client for net_callback.\n");
83  return;
84  }
85 
86  client->net_callback = net_callback;
87 }
88 
89 ds3_client* ds3_create_client(const char *const endpoint, ds3_creds* creds) {
90  ds3_client* client;
91  if (endpoint == NULL) {
92  fprintf(stderr, "Null endpoint\n");
93  return NULL;
94  }
95 
96  client = g_new0(ds3_client, 1);
97  client->endpoint = ds3_str_init(endpoint);
98  client->creds = creds;
99  client->num_redirects = 5L; //default to 5 redirects before failing
100 
102 
104 
105  return client;
106 }
107 
109  ds3_creds* creds;
110  ds3_client* _client;
111  char* endpoint = getenv("DS3_ENDPOINT");
112  char* access_key = getenv("DS3_ACCESS_KEY");
113  char* secret_key = getenv("DS3_SECRET_KEY");
114  char* http_proxy = getenv("http_proxy");
115 
116  if (endpoint == NULL) {
117  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "Missing enviornment variable 'DS3_ENDPOINT'");
118  }
119 
120  if (access_key == NULL) {
121  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "Missing enviornment variable 'DS3_ACCESS_KEY'");
122  }
123 
124  if (secret_key == NULL) {
125  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "Missing enviornment variable 'DS3_SECRET_KEY'");
126  }
127 
128  creds = ds3_create_creds(access_key, secret_key);
129  _client = ds3_create_client(endpoint, creds);
130 
131  if (http_proxy != NULL) {
132  ds3_client_proxy(_client, http_proxy);
133  }
134 
135  *client = _client;
136 
137  return NULL;
138 }
139 
140 // Allow multiple ds3_clients to share a ds3_connection_pool
141 ds3_client* ds3_copy_client(const ds3_client const* client) {
142  if (client == NULL) {
143  return NULL;
144  }
145 
146  ds3_client* copied_client = g_new0(ds3_client, 1);
147  copied_client->endpoint = ds3_str_dup(client->endpoint);
148  if (client->proxy) {
149  copied_client->proxy = ds3_str_dup(client->proxy);
150  }
151  copied_client->num_redirects = client->num_redirects;
152  copied_client->creds = ds3_create_creds(client->creds->access_id->value, client->creds->secret_key->value);
153 
155  ds3_client_register_logging(copied_client, client->log->log_lvl, client->log->log_callback, NULL);
156 
157  copied_client->connection_pool = client->connection_pool;
159  return copied_client;
160 }
161 
162 void ds3_client_proxy(ds3_client* client, const char* proxy) {
163  ds3_str_free(client->proxy);
164  client->proxy = ds3_str_init(proxy);
165 }
166 
167 void ds3_creds_free(ds3_creds* creds) {
168  if (creds == NULL) {
169  return;
170  }
171 
172  ds3_str_free(creds->access_id);
173  ds3_str_free(creds->secret_key);
174  g_free(creds);
175 }
176 
178  if (client == NULL) {
179  return;
180  }
181 
182  // free client->connection_pool only if there are no remaining references
184 
185  ds3_str_free(client->endpoint);
186  ds3_str_free(client->proxy);
187  g_free(client->log);
188  g_free(client);
189 }
190 
191 
192 
193 size_t ds3_write_to_file(void* buffer, size_t size, size_t nmemb, void* user_data) {
194  return fwrite(buffer, size, nmemb, (FILE*) user_data);
195 }
196 
197 size_t ds3_read_from_file(void* buffer, size_t size, size_t nmemb, void* user_data) {
198  return fread(buffer, size, nmemb, (FILE*) user_data);
199 }
200 
201 size_t ds3_write_to_fd(void* buffer, size_t size, size_t nmemb, void* user_data) {
202  return write(*(int*)user_data, buffer, size * nmemb);
203 }
204 
205 size_t ds3_read_from_fd(void* buffer, size_t size, size_t nmemb, void* user_data) {
206  return read(*(int*)user_data, buffer, size * nmemb);
207 }
208 
209 #ifdef _WIN32
210 static void get_file_size_windows(const char* file_path, uint64_t* file_size) {
211  BY_HANDLE_FILE_INFORMATION info;
212  HANDLE file_handle;
213  char * file_path_windows;
214  gunichar2 * file_path_windows_wide;
215  BOOL res;
216 
217  file_path_windows = g_strdup(file_path);
218 
219  /* Convert the path slashes to windows */
220  for (char * ch = file_path_windows; *ch != '\0'; ++ch) {
221  switch(*ch) {
222  case '/': *ch = '\\'; break;
223  }
224  }
225 
226  *file_size = 0;
227 
228  /* Convert the path to UTF16 to use in windows native function */
229  file_path_windows_wide = g_utf8_to_utf16(file_path_windows, -1, NULL, NULL, NULL);
230  if (file_path_windows_wide == NULL) {
231  fprintf(stderr, "error converting file name to wide char '%s'\n", file_path_windows);
232  g_free(file_path_windows);
233  return;
234  }
235 
236 
237  /* Open the file for attributes read only */
238  file_handle = CreateFileW(
239  (wchar_t*)file_path_windows_wide,
240  FILE_READ_ATTRIBUTES,
241  FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
242  NULL,
243  OPEN_EXISTING,
244  FILE_ATTRIBUTE_NORMAL,
245  NULL);
246  g_free(file_path_windows_wide);
247 
248  if (file_handle == INVALID_HANDLE_VALUE) {
249  g_free(file_path_windows);
250  fprintf(stderr, "error opening file '%s'\n", file_path_windows);
251  return;
252  }
253 
254  res = GetFileInformationByHandle(file_handle, &info);
255  CloseHandle(file_handle);
256 
257  if (!res) {
258  fprintf(stderr, "error getting file attributes\n");
259  g_free(file_path_windows);
260  return;
261  }
262 
263  /* If entry is file get the file size */
264  if (!(info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
265  ULARGE_INTEGER size;
266  size.LowPart = info.nFileSizeLow;
267  size.HighPart = info.nFileSizeHigh;
268 
269  *file_size = size.QuadPart;
270  } else {
271  *file_size = 0;
272  }
273 
274  g_free(file_path_windows);
275 
276  return;
277 }
278 #endif
279 
280 static void get_file_size_posix(const char* file_path, uint64_t* file_size) {
281  struct stat file_info;
282  int result;
283 
284  result = stat(file_path, &file_info);
285  if (result != 0) {
286  fprintf(stderr, "Failed to get file info for '%s' res=%d errno=%d: %s\n", file_path, result, errno, strerror(errno));
287  *file_size = 0;
288  return;
289  }
290 
291  if (S_ISDIR(file_info.st_mode)) {
292  *file_size = 0;
293  } else {
294  *file_size = file_info.st_size;
295  }
296 }
297 
298 static ds3_bulk_object_response* _ds3_bulk_object_from_file(const char* file_name, const char* base_path) {
299  struct stat file_info;
300  int result;
302  char* file_to_stat;
303  memset(&file_info, 0, sizeof(struct stat));
304 
305  if (base_path != NULL) {
306  file_to_stat = g_strconcat(base_path, file_name, NULL);
307  } else {
308  file_to_stat = g_strdup(file_name);
309  }
310 
311  obj->name = ds3_str_init(file_name);
312 
313 #ifdef _WIN32
314  get_file_size_windows(file_to_stat, &obj->length);
315 #else
316  get_file_size_posix(file_to_stat, &obj->length);
317 #endif
318 
319  g_free(file_to_stat);
320 
321  return obj;
322 }
323 
324 ds3_bulk_object_list_response* ds3_convert_file_list(const char** file_list, uint64_t num_files) {
325  return ds3_convert_file_list_with_basepath(file_list, num_files, NULL);
326 }
327 
328 ds3_bulk_object_list_response* ds3_convert_file_list_with_basepath(const char** file_list, uint64_t num_files, const char* base_path) {
329  size_t file_index;
331 
332  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
333  for (file_index = 0; file_index < num_files; file_index++) {
334  g_ptr_array_add(ds3_bulk_object_response_array, _ds3_bulk_object_from_file(file_list[file_index], base_path));
335  }
336 
337  obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
338  obj_list->num_objects = ds3_bulk_object_response_array->len;
339  g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
340 
341  return obj_list;
342 }
343 
345  size_t object_index;
347 
348  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
349 
350  for (object_index = 0; object_index < num_objects; object_index++) {
351  ds3_bulk_object_response* response = g_new0(ds3_bulk_object_response, 1);
352  response->name = ds3_str_dup(objects[object_index]->key);
353  g_ptr_array_add(ds3_bulk_object_response_array, response);
354  }
355 
356  obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
357  obj_list->num_objects = ds3_bulk_object_response_array->len;
358  g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
359 
360  return obj_list;
361 }
362 
363 ds3_bulk_object_list_response* ds3_convert_object_list_from_strings(const char** objects, uint64_t num_objects) {
364  size_t object_index;
366 
367  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
368 
369  for (object_index = 0; object_index < num_objects; object_index++) {
370  ds3_bulk_object_response* response = g_new0(ds3_bulk_object_response, 1);
371  response->name = ds3_str_init(objects[object_index]);
372  g_ptr_array_add(ds3_bulk_object_response_array, response);
373  }
374 
375  obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
376  obj_list->num_objects = ds3_bulk_object_response_array->len;
377  g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
378 
379  return obj_list;
380 }
381 
383  return g_new0(ds3_bulk_object_list_response, 1);
384 }
385 
387  size_t object_index;
389 
390  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
391 
392  for (object_index = 0; object_index < num_objects; object_index++) {
393  ds3_bulk_object_response* response = g_new0(ds3_bulk_object_response, 1);
394  g_ptr_array_add(ds3_bulk_object_response_array, response);
395  }
396 
397  obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
398  obj_list->num_objects = ds3_bulk_object_response_array->len;
399  g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
400 
401  return obj_list;
402 }
404  if (response == NULL) {
405  return;
406  }
407 
408  ds3_str_free(response->etag);
409 
410  g_free(response);
411 }
412 
414  if (response == NULL) {
415  return;
416  }
417 
418  int index;
419  for (index = 0; index < response->num_parts; index++) {
421  }
422  g_free(response->parts);
423  g_free(response);
424 }
425 
427  if (response == NULL) {
428  return;
429  }
430 
431  int index;
432  for (index = 0; index < response->num_strings; index++) {
433  ds3_str_free(response->strings_list[index]);
434  }
435  g_free(response->strings_list);
436  g_free(response);
437 }
438 
440  g_free(paging);
441 }
442 
443 void ds3_request_free(ds3_request* _request) {
444  struct _ds3_request* request;
445  if (_request == NULL) {
446  return;
447  }
448 
449  request = (struct _ds3_request*) _request;
450 
451  ds3_str_free(request->path);
452  ds3_str_free(request->checksum);
453 
454  if (request->headers != NULL) {
455  g_hash_table_destroy(request->headers);
456  }
457  if (request->query_params != NULL) {
458  g_hash_table_destroy(request->query_params);
459  }
460 
461  g_free(request);
462 }
463 
464 void ds3_error_free(ds3_error* error) {
465  if (error == NULL) {
466  return;
467  }
468 
469  ds3_str_free(error->message);
470 
472 
473  g_free(error);
474 }
475 
476 void ds3_cleanup(void) {
477  net_cleanup();
478  xmlCleanupParser();
479 }
480 
481 
483  if (response == NULL) {
484  return;
485  }
486 
487  ds3_str_free(response->data_policy_id);
488  ds3_str_free(response->id);
489  ds3_str_free(response->target_id);
490 
491  g_free(response);
492 }
494  if (response == NULL) {
495  return;
496  }
497 
498  ds3_str_free(response->checksum);
499  ds3_str_free(response->id);
500  ds3_str_free(response->object_id);
501 
502  g_free(response);
503 }
505  if (response == NULL) {
506  return;
507  }
508 
509  ds3_str_free(response->creation_date);
510  ds3_str_free(response->data_policy_id);
511  ds3_str_free(response->id);
512  ds3_str_free(response->name);
513  ds3_str_free(response->user_id);
514 
515  g_free(response);
516 }
518  if (response == NULL) {
519  return;
520  }
521 
522  ds3_str_free(response->bucket_id);
523  ds3_str_free(response->group_id);
524  ds3_str_free(response->id);
525  ds3_str_free(response->user_id);
526 
527  g_free(response);
528 }
530  if (response == NULL) {
531  return;
532  }
533 
534  ds3_str_free(response->bucket_id);
535  ds3_str_free(response->created_at);
536  ds3_str_free(response->date_canceled);
537  ds3_str_free(response->error_message);
538  ds3_str_free(response->id);
539  ds3_str_free(response->name);
540  ds3_str_free(response->rechunked);
541  ds3_str_free(response->user_id);
542 
543  g_free(response);
544 }
546  if (response == NULL) {
547  return;
548  }
549 
550  ds3_str_free(response->bucket_id);
551  ds3_str_free(response->created_at);
552  ds3_str_free(response->date_completed);
553  ds3_str_free(response->error_message);
554  ds3_str_free(response->id);
555  ds3_str_free(response->name);
556  ds3_str_free(response->rechunked);
557  ds3_str_free(response->user_id);
558 
559  g_free(response);
560 }
562  if (response == NULL) {
563  return;
564  }
565 
566  ds3_str_free(response->id);
567  ds3_str_free(response->instance_id);
568  ds3_str_free(response->last_heartbeat);
569 
570  g_free(response);
571 }
573  if (response == NULL) {
574  return;
575  }
576 
577  ds3_str_free(response->data_policy_id);
578  ds3_str_free(response->id);
579  ds3_str_free(response->storage_domain_id);
580 
581  g_free(response);
582 }
584  if (response == NULL) {
585  return;
586  }
587 
588  ds3_str_free(response->creation_date);
589  ds3_str_free(response->id);
590  ds3_str_free(response->name);
591 
592  g_free(response);
593 }
595  if (response == NULL) {
596  return;
597  }
598 
599  ds3_str_free(response->data_policy_id);
600  ds3_str_free(response->group_id);
601  ds3_str_free(response->id);
602  ds3_str_free(response->user_id);
603 
604  g_free(response);
605 }
607  if (response == NULL) {
608  return;
609  }
610 
612  ds3_str_free(response->blob_id);
613  ds3_str_free(response->bucket_id);
615  ds3_str_free(response->id);
618 
619  g_free(response);
620 }
622  if (response == NULL) {
623  return;
624  }
625 
626  ds3_str_free(response->data_policy_id);
627  ds3_str_free(response->id);
628  ds3_str_free(response->target_data_policy);
629  ds3_str_free(response->target_id);
630 
631  g_free(response);
632 }
634  if (response == NULL) {
635  return;
636  }
637 
638  ds3_str_free(response->error_message);
639  ds3_str_free(response->expiration_date);
640  ds3_str_free(response->id);
641 
642  g_free(response);
643 }
645  if (response == NULL) {
646  return;
647  }
648 
649  ds3_str_free(response->id);
650  ds3_str_free(response->name);
651 
652  g_free(response);
653 }
655  if (response == NULL) {
656  return;
657  }
658 
659  ds3_str_free(response->group_id);
660  ds3_str_free(response->id);
661  ds3_str_free(response->member_group_id);
662  ds3_str_free(response->member_user_id);
663 
664  g_free(response);
665 }
667  if (response == NULL) {
668  return;
669  }
670 
671  ds3_str_free(response->bucket_id);
672  ds3_str_free(response->created_at);
673  ds3_str_free(response->error_message);
674  ds3_str_free(response->id);
675  ds3_str_free(response->name);
676  ds3_str_free(response->rechunked);
677  ds3_str_free(response->user_id);
678 
679  g_free(response);
680 }
682  if (response == NULL) {
683  return;
684  }
685 
686  ds3_str_free(response->id);
687  ds3_str_free(response->job_creation_date);
688  ds3_str_free(response->job_id);
689  ds3_str_free(response->node_id);
692  ds3_str_free(response->read_from_pool_id);
694  ds3_str_free(response->read_from_tape_id);
695 
696  g_free(response);
697 }
699  if (response == NULL) {
700  return;
701  }
702 
704  ds3_str_free(response->dns_name);
705  ds3_str_free(response->id);
706  ds3_str_free(response->last_heartbeat);
707  ds3_str_free(response->name);
708  ds3_str_free(response->serial_number);
709 
710  g_free(response);
711 }
713  if (response == NULL) {
714  return;
715  }
716 
717  ds3_str_free(response->data_policy_id);
718  ds3_str_free(response->id);
719  ds3_str_free(response->target_id);
720 
721  g_free(response);
722 }
724  if (response == NULL) {
725  return;
726  }
727 
728  ds3_str_free(response->bucket_id);
729  ds3_str_free(response->creation_date);
730  ds3_str_free(response->id);
731  ds3_str_free(response->name);
732 
733  g_free(response);
734 }
736  if (response == NULL) {
737  return;
738  }
739 
741  ds3_str_free(response->id);
742  ds3_str_free(response->name);
743 
744  g_free(response);
745 }
747  if (response == NULL) {
748  return;
749  }
750 
751 
752  g_free(response);
753 }
755  if (response == NULL) {
756  return;
757  }
758 
759  ds3_str_free(response->date);
760  ds3_str_free(response->error_message);
761  ds3_str_free(response->id);
762  ds3_str_free(response->storage_domain_id);
763 
764  g_free(response);
765 }
767  if (response == NULL) {
768  return;
769  }
770 
771  ds3_str_free(response->id);
772  ds3_str_free(response->pool_partition_id);
773  ds3_str_free(response->storage_domain_id);
774  ds3_str_free(response->tape_partition_id);
775  ds3_str_free(response->tape_type);
776 
777  g_free(response);
778 }
780  if (response == NULL) {
781  return;
782  }
783 
784  ds3_str_free(response->date);
785  ds3_str_free(response->error_message);
786  ds3_str_free(response->id);
787 
788  g_free(response);
789 }
791  if (response == NULL) {
792  return;
793  }
794 
795  ds3_str_free(response->auth_id);
797  ds3_str_free(response->id);
798  ds3_str_free(response->name);
799  ds3_str_free(response->secret_key);
800 
801  g_free(response);
802 }
804  if (response == NULL) {
805  return;
806  }
807 
808  ds3_str_free(response->creation_date);
809  ds3_str_free(response->id);
810  ds3_str_free(response->last_failure);
811  ds3_str_free(response->last_notification);
813  ds3_str_free(response->user_id);
814 
815  g_free(response);
816 }
818  if (response == NULL) {
819  return;
820  }
821 
822  ds3_str_free(response->creation_date);
823  ds3_str_free(response->id);
824  ds3_str_free(response->last_failure);
825  ds3_str_free(response->last_notification);
827  ds3_str_free(response->user_id);
828 
829  g_free(response);
830 }
832  if (response == NULL) {
833  return;
834  }
835 
836  ds3_str_free(response->creation_date);
837  ds3_str_free(response->dao_type);
838  ds3_str_free(response->id);
839  ds3_str_free(response->last_failure);
840  ds3_str_free(response->last_notification);
842  ds3_str_free(response->user_id);
843 
844  g_free(response);
845 }
847  if (response == NULL) {
848  return;
849  }
850 
851  ds3_str_free(response->creation_date);
852  ds3_str_free(response->id);
853  ds3_str_free(response->job_id);
854  ds3_str_free(response->last_failure);
855  ds3_str_free(response->last_notification);
857  ds3_str_free(response->user_id);
858 
859  g_free(response);
860 }
862  if (response == NULL) {
863  return;
864  }
865 
866  ds3_str_free(response->creation_date);
867  ds3_str_free(response->id);
868  ds3_str_free(response->last_failure);
869  ds3_str_free(response->last_notification);
871  ds3_str_free(response->user_id);
872 
873  g_free(response);
874 }
876  if (response == NULL) {
877  return;
878  }
879 
880  ds3_str_free(response->creation_date);
881  ds3_str_free(response->id);
882  ds3_str_free(response->last_failure);
883  ds3_str_free(response->last_notification);
885  ds3_str_free(response->user_id);
886 
887  g_free(response);
888 }
890  if (response == NULL) {
891  return;
892  }
893 
894  ds3_str_free(response->creation_date);
895  ds3_str_free(response->id);
896  ds3_str_free(response->last_failure);
897  ds3_str_free(response->last_notification);
899  ds3_str_free(response->user_id);
900 
901  g_free(response);
902 }
904  if (response == NULL) {
905  return;
906  }
907 
908  ds3_str_free(response->creation_date);
909  ds3_str_free(response->id);
910  ds3_str_free(response->job_id);
911  ds3_str_free(response->last_failure);
912  ds3_str_free(response->last_notification);
914  ds3_str_free(response->user_id);
915 
916  g_free(response);
917 }
919  if (response == NULL) {
920  return;
921  }
922 
923  ds3_str_free(response->creation_date);
924  ds3_str_free(response->id);
925  ds3_str_free(response->last_failure);
926  ds3_str_free(response->last_notification);
928  ds3_str_free(response->user_id);
929 
930  g_free(response);
931 }
933  if (response == NULL) {
934  return;
935  }
936 
937  ds3_str_free(response->creation_date);
938  ds3_str_free(response->id);
939  ds3_str_free(response->job_id);
940  ds3_str_free(response->last_failure);
941  ds3_str_free(response->last_notification);
943  ds3_str_free(response->user_id);
944 
945  g_free(response);
946 }
948  if (response == NULL) {
949  return;
950  }
951 
952  ds3_str_free(response->creation_date);
953  ds3_str_free(response->id);
954  ds3_str_free(response->last_failure);
955  ds3_str_free(response->last_notification);
957  ds3_str_free(response->user_id);
958 
959  g_free(response);
960 }
962  if (response == NULL) {
963  return;
964  }
965 
966  ds3_str_free(response->creation_date);
967  ds3_str_free(response->id);
968  ds3_str_free(response->last_failure);
969  ds3_str_free(response->last_notification);
971  ds3_str_free(response->user_id);
972 
973  g_free(response);
974 }
976  if (response == NULL) {
977  return;
978  }
979 
980  ds3_str_free(response->creation_date);
981  ds3_str_free(response->id);
982  ds3_str_free(response->last_failure);
983  ds3_str_free(response->last_notification);
985  ds3_str_free(response->user_id);
986 
987  g_free(response);
988 }
990  if (response == NULL) {
991  return;
992  }
993 
994  ds3_str_free(response->creation_date);
995  ds3_str_free(response->id);
996  ds3_str_free(response->last_failure);
997  ds3_str_free(response->last_notification);
999  ds3_str_free(response->user_id);
1000 
1001  g_free(response);
1002 }
1004  if (response == NULL) {
1005  return;
1006  }
1007 
1008  ds3_str_free(response->creation_date);
1009  ds3_str_free(response->id);
1010  ds3_str_free(response->last_failure);
1011  ds3_str_free(response->last_notification);
1013  ds3_str_free(response->user_id);
1014 
1015  g_free(response);
1016 }
1018  if (response == NULL) {
1019  return;
1020  }
1021 
1022  ds3_str_free(response->id);
1023  ds3_str_free(response->node_id);
1024  ds3_str_free(response->path);
1025 
1026  g_free(response);
1027 }
1029  if (response == NULL) {
1030  return;
1031  }
1032 
1033  ds3_str_free(response->bucket_id);
1034  ds3_str_free(response->guid);
1035  ds3_str_free(response->id);
1036  ds3_str_free(response->last_accessed);
1037  ds3_str_free(response->last_modified);
1038  ds3_str_free(response->last_verified);
1039  ds3_str_free(response->mountpoint);
1040  ds3_str_free(response->name);
1041  ds3_str_free(response->partition_id);
1042  ds3_str_free(response->storage_domain_id);
1043 
1044  g_free(response);
1045 }
1047  if (response == NULL) {
1048  return;
1049  }
1050 
1051  ds3_str_free(response->date);
1052  ds3_str_free(response->error_message);
1053  ds3_str_free(response->id);
1054  ds3_str_free(response->pool_id);
1055 
1056  g_free(response);
1057 }
1059  if (response == NULL) {
1060  return;
1061  }
1062 
1063  ds3_str_free(response->id);
1064  ds3_str_free(response->name);
1065 
1066  g_free(response);
1067 }
1069  if (response == NULL) {
1070  return;
1071  }
1072 
1073  ds3_str_free(response->blob_id);
1074  ds3_str_free(response->bucket_id);
1075  ds3_str_free(response->date_written);
1076  ds3_str_free(response->id);
1077  ds3_str_free(response->last_accessed);
1078  ds3_str_free(response->pool_id);
1079 
1080  g_free(response);
1081 }
1083  if (response == NULL) {
1084  return;
1085  }
1086 
1087  ds3_str_free(response->blob_id);
1088  ds3_str_free(response->id);
1089  ds3_str_free(response->tape_id);
1090 
1091  g_free(response);
1092 }
1094  if (response == NULL) {
1095  return;
1096  }
1097 
1098  ds3_str_free(response->bar_code);
1099  ds3_str_free(response->bucket_id);
1101  ds3_str_free(response->eject_date);
1102  ds3_str_free(response->eject_label);
1103  ds3_str_free(response->eject_location);
1104  ds3_str_free(response->eject_pending);
1105  ds3_str_free(response->id);
1106  ds3_str_free(response->last_accessed);
1107  ds3_str_free(response->last_checkpoint);
1108  ds3_str_free(response->last_modified);
1109  ds3_str_free(response->last_verified);
1111  ds3_str_free(response->partition_id);
1112  ds3_str_free(response->serial_number);
1113  ds3_str_free(response->storage_domain_id);
1114  ds3_str_free(response->type);
1115 
1116  g_free(response);
1117 }
1119  if (response == NULL) {
1120  return;
1121  }
1122 
1123  ds3_str_free(response->id);
1124  ds3_str_free(response->partition_id);
1125  ds3_str_free(response->tape_type);
1126 
1127  g_free(response);
1128 }
1130  if (response == NULL) {
1131  return;
1132  }
1133 
1134  ds3_str_free(response->error_message);
1135  ds3_str_free(response->id);
1136  ds3_str_free(response->last_cleaned);
1137  ds3_str_free(response->mfg_serial_number);
1138  ds3_str_free(response->partition_id);
1139  ds3_str_free(response->serial_number);
1140  ds3_str_free(response->tape_id);
1141 
1142  g_free(response);
1143 }
1145  if (response == NULL) {
1146  return;
1147  }
1148 
1149  ds3_str_free(response->date);
1150  ds3_str_free(response->error_message);
1151  ds3_str_free(response->id);
1152  ds3_str_free(response->tape_drive_id);
1153  ds3_str_free(response->tape_id);
1154 
1155  g_free(response);
1156 }
1158  if (response == NULL) {
1159  return;
1160  }
1161 
1162  ds3_str_free(response->id);
1163  ds3_str_free(response->management_url);
1164  ds3_str_free(response->name);
1165  ds3_str_free(response->serial_number);
1166 
1167  g_free(response);
1168 }
1170  if (response == NULL) {
1171  return;
1172  }
1173 
1174  ds3_str_free(response->error_message);
1175  ds3_str_free(response->id);
1176  ds3_str_free(response->library_id);
1177  ds3_str_free(response->name);
1178  ds3_str_free(response->serial_id);
1179  ds3_str_free(response->serial_number);
1180 
1181  g_free(response);
1182 }
1184  if (response == NULL) {
1185  return;
1186  }
1187 
1188  ds3_str_free(response->date);
1189  ds3_str_free(response->error_message);
1190  ds3_str_free(response->id);
1191  ds3_str_free(response->partition_id);
1192 
1193  g_free(response);
1194 }
1196  if (response == NULL) {
1197  return;
1198  }
1199 
1200  ds3_str_free(response->account_key);
1201  ds3_str_free(response->account_name);
1202  ds3_str_free(response->cloud_bucket_prefix);
1203  ds3_str_free(response->cloud_bucket_suffix);
1204  ds3_str_free(response->id);
1205  ds3_str_free(response->last_fully_verified);
1206  ds3_str_free(response->name);
1207 
1208  g_free(response);
1209 }
1211  if (response == NULL) {
1212  return;
1213  }
1214 
1215  ds3_str_free(response->bucket_id);
1216  ds3_str_free(response->id);
1217  ds3_str_free(response->name);
1218  ds3_str_free(response->target_id);
1219 
1220  g_free(response);
1221 }
1223  if (response == NULL) {
1224  return;
1225  }
1226 
1227  ds3_str_free(response->date);
1228  ds3_str_free(response->error_message);
1229  ds3_str_free(response->id);
1230  ds3_str_free(response->target_id);
1231 
1232  g_free(response);
1233 }
1235  if (response == NULL) {
1236  return;
1237  }
1238 
1239  ds3_str_free(response->bucket_id);
1240  ds3_str_free(response->id);
1241  ds3_str_free(response->target_id);
1242 
1243  g_free(response);
1244 }
1246  if (response == NULL) {
1247  return;
1248  }
1249 
1250  ds3_str_free(response->admin_auth_id);
1251  ds3_str_free(response->admin_secret_key);
1252  ds3_str_free(response->data_path_end_point);
1253  ds3_str_free(response->data_path_proxy);
1254  ds3_str_free(response->id);
1255  ds3_str_free(response->name);
1257 
1258  g_free(response);
1259 }
1261  if (response == NULL) {
1262  return;
1263  }
1264 
1265  ds3_str_free(response->date);
1266  ds3_str_free(response->error_message);
1267  ds3_str_free(response->id);
1268  ds3_str_free(response->target_id);
1269 
1270  g_free(response);
1271 }
1273  if (response == NULL) {
1274  return;
1275  }
1276 
1277  ds3_str_free(response->bucket_id);
1278  ds3_str_free(response->id);
1279  ds3_str_free(response->target_id);
1280 
1281  g_free(response);
1282 }
1284  if (response == NULL) {
1285  return;
1286  }
1287 
1288  ds3_str_free(response->access_key);
1289  ds3_str_free(response->cloud_bucket_prefix);
1290  ds3_str_free(response->cloud_bucket_suffix);
1291  ds3_str_free(response->data_path_end_point);
1292  ds3_str_free(response->id);
1293  ds3_str_free(response->last_fully_verified);
1294  ds3_str_free(response->name);
1295  ds3_str_free(response->proxy_domain);
1296  ds3_str_free(response->proxy_host);
1297  ds3_str_free(response->proxy_password);
1298  ds3_str_free(response->proxy_username);
1299  ds3_str_free(response->secret_key);
1300 
1301  g_free(response);
1302 }
1304  if (response == NULL) {
1305  return;
1306  }
1307 
1308  ds3_str_free(response->bucket_id);
1309  ds3_str_free(response->id);
1310  ds3_str_free(response->name);
1311  ds3_str_free(response->target_id);
1312 
1313  g_free(response);
1314 }
1316  if (response == NULL) {
1317  return;
1318  }
1319 
1320  ds3_str_free(response->date);
1321  ds3_str_free(response->error_message);
1322  ds3_str_free(response->id);
1323  ds3_str_free(response->target_id);
1324 
1325  g_free(response);
1326 }
1328  if (response == NULL) {
1329  return;
1330  }
1331 
1332  ds3_str_free(response->bucket_id);
1333  ds3_str_free(response->id);
1334  ds3_str_free(response->target_id);
1335 
1336  g_free(response);
1337 }
1339  if (response == NULL) {
1340  return;
1341  }
1342 
1343  ds3_str_free(response->blob_id);
1344  ds3_str_free(response->id);
1345  ds3_str_free(response->target_id);
1346 
1347  g_free(response);
1348 }
1350  if (response == NULL) {
1351  return;
1352  }
1353 
1354  ds3_str_free(response->blob_id);
1355  ds3_str_free(response->id);
1356  ds3_str_free(response->target_id);
1357 
1358  g_free(response);
1359 }
1361  if (response == NULL) {
1362  return;
1363  }
1364 
1365  ds3_str_free(response->blob_id);
1366  ds3_str_free(response->id);
1367  ds3_str_free(response->target_id);
1368 
1369  g_free(response);
1370 }
1372  if (response == NULL) {
1373  return;
1374  }
1375 
1376  ds3_str_free(response->branch);
1377  ds3_str_free(response->revision);
1378  ds3_str_free(response->version);
1379 
1380  g_free(response);
1381 }
1383  if (response == NULL) {
1384  return;
1385  }
1386 
1387  ds3_str_free(response->date);
1388  ds3_str_free(response->error_message);
1390  ds3_str_free(response->target_id);
1391 
1392  g_free(response);
1393 }
1395  if (response == NULL) {
1396  return;
1397  }
1398 
1399  ds3_str_free(response->date);
1400  ds3_str_free(response->error_message);
1402  ds3_str_free(response->target_id);
1403 
1404  g_free(response);
1405 }
1407  if (response == NULL) {
1408  return;
1409  }
1410 
1411  size_t index;
1412  ds3_str_free(response->dao_type);
1413  for (index = 0; index < response->num_ids; index++) {
1414  ds3_str_free(response->ids[index]);
1415  }
1416  g_free(response->ids);
1418 
1419  g_free(response);
1420 }
1422  if (response == NULL) {
1423  return;
1424  }
1425 
1426  ds3_str_free(response->job_id);
1428 
1429  g_free(response);
1430 }
1432  if (response == NULL) {
1433  return;
1434  }
1435 
1436  ds3_str_free(response->date);
1437  ds3_str_free(response->error_message);
1439  ds3_str_free(response->pool_id);
1440 
1441  g_free(response);
1442 }
1444  if (response == NULL) {
1445  return;
1446  }
1447 
1448  ds3_str_free(response->date);
1449  ds3_str_free(response->error_message);
1451  ds3_str_free(response->target_id);
1452 
1453  g_free(response);
1454 }
1456  if (response == NULL) {
1457  return;
1458  }
1459 
1460  size_t index;
1461  for (index = 0; index < response->num_tape_bar_codes; index++) {
1462  ds3_str_free(response->tape_bar_codes[index]);
1463  }
1464  g_free(response->tape_bar_codes);
1465 
1466  g_free(response);
1467 }
1469  if (response == NULL) {
1470  return;
1471  }
1472 
1473  ds3_str_free(response->date);
1474  ds3_str_free(response->error_message);
1476  ds3_str_free(response->storage_domain_id);
1477 
1478  g_free(response);
1479 }
1481  if (response == NULL) {
1482  return;
1483  }
1484 
1485  ds3_str_free(response->date);
1486  ds3_str_free(response->error_message);
1488 
1489  g_free(response);
1490 }
1492  if (response == NULL) {
1493  return;
1494  }
1495 
1496  ds3_str_free(response->date);
1497  ds3_str_free(response->error_message);
1499  ds3_str_free(response->tape_drive_id);
1500  ds3_str_free(response->tape_id);
1501 
1502  g_free(response);
1503 }
1505  if (response == NULL) {
1506  return;
1507  }
1508 
1509  ds3_str_free(response->date);
1510  ds3_str_free(response->error_message);
1512  ds3_str_free(response->partition_id);
1513 
1514  g_free(response);
1515 }
1517  if (response == NULL) {
1518  return;
1519  }
1520 
1521  size_t index;
1522  for (index = 0; index < response->num_tapes_to_online; index++) {
1524  }
1525  g_free(response->tapes_to_online);
1526 
1527  g_free(response);
1528 }
1530  if (response == NULL) {
1531  return;
1532  }
1533 
1534  ds3_str_free(response->date_scheduled);
1535  ds3_str_free(response->date_started);
1536  ds3_str_free(response->description);
1537  ds3_str_free(response->drive_id);
1538  ds3_str_free(response->name);
1539  ds3_str_free(response->pool_id);
1540  ds3_str_free(response->tape_id);
1541  ds3_str_free(response->target_id);
1542  ds3_str_free(response->target_type);
1543 
1544  g_free(response);
1545 }
1547  if (response == NULL) {
1548  return;
1549  }
1550 
1551  size_t index;
1552  for (index = 0; index < response->num_tasks; index++) {
1554  }
1555  g_free(response->tasks);
1556 
1557  g_free(response);
1558 }
1560  if (response == NULL) {
1561  return;
1562  }
1563 
1564  ds3_blob_response_free(response->blob);
1565 
1566  g_free(response);
1567 }
1569  if (response == NULL) {
1570  return;
1571  }
1572 
1573  size_t index;
1575  for (index = 0; index < response->num_entries; index++) {
1577  }
1578  g_free(response->entries);
1579  ds3_str_free(response->summary);
1580 
1581  g_free(response);
1582 }
1584  if (response == NULL) {
1585  return;
1586  }
1587 
1588  size_t index;
1589  for (index = 0; index < response->num_filesystems; index++) {
1591  }
1592  g_free(response->filesystems);
1593 
1594  g_free(response);
1595 }
1597  if (response == NULL) {
1598  return;
1599  }
1600 
1601  ds3_str_free(response->creation_date);
1602  ds3_str_free(response->name);
1603 
1604  g_free(response);
1605 }
1607  if (response == NULL) {
1608  return;
1609  }
1610 
1611  ds3_str_free(response->bucket);
1612  ds3_str_free(response->e_tag);
1613  ds3_str_free(response->key);
1614  ds3_str_free(response->location);
1615 
1616  g_free(response);
1617 }
1619  if (response == NULL) {
1620  return;
1621  }
1622 
1623  ds3_str_free(response->code);
1624  ds3_str_free(response->key);
1625  ds3_str_free(response->message);
1626 
1627  g_free(response);
1628 }
1630  if (response == NULL) {
1631  return;
1632  }
1633 
1634  size_t index;
1635  g_free(response->drive_types);
1636  ds3_str_free(response->error_message);
1637  ds3_str_free(response->id);
1638  ds3_str_free(response->library_id);
1639  ds3_str_free(response->name);
1640  ds3_str_free(response->serial_id);
1641  ds3_str_free(response->serial_number);
1642  for (index = 0; index < response->num_tape_types; index++) {
1643  ds3_str_free(response->tape_types[index]);
1644  }
1645  g_free(response->tape_types);
1646 
1647  g_free(response);
1648 }
1650  if (response == NULL) {
1651  return;
1652  }
1653 
1654  ds3_str_free(response->code);
1655  ds3_str_free(response->message);
1656  ds3_str_free(response->resource);
1657 
1658  g_free(response);
1659 }
1661  if (response == NULL) {
1662  return;
1663  }
1664 
1665  ds3_str_free(response->bucket);
1666  ds3_str_free(response->key);
1667  ds3_str_free(response->upload_id);
1668 
1669  g_free(response);
1670 }
1672  if (response == NULL) {
1673  return;
1674  }
1675 
1676  ds3_str_free(response->e_tag);
1677  ds3_str_free(response->last_modified);
1678 
1679  g_free(response);
1680 }
1682  if (response == NULL) {
1683  return;
1684  }
1685 
1686  ds3_str_free(response->end_point);
1687  ds3_str_free(response->id);
1688 
1689  g_free(response);
1690 }
1692  if (response == NULL) {
1693  return;
1694  }
1695 
1696  ds3_str_free(response->key);
1697 
1698  g_free(response);
1699 }
1701  if (response == NULL) {
1702  return;
1703  }
1704 
1705  ds3_str_free(response->display_name);
1706  ds3_str_free(response->id);
1707 
1708  g_free(response);
1709 }
1711  if (response == NULL) {
1712  return;
1713  }
1714 
1715  ds3_str_free(response->api_version);
1717  ds3_str_free(response->instance_id);
1718  ds3_str_free(response->serial_number);
1719 
1720  g_free(response);
1721 }
1723  if (response == NULL) {
1724  return;
1725  }
1726 
1727 
1728  g_free(response);
1729 }
1731  if (response == NULL) {
1732  return;
1733  }
1734 
1735  size_t index;
1736  g_free(response->drive_types);
1737  ds3_str_free(response->error_message);
1738  ds3_str_free(response->id);
1739  ds3_str_free(response->library_id);
1740  ds3_str_free(response->name);
1741  ds3_str_free(response->serial_id);
1742  ds3_str_free(response->serial_number);
1743  for (index = 0; index < response->num_tape_types; index++) {
1744  ds3_str_free(response->tape_types[index]);
1745  }
1746  g_free(response->tape_types);
1747 
1748  g_free(response);
1749 }
1751  if (response == NULL) {
1752  return;
1753  }
1754 
1755  ds3_str_free(response->cause);
1756  ds3_tape_response_free(response->tape);
1757 
1758  g_free(response);
1759 }
1761  if (response == NULL) {
1762  return;
1763  }
1764 
1765  size_t index;
1766  for (index = 0; index < response->num_failures; index++) {
1767  ds3_tape_failure_response_free(response->failures[index]);
1768  }
1769  g_free(response->failures);
1770 
1771  g_free(response);
1772 }
1774  if (response == NULL) {
1775  return;
1776  }
1777 
1778  ds3_str_free(response->path);
1779 
1780  g_free(response);
1781 }
1783  if (response == NULL) {
1784  return;
1785  }
1786 
1788  ds3_str_free(response->domain_name);
1789 
1790  g_free(response);
1791 }
1793  if (response == NULL) {
1794  return;
1795  }
1796 
1797 
1798  g_free(response);
1799 }
1801  if (response == NULL) {
1802  return;
1803  }
1804 
1805  size_t index;
1806  for (index = 0; index < response->num_bucket_acls; index++) {
1807  ds3_bucket_acl_response_free(response->bucket_acls[index]);
1808  }
1809  g_free(response->bucket_acls);
1810  ds3_paging_free(response->paging);
1811 
1812  g_free(response);
1813 }
1815  if (response == NULL) {
1816  return;
1817  }
1818 
1819  size_t index;
1820  for (index = 0; index < response->num_data_policy_acls; index++) {
1822  }
1823  g_free(response->data_policy_acls);
1824  ds3_paging_free(response->paging);
1825 
1826  g_free(response);
1827 }
1829  if (response == NULL) {
1830  return;
1831  }
1832 
1833  size_t index;
1834  for (index = 0; index < response->num_buckets; index++) {
1835  ds3_bucket_response_free(response->buckets[index]);
1836  }
1837  g_free(response->buckets);
1838  ds3_paging_free(response->paging);
1839 
1840  g_free(response);
1841 }
1843  if (response == NULL) {
1844  return;
1845  }
1846 
1847  size_t index;
1848  for (index = 0; index < response->num_cache_filesystems; index++) {
1850  }
1851  g_free(response->cache_filesystems);
1852  ds3_paging_free(response->paging);
1853 
1854  g_free(response);
1855 }
1857  if (response == NULL) {
1858  return;
1859  }
1860 
1861  size_t index;
1862  for (index = 0; index < response->num_azure_data_replication_rules; index++) {
1864  }
1865  g_free(response->azure_data_replication_rules);
1866  ds3_paging_free(response->paging);
1867 
1868  g_free(response);
1869 }
1871  if (response == NULL) {
1872  return;
1873  }
1874 
1875  size_t index;
1876  for (index = 0; index < response->num_data_persistence_rules; index++) {
1878  }
1879  g_free(response->data_persistence_rules);
1880  ds3_paging_free(response->paging);
1881 
1882  g_free(response);
1883 }
1885  if (response == NULL) {
1886  return;
1887  }
1888 
1889  size_t index;
1890  for (index = 0; index < response->num_data_policies; index++) {
1891  ds3_data_policy_response_free(response->data_policies[index]);
1892  }
1893  g_free(response->data_policies);
1894  ds3_paging_free(response->paging);
1895 
1896  g_free(response);
1897 }
1899  if (response == NULL) {
1900  return;
1901  }
1902 
1903  size_t index;
1904  for (index = 0; index < response->num_ds3_data_replication_rules; index++) {
1906  }
1907  g_free(response->ds3_data_replication_rules);
1908  ds3_paging_free(response->paging);
1909 
1910  g_free(response);
1911 }
1913  if (response == NULL) {
1914  return;
1915  }
1916 
1917  size_t index;
1918  for (index = 0; index < response->num_s3_data_replication_rules; index++) {
1920  }
1921  g_free(response->s3_data_replication_rules);
1922  ds3_paging_free(response->paging);
1923 
1924  g_free(response);
1925 }
1927  if (response == NULL) {
1928  return;
1929  }
1930 
1931  size_t index;
1932  for (index = 0; index < response->num_degraded_blobs; index++) {
1934  }
1935  g_free(response->degraded_blobs);
1936  ds3_paging_free(response->paging);
1937 
1938  g_free(response);
1939 }
1941  if (response == NULL) {
1942  return;
1943  }
1944 
1945  size_t index;
1946  for (index = 0; index < response->num_suspect_blob_azure_targets; index++) {
1948  }
1949  g_free(response->suspect_blob_azure_targets);
1950  ds3_paging_free(response->paging);
1951 
1952  g_free(response);
1953 }
1955  if (response == NULL) {
1956  return;
1957  }
1958 
1959  size_t index;
1960  for (index = 0; index < response->num_suspect_blob_ds3_targets; index++) {
1962  }
1963  g_free(response->suspect_blob_ds3_targets);
1964  ds3_paging_free(response->paging);
1965 
1966  g_free(response);
1967 }
1969  if (response == NULL) {
1970  return;
1971  }
1972 
1973  size_t index;
1974  for (index = 0; index < response->num_suspect_blob_pools; index++) {
1976  }
1977  g_free(response->suspect_blob_pools);
1978  ds3_paging_free(response->paging);
1979 
1980  g_free(response);
1981 }
1983  if (response == NULL) {
1984  return;
1985  }
1986 
1987  size_t index;
1988  for (index = 0; index < response->num_suspect_blob_s3_targets; index++) {
1990  }
1991  g_free(response->suspect_blob_s3_targets);
1992  ds3_paging_free(response->paging);
1993 
1994  g_free(response);
1995 }
1997  if (response == NULL) {
1998  return;
1999  }
2000 
2001  size_t index;
2002  for (index = 0; index < response->num_suspect_blob_tapes; index++) {
2004  }
2005  g_free(response->suspect_blob_tapes);
2006  ds3_paging_free(response->paging);
2007 
2008  g_free(response);
2009 }
2011  if (response == NULL) {
2012  return;
2013  }
2014 
2015  size_t index;
2016  for (index = 0; index < response->num_s3_objects; index++) {
2017  ds3_s3_object_response_free(response->s3_objects[index]);
2018  }
2019  g_free(response->s3_objects);
2020  ds3_paging_free(response->paging);
2021 
2022  g_free(response);
2023 }
2025  if (response == NULL) {
2026  return;
2027  }
2028 
2029  size_t index;
2030  for (index = 0; index < response->num_group_members; index++) {
2032  }
2033  g_free(response->group_members);
2034  ds3_paging_free(response->paging);
2035 
2036  g_free(response);
2037 }
2039  if (response == NULL) {
2040  return;
2041  }
2042 
2043  size_t index;
2044  for (index = 0; index < response->num_groups; index++) {
2045  ds3_group_response_free(response->groups[index]);
2046  }
2047  g_free(response->groups);
2048  ds3_paging_free(response->paging);
2049 
2050  g_free(response);
2051 }
2053  if (response == NULL) {
2054  return;
2055  }
2056 
2057  size_t index;
2058  for (index = 0; index < response->num_active_jobs; index++) {
2059  ds3_active_job_response_free(response->active_jobs[index]);
2060  }
2061  g_free(response->active_jobs);
2062  ds3_paging_free(response->paging);
2063 
2064  g_free(response);
2065 }
2067  if (response == NULL) {
2068  return;
2069  }
2070 
2071  size_t index;
2072  for (index = 0; index < response->num_canceled_jobs; index++) {
2074  }
2075  g_free(response->canceled_jobs);
2076  ds3_paging_free(response->paging);
2077 
2078  g_free(response);
2079 }
2081  if (response == NULL) {
2082  return;
2083  }
2084 
2085  size_t index;
2086  for (index = 0; index < response->num_completed_jobs; index++) {
2088  }
2089  g_free(response->completed_jobs);
2090  ds3_paging_free(response->paging);
2091 
2092  g_free(response);
2093 }
2095  if (response == NULL) {
2096  return;
2097  }
2098 
2099  size_t index;
2100  for (index = 0; index < response->num_nodes; index++) {
2101  ds3_node_response_free(response->nodes[index]);
2102  }
2103  g_free(response->nodes);
2104  ds3_paging_free(response->paging);
2105 
2106  g_free(response);
2107 }
2109  if (response == NULL) {
2110  return;
2111  }
2112 
2113  size_t index;
2114  for (index = 0; index < response->num_azure_target_failure_notification_registrations; index++) {
2116  }
2118  ds3_paging_free(response->paging);
2119 
2120  g_free(response);
2121 }
2123  if (response == NULL) {
2124  return;
2125  }
2126 
2127  size_t index;
2128  for (index = 0; index < response->num_ds3_target_failure_notification_registrations; index++) {
2130  }
2132  ds3_paging_free(response->paging);
2133 
2134  g_free(response);
2135 }
2137  if (response == NULL) {
2138  return;
2139  }
2140 
2141  size_t index;
2142  for (index = 0; index < response->num_job_completed_notification_registrations; index++) {
2144  }
2145  g_free(response->job_completed_notification_registrations);
2146  ds3_paging_free(response->paging);
2147 
2148  g_free(response);
2149 }
2151  if (response == NULL) {
2152  return;
2153  }
2154 
2155  size_t index;
2156  for (index = 0; index < response->num_job_created_notification_registrations; index++) {
2158  }
2159  g_free(response->job_created_notification_registrations);
2160  ds3_paging_free(response->paging);
2161 
2162  g_free(response);
2163 }
2165  if (response == NULL) {
2166  return;
2167  }
2168 
2169  size_t index;
2170  for (index = 0; index < response->num_job_creation_failed_notification_registrations; index++) {
2172  }
2174  ds3_paging_free(response->paging);
2175 
2176  g_free(response);
2177 }
2179  if (response == NULL) {
2180  return;
2181  }
2182 
2183  size_t index;
2184  for (index = 0; index < response->num_s3_object_cached_notification_registrations; index++) {
2186  }
2188  ds3_paging_free(response->paging);
2189 
2190  g_free(response);
2191 }
2193  if (response == NULL) {
2194  return;
2195  }
2196 
2197  size_t index;
2198  for (index = 0; index < response->num_s3_object_lost_notification_registrations; index++) {
2200  }
2202  ds3_paging_free(response->paging);
2203 
2204  g_free(response);
2205 }
2207  if (response == NULL) {
2208  return;
2209  }
2210 
2211  size_t index;
2212  for (index = 0; index < response->num_s3_object_persisted_notification_registrations; index++) {
2214  }
2216  ds3_paging_free(response->paging);
2217 
2218  g_free(response);
2219 }
2221  if (response == NULL) {
2222  return;
2223  }
2224 
2225  size_t index;
2226  for (index = 0; index < response->num_pool_failure_notification_registrations; index++) {
2228  }
2229  g_free(response->pool_failure_notification_registrations);
2230  ds3_paging_free(response->paging);
2231 
2232  g_free(response);
2233 }
2235  if (response == NULL) {
2236  return;
2237  }
2238 
2239  size_t index;
2240  for (index = 0; index < response->num_s3_target_failure_notification_registrations; index++) {
2242  }
2244  ds3_paging_free(response->paging);
2245 
2246  g_free(response);
2247 }
2249  if (response == NULL) {
2250  return;
2251  }
2252 
2253  size_t index;
2254  for (index = 0; index < response->num_storage_domain_failure_notification_registrations; index++) {
2256  }
2258  ds3_paging_free(response->paging);
2259 
2260  g_free(response);
2261 }
2263  if (response == NULL) {
2264  return;
2265  }
2266 
2267  size_t index;
2268  for (index = 0; index < response->num_system_failure_notification_registrations; index++) {
2270  }
2272  ds3_paging_free(response->paging);
2273 
2274  g_free(response);
2275 }
2277  if (response == NULL) {
2278  return;
2279  }
2280 
2281  size_t index;
2282  for (index = 0; index < response->num_tape_failure_notification_registrations; index++) {
2284  }
2285  g_free(response->tape_failure_notification_registrations);
2286  ds3_paging_free(response->paging);
2287 
2288  g_free(response);
2289 }
2291  if (response == NULL) {
2292  return;
2293  }
2294 
2295  size_t index;
2296  for (index = 0; index < response->num_tape_partition_failure_notification_registrations; index++) {
2298  }
2300  ds3_paging_free(response->paging);
2301 
2302  g_free(response);
2303 }
2305  if (response == NULL) {
2306  return;
2307  }
2308 
2309  size_t index;
2310  for (index = 0; index < response->num_pool_failures; index++) {
2312  }
2313  g_free(response->pool_failures);
2314  ds3_paging_free(response->paging);
2315 
2316  g_free(response);
2317 }
2319  if (response == NULL) {
2320  return;
2321  }
2322 
2323  size_t index;
2324  for (index = 0; index < response->num_pool_partitions; index++) {
2326  }
2327  g_free(response->pool_partitions);
2328  ds3_paging_free(response->paging);
2329 
2330  g_free(response);
2331 }
2333  if (response == NULL) {
2334  return;
2335  }
2336 
2337  size_t index;
2338  for (index = 0; index < response->num_pools; index++) {
2339  ds3_pool_response_free(response->pools[index]);
2340  }
2341  g_free(response->pools);
2342  ds3_paging_free(response->paging);
2343 
2344  g_free(response);
2345 }
2347  if (response == NULL) {
2348  return;
2349  }
2350 
2351  size_t index;
2352  for (index = 0; index < response->num_storage_domain_failures; index++) {
2354  }
2355  g_free(response->storage_domain_failures);
2356  ds3_paging_free(response->paging);
2357 
2358  g_free(response);
2359 }
2361  if (response == NULL) {
2362  return;
2363  }
2364 
2365  size_t index;
2366  for (index = 0; index < response->num_storage_domain_members; index++) {
2368  }
2369  g_free(response->storage_domain_members);
2370  ds3_paging_free(response->paging);
2371 
2372  g_free(response);
2373 }
2375  if (response == NULL) {
2376  return;
2377  }
2378 
2379  size_t index;
2380  for (index = 0; index < response->num_storage_domains; index++) {
2382  }
2383  g_free(response->storage_domains);
2384  ds3_paging_free(response->paging);
2385 
2386  g_free(response);
2387 }
2389  if (response == NULL) {
2390  return;
2391  }
2392 
2393  size_t index;
2394  for (index = 0; index < response->num_feature_keys; index++) {
2395  ds3_feature_key_response_free(response->feature_keys[index]);
2396  }
2397  g_free(response->feature_keys);
2398  ds3_paging_free(response->paging);
2399 
2400  g_free(response);
2401 }
2403  if (response == NULL) {
2404  return;
2405  }
2406 
2407  size_t index;
2408  for (index = 0; index < response->num_system_failures; index++) {
2410  }
2411  g_free(response->system_failures);
2412  ds3_paging_free(response->paging);
2413 
2414  g_free(response);
2415 }
2417  if (response == NULL) {
2418  return;
2419  }
2420 
2421  size_t index;
2422  for (index = 0; index < response->num_tape_density_directives; index++) {
2424  }
2425  g_free(response->tape_density_directives);
2426  ds3_paging_free(response->paging);
2427 
2428  g_free(response);
2429 }
2431  if (response == NULL) {
2432  return;
2433  }
2434 
2435  size_t index;
2436  for (index = 0; index < response->num_tape_drives; index++) {
2437  ds3_tape_drive_response_free(response->tape_drives[index]);
2438  }
2439  g_free(response->tape_drives);
2440  ds3_paging_free(response->paging);
2441 
2442  g_free(response);
2443 }
2445  if (response == NULL) {
2446  return;
2447  }
2448 
2449  size_t index;
2450  for (index = 0; index < response->num_detailed_tape_failures; index++) {
2452  }
2453  g_free(response->detailed_tape_failures);
2454  ds3_paging_free(response->paging);
2455 
2456  g_free(response);
2457 }
2459  if (response == NULL) {
2460  return;
2461  }
2462 
2463  size_t index;
2464  for (index = 0; index < response->num_tape_libraries; index++) {
2466  }
2467  g_free(response->tape_libraries);
2468  ds3_paging_free(response->paging);
2469 
2470  g_free(response);
2471 }
2473  if (response == NULL) {
2474  return;
2475  }
2476 
2477  size_t index;
2478  for (index = 0; index < response->num_tape_partition_failures; index++) {
2480  }
2481  g_free(response->tape_partition_failures);
2482  ds3_paging_free(response->paging);
2483 
2484  g_free(response);
2485 }
2487  if (response == NULL) {
2488  return;
2489  }
2490 
2491  size_t index;
2492  for (index = 0; index < response->num_tape_partitions; index++) {
2494  }
2495  g_free(response->tape_partitions);
2496  ds3_paging_free(response->paging);
2497 
2498  g_free(response);
2499 }
2501  if (response == NULL) {
2502  return;
2503  }
2504 
2505  size_t index;
2506  for (index = 0; index < response->num_named_detailed_tape_partitions; index++) {
2508  }
2509  g_free(response->named_detailed_tape_partitions);
2510  ds3_paging_free(response->paging);
2511 
2512  g_free(response);
2513 }
2515  if (response == NULL) {
2516  return;
2517  }
2518 
2519  size_t index;
2520  for (index = 0; index < response->num_tapes; index++) {
2521  ds3_tape_response_free(response->tapes[index]);
2522  }
2523  g_free(response->tapes);
2524  ds3_paging_free(response->paging);
2525 
2526  g_free(response);
2527 }
2529  if (response == NULL) {
2530  return;
2531  }
2532 
2533  size_t index;
2534  for (index = 0; index < response->num_azure_target_bucket_names; index++) {
2536  }
2537  g_free(response->azure_target_bucket_names);
2538  ds3_paging_free(response->paging);
2539 
2540  g_free(response);
2541 }
2543  if (response == NULL) {
2544  return;
2545  }
2546 
2547  size_t index;
2548  for (index = 0; index < response->num_azure_target_failures; index++) {
2550  }
2551  g_free(response->azure_target_failures);
2552  ds3_paging_free(response->paging);
2553 
2554  g_free(response);
2555 }
2557  if (response == NULL) {
2558  return;
2559  }
2560 
2561  size_t index;
2562  for (index = 0; index < response->num_azure_target_read_preferences; index++) {
2564  }
2565  g_free(response->azure_target_read_preferences);
2566  ds3_paging_free(response->paging);
2567 
2568  g_free(response);
2569 }
2571  if (response == NULL) {
2572  return;
2573  }
2574 
2575  size_t index;
2576  for (index = 0; index < response->num_azure_targets; index++) {
2578  }
2579  g_free(response->azure_targets);
2580  ds3_paging_free(response->paging);
2581 
2582  g_free(response);
2583 }
2585  if (response == NULL) {
2586  return;
2587  }
2588 
2589  size_t index;
2590  for (index = 0; index < response->num_ds3_target_failures; index++) {
2592  }
2593  g_free(response->ds3_target_failures);
2594  ds3_paging_free(response->paging);
2595 
2596  g_free(response);
2597 }
2599  if (response == NULL) {
2600  return;
2601  }
2602 
2603  size_t index;
2604  for (index = 0; index < response->num_ds3_target_read_preferences; index++) {
2606  }
2607  g_free(response->ds3_target_read_preferences);
2608  ds3_paging_free(response->paging);
2609 
2610  g_free(response);
2611 }
2613  if (response == NULL) {
2614  return;
2615  }
2616 
2617  size_t index;
2618  for (index = 0; index < response->num_ds3_targets; index++) {
2619  ds3_target_response_free(response->ds3_targets[index]);
2620  }
2621  g_free(response->ds3_targets);
2622  ds3_paging_free(response->paging);
2623 
2624  g_free(response);
2625 }
2627  if (response == NULL) {
2628  return;
2629  }
2630 
2631  size_t index;
2632  for (index = 0; index < response->num_s3_target_bucket_names; index++) {
2634  }
2635  g_free(response->s3_target_bucket_names);
2636  ds3_paging_free(response->paging);
2637 
2638  g_free(response);
2639 }
2641  if (response == NULL) {
2642  return;
2643  }
2644 
2645  size_t index;
2646  for (index = 0; index < response->num_s3_target_failures; index++) {
2648  }
2649  g_free(response->s3_target_failures);
2650  ds3_paging_free(response->paging);
2651 
2652  g_free(response);
2653 }
2655  if (response == NULL) {
2656  return;
2657  }
2658 
2659  size_t index;
2660  for (index = 0; index < response->num_s3_target_read_preferences; index++) {
2662  }
2663  g_free(response->s3_target_read_preferences);
2664  ds3_paging_free(response->paging);
2665 
2666  g_free(response);
2667 }
2669  if (response == NULL) {
2670  return;
2671  }
2672 
2673  size_t index;
2674  for (index = 0; index < response->num_s3_targets; index++) {
2675  ds3_s3_target_response_free(response->s3_targets[index]);
2676  }
2677  g_free(response->s3_targets);
2678  ds3_paging_free(response->paging);
2679 
2680  g_free(response);
2681 }
2683  if (response == NULL) {
2684  return;
2685  }
2686 
2687  size_t index;
2688  for (index = 0; index < response->num_spectra_users; index++) {
2690  }
2691  g_free(response->spectra_users);
2692  ds3_paging_free(response->paging);
2693 
2694  g_free(response);
2695 }
2697  if (response == NULL) {
2698  return;
2699  }
2700 
2701  size_t index;
2702  for (index = 0; index < response->num_azure_targets; index++) {
2704  }
2705  g_free(response->azure_targets);
2706  for (index = 0; index < response->num_ds3_targets; index++) {
2707  ds3_target_response_free(response->ds3_targets[index]);
2708  }
2709  g_free(response->ds3_targets);
2710  for (index = 0; index < response->num_pools; index++) {
2711  ds3_pool_response_free(response->pools[index]);
2712  }
2713  g_free(response->pools);
2714  for (index = 0; index < response->num_s3_targets; index++) {
2715  ds3_s3_target_response_free(response->s3_targets[index]);
2716  }
2717  g_free(response->s3_targets);
2718  for (index = 0; index < response->num_tapes; index++) {
2719  ds3_tape_response_free(response->tapes[index]);
2720  }
2721  g_free(response->tapes);
2722 
2723  g_free(response);
2724 }
2726  if (response == NULL) {
2727  return;
2728  }
2729 
2732 
2733  g_free(response);
2734 }
2736  if (response == NULL) {
2737  return;
2738  }
2739 
2740  ds3_str_free(response->bucket);
2741  ds3_str_free(response->id);
2742  ds3_str_free(response->name);
2744 
2745  g_free(response);
2746 }
2748  if (response == NULL) {
2749  return;
2750  }
2751 
2752  size_t index;
2753  for (index = 0; index < response->num_objects; index++) {
2754  ds3_bulk_object_response_free(response->objects[index]);
2755  }
2756  g_free(response->objects);
2757 
2758  g_free(response);
2759 }
2761  if (response == NULL) {
2762  return;
2763  }
2764 
2765  size_t index;
2766  ds3_str_free(response->job_id);
2768  for (index = 0; index < response->num_objects_not_persisted; index++) {
2770  }
2771  g_free(response->objects_not_persisted);
2772 
2773  g_free(response);
2774 }
2776  if (response == NULL) {
2777  return;
2778  }
2779 
2782 
2783  g_free(response);
2784 }
2786  if (response == NULL) {
2787  return;
2788  }
2789 
2790  size_t index;
2791  ds3_str_free(response->job_id);
2793  for (index = 0; index < response->num_objects; index++) {
2794  ds3_bulk_object_response_free(response->objects[index]);
2795  }
2796  g_free(response->objects);
2797 
2798  g_free(response);
2799 }
2801  if (response == NULL) {
2802  return;
2803  }
2804 
2805  size_t index;
2807  for (index = 0; index < response->num_objects; index++) {
2808  ds3_bulk_object_response_free(response->objects[index]);
2809  }
2810  g_free(response->objects);
2811 
2812  g_free(response);
2813 }
2815  if (response == NULL) {
2816  return;
2817  }
2818 
2819  size_t index;
2820  ds3_str_free(response->job_id);
2822  for (index = 0; index < response->num_objects; index++) {
2823  ds3_bulk_object_response_free(response->objects[index]);
2824  }
2825  g_free(response->objects);
2826 
2827  g_free(response);
2828 }
2830  if (response == NULL) {
2831  return;
2832  }
2833 
2834  size_t index;
2835  for (index = 0; index < response->num_buckets; index++) {
2836  ds3_bucket_details_response_free(response->buckets[index]);
2837  }
2838  g_free(response->buckets);
2839  ds3_user_response_free(response->owner);
2840 
2841  g_free(response);
2842 }
2844  if (response == NULL) {
2845  return;
2846  }
2847 
2848  size_t index;
2849  for (index = 0; index < response->num_deleted_objects; index++) {
2851  }
2852  g_free(response->deleted_objects);
2853  for (index = 0; index < response->num_errors; index++) {
2855  }
2856  g_free(response->errors);
2857 
2858  g_free(response);
2859 }
2861  if (response == NULL) {
2862  return;
2863  }
2864 
2865  size_t index;
2866  ds3_str_free(response->bucket_name);
2867  ds3_str_free(response->job_id);
2868  ds3_str_free(response->name);
2869  for (index = 0; index < response->num_nodes; index++) {
2870  ds3_job_node_response_free(response->nodes[index]);
2871  }
2872  g_free(response->nodes);
2873  ds3_str_free(response->start_date);
2874  ds3_str_free(response->user_id);
2875  ds3_str_free(response->user_name);
2876 
2877  g_free(response);
2878 }
2880  if (response == NULL) {
2881  return;
2882  }
2883 
2884  size_t index;
2885  ds3_str_free(response->chunk_id);
2886  ds3_str_free(response->node_id);
2887  for (index = 0; index < response->num_objects; index++) {
2888  ds3_bulk_object_response_free(response->objects[index]);
2889  }
2890  g_free(response->objects);
2891 
2892  g_free(response);
2893 }
2895  if (response == NULL) {
2896  return;
2897  }
2898 
2899  size_t index;
2900  ds3_str_free(response->bucket_name);
2901  ds3_str_free(response->job_id);
2902  ds3_str_free(response->name);
2903  for (index = 0; index < response->num_nodes; index++) {
2904  ds3_job_node_response_free(response->nodes[index]);
2905  }
2906  g_free(response->nodes);
2907  for (index = 0; index < response->num_objects; index++) {
2908  ds3_objects_response_free(response->objects[index]);
2909  }
2910  g_free(response->objects);
2911  ds3_str_free(response->start_date);
2912  ds3_str_free(response->user_id);
2913  ds3_str_free(response->user_name);
2914 
2915  g_free(response);
2916 }
2918  if (response == NULL) {
2919  return;
2920  }
2921 
2922  size_t index;
2923  for (index = 0; index < response->num_jobs; index++) {
2924  ds3_job_response_free(response->jobs[index]);
2925  }
2926  g_free(response->jobs);
2927 
2928  g_free(response);
2929 }
2931  if (response == NULL) {
2932  return;
2933  }
2934 
2935  size_t index;
2936  ds3_str_free(response->bucket);
2937  ds3_str_free(response->key);
2938  ds3_user_response_free(response->owner);
2939  for (index = 0; index < response->num_parts; index++) {
2941  }
2942  g_free(response->parts);
2943  ds3_str_free(response->upload_id);
2944 
2945  g_free(response);
2946 }
2948  if (response == NULL) {
2949  return;
2950  }
2951 
2952  ds3_str_free(response->initiated);
2953  ds3_str_free(response->key);
2954  ds3_user_response_free(response->owner);
2955  ds3_str_free(response->upload_id);
2956 
2957  g_free(response);
2958 }
2960  if (response == NULL) {
2961  return;
2962  }
2963 
2964  ds3_str_free(response->e_tag);
2965  ds3_str_free(response->key);
2966  ds3_str_free(response->last_modified);
2967  ds3_user_response_free(response->owner);
2968  ds3_str_free(response->storage_class);
2969 
2970  g_free(response);
2971 }
2973  if (response == NULL) {
2974  return;
2975  }
2976 
2978  ds3_str_free(response->bucket_id);
2979  ds3_str_free(response->creation_date);
2980  ds3_str_free(response->e_tag);
2981  ds3_str_free(response->id);
2982  ds3_str_free(response->name);
2983  ds3_str_free(response->owner);
2984 
2985  g_free(response);
2986 }
2988  if (response == NULL) {
2989  return;
2990  }
2991 
2992  size_t index;
2993  for (index = 0; index < response->num_types; index++) {
2994  ds3_type_response_free(response->types[index]);
2995  }
2996  g_free(response->types);
2997 
2998  g_free(response);
2999 }
3001  if (response == NULL) {
3002  return;
3003  }
3004 
3005  size_t index;
3006  for (index = 0; index < response->num_detailed_s3_objects; index++) {
3008  }
3009  g_free(response->detailed_s3_objects);
3010  ds3_paging_free(response->paging);
3011 
3012  g_free(response);
3013 }
3015  if (response == NULL) {
3016  return;
3017  }
3018 
3019  size_t index;
3020  for (index = 0; index < response->num_common_prefixes; index++) {
3021  ds3_str_free(response->common_prefixes[index]);
3022  }
3023  g_free(response->common_prefixes);
3024  ds3_str_free(response->creation_date);
3025  ds3_str_free(response->delimiter);
3026  ds3_str_free(response->marker);
3027  ds3_str_free(response->name);
3028  ds3_str_free(response->next_marker);
3029  for (index = 0; index < response->num_objects; index++) {
3030  ds3_contents_response_free(response->objects[index]);
3031  }
3032  g_free(response->objects);
3033  ds3_str_free(response->prefix);
3034 
3035  g_free(response);
3036 }
3038  if (response == NULL) {
3039  return;
3040  }
3041 
3042  size_t index;
3043  ds3_str_free(response->bucket);
3044  for (index = 0; index < response->num_common_prefixes; index++) {
3045  ds3_str_free(response->common_prefixes[index]);
3046  }
3047  g_free(response->common_prefixes);
3048  ds3_str_free(response->delimiter);
3049  ds3_str_free(response->key_marker);
3050  ds3_str_free(response->next_key_marker);
3052  ds3_str_free(response->prefix);
3053  ds3_str_free(response->upload_id_marker);
3054  for (index = 0; index < response->num_uploads; index++) {
3055  ds3_multi_part_upload_response_free(response->uploads[index]);
3056  }
3057  g_free(response->uploads);
3058 
3059  g_free(response);
3060 }
void ds3_job_node_response_free(ds3_job_node_response *response)
Definition: ds3.c:1681
void ds3_target_failure_notification_registration_response_free(ds3_target_failure_notification_registration_response *response)
Definition: ds3.c:817
void ds3_cache_filesystem_response_free(ds3_cache_filesystem_response *response)
Definition: ds3.c:1017
void ds3_error_response_free(ds3_error_response *response)
Definition: ds3.c:1649
size_t ds3_read_from_fd(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:205
ds3_str * id
Definition: ds3.h:816
void ds3_job_completed_notification_registration_list_response_free(ds3_job_completed_notification_registration_list_response *response)
Definition: ds3.c:2136
ds3_suspect_blob_ds3_target_response ** suspect_blob_ds3_targets
Definition: ds3.h:1658
ds3_storage_domain_failure_notification_registration_response ** storage_domain_failure_notification_registrations
Definition: ds3.h:1763
ds3_log_lvl
Definition: ds3.h:84
ds3_node_response ** nodes
Definition: ds3.h:1708
ds3_tapes_must_be_onlined_response * tapes_must_be_onlined
Definition: ds3.h:1962
ds3_pool_response ** pools
Definition: ds3.h:1927
ds3_str * last_accessed
Definition: ds3.h:1122
ds3_str * name
Definition: ds3.h:852
ds3_str * last_heartbeat
Definition: ds3.h:833
ds3_cache_filesystem_response * cache_filesystem
Definition: ds3.h:1473
ds3_str * name
Definition: ds3.h:834
void ds3_suspect_blob_ds3_target_response_free(ds3_suspect_blob_ds3_target_response *response)
Definition: ds3.c:1349
void ds3_storage_domain_failure_response_free(ds3_storage_domain_failure_response *response)
Definition: ds3.c:754
void ds3_cleanup(void)
Definition: ds3.c:476
void ds3_pool_partition_response_free(ds3_pool_partition_response *response)
Definition: ds3.c:1058
ds3_paging * paging
Definition: ds3.h:1615
void ds3_azure_target_failure_response_free(ds3_azure_target_failure_response *response)
Definition: ds3.c:1222
ds3_str * domain_name
Definition: ds3.h:1592
void ds3_feature_key_response_free(ds3_feature_key_response *response)
Definition: ds3.c:633
ds3_paging * paging
Definition: ds3.h:1895
void ds3_tape_partition_list_response_free(ds3_tape_partition_list_response *response)
Definition: ds3.c:2486
void ds3_group_list_response_free(ds3_group_list_response *response)
Definition: ds3.c:2038
ds3_str * serial_number
Definition: ds3.h:1237
ds3_str * eject_pending
Definition: ds3.h:1172
ds3_str * last_modified
Definition: ds3.h:1177
void ds3_completed_job_response_free(ds3_completed_job_response *response)
Definition: ds3.c:545
ds3_tape_partition_response ** tape_partitions
Definition: ds3.h:1848
void ds3_s3_target_failure_list_response_free(ds3_s3_target_failure_list_response *response)
Definition: ds3.c:2640
void ds3_degraded_blob_list_response_free(ds3_degraded_blob_list_response *response)
Definition: ds3.c:1926
void ds3_tape_failure_response_free(ds3_tape_failure_response *response)
Definition: ds3.c:1750
ds3_str * name
Definition: ds3.h:781
void ds3_generic_dao_notification_payload_response_free(ds3_generic_dao_notification_payload_response *response)
Definition: ds3.c:1406
ds3_bulk_object_list_response * blobs
Definition: ds3.h:2072
ds3_user_response * owner
Definition: ds3.h:2067
ds3_bulk_object_response ** objects_not_persisted
Definition: ds3.h:1957
ds3_str * message
Definition: ds3.h:1521
ds3_str * name
Definition: ds3.h:654
void ds3_s3_object_lost_notification_registration_list_response_free(ds3_s3_object_lost_notification_registration_list_response *response)
Definition: ds3.c:2192
ds3_s3_object_to_delete_response ** deleted_objects
Definition: ds3.h:1987
void ds3_capacity_summary_container_response_free(ds3_capacity_summary_container_response *response)
Definition: ds3.c:2725
ds3_client * ds3_copy_client(const ds3_client const *client)
Definition: ds3.c:141
ds3_str * last_checkpoint
Definition: ds3.h:1176
void ds3_tape_response_free(ds3_tape_response *response)
Definition: ds3.c:1093
ds3_str * name
Definition: ds3.h:742
void ds3_s3_target_failure_notification_registration_list_response_free(ds3_s3_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2234
ds3_str * type
Definition: ds3.h:1187
ds3_storage_domain_capacity_summary_response * tape
Definition: ds3.h:1936
ds3_str * secret_key
Definition: ds3.h:904
void ds3_azure_target_failure_notification_registration_list_response_free(ds3_azure_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2108
void ds3_azure_target_failure_list_response_free(ds3_azure_target_failure_list_response *response)
Definition: ds3.c:2542
ds3_tape_library_response ** tape_libraries
Definition: ds3.h:1838
ds3_paging * paging
Definition: ds3.h:1830
void ds3_build_information_response_free(ds3_build_information_response *response)
Definition: ds3.c:1371
Definition: ds3.h:92
void ds3_creds_free(ds3_creds *creds)
Definition: ds3.c:167
ds3_azure_data_replication_rule_response ** azure_data_replication_rules
Definition: ds3.h:1623
void ds3_group_response_free(ds3_group_response *response)
Definition: ds3.c:644
void ds3_pool_list_response_free(ds3_pool_list_response *response)
Definition: ds3.c:2332
ds3_str * id
Definition: ds3.h:798
ds3_str * id
Definition: ds3.h:1121
ds3_error * ds3_create_client_from_env(ds3_client **client)
Definition: ds3.c:108
static void get_file_size_posix(const char *file_path, uint64_t *file_size)
Definition: ds3.c:280
ds3_str * date_canceled
Definition: ds3.h:671
ds3_str * job_id
Definition: ds3.h:818
ds3_creds * creds
Definition: ds3.h:2137
void ds3_suspect_blob_pool_list_response_free(ds3_suspect_blob_pool_list_response *response)
Definition: ds3.c:1968
ds3_str * eject_date
Definition: ds3.h:1169
ds3_str * error_message
Definition: ds3.h:1228
ds3_spectra_user_response ** spectra_users
Definition: ds3.h:1918
void ds3_storage_domain_response_free(ds3_storage_domain_response *response)
Definition: ds3.c:735
ds3_bucket_response ** buckets
Definition: ds3.h:1613
ds3_azure_target_failure_response ** azure_target_failures
Definition: ds3.h:1868
void ds3_s3_objects_persisted_notification_payload_response_free(ds3_s3_objects_persisted_notification_payload_response *response)
Definition: ds3.c:2814
ds3_str * user_id
Definition: ds3.h:2009
ds3_str * partition_id
Definition: ds3.h:1204
ds3_feature_key_response ** feature_keys
Definition: ds3.h:1813
ds3_detailed_s3_object_response ** detailed_s3_objects
Definition: ds3.h:2093
ds3_str * secret_key
Definition: ds3.h:1331
ds3_str * last_modified
Definition: ds3.h:1123
ds3_tape_partition_failure_notification_registration_response ** tape_partition_failure_notification_registrations
Definition: ds3.h:1778
void ds3_s3_target_read_preference_response_free(ds3_s3_target_read_preference_response *response)
Definition: ds3.c:1327
void ds3_data_replication_rule_list_response_free(ds3_data_replication_rule_list_response *response)
Definition: ds3.c:1898
ds3_str * data_path_ip_address
Definition: ds3.h:830
void ds3_delete_object_error_response_free(ds3_delete_object_error_response *response)
Definition: ds3.c:1618
ds3_str * id
Definition: ds3.h:643
void ds3_azure_target_read_preference_response_free(ds3_azure_target_read_preference_response *response)
Definition: ds3.c:1234
void ds3_target_failure_notification_registration_list_response_free(ds3_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2122
ds3_type_response ** types
Definition: ds3.h:2089
ds3_str * replicated_user_default_data_policy
Definition: ds3.h:1295
ds3_data_replication_rule_response ** ds3_data_replication_rules
Definition: ds3.h:1638
ds3_multipart_upload_part_response ** parts
Definition: ds3.h:118
ds3_str * last_accessed
Definition: ds3.h:1175
ds3_str * mountpoint
Definition: ds3.h:1125
void ds3_data_persistence_rule_response_free(ds3_data_persistence_rule_response *response)
Definition: ds3.c:572
ds3_s3_target_failure_notification_registration_response ** s3_target_failure_notification_registrations
Definition: ds3.h:1758
ds3_job_response ** jobs
Definition: ds3.h:2042
ds3_str * created_at
Definition: ds3.h:688
void ds3_azure_target_list_response_free(ds3_azure_target_list_response *response)
Definition: ds3.c:2570
ds3_target_failure_notification_registration_response ** ds3_target_failure_notification_registrations
Definition: ds3.h:1718
void ds3_bulk_object_list_response_free(ds3_bulk_object_list_response *response)
Definition: ds3.c:2747
void ds3_target_failure_notification_payload_response_free(ds3_target_failure_notification_payload_response *response)
Definition: ds3.c:1394
void ds3_tape_partition_failure_list_response_free(ds3_tape_partition_failure_list_response *response)
Definition: ds3.c:2472
void ds3_tape_failure_notification_payload_response_free(ds3_tape_failure_notification_payload_response *response)
Definition: ds3.c:1491
ds3_str * group_id
Definition: ds3.h:659
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:44
ds3_str * error_message
Definition: ds3.h:1300
void ds3_azure_target_read_preference_list_response_free(ds3_azure_target_read_preference_list_response *response)
Definition: ds3.c:2556
ds3_str * persistence_rule_id
Definition: ds3.h:758
ds3_str * id
Definition: ds3.h:780
ds3_named_detailed_tape_partition_response ** named_detailed_tape_partitions
Definition: ds3.h:1853
void ds3_multipart_upload_part_response_free(ds3_multipart_upload_part_response *response)
Definition: ds3.c:403
void ds3_objects_response_free(ds3_objects_response *response)
Definition: ds3.c:2879
void ds3_connection_pool_dec_ref(ds3_connection_pool *pool)
ds3_str * bucket_id
Definition: ds3.h:1167
ds3_azure_target_read_preference_response ** azure_target_read_preferences
Definition: ds3.h:1873
ds3_log * log
Definition: ds3.h:2138
ds3_str * read_from_tape_id
Definition: ds3.h:825
ds3_str * path
Definition: ds3_request.h:32
Definition: ds3.h:1467
void ds3_s3_object_cached_notification_registration_list_response_free(ds3_s3_object_cached_notification_registration_list_response *response)
Definition: ds3.c:2178
void ds3_azure_target_response_free(ds3_azure_target_response *response)
Definition: ds3.c:1195
ds3_job_node_response ** nodes
Definition: ds3.h:2002
size_t num_nodes
Definition: ds3.h:2003
ds3_str * resource
Definition: ds3.h:1522
ds3_str * eject_label
Definition: ds3.h:1170
ds3_delete_object_error_response ** errors
Definition: ds3.h:1989
void ds3_multi_part_upload_response_free(ds3_multi_part_upload_response *response)
Definition: ds3.c:2947
void ds3_create_heap_dump_params_response_free(ds3_create_heap_dump_params_response *response)
Definition: ds3.c:1773
ds3_suspect_blob_pool_response ** suspect_blob_pools
Definition: ds3.h:1663
ds3_bulk_object_list_response * ds3_convert_file_list_with_basepath(const char **file_list, uint64_t num_files, const char *base_path)
Definition: ds3.c:328
void ds3_client_free(ds3_client *client)
Definition: ds3.c:177
ds3_storage_domain_capacity_summary_response * pool
Definition: ds3.h:1935
ds3_str * bucket_id
Definition: ds3.h:1118
void ds3_request_free(ds3_request *_request)
Definition: ds3.c:443
ds3_str * bucket_id
Definition: ds3.h:684
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:2139
ds3_tape_density_directive_response ** tape_density_directives
Definition: ds3.h:1823
ds3_paging * paging
Definition: ds3.h:1695
ds3_str * user_id
Definition: ds3.h:655
void ds3_list_all_my_buckets_result_response_free(ds3_list_all_my_buckets_result_response *response)
Definition: ds3.c:2829
ds3_s3_object_lost_notification_registration_response ** s3_object_lost_notification_registrations
Definition: ds3.h:1743
ds3_str * job_creation_date
Definition: ds3.h:817
ds3_str * rechunked
Definition: ds3.h:805
ds3_str * error_message
Definition: ds3.h:672
void ds3_tapes_must_be_onlined_response_free(ds3_tapes_must_be_onlined_response *response)
Definition: ds3.c:1516
void ds3_data_policy_acl_list_response_free(ds3_data_policy_acl_list_response *response)
Definition: ds3.c:1814
ds3_str * account_name
Definition: ds3.h:1249
void ds3_job_creation_failed_notification_registration_response_free(ds3_job_creation_failed_notification_registration_response *response)
Definition: ds3.c:875
void ds3_s3_target_read_preference_list_response_free(ds3_s3_target_read_preference_list_response *response)
Definition: ds3.c:2654
void ds3_delete_objects_response_free(ds3_delete_objects_response *response)
Definition: ds3.c:426
void ds3_tape_failure_notification_registration_list_response_free(ds3_tape_failure_notification_registration_list_response *response)
Definition: ds3.c:2276
ds3_str * display_name
Definition: ds3.h:1545
void ds3_s3_target_failure_notification_registration_response_free(ds3_s3_target_failure_notification_registration_response *response)
Definition: ds3.c:947
void ds3_bucket_response_free(ds3_bucket_response *response)
Definition: ds3.c:504
ds3_str * storage_domain_id
Definition: ds3.h:1184
ds3_connection_pool * ds3_connection_pool_init(void)
ds3_str * name
Definition: ds3.h:1292
void ds3_detailed_s3_object_list_response_free(ds3_detailed_s3_object_list_response *response)
Definition: ds3.c:3000
ds3_bulk_object_list_response * ds3_convert_file_list(const char **file_list, uint64_t num_files)
Definition: ds3.c:324
ds3_str * end_point
Definition: ds3.h:1536
ds3_cache_entry_information_response ** entries
Definition: ds3.h:1474
ds3_azure_target_response ** azure_targets
Definition: ds3.h:1878
ds3_physical_placement_response * physical_placement
Definition: ds3.h:1946
Definition: ds3.h:98
ds3_str * group_id
Definition: ds3.h:784
void ds3_s3_object_cached_notification_registration_response_free(ds3_s3_object_cached_notification_registration_response *response)
Definition: ds3.c:903
void ds3_system_failure_list_response_free(ds3_system_failure_list_response *response)
Definition: ds3.c:2402
void ds3_set_of_tape_bar_codes_response_free(ds3_set_of_tape_bar_codes_response *response)
Definition: ds3.c:1455
void ds3_azure_data_replication_rule_list_response_free(ds3_azure_data_replication_rule_list_response *response)
Definition: ds3.c:1856
ds3_pool_partition_response ** pool_partitions
Definition: ds3.h:1788
ds3_str * serial_number
Definition: ds3.h:1182
void ds3_s3_target_bucket_name_response_free(ds3_s3_target_bucket_name_response *response)
Definition: ds3.c:1303
ds3_str * user_name
Definition: ds3.h:2010
void ds3_s3_objects_cached_notification_payload_response_free(ds3_s3_objects_cached_notification_payload_response *response)
Definition: ds3.c:2785
ds3_s3_target_failure_response ** s3_target_failures
Definition: ds3.h:1903
void ds3_health_verification_result_response_free(ds3_health_verification_result_response *response)
Definition: ds3.c:1722
void ds3_node_list_response_free(ds3_node_list_response *response)
Definition: ds3.c:2094
ds3_str * proxy_host
Definition: ds3.h:1325
void ds3_tape_failure_list_response_free(ds3_tape_failure_list_response *response)
Definition: ds3.c:1760
ds3_str * cloud_bucket_prefix
Definition: ds3.h:1251
void ds3_named_detailed_tape_partition_list_response_free(ds3_named_detailed_tape_partition_list_response *response)
Definition: ds3.c:2500
ds3_paging * paging
Definition: ds3.h:1690
void ds3_pool_failure_response_free(ds3_pool_failure_response *response)
Definition: ds3.c:1046
void ds3_tape_drive_list_response_free(ds3_tape_drive_list_response *response)
Definition: ds3.c:2430
ds3_str * dns_name
Definition: ds3.h:831
void ds3_degraded_blob_response_free(ds3_degraded_blob_response *response)
Definition: ds3.c:606
ds3_str * bucket_id
Definition: ds3.h:658
ds3_str * start_date
Definition: ds3.h:2007
ds3_objects_response ** objects
Definition: ds3.h:2031
void ds3_active_job_list_response_free(ds3_active_job_list_response *response)
Definition: ds3.c:2052
void ds3_s3_object_list_response_free(ds3_s3_object_list_response *response)
Definition: ds3.c:2010
size_t num_ds3_targets
Definition: ds3.h:1894
ds3_str * azure_replication_rule_id
Definition: ds3.h:753
void ds3_target_read_preference_list_response_free(ds3_target_read_preference_list_response *response)
Definition: ds3.c:2598
void ds3_data_path_backend_response_free(ds3_data_path_backend_response *response)
Definition: ds3.c:561
ds3_s3_data_replication_rule_response ** s3_data_replication_rules
Definition: ds3.h:1643
ds3_str * code
Definition: ds3.h:1519
void ds3_storage_domain_failure_notification_registration_response_free(ds3_storage_domain_failure_notification_registration_response *response)
Definition: ds3.c:961
ds3_str * proxy_domain
Definition: ds3.h:1324
ds3_str * eject_location
Definition: ds3.h:1171
void ds3_database_contents_response_free(ds3_database_contents_response *response)
Definition: ds3.c:2987
ds3_str * admin_auth_id
Definition: ds3.h:1283
void ds3_connection_pool_inc_ref(ds3_connection_pool *pool)
ds3_str * rechunked
Definition: ds3.h:678
ds3_data_policy_acl_response ** data_policy_acls
Definition: ds3.h:1608
void ds3_target_failure_response_free(ds3_target_failure_response *response)
Definition: ds3.c:1260
void ds3_azure_target_bucket_name_response_free(ds3_azure_target_bucket_name_response *response)
Definition: ds3.c:1210
ds3_str * creation_date
Definition: ds3.h:733
ds3_pool_response ** pools
Definition: ds3.h:1793
ds3_s3_target_read_preference_response ** s3_target_read_preferences
Definition: ds3.h:1908
ds3_str * mfg_serial_number
Definition: ds3.h:1203
ds3_user_response * owner
Definition: ds3.h:2050
ds3_system_failure_response ** system_failures
Definition: ds3.h:1818
void ds3_job_created_notification_payload_response_free(ds3_job_created_notification_payload_response *response)
Definition: ds3.c:1421
void ds3_tape_list_response_free(ds3_tape_list_response *response)
Definition: ds3.c:2514
ds3_bucket_acl_response ** bucket_acls
Definition: ds3.h:1603
ds3_str * error_message
Definition: ds3.h:1139
ds3_str * storage_class
Definition: ds3.h:2069
ds3_error * ds3_create_error(ds3_error_code code, const char *message)
Definition: ds3_utils.c:22
void ds3_bulk_object_response_free(ds3_bulk_object_response *response)
Definition: ds3.c:2735
ds3_str * checksum
Definition: ds3_request.h:34
void ds3_data_policy_acl_response_free(ds3_data_policy_acl_response *response)
Definition: ds3.c:594
void ds3_storage_domain_failure_notification_registration_list_response_free(ds3_storage_domain_failure_notification_registration_list_response *response)
Definition: ds3.c:2248
ds3_str * data_path_end_point
Definition: ds3.h:1285
ds3_cache_filesystem_information_response ** filesystems
Definition: ds3.h:1482
ds3_str * creation_date
Definition: ds3.h:648
void ds3_suspect_blob_ds3_target_list_response_free(ds3_suspect_blob_ds3_target_list_response *response)
Definition: ds3.c:1954
ds3_str * id
Definition: ds3.h:651
void ds3_target_read_preference_response_free(ds3_target_read_preference_response *response)
Definition: ds3.c:1272
ds3_paging * paging
Definition: ds3.h:1710
ds3_str * node_id
Definition: ds3.h:819
ds3_bulk_object_list_response * ds3_init_bulk_object_list()
Definition: ds3.c:382
ds3_str * error_message
Definition: ds3.h:690
ds3_str * id
Definition: ds3.h:1539
ds3_str * last_fully_verified
Definition: ds3.h:1320
ds3_tape_response * tape
Definition: ds3.h:1580
size_t ds3_write_to_fd(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:201
ds3_str * object_id
Definition: ds3.h:645
ds3_str * guid
Definition: ds3.h:1119
ds3_paging * paging
Definition: ds3.h:1915
ds3_str * proxy_password
Definition: ds3.h:1326
void ds3_storage_domain_capacity_summary_response_free(ds3_storage_domain_capacity_summary_response *response)
Definition: ds3.c:746
ds3_str * data_path_proxy
Definition: ds3.h:1288
ds3_str * name
Definition: ds3.h:1321
size_t ds3_write_to_file(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:193
ds3_str * error_message
Definition: ds3.h:1199
size_t num_objects
Definition: ds3.h:2017
ds3_str * access_id
Definition: ds3.h:99
ds3_set_of_tape_bar_codes_response ** tapes_to_online
Definition: ds3.h:1446
ds3_str * storage_domain_id
Definition: ds3.h:1132
ds3_storage_domain_failure_response ** storage_domain_failures
Definition: ds3.h:1798
ds3_suspect_blob_azure_target_response ** suspect_blob_azure_targets
Definition: ds3.h:1653
void ds3_complete_multipart_upload_result_response_free(ds3_complete_multipart_upload_result_response *response)
Definition: ds3.c:1606
ds3_paging * paging
Definition: ds3.h:1860
void ds3_system_failure_notification_registration_list_response_free(ds3_system_failure_notification_registration_list_response *response)
Definition: ds3.c:2262
void ds3_storage_domain_failure_notification_payload_response_free(ds3_storage_domain_failure_notification_payload_response *response)
Definition: ds3.c:1468
GHashTable * query_params
Definition: ds3_request.h:37
ds3_suspect_blob_s3_target_response ** suspect_blob_s3_targets
Definition: ds3.h:1668
ds3_str * read_from_ds3_target_id
Definition: ds3.h:822
ds3_data_persistence_rule_response ** data_persistence_rules
Definition: ds3.h:1628
void ds3_storage_domain_list_response_free(ds3_storage_domain_list_response *response)
Definition: ds3.c:2374
ds3_str * expiration_date
Definition: ds3.h:773
void ds3_detailed_tape_partition_response_free(ds3_detailed_tape_partition_response *response)
Definition: ds3.c:1629
ds3_storage_domain_response ** storage_domains
Definition: ds3.h:1808
static ds3_bulk_object_response * _ds3_bulk_object_from_file(const char *file_name, const char *base_path)
Definition: ds3.c:298
ds3_str * s3_replication_rule_id
Definition: ds3.h:759
ds3_str * date_completed
Definition: ds3.h:689
ds3_bulk_object_list_response * ds3_convert_object_list(const ds3_contents_response **objects, uint64_t num_objects)
Definition: ds3.c:344
void ds3_azure_target_failure_notification_registration_response_free(ds3_azure_target_failure_notification_registration_response *response)
Definition: ds3.c:803
void ds3_s3_object_persisted_notification_registration_list_response_free(ds3_s3_object_persisted_notification_registration_list_response *response)
Definition: ds3.c:2206
ds3_str * last_verified
Definition: ds3.h:1178
ds3_str * bucket_id
Definition: ds3.h:791
void ds3_job_completed_notification_registration_response_free(ds3_job_completed_notification_registration_response *response)
Definition: ds3.c:846
ds3_str * user_id
Definition: ds3.h:681
void ds3_pool_failure_notification_registration_list_response_free(ds3_pool_failure_notification_registration_list_response *response)
Definition: ds3.c:2220
ds3_pool_failure_response ** pool_failures
Definition: ds3.h:1783
void ds3_blob_response_free(ds3_blob_response *response)
Definition: ds3.c:493
void ds3_str_free(ds3_str *string)
Definition: ds3_string.c:50
ds3_s3_target_response ** s3_targets
Definition: ds3.h:1929
ds3_completed_job_response ** completed_jobs
Definition: ds3.h:1703
void ds3_s3_target_failure_response_free(ds3_s3_target_failure_response *response)
Definition: ds3.c:1315
ds3_str * partition_id
Definition: ds3.h:1127
ds3_suspect_blob_tape_response ** suspect_blob_tapes
Definition: ds3.h:1673
ds3_str * ds3_str_dup(const ds3_str *string)
Definition: ds3_string.c:32
void ds3_list_bucket_result_response_free(ds3_list_bucket_result_response *response)
Definition: ds3.c:3014
ds3_str * key
Definition: ds3.h:2065
ds3_target_response ** ds3_targets
Definition: ds3.h:1893
ds3_str * read_from_azure_target_id
Definition: ds3.h:821
ds3_str ** strings_list
Definition: ds3.h:123
The public definitions for the Spectra S3 C SDK.
void ds3_pool_failure_notification_registration_response_free(ds3_pool_failure_notification_registration_response *response)
Definition: ds3.c:889
ds3_str * id
Definition: ds3.h:832
void ds3_s3_object_persisted_notification_registration_response_free(ds3_s3_object_persisted_notification_registration_response *response)
Definition: ds3.c:932
ds3_str * default_data_policy_id
Definition: ds3.h:901
void ds3_feature_key_list_response_free(ds3_feature_key_list_response *response)
Definition: ds3.c:2388
ds3_str * bucket_name
Definition: ds3.h:1994
void ds3_s3_target_bucket_name_list_response_free(ds3_s3_target_bucket_name_list_response *response)
Definition: ds3.c:2626
void ds3_tape_library_response_free(ds3_tape_library_response *response)
Definition: ds3.c:1157
void ds3_tape_partition_failure_notification_registration_response_free(ds3_tape_partition_failure_notification_registration_response *response)
Definition: ds3.c:1003
ds3_job_creation_failed_notification_registration_response ** job_creation_failed_notification_registrations
Definition: ds3.h:1733
ds3_str * proxy_username
Definition: ds3.h:1328
void ds3_s3_data_replication_rule_response_free(ds3_s3_data_replication_rule_response *response)
Definition: ds3.c:712
ds3_str * beans_retriever_name
Definition: ds3.h:1591
uint64_t num_redirects
Definition: ds3.h:2136
void ds3_s3_objects_lost_notification_payload_response_free(ds3_s3_objects_lost_notification_payload_response *response)
Definition: ds3.c:2800
ds3_system_failure_notification_registration_response ** system_failure_notification_registrations
Definition: ds3.h:1768
ds3_str * id
Definition: ds3.h:1319
ds3_str * id
Definition: ds3.h:1546
void ds3_job_response_free(ds3_job_response *response)
Definition: ds3.c:2860
ds3_str * ds3_replication_rule_id
Definition: ds3.h:756
void ds3_tape_density_directive_response_free(ds3_tape_density_directive_response *response)
Definition: ds3.c:1118
ds3_client * ds3_create_client(const char *const endpoint, ds3_creds *creds)
Definition: ds3.c:89
void ds3_job_chunk_response_free(ds3_job_chunk_response *response)
Definition: ds3.c:681
ds3_str * admin_secret_key
Definition: ds3.h:1284
ds3_str * creation_date
Definition: ds3.h:849
ds3_paging * paging
Definition: ds3.h:1795
void ds3_node_response_free(ds3_node_response *response)
Definition: ds3.c:698
ds3_job_completed_notification_registration_response ** job_completed_notification_registrations
Definition: ds3.h:1723
void ds3_cache_filesystem_list_response_free(ds3_cache_filesystem_list_response *response)
Definition: ds3.c:1842
ds3_str * checksum
Definition: ds3.h:641
ds3_blob_response * blob
Definition: ds3.h:1468
ds3_multi_part_upload_response ** uploads
Definition: ds3.h:2123
void ds3_duration_response_free(ds3_duration_response *response)
Definition: ds3.c:1792
void ds3_cache_filesystem_information_response_free(ds3_cache_filesystem_information_response *response)
Definition: ds3.c:1568
void ds3_job_completed_notification_payload_response_free(ds3_job_completed_notification_payload_response *response)
Definition: ds3.c:2760
ds3_str * serial_number
Definition: ds3.h:1207
ds3_str * last_modified
Definition: ds3.h:2066
ds3_tape_partition_failure_response ** tape_partition_failures
Definition: ds3.h:1843
ds3_bulk_object_response ** objects
Definition: ds3.h:2016
ds3_str * description_for_identification
Definition: ds3.h:1168
ds3_str * tape_id
Definition: ds3.h:1209
ds3_s3_target_bucket_name_response ** s3_target_bucket_names
Definition: ds3.h:1898
ds3_str * rechunked
Definition: ds3.h:696
void ds3_active_job_response_free(ds3_active_job_response *response)
Definition: ds3.c:666
Definition: ds3.h:50
ds3_str * management_url
Definition: ds3.h:1222
ds3_log_lvl log_lvl
Definition: ds3.h:95
ds3_pool_failure_notification_registration_response ** pool_failure_notification_registrations
Definition: ds3.h:1753
void ds3_s3_target_failure_notification_payload_response_free(ds3_s3_target_failure_notification_payload_response *response)
Definition: ds3.c:1443
void ds3_storage_domain_member_list_response_free(ds3_storage_domain_member_list_response *response)
Definition: ds3.c:2360
void net_cleanup(void)
Definition: ds3_net.c:591
ds3_str * e_tag
Definition: ds3.h:2064
ds3_multi_part_upload_part_response ** parts
Definition: ds3.h:2052
void ds3_detailed_tape_failure_response_free(ds3_detailed_tape_failure_response *response)
Definition: ds3.c:1144
void ds3_pool_failure_notification_payload_response_free(ds3_pool_failure_notification_payload_response *response)
Definition: ds3.c:1431
ds3_target_failure_response ** ds3_target_failures
Definition: ds3.h:1883
void ds3_blob_store_tasks_information_response_free(ds3_blob_store_tasks_information_response *response)
Definition: ds3.c:1546
void ds3_cache_entry_information_response_free(ds3_cache_entry_information_response *response)
Definition: ds3.c:1559
void ds3_bucket_acl_response_free(ds3_bucket_acl_response *response)
Definition: ds3.c:517
void ds3_contents_response_free(ds3_contents_response *response)
Definition: ds3.c:2959
void ds3_paging_free(ds3_paging *paging)
Definition: ds3.c:439
ds3_str * user_id
Definition: ds3.h:662
void ds3_s3_object_response_free(ds3_s3_object_response *response)
Definition: ds3.c:723
void ds3_storage_domain_member_response_free(ds3_storage_domain_member_response *response)
Definition: ds3.c:766
ds3_str * creation_date
Definition: ds3.h:1486
ds3_error_response * error
Definition: ds3.h:2130
void ds3_s3_data_replication_rule_list_response_free(ds3_s3_data_replication_rule_list_response *response)
Definition: ds3.c:1912
ds3_str * auth_id
Definition: ds3.h:900
size_t num_deleted_objects
Definition: ds3.h:1988
void ds3_job_created_notification_registration_response_free(ds3_job_created_notification_registration_response *response)
Definition: ds3.c:861
ds3_str * read_from_s3_target_id
Definition: ds3.h:824
void(* log_callback)(const char *log_message, void *user_data)
Definition: ds3.h:93
ds3_paging * paging
Definition: ds3.h:1605
ds3_str * name
Definition: ds3.h:2001
ds3_tape_drive_response ** tape_drives
Definition: ds3.h:1828
void ds3_bucket_details_response_free(ds3_bucket_details_response *response)
Definition: ds3.c:1596
ds3_active_job_response ** active_jobs
Definition: ds3.h:1693
void ds3_blob_store_task_information_response_free(ds3_blob_store_task_information_response *response)
Definition: ds3.c:1529
ds3_tape_failure_response ** failures
Definition: ds3.h:1583
void ds3_suspect_blob_s3_target_response_free(ds3_suspect_blob_s3_target_response *response)
Definition: ds3.c:1360
ds3_str * data_policy_id
Definition: ds3.h:649
void ds3_multi_part_upload_part_response_free(ds3_multi_part_upload_part_response *response)
Definition: ds3.c:1671
ds3_str * id
Definition: ds3.h:1291
ds3_s3_object_cached_notification_registration_response ** s3_object_cached_notification_registrations
Definition: ds3.h:1738
void ds3_list_parts_result_response_free(ds3_list_parts_result_response *response)
Definition: ds3.c:2930
ds3_str * auto_eject_upon_cron
Definition: ds3.h:858
ds3_azure_target_bucket_name_response ** azure_target_bucket_names
Definition: ds3.h:1863
ds3_cache_filesystem_response ** cache_filesystems
Definition: ds3.h:1618
void ds3_suspect_blob_tape_response_free(ds3_suspect_blob_tape_response *response)
Definition: ds3.c:1082
ds3_s3_object_persisted_notification_registration_response ** s3_object_persisted_notification_registrations
Definition: ds3.h:1748
void ds3_group_member_list_response_free(ds3_group_member_list_response *response)
Definition: ds3.c:2024
ds3_str * cloud_bucket_suffix
Definition: ds3.h:1252
ds3_str * id
Definition: ds3.h:660
ds3_str * partition_id
Definition: ds3.h:1180
ds3_str * cloud_bucket_suffix
Definition: ds3.h:1315
void ds3_bucket_list_response_free(ds3_bucket_list_response *response)
Definition: ds3.c:1828
ds3_str * error_message
Definition: ds3.h:895
ds3_canceled_job_response ** canceled_jobs
Definition: ds3.h:1698
ds3_azure_target_failure_notification_registration_response ** azure_target_failure_notification_registrations
Definition: ds3.h:1713
ds3_data_policy_response ** data_policies
Definition: ds3.h:1633
void ds3_cache_information_response_free(ds3_cache_information_response *response)
Definition: ds3.c:1583
ds3_str * account_key
Definition: ds3.h:1248
ds3_group_member_response ** group_members
Definition: ds3.h:1683
void ds3_spectra_user_list_response_free(ds3_spectra_user_list_response *response)
Definition: ds3.c:2682
ds3_bulk_object_response ** objects
Definition: ds3.h:1972
void ds3_pool_response_free(ds3_pool_response *response)
Definition: ds3.c:1028
void ds3_group_member_response_free(ds3_group_member_response *response)
Definition: ds3.c:654
ds3_str * serial_number
Definition: ds3.h:835
ds3_paging * paging
Definition: ds3.h:1680
ds3_str * message
Definition: ds3.h:2129
ds3_str * data_policy_id
Definition: ds3.h:747
void ds3_suspect_blob_pool_response_free(ds3_suspect_blob_pool_response *response)
Definition: ds3.c:1068
ds3_str * data_path_end_point
Definition: ds3.h:1316
ds3_str * name
Definition: ds3.h:802
void ds3_job_creation_failed_notification_registration_list_response_free(ds3_job_creation_failed_notification_registration_list_response *response)
Definition: ds3.c:2164
ds3_str * created_at
Definition: ds3.h:670
void ds3_bucket_acl_list_response_free(ds3_bucket_acl_list_response *response)
Definition: ds3.c:1800
ds3_str * job_id
Definition: ds3.h:1999
void ds3_azure_data_replication_rule_response_free(ds3_azure_data_replication_rule_response *response)
Definition: ds3.c:482
void ds3_tape_failure_notification_registration_response_free(ds3_tape_failure_notification_registration_response *response)
Definition: ds3.c:989
ds3_str * bucket_id
Definition: ds3.h:665
ds3_str * last_verified
Definition: ds3.h:1124
ds3_str * read_from_pool_id
Definition: ds3.h:823
ds3_str * bucket_id
Definition: ds3.h:848
ds3_group_response ** groups
Definition: ds3.h:1688
void ds3_pool_failure_list_response_free(ds3_pool_failure_list_response *response)
Definition: ds3.c:2304
ds3_str * name
Definition: ds3.h:1126
void ds3_data_policy_response_free(ds3_data_policy_response *response)
Definition: ds3.c:583
GHashTable * headers
Definition: ds3_request.h:36
ds3_azure_target_response ** azure_targets
Definition: ds3.h:1923
void ds3_system_failure_notification_payload_response_free(ds3_system_failure_notification_payload_response *response)
Definition: ds3.c:1480
#define S_ISDIR(mode)
Definition: ds3.c:40
ds3_str * access_key
Definition: ds3.h:1312
size_t ds3_read_from_file(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:197
ds3_detailed_tape_failure_response ** detailed_tape_failures
Definition: ds3.h:1833
void ds3_detailed_s3_object_response_free(ds3_detailed_s3_object_response *response)
Definition: ds3.c:2972
void ds3_tape_partition_failure_notification_payload_response_free(ds3_tape_partition_failure_notification_payload_response *response)
Definition: ds3.c:1504
ds3_storage_domain_member_response ** storage_domain_members
Definition: ds3.h:1803
ds3_str * proxy
Definition: ds3.h:2135
void ds3_error_free(ds3_error *error)
Definition: ds3.c:464
ds3_job_created_notification_registration_response ** job_created_notification_registrations
Definition: ds3.h:1728
void ds3_user_response_free(ds3_user_response *response)
Definition: ds3.c:1700
void ds3_s3_object_to_delete_response_free(ds3_s3_object_to_delete_response *response)
Definition: ds3.c:1691
void ds3_list_multi_part_uploads_result_response_free(ds3_list_multi_part_uploads_result_response *response)
Definition: ds3.c:3037
ds3_tape_drive_type * drive_types
Definition: ds3.h:1502
ds3_str * bucket_id
Definition: ds3.h:755
void ds3_suspect_blob_azure_target_response_free(ds3_suspect_blob_azure_target_response *response)
Definition: ds3.c:1338
void ds3_client_proxy(ds3_client *client, const char *proxy)
Definition: ds3.c:162
void ds3_azure_target_failure_notification_payload_response_free(ds3_azure_target_failure_notification_payload_response *response)
Definition: ds3.c:1382
ds3_error * net_process_request(const ds3_client *client, const ds3_request *_request, void *read_user_struct, size_t(*read_handler_func)(void *, size_t, size_t, void *), void *write_user_struct, size_t(*write_handler_func)(void *, size_t, size_t, void *), ds3_string_multimap **return_headers)
Definition: ds3_net.c:375
ds3_bucket_details_response ** buckets
Definition: ds3.h:1982
void ds3_s3_object_lost_notification_registration_response_free(ds3_s3_object_lost_notification_registration_response *response)
Definition: ds3.c:918
ds3_str * member_user_id
Definition: ds3.h:787
void ds3_target_response_free(ds3_target_response *response)
Definition: ds3.c:1245
ds3_str * partially_verified_end_of_tape
Definition: ds3.h:1179
void ds3_s3_target_list_response_free(ds3_s3_target_list_response *response)
Definition: ds3.c:2668
ds3_str * last_cleaned
Definition: ds3.h:1202
ds3_connection_pool * connection_pool
Definition: ds3.h:2146
void ds3_storage_domain_failure_list_response_free(ds3_storage_domain_failure_list_response *response)
Definition: ds3.c:2346
void ds3_master_object_list_response_free(ds3_master_object_list_response *response)
Definition: ds3.c:2894
ds3_str * user_id
Definition: ds3.h:810
void ds3_target_failure_list_response_free(ds3_target_failure_list_response *response)
Definition: ds3.c:2584
void ds3_target_list_response_free(ds3_target_list_response *response)
Definition: ds3.c:2612
ds3_bulk_object_response ** objects
Definition: ds3.h:1967
void ds3_system_failure_response_free(ds3_system_failure_response *response)
Definition: ds3.c:779
ds3_bulk_object_response ** objects
Definition: ds3.h:1950
ds3_str * created_at
Definition: ds3.h:795
void ds3_tape_partition_failure_response_free(ds3_tape_partition_failure_response *response)
Definition: ds3.c:1183
void ds3_tape_partition_failure_notification_registration_list_response_free(ds3_tape_partition_failure_notification_registration_list_response *response)
Definition: ds3.c:2290
void ds3_job_list_response_free(ds3_job_list_response *response)
Definition: ds3.c:2917
ds3_str * error_message
Definition: ds3.h:797
void ds3_pool_partition_list_response_free(ds3_pool_partition_list_response *response)
Definition: ds3.c:2318
void ds3_data_persistence_rule_list_response_free(ds3_data_persistence_rule_list_response *response)
Definition: ds3.c:1870
ds3_contents_response ** objects
Definition: ds3.h:2106
void ds3_spectra_user_response_free(ds3_spectra_user_response *response)
Definition: ds3.c:790
ds3_build_information_response * build_information
Definition: ds3.h:1551
ds3_str * serial_number
Definition: ds3.h:1224
ds3_str * bucket
Definition: ds3.h:1939
void ds3_initiate_multipart_upload_result_response_free(ds3_initiate_multipart_upload_result_response *response)
Definition: ds3.c:1660
ds3_s3_object_response ** s3_objects
Definition: ds3.h:1678
void ds3_s3_target_response_free(ds3_s3_target_response *response)
Definition: ds3.c:1283
void ds3_data_policy_list_response_free(ds3_data_policy_list_response *response)
Definition: ds3.c:1884
ds3_str * ds3_str_init(const char *string)
Definition: ds3_string.c:20
void ds3_delete_result_response_free(ds3_delete_result_response *response)
Definition: ds3.c:2843
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:74
void ds3_canceled_job_list_response_free(ds3_canceled_job_list_response *response)
Definition: ds3.c:2066
ds3_str * member_group_id
Definition: ds3.h:786
void ds3_job_creation_failed_notification_payload_response_free(ds3_job_creation_failed_notification_payload_response *response)
Definition: ds3.c:2775
void ds3_system_failure_notification_registration_response_free(ds3_system_failure_notification_registration_response *response)
Definition: ds3.c:975
ds3_s3_target_response ** s3_targets
Definition: ds3.h:1913
void ds3_suspect_blob_tape_list_response_free(ds3_suspect_blob_tape_list_response *response)
Definition: ds3.c:1996
void ds3_canceled_job_response_free(ds3_canceled_job_response *response)
Definition: ds3.c:529
ds3_tape_failure_notification_registration_response ** tape_failure_notification_registrations
Definition: ds3.h:1773
void ds3_azure_target_bucket_name_list_response_free(ds3_azure_target_bucket_name_list_response *response)
Definition: ds3.c:2528
ds3_str * cloud_bucket_prefix
Definition: ds3.h:1314
void ds3_type_response_free(ds3_type_response *response)
Definition: ds3.c:1782
ds3_blob_store_task_information_response ** tasks
Definition: ds3.h:1464
ds3_tape_drive_type * drive_types
Definition: ds3.h:1562
void ds3_complete_multipart_upload_response_free(ds3_complete_multipart_upload_response *response)
Definition: ds3.c:413
void ds3_named_detailed_tape_partition_response_free(ds3_named_detailed_tape_partition_response *response)
Definition: ds3.c:1730
ds3_creds * ds3_create_creds(const char *access_id, const char *secret_key)
Definition: ds3.c:60
ds3_bulk_object_list_response * ds3_convert_object_list_from_strings(const char **objects, uint64_t num_objects)
Definition: ds3.c:363
void ds3_completed_job_list_response_free(ds3_completed_job_list_response *response)
Definition: ds3.c:2080
void * user_data
Definition: ds3.h:94
ds3_str * bar_code
Definition: ds3.h:1166
void ds3_tape_density_directive_list_response_free(ds3_tape_density_directive_list_response *response)
Definition: ds3.c:2416
ds3_bulk_object_list_response * ds3_init_bulk_object_list_with_size(size_t num_objects)
Definition: ds3.c:386
ds3_str * node_id
Definition: ds3.h:2015
ds3_str * secret_key
Definition: ds3.h:100
ds3_str * id
Definition: ds3.h:850
ds3_degraded_blob_response ** degraded_blobs
Definition: ds3.h:1648
ds3_target_response ** ds3_targets
Definition: ds3.h:1925
ds3_user_response * owner
Definition: ds3.h:2060
void ds3_generic_dao_notification_registration_response_free(ds3_generic_dao_notification_registration_response *response)
Definition: ds3.c:831
ds3_str * error_message
Definition: ds3.h:772
void ds3_job_created_notification_registration_list_response_free(ds3_job_created_notification_registration_list_response *response)
Definition: ds3.c:2150
void ds3_tape_drive_response_free(ds3_tape_drive_response *response)
Definition: ds3.c:1129
void ds3_physical_placement_response_free(ds3_physical_placement_response *response)
Definition: ds3.c:2696
ds3_target_read_preference_response ** ds3_target_read_preferences
Definition: ds3.h:1888
void ds3_system_information_response_free(ds3_system_information_response *response)
Definition: ds3.c:1710
void ds3_detailed_tape_failure_list_response_free(ds3_detailed_tape_failure_list_response *response)
Definition: ds3.c:2444
ds3_str * endpoint
Definition: ds3.h:2134
void ds3_suspect_blob_azure_target_list_response_free(ds3_suspect_blob_azure_target_list_response *response)
Definition: ds3.c:1940
char * value
Definition: ds3_string.h:37
ds3_tape_response ** tapes
Definition: ds3.h:1931
void ds3_tape_partition_response_free(ds3_tape_partition_response *response)
Definition: ds3.c:1169
ds3_str * id
Definition: ds3.h:1174
ds3_str * last_fully_verified
Definition: ds3.h:1256
ds3_str * chunk_id
Definition: ds3.h:2013
ds3_job_node_response ** nodes
Definition: ds3.h:2029
void ds3_tape_library_list_response_free(ds3_tape_library_list_response *response)
Definition: ds3.c:2458
void ds3_data_replication_rule_response_free(ds3_data_replication_rule_response *response)
Definition: ds3.c:621
void ds3_suspect_blob_s3_target_list_response_free(ds3_suspect_blob_s3_target_list_response *response)
Definition: ds3.c:1982
ds3_tape_response ** tapes
Definition: ds3.h:1858