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.
- checksums.yaml +4 -4
 - data/CHANGES.adoc +21 -0
 - data/README.adoc +47 -20
 - data/ext/ovirtsdk4c/ov_http_client.c +7 -3
 - data/lib/ovirtsdk4/connection.rb +91 -55
 - data/lib/ovirtsdk4/reader.rb +3 -3
 - data/lib/ovirtsdk4/readers.rb +193 -0
 - data/lib/ovirtsdk4/service.rb +65 -30
 - data/lib/ovirtsdk4/services.rb +1131 -559
 - data/lib/ovirtsdk4/types.rb +418 -0
 - data/lib/ovirtsdk4/version.rb +1 -1
 - data/lib/ovirtsdk4/writers.rb +69 -0
 - metadata +2 -2
 
    
        data/lib/ovirtsdk4/readers.rb
    CHANGED
    
    | 
         @@ -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))
         
     | 
    
        data/lib/ovirtsdk4/service.rb
    CHANGED
    
    | 
         @@ -22,15 +22,15 @@ module OvirtSDK4 
     | 
|
| 
       22 
22 
     | 
    
         
             
                #
         
     | 
| 
       23 
23 
     | 
    
         
             
                # Creates a new future result.
         
     | 
| 
       24 
24 
     | 
    
         
             
                #
         
     | 
| 
       25 
     | 
    
         
            -
                # @param  
     | 
| 
      
 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( 
     | 
| 
       33 
     | 
    
         
            -
                  @ 
     | 
| 
      
 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  
     | 
| 
      
 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  
     | 
| 
      
 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( 
     | 
| 
       64 
     | 
    
         
            -
                  @ 
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
      
 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 
     | 
    
         
            -
                     
     | 
| 
      
 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 =  
     | 
| 
      
 144 
     | 
    
         
            +
                  request.url = absolute_path
         
     | 
| 
       126 
145 
     | 
    
         
             
                  request.headers = headers
         
     | 
| 
       127 
146 
     | 
    
         
             
                  request.query = query
         
     | 
| 
       128 
147 
     | 
    
         
             
                  request.timeout = timeout
         
     | 
| 
       129 
     | 
    
         
            -
                   
     | 
| 
       130 
     | 
    
         
            -
                  result = Future.new( 
     | 
| 
      
 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 =  
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
       173 
     | 
    
         
            -
                  result = Future.new( 
     | 
| 
      
 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 =  
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
       216 
     | 
    
         
            -
                  result = Future.new( 
     | 
| 
      
 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 =  
     | 
| 
      
 269 
     | 
    
         
            +
                  request.url = absolute_path
         
     | 
| 
       251 
270 
     | 
    
         
             
                  request.headers = headers
         
     | 
| 
       252 
271 
     | 
    
         
             
                  request.query = query
         
     | 
| 
       253 
272 
     | 
    
         
             
                  request.timeout = timeout
         
     | 
| 
       254 
     | 
    
         
            -
                   
     | 
| 
       255 
     | 
    
         
            -
                  result = Future.new( 
     | 
| 
      
 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  
     | 
| 
      
 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( 
     | 
| 
      
 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 = "#{ 
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
       288 
     | 
    
         
            -
                  result = Future.new( 
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
      
 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
         
     |