Let's say we have a service, foo.target and a service foo that is set as before = foo.target, and another service bar that has depends-on = foo.target. The order of startup will be foo => foo.target => bar in this case.
However, there is no way to control what happens when foo fails to come up. I'd like to be able to make sure that if foo fails to come up, foo.target also fails. This can currently only be done by having the startup sequence of foo manually add a regular or milestone dependency from foo.target to foo.
The intended use of this is for firewall services, so their failure can abort the startup of further network services, but without the network services depending on a particular firewall. Currently we have a pre-network.target internal service which things that expect firewall to be up depend on. By having firewalls specify something like before-ms = pre-network.target instead of the current before = pre-network.target, we could achieve this more cleanly.
Activity
2i was thinking the network.target could just come up regardless of the status of firewall in this case, but i'm fine with any behavior here (the user is not meant to start targets manually, and if they do, they're aware of the consequences)
For clarity on what is wanted here: supposing that your
firewallfails and causesnetwork.targetto fail as a result. Then the user (sysadmin) issues:What is the expected outcome? I think you're probably going to want this to either fail immediately, or at least to try and re-start the
firewallbefore allowingnetwork.targetto start? In that case this is less like a "before" and more like an actual (reverse) dependency. This could still be implemented, but I'd probably lean away frombefore-msas a setting name in that case.