Hide Forgot
Description of problem: guestVcpus fail with wrong argument number. Version-Release number of selected component (if applicable): libvirt-python-2.0.0-2.el7.x86_64 How reproducible: 100% Steps to Reproduce: # python Python 2.7.5 (default, Aug 2 2016, 04:20:16) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import libvirt >>> import os >>> conn = libvirt.open() >>> dom = conn.lookupByName("r73") >>> dom.guestVcpus() >>> vcpu = {} >>> num = 0 >>> dom.guestVcpus(vcpu, num) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1268, in guestVcpus ret = libvirtmod.virDomainGetGuestVcpus(self._o, params, nparams, flags) TypeError: virDomainGetGuestVcpus() takes exactly 2 arguments (4 given) Actual results: As above. Expected results: Get guest vcpus information.
Fixed upstream: commit 0061566872ed3fdf7b0ec101c20d3ddb78093a06 Author: Peter Krempa <pkrempa> Date: Mon Sep 19 13:54:37 2016 +0200 override: Properly override wrapper for virDomainGetGuestVcpus Without the change to libvirt-override-api.xml generator.py would generate the following function header: def guestVcpus(self, params, nparams, flags=0): Since @params and @nparams are output-only in C and the python C implementation actualy creates a dict from them we should not need to pass them. Add the API definition to drop the two unnecessary args: def guestVcpus(self, flags=0): The code did not work at all until this change as the C impl expects only two arguments but the python required use of four.
Verified on libvirt-python-2.5.0-1.el7.x86_64. # python Python 2.7.5 (default, Aug 2 2016, 04:20:16) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import libvirt >>> import os >>> conn = libvirt.open() >>> dom = conn.lookupByName('test') >>> dom.guestVcpus() {'vcpus': '0-5', 'offlinable': '0-5', 'online': '0-5'} >>> dom.setGuestVcpus('1,3', 0) 0 >>> dom.guestVcpus() {'vcpus': '0-5', 'offlinable': '0-5', 'online': '0,2,4-5'}
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2017:1847