[389-devel] Re: creating a universal class to replace "Entry"

2019-02-12 Thread Ludwig Krispenz


On 02/11/2019 08:35 AM, William Brown wrote:



On 11 Feb 2019, at 17:01, Anuj Borah  wrote:

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’]
)


There are many other types than this though?

src/lib389/lib389/plugins.py:23:class Plugin(DSLdapObject):
src/lib389/lib389/plugins.py:199:class MEPConfig(DSLdapObject):
src/lib389/lib389/plugins.py:233:class MEPTemplate(DSLdapObject):
src/lib389/lib389/plugins.py:444:class ReferentialIntegrityConfig(DSLdapObject):
src/lib389/lib389/plugins.py:758:class MemberOfSharedConfig(DSLdapObject):
src/lib389/lib389/plugins.py:887:class AutoMembershipRegexRule(DSLdapObject):
src/lib389/lib389/plugins.py:905:class AutoMembershipDefinition(DSLdapObject):
src/lib389/lib389/plugins.py:1015:class AutoMembershipRegexRule(DSLdapObject):
src/lib389/lib389/plugins.py:1120:class LinkedAttributesConfig(DSLdapObject):
src/lib389/lib389/plugins.py:1551:class AccountPolicyConfig(DSLdapObject):
src/lib389/lib389/plugins.py:1598:class DNAPluginConfig(DSLdapObject):
src/lib389/lib389/idm/organizationalrole.py:17:class 
OrganizationalRole(DSLdapObject):
src/lib389/lib389/idm/nscontainer.py:11:class nsContainer(DSLdapObject):
src/lib389/lib389/idm/nscontainer.py:49:class nsHiddenContainer(DSLdapObject):
src/lib389/lib389/idm/domain.py:11:class Domain(DSLdapObject):
src/lib389/lib389/idm/posixgroup.py:18:class PosixGroup(DSLdapObject):
src/lib389/lib389/idm/organization.py:17:class Organization(DSLdapObject):
src/lib389/lib389/idm/ipadomain.py:11:class IpaDomain(DSLdapObject):
src/lib389/lib389/idm/group.py:17:class Group(DSLdapObject):
src/lib389/lib389/idm/group.py:104:class UniqueGroup(DSLdapObject):
src/lib389/lib389/idm/organizationalunit.py:16:class 
OrganizationalUnit(DSLdapObject):
src/lib389/lib389/idm/account.py:15:class Account(DSLdapObject):
src/lib389/lib389/tombstone.py:18:class Tombstone(DSLdapObject):
src/lib389/lib389/backend.py:393:class Backend(DSLdapObject):
src/lib389/lib389/backend.py:831:class DatabaseConfig(DSLdapObject):
src/lib389/lib389/tasks.py:24:class Task(DSLdapObject):
src/lib389/lib389/pwpolicy.py:287:class PwPolicyEntry(DSLdapObject):
src/lib389/lib389/config.py:28:class Config(DSLdapObject):
src/lib389/lib389/config.py:205:class Encryption(DSLdapObject):
src/lib389/lib389/config.py:233:class RSA(DSLdapObject):
src/lib389/lib389/config.py:358:class LDBMConfig(DSLdapObject):
src/lib389/lib389/monitor.py:16:class Monitor(DSLdapObject):
src/lib389/lib389/monitor.py:109:class MonitorLDBM(DSLdapObject):
src/lib389/lib389/monitor.py:143:class MonitorBackend(DSLdapObject):
src/lib389/lib389/monitor.py:190:class MonitorChaining(DSLdapObject):
src/lib389/lib389/saslmap.py:12:class SaslMapping(DSLdapObject):
src/lib389/lib389/index.py:27:class Index(DSLdapObject):
src/lib389/lib389/index.py:64:class VLVSearch(DSLdapObject):
src/lib389/lib389/index.py:147:class VLVIndex(DSLdapObject):
src/lib389/lib389/encrypted_attributes.py:15:class EncryptedAttr(DSLdapObject):
src/lib389/lib389/_mapped_object.py:84:class DSLdapObject(DSLogging):
src/lib389/lib389/_mapped_object.py:441:if not issubclass(type(obj1), 
DSLdapObject) or not issubclass(type(obj2), DSLdapObject):
src/lib389/lib389/_mapped_object.py:442:raise ValueError("Invalid 
arguments: Expecting object types that inherits 'DSLdapObject' class")
src/lib389/lib389/agreement.py:23:class Agreement(DSLdapObject):
src/lib389/lib389/cos.py:18:class CosTemplate(DSLdapObject):
src/lib389/lib389/cos.py:65:class CosIndirectDefinition(DSLdapObject):
src/lib389/lib389/cos.py:111:class CosPointerDefinition(DSLdapObject):
src/lib389/lib389/replica.py:881:class Replica(DSLdapObject):
src/lib389/lib389/replica.py:1288:class 
BootstrapReplicationManager(DSLdapObject):
src/lib389/lib389/mappingTree.py:381:class MappingTree(DSLdapObject):
src/lib389/lib389/chaining.py:18:class ChainingConfig(DSLdapObject):
src/lib389/lib389/chaining.py:59:class ChainingDefault(DSLdapObject):
src/lib389/lib389/chaining.py:81:class ChainingLink(DSLdapObject):
src/lib389/lib389/changelog.py:20:class Changelog5(DSLdapObject):
src/lib389/lib389/rootdse.py:15:class RootDSE(DSLdapObject):
src/lib389/lib389/referral.py:14:class Referral(DSLdapObject):
src/lib389/lib389/schema.py:71:class Schema(DSLdapObject):

At worst, you can always use a raw:

DSLdapObject(instance, dn)

to get “minimal” access to *anything* regardless of type. The entire value 
proposition of lib389 is that we wrap *the most common and useful types*. Each 
one of these sub-classes of DSLdapObject provides wrappers, helps, guides, 
functions and more to interacting with nearly every aspect of the server.


This way we will be able to create any kind of entry whether it may be 
user/role/sub suffix  or anything .

I think this is already a solved problem, so I don’t think we really need 

[389-devel] Re: creating a universal class to replace "Entry"

2019-02-10 Thread William Brown


> On 11 Feb 2019, at 17:43, Anuj Borah  wrote:
> 
> @William Brown  Thanks for the reply , please look into the PR: 
> https://pagure.io/389-ds-base/pull-request/50171
> 
> Its to create nsfilterrole . 

I don’t understand how this email and that PR are related? 
> 

—
Sincerely,

William Brown
Software Engineer, 389 Directory Server
SUSE Labs
___
389-devel mailing list -- 389-devel@lists.fedoraproject.org
To unsubscribe send an email to 389-devel-le...@lists.fedoraproject.org
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@lists.fedoraproject.org


[389-devel] Re: creating a universal class to replace "Entry"

2019-02-10 Thread Anuj Borah
@William Brown   Thanks for the reply , please
look into the PR: https://pagure.io/389-ds-base/pull-request/50171

Its to create nsfilterrole .

On Mon, Feb 11, 2019 at 1:06 PM William Brown  wrote:

>
>
> > On 11 Feb 2019, at 17:01, Anuj Borah  wrote:
> >
> > 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’]
>
> > )
> >
>
> There are many other types than this though?
>
> src/lib389/lib389/plugins.py:23:class Plugin(DSLdapObject):
> src/lib389/lib389/plugins.py:199:class MEPConfig(DSLdapObject):
> src/lib389/lib389/plugins.py:233:class MEPTemplate(DSLdapObject):
> src/lib389/lib389/plugins.py:444:class
> ReferentialIntegrityConfig(DSLdapObject):
> src/lib389/lib389/plugins.py:758:class MemberOfSharedConfig(DSLdapObject):
> src/lib389/lib389/plugins.py:887:class
> AutoMembershipRegexRule(DSLdapObject):
> src/lib389/lib389/plugins.py:905:class
> AutoMembershipDefinition(DSLdapObject):
> src/lib389/lib389/plugins.py:1015:class
> AutoMembershipRegexRule(DSLdapObject):
> src/lib389/lib389/plugins.py:1120:class
> LinkedAttributesConfig(DSLdapObject):
> src/lib389/lib389/plugins.py:1551:class AccountPolicyConfig(DSLdapObject):
> src/lib389/lib389/plugins.py:1598:class DNAPluginConfig(DSLdapObject):
> src/lib389/lib389/idm/organizationalrole.py:17:class
> OrganizationalRole(DSLdapObject):
> src/lib389/lib389/idm/nscontainer.py:11:class nsContainer(DSLdapObject):
> src/lib389/lib389/idm/nscontainer.py:49:class
> nsHiddenContainer(DSLdapObject):
> src/lib389/lib389/idm/domain.py:11:class Domain(DSLdapObject):
> src/lib389/lib389/idm/posixgroup.py:18:class PosixGroup(DSLdapObject):
> src/lib389/lib389/idm/organization.py:17:class Organization(DSLdapObject):
> src/lib389/lib389/idm/ipadomain.py:11:class IpaDomain(DSLdapObject):
> src/lib389/lib389/idm/group.py:17:class Group(DSLdapObject):
> src/lib389/lib389/idm/group.py:104:class UniqueGroup(DSLdapObject):
> src/lib389/lib389/idm/organizationalunit.py:16:class
> OrganizationalUnit(DSLdapObject):
> src/lib389/lib389/idm/account.py:15:class Account(DSLdapObject):
> src/lib389/lib389/tombstone.py:18:class Tombstone(DSLdapObject):
> src/lib389/lib389/backend.py:393:class Backend(DSLdapObject):
> src/lib389/lib389/backend.py:831:class DatabaseConfig(DSLdapObject):
> src/lib389/lib389/tasks.py:24:class Task(DSLdapObject):
> src/lib389/lib389/pwpolicy.py:287:class PwPolicyEntry(DSLdapObject):
> src/lib389/lib389/config.py:28:class Config(DSLdapObject):
> src/lib389/lib389/config.py:205:class Encryption(DSLdapObject):
> src/lib389/lib389/config.py:233:class RSA(DSLdapObject):
> src/lib389/lib389/config.py:358:class LDBMConfig(DSLdapObject):
> src/lib389/lib389/monitor.py:16:class Monitor(DSLdapObject):
> src/lib389/lib389/monitor.py:109:class MonitorLDBM(DSLdapObject):
> src/lib389/lib389/monitor.py:143:class MonitorBackend(DSLdapObject):
> src/lib389/lib389/monitor.py:190:class MonitorChaining(DSLdapObject):
> src/lib389/lib389/saslmap.py:12:class SaslMapping(DSLdapObject):
> src/lib389/lib389/index.py:27:class Index(DSLdapObject):
> src/lib389/lib389/index.py:64:class VLVSearch(DSLdapObject):
> src/lib389/lib389/index.py:147:class VLVIndex(DSLdapObject):
> src/lib389/lib389/encrypted_attributes.py:15:class
> EncryptedAttr(DSLdapObject):
> src/lib389/lib389/_mapped_object.py:84:class DSLdapObject(DSLogging):
> src/lib389/lib389/_mapped_object.py:441:if not
> issubclass(type(obj1), DSLdapObject) or not issubclass(type(obj2),
> DSLdapObject):
> src/lib389/lib389/_mapped_object.py:442:raise
> ValueError("Invalid arguments: Expecting object types that inherits
> 'DSLdapObject' class")
> src/lib389/lib389/agreement.py:23:class Agreement(DSLdapObject):
> src/lib389/lib389/cos.py:18:class CosTemplate(DSLdapObject):
> src/lib389/lib389/cos.py:65:class CosIndirectDefinition(DSLdapObject):
> src/lib389/lib389/cos.py:111:class CosPointerDefinition(DSLdapObject):
> src/lib389/lib389/replica.py:881:class Replica(DSLdapObject):
> src/lib389/lib389/replica.py:1288:class
> BootstrapReplicationManager(DSLdapObject):
> src/lib389/lib389/mappingTree.py:381:class MappingTree(DSLdapObject):
> src/lib389/lib389/chaining.py:18:class ChainingConfig(DSLdapObject):
> src/lib389/lib389/chaining.py:59:class ChainingDefault(DSLdapObject):
> src/lib389/lib389/chaining.py:81:class ChainingLink(DSLdapObject):
> src/lib389/lib389/changelog.py:20:class Changelog5(DSLdapObject):
> src/lib389/lib389/rootdse.py:15:class RootDSE(DSLdapObject):
> src/lib389/lib389/referral.py:14:class Referral(DSLdapObject):
> src/lib389/lib389/schema.py:71:class Schema(DSLdapObject):
>
> At worst, you can always use a raw:
>
> DSLdapObject(instance, dn)
>
> to get “minimal” access to *anything* regardless of type. The entire value
> proposition of lib389 is that we wrap *the most common and useful types*.
> Each