[Freeipa-devel] [PATCH 0325] Add Domain Level feature

Ludwig Krispenz lkrispen at redhat.com
Fri May 15 07:22:47 UTC 2015


On 05/14/2015 11:48 AM, Jan Cholasta wrote:
> Hi,
>
> Dne 14.5.2015 v 11:00 Tomas Babej napsal(a):
>> Hi,
>>
>> this patch implements the domain level feature.
>>
>> https://fedorahosted.org/freeipa/ticket/5018
>>
>> Tomas
>
> 1)
>
> +# Create entry proclaiming Domain Level support of this master
> +# This will update the supported Domain Levels during upgrade
> +dn: cn=Domain Level support,cn=$FQDN,cn=masters,cn=ipa,cn=etc,$SUFFIX
> +default: objectClass: top
> +default: objectClass: nsContainer
> +default: objectClass: ipaConfigObject
> +default: objectClass: ipaSupportedDomainLevelConfig
> +only: ipaMinDomainLevel: $MIN_DOMAIN_LEVEL
> +only: ipaMaxDomainLevel: $MAX_DOMAIN_LEVEL
>
> The design states that supported domain levels should be stored 
> directly in cn=$FQDN,cn=masters,cn=ipa,cn=etc,$SUFFIX and I agree with 
> that - there is no reason to have this information in a separate entry.
yes, the design states that the domainlevel supported by a server should 
be stored in the cn=fqdn entry,

but this is only informational, saying what level a server could handle  
and the selected level used has to be set and stored and the design doc 
says this has to be in:

"Selected Domain level shall be stored in cn=DomainLevel,cn=etc,SUFFIX"

Tomas,
I don't see the handling of the global doamin level entry

Ludwig
>
>
> 2) I though we agreed to call the command domainlevel-set instead of 
> domainlevel-raise: 
> <https://www.redhat.com/archives/freeipa-devel/2015-May/msg00101.html>.
>
>
> 3) Domain level is just a single integer and it should be treated as 
> such, there's no need for an LDAPObject plugin and other unnecessary 
> complexities. The implemetation could be as simple as (from top of my 
> head, untested):
>
>     domainlevel_output = (
>         output.Output('result', int)
>     )
>
>     @register()
>     class domainlevel-get(Command):
>         has_output = domainlevel_output
>
>         def execute(self, *args, **options):
>             ldap = self.api.Backend.ldap2
>
>             dn = ...
>             entry = ldap.get_entry(dn, ['ipaDomainLevel'])
>
>             return {'result': entry.single_value['ipaDomainLevel']}
>
>     @register()
>     class domainlevel-set(Command):
>         has_output = domainlevel_output
>
>         takes_args = (
>             Int('value'),
>         )
>
>         def execute(self, *args, **options):
>             ldap = self.api.Backend.ldap2
>
>             value = args[0]
>             ... validate value ...
>
>             dn = ...
>             entry = ldap.get_entry(dn, ['ipaDomainLevel'])
>             entry.single_value['ipaDomainLevel'] = value
>             ldap.update_entry(entry)
>
>             return {'result': value}
>
>
> Honza
>




More information about the Freeipa-devel mailing list