ovirt-engine-sdk 4.1.8 → 4.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2012,6 +2012,8 @@ module OvirtSDK4
2012
2012
  object.cpu_profiles = CpuProfileReader.read_many(reader)
2013
2013
  when 'data_center'
2014
2014
  object.data_center = DataCenterReader.read_one(reader)
2015
+ when 'enabled_features'
2016
+ object.enabled_features = ClusterFeatureReader.read_many(reader)
2015
2017
  when 'gluster_hooks'
2016
2018
  object.gluster_hooks = GlusterHookReader.read_many(reader)
2017
2019
  when 'gluster_volumes'
@@ -2078,6 +2080,8 @@ module OvirtSDK4
2078
2080
  object.affinity_groups = list
2079
2081
  when 'cpuprofiles'
2080
2082
  object.cpu_profiles = list
2083
+ when 'enabledfeatures'
2084
+ object.enabled_features = list
2081
2085
  when 'glusterhooks'
2082
2086
  object.gluster_hooks = list
2083
2087
  when 'glustervolumes'
@@ -2097,6 +2101,82 @@ module OvirtSDK4
2097
2101
 
2098
2102
  end
2099
2103
 
2104
+ class ClusterFeatureReader < Reader
2105
+
2106
+ def self.read_one(reader)
2107
+ # Do nothing if there aren't more tags:
2108
+ return nil unless reader.forward
2109
+
2110
+ # Create the object:
2111
+ object = ClusterFeature.new
2112
+
2113
+ # Process the attributes:
2114
+ object.href = reader.get_attribute('href')
2115
+ value = reader.get_attribute('comment')
2116
+ object.comment = value if not value.nil?
2117
+ value = reader.get_attribute('description')
2118
+ object.description = value if not value.nil?
2119
+ value = reader.get_attribute('id')
2120
+ object.id = value if not value.nil?
2121
+ value = reader.get_attribute('name')
2122
+ object.name = value if not value.nil?
2123
+
2124
+ # Discard the start tag:
2125
+ empty = reader.empty_element?
2126
+ reader.read
2127
+ return object if empty
2128
+
2129
+ # Process the inner elements:
2130
+ while reader.forward do
2131
+ case reader.node_name
2132
+ when 'comment'
2133
+ object.comment = Reader.read_string(reader)
2134
+ when 'description'
2135
+ object.description = Reader.read_string(reader)
2136
+ when 'id'
2137
+ object.id = Reader.read_string(reader)
2138
+ when 'name'
2139
+ object.name = Reader.read_string(reader)
2140
+ when 'cluster_level'
2141
+ object.cluster_level = ClusterLevelReader.read_one(reader)
2142
+ else
2143
+ reader.next_element
2144
+ end
2145
+ end
2146
+
2147
+ # Discard the end tag:
2148
+ reader.read
2149
+
2150
+ return object
2151
+ end
2152
+
2153
+
2154
+ def self.read_many(reader)
2155
+ # Do nothing if there aren't more tags:
2156
+ list = List.new
2157
+ return list unless reader.forward
2158
+
2159
+ # Process the attributes:
2160
+ list.href = reader.get_attribute('href')
2161
+
2162
+ # Discard the start tag:
2163
+ empty = reader.empty_element?
2164
+ reader.read
2165
+ return list if empty
2166
+
2167
+ # Process the inner elements:
2168
+ while reader.forward do
2169
+ list << read_one(reader)
2170
+ end
2171
+
2172
+ # Discard the end tag:
2173
+ reader.read
2174
+
2175
+ return list
2176
+ end
2177
+
2178
+ end
2179
+
2100
2180
  class ClusterLevelReader < Reader
2101
2181
 
2102
2182
  def self.read_one(reader)
@@ -2137,6 +2217,10 @@ module OvirtSDK4
2137
2217
  object.name = Reader.read_string(reader)
2138
2218
  when 'permits'
2139
2219
  object.permits = PermitReader.read_many(reader)
2220
+ when 'cluster_features'
2221
+ object.cluster_features = ClusterFeatureReader.read_many(reader)
2222
+ when 'link'
2223
+ read_link(reader, object)
2140
2224
  else
2141
2225
  reader.next_element
2142
2226
  end
@@ -2173,6 +2257,23 @@ module OvirtSDK4
2173
2257
  return list
2174
2258
  end
2175
2259
 
2260
+ def self.read_link(reader, object)
2261
+ # Process the attributes:
2262
+ rel = reader.get_attribute('rel')
2263
+ href = reader.get_attribute('href')
2264
+ if rel && href
2265
+ list = List.new
2266
+ list.href = href
2267
+ case rel
2268
+ when 'clusterfeatures'
2269
+ object.cluster_features = list
2270
+ end
2271
+ end
2272
+
2273
+ # Discard the rest of the element:
2274
+ reader.next_element
2275
+ end
2276
+
2176
2277
  end
2177
2278
 
2178
2279
  class ConfigurationReader < Reader
@@ -9243,6 +9344,94 @@ module OvirtSDK4
9243
9344
 
9244
9345
  end
9245
9346
 
9347
+ class LinkLayerDiscoveryProtocolElementReader < Reader
9348
+
9349
+ def self.read_one(reader)
9350
+ # Do nothing if there aren't more tags:
9351
+ return nil unless reader.forward
9352
+
9353
+ # Create the object:
9354
+ object = LinkLayerDiscoveryProtocolElement.new
9355
+
9356
+ # Process the attributes:
9357
+ object.href = reader.get_attribute('href')
9358
+ value = reader.get_attribute('comment')
9359
+ object.comment = value if not value.nil?
9360
+ value = reader.get_attribute('description')
9361
+ object.description = value if not value.nil?
9362
+ value = reader.get_attribute('id')
9363
+ object.id = value if not value.nil?
9364
+ value = reader.get_attribute('name')
9365
+ object.name = value if not value.nil?
9366
+ value = reader.get_attribute('oui')
9367
+ object.oui = value if not value.nil?
9368
+ value = reader.get_attribute('subtype')
9369
+ object.subtype = value if not value.nil?
9370
+ value = reader.get_attribute('type')
9371
+ object.type = value if not value.nil?
9372
+
9373
+ # Discard the start tag:
9374
+ empty = reader.empty_element?
9375
+ reader.read
9376
+ return object if empty
9377
+
9378
+ # Process the inner elements:
9379
+ while reader.forward do
9380
+ case reader.node_name
9381
+ when 'comment'
9382
+ object.comment = Reader.read_string(reader)
9383
+ when 'description'
9384
+ object.description = Reader.read_string(reader)
9385
+ when 'id'
9386
+ object.id = Reader.read_string(reader)
9387
+ when 'name'
9388
+ object.name = Reader.read_string(reader)
9389
+ when 'oui'
9390
+ object.oui = Reader.read_integer(reader)
9391
+ when 'properties'
9392
+ object.properties = PropertyReader.read_many(reader)
9393
+ when 'subtype'
9394
+ object.subtype = Reader.read_integer(reader)
9395
+ when 'type'
9396
+ object.type = Reader.read_integer(reader)
9397
+ else
9398
+ reader.next_element
9399
+ end
9400
+ end
9401
+
9402
+ # Discard the end tag:
9403
+ reader.read
9404
+
9405
+ return object
9406
+ end
9407
+
9408
+
9409
+ def self.read_many(reader)
9410
+ # Do nothing if there aren't more tags:
9411
+ list = List.new
9412
+ return list unless reader.forward
9413
+
9414
+ # Process the attributes:
9415
+ list.href = reader.get_attribute('href')
9416
+
9417
+ # Discard the start tag:
9418
+ empty = reader.empty_element?
9419
+ reader.read
9420
+ return list if empty
9421
+
9422
+ # Process the inner elements:
9423
+ while reader.forward do
9424
+ list << read_one(reader)
9425
+ end
9426
+
9427
+ # Discard the end tag:
9428
+ reader.read
9429
+
9430
+ return list
9431
+ end
9432
+
9433
+ end
9434
+
9246
9435
  class LogicalUnitReader < Reader
9247
9436
 
9248
9437
  def self.read_one(reader)
@@ -18468,6 +18657,8 @@ module OvirtSDK4
18468
18657
  Reader.register('cloud_inits', CloudInitReader.method(:read_many))
18469
18658
  Reader.register('cluster', ClusterReader.method(:read_one))
18470
18659
  Reader.register('clusters', ClusterReader.method(:read_many))
18660
+ Reader.register('cluster_feature', ClusterFeatureReader.method(:read_one))
18661
+ Reader.register('cluster_features', ClusterFeatureReader.method(:read_many))
18471
18662
  Reader.register('cluster_level', ClusterLevelReader.method(:read_one))
18472
18663
  Reader.register('cluster_levels', ClusterLevelReader.method(:read_many))
18473
18664
  Reader.register('configuration', ConfigurationReader.method(:read_one))
@@ -18616,6 +18807,8 @@ module OvirtSDK4
18616
18807
  Reader.register('kernels', KernelReader.method(:read_many))
18617
18808
  Reader.register('ksm', KsmReader.method(:read_one))
18618
18809
  Reader.register('ksms', KsmReader.method(:read_many))
18810
+ Reader.register('link_layer_discovery_protocol_element', LinkLayerDiscoveryProtocolElementReader.method(:read_one))
18811
+ Reader.register('link_layer_discovery_protocol_elements', LinkLayerDiscoveryProtocolElementReader.method(:read_many))
18619
18812
  Reader.register('logical_unit', LogicalUnitReader.method(:read_one))
18620
18813
  Reader.register('logical_units', LogicalUnitReader.method(:read_many))
18621
18814
  Reader.register('mac', MacReader.method(:read_one))
@@ -22,15 +22,15 @@ module OvirtSDK4
22
22
  #
23
23
  # Creates a new future result.
24
24
  #
25
- # @param connection [Connection] The connection to be used by this future.
25
+ # @param service [Service] The service that created this future.
26
26
  # @param request [HttpRequest] The request that this future will wait for when the `wait` method is called.
27
27
  # @param block [Block] The block that will be executed to check the response, and to convert its body into the
28
28
  # right type of object.
29
29
  #
30
30
  # @api private
31
31
  #
32
- def initialize(connection, request, &block)
33
- @connection = connection
32
+ def initialize(service, request, &block)
33
+ @service = service
34
34
  @request = request
35
35
  @block = block
36
36
  end
@@ -41,7 +41,7 @@ module OvirtSDK4
41
41
  # @return [Object] The result of the operation that created this future.
42
42
  #
43
43
  def wait
44
- response = @connection.wait(@request)
44
+ response = @service.connection.wait(@request)
45
45
  raise response if response.is_a?(Exception)
46
46
  @block.call(response)
47
47
  end
@@ -54,14 +54,18 @@ module OvirtSDK4
54
54
  #
55
55
  # Creates a new implementation of the service.
56
56
  #
57
- # @param connection [Connection] The connection to be used by this service.
57
+ # @param parent [Service, Connection] The parent of this service. For most services the parent will be another
58
+ # service. For example, for the `vm` service that manages virtual machine `123` the parent will be the `vms`
59
+ # service that manages the collection of virtual machines. For the root of the services tree the parent will
60
+ # be the connection.
58
61
  #
59
- # @param path [String] The relative path of this service, for example `vms/123/disks`.
62
+ # @param path [String] The path of this service, relative to its parent. For example, the path of the `vm`
63
+ # service that manages virtual machine `123` will be `vm/123`.
60
64
  #
61
65
  # @api private
62
66
  #
63
- def initialize(connection, path)
64
- @connection = connection
67
+ def initialize(parent, path)
68
+ @parent = parent
65
69
  @path = path
66
70
  end
67
71
 
@@ -75,7 +79,7 @@ module OvirtSDK4
75
79
  #
76
80
  def check_fault(response)
77
81
  body = internal_read_body(response)
78
- @connection.raise_error(response, body) if body.is_a?(Fault)
82
+ connection.raise_error(response, body) if body.is_a?(Fault)
79
83
  raise Error, "Expected a fault, but got '#{body.class.name.split('::').last}'"
80
84
  end
81
85
 
@@ -91,14 +95,29 @@ module OvirtSDK4
91
95
  #
92
96
  def check_action(response)
93
97
  body = internal_read_body(response)
94
- @connection.raise_error(response, body) if body.is_a?(Fault)
98
+ connection.raise_error(response, body) if body.is_a?(Fault)
95
99
  if body.is_a?(Action)
96
100
  return body if body.fault.nil?
97
- @connection.raise_error(response, body.fault)
101
+ connection.raise_error(response, body.fault)
98
102
  end
99
103
  raise Error, "Expected an action or a fault, but got '#{body.class.name.split('::').last}'"
100
104
  end
101
105
 
106
+ #
107
+ # Returns the connection used by this service.
108
+ #
109
+ # This method is intended for internal use by other components of the SDK. Refrain from using it directly, as
110
+ # backwards compatibility isn't guaranteed.
111
+ #
112
+ # @return [Connection] The connection used by this service.
113
+ #
114
+ # @api private
115
+ #
116
+ def connection
117
+ return @parent if @parent.is_a? Connection
118
+ @parent.connection
119
+ end
120
+
102
121
  protected
103
122
 
104
123
  #
@@ -122,12 +141,12 @@ module OvirtSDK4
122
141
  end
123
142
  request = HttpRequest.new
124
143
  request.method = :GET
125
- request.url = @path
144
+ request.url = absolute_path
126
145
  request.headers = headers
127
146
  request.query = query
128
147
  request.timeout = timeout
129
- @connection.send(request)
130
- result = Future.new(@connection, request) do |response|
148
+ connection.send(request)
149
+ result = Future.new(self, request) do |response|
131
150
  raise response if response.is_a?(Exception)
132
151
  case response.code
133
152
  when 200
@@ -164,13 +183,13 @@ module OvirtSDK4
164
183
  end
165
184
  request = HttpRequest.new
166
185
  request.method = :POST
167
- request.url = @path
186
+ request.url = absolute_path
168
187
  request.headers = headers
169
188
  request.query = query
170
189
  request.body = Writer.write(object, indent: true)
171
190
  request.timeout = timeout
172
- @connection.send(request)
173
- result = Future.new(@connection, request) do |response|
191
+ connection.send(request)
192
+ result = Future.new(self, request) do |response|
174
193
  raise response if response.is_a?(Exception)
175
194
  case response.code
176
195
  when 200, 201, 202
@@ -207,13 +226,13 @@ module OvirtSDK4
207
226
  end
208
227
  request = HttpRequest.new
209
228
  request.method = :PUT
210
- request.url = @path
229
+ request.url = absolute_path
211
230
  request.headers = headers
212
231
  request.query = query
213
232
  request.body = Writer.write(object, indent: true)
214
233
  request.timeout = timeout
215
- @connection.send(request)
216
- result = Future.new(@connection, request) do |response|
234
+ connection.send(request)
235
+ result = Future.new(self, request) do |response|
217
236
  raise response if response.is_a?(Exception)
218
237
  case response.code
219
238
  when 200
@@ -247,12 +266,12 @@ module OvirtSDK4
247
266
  end
248
267
  request = HttpRequest.new
249
268
  request.method = :DELETE
250
- request.url = @path
269
+ request.url = absolute_path
251
270
  request.headers = headers
252
271
  request.query = query
253
272
  request.timeout = timeout
254
- @connection.send(request)
255
- result = Future.new(@connection, request) do |response|
273
+ connection.send(request)
274
+ result = Future.new(self, request) do |response|
256
275
  raise response if response.is_a?(exception)
257
276
  check_fault(response) unless response.code == 200
258
277
  end
@@ -263,14 +282,14 @@ module OvirtSDK4
263
282
  #
264
283
  # Executes an action method.
265
284
  #
266
- # @param path [Symbol] The relative path of the action, for example `:start`.
285
+ # @param name [Symbol] The name of the action, for example `:start`.
267
286
  # @param member [Symbol] The name of the action member that contains the result. For example `:is_attached`. Can
268
287
  # be `nil` if the action doesn't return any value.
269
288
  # @param opts [Hash] The hash containing the parameters of the action.
270
289
  #
271
290
  # @api private
272
291
  #
273
- def internal_action(path, member, opts)
292
+ def internal_action(name, member, opts)
274
293
  headers = opts[:headers] || {}
275
294
  query = opts[:query] || {}
276
295
  timeout = opts[:timeout]
@@ -279,13 +298,13 @@ module OvirtSDK4
279
298
  action = Action.new(opts)
280
299
  request = HttpRequest.new
281
300
  request.method = :POST
282
- request.url = "#{@path}/#{path}"
301
+ request.url = "#{absolute_path}/#{name}"
283
302
  request.headers = headers
284
303
  request.query = query
285
304
  request.body = Writer.write(action, indent: true)
286
305
  request.timeout = timeout
287
- @connection.send(request)
288
- result = Future.new(@connection, request) do |response|
306
+ connection.send(request)
307
+ result = Future.new(self, request) do |response|
289
308
  raise response if response.is_a?(Exception)
290
309
  case response.code
291
310
  when 200, 201, 202
@@ -311,14 +330,30 @@ module OvirtSDK4
311
330
  def internal_read_body(response)
312
331
  # First check if the response body is empty, as it makes no sense to check the content type if there is
313
332
  # no body:
314
- @connection.raise_error(response, nil) if response.body.nil? || response.body.length.zero?
333
+ connection.raise_error(response, nil) if response.body.nil? || response.body.length.zero?
315
334
 
316
335
  # Check the content type, as otherwise the parsing will fail, and the resulting error message won't be explicit
317
336
  # about the cause of the problem:
318
- @connection.check_xml_content_type(response)
337
+ connection.check_xml_content_type(response)
319
338
 
320
339
  # Parse the XML and generate the SDK object:
321
340
  Reader.read(response.body)
322
341
  end
342
+
343
+ #
344
+ # Returns the absolute path of this service.
345
+ #
346
+ # @return [String] The absolute path of this service. For example, the path of the `vm` service that manages
347
+ # virtual machine `123` will be `vms/123`. Note that this absolute path doesn't include the `/ovirt-engine/api/'
348
+ # prefix.
349
+ #
350
+ # @api private
351
+ #
352
+ def absolute_path
353
+ return @path if @parent.is_a? Connection
354
+ prefix = @parent.absolute_path
355
+ return @path if prefix.empty?
356
+ "#{prefix}/#{@path}"
357
+ end
323
358
  end
324
359
  end