diff --git a/docs/contributing.md b/docs/contributing.md index f204356c8..97f1be15b 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -78,7 +78,7 @@ pytest -m end_to_end_docker ## Documentation -Documentation changes should be made in the [pyinfra git repository](https://github.com/pyinfra-dev/pyinfa) - the repository `docs.pyinfra.com` should +Documentation changes should be made in the [pyinfra git repository](https://github.com/pyinfra-dev/pyinfra) - the repository `docs.pyinfra.com` should not be changed, it contains build artifacts. ### Generate Documentation diff --git a/pyinfra/operations/openrc.py b/pyinfra/operations/openrc.py index 1656b9f9b..7507a4106 100644 --- a/pyinfra/operations/openrc.py +++ b/pyinfra/operations/openrc.py @@ -48,10 +48,16 @@ def service( openrc_enabled = host.get_fact(OpenrcEnabled, runlevel=runlevel) is_enabled = openrc_enabled.get(service, False) - if enabled and not is_enabled: - yield "rc-update add {0}".format(service) - openrc_enabled[service] = True - - if not enabled and is_enabled: - yield "rc-update del {0}".format(service) - openrc_enabled[service] = False + if enabled is True: + if not is_enabled: + yield "rc-update add {0} {1}".format(service, runlevel) + openrc_enabled[service] = True + else: + host.noop("service {0} is enabled".format(service)) + + if enabled is False: + if is_enabled: + yield "rc-update del {0} {1}".format(service, runlevel) + openrc_enabled[service] = False + else: + host.noop("service {0} is disabled".format(service)) diff --git a/tests/operations/openrc.service/disable.json b/tests/operations/openrc.service/disable.json index 201b908ce..2b1b2de0d 100644 --- a/tests/operations/openrc.service/disable.json +++ b/tests/operations/openrc.service/disable.json @@ -16,6 +16,6 @@ } }, "commands": [ - "rc-update del nginx" + "rc-update del nginx default" ] } diff --git a/tests/operations/openrc.service/disable_noop.json b/tests/operations/openrc.service/disable_noop.json new file mode 100644 index 000000000..aa5a03c40 --- /dev/null +++ b/tests/operations/openrc.service/disable_noop.json @@ -0,0 +1,20 @@ +{ + "args": ["nginx"], + "kwargs": { + "enabled": false + }, + "facts": { + "openrc.OpenrcStatus": { + "runlevel=default": { + "nginx": true + } + }, + "openrc.OpenrcEnabled": { + "runlevel=default": { + "nginx": false + } + } + }, + "commands": [], + "noop_description": "service nginx is disabled" +} diff --git a/tests/operations/openrc.service/disable_runlevel.json b/tests/operations/openrc.service/disable_runlevel.json new file mode 100644 index 000000000..9c3f23e2a --- /dev/null +++ b/tests/operations/openrc.service/disable_runlevel.json @@ -0,0 +1,22 @@ +{ + "args": ["nftables"], + "kwargs": { + "runlevel": "boot", + "enabled": false + }, + "facts": { + "openrc.OpenrcStatus": { + "runlevel=boot": { + "nftables": true + } + }, + "openrc.OpenrcEnabled": { + "runlevel=boot": { + "nftables": true + } + } + }, + "commands": [ + "rc-update del nftables boot" + ] +} diff --git a/tests/operations/openrc.service/enable.json b/tests/operations/openrc.service/enable.json index b3e6e1703..3cd04db0b 100644 --- a/tests/operations/openrc.service/enable.json +++ b/tests/operations/openrc.service/enable.json @@ -16,6 +16,6 @@ } }, "commands": [ - "rc-update add nginx" + "rc-update add nginx default" ] } diff --git a/tests/operations/openrc.service/enable_noop.json b/tests/operations/openrc.service/enable_noop.json new file mode 100644 index 000000000..4071ed8e5 --- /dev/null +++ b/tests/operations/openrc.service/enable_noop.json @@ -0,0 +1,20 @@ +{ + "args": ["nginx"], + "kwargs": { + "enabled": true + }, + "facts": { + "openrc.OpenrcStatus": { + "runlevel=default": { + "nginx": true + } + }, + "openrc.OpenrcEnabled": { + "runlevel=default": { + "nginx": true + } + } + }, + "commands": [], + "noop_description": "service nginx is enabled" +} diff --git a/tests/operations/openrc.service/enable_runlevel.json b/tests/operations/openrc.service/enable_runlevel.json new file mode 100644 index 000000000..f5eeb6791 --- /dev/null +++ b/tests/operations/openrc.service/enable_runlevel.json @@ -0,0 +1,22 @@ +{ + "args": ["nftables"], + "kwargs": { + "runlevel": "boot", + "enabled": true + }, + "facts": { + "openrc.OpenrcStatus": { + "runlevel=boot": { + "nftables": true + } + }, + "openrc.OpenrcEnabled": { + "runlevel=boot": { + "nftables": false + } + } + }, + "commands": [ + "rc-update add nftables boot" + ] +}