Hi,
As 'Entry' is not allowed to use now , In replace of Entry we are suggested to use UserAccounts and UserAccount which is very limited to some object classes . (['account','posixaccount','inetOrgPerson','organizationalPerson'])
What if we need to create some entry with other object classes rather than those fixed in UserAccounts and UserAccount like bellow :
---------------------------------------------
Role Entry:
topo.standalone.add_s(
Entry(('cn=new managed role,dc=example,dc=com', {
'objectclass': ['top', 'ldapsubentry', 'nsroledefinition', 'nssimpleroledefinition', 'nsmanagedroledefinition'],
'description': 'This is the new managed role configuration',
'cn': 'new managed role',
})))
Entry(('cn=new managed role,dc=example,dc=com', {
'objectclass': ['top', 'ldapsubentry', 'nsroledefinition', 'nssimpleroledefinition', 'nsmanagedroledefinition'],
'description': 'This is the new managed role configuration',
'cn': 'new managed role',
})))
--------------------------------------------------
Sub suffix:
topo.standalone.add_s(
Entry(('dc=subexample, dc=example, dc=com', {
'objectclass': ['top', 'dcobject'],
'dc': 'subexample',
})))
Entry(('dc=subexample, dc=example, dc=com', {
'objectclass': ['top', 'dcobject'],
'dc': 'subexample',
})))
----------------------------------------------------------
Other Entry:
topo.standalone.add_s(
Entry(('cn=CCOS, ou=People, dc=example, dc=com', {
'objectclass': ['top', 'LDAPSubentry', 'cosSuperDefinition', 'cosClassicDefinition'],
'cosTemplateDn': ['ou=MailSchemeClasses, ou=COS, dc=example, dc=com'],
'cosSpecifier': 'emailclass',
'cosAttribute': ['mailquota', 'multiLineDescription override'],
'cn': 'ccos'
})))
Entry(('cn=CCOS, ou=People, dc=example, dc=com', {
'objectclass': ['top', 'LDAPSubentry', 'cosSuperDefinition', 'cosClassicDefinition'],
'cosTemplateDn': ['ou=MailSchemeClasses, ou=COS, dc=example, dc=com'],
'cosSpecifier': 'emailclass',
'cosAttribute': ['mailquota', 'multiLineDescription override'],
'cn': 'ccos'
})))
--------------------------------------
For above kind of entries there is no way we can create them without using "Entry" or using
UserAccounts and UserAccount.
To deal with this problem i have created one universal class that can be used to create any kind of entry which may be a user , role, or sub suffix. Take a look bellow .
class UniversalEntry(DSLdapObject):
def __init__(self, instance, objectclasses, rdn, dn):
super(UniversalEntry, self).__init__(instance, dn)
self._rdn_attribute = rdn
self._create_objectclasses = objectclasses
def __init__(self, instance, objectclasses, rdn, dn):
super(UniversalEntry, self).__init__(instance, dn)
self._rdn_attribute = rdn
self._create_objectclasses = objectclasses
and this one can be used for above examples:
-----------------------------------------
properties = {
'description': 'This is the new managed role configuration',
'cn': 'new managed role',
}
user = UniversalEntry(topo.standalone, ['top', 'ldapsubentry', 'nsroledefinition', 'nssimpleroledefinition','nsmanagedroledefinition'], 'cn','cn=new managed role,dc=example,dc=com')
user.create(properties=properties)
'description': 'This is the new managed role configuration',
'cn': 'new managed role',
}
user = UniversalEntry(topo.standalone, ['top', 'ldapsubentry', 'nsroledefinition', 'nssimpleroledefinition','nsmanagedroledefinition'], 'cn','cn=new managed role,dc=example,dc=com')
user.create(properties=properties)
---------------------------------------------------
properties = {'dc': 'subexample'}
user = UniversalEntry(topo.standalone, ['top', 'dcobject'], 'dc', 'dc=subexample, dc=example, dc=com')
user.create(properties=properties)
user = UniversalEntry(topo.standalone, ['top', 'dcobject'], 'dc', 'dc=subexample, dc=example, dc=com')
user.create(properties=properties)
---------------------------------------------
properties = {
'cosTemplateDn': ['ou=MailSchemeClasses, ou=COS, dc=example, dc=com'],
'cosSpecifier': 'emailclass',
'cosAttribute': ['mailquota', 'multiLineDescription override'],
'cn': 'ccos'
}
user = UniversalEntry(topo.standalone, ['top', 'LDAPSubentry', 'cosSuperDefinition', 'cosClassicDefinition'], 'cn', 'cn=CCOS, ou=People, dc=example, dc=com')
'cosTemplateDn': ['ou=MailSchemeClasses, ou=COS, dc=example, dc=com'],
'cosSpecifier': 'emailclass',
'cosAttribute': ['mailquota', 'multiLineDescription override'],
'cn': 'ccos'
}
user = UniversalEntry(topo.standalone, ['top', 'LDAPSubentry', 'cosSuperDefinition', 'cosClassicDefinition'], 'cn', 'cn=CCOS, ou=People, dc=example, dc=com')
------------------------------------------------
This way we will be able to create any kind of entry whether it may be user/role/sub suffix or anything .
Please let me know what other changes i have to do to make more sophisticated.
Regards
Anuj Borah
_______________________________________________ 389-devel mailing list -- 389-devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to 389-devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/389-devel@xxxxxxxxxxxxxxxxxxxxxxx