diff options
Diffstat (limited to 'lib/chef/provider/service')
-rw-r--r-- | lib/chef/provider/service/systemd.rb | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/chef/provider/service/systemd.rb b/lib/chef/provider/service/systemd.rb index 565668c081..3b190f0153 100644 --- a/lib/chef/provider/service/systemd.rb +++ b/lib/chef/provider/service/systemd.rb @@ -51,6 +51,7 @@ class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple current_resource.running(false) current_resource.enabled(false) current_resource.masked(false) + current_resource.indirect(false) end else current_resource.running(is_active?) @@ -58,6 +59,7 @@ class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple current_resource.enabled(is_enabled?) current_resource.masked(is_masked?) + current_resource.indirect(is_indirect?) current_resource end @@ -143,11 +145,19 @@ class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple end def enable_service + if current_resource.masked || current_resource.indirect + logger.trace("#{new_resource} cannot be enabled: it is masked or indirect") + return + end options, args = get_systemctl_options_args shell_out!("#{systemctl_path} #{args} enable #{Shellwords.escape(new_resource.service_name)}", **options) end def disable_service + if current_resource.masked || current_resource.indirect + logger.trace("#{new_resource} cannot be disabled: it is masked or indirect") + return + end options, args = get_systemctl_options_args shell_out!("#{systemctl_path} #{args} disable #{Shellwords.escape(new_resource.service_name)}", **options) end @@ -172,6 +182,12 @@ class Chef::Provider::Service::Systemd < Chef::Provider::Service::Simple shell_out("#{systemctl_path} #{args} is-enabled #{Shellwords.escape(new_resource.service_name)} --quiet", **options).exitstatus == 0 end + def is_indirect? + options, args = get_systemctl_options_args + s = shell_out("#{systemctl_path} #{args} is-enabled #{Shellwords.escape(new_resource.service_name)}", **options) + s.stdout.include?("indirect") + end + def is_masked? options, args = get_systemctl_options_args s = shell_out("#{systemctl_path} #{args} is-enabled #{Shellwords.escape(new_resource.service_name)}", **options) |