On Mon, Sep 29, 2014 at 02:52:10PM +0200, Pavel Březina wrote:
> On 09/29/2014 01:01 PM, Sumit Bose wrote:
> >On Mon, Sep 29, 2014 at 11:52:52AM +0200, Pavel Březina wrote:
> >>On 09/26/2014 04:36 PM, Sumit Bose wrote:
> >>>On Fri, Sep 26, 2014 at 01:41:39PM +0200, Pavel Březina wrote:
> >>>>On 09/26/2014 01:38 PM, Pavel Březina wrote:
> >>>>>On Wed, Sep 24, 2014 at 10:25:22AM +0200, Sumit Bose wrote:
> >>>>>>Hi,
> >>>>>>
> >>>>>>this patches contain the IPA provider part of
> >>>>>>https://fedorahosted.org/sssd/ticket/2375  as described in the FreeIPA
> >>>>>>design page
> >>>>>>http://www.freeipa.org/page/V4/Migrating_existing_environments_to_Trust
> >>>>>>
> >>>>>>Patches 0001, 0006 and 0007 contain new sysdb interfaces for views and
> >>>>>>overrides. 0002 and 0003 refactor some already existing calls.
> >>>>>>
> >>>>>>0004 adds the initial support for views and overrides and reads the view
> >>>>>>name for the client from the FreeIPA server or sets it to 'default' when
> >>>>>>running in ipa-server-mode. It adds some new options which currently
> >>>>>>misses man page entries and are not added to the python config API. I
> >>>>>>did this on purpose for the time being because I wanted to see first if
> >>>>>>the list is complete or if some options ca be dropped.
> >>>>>>
> >>>>>>0005 adds the request to get a specific override from the FreeIPA server
> >>>>>>and finally in 0008 the overrides are read during a request and saves or
> >>>>>>applied.
> >>>>>>
> >>>>>>This patches must be applied on to of the extdom patch I send yesterday.
> >>>>>>To add and manage views and override on the server side please have a
> >>>>>>look at Tomas's patch set on the freeipa-devel list
> >>>>>>(https://www.redhat.com/archives/freeipa-devel/2014-September/msg00336.html).
> >>>>>>
> >>>>>>
> >>>>>>bye,
> >>>>>>Sumit
> >>>
> >>>Pavel, Jakub, thank you for the review.
> >>>
> >>>>>
> >>>>>>From dedbb5ae2faa13d396e84ce9911ab1e9c0246836 Mon Sep 17 00:00:00 2001
> >>>>>>From: Sumit Bose <sb...@redhat.com>
> >>>>>>Date: Tue, 16 Sep 2014 15:18:53 +0200
> >>>>>>Subject: [PATCH 1/8] sysdb: add sysdb_update_view_name()
> >>>>>
> >>>>>ACK
> >>>>>
> >>>>>A unit test for the functions would be nice in order to avoid decreasing
> >>>>>the code coverage of the sysdb module, but I realize we have a deadline.
> >>>>>We should file a ticket, though.
> >>>
> >>>yes, I feel quite bad about the missing test, but my plan is to add them
> >>>after the dealine
> >>>
> >>>>>
> >>>>>It would also be nice to add a comment that it's not possible to have a
> >>>>>view w/o a name but we are trying to be on the safe side b/c name is not
> >>>>>MUST as we discussed on IRC with Sumit.
> >>>
> >>>done
> >>
> >>Ack.
> >>
> >>>>>
> >>>>>>From c09a8553d7371e46b84e980f38d017c7f84c2f87 Mon Sep 17 00:00:00 2001
> >>>>>>From: Sumit Bose <sb...@redhat.com>
> >>>>>>Date: Tue, 16 Sep 2014 15:22:08 +0200
> >>>>>>Subject: [PATCH 2/8] Add sdap_deref_search_with_filter_send()
> >>>>>
> >>>>>I would prefer to also add a matching _done and _recv functions, even if
> >>>>>they were wrappers around existing functions. But tevent coding style is
> >>>>>important to follow, we already had bugs about reusing a single tevent
> >>>>>callbacks for multiple requests.
> >>
> >>>+    if (sdap_is_control_supported(sh, LDAP_CONTROL_X_DEREF)) {
> >>>+        DEBUG(SSSDBG_TRACE_INTERNAL, "Server supports OpenLDAP deref\n");
> >>>+        state->deref_type = SDAP_DEREF_OPENLDAP;
> >>>+
> >>>+        subreq = sdap_x_deref_search_send(state, ev, opts, sh, 
> >>>search_base,
> >>>+                                          filter, deref_attr, attrs, maps,
> >>>+                                          num_maps, timeout);
> >>>+        if (!subreq) {
> >>>+            DEBUG(SSSDBG_OP_FAILURE, "Cannot start OpenLDAP deref 
> >>>search\n");
> >>>+            goto fail;
> >>>+        }
> >>>+    } else {
> >>>+        DEBUG(SSSDBG_OP_FAILURE,
> >>>+              "Server does not support any known deref method!\n");
> >>>+        goto fail;
> >>>+    }
> >>
> >>
> >>Would it be possible to use sdap_has_deref_support() instead of manually
> >>testing the support for OpenLDAP deref or you can't use ASQ for some reason?
> >
> >no, afaik ASQ can only do base searches and follow the references in the
> >given DN, so adding a filter won't work.
> >
> >>
> >>>
> >>>done
> >>>
> >>>>>
> >>>>>We can do it post-rebase, though. Just please file a ticket.
> >>>>>
> >>>>>
> >>>>>>From 3097c76ba9498b90df69935d24dc9ce55f602937 Mon Sep 17 00:00:00 2001
> >>>>>>From: Sumit Bose <sb...@redhat.com>
> >>>>>>Date: Fri, 19 Sep 2014 10:26:01 +0200
> >>>>>>Subject: [PATCH 3/8] IPA: make IPA ID context available to extdom
> >>>>>>client code
> >>>>>
> >>>>>ACK
> >>
> >>Still Ack.
> >>
> >>>>>
> >>>>>...aaand I stopped here.
> >>>>>
> >>>>>That was Jakub's part of the review.
> >>>>>
> >>>>>Patch 4: IPA: add view support and get view name
> >>>>>
> >>>>>>         if (ret != EOK) {
> >>>>>>-            DEBUG(SSSDBG_CRIT_FAILURE, "Unable to set SRV lookup
> >>>>>>plugin "
> >>>>>>-                                        "[%d]: %s\n", ret,
> >>>>>>strerror(ret));
> >>>>>>-            goto done;
> >>>>>>+            if (ret == ENOENT) {
> >>>>>>+                DEBUG(SSSDBG_CRIT_FAILURE,
> >>>>>>+                      "Cannot find view name in the cache. " \
> >>>>>>+                      "Will do online llokup later\n");
> >>>>>                                          ^ typo
> >>>
> >>>fixed
> >>>
> >>>>>>+            } else {
> >>>>>>+                DEBUG(SSSDBG_OP_FAILURE, "sysdb_get_view_name
> >>>>>>failed.\n");
> >>>>>>+                goto done;
> >>>>>>+            }
> >>>>>>+        }
> >>>>>
> >>>>>>     ctx->ranges_search_bases = 
> >>>>>> id_ctx->ipa_options->ranges_search_bases;
> >>>>>>+    ctx->host_search_bases = id_ctx->ipa_options->host_search_bases;
> >>>>>>     ctx->configured_explicit = configured_explicit;
> >>>>>
> >>>>>This change seems to be unrelated to this patch. Shouldn't it be a
> >>>>>separate commit?
> >>>
> >>>no, the view name is an attribute of the host object so we must be able
> >>>to search it.
> >>
> >>Ok. Typo is still there, I'm sending a trivial patch. Feel free to squash
> >>it.
> >
> >squashed in.
> >
> >>
> >>Ack.
> >>
> >>>
> >>>>>
> >>>>>Patch 5: views: add ipa_get_ad_override_send()
> >>>>>
> >>>>>Looks good, but can you add some more tracing debug messages there? For
> >>>>>example what view are we searching for and that an override was found.
> >>>
> >>>done
> >>
> >>Ack.
> >>
> >>>
> >>>>>
> >>>>>Patch 6:
> >>>>>
> >>>>>>+    const char *obj_attrs[] = { SYSDB_OBJECTCLASS,
> >>>>>>+                              SYSDB_OVERRIDE_DN,
> >>>>>>+                                   NULL};
> >>>>>
> >>>>>Indentation.
> >>>
> >>>fixed
> >>>
> >>>>>
> >>>>>>+        if (ret != EOK) {
> >>>>>>+            DEBUG(SSSDBG_CRIT_FAILURE,
> >>>>>>+                  "Missing anchor in overide attributes.\n");
> >>>>>                                            ^ typo
> >>>
> >>>fixed
> >>>
> >>>>>>+            ret = EINVAL;
> >>>>>>+            goto done;
> >>>>>>+        }
> >>>>>
> >>>>>>+    if (ret != EOK) {
> >>>>>>+        if (ret == ENOENT) {
> >>>>>>+            DEBUG(SSSDBG_CRIT_FAILURE, "Object to override does not
> >>>>>>exists.\n");
> >>>>>>+        } else {
> >>>>>>+            DEBUG(SSSDBG_OP_FAILURE, "sysdb_search_entry failed.\n");
> >>>>>>+        }
> >>>>>>+        goto done;
> >>>>>>+    }
> >>>>>
> >>>>>Can you use if (ret == ENOENT) else if (ret != EOK) here? I think it is
> >>>>>simpler.
> >>>
> >>>I prefer it the other way, becasue I think it makes it more clear that
> >>>it is an error in all cases and only adds a special messages for the
> >>>ENOENT case.
> >>
> >>Ok.
> >>
> >>>
> >>>>>
> >>>>>>+    if (obj_override_dn != NULL) {
> >>>>>>+        if (strcmp(obj_override_dn, override_dn_str) != 0) {
> >>>>>>+            DEBUG(SSSDBG_CRIT_FAILURE,
> >>>>>>+                  "Existing [%s] and new [%s] overid DN do not
> >>>>>>match.\n",
> >>>>>                                                  ^ typo
> >>>
> >>>fixed
> >>>
> >>>>>>+                   obj_override_dn, override_dn_str);
> >>>>>>+            ret = EINVAL;
> >>>>>>+            goto done;
> >>>>>>+        }
> >>>>>>+
> >>>>>>+        add_ref = false;
> >>>>>
> >>>+    }
> >>
> >>>+        case SYSDB_MEMBER_GROUP:
> >>>+            ret = ldb_msg_add_string(msg, SYSDB_OBJECTCLASS,
> >>>+                                     SYSDB_OVERRIDE_USER_CLASS);
> >>>+            break;
> >>
> >>Shouldn't it say SYSDB_OVERRIDE_GROUP_CLASS?
> >
> >D'oh, fixed.
> >
> >>
> >>>>>
> >>>>>Patch 7: sysdb: sysdb_apply_default_override
> >>>>>
> >>>>>Ack.
> >>
> >>Ack stays, but can you clarify what is the intended use case of this
> >>function in the commit message please?
> >
> >Comment added.
> >
> >>
> >>>>>
> >>>>>Patch 8: views: get overrides during user and group lookups
> >>>>>
> >>>>>Ack.
> >>
> >>>    if (override_attrs != NULL) {
> >>>        ret = sysdb_apply_default_override(state->user_dom->sysdb,
> >>>                                           override_attrs,
> >>>                                           state->obj_msg->dn);
> >>>        if (ret != EOK) {
> >>>            DEBUG(SSSDBG_OP_FAILURE, "sysdb_apply_default_override 
> >>> failed.\n");
> >>>            goto fail;
> >>>        }
> >>>    }
> >>
> >>I thought the sysdb_apply_default_override is used to override original
> >>object in sysdb with information from the default view. This looks like it
> >>is overwritten with data from whatever view we are using.
> >
> >This code path is in ipa-server-mode where the default view is
> >hardcoded/fixed by definition. I added a comment to make this clear.
> >
> >>
> >>>>
> >>>>BTW I checked out your repo. The patches couldn't be applied to master 
> >>>>even
> >>>>with the extdom patch here on the list.
> >>>
> >>>I send a new version of the extdom patch as well all rebase on master, I
> >>>hope it will work now.
> >>>
> >>>New version attached.
> >>>
> >>>bye,
> >>>Sumit
> >>
> >>I get this warning:
> >>/home/pbrezina/workspace/sssd/src/providers/ipa/ipa_views.c: In function
> >>'ipa_get_ad_override_done':
> >>/home/pbrezina/workspace/sssd/src/providers/ipa/ipa_views.c:207:9: error:
> >>format '%d' expects argument of type 'int', but argument 6 has type 'size_t'
> >>[-Werror=format]
> >
> >Your fix is squashed in.
> >
> >Thank you for the review. New version attached.
> >
> >bye,
> >Sumit
> 
> Hi,
> I'm sending two more trivial debug patches to squash in. Otherwise its an
> code wise ack. I'm running some tests now.
> 

Thank you. Jakub, in case there are no other issues, can you add them
when committing the patches, or shall I send a new round?

bye,
Sumit

_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to