Bug 1127706

Summary: Unify runtime and permanent D-Bus API
Product: Red Hat Enterprise Linux 7 Reporter: Radek Novacek <rnovacek>
Component: firewalldAssignee: Thomas Woerner <twoerner>
Status: CLOSED ERRATA QA Contact: Tomas Dolezal <todoleza>
Severity: high Docs Contact:
Priority: high    
Version: 7.1CC: dkopecek, jpopelka, jscotka, ovasik, twoerner
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: firewalld-0.3.9-10.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-03-05 13:23:23 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1082756    

Description Radek Novacek 2014-08-07 11:34:49 UTC
FirewallD D-Bus API currently provides two different sets of APIs, one for runtime configuration and one for permanent configuration.

Having two different sets of APIs for almost the same thing complicates the implementation of clients that will consume the API.

It would be great if FirewallD can provide same set of APIs for both runtime and permanent configuration, for example only D-Bus object path would differ or method argument would specify if we want to alter runtime or permanent configuration.

Comment 7 Radek Novacek 2014-10-07 08:04:59 UTC
Thanks, this is much better. I can imagine a code that would handle both runtime and permanent configuration.

However, those APIs are still a bit different. For example, adding port to the zone would look like this:

Runtime:
dbus.call("/org/fedoraproject/FirewallD1", "org.fedoraproject.FirewallD1.zone", "addPort", "public", "1234", "tcp", 0)

Permanent:
zone = dbus.call("/org/fedoraproject/FirewallD1/config", "org.fedoraproject.FirewallD1.config", "getZoneByName", "public")
dbus.call(zone, "org.fedoraproject.FirewallD1.zone", "addPort", "1234", "tcp")


So, I'm satisfied with using the current API, but unifying those two ways completely would be awesome.

Comment 8 Thomas Woerner 2014-10-07 11:29:03 UTC
I am sorry, but it is not possible to unify the runtime and permanent interfaces more than this within the Python version because of name conflicts in the server classes.

With the C++ recode version this will be possible, but it is not finished and available, yet.

Comment 9 Jiri Popelka 2014-10-14 16:42:47 UTC
Thomas, the following upstream commits should be included too:

0207d50
e2408ad
0cc032c

Comment 12 errata-xmlrpc 2015-03-05 13:23:23 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-0520.html