2017-09-12 21:35 GMT+02:00 Christopher Baines : > On Mon, 11 Sep 2017 22:10:22 +0200 > Catonano wrote: > > > I could use some code review on my Trytond service hypothesis > > > > As far as I understand, there are 2 steps that need to be done in > > order for a Trytond service to be usable. > > > > 1) as the "postgres" role (that is as the operating system "postgres" > > user), create a "tryton" role > > > > 2) as the tryton user (hence under the tryton role) run the Tryton > > initialization script (trytond-admin -c -d > name> --all) > > > > I feel like I should extend the postgresql service in order to create > > te trytond role but I don't know how > > I don't think there is any current approach for doing this. > > Service extension could be one way of doing it. It's similar to how > other services in Guix interact with each other. > > However, I believe creating a role can only be done when the PostgreSQL > server is running, which means that you'd need to defer creating the > role until that point. Keeping this in a single shepherd service might > not be easy to implement, and even if you did, there are some usability > issues, e.g. if you add a new service to the system, and that service > also extends PostgreSQL, then you might run in to trouble creating the > role for the new service, without needlessly restarting the PostgreSQL > service in the process. > > One approach I've implemented and used [1] is to do create roles for > PostgreSQL when you start the service that uses that role. > Yes, I'll work on this approach from now on > > I also remember Ludo suggesting using additional services to handle > this kind of setup, which I understood to be something like a > tryton-postgresql-role shepherd service, which the tryton shepherd > service would require. > I attempted this but my trytond-postgres-role-service-type doesn't extend shepherd-root-service-type I chose not to extend shepherd-root-service-type because the trytond role doesn't require a daemon running It has to be created one off (una tantum) so, I tought, a simple activation will do But now, the trytond-service-type (in charge of running the trytond daemon) should require trytond-postgres-role among its dependencies but there is NO sheperd service provisioning a postgres role So this is what I end up with (when testing the system with the marionette machinery) srfi/srfi-1.scm:640:9: In procedure for-each: srfi/srfi-1.scm:640:9: Throw to key `srfi-34' with args `(#)'. make: *** [Makefile:5295: check-system] Error 1 Should I make the trytond-postgres-role a sheperd service ? Admittedly I don't like the idea So, I'm thinking, I'll get back to creating the postgres role upon activation of the trytond-service-type I failed to foresee this issue so I wasted some work :-/ The branch is here, should anyone want to take a look (pay attention, I rebase carelessly) https://gitlab.com/humanitiesNerd/guix-hacks