Univention Bugzilla – Bug 50167
"policies" different in UDM REST API and simple Python UDM API
Last modified: 2023-06-13 18:08:19 CEST
The UDM REST API (Bug #27816) now exposes the policies of a UDM object as a mapping: module_name -> List[DN, DN, ..] For example: ------------------------------------------------- { "policies/pwhistory": [], "policies/nfsmounts": [], "policies/memberpackages": [], "policies/desktop": [], "policies/ldapserver": [], "policies/slavepackages": [], "policies/registry": [ "cn=ou-default-ucr-policy,cn=policies,ou=demoschool,dc=uni,dc=dtr" ], "policies/admin_container": [], "policies/umc": [], "policies/dhcp_statements": [], "policies/dhcp_routing": [], "policies/dhcp_leasetime": [], "policies/printserver": [], "policies/dhcp_boot": [], "policies/share_userquota": [], "policies/repositoryserver": [], "policies/masterpackages": [], "policies/release": [], "policies/dhcp_netbios": [], "policies/repositorysync": [], "policies/autostart": [], "policies/dhcp_dns": [ "cn=dhcp-dns-clear,cn=policies,ou=DEMOSCHOOL,dc=uni,dc=dtr" ], "policies/maintenance": [], "policies/dhcp_dnsupdate": [], "policies/dhcp_scope": [], "policies/print_quota": [] } ------------------------------------------------- This is a convenient encoding, but differs to the one in the Python UDM API. Create a new version of the Python UDM API, that uses the same encoding. (Or revert the UDM REST API to the previous one.)
Can you show an example of the simple UDM API?
from univention.udm import UDM mod = UDM.admin().version(1).get('container/ou') for obj in mod.search(): print(obj, obj.policies) (GenericObject('container/ou', 'ou=DEMOSCHOOL,dc=uni,dc=dtr'), ['cn=dhcp-dns-clear,cn=policies,ou=DEMOSCHOOL,dc=uni,dc=dtr', 'cn=ou-default-ucr-policy,cn=policies,ou=demoschool,dc=uni,dc=dtr']) (GenericObject('container/ou', 'ou=SchuleZwei,dc=uni,dc=dtr'), ['cn=dhcp-dns-clear,cn=policies,ou=SchuleZwei,dc=uni,dc=dtr', 'cn=ou-default-ucr-policy,cn=policies,ou=schulezwei,dc=uni,dc=dtr'])
Merge Request changing policies = [policy_dns, ...] into {policy_type: [policy_dns, ...], ...} available in: https://git.knut.univention.de/univention/ucs/-/merge_requests/283 >>> import univention.udm >>> u = univention.udm.UDM.admin().version(3) >>> m = u.get('users/user') >>> a = m.get('uid=demo_staff,cn=mitarbeiter,cn=users,ou=DEMOSCHOOL,l=school,l=dev') >>> a.policies {'policies/umc': ['cn=schoolimport-all,cn=UMC,cn=policies,l=school,l=dev'], 'policies/pwhistory': [], 'policies/desktop': []}
Policies can now be exposed as Dict[str, List[DN]] when using Version 3: univention-directory-manager-modules.yaml 764c2983b4ee | feat(udm-simple): change list of policy DNs to mapping of policy type to list of policy DNs univention-directory-manager-modules (15.0.13-24) 37d5aa1cba4d | chore(udm-simple): increase API version to 3 764c2983b4ee | feat(udm-simple): change list of policy DNs to mapping of policy type to list of policy DNs
Verified: * Comment 3 * ucs-test-udm * Advisory
<https://errata.software-univention.de/#/?erratum=5.0x489>