Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 1197834 - Update python-augeas to 0.5 or above to fix some caching issue in combination with dbus
Summary: Update python-augeas to 0.5 or above to fix some caching issue in combination...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: python-augeas
Version: 7.2
Hardware: Unspecified
OS: Unspecified
medium
high
Target Milestone: rc
: 7.1
Assignee: Jan Cholasta
QA Contact: Virtualization Bugs
URL:
Whiteboard:
Depends On: 1058379
Blocks: 1172230 ovirt-node-ng 1181710
TreeView+ depends on / blocked
 
Reported: 2015-03-02 17:13 UTC by Ryan Barry
Modified: 2015-11-19 10:16 UTC (History)
7 users (show)

Fixed In Version: python-augeas-0.5.0-2.el7
Doc Type: Rebase: Bug Fixes and Enhancements
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-11-19 10:16:02 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2015:2133 normal SHIPPED_LIVE python-augeas bug fix and enhancement update 2015-11-19 09:54:05 UTC

Description Ryan Barry 2015-03-02 17:13:51 UTC
Description of problem:
The version of python-augeas packaged in EL7 does not work as expected when used with dbus.

Version-Release number of selected component (if applicable):
python-augeas-0.4.1-5.el7.noarch

How reproducible:
100%

Steps to Reproduce:
#!/usr/bin/python

import sys
import dbus
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop
import gobject
import augeas

BUS_NAME = "org.augeasproject.Augeas"

DBusGMainLoop(set_as_default=True)

class Test(dbus.service.Object):
    def __init__(self):
        bus = dbus.service.BusName(BUS_NAME, bus=dbus.SessionBus())
        dbus.service.Object.__init__(self, bus, "/Service"
                )
    @dbus.service.method(dbus_interface=BUS_NAME)
    def get(self, path):
        print "Called with %s" % path
        return augeas.Augeas().get(path)


if __name__ == "__main__":
    print sys.argv
    if "-d" in sys.argv:
        DBusGMainLoop(set_as_default=True)
        loop = gobject.MainLoop()
        print "listening ..."
        d = Test()
        loop.run()

    elif "-c" in sys.argv:
        bus = dbus.SessionBus()
        obj = bus.get_object(BUS_NAME, "/Service")
        test = dbus.Interface(obj, "org.augeasproject.Augeas")
        print test.get("/files/etc/hostname/hostname")
        print test.get("/files/etc/resolv.conf/nameserver[1]")
                                                                

-------------------------------------------------------------

Call the service with some path (either with dbus-send or using the script with "-c"

Actual results:
python-augeas returns "None" for all paths checked

Expected results:
The actual values are returned

Additional info:
This works as expected with python-augeas 0.5

Comment 6 Hu Zhang 2015-06-26 10:53:48 UTC
Verified with python-augeas-0.5.0-2.el7, augeas-1.4.0-1.el7.

Step to verify:
1. Prepare the test script test-dbus.py.
# cat test-dbus.py
#!/usr/bin/python

import sys
import dbus
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop
import gobject
import augeas

BUS_NAME = "org.augeasproject.Augeas"

DBusGMainLoop(set_as_default=True)

class Test(dbus.service.Object):
    def __init__(self):
        bus = dbus.service.BusName(BUS_NAME, bus=dbus.SessionBus())
        dbus.service.Object.__init__(self, bus, "/Service"
                )
    @dbus.service.method(dbus_interface=BUS_NAME)
    def get(self, path):
        print "Called with %s" % path
        return augeas.Augeas().get(path)


if __name__ == "__main__":
    print sys.argv
    if "-d" in sys.argv:
        DBusGMainLoop(set_as_default=True)
        loop = gobject.MainLoop()
        print "listening ..."
        d = Test()
        loop.run()

    elif "-c" in sys.argv:
        bus = dbus.SessionBus()
        obj = bus.get_object(BUS_NAME, "/Service")
        test = dbus.Interface(obj, "org.augeasproject.Augeas")
        print test.get("/files/etc/hostname/hostname")
        print test.get("/files/etc/resolv.conf/nameserver[1]")

2. # ./test.py -d &
   # ./test.py -c
   ['./test.py', '-c']
   Called with /files/etc/hostname/hostname
   rhel7libguestfs
   Called with /files/etc/resolv.conf/nameserver[1]
   10.66.78.111

Get the /etc/hostname/hostname and /etc/resolv.conf/nameserver[1] successfully. So verified.

Comment 7 errata-xmlrpc 2015-11-19 10:16:02 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.

https://rhn.redhat.com/errata/RHBA-2015-2133.html


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