On Thu, Aug 18, 2022 at 02:39:36PM +0200, Oliver Schad wrote: > > - It creates the appropriate service directory for this particular > > VPN config (possibly based on a template) > > - It calls s6-svlink or the like to register the new service, which > > automatically also notifies s6-svscan that a new service has been > > added > > That would just move 3 components to another level but they are > still needed: scanning existing service directories, diffing between > desired and current state and applying - so creating or removing > directories.
Right. And unfortunately that scanning/comparing of current and desired states can quickly destroy the elegance of the original idea. But I believe there is a way to make this work without explicitly scanning (except for the necessary minimum) and without comparing or keeping internal state. Various features and behavior details that Laurent already added to s6 make this very doable. Please take a look at: https://github.com/docelic/s6-dyn It is a working demo I put together in the last couple hours to demonstrate the proposed model. The README covers a runnable demo / test case. After that, you could read the comments in `manager/manager.rb` to get a better description of the design decisions and alternative behaviors that are possible. (The manager is in Ruby since I saw you using it. It could be any laguage.) If you, Laurent, or the rest of the list have any comments or suggestions for improvements, please share. (The manager is slightly customized to your VPN example, but it can easily be extended and made generic.) Thanks, Davor