Bugzilla will be upgraded to version 5.0. The upgrade date is tentatively scheduled for 2 December 2018, pending final testing and feedback.
Bug 1197834 - Update python-augeas to 0.5 or above to fix some caching issue in combination with dbus
Update python-augeas to 0.5 or above to fix some caching issue in combination...
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: python-augeas (Show other bugs)
7.2
Unspecified Unspecified
medium Severity high
: rc
: 7.1
Assigned To: Jan Cholasta
Virtualization Bugs
: Rebase
Depends On: 1058379
Blocks: 1172230 ovirt-node-ng 1181710
  Show dependency treegraph
 
Reported: 2015-03-02 12:13 EST by Ryan Barry
Modified: 2015-11-19 05:16 EST (History)
7 users (show)

See Also:
Fixed In Version: python-augeas-0.5.0-2.el7
Doc Type: Rebase: Bug Fixes and Enhancements
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2015-11-19 05:16:02 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)


External Trackers
Tracker 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 04:54:05 EST

  None (edit)
Description Ryan Barry 2015-03-02 12:13:51 EST
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 06:53:48 EDT
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 05:16:02 EST
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.