univention.udm.modules package

Contents

univention.udm.modules package#

Submodules#

univention.udm.modules.appcenter_app module#

Module and object specific for “appcenter/app” UDM module.

class univention.udm.modules.appcenter_app.AppcenterAppObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

appcenter/app UDM properties.

class univention.udm.modules.appcenter_app.AppcenterAppObject[source]#

Bases: GenericObject

Better representation of appcenter/app properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of AppcenterAppObjectProperties

class univention.udm.modules.appcenter_app.AppcenterAppModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

AppcenterAppObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['appcenter/app'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.computers_all module#

Module and object for all computers/* UDM modules.

class univention.udm.modules.computers_all.ComputersAllObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

computers/* UDM properties.

class univention.udm.modules.computers_all.ComputersAllObject[source]#

Bases: GenericObject

Better representation of computers/* properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of ComputersAllObjectProperties

class univention.udm.modules.computers_all.ComputersAllModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

ComputersAllObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['computers/*'], used_api_version=None, default_positions_property='computers')#
class univention.udm.modules.computers_all.ComputersDCModule(name: str, connection: Any, api_version: int)[source]#

Bases: ComputersAllModule

ComputersAllObject factory with an adjusted default position

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['computers/domaincontroller_master', 'computers/domaincontroller_backup', 'computers/domaincontroller_slave'], used_api_version=None, default_positions_property='domaincontroller')#
class univention.udm.modules.computers_all.ComputersMemberModule(name: str, connection: Any, api_version: int)[source]#

Bases: ComputersAllModule

ComputersAllObject factory with an adjusted default position

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['computers/memberserver'], used_api_version=None, default_positions_property='computers')#

univention.udm.modules.container_cn module#

Module and object specific for “container/cn” UDM module.

class univention.udm.modules.container_cn.ContainerCnObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

container/cn UDM properties.

class univention.udm.modules.container_cn.ContainerCnObject[source]#

Bases: GenericObject

Better representation of container/cn properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of ContainerCnObjectProperties

class univention.udm.modules.container_cn.ContainerCnModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

ContainerCnObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['containers/cn'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.container_dc module#

Module and object specific for “container/dc” UDM module.

class univention.udm.modules.container_dc.ContainerDcObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

container/dc UDM properties.

class univention.udm.modules.container_dc.ContainerDcObject[source]#

Bases: GenericObject

Better representation of container/dc properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of ContainerDcObjectProperties

class univention.udm.modules.container_dc.ContainerDcModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

ContainerDcObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['containers/dc'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.container_ou module#

Module and object specific for “container/ou” UDM module.

class univention.udm.modules.container_ou.ContainerOuObjectProperties(udm_obj: BaseObject)[source]#

Bases: ContainerCnObjectProperties

container/ou UDM properties.

class univention.udm.modules.container_ou.ContainerOuObject[source]#

Bases: ContainerCnObject

Better representation of container/ou properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of ContainerOuObjectProperties

class univention.udm.modules.container_ou.ContainerOuModule(name: str, connection: Any, api_version: int)[source]#

Bases: ContainerCnModule

ContainerOuObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['containers/ou'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.generic module#

A generic UDM module and object implementation. Will work for all kinds of UDM modules.

class univention.udm.modules.generic.GenericObjectProperties(udm_obj: BaseObject)[source]#

Bases: BaseObjectProperties

Container for UDM properties.

_encoders is a mapping from property names to subclasses of _encoders.BaseEncoder, which will be used to transparently map between the properties representation in original UDM and the new UDM APIs.

class univention.udm.modules.generic.GenericObject[source]#

Bases: BaseObject

Generic object class that can be used with all UDM module types.

Creation of instances GenericObject is always done through GenericModul.new(), GenericModul.get() or GenericModul.search().

Modify an object:

user.props.firstname = 'Peter'
user.props.lastname = 'Pan'
user.save()

Move an object:

user.position = 'cn=users,ou=Company,dc=example,dc=com'
user.save()

Delete an object:

obj.delete()

After saving a GenericObject, it is reload()ed automatically because UDM hooks and listener modules often add, modify or remove properties when saving to LDAP. As this involves LDAP, it can be disabled if the object is not used afterwards and performance is an issue:

user_mod.meta.auto_reload = False

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of GenericObjectProperties

reload() GenericObject[source]#

Refresh object from LDAP.

Returns:

self

Raises:

univention.udm.exceptions.NotYetSavedError – if object does not yet exist (has no dn)

save() GenericObject[source]#

Save object to LDAP.

Returns:

self

Raises:

univention.udm.exceptions.MoveError – when a move operation fails

delete(remove_childs: bool = False) None[source]#

Remove the object (and optionally its child nodes) from the LDAP database.

Parameters:

remove_childs (bool) – if there are UDM objects below this objects DN, recursively remove them before removing this object

Raises:
class univention.udm.modules.generic.GenericModuleMetadata(meta: GenericModule.Meta)[source]#

Bases: BaseModuleMetadata

property identifying_property: str#

UDM Property of which the mapped LDAP attribute is used as first component in a DN, e.g. username (LDAP attribute uid) or name (LDAP attribute cn).

lookup_filter(filter_s: str | None = None) str[source]#

Filter the UDM module uses to find its corresponding LDAP objects.

This can be used in two ways:

  • get the filter to find all objects:

    myfilter_s = obj.meta.lookup_filter()
    
  • get the filter to find a subset of the corresponding LDAP objects (filter_s will be combined with & to the filter for all objects):

    myfilter = obj.meta.lookup_filter('(|(givenName=A*)(givenName=B*))')
    
Parameters:

filter_s (str) – optional LDAP filter expression

Returns:

an LDAP filter string

property mapping: LdapMapping#

UDM properties to LDAP attributes mapping and vice versa.

Returns:

a namedtuple containing two mappings: a) from UDM property to LDAP attribute and b) from LDAP attribute to UDM property

class univention.udm.modules.generic.GenericModuleMeta(name: str, bases: tuple[type, ...], attrs: dict[str, Any])[source]#

Bases: ModuleMeta

udm_meta_class#

alias of GenericModuleMetadata

class univention.udm.modules.generic.GenericModule(name: str, connection: Any, api_version: int)[source]#

Bases: BaseModule

Simple API to use UDM modules. Basically a GenericObject factory.

Get module using:

user_mod = UDM.admin/machine/credentials().version(2).get('users/user')

Create fresh, not yet saved GenericObject:

new_user = user_mod.new()

Load an existing object:

group = group_mod.get('cn=test,cn=groups,dc=example,dc=com')
group = group_mod.get_by_id('Domain Users')

Search and load existing objects:

dc_slaves = dc_slave_mod.search(filter_s='cn=s10*')
campus_groups = group_mod.search(base='ou=campus,dc=example,dc=com')
new(superordinate: str | GenericObject | None = None) GenericObject[source]#

Create a new, unsaved GenericObject object.

Parameters:

superordinate – DN or UDM object this one references as its superordinate (required by some modules)

Returns:

a new, unsaved GenericObject object

get(dn: str) GenericObject[source]#

Load UDM object from LDAP.

Parameters:

dn (str) – DN of the object to load

Returns:

an existing GenericObject object

Raises:
search(filter_s: str = '', base: str = '', scope: str = 'sub', sizelimit: int = 0) Iterator[GenericObject][source]#

Get all UDM objects from LDAP that match the given filter.

Parameters:
  • filter_s (str) – LDAP filter (only object selector like uid=foo required, objectClasses will be set by the UDM module)

  • base (str) – subtree to search

  • scope (str) – depth to search

  • sizelimit (int) – LDAP size limit for searched results.

Returns:

generator to iterate over GenericObject objects

meta = GenericModuleMetadata(supported_api_versions=[0, 1, 2, 3], suitable_for=['*/*'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.groups_group module#

Module and object specific for “groups/group” UDM module.

class univention.udm.modules.groups_group.GroupsGroupObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

groups/group UDM properties.

class univention.udm.modules.groups_group.GroupsGroupObject[source]#

Bases: GenericObject

Better representation of groups/group properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of GroupsGroupObjectProperties

class univention.udm.modules.groups_group.GroupsGroupModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

GroupsGroupObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['groups/group'], used_api_version=None, default_positions_property='groups')#

univention.udm.modules.mail_all module#

Module and object specific for all “mail/*” UDM modules.

This module handles the problem that on a OX system, UDM modules are registered for oxmail/ox$NAME, that opens LDAP objects with both univentionObjectType=oxmail/ox$NAME and univentionObjectType=mail/$NAME.

GenericModule._verify_univention_object_type() raises a WrongObjectType exception when loading it.

The overwritten method _verify_univention_object_type() allows both mail/* and oxmail/* in univentionObjectType.

class univention.udm.modules.mail_all.MailAllObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

mail/* UDM properties.

class univention.udm.modules.mail_all.MailAllObject[source]#

Bases: GenericObject

Better representation of mail/* properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of MailAllObjectProperties

class univention.udm.modules.mail_all.MailAllModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

MailAllObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['mail/*'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.nagios_service module#

Module and object specific for “nagios/service” UDM module.

class univention.udm.modules.nagios_service.NagiosServiceObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

nagios/service UDM properties.

class univention.udm.modules.nagios_service.NagiosServiceObject[source]#

Bases: GenericObject

Better representation of nagios/service properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of NagiosServiceObjectProperties

class univention.udm.modules.nagios_service.NagiosServiceModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

NagiosServiceObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['nagios/service'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.policies_registry module#

Module and object specific for “policies/registry” UDM module.

class univention.udm.modules.policies_registry.PoliciesRegistryObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

policies/registry UDM properties.

class univention.udm.modules.policies_registry.PoliciesRegistryObject[source]#

Bases: GenericObject

Better representation of policies/registry properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of PoliciesRegistryObjectProperties

class univention.udm.modules.policies_registry.PoliciesRegistryModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

PoliciesRegistryObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['policies/registry'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.policies_share_userquota module#

Module and object specific for “policies/share_userquota” UDM module.

class univention.udm.modules.policies_share_userquota.PoliciesShareUserquotaObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

policies/share_userquota UDM properties.

class univention.udm.modules.policies_share_userquota.PoliciesShareUserquotaObject[source]#

Bases: GenericObject

Better representation of policies/share_userquota properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of PoliciesShareUserquotaObjectProperties

class univention.udm.modules.policies_share_userquota.PoliciesShareUserquotaModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

PoliciesShareUserquotaObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['policies/share_userquota'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.policies_umc module#

Module and object specific for “policies/umc” UDM module.

class univention.udm.modules.policies_umc.PoliciesUmcObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

policies/umc UDM properties.

class univention.udm.modules.policies_umc.PoliciesUmcObject[source]#

Bases: GenericObject

Better representation of policies/umc properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of PoliciesUmcObjectProperties

class univention.udm.modules.policies_umc.PoliciesUmcModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

PoliciesUmcObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['policies/umc'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.portal module#

Module and object specific for “portals/portal” UDM module.

class univention.udm.modules.portal.ListOfListOflTextToListofDictPropertyEncoder(property_name: str | None = None, *args: Any, **kwargs: Any)[source]#

Bases: BaseEncoder

static = True#
static decode(value=None)[source]#
static encode(value=None)[source]#
class univention.udm.modules.portal.PortalsPortalObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

portals/portal UDM properties.

class univention.udm.modules.portal.PortalsPortalObject[source]#

Bases: GenericObject

Better representation of portals/portal properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of PortalsPortalObjectProperties

class univention.udm.modules.portal.PortalsPortalModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

PortalsPortalObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['portals/portal'], used_api_version=None, default_positions_property=None)#
class univention.udm.modules.portal.PortalsCategoryObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

portals/category UDM properties.

class univention.udm.modules.portal.PortalsCategoryObject[source]#

Bases: GenericObject

Better representation of portals/category properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of PortalsCategoryObjectProperties

class univention.udm.modules.portal.PortalsCategoryModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

PortalsCategoryObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['portals/category'], used_api_version=None, default_positions_property=None)#
class univention.udm.modules.portal.PortalsPortalEntryObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

portals/entry UDM properties.

class univention.udm.modules.portal.PortalsPortalEntryObject[source]#

Bases: GenericObject

Better representation of portals/entry properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of PortalsPortalEntryObjectProperties

class univention.udm.modules.portal.PortalsPortalEntryModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

PortalsPortalEntryObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['portals/entry'], used_api_version=None, default_positions_property=None)#
class univention.udm.modules.portal.PortalsPortalFolderObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

portals/folder UDM properties.

class univention.udm.modules.portal.PortalsPortalFolderObject[source]#

Bases: GenericObject

Better representation of portals/folder properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of PortalsPortalFolderObjectProperties

class univention.udm.modules.portal.PortalsPortalFolderModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

PortalsPortalFolderObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['portals/folder'], used_api_version=None, default_positions_property=None)#
class univention.udm.modules.portal.PortalsPortalAnnouncementObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

portals/announcement UDM properties.

class univention.udm.modules.portal.PortalsPortalAnnouncementObject[source]#

Bases: GenericObject

Better representation of portals/announcement properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of PortalsPortalAnnouncementObjectProperties

class univention.udm.modules.portal.PortalsPortalAnnouncementModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

PortalsPortalAnnouncementObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['portals/announcement'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.settings_data module#

Module and object specific for “settings/data” UDM module.

class univention.udm.modules.settings_data.SettingsDataObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

settings/data UDM properties.

class univention.udm.modules.settings_data.SettingsDataObject[source]#

Bases: GenericObject

Better representation of settings/data properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of SettingsDataObjectProperties

class univention.udm.modules.settings_data.SettingsDataModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

SettingsDataObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['settings/data'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.settings_directory module#

Module and object specific for “settings/directory” UDM module.

class univention.udm.modules.settings_directory.SettingsDirectoryObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

settings/directory UDM properties.

class univention.udm.modules.settings_directory.SettingsDirectoryObject[source]#

Bases: GenericObject

Better representation of settings/directory properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of SettingsDirectoryObjectProperties

class univention.udm.modules.settings_directory.SettingsDirectoryModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

SettingsDirectoryObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['settings/directory'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.users_ldap_v0 module#

FOR TESTING PURPOSES ONLY!

Module and object specific for “users/ldap” UDM module.

class univention.udm.modules.users_ldap_v0.UsersLdapObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

users/ldap UDM properties.

class univention.udm.modules.users_ldap_v0.UsersLdapObject[source]#

Bases: GenericObject

Better representation of users/ldap properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of UsersLdapObjectProperties

class univention.udm.modules.users_ldap_v0.UsersLdapModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

UsersLdapObject factory

meta = GenericModuleMetadata(supported_api_versions=[0], suitable_for=['users/ldap'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.users_ldap_v1 module#

FOR TESTING PURPOSES ONLY!

Module and object specific for “users/ldap” UDM module.

class univention.udm.modules.users_ldap_v1.UsersLdapObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

users/ldap UDM properties.

class univention.udm.modules.users_ldap_v1.UsersLdapObject[source]#

Bases: GenericObject

Better representation of users/ldap properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of UsersLdapObjectProperties

class univention.udm.modules.users_ldap_v1.UsersLdapModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

UsersLdapObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['users/ldap'], used_api_version=None, default_positions_property=None)#

univention.udm.modules.users_user module#

Module and object specific for “users/user” UDM module.

class univention.udm.modules.users_user.UsersUserObjectProperties(udm_obj: BaseObject)[source]#

Bases: GenericObjectProperties

users/user UDM properties.

class univention.udm.modules.users_user.UsersUserObject[source]#

Bases: GenericObject

Better representation of users/user properties.

Don’t instantiate a GenericObject directly. Use GenericModule.get(), GenericModule.new() or GenericModule.search().

udm_prop_class#

alias of UsersUserObjectProperties

class univention.udm.modules.users_user.UsersUserModule(name: str, connection: Any, api_version: int)[source]#

Bases: GenericModule

UsersUserObject factory

meta = GenericModuleMetadata(supported_api_versions=[1, 2, 3], suitable_for=['users/user'], used_api_version=None, default_positions_property='users')#