diff options
author | Josh Cooper <josh@puppetlabs.com> | 2014-10-03 17:39:17 -0700 |
---|---|---|
committer | Josh Cooper <josh@puppetlabs.com> | 2014-10-07 16:50:05 -0700 |
commit | 2d7332619a0a469af8b3ecb9fbbb3cea06bf81d2 (patch) | |
tree | 3a72862d0df8e03ea304cbffd848df3cb109f0d2 | |
parent | 44cc510a879513c1c8fe6a4245b8fca2b9e62db8 (diff) | |
download | puppet-2d7332619a0a469af8b3ecb9fbbb3cea06bf81d2.tar.gz |
(PUP-1165) Ignore scheduled_task trigger start_date when unspecified
Previously, if a scheduled_task resource was created in the past, and
the desired value of the resource's trigger did not specify a
`start_date`, then puppet would think the resource was out of sync,
and attempt to delete the old trigger, and add the new one. This
process would repeat once per day, leading to spurious 'triggered
changed' messages, and reports.
This commit modifies the scheduled_task provider so that if the
desired value does not specify a `start_date`, then it will
effectively be ignored when comparing the current and desired
triggers.
-rw-r--r-- | lib/puppet/provider/scheduled_task/win32_taskscheduler.rb | 4 | ||||
-rw-r--r-- | spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb b/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb index ea7b54c96..a3416c405 100644 --- a/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +++ b/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb @@ -235,7 +235,7 @@ Puppet::Type.type(:scheduled_task).provide(:win32_taskscheduler) do return false if current_trigger.has_key?('enabled') && !current_trigger['enabled'] desired = desired_trigger.dup - + desired['start_date'] ||= current_trigger['start_date'] if current_trigger.has_key?('start_date') desired['every'] ||= current_trigger['every'] if current_trigger.has_key?('every') desired['months'] ||= current_trigger['months'] if current_trigger.has_key?('months') desired['on'] ||= current_trigger['on'] if current_trigger.has_key?('on') @@ -255,13 +255,11 @@ Puppet::Type.type(:scheduled_task).provide(:win32_taskscheduler) do def dummy_time_trigger now = Time.now - { 'flags' => 0, 'random_minutes_interval' => 0, 'end_day' => 0, "end_year" => 0, - "trigger_type" => 0, "minutes_interval" => 0, "end_month" => 0, "minutes_duration" => 0, diff --git a/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb b/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb index 7d080174f..61f5fba26 100644 --- a/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +++ b/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb @@ -663,6 +663,15 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if provider.should_not be_triggers_same(current, desired) end + describe 'start_date' do + it "considers triggers to be equal when start_date is not specified in the 'desired' trigger" do + current = {'schedule' => 'daily', 'start_date' => '2011-09-12', 'start_time' => '15:30', 'every' => 3} + desired = {'schedule' => 'daily', 'start_time' => '15:30', 'every' => 3} + + provider.should be_triggers_same(current, desired) + end + end + describe 'comparing daily triggers' do it "should consider 'desired' triggers not specifying 'every' to have the same value as the 'current' trigger" do current = {'schedule' => 'daily', 'start_date' => '2011-09-12', 'start_time' => '15:30', 'every' => 3} |