[Freeipa-devel] [PATCH] Don't load the LDAP schema during startup

Jan Zelený jzeleny at redhat.com
Wed Feb 23 08:02:26 UTC 2011


Rob Crittenden <rcritten at redhat.com> wrote:
> Jan Zelený wrote:
> > Rob Crittenden<rcritten at redhat.com>  wrote:
> >> Jan Zelený wrote:
> >>> Loading of the schema is now performed in the first request that
> >>> requires it.
> >>> 
> >>> https://fedorahosted.org/freeipa/ticket/583
> >>> 
> >>> Jan
> >> 
> >> We still need to enforce that we get the schema, some low-level
> >> functions depend on it. Also, if the UI doesn't get its aciattrs (which
> >> are derived from the schema) then nothing will be editable.
> > 
> >> I'm getting this backtrace if I force no schema by disabling get_schema:
> > Ok, I'm sending new version, it should handle these exceptions better and
> > the operation should fail if it needs the schema and the schema is not
> > available for some reason.
> 
> This breaks the XML-RPC server. I fixed one problem:
> --- a/ipaserver/plugins/ldap2.py
> +++ b/ipaserver/plugins/ldap2.py
> @@ -253,9 +253,10 @@ class ldap2(CrudBackend, Encoder):
> 
>       def get_syntax(self, attr, value):
>           if not self.schema:
> -            self.schema = get_schema(self.ldap_uri, self.conn)
> -            if not self.schema:
> +            schema = get_schema(self.ldap_uri, self.conn)
> +            if not schema:
>                   return None
> +            object.__setattr__(self, 'schema', schema)
>           obj = self.schema.get_obj(_ldap.schema.AttributeType, attr)
>           if obj is not None:
>               return obj.syntax
> 
> But simply things like get_entry() return an InternalError now. I'm not
> sure where you were going by adding this.
> 
> rob

Ok, no problem. It's possible that I simply did a mistake thinking I can do 
something in Python what is not really possible.

About that InternalError: I think raising InternalError when we cannot load 
the schema to do the decoding is the right thing to do. Do you have a better 
solution? I thought about returning empty result, but that would mean we have 
to check the result in every funtction that is calling them and raising 
InternalError there.

-- 
Thank you
Jan Zeleny

Red Hat Software Engineer
Brno, Czech Republic




More information about the Freeipa-devel mailing list