summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Cooper <josh@puppetlabs.com>2014-10-03 17:39:17 -0700
committerJosh Cooper <josh@puppetlabs.com>2014-10-07 16:50:05 -0700
commit2d7332619a0a469af8b3ecb9fbbb3cea06bf81d2 (patch)
tree3a72862d0df8e03ea304cbffd848df3cb109f0d2
parent44cc510a879513c1c8fe6a4245b8fca2b9e62db8 (diff)
downloadpuppet-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.rb4
-rw-r--r--spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb9
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}