Skip to content

Commit 9b9e748

Browse files
committed
(PUP-11062) Add required feature for delayed service setting
Before this commit, Puppet was raising multiple `undefined method` errors when trying to set the `enable` property of a service to `delayed` on non-Windows machines.
1 parent 8d6c5ba commit 9b9e748

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

lib/puppet/type/service.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ module Puppet
3838
feature :enableable, "The provider can enable and disable the service.",
3939
:methods => [:disable, :enable, :enabled?]
4040

41+
feature :delayed_startable, "The provider can set service to delayed start",
42+
:methods => [:delayed_start]
43+
4144
feature :controllable, "The provider uses a control variable."
4245

4346
feature :flaggable, "The provider can pass flags to the service."
@@ -81,8 +84,7 @@ def retrieve
8184
provider.enabled?
8285
end
8386

84-
# This only works on Windows systems.
85-
newvalue(:delayed, :event => :service_delayed_start) do
87+
newvalue(:delayed, :event => :service_delayed_start, :required_features => :delayed_startable) do
8688
provider.delayed_start
8789
end
8890

@@ -93,7 +95,7 @@ def insync?(current)
9395

9496
validate do |value|
9597
super(value)
96-
if (value == :manual || value == :delayed) && !Puppet::Util::Platform.windows?
98+
if (value == :manual) && !Puppet::Util::Platform.windows?
9799
raise Puppet::Error.new(_("Setting enable to %{value} is only supported on Microsoft Windows.") % { value: value.to_s} )
98100
end
99101
end

spec/unit/type/service_spec.rb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,10 @@ def safely_load_service_type
9393
)
9494
end
9595

96-
it "should not support :delayed as a value when not on Windows" do
97-
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
98-
96+
it "should not support :mask as a value" do
9997
expect { Puppet::Type.type(:service).new(:name => "yay", :enable => :delayed) }.to raise_error(
100-
Puppet::Error,
101-
/Setting enable to delayed is only supported on Microsoft Windows\./
98+
Puppet::ResourceError,
99+
/Provider .+ must have features 'delayed_startable' to set 'enable' to 'delayed'/
102100
)
103101
end
104102
end

0 commit comments

Comments
 (0)