[SSSD] [PATCHES] views: allow view name change at startup

Sumit Bose sbose at redhat.com
Mon Nov 24 09:20:18 UTC 2014


On Sat, Nov 22, 2014 at 03:39:45PM +0100, Jakub Hrozek wrote:
> On Wed, Nov 19, 2014 at 01:36:02PM +0100, Sumit Bose wrote:
> > Hi,
> > 
> > with this patch SSSD can switch to a new view at startup. There is a
> > todo in the third patch. Currently the user and group entries are only
> > invalidated so that the new view/override data is checked at the next
> > request for the given object. Additionally we might want to start a
> > background task with refreshes the existing entries in the cache
> > unconditionally. But this might result in unwanted network peaks during
> > startup. So I left the implementation for a later patch, if this is
> > needed.
> > 
> > bye,
> > Sumit
> 
> Do these patches depend on some other patchset? I'm getting:
> 
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:237:59: error: use of undeclared identifier 'TEST_VIEW_NAME'
>     ret = sysdb_update_view_name(test_ctx->domain->sysdb, TEST_VIEW_NAME);
>                                                           ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:240:46: error: use of undeclared identifier 'TEST_USER_NAME'
>     ret = sysdb_store_user(test_ctx->domain, TEST_USER_NAME, NULL,
>                                              ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:246:65: error: use of undeclared identifier 'TEST_USER_NAME'
>     ret = sysdb_search_user_by_name(test_ctx, test_ctx->domain, TEST_USER_NAME,
>                                                                 ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:255:34: error: use of undeclared identifier 'TEST_ANCHOR_PREFIX'
>                                  TEST_ANCHOR_PREFIX TEST_USER_SID);
>                                  ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:258:50: error: use of undeclared identifier 'TEST_VIEW_NAME'
>     ret = sysdb_store_override(test_ctx->domain, TEST_VIEW_NAME,
>                                                  ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:272:59: error: use of undeclared identifier 'TEST_VIEW_NAME'
>     ret = sysdb_delete_view_tree(test_ctx->domain->sysdb, TEST_VIEW_NAME);
>                                                           ^
>   CC       src/responder/ifp/ifp_tests-ifpsrv_util.o
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:299:59: error: use of undeclared identifier 'TEST_VIEW_NAME'
>     ret = sysdb_update_view_name(test_ctx->domain->sysdb, TEST_VIEW_NAME);
>                                                           ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:302:46: error: use of undeclared identifier 'TEST_USER_NAME'
>     ret = sysdb_store_user(test_ctx->domain, TEST_USER_NAME, NULL,
>                                              ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:308:65: error: use of undeclared identifier 'TEST_USER_NAME'
>     ret = sysdb_search_user_by_name(test_ctx, test_ctx->domain, TEST_USER_NAME,
>                                                                 ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:317:34: error: use of undeclared identifier 'TEST_ANCHOR_PREFIX'
>                                  TEST_ANCHOR_PREFIX TEST_USER_SID);
>                                  ^
>   CC       src/responder/common/ifp_tests-responder_utils.o
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:320:50: error: use of undeclared identifier 'TEST_VIEW_NAME'
>     ret = sysdb_store_override(test_ctx->domain, TEST_VIEW_NAME,
>                                                  ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:328:59: error: use of undeclared identifier 'TEST_VIEW_NAME'
>     ret = sysdb_delete_view_tree(test_ctx->domain->sysdb, TEST_VIEW_NAME);
>                                                           ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:331:65: error: use of undeclared identifier 'TEST_USER_NAME'
>     ret = sysdb_search_user_by_name(test_ctx, test_ctx->domain, TEST_USER_NAME,
>                                                                 ^
> /home/remote/jhrozek/devel/sssd/src/tests/cmocka/test_sysdb_views.c:341:65: error: use of undeclared identifier 'TEST_USER_NAME'
>     ret = sysdb_search_user_by_name(test_ctx, test_ctx->domain, TEST_USER_NAME,
>                                                                 ^
> 14 errors generated.
> 

ah, sorry, I attached a new version with the missing defines.

> 
> > From 1b7c7b26edb55f238b1649c730cb277b57c60f46 Mon Sep 17 00:00:00 2001
> > From: Sumit Bose <sbose at redhat.com>
> > Date: Wed, 12 Nov 2014 12:43:23 +0100
> > Subject: [PATCH 1/3] sysdb: add sysdb_delete_view_tree()
> > 
> > ---
> >  src/db/sysdb.h                      |  2 ++
> >  src/db/sysdb_views.c                | 34 ++++++++++++++++++++
> >  src/tests/cmocka/test_sysdb_views.c | 63 +++++++++++++++++++++++++++++++++++++
> >  3 files changed, 99 insertions(+)
> > 
> > diff --git a/src/db/sysdb.h b/src/db/sysdb.h
> > index 7a51117..a3ffa7b 100644
> > --- a/src/db/sysdb.h
> > +++ b/src/db/sysdb.h
> > @@ -444,6 +444,8 @@ errno_t sysdb_update_view_name(struct sysdb_ctx *sysdb, const char *view_name);
> >  errno_t sysdb_get_view_name(TALLOC_CTX *mem_ctx, struct sysdb_ctx *sysdb,
> >                              char **view_name);
> >  
> > +errno_t sysdb_delete_view_tree(struct sysdb_ctx *sysdb, const char *view_name);
> > +
> 
> Looks like some of the functions accept sysdb_ctx and some accept
> sss_domain_info. I generally prefer sss_domain_info as sysdb_ctx seems like a
> bit low-level property that should ideally be used in the sysdb module only.
> 
> If you agree, can you file a ticket to unify the API?

In general yes, but so far I used sysdb_ctx instead of sss_domain_info
on purpose for calls which are independent of a domain or touches all
domains. E.g. if sysdb_invalidate_overrides() uses sss_domain_info
instead of sysdb_ctx one might ask if this call only invalidates the
objects of the given domain.

So, I'm not against using sss_domain_info I just wanted to explain my
reasoning for using sysdb_ctx.

> 
> 
> > From 383584a035b9442eb4d50d0ff08f06b6d0cf348a Mon Sep 17 00:00:00 2001
> > From: Sumit Bose <sbose at redhat.com>
> > Date: Wed, 12 Nov 2014 16:26:55 +0100
> > Subject: [PATCH 2/3] sysdb: add sysdb_invalidate_overrides()
> 
> Looks good to me.
> 
> > From 1cecb49aac804396c1b61812f6d2b6ea076cccc3 Mon Sep 17 00:00:00 2001
> > From: Sumit Bose <sbose at redhat.com>
> > Date: Wed, 12 Nov 2014 16:30:57 +0100
> > Subject: [PATCH 3/3] views: allow view name change at startup
> > 
> > Currently some manual steps are needed on a FreeIPA to switch from one
> > view to another. With this patch the IPA provider checks at startup if
> > the view name changed and does the needed steps automatically. Besides
> > saving the new view name this includes removing the old view data and
> > marking the user and group entries as invalid.
> 
> The code looks good, but I always get:
> (Sat Nov 22 15:37:28 2014) [sssd[be[ipa.example.com]]]
> [ipa_get_view_name_done] (0x0020): View name changed, this is currently
> not supported!
> 
> When switching from one view to another...I tested using idview-unapply
> and then idview-apply to another view, is there some other way?

Do you see this at restart or at runtime?

bye,
Sumit
> _______________________________________________
> sssd-devel mailing list
> sssd-devel at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/sssd-devel



More information about the sssd-devel mailing list