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.
Fixed upstream: https://git.fedorahosted.org/cgit/firewalld.git/commit/?id=a15889cb6ffceecce8b2c9cafe71174b27a3864a
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:
dbus.call("/org/fedoraproject/FirewallD1", "org.fedoraproject.FirewallD1.zone", "addPort", "public", "1234", "tcp", 0)
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.
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.
Thomas, the following upstream commits should be included too:
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.