Bug 1721414

Summary: Adding service into permanent configuration via DBus api suddenly requires 9 values instead of 8
Product: Red Hat Enterprise Linux 8 Reporter: Sanne Raymaekers <sraymaek>
Component: firewalldAssignee: Eric Garver <egarver>
Status: CLOSED ERRATA QA Contact: Tomas Dolezal <todoleza>
Severity: unspecified Docs Contact:
Priority: urgent    
Version: 8.1CC: dcbw, mpitt, rgerardi, rkhan, todoleza, wchadwic
Target Milestone: rcKeywords: Regression
Target Release: 8.1Flags: pm-rhel: mirror+
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: firewalld-0.7.0-3.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-11-05 22:31:34 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: 1660400, 1721548    

Description Sanne Raymaekers 2019-06-18 09:03:33 UTC
Description of problem:
Caught by cockpit tests.

Adding service into permanent configuration via DBus api suddenly requires 9 values. While the documentation clearly states only 8 are required to make up the settings structure.

Version-Release number of selected component (if applicable):
0.7.0

How reproducible:
A dbus call to
object path: /org/fedoraproject/FirewallD1/config
interface:   org.fedoraproject.FirewallD1.config
method:      addService
arguments:   [service, ["", name, "", ports, [], {}, [], []]*

*with name and ports as valid arguments


Actual results:
org.freedesktop.DBus.Error.InvalidArgs: Too few values in tuple/struct


Using [service, ["", name, "", ports, [], {}, [], [], []] as the arguments works.

Comment 1 Eric Garver 2019-06-18 13:33:50 UTC
(In reply to Sanne Raymaekers from comment #0)
> Description of problem:
> Caught by cockpit tests.
> 
> Adding service into permanent configuration via DBus api suddenly requires 9
> values. While the documentation clearly states only 8 are required to make
> up the settings structure.

This is a documentation failure. The section for org.fedoraproject.FirewallD1.Methods.getServiceSettings() was updated in firewalld.dbus(5), but not org.fedoraproject.FirewallD1.config.service.Methods.getSettings().

> Version-Release number of selected component (if applicable):
> 0.7.0
> 
> How reproducible:
> A dbus call to
> object path: /org/fedoraproject/FirewallD1/config
> interface:   org.fedoraproject.FirewallD1.config
> method:      addService
> arguments:   [service, ["", name, "", ports, [], {}, [], []]*
> 
> *with name and ports as valid arguments
> 
> 
> Actual results:
> org.freedesktop.DBus.Error.InvalidArgs: Too few values in tuple/struct
> 
> 
> Using [service, ["", name, "", ports, [], {}, [], [], []] as the arguments
> works.

Upstream added a setting to the argument list for the "service includes" feature.

In the past, methods were extended in an append-only manner without changing the dbus version and bumping the minor number on an internal "interface_version". When "service includes" were added the same approach was taken. I don't think this is valid as per DBUS API guidelines (https://dbus.freedesktop.org/doc/dbus-api-design.html#api-versioning). Instead a new API should be added to get/set the service includes.

Comment 7 Eric Garver 2019-07-22 20:28:11 UTC
Fixed upstream. The old dbus signature was restored and new APIs were added to use the new features.

91c1434de861 ("fix: firewall-offline-cmd: service: use dict based APIs")
632380e6efcd ("fix: client: service: use dict based dbus APIs")
335f23848140 ("test: dbus: coverage for new service APIs")
bbadd3943dab ("fix: dbus: new dict based APIs for services")

b0ecd9e3916a ("test: dbus: service API coverage")
5f32c24dec88 ("test: functions: add macro DBUS_INTROSPECT")
a8b90c38c197 ("test: functions: add CHOMP macro for shell output")
15346d6ff16e ("fix: tests/functions: use gdbus instead of dbus-send")
bcdc1e2bf1e7 ("fix: dbus: add missing APIs for service includes")
335a68c1bba5 ("fix: dbus: fix service API break")

Comment 9 Martin Pitt 2019-07-30 08:43:24 UTC
*** Bug 1733277 has been marked as a duplicate of this bug. ***

Comment 12 errata-xmlrpc 2019-11-05 22:31:34 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://access.redhat.com/errata/RHEA-2019:3635