puppet 4.0.0 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/ext/build_defaults.yaml +8 -35
- data/ext/debian/puppet.default +0 -5
- data/ext/debian/puppet.init +1 -15
- data/lib/hiera/puppet_function.rb +15 -4
- data/lib/puppet/application/agent.rb +5 -0
- data/lib/puppet/application/apply.rb +23 -2
- data/lib/puppet/application/device.rb +8 -3
- data/lib/puppet/application/master.rb +16 -5
- data/lib/puppet/configurer.rb +7 -5
- data/lib/puppet/defaults.rb +18 -0
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/error.rb +27 -1
- data/lib/puppet/file_serving/metadata.rb +13 -8
- data/lib/puppet/file_serving/terminus_helper.rb +7 -8
- data/lib/puppet/file_system.rb +13 -0
- data/lib/puppet/file_system/file_impl.rb +4 -0
- data/lib/puppet/file_system/memory_impl.rb +4 -0
- data/lib/puppet/file_system/windows.rb +8 -0
- data/lib/puppet/functions.rb +33 -3
- data/lib/puppet/functions/defined.rb +130 -0
- data/lib/puppet/functions/regsubst.rb +1 -1
- data/lib/puppet/functions/split.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +11 -0
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/node.rb +17 -1
- data/lib/puppet/node/environment.rb +4 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +4 -0
- data/lib/puppet/parser/compiler.rb +9 -0
- data/lib/puppet/parser/functions/defined.rb +25 -1
- data/lib/puppet/parser/functions/file.rb +3 -1
- data/lib/puppet/parser/scope.rb +11 -2
- data/lib/puppet/parser/templatewrapper.rb +2 -1
- data/lib/puppet/pops.rb +4 -0
- data/lib/puppet/pops/evaluator/access_operator.rb +25 -5
- data/lib/puppet/pops/evaluator/closure.rb +28 -2
- data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -11
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +4 -0
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +4 -0
- data/lib/puppet/pops/evaluator/compare_operator.rb +43 -0
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +7 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +48 -14
- data/lib/puppet/pops/evaluator/runtime3_support.rb +10 -5
- data/lib/puppet/pops/functions/dispatch.rb +6 -1
- data/lib/puppet/pops/functions/dispatcher.rb +7 -1
- data/lib/puppet/pops/issue_reporter.rb +42 -16
- data/lib/puppet/pops/issues.rb +116 -2
- data/lib/puppet/pops/loader/loader.rb +11 -0
- data/lib/puppet/pops/loader/loader_paths.rb +67 -6
- data/lib/puppet/pops/loader/module_loaders.rb +19 -8
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +78 -0
- data/lib/puppet/pops/loaders.rb +6 -4
- data/lib/puppet/pops/migration/migration_checker.rb +54 -0
- data/lib/puppet/pops/model/factory.rb +5 -1
- data/lib/puppet/pops/model/model_label_provider.rb +2 -0
- data/lib/puppet/pops/model/model_meta.rb +5 -1
- data/lib/puppet/pops/parser/egrammar.ra +9 -10
- data/lib/puppet/pops/parser/eparser.rb +1061 -1047
- data/lib/puppet/pops/parser/epp_support.rb +18 -9
- data/lib/puppet/pops/parser/evaluating_parser.rb +7 -1
- data/lib/puppet/pops/parser/heredoc_support.rb +12 -11
- data/lib/puppet/pops/parser/interpolation_support.rb +7 -1
- data/lib/puppet/pops/parser/lexer2.rb +29 -12
- data/lib/puppet/pops/parser/lexer_support.rb +52 -23
- data/lib/puppet/pops/parser/parser_support.rb +11 -14
- data/lib/puppet/pops/parser/slurp_support.rb +22 -6
- data/lib/puppet/pops/types/type_calculator.rb +156 -55
- data/lib/puppet/pops/types/type_factory.rb +66 -13
- data/lib/puppet/pops/types/type_parser.rb +22 -13
- data/lib/puppet/pops/types/types.rb +23 -4
- data/lib/puppet/pops/types/types_meta.rb +13 -2
- data/lib/puppet/pops/validation.rb +25 -2
- data/lib/puppet/pops/validation/checker4_0.rb +63 -31
- data/lib/puppet/provider/group/windows_adsi.rb +8 -4
- data/lib/puppet/provider/mount/parsed.rb +145 -2
- data/lib/puppet/provider/package/apt.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +11 -2
- data/lib/puppet/provider/package/pkgng.rb +134 -0
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/ports.rb +0 -3
- data/lib/puppet/provider/package/windows/exe_package.rb +0 -1
- data/lib/puppet/provider/package/windows/msi_package.rb +0 -1
- data/lib/puppet/provider/package/zypper.rb +50 -15
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +32 -7
- data/lib/puppet/provider/service/debian.rb +1 -1
- data/lib/puppet/provider/service/init.rb +7 -0
- data/lib/puppet/provider/user/openbsd.rb +1 -0
- data/lib/puppet/provider/user/windows_adsi.rb +45 -2
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/catalog.rb +0 -4
- data/lib/puppet/settings.rb +19 -0
- data/lib/puppet/type/file.rb +1 -0
- data/lib/puppet/type/file/ensure.rb +1 -1
- data/lib/puppet/type/mount.rb +9 -1
- data/lib/puppet/type/scheduled_task.rb +13 -0
- data/lib/puppet/type/tidy.rb +3 -1
- data/lib/puppet/type/user.rb +32 -0
- data/lib/puppet/type/yumrepo.rb +5 -5
- data/lib/puppet/util/log.rb +50 -8
- data/lib/puppet/util/log/destinations.rb +23 -2
- data/lib/puppet/util/logging.rb +37 -1
- data/lib/puppet/util/run_mode.rb +1 -14
- data/lib/puppet/util/windows/adsi.rb +130 -58
- data/lib/puppet/version.rb +1 -1
- data/man/man5/puppet.conf.5 +48 -6
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +4 -1
- data/man/man8/puppet-apply.8 +4 -1
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +6 -3
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-file.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-inspect.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-master.8 +4 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-resource_type.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/unit/data_providers/environments/production/lib/puppet/functions/environment/data.rb +3 -1
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/functions/data.pp +6 -0
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/lib/puppet/bindings/xyz/default.rb +9 -0
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/manifests/init.pp +9 -0
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcalled.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller4.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/callingpuppet.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/functions/hello.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/manifests/init.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/metadata.json +10 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/hello.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/subspace/hello.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +1 -10
- data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +93 -85
- data/spec/fixtures/unit/provider/mount/parsed/aix.mount +11 -7
- data/spec/fixtures/unit/provider/package/pkgng/pkg.info +8 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query +1 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +1 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +3 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-empty.out +3 -0
- data/spec/integration/application/apply_spec.rb +49 -0
- data/spec/integration/faces/plugin_spec.rb +0 -4
- data/spec/integration/indirector/facts/facter_spec.rb +59 -0
- data/spec/integration/parser/compiler_spec.rb +850 -0
- data/spec/integration/parser/resource_expressions_spec.rb +3 -0
- data/spec/integration/parser/scope_spec.rb +26 -5
- data/spec/integration/transaction_spec.rb +1 -1
- data/spec/integration/type/file_spec.rb +318 -41
- data/spec/integration/util/windows/security_spec.rb +14 -5
- data/spec/lib/matchers/resource.rb +22 -1
- data/spec/lib/puppet_spec/matchers.rb +6 -4
- data/spec/unit/application/master_spec.rb +33 -7
- data/spec/unit/data_providers/function_data_provider_spec.rb +10 -1
- data/spec/unit/file_serving/metadata_spec.rb +1 -1
- data/spec/unit/file_serving/terminus_helper_spec.rb +2 -3
- data/spec/unit/file_system_spec.rb +38 -0
- data/spec/unit/functions/defined_spec.rb +289 -0
- data/spec/unit/functions/hiera_spec.rb +8 -6
- data/spec/unit/functions/regsubst_spec.rb +4 -0
- data/spec/unit/functions/split_spec.rb +8 -0
- data/spec/unit/functions4_spec.rb +97 -2
- data/spec/unit/indirector/facts/facter_spec.rb +7 -0
- data/spec/unit/node_spec.rb +6 -0
- data/spec/unit/parser/functions/file_spec.rb +7 -1
- data/spec/unit/parser/functions/template_spec.rb +1 -1
- data/spec/unit/parser/scope_spec.rb +2 -2
- data/spec/unit/parser/templatewrapper_spec.rb +1 -1
- data/spec/unit/pops/evaluator/access_ops_spec.rb +19 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +84 -18
- data/spec/unit/pops/evaluator/variables_spec.rb +1 -1
- data/spec/unit/pops/issues_spec.rb +16 -16
- data/spec/unit/pops/loaders/loaders_spec.rb +106 -48
- data/spec/unit/pops/migration_spec.rb +53 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +142 -1
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +26 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +205 -12
- data/spec/unit/pops/validation_spec.rb +66 -0
- data/spec/unit/pops/validator/validator_spec.rb +1 -1
- data/spec/unit/provider/group/windows_adsi_spec.rb +57 -9
- data/spec/unit/provider/mount/parsed_spec.rb +31 -5
- data/spec/unit/provider/package/apt_spec.rb +5 -0
- data/spec/unit/provider/package/pip_spec.rb +9 -0
- data/spec/unit/provider/package/pkgng_spec.rb +172 -0
- data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -1
- data/spec/unit/provider/package/windows/msi_package_spec.rb +0 -1
- data/spec/unit/provider/package/zypper_spec.rb +50 -19
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +312 -70
- data/spec/unit/provider/service/base_spec.rb +38 -27
- data/spec/unit/provider/service/debian_spec.rb +8 -0
- data/spec/unit/provider/service/freebsd_spec.rb +1 -0
- data/spec/unit/provider/service/gentoo_spec.rb +1 -0
- data/spec/unit/provider/service/init_spec.rb +18 -0
- data/spec/unit/provider/service/openbsd_spec.rb +1 -0
- data/spec/unit/provider/service/redhat_spec.rb +1 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +134 -5
- data/spec/unit/settings_spec.rb +11 -0
- data/spec/unit/util/log_spec.rb +113 -0
- data/spec/unit/util/windows/adsi_spec.rb +135 -41
- data/spec/unit/util/windows/sid_spec.rb +0 -10
- metadata +48 -2
@@ -143,12 +143,40 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
143
143
|
})
|
144
144
|
|
145
145
|
expect(resource.provider.trigger).to eq([{
|
146
|
-
'start_date'
|
147
|
-
'start_time'
|
148
|
-
'schedule'
|
149
|
-
'every'
|
150
|
-
'
|
151
|
-
'
|
146
|
+
'start_date' => '2011-9-12',
|
147
|
+
'start_time' => '13:20',
|
148
|
+
'schedule' => 'daily',
|
149
|
+
'every' => '2',
|
150
|
+
'minutes_interval' => 0,
|
151
|
+
'minutes_duration' => 0,
|
152
|
+
'enabled' => true,
|
153
|
+
'index' => 0,
|
154
|
+
}])
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'should handle a single daily with repeat trigger' do
|
158
|
+
@mock_task.expects(:trigger).with(0).returns({
|
159
|
+
'trigger_type' => Win32::TaskScheduler::TASK_TIME_TRIGGER_DAILY,
|
160
|
+
'start_year' => 2011,
|
161
|
+
'start_month' => 9,
|
162
|
+
'start_day' => 12,
|
163
|
+
'start_hour' => 13,
|
164
|
+
'start_minute' => 20,
|
165
|
+
'minutes_interval' => 60,
|
166
|
+
'minutes_duration' => 180,
|
167
|
+
'flags' => 0,
|
168
|
+
'type' => { 'days_interval' => 2 },
|
169
|
+
})
|
170
|
+
|
171
|
+
expect(resource.provider.trigger).to eq([{
|
172
|
+
'start_date' => '2011-9-12',
|
173
|
+
'start_time' => '13:20',
|
174
|
+
'schedule' => 'daily',
|
175
|
+
'every' => '2',
|
176
|
+
'minutes_interval' => 60,
|
177
|
+
'minutes_duration' => 180,
|
178
|
+
'enabled' => true,
|
179
|
+
'index' => 0,
|
152
180
|
}])
|
153
181
|
end
|
154
182
|
|
@@ -172,13 +200,15 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
172
200
|
})
|
173
201
|
|
174
202
|
expect(resource.provider.trigger).to eq([{
|
175
|
-
'start_date'
|
176
|
-
'start_time'
|
177
|
-
'schedule'
|
178
|
-
'every'
|
179
|
-
'day_of_week'
|
180
|
-
'
|
181
|
-
'
|
203
|
+
'start_date' => '2011-9-12',
|
204
|
+
'start_time' => '13:20',
|
205
|
+
'schedule' => 'weekly',
|
206
|
+
'every' => '2',
|
207
|
+
'day_of_week' => ['sun', 'mon', 'wed', 'fri'],
|
208
|
+
'minutes_interval' => 0,
|
209
|
+
'minutes_duration' => 0,
|
210
|
+
'enabled' => true,
|
211
|
+
'index' => 0,
|
182
212
|
}])
|
183
213
|
end
|
184
214
|
|
@@ -205,13 +235,15 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
205
235
|
})
|
206
236
|
|
207
237
|
expect(resource.provider.trigger).to eq([{
|
208
|
-
'start_date'
|
209
|
-
'start_time'
|
210
|
-
'schedule'
|
211
|
-
'months'
|
212
|
-
'on'
|
213
|
-
'
|
214
|
-
'
|
238
|
+
'start_date' => '2011-9-12',
|
239
|
+
'start_time' => '13:20',
|
240
|
+
'schedule' => 'monthly',
|
241
|
+
'months' => [1, 2, 8, 9, 12],
|
242
|
+
'on' => [1, 3, 5, 15, 'last'],
|
243
|
+
'minutes_interval' => 0,
|
244
|
+
'minutes_duration' => 0,
|
245
|
+
'enabled' => true,
|
246
|
+
'index' => 0,
|
215
247
|
}])
|
216
248
|
end
|
217
249
|
|
@@ -247,6 +279,8 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
247
279
|
'months' => [1, 2, 8, 9, 12],
|
248
280
|
'which_occurrence' => 'first',
|
249
281
|
'day_of_week' => ['sun', 'mon', 'wed', 'fri'],
|
282
|
+
'minutes_interval' => 0,
|
283
|
+
'minutes_duration' => 0,
|
250
284
|
'enabled' => true,
|
251
285
|
'index' => 0,
|
252
286
|
}])
|
@@ -264,11 +298,13 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
264
298
|
})
|
265
299
|
|
266
300
|
expect(resource.provider.trigger).to eq([{
|
267
|
-
'start_date'
|
268
|
-
'start_time'
|
269
|
-
'schedule'
|
270
|
-
'
|
271
|
-
'
|
301
|
+
'start_date' => '2011-9-12',
|
302
|
+
'start_time' => '13:20',
|
303
|
+
'schedule' => 'once',
|
304
|
+
'minutes_interval' => 0,
|
305
|
+
'minutes_duration' => 0,
|
306
|
+
'enabled' => true,
|
307
|
+
'index' => 0,
|
272
308
|
}])
|
273
309
|
end
|
274
310
|
end
|
@@ -305,25 +341,98 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
305
341
|
|
306
342
|
expect(resource.provider.trigger).to match_array([
|
307
343
|
{
|
308
|
-
'start_date'
|
309
|
-
'start_time'
|
310
|
-
'schedule'
|
311
|
-
'
|
312
|
-
'
|
344
|
+
'start_date' => '2011-10-13',
|
345
|
+
'start_time' => '14:21',
|
346
|
+
'schedule' => 'once',
|
347
|
+
'minutes_interval' => 0,
|
348
|
+
'minutes_duration' => 0,
|
349
|
+
'enabled' => true,
|
350
|
+
'index' => 0,
|
351
|
+
},
|
352
|
+
{
|
353
|
+
'start_date' => '2012-11-14',
|
354
|
+
'start_time' => '15:22',
|
355
|
+
'schedule' => 'once',
|
356
|
+
'minutes_interval' => 0,
|
357
|
+
'minutes_duration' => 0,
|
358
|
+
'enabled' => true,
|
359
|
+
'index' => 1,
|
360
|
+
},
|
361
|
+
{
|
362
|
+
'start_date' => '2013-12-15',
|
363
|
+
'start_time' => '16:23',
|
364
|
+
'schedule' => 'once',
|
365
|
+
'minutes_interval' => 0,
|
366
|
+
'minutes_duration' => 0,
|
367
|
+
'enabled' => true,
|
368
|
+
'index' => 2,
|
369
|
+
}
|
370
|
+
])
|
371
|
+
end
|
372
|
+
|
373
|
+
it 'should handle multiple triggers with repeat triggers' do
|
374
|
+
@mock_task.expects(:trigger_count).returns(3)
|
375
|
+
@mock_task.expects(:trigger).with(0).returns({
|
376
|
+
'trigger_type' => Win32::TaskScheduler::TASK_TIME_TRIGGER_ONCE,
|
377
|
+
'start_year' => 2011,
|
378
|
+
'start_month' => 10,
|
379
|
+
'start_day' => 13,
|
380
|
+
'start_hour' => 14,
|
381
|
+
'start_minute' => 21,
|
382
|
+
'minutes_interval' => 15,
|
383
|
+
'minutes_duration' => 60,
|
384
|
+
'flags' => 0,
|
385
|
+
})
|
386
|
+
@mock_task.expects(:trigger).with(1).returns({
|
387
|
+
'trigger_type' => Win32::TaskScheduler::TASK_TIME_TRIGGER_ONCE,
|
388
|
+
'start_year' => 2012,
|
389
|
+
'start_month' => 11,
|
390
|
+
'start_day' => 14,
|
391
|
+
'start_hour' => 15,
|
392
|
+
'start_minute' => 22,
|
393
|
+
'minutes_interval' => 30,
|
394
|
+
'minutes_duration' => 120,
|
395
|
+
'flags' => 0,
|
396
|
+
})
|
397
|
+
@mock_task.expects(:trigger).with(2).returns({
|
398
|
+
'trigger_type' => Win32::TaskScheduler::TASK_TIME_TRIGGER_ONCE,
|
399
|
+
'start_year' => 2013,
|
400
|
+
'start_month' => 12,
|
401
|
+
'start_day' => 15,
|
402
|
+
'start_hour' => 16,
|
403
|
+
'start_minute' => 23,
|
404
|
+
'minutes_interval' => 60,
|
405
|
+
'minutes_duration' => 240,
|
406
|
+
'flags' => 0,
|
407
|
+
})
|
408
|
+
|
409
|
+
expect(resource.provider.trigger).to match_array([
|
410
|
+
{
|
411
|
+
'start_date' => '2011-10-13',
|
412
|
+
'start_time' => '14:21',
|
413
|
+
'schedule' => 'once',
|
414
|
+
'minutes_interval' => 15,
|
415
|
+
'minutes_duration' => 60,
|
416
|
+
'enabled' => true,
|
417
|
+
'index' => 0,
|
313
418
|
},
|
314
419
|
{
|
315
|
-
'start_date'
|
316
|
-
'start_time'
|
317
|
-
'schedule'
|
318
|
-
'
|
319
|
-
'
|
420
|
+
'start_date' => '2012-11-14',
|
421
|
+
'start_time' => '15:22',
|
422
|
+
'schedule' => 'once',
|
423
|
+
'minutes_interval' => 30,
|
424
|
+
'minutes_duration' => 120,
|
425
|
+
'enabled' => true,
|
426
|
+
'index' => 1,
|
320
427
|
},
|
321
428
|
{
|
322
|
-
'start_date'
|
323
|
-
'start_time'
|
324
|
-
'schedule'
|
325
|
-
'
|
326
|
-
'
|
429
|
+
'start_date' => '2013-12-15',
|
430
|
+
'start_time' => '16:23',
|
431
|
+
'schedule' => 'once',
|
432
|
+
'minutes_interval' => 60,
|
433
|
+
'minutes_duration' => 240,
|
434
|
+
'enabled' => true,
|
435
|
+
'index' => 2,
|
327
436
|
}
|
328
437
|
])
|
329
438
|
end
|
@@ -354,18 +463,22 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
354
463
|
|
355
464
|
expect(resource.provider.trigger).to match_array([
|
356
465
|
{
|
357
|
-
'start_date'
|
358
|
-
'start_time'
|
359
|
-
'schedule'
|
360
|
-
'
|
361
|
-
'
|
466
|
+
'start_date' => '2011-10-13',
|
467
|
+
'start_time' => '14:21',
|
468
|
+
'schedule' => 'once',
|
469
|
+
'minutes_interval' => 0,
|
470
|
+
'minutes_duration' => 0,
|
471
|
+
'enabled' => true,
|
472
|
+
'index' => 0,
|
362
473
|
},
|
363
474
|
{
|
364
|
-
'start_date'
|
365
|
-
'start_time'
|
366
|
-
'schedule'
|
367
|
-
'
|
368
|
-
'
|
475
|
+
'start_date' => '2013-12-15',
|
476
|
+
'start_time' => '16:23',
|
477
|
+
'schedule' => 'once',
|
478
|
+
'minutes_interval' => 0,
|
479
|
+
'minutes_duration' => 0,
|
480
|
+
'enabled' => true,
|
481
|
+
'index' => 2,
|
369
482
|
}
|
370
483
|
])
|
371
484
|
end
|
@@ -396,18 +509,22 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
396
509
|
|
397
510
|
expect(resource.provider.trigger).to match_array([
|
398
511
|
{
|
399
|
-
'start_date'
|
400
|
-
'start_time'
|
401
|
-
'schedule'
|
402
|
-
'
|
403
|
-
'
|
512
|
+
'start_date' => '2011-10-13',
|
513
|
+
'start_time' => '14:21',
|
514
|
+
'schedule' => 'once',
|
515
|
+
'minutes_interval' => 0,
|
516
|
+
'minutes_duration' => 0,
|
517
|
+
'enabled' => true,
|
518
|
+
'index' => 0,
|
404
519
|
},
|
405
520
|
{
|
406
|
-
'start_date'
|
407
|
-
'start_time'
|
408
|
-
'schedule'
|
409
|
-
'
|
410
|
-
'
|
521
|
+
'start_date' => '2013-12-15',
|
522
|
+
'start_time' => '16:23',
|
523
|
+
'schedule' => 'once',
|
524
|
+
'minutes_interval' => 0,
|
525
|
+
'minutes_duration' => 0,
|
526
|
+
'enabled' => true,
|
527
|
+
'index' => 2,
|
411
528
|
}
|
412
529
|
])
|
413
530
|
end
|
@@ -529,11 +646,13 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
529
646
|
})
|
530
647
|
|
531
648
|
mock_task_trigger = {
|
532
|
-
'start_date'
|
533
|
-
'start_time'
|
534
|
-
'schedule'
|
535
|
-
'
|
536
|
-
'
|
649
|
+
'start_date' => '2011-10-13',
|
650
|
+
'start_time' => '14:21',
|
651
|
+
'schedule' => 'once',
|
652
|
+
'minutes_interval' => 0,
|
653
|
+
'minutes_duration' => 0,
|
654
|
+
'enabled' => true,
|
655
|
+
'index' => 0,
|
537
656
|
}
|
538
657
|
|
539
658
|
expect(resource.provider.trigger).to eq([mock_task_trigger])
|
@@ -542,11 +661,13 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
542
661
|
resource.provider.clear_task
|
543
662
|
|
544
663
|
expect(resource.provider.trigger).to eq([{
|
545
|
-
'start_date'
|
546
|
-
'start_time'
|
547
|
-
'schedule'
|
548
|
-
'
|
549
|
-
'
|
664
|
+
'start_date' => '2012-11-14',
|
665
|
+
'start_time' => '15:22',
|
666
|
+
'schedule' => 'once',
|
667
|
+
'minutes_interval' => 0,
|
668
|
+
'minutes_duration' => 0,
|
669
|
+
'enabled' => true,
|
670
|
+
'index' => 0,
|
550
671
|
}])
|
551
672
|
end
|
552
673
|
end
|
@@ -1045,6 +1166,127 @@ describe Puppet::Type.type(:scheduled_task).provider(:win32_taskscheduler), :if
|
|
1045
1166
|
let(:provider) { described_class.new(:name => 'Test Task', :command => 'C:\Windows\System32\notepad.exe') }
|
1046
1167
|
let(:trigger) { provider.translate_hash_to_trigger(@puppet_trigger) }
|
1047
1168
|
|
1169
|
+
context "working with repeat every x triggers" do
|
1170
|
+
before :each do
|
1171
|
+
@puppet_trigger['schedule'] = 'once'
|
1172
|
+
end
|
1173
|
+
|
1174
|
+
it 'should succeed if minutes_interval is equal to 0' do
|
1175
|
+
@puppet_trigger['minutes_interval'] = '0'
|
1176
|
+
|
1177
|
+
expect(trigger['minutes_interval']).to eq(0)
|
1178
|
+
end
|
1179
|
+
|
1180
|
+
it 'should default minutes_duration to a full day when minutes_interval is greater than 0 without setting minutes_duration' do
|
1181
|
+
@puppet_trigger['minutes_interval'] = '1'
|
1182
|
+
|
1183
|
+
expect(trigger['minutes_duration']).to eq(1440)
|
1184
|
+
end
|
1185
|
+
|
1186
|
+
it 'should succeed if minutes_interval is greater than 0 and minutes_duration is also set' do
|
1187
|
+
@puppet_trigger['minutes_interval'] = '1'
|
1188
|
+
@puppet_trigger['minutes_duration'] = '2'
|
1189
|
+
|
1190
|
+
expect(trigger['minutes_interval']).to eq(1)
|
1191
|
+
end
|
1192
|
+
|
1193
|
+
it 'should fail if minutes_interval is less than 0' do
|
1194
|
+
@puppet_trigger['minutes_interval'] = '-1'
|
1195
|
+
|
1196
|
+
expect { trigger }.to raise_error(
|
1197
|
+
Puppet::Error,
|
1198
|
+
'minutes_interval must be an integer greater or equal to 0'
|
1199
|
+
)
|
1200
|
+
end
|
1201
|
+
|
1202
|
+
it 'should fail if minutes_interval is not an integer' do
|
1203
|
+
@puppet_trigger['minutes_interval'] = 'abc'
|
1204
|
+
expect { trigger }.to raise_error(ArgumentError)
|
1205
|
+
end
|
1206
|
+
|
1207
|
+
it 'should succeed if minutes_duration is equal to 0' do
|
1208
|
+
@puppet_trigger['minutes_duration'] = '0'
|
1209
|
+
expect(trigger['minutes_duration']).to eq(0)
|
1210
|
+
end
|
1211
|
+
|
1212
|
+
it 'should succeed if minutes_duration is greater than 0' do
|
1213
|
+
@puppet_trigger['minutes_duration'] = '1'
|
1214
|
+
expect(trigger['minutes_duration']).to eq(1)
|
1215
|
+
end
|
1216
|
+
|
1217
|
+
it 'should fail if minutes_duration is less than 0' do
|
1218
|
+
@puppet_trigger['minutes_duration'] = '-1'
|
1219
|
+
|
1220
|
+
expect { trigger }.to raise_error(
|
1221
|
+
Puppet::Error,
|
1222
|
+
'minutes_duration must be an integer greater than minutes_interval and equal to or greater than 0'
|
1223
|
+
)
|
1224
|
+
end
|
1225
|
+
|
1226
|
+
it 'should fail if minutes_duration is not an integer' do
|
1227
|
+
@puppet_trigger['minutes_duration'] = 'abc'
|
1228
|
+
expect { trigger }.to raise_error(ArgumentError)
|
1229
|
+
end
|
1230
|
+
|
1231
|
+
it 'should succeed if minutes_duration is equal to a full day' do
|
1232
|
+
@puppet_trigger['minutes_duration'] = '1440'
|
1233
|
+
expect(trigger['minutes_duration']).to eq(1440)
|
1234
|
+
end
|
1235
|
+
|
1236
|
+
it 'should succeed if minutes_duration is equal to three days' do
|
1237
|
+
@puppet_trigger['minutes_duration'] = '4320'
|
1238
|
+
expect(trigger['minutes_duration']).to eq(4320)
|
1239
|
+
end
|
1240
|
+
|
1241
|
+
it 'should succeed if minutes_duration is greater than minutes_duration' do
|
1242
|
+
@puppet_trigger['minutes_interval'] = '10'
|
1243
|
+
@puppet_trigger['minutes_duration'] = '11'
|
1244
|
+
|
1245
|
+
expect(trigger['minutes_interval']).to eq(10)
|
1246
|
+
expect(trigger['minutes_duration']).to eq(11)
|
1247
|
+
end
|
1248
|
+
|
1249
|
+
it 'should fail if minutes_duration is equal to minutes_interval' do
|
1250
|
+
# On Windows 2003, the duration must be greater than the interval
|
1251
|
+
# on other platforms the values can be equal.
|
1252
|
+
@puppet_trigger['minutes_interval'] = '10'
|
1253
|
+
@puppet_trigger['minutes_duration'] = '10'
|
1254
|
+
|
1255
|
+
expect { trigger }.to raise_error(
|
1256
|
+
Puppet::Error,
|
1257
|
+
'minutes_duration must be an integer greater than minutes_interval and equal to or greater than 0'
|
1258
|
+
)
|
1259
|
+
end
|
1260
|
+
|
1261
|
+
it 'should succeed if minutes_duration and minutes_interval are both set to 0' do
|
1262
|
+
@puppet_trigger['minutes_interval'] = '0'
|
1263
|
+
@puppet_trigger['minutes_duration'] = '0'
|
1264
|
+
|
1265
|
+
expect(trigger['minutes_interval']).to eq(0)
|
1266
|
+
expect(trigger['minutes_duration']).to eq(0)
|
1267
|
+
end
|
1268
|
+
|
1269
|
+
it 'should fail if minutes_duration is less than minutes_interval' do
|
1270
|
+
@puppet_trigger['minutes_interval'] = '10'
|
1271
|
+
@puppet_trigger['minutes_duration'] = '9'
|
1272
|
+
|
1273
|
+
expect { trigger }.to raise_error(
|
1274
|
+
Puppet::Error,
|
1275
|
+
'minutes_duration must be an integer greater than minutes_interval and equal to or greater than 0'
|
1276
|
+
)
|
1277
|
+
end
|
1278
|
+
|
1279
|
+
it 'should fail if minutes_duration is less than minutes_interval and set to 0' do
|
1280
|
+
@puppet_trigger['minutes_interval'] = '10'
|
1281
|
+
@puppet_trigger['minutes_duration'] = '0'
|
1282
|
+
|
1283
|
+
expect { trigger }.to raise_error(
|
1284
|
+
Puppet::Error,
|
1285
|
+
'minutes_interval cannot be set without minutes_duration also being set to a number greater than 0'
|
1286
|
+
)
|
1287
|
+
end
|
1288
|
+
end
|
1289
|
+
|
1048
1290
|
describe 'when given a one-time trigger' do
|
1049
1291
|
before :each do
|
1050
1292
|
@puppet_trigger['schedule'] = 'once'
|