Hi,
this patch partially solves the ticket
https://fedorahosted.org/sssd/ticket/2590
It does not subscribe to the systemd dbus interface and does only
the polling (this would have to be done anyway for the case
the interface is not available).
I will investigate how to add the systemd/dbus check as well,
but the attached patch should decrease priority of the ticket.
Thanks,
Michal
https://fedorahosted.org/sssd/wiki/DesignDocs/DBusSignalPropertyChanged
= D-Bus Signal: Notify Property Changed =
Related ticket(s):
* https://fedorahosted.org/sssd/ticket/2233
Related design page(s):
* https://fedorahosted.org/sssd/wiki/DesignDocs/DBusResponder
=== Problem statement ===
This design document describes how to implement
org.freedesktop.DBus.Properties.!PropertiesChanged signal for SSSD
objects exported in the IFP responder.
== D-Bus Interface ==
=== org.freedesktop.DBus.Properties ===
==== Signals ====
* !PropertiesChanged(s interface_name, {sv} changed_properties, as
invalidated_properties)
* interface_name: name of the interface on which the properties are
defined
* changed_properties: changed properties with new values
* invalidated_properties: changed properties but the new values are
not send with them
* this signal is emitted for every property annotated with
org.freedesktop.DBus.Property.!EmitsChangedSignal, this annotation may
be also used for the whole interface meaning that every property within
this interface emits the signal
=== Overview of the solution ===
Changes in properties are detected in new LDB plugin inside a ''mod''
hook. The plugin writes list of changed properties in a TDB-based
changelog which is periodically consumed by IFP responder. IFP then
emits !PropertiesChanged signal per each modified object.
=== Implementation details ===
==== TDB Format ====
* '''TDB Name''': ''ifp_changelog.tdb''
* '''Key''': dn of modified object
* '''Value''': chained list of modified properties in the form
''total_num\0prop1\0prop2\0...\0''
==== IFP Side ====
1. TDB database is created on IFP start and deleted on IFP termination.
* on IFP start:
* if TDB file does not exist it is created
* if TDB file exist (unexpected termination of IFP) it is flushed, we
do not care about the data inside
* on correct IFP termination
* the TDB file is deleted
2. A periodic task ''IFP: notify properties changed'' is created, it is
responsible for emitting the ''!PropertiesChanged'' signal
* Periodic task flow:
1. Lock TDB for read-only access
2. Traverse the TDB and remember dn and properties for all modified
objects
3. Flush TDB
4. Release the lock
5. Create and emit D-Bus signal per each object that is exported on
IFP bus and supports ''!PropertiesChanged'' signal
==== LDB Plugin Side ====
1. If TDB file does not exist just quit
2. If modified object supports the signal store it in the TDB
=== Configuration changes ===
In IFP section:
* '''ifp_notification_interval''': period of ''IFP: notify properties
changed'', disabled if 0, default 300 (5 minutes)
=== How To Test ===
1. Hook onto ''!PropertiesChanged'' signal, e. g. with ''dbus-monitor'̈́'
2. Trigger change of user/group
3. Signal should be recieved
=== Questions ===
1. Do we want to use ''changed_properties'' or ''invalidated_properties''
=== Authors ===
* Pavel Březina <pbrezina(a)redhat.com>
Hello,
I had a chat with lslebodn in #sssd and here is my patch.
It’s a fix for pysss getgrouplist return test, thats different between
linux and freebsd.
The fix if for this code:
https://git.fedorahosted.org/cgit/sssd.git/tree/src/python/pysss.c#n783
I discovered the bug because salt-minion stalls when calling
pysss.getgrouplist.
Best regards,
Martin Andersen
The SSSD team is proud to announce the 0.5.0 release of ding-libs
utility library.
It can be downloaded from
https://fedorahosted.org/sssd/wiki/Releases#DING-LIBSReleases
== Highlights ==
=== libini_config ===
* This release adds an API to create, modify and save INI files
* Merging configuration snippets installed in different locations is supported
=== libcollection ===
* New functions: `col_get_dup_item`, `col_delete_item_with_cb`, `col_remove_item_with_cb`
== Note for distribution packagers ==
* New public header file `ini_cofigmod.h`
* API and ABI is backward compatible with last release (0.4.0)
== Detailed Changelog ==
Dmitri Pal (22):
* Print info when array is empty
* Declaring new internal access check function
* Refactored access control check
* New function to merge snippets
* Test file for unit test
* [INI] Make the merge function build
* Function to return one of the dups
* Allow to modify item name
* Expose delete with callback function
* Comment creation helper
* Comment can be NULL
* Move definition to common header
* Fix wrapping error
* New interface to modify configuration
* Build new interface
* Generate doxy doc for INI modification API
* Cleaning doxygen comments
* Change order of the headers
* New interface to save configuration in a file
* Implementation of the interface to save configuration
* Unit test for the save interface
* Build new tests for the save interface
Lukas Slebodnik (10):
* SPEC: Use correct soname for packages lib{collection,ini_config}
* SPEC: Do not include compiled files into package libdhash-devel
* ini_config_ut: enable verbose mode with env variable
* collection: Add new function col_remove_item_with_cb
* INI: Fix memory leak with INI_VA_CLEAN
* COLLECTION: Return the last duplicate for big index
* INI: Fix adding string with INI_VA_MODADD_E and big index
* INI: Add check based test ini_configmod_ut_check
* Bump version-info
* Update versions before 0.5.0 release
We're attempting to use strerror() to print the result from
ad_gpo_access_check(), but that function returns an extended SSSD
errno.
This resulted in "Unknown Error" being printed to the logs.
Hello,
Please find attached patches for the new interface to modify
configuration files using libini_config.
--
Thank you,
Dmitri Pal
Sr. Engineering Manager IdM portfolio
Red Hat, Inc.