
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/serv..., 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/2744d4b59e952d1cd1d81f1d...) 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.