Hi, I looked through the current Python sdk4 and found that an blank `action` has already
been sent when calling `volume.reblance()`, as well as Job ID is contained in the returned
response.
IMHO, the root cause is that missing a return clause at
https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/lib/ovirtsdk4/s...,
the following codes may could elaborate the reason.
```python
def _internal_action(self, action, path, member=None, headers=None, query=None,
wait=None):
"""
Executes an action method.
"""
# Populate the headers:
headers = headers or {}
# Send the request and wait for the response:
request = http.Request(
method='POST',
path='%s/%s' % (self._path, path),
query=query,
headers=headers,
)
request.body = writer.Writer.write(action, indent=True)
context = self._connection.send(request)
def callback(response):
if response.code in [200, 201, 202]:
result = self._check_action(response)
if member:
return getattr(result, member)
// +++++++++++ If the `member` parameter is None, the `result` who carries
a `types.Action` should also be returned.
return result
// +++++++++++
else:
self._check_fault(response)
future = Future(self._connection, context, callback)
return future.wait() if wait else future
```
After adding it, we could successfully fetch the job ID via
`volume.rebalance().job.id()`.
BTW:
1. This issue also affect the oVirt Java sdk4, current sdk generator implementation
(
https://github.com/oVirt/ovirt-engine-sdk-java/blob/2744d4b59e952d1cd1d81...)
is going to drop the returned `Action` object if there has no `@Out` parameters defined.
IMHO, an additional property with type of `Action` could be added in the action
`Response` in this situation, or an `@Out Action` parameter could added in API model.
2. My Go sdk4 also has the same issue.
It's just my point of view, please correct me if I'm wrong. Thanks.