RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 816609 - [libvirt] python bindings have inconsistent handling of float->int conversion
Summary: [libvirt] python bindings have inconsistent handling of float->int conversion
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: libvirt
Version: 6.4
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: 6.3
Assignee: Gunannan Ren
QA Contact: Virtualization Bugs
URL:
Whiteboard:
Depends On: 804664 807751
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-04-26 13:53 UTC by Eric Blake
Modified: 2013-02-21 07:12 UTC (History)
26 users (show)

Fixed In Version: libvirt-0.10.2-3.el6
Doc Type: Bug Fix
Doc Text:
Clone Of: 807751
Environment:
Last Closed: 2013-02-21 07:12:18 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2013:0276 0 normal SHIPPED_LIVE Moderate: libvirt security, bug fix, and enhancement update 2013-02-20 21:18:26 UTC

Comment 1 Eric Blake 2012-04-26 13:58:03 UTC
See also this upstream question:
https://www.redhat.com/archives/libvir-list/2012-April/msg01170.html

Comment 3 Gunannan Ren 2012-10-08 13:54:25 UTC
set to POST

commit 283f1c4aef8736d61c3965874a837537fea05dbc
Author: Guannan Ren <gren>
Date:   Fri Sep 28 20:29:03 2012 +0800

    python: keep consistent handling of Python integer conversion
    
    libvirt_ulonglongUnwrap requires the integer type of python obj.
    But libvirt_longlongUnwrap still could handle python obj of
    Pyfloat_type which causes the float value to be rounded up
    to an integer.
    
    For example
     >>> dom.setSchedulerParameters({'vcpu_quota': 0.88})
     0
    libvirt_longlongUnwrap treats 0.88 as a valid value 0
    
    However
     >>> dom.setSchedulerParameters({'cpu_shares': 1000.22})
    libvirt_ulonglongUnwrap will throw out an error
    "TypeError: an integer is required"
    
    The patch make this consistent.

Comment 4 Jiri Denemark 2012-10-08 18:15:59 UTC
The last rebase to libvirt-0.10.2 was completed and all patches need
to be explicitly backported and sent to rhvirt-patches for review.
Please, set bugs to POST only after sending the backported patches.

Comment 6 Gunannan Ren 2012-10-12 13:27:11 UTC
patch sent to rhvirt mailing list
http://post-office.corp.redhat.com/archives/rhvirt-patches/2012-October/msg00615.html

Comment 9 Wayne Sun 2012-10-16 06:04:33 UTC
# rpm -q libvirt libssh2
libvirt-0.10.2-3.el6.x86_64
libssh2-1.4.2-1.el6.x86_64

steps:
# python
Python 2.6.6 (r266:84292, May  1 2012, 13:52:17) 
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import libvirt
>>> conn = libvirt.open(None)
>>> dom = conn.lookupByName("libvirt_test_api")
>>> dom.schedulerParameters()
{'vcpu_quota': -1L, 'vcpu_period': 100000L, 'emulator_period': 100000L, 'emulator_quota': -1L, 'cpu_shares': 1024L}
>>> dom.setSchedulerParameters({'vcpu_quota': 0.88})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/site-packages/libvirt.py", line 1959, in setSchedulerParameters
    ret = libvirtmod.virDomainSetSchedulerParameters(self._o, params)
TypeError: an integer is required
>>> dom.setSchedulerParameters({'cpu_shares': 1000.22})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/site-packages/libvirt.py", line 1959, in setSchedulerParameters
    ret = libvirtmod.virDomainSetSchedulerParameters(self._o, params)
TypeError: an integer is required
>>> dom.schedulerParameters()
{'vcpu_quota': -1L, 'vcpu_period': 100000L, 'emulator_period': 100000L, 'emulator_quota': -1L, 'cpu_shares': 1024L}
>>> dom.setSchedulerParameters({'vcpu_quota': 10.88})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/site-packages/libvirt.py", line 1959, in setSchedulerParameters
    ret = libvirtmod.virDomainSetSchedulerParameters(self._o, params)
TypeError: an integer is required
>>> dom.setSchedulerParameters({'vcpu_quota': 10})
libvir: QEMU Driver error : invalid argument: value of 'vcpu_quota' is out of range [1000, 18446744073709551]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/site-packages/libvirt.py", line 1960, in setSchedulerParameters
    if ret == -1: raise libvirtError ('virDomainSetSchedulerParameters() failed', dom=self)
libvirt.libvirtError: invalid argument: value of 'vcpu_quota' is out of range [1000, 18446744073709551]
>>> dom.setSchedulerParameters({'vcpu_quota': 1001})
0
>>> dom.setSchedulerParameters({'vcpu_quota': 100001})
0
>>> dom.schedulerParameters()
{'vcpu_quota': 100001L, 'vcpu_period': 100000L, 'emulator_period': 100000L, 'emulator_quota': -1L, 'cpu_shares': 1024L}
>>> dom.setSchedulerParameters({'vcpu_quota': -1})
0
>>> dom.schedulerParameters()
{'vcpu_quota': -1L, 'vcpu_period': 100000L, 'emulator_period': 100000L, 'emulator_quota': -1L, 'cpu_shares': 1024L}

This is consistent now, now set schedulerParameters reject fractional values with a type error.

Comment 10 errata-xmlrpc 2013-02-21 07:12:18 UTC
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.

http://rhn.redhat.com/errata/RHSA-2013-0276.html


Note You need to log in before you can comment on or make changes to this bug.