| From memory, and from what I can piece together from the ticket and commit history:
- The change from returning ensure => stopped to ensure => absent was initially landed in 4.X, and reverted later in the 4.10 series when we determined it was causing regressions
- That change was intentionally left in the 5.X series, but presumably not well-shaken-out by users since we don't ship FOSS Solaris packages, and our Solaris commercial customers aren't the fastest to upgrade
- Possibly, some other changes related to improving the behavior of ensure => absent were reverted in 4.10, but NOT left in 5, which has led to the apparent regression of 8167. This is unclear to me - the git history is /super/ gnarly.
Anyway, there are a few of options here:
- Leave the ensure=>absent behavior, and fix the service type to understand what the solaris provider is doing, and thus calling "absent" and "stopped" in sync. This would let us return "absent" from other providers.
- Revert the "absent" behavior again, and just return "stopped", even though it's wrong
- Revert all the way back to when trying to mange a nonexistent service would just raise an error, and tell users to stop trying to manage things that don't exist. (we probably shouldn't do this)
- Make the Solaris provider implement "enablable" fully, so that missing services show as stopped, but trying to enable or start a missing service will still return an error.
I think the lasts one is probably best. This means returning "stopped=true,enabled=false" for nonexistent services. This matches the behavior of the systemd provider, and thus most modern Linux systems. |