ovirt-engine-sdk 4.1.9 → 4.1.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 818f63a1a783df790fbf5fc8f254ded435a90ac8
4
- data.tar.gz: 2a51cba1a01c8a8c62647ee2c256f3a1684684a4
3
+ metadata.gz: a13beb0ec3a34430b8b4c88dbca6733bd11ff2df
4
+ data.tar.gz: 5e7347f6145b8a9427cf4d1acd479d41707794c4
5
5
  SHA512:
6
- metadata.gz: 9445021acbd41f225e882fe6ef4fc537bd97972ef9c978f0b4ed50c4b91ac53cb6f4ec5b116a7abef4f183b4764a94737fc730453278b094ff86aa7c72fbf5cd
7
- data.tar.gz: 43097db69c7d043a11e147a55739e40a37455e4c2738714f451ca4b8f752a375f26be5575042643747fcd848f2639a4e6aa2c96ef4368175667e8d18bec15839
6
+ metadata.gz: d0f2fb994b048d4928a3291c8c4b77fd4e464ac9906d9782f51f3c44047be82099c132b95a224e1a6c39f7fca4132c4e970027c49edbc1842ff070d20b3fb093
7
+ data.tar.gz: 7082c6f72b823c3d9adcaa537bb5bd265e7754d5f57b76a920e06f1cd604f61da5623556106b27fbeeb74b37d16ef00edb5f1223aec8843bae7f7416f3e21626
@@ -2,6 +2,27 @@
2
2
 
3
3
  This document describes the relevant changes between releases of the SDK.
4
4
 
5
+ == 4.1.10 / Nov 3 2017
6
+
7
+ Update to model 4.1.40:
8
+
9
+ * Add `image` parameter to `HostService.upgrade`
10
+ https://bugzilla.redhat.com/1488434[#1488434].
11
+
12
+ New features:
13
+
14
+ * Add support for cookies.
15
+
16
+ * Add `connect_timeout` parameter
17
+ https://bugzilla.redhat.com/1508944[#1508944].
18
+
19
+ Bug fixes:
20
+
21
+ * Check the types of the `HttpClient` constructor parameters.
22
+
23
+ * Require `redhat-rpm-config` for building
24
+ https://bugzilla.redhat.com/1505427[#1505427].
25
+
5
26
  == 4.1.9 / Oct 13 2017
6
27
 
7
28
  Update to model 4.1.39:
@@ -41,16 +41,41 @@ CentOS:
41
41
  gcc \
42
42
  libcurl-devel \
43
43
  libxml2-devel \
44
- ruby-devel
44
+ redhat-rpm-config \
45
+ ruby \
46
+ ruby-devel \
47
+ rubygems \
48
+ rubygems-devel
49
+
50
+ NOTE: The installation of the `ruby`, `ruby-devel`, `rubygems` and
51
+ `rubygems-devel` packages is necessary if you are going to use the Ruby
52
+ version included in your distribution. If you are using tools like
53
+ `rbenv` or `rvm` then this is not necessary.
45
54
 
46
55
  If you are using distributions like Debian, or Ubuntu:
47
56
 
48
57
  # apt-get --assume-yes install \
49
58
  gcc \
59
+ libcurl4-openssl-dev \
50
60
  libxml2-dev \
51
- libcurl-dev \
61
+ ruby \
52
62
  ruby-dev
53
63
 
64
+ NOTE: The installation of the `ruby` and `ruby-dev` packages is
65
+ necessary if you are going to use the Ruby version included in your
66
+ distribution. If you are using tools like `rbenv` or `rvm` then this is
67
+ not necessary.
68
+
69
+ Some Linux distributions, like Debian and Ubuntu, provide multiple
70
+ versions of `libcurl`, compiled with support for different TLS
71
+ libraries: OpenSSL, NSS and GnuTLS. Currently the SDK only supports
72
+ OpenSSL, so make sure that you have that version of `libcurl` installed.
73
+ For example, in Ubuntu 16.04 if you have the NSS version installed, you
74
+ will have to remove it and then install the OpenSSL version:
75
+
76
+ # apt-get --assume-yes remove libcurl4-nss-dev
77
+ # apt-get --assume-yes install libcurl4-openssl-dev
78
+
54
79
  NOTE: The examples above use the `dnf` command, which is the default in
55
80
  Fedora 24. In CentOS 7 you may need to use the `yum` command, as `dnf`
56
81
  is optional.
@@ -50,7 +50,8 @@ static VALUE PROXY_PASSWORD_SYMBOL;
50
50
  static VALUE PROXY_URL_SYMBOL;
51
51
  static VALUE PROXY_USERNAME_SYMBOL;
52
52
  static VALUE TIMEOUT_SYMBOL;
53
- static VALUE USERNAME_SYMBOL;
53
+ static VALUE CONNECT_TIMEOUT_SYMBOL;
54
+ static VALUE COOKIES_SYMBOL;
54
55
 
55
56
  /* Method identifiers: */
56
57
  static ID COMPARE_BY_IDENTITY_ID;
@@ -154,6 +155,7 @@ static void ov_http_client_free(void* vptr) {
154
155
  /* Release the resources used by libcurl: */
155
156
  if (ptr->handle != NULL) {
156
157
  curl_multi_cleanup(ptr->handle);
158
+ curl_share_cleanup(ptr->share);
157
159
  ptr->handle = NULL;
158
160
  }
159
161
 
@@ -162,6 +164,7 @@ static void ov_http_client_free(void* vptr) {
162
164
  ov_string_free(ptr->proxy_url);
163
165
  ov_string_free(ptr->proxy_username);
164
166
  ov_string_free(ptr->proxy_password);
167
+ ov_string_free(ptr->cookies);
165
168
 
166
169
  /* Free this object: */
167
170
  xfree(ptr);
@@ -186,6 +189,21 @@ static VALUE ov_http_client_alloc(VALUE klass) {
186
189
  ov_http_client_object* ptr;
187
190
 
188
191
  ptr = ALLOC(ov_http_client_object);
192
+ ptr->handle = NULL;
193
+ ptr->share = NULL;
194
+ ptr->log = Qnil;
195
+ ptr->pending = Qnil;
196
+ ptr->completed = Qnil;
197
+ ptr->compress = false;
198
+ ptr->debug = false;
199
+ ptr->insecure = false;
200
+ ptr->ca_file = NULL;
201
+ ptr->proxy_url = NULL;
202
+ ptr->proxy_username = NULL;
203
+ ptr->proxy_password = NULL;
204
+ ptr->timeout = 0;
205
+ ptr->connect_timeout = 0;
206
+ ptr->cookies = NULL;
189
207
  return TypedData_Wrap_Struct(klass, &ov_http_client_type, ptr);
190
208
  }
191
209
 
@@ -466,7 +484,13 @@ static VALUE ov_http_client_initialize(int argc, VALUE* argv, VALUE self) {
466
484
 
467
485
  /* Get the value of the 'ca_file' parameter: */
468
486
  opt = rb_hash_aref(opts, CA_FILE_SYMBOL);
469
- ptr->ca_file = ov_string_dup(opt);
487
+ if (NIL_P(opt)) {
488
+ ptr->ca_file = NULL;
489
+ }
490
+ else {
491
+ Check_Type(opt, T_STRING);
492
+ ptr->ca_file = ov_string_dup(opt);
493
+ }
470
494
 
471
495
  /* Get the value of the 'insecure' parameter: */
472
496
  opt = rb_hash_aref(opts, INSECURE_SYMBOL);
@@ -490,17 +514,45 @@ static VALUE ov_http_client_initialize(int argc, VALUE* argv, VALUE self) {
490
514
  ptr->timeout = NUM2INT(opt);
491
515
  }
492
516
 
517
+ /* Get the value of the 'connect_timeout' parameter: */
518
+ opt = rb_hash_aref(opts, CONNECT_TIMEOUT_SYMBOL);
519
+ if (NIL_P(opt)) {
520
+ ptr->connect_timeout = 0;
521
+ }
522
+ else {
523
+ Check_Type(opt, T_FIXNUM);
524
+ ptr->connect_timeout = NUM2INT(opt);
525
+ }
526
+
493
527
  /* Get the value of the 'proxy_url' parameter: */
494
528
  opt = rb_hash_aref(opts, PROXY_URL_SYMBOL);
495
- ptr->proxy_url = ov_string_dup(opt);
529
+ if (NIL_P(opt)) {
530
+ ptr->proxy_url = NULL;
531
+ }
532
+ else {
533
+ Check_Type(opt, T_STRING);
534
+ ptr->proxy_url = ov_string_dup(opt);
535
+ }
496
536
 
497
537
  /* Get the value of the 'proxy_username' parameter: */
498
538
  opt = rb_hash_aref(opts, PROXY_USERNAME_SYMBOL);
499
- ptr->proxy_username = ov_string_dup(opt);
539
+ if (NIL_P(opt)) {
540
+ ptr->proxy_username = NULL;
541
+ }
542
+ else {
543
+ Check_Type(opt, T_STRING);
544
+ ptr->proxy_username = ov_string_dup(opt);
545
+ }
500
546
 
501
547
  /* Get the value of the 'proxy_password' parameter: */
502
548
  opt = rb_hash_aref(opts, PROXY_PASSWORD_SYMBOL);
503
- ptr->proxy_password = ov_string_dup(opt);
549
+ if (NIL_P(opt)) {
550
+ ptr->proxy_password = NULL;
551
+ }
552
+ else {
553
+ Check_Type(opt, T_STRING);
554
+ ptr->proxy_password = ov_string_dup(opt);
555
+ }
504
556
 
505
557
  /* Get the value of the 'log' parameter: */
506
558
  opt = rb_hash_aref(opts, LOG_SYMBOL);
@@ -526,6 +578,20 @@ static VALUE ov_http_client_initialize(int argc, VALUE* argv, VALUE self) {
526
578
  connections = NUM2LONG(opt);
527
579
  }
528
580
 
581
+ /* Get the value of the 'cookies' parameter. If it is a string it will be used as the path of the file where the
582
+ cookies will be stored. If it is any other thing it will be treated as a boolean flag indicating if cookies
583
+ should be enabled but not loaded/saved from/to any file. */
584
+ opt = rb_hash_aref(opts, COOKIES_SYMBOL);
585
+ if (TYPE(opt) == T_STRING) {
586
+ ptr->cookies = ov_string_dup(opt);
587
+ }
588
+ else if (RTEST(opt)) {
589
+ ptr->cookies = ov_string_dup(rb_str_new2(""));
590
+ }
591
+ else {
592
+ ptr->cookies = NULL;
593
+ }
594
+
529
595
  /* Create the hash that contains the transfers are pending an completed. Both use the identity of the request
530
596
  as key. */
531
597
  ptr->completed = rb_funcall(rb_hash_new(), COMPARE_BY_IDENTITY_ID, 0);
@@ -534,7 +600,16 @@ static VALUE ov_http_client_initialize(int argc, VALUE* argv, VALUE self) {
534
600
  /* Create the libcurl multi handle: */
535
601
  ptr->handle = curl_multi_init();
536
602
  if (ptr->handle == NULL) {
537
- rb_raise(ov_error_class, "Can't create libcurl object");
603
+ rb_raise(ov_error_class, "Can't create libcurl multi object");
604
+ }
605
+
606
+ /* Create the libcurl share handle in order to share cookie data: */
607
+ ptr->share = curl_share_init();
608
+ if (ptr->share == NULL) {
609
+ rb_raise(ov_error_class, "Can't create libcurl share object");
610
+ }
611
+ if (ptr->cookies != NULL) {
612
+ curl_share_setopt(ptr->share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
538
613
  }
539
614
 
540
615
  /* Enable pipelining: */
@@ -722,6 +797,14 @@ static void ov_http_client_prepare_handle(ov_http_client_object* client_ptr, ov_
722
797
  VALUE header;
723
798
  VALUE url;
724
799
  int timeout;
800
+ int connect_timeout;
801
+
802
+ /* Configure sharing of cookies with other handlers created by the client: */
803
+ curl_easy_setopt(handle, CURLOPT_SHARE, client_ptr->share);
804
+ if (client_ptr->cookies != NULL && strlen(client_ptr->cookies) > 0) {
805
+ curl_easy_setopt(handle, CURLOPT_COOKIEFILE, client_ptr->cookies);
806
+ curl_easy_setopt(handle, CURLOPT_COOKIEJAR, client_ptr->cookies);
807
+ }
725
808
 
726
809
  /* Configure TLS parameters: */
727
810
  if (client_ptr->insecure) {
@@ -732,13 +815,20 @@ static void ov_http_client_prepare_handle(ov_http_client_object* client_ptr, ov_
732
815
  curl_easy_setopt(handle, CURLOPT_CAINFO, client_ptr->ca_file);
733
816
  }
734
817
 
735
- /* Configure the timeout: */
818
+ /* Configure the total timeout: */
736
819
  timeout = client_ptr->timeout;
737
820
  if (!NIL_P(request_ptr->timeout)) {
738
821
  timeout = NUM2INT(request_ptr->timeout);
739
822
  }
740
823
  curl_easy_setopt(handle, CURLOPT_TIMEOUT, timeout);
741
824
 
825
+ /* Configure the connect timeout: */
826
+ connect_timeout = client_ptr->connect_timeout;
827
+ if (!NIL_P(request_ptr->connect_timeout)) {
828
+ connect_timeout = NUM2INT(request_ptr->connect_timeout);
829
+ }
830
+ curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, connect_timeout);
831
+
742
832
  /* Configure compression of responses (setting the value to zero length string means accepting all the
743
833
  compression types that libcurl supports): */
744
834
  if (client_ptr->compress) {
@@ -941,19 +1031,20 @@ void ov_http_client_define(void) {
941
1031
  rb_define_method(ov_http_client_class, "wait", ov_http_client_wait, 1);
942
1032
 
943
1033
  /* Define the symbols: */
944
- CA_FILE_SYMBOL = ID2SYM(rb_intern("ca_file"));
945
- COMPRESS_SYMBOL = ID2SYM(rb_intern("compress"));
946
- CONNECTIONS_SYMBOL = ID2SYM(rb_intern("connections"));
947
- DEBUG_SYMBOL = ID2SYM(rb_intern("debug"));
948
- INSECURE_SYMBOL = ID2SYM(rb_intern("insecure"));
949
- LOG_SYMBOL = ID2SYM(rb_intern("log"));
950
- PASSWORD_SYMBOL = ID2SYM(rb_intern("password"));
951
- PIPELINE_SYMBOL = ID2SYM(rb_intern("pipeline"));
952
- PROXY_PASSWORD_SYMBOL = ID2SYM(rb_intern("proxy_password"));
953
- PROXY_URL_SYMBOL = ID2SYM(rb_intern("proxy_url"));
954
- PROXY_USERNAME_SYMBOL = ID2SYM(rb_intern("proxy_username"));
955
- TIMEOUT_SYMBOL = ID2SYM(rb_intern("timeout"));
956
- USERNAME_SYMBOL = ID2SYM(rb_intern("username"));
1034
+ CA_FILE_SYMBOL = ID2SYM(rb_intern("ca_file"));
1035
+ COMPRESS_SYMBOL = ID2SYM(rb_intern("compress"));
1036
+ CONNECTIONS_SYMBOL = ID2SYM(rb_intern("connections"));
1037
+ DEBUG_SYMBOL = ID2SYM(rb_intern("debug"));
1038
+ INSECURE_SYMBOL = ID2SYM(rb_intern("insecure"));
1039
+ LOG_SYMBOL = ID2SYM(rb_intern("log"));
1040
+ PASSWORD_SYMBOL = ID2SYM(rb_intern("password"));
1041
+ PIPELINE_SYMBOL = ID2SYM(rb_intern("pipeline"));
1042
+ PROXY_PASSWORD_SYMBOL = ID2SYM(rb_intern("proxy_password"));
1043
+ PROXY_URL_SYMBOL = ID2SYM(rb_intern("proxy_url"));
1044
+ PROXY_USERNAME_SYMBOL = ID2SYM(rb_intern("proxy_username"));
1045
+ TIMEOUT_SYMBOL = ID2SYM(rb_intern("timeout"));
1046
+ CONNECT_TIMEOUT_SYMBOL = ID2SYM(rb_intern("connect_timeout"));
1047
+ COOKIES_SYMBOL = ID2SYM(rb_intern("cookies"));
957
1048
 
958
1049
  /* Define the method identifiers: */
959
1050
  COMPARE_BY_IDENTITY_ID = rb_intern("compare_by_identity");
@@ -28,9 +28,12 @@ extern VALUE ov_http_client_class;
28
28
 
29
29
  /* Content: */
30
30
  typedef struct {
31
- /* The libcurl multi handle: */
31
+ /* The libcurl multi handle, used to implement multiple simultaneous requests: */
32
32
  CURLM* handle;
33
33
 
34
+ /* The libcurl share handle, used to share cookie data between multiple requests: */
35
+ CURLSH* share;
36
+
34
37
  /* The logger: */
35
38
  VALUE log;
36
39
 
@@ -51,6 +54,8 @@ typedef struct {
51
54
  char* proxy_username;
52
55
  char* proxy_password;
53
56
  int timeout;
57
+ int connect_timeout;
58
+ char* cookies;
54
59
  } ov_http_client_object;
55
60
 
56
61
  /* Macro to get the pointer: */
@@ -40,6 +40,7 @@ static VALUE TOKEN_SYMBOL;
40
40
  static VALUE KERBEROS_SYMBOL;
41
41
  static VALUE BODY_SYMBOL;
42
42
  static VALUE TIMEOUT_SYMBOL;
43
+ static VALUE CONNECT_TIMEOUT_SYMBOL;
43
44
 
44
45
  static void ov_http_request_mark(void* vptr) {
45
46
  ov_http_request_object* ptr;
@@ -55,6 +56,7 @@ static void ov_http_request_mark(void* vptr) {
55
56
  rb_gc_mark(ptr->kerberos);
56
57
  rb_gc_mark(ptr->body);
57
58
  rb_gc_mark(ptr->timeout);
59
+ rb_gc_mark(ptr->connect_timeout);
58
60
  }
59
61
 
60
62
  static void ov_http_request_free(void* vptr) {
@@ -83,16 +85,17 @@ static VALUE ov_http_request_alloc(VALUE klass) {
83
85
  ov_http_request_object* ptr;
84
86
 
85
87
  ptr = ALLOC(ov_http_request_object);
86
- ptr->method = Qnil;
87
- ptr->url = Qnil;
88
- ptr->query = Qnil;
89
- ptr->headers = Qnil;
90
- ptr->username = Qnil;
91
- ptr->password = Qnil;
92
- ptr->token = Qnil;
93
- ptr->kerberos = Qnil;
94
- ptr->body = Qnil;
95
- ptr->timeout = Qnil;
88
+ ptr->method = Qnil;
89
+ ptr->url = Qnil;
90
+ ptr->query = Qnil;
91
+ ptr->headers = Qnil;
92
+ ptr->username = Qnil;
93
+ ptr->password = Qnil;
94
+ ptr->token = Qnil;
95
+ ptr->kerberos = Qnil;
96
+ ptr->body = Qnil;
97
+ ptr->timeout = Qnil;
98
+ ptr->connect_timeout = Qnil;
96
99
  return TypedData_Wrap_Struct(klass, &ov_http_request_type, ptr);
97
100
  }
98
101
 
@@ -279,6 +282,24 @@ static VALUE ov_http_request_set_timeout(VALUE self, VALUE value) {
279
282
  return Qnil;
280
283
  }
281
284
 
285
+ static VALUE ov_http_request_get_connect_timeout(VALUE self) {
286
+ ov_http_request_object* ptr;
287
+
288
+ ov_http_request_ptr(self, ptr);
289
+ return ptr->connect_timeout;
290
+ }
291
+
292
+ static VALUE ov_http_request_set_connect_timeout(VALUE self, VALUE value) {
293
+ ov_http_request_object* ptr;
294
+
295
+ ov_http_request_ptr(self, ptr);
296
+ if (!NIL_P(value)) {
297
+ Check_Type(value, T_FIXNUM);
298
+ }
299
+ ptr->connect_timeout = value;
300
+ return Qnil;
301
+ }
302
+
282
303
  static VALUE ov_http_request_initialize(int argc, VALUE* argv, VALUE self) {
283
304
  VALUE opts;
284
305
 
@@ -304,6 +325,7 @@ static VALUE ov_http_request_initialize(int argc, VALUE* argv, VALUE self) {
304
325
  ov_http_request_set_token(self, rb_hash_aref(opts, TOKEN_SYMBOL));
305
326
  ov_http_request_set_body(self, rb_hash_aref(opts, BODY_SYMBOL));
306
327
  ov_http_request_set_timeout(self, rb_hash_aref(opts, TIMEOUT_SYMBOL));
328
+ ov_http_request_set_connect_timeout(self, rb_hash_aref(opts, CONNECT_TIMEOUT_SYMBOL));
307
329
 
308
330
  return self;
309
331
  }
@@ -317,38 +339,41 @@ void ov_http_request_define(void) {
317
339
  rb_define_method(ov_http_request_class, "initialize", ov_http_request_initialize, -1);
318
340
 
319
341
  /* Define the methods: */
320
- rb_define_method(ov_http_request_class, "method", ov_http_request_get_method, 0);
321
- rb_define_method(ov_http_request_class, "method=", ov_http_request_set_method, 1);
322
- rb_define_method(ov_http_request_class, "url", ov_http_request_get_url, 0);
323
- rb_define_method(ov_http_request_class, "url=", ov_http_request_set_url, 1);
324
- rb_define_method(ov_http_request_class, "query", ov_http_request_get_query, 0);
325
- rb_define_method(ov_http_request_class, "query=", ov_http_request_set_query, 1);
326
- rb_define_method(ov_http_request_class, "headers", ov_http_request_get_headers, 0);
327
- rb_define_method(ov_http_request_class, "headers=", ov_http_request_set_headers, 1);
328
- rb_define_method(ov_http_request_class, "username", ov_http_request_get_username, 0);
329
- rb_define_method(ov_http_request_class, "username=", ov_http_request_set_username, 1);
330
- rb_define_method(ov_http_request_class, "password", ov_http_request_get_password, 0);
331
- rb_define_method(ov_http_request_class, "password=", ov_http_request_set_password, 1);
332
- rb_define_method(ov_http_request_class, "token", ov_http_request_get_token, 0);
333
- rb_define_method(ov_http_request_class, "token=", ov_http_request_set_token, 1);
334
- rb_define_method(ov_http_request_class, "kerberos", ov_http_request_get_kerberos, 0);
335
- rb_define_method(ov_http_request_class, "kerberos=", ov_http_request_set_kerberos, 1);
336
- rb_define_method(ov_http_request_class, "body", ov_http_request_get_body, 0);
337
- rb_define_method(ov_http_request_class, "body=", ov_http_request_set_body, 1);
338
- rb_define_method(ov_http_request_class, "timeout", ov_http_request_get_timeout, 0);
339
- rb_define_method(ov_http_request_class, "timeout=", ov_http_request_set_timeout, 1);
342
+ rb_define_method(ov_http_request_class, "method", ov_http_request_get_method, 0);
343
+ rb_define_method(ov_http_request_class, "method=", ov_http_request_set_method, 1);
344
+ rb_define_method(ov_http_request_class, "url", ov_http_request_get_url, 0);
345
+ rb_define_method(ov_http_request_class, "url=", ov_http_request_set_url, 1);
346
+ rb_define_method(ov_http_request_class, "query", ov_http_request_get_query, 0);
347
+ rb_define_method(ov_http_request_class, "query=", ov_http_request_set_query, 1);
348
+ rb_define_method(ov_http_request_class, "headers", ov_http_request_get_headers, 0);
349
+ rb_define_method(ov_http_request_class, "headers=", ov_http_request_set_headers, 1);
350
+ rb_define_method(ov_http_request_class, "username", ov_http_request_get_username, 0);
351
+ rb_define_method(ov_http_request_class, "username=", ov_http_request_set_username, 1);
352
+ rb_define_method(ov_http_request_class, "password", ov_http_request_get_password, 0);
353
+ rb_define_method(ov_http_request_class, "password=", ov_http_request_set_password, 1);
354
+ rb_define_method(ov_http_request_class, "token", ov_http_request_get_token, 0);
355
+ rb_define_method(ov_http_request_class, "token=", ov_http_request_set_token, 1);
356
+ rb_define_method(ov_http_request_class, "kerberos", ov_http_request_get_kerberos, 0);
357
+ rb_define_method(ov_http_request_class, "kerberos=", ov_http_request_set_kerberos, 1);
358
+ rb_define_method(ov_http_request_class, "body", ov_http_request_get_body, 0);
359
+ rb_define_method(ov_http_request_class, "body=", ov_http_request_set_body, 1);
360
+ rb_define_method(ov_http_request_class, "timeout", ov_http_request_get_timeout, 0);
361
+ rb_define_method(ov_http_request_class, "timeout=", ov_http_request_set_timeout, 1);
362
+ rb_define_method(ov_http_request_class, "connect_timeout", ov_http_request_get_connect_timeout, 0);
363
+ rb_define_method(ov_http_request_class, "connect_timeout=", ov_http_request_set_connect_timeout, 1);
340
364
 
341
365
  /* Define the symbols for the attributes: */
342
- URL_SYMBOL = ID2SYM(rb_intern("url"));
343
- METHOD_SYMBOL = ID2SYM(rb_intern("method"));
344
- QUERY_SYMBOL = ID2SYM(rb_intern("query"));
345
- HEADERS_SYMBOL = ID2SYM(rb_intern("headers"));
346
- USERNAME_SYMBOL = ID2SYM(rb_intern("username"));
347
- PASSWORD_SYMBOL = ID2SYM(rb_intern("password"));
348
- TOKEN_SYMBOL = ID2SYM(rb_intern("token"));
349
- KERBEROS_SYMBOL = ID2SYM(rb_intern("kerberos"));
350
- BODY_SYMBOL = ID2SYM(rb_intern("body"));
351
- TIMEOUT_SYMBOL = ID2SYM(rb_intern("timeout"));
366
+ URL_SYMBOL = ID2SYM(rb_intern("url"));
367
+ METHOD_SYMBOL = ID2SYM(rb_intern("method"));
368
+ QUERY_SYMBOL = ID2SYM(rb_intern("query"));
369
+ HEADERS_SYMBOL = ID2SYM(rb_intern("headers"));
370
+ USERNAME_SYMBOL = ID2SYM(rb_intern("username"));
371
+ PASSWORD_SYMBOL = ID2SYM(rb_intern("password"));
372
+ TOKEN_SYMBOL = ID2SYM(rb_intern("token"));
373
+ KERBEROS_SYMBOL = ID2SYM(rb_intern("kerberos"));
374
+ BODY_SYMBOL = ID2SYM(rb_intern("body"));
375
+ TIMEOUT_SYMBOL = ID2SYM(rb_intern("timeout"));
376
+ CONNECT_TIMEOUT_SYMBOL = ID2SYM(rb_intern("connect_timeout"));
352
377
 
353
378
  /* Define the symbols for the HTTP methods: */
354
379
  GET_SYMBOL = ID2SYM(rb_intern("GET"));
@@ -31,16 +31,17 @@ extern VALUE DELETE_SYMBOL;
31
31
 
32
32
  /* Content: */
33
33
  typedef struct {
34
- VALUE method; /* Symbol */
35
- VALUE url; /* String */
36
- VALUE query; /* Hash<String, String> */
37
- VALUE headers; /* Hash<String, String> */
38
- VALUE username; /* String */
39
- VALUE password; /* String */
40
- VALUE token; /* String */
41
- VALUE kerberos; /* Boolean */
42
- VALUE body; /* String */
43
- VALUE timeout; /* Integer */
34
+ VALUE method; /* Symbol */
35
+ VALUE url; /* String */
36
+ VALUE query; /* Hash<String, String> */
37
+ VALUE headers; /* Hash<String, String> */
38
+ VALUE username; /* String */
39
+ VALUE password; /* String */
40
+ VALUE token; /* String */
41
+ VALUE kerberos; /* Boolean */
42
+ VALUE body; /* String */
43
+ VALUE timeout; /* Integer */
44
+ VALUE connect_timeout; /* Integer */
44
45
  } ov_http_request_object;
45
46
 
46
47
  /* Macro to get the pointer: */
@@ -75,8 +75,11 @@ module OvirtSDK4
75
75
  # instead of user name and password to obtain the OAuth token.
76
76
  #
77
77
  # @option opts [Integer] :timeout (0) The maximun total time to wait for the response, in seconds. A value of zero
78
- # (the default) means wait for ever. If the timeout expires before the response is received an exception will be
79
- # raised.
78
+ # (the default) means wait for ever. If the timeout expires before the response is received a `TimeoutError`
79
+ # exception will be raised.
80
+ #
81
+ # @option opts [Integer] :connect_timeout (300) The maximun time to wait for connection establishment, in seconds.
82
+ # If the timeout expires before the connection is established a `TimeoutError` exception will be raised.
80
83
  #
81
84
  # @option opts [Boolean] :compress (true) A boolean flag indicating if the SDK should ask the server to send
82
85
  # compressed responses. Note that this is a hint for the server, and that it may return uncompressed data even
@@ -117,6 +120,7 @@ module OvirtSDK4
117
120
  @log = opts[:log]
118
121
  @kerberos = opts[:kerberos] || false
119
122
  @timeout = opts[:timeout] || 0
123
+ @connect_timeout = opts[:connect_timeout] || 0
120
124
  @compress = opts[:compress] || true
121
125
  @proxy_url = opts[:proxy_url]
122
126
  @proxy_username = opts[:proxy_username]
@@ -156,6 +160,7 @@ module OvirtSDK4
156
160
  debug: @debug,
157
161
  log: @log,
158
162
  timeout: @timeout,
163
+ connect_timeout: @connect_timeout,
159
164
  compress: @compress,
160
165
  proxy_url: @proxy_url,
161
166
  proxy_username: @proxy_username,
@@ -1103,8 +1103,13 @@ module OvirtSDK4
1103
1103
  # ----
1104
1104
  # <affinity_group>
1105
1105
  # <name>AF_GROUP_001</name>
1106
- # <positive>true</positive>
1107
- # <enforcing>true</enforcing>
1106
+ # <hosts_rule>
1107
+ # <enforcing>true</enforcing>
1108
+ # <positive>true</positive>
1109
+ # </hosts_rule>
1110
+ # <vms_rule>
1111
+ # <enabled>false</enabled>
1112
+ # </vms_rule>
1108
1113
  # </affinity_group>
1109
1114
  # ----
1110
1115
  #
@@ -11582,7 +11587,7 @@ module OvirtSDK4
11582
11587
  # Retrieves the list of image transfers that are currently
11583
11588
  # being performed.
11584
11589
  #
11585
- # The order of the returned list of image transfers isn't guaranteed.
11590
+ # The order of the returned list of image transfers is not guaranteed.
11586
11591
  #
11587
11592
  # @param opts [Hash] Additional options.
11588
11593
  #
@@ -17764,7 +17769,40 @@ module OvirtSDK4
17764
17769
  private_constant :ADD
17765
17770
 
17766
17771
  #
17767
- # Adds a new `limit`.
17772
+ # Adds a storage limit to a specified quota.
17773
+ #
17774
+ # To create a 100GiB storage limit for all storage domains in a data center, send a request like this:
17775
+ #
17776
+ # [source]
17777
+ # ----
17778
+ # POST /ovirt-engine/api/datacenters/123/quotas/456/quotastoragelimits
17779
+ # ----
17780
+ #
17781
+ # With a request body like this:
17782
+ #
17783
+ # [source,xml]
17784
+ # ----
17785
+ # <quota_storage_limit>
17786
+ # <limit>100</limit>
17787
+ # </quota_storage_limit>
17788
+ # ----
17789
+ #
17790
+ # To create a 50GiB storage limit for a storage domain with the ID `000`, send a request like this:
17791
+ #
17792
+ # [source]
17793
+ # ----
17794
+ # POST /ovirt-engine/api/datacenters/123/quotas/456/quotastoragelimits
17795
+ # ----
17796
+ #
17797
+ # With a request body like this:
17798
+ #
17799
+ # [source,xml]
17800
+ # ----
17801
+ # <quota_storage_limit>
17802
+ # <limit>50</limit>
17803
+ # <storage_domain id="000"/>
17804
+ # </quota_storage_limit>
17805
+ # ----
17768
17806
  #
17769
17807
  # @param limit [QuotaStorageLimit] The `limit` to add.
17770
17808
  #
@@ -17794,11 +17832,11 @@ module OvirtSDK4
17794
17832
  #
17795
17833
  # Returns the list of storage limits configured for the quota.
17796
17834
  #
17797
- # The order of the returned list of storage limits isn't guaranteed.
17835
+ # The order of the returned list of storage limits is not guaranteed.
17798
17836
  #
17799
17837
  # @param opts [Hash] Additional options.
17800
17838
  #
17801
- # @option opts [Integer] :max Sets the maximum number of limits to return. If not specified all the limits are returned.
17839
+ # @option opts [Integer] :max Sets the maximum number of limits to return. If not specified, all the limits are returned.
17802
17840
  #
17803
17841
  # @option opts [Hash] :headers ({}) Additional HTTP headers.
17804
17842
  #
@@ -20212,7 +20250,9 @@ module OvirtSDK4
20212
20250
  end
20213
20251
 
20214
20252
  #
20215
- # Executes the `is_attached` method.
20253
+ # Used for querying if the storage domain is already attached to a data center using
20254
+ # the is_attached boolean field, which is part of the storage server. IMPORTANT:
20255
+ # Executing this API will cause the host to disconnect from the storage domain.
20216
20256
  #
20217
20257
  # @param opts [Hash] Additional options.
20218
20258
  #
@@ -20265,7 +20305,7 @@ module OvirtSDK4
20265
20305
  #
20266
20306
  # @param opts [Hash] Additional options.
20267
20307
  #
20268
- # @option opts [Array<LogicalUnit>] :logical_units The logical units that needs to be reduced from the storage domain.
20308
+ # @option opts [Array<LogicalUnit>] :logical_units The logical units that need to be reduced from the storage domain.
20269
20309
  #
20270
20310
  # @option opts [Hash] :headers ({}) Additional HTTP headers.
20271
20311
  #
@@ -20286,7 +20326,7 @@ module OvirtSDK4
20286
20326
  # After increasing the size of the underlying LUN on the storage server,
20287
20327
  # the user can refresh the LUN size.
20288
20328
  # This action forces a rescan of the provided LUNs and
20289
- # updates the database with the new size if required.
20329
+ # updates the database with the new size, if required.
20290
20330
  #
20291
20331
  # For example, in order to refresh the size of two LUNs send a request like this:
20292
20332
  #
@@ -20339,20 +20379,20 @@ module OvirtSDK4
20339
20379
  # Removes the storage domain.
20340
20380
  #
20341
20381
  # Without any special parameters, the storage domain is detached from the system and removed from the database. The
20342
- # storage domain can then be imported to the same or different setup, with all the data on it. If the storage isn't
20343
- # accessible the operation will fail.
20382
+ # storage domain can then be imported to the same or to a different setup, with all the data on it. If the storage is
20383
+ # not accessible the operation will fail.
20344
20384
  #
20345
- # If the `destroy` parameter is `true` then the operation will always succeed, even if the storage isn't
20385
+ # If the `destroy` parameter is `true` then the operation will always succeed, even if the storage is not
20346
20386
  # accessible, the failure is just ignored and the storage domain is removed from the database anyway.
20347
20387
  #
20348
20388
  # If the `format` parameter is `true` then the actual storage is formatted, and the metadata is removed from the
20349
- # LUN or directory, so it can no longer be imported to the same or a different setup.
20389
+ # LUN or directory, so it can no longer be imported to the same or to a different setup.
20350
20390
  #
20351
20391
  # @param opts [Hash] Additional options.
20352
20392
  #
20353
20393
  # @option opts [Boolean] :async Indicates if the remove should be performed asynchronously.
20354
20394
  # @option opts [Boolean] :destroy Indicates if the operation should succeed, and the storage domain removed from the database, even if the
20355
- # storage isn't accessible.
20395
+ # storage is not accessible.
20356
20396
  #
20357
20397
  # [source]
20358
20398
  # ----
@@ -20360,6 +20400,7 @@ module OvirtSDK4
20360
20400
  # ----
20361
20401
  #
20362
20402
  # This parameter is optional, and the default value is `false`.
20403
+ # When the value of `destroy` is `true` the `host` parameter will be ignored.
20363
20404
  # @option opts [Boolean] :format Indicates if the actual storage should be formatted, removing all the metadata from the underlying LUN or
20364
20405
  # directory:
20365
20406
  #
@@ -20369,10 +20410,13 @@ module OvirtSDK4
20369
20410
  # ----
20370
20411
  #
20371
20412
  # This parameter is optional, and the default value is `false`.
20372
- # @option opts [String] :host Indicates what host should be used to remove the storage domain.
20413
+ # @option opts [String] :host Indicates which host should be used to remove the storage domain.
20373
20414
  #
20374
- # This parameter is mandatory, and it can contain the name or the identifier of the host. For example, to use
20375
- # the host named `myhost` to remove the storage domain with identifier `123` send a request like this:
20415
+ # This parameter is mandatory, except if the `destroy` parameter is included and its value is `true`, in that
20416
+ # case the `host` parameter will be ignored.
20417
+ #
20418
+ # The value should contain the name or the identifier of the host. For example, to use the host named `myhost`
20419
+ # to remove the storage domain with identifier `123` send a request like this:
20376
20420
  #
20377
20421
  # [source]
20378
20422
  # ----
@@ -20400,9 +20444,9 @@ module OvirtSDK4
20400
20444
  #
20401
20445
  # Updates a storage domain.
20402
20446
  #
20403
- # Not all of the <<types/storage_domain,StorageDomain>>'s attributes are updatable post-creation. Those that can be
20447
+ # Not all of the <<types/storage_domain,StorageDomain>>'s attributes are updatable after creation. Those that can be
20404
20448
  # updated are: `name`, `description`, `comment`, `warning_low_space_indicator`, `critical_space_action_blocker` and
20405
- # `wipe_after_delete` (note that changing the `wipe_after_delete` attribute will not change the wipe after delete
20449
+ # `wipe_after_delete.` (Note that changing the `wipe_after_delete` attribute will not change the wipe after delete
20406
20450
  # property of disks that already exist).
20407
20451
  #
20408
20452
  # To update the `name` and `wipe_after_delete` attributes of a storage domain with an identifier `123`, send a
@@ -20447,9 +20491,9 @@ module OvirtSDK4
20447
20491
  # This operation forces the update of the `OVF_STORE`
20448
20492
  # of this storage domain.
20449
20493
  #
20450
- # The `OVF_STORE` is a disk image that contains the meta-data
20494
+ # The `OVF_STORE` is a disk image that contains the metadata
20451
20495
  # of virtual machines and disks that reside in the
20452
- # storage domain. This meta-data is used in case the
20496
+ # storage domain. This metadata is used in case the
20453
20497
  # domain is imported or exported to or from a different
20454
20498
  # data center or a different installation.
20455
20499
  #
@@ -20497,7 +20541,7 @@ module OvirtSDK4
20497
20541
  end
20498
20542
 
20499
20543
  #
20500
- # Locates the `disks` service.
20544
+ # Reference to the service that manages the disks available in the storage domain.
20501
20545
  #
20502
20546
  # @return [DisksService] A reference to `disks` service.
20503
20547
  #
@@ -32551,6 +32595,10 @@ module OvirtSDK4
32551
32595
  #
32552
32596
  # @option opts [Boolean] :async Indicates if the upgrade should be performed asynchronously.
32553
32597
  #
32598
+ # @option opts [String] :image The image parameter specifies path to image, which is used
32599
+ # for upgrade. This parameter is used only to upgrade Vintage
32600
+ # Node hosts and it's not relevant for other hosts types.
32601
+ #
32554
32602
  # @option opts [Hash] :headers ({}) Additional HTTP headers.
32555
32603
  #
32556
32604
  # @option opts [Hash] :query ({}) Additional URL query parameters.
@@ -16,5 +16,5 @@
16
16
 
17
17
 
18
18
  module OvirtSDK4
19
- VERSION = '4.1.9'.freeze
19
+ VERSION = '4.1.10'.freeze
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ovirt-engine-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.9
4
+ version: 4.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Hernandez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-13 00:00:00.000000000 Z
11
+ date: 2017-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake