puppet 5.5.22-x86-mingw32 → 6.0.0-x86-mingw32
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/Gemfile +46 -72
- data/Gemfile.lock +86 -102
- data/MAINTAINERS +47 -0
- data/Rakefile +15 -19
- data/ext/build_defaults.yaml +0 -1
- data/ext/cert_inspector +3 -3
- data/ext/debian/copyright +0 -22
- data/ext/project_data.yaml +8 -10
- data/ext/puppet-test +2 -2
- data/ext/redhat/puppet.spec.erb +0 -4
- data/ext/regexp_nodes/regexp_nodes.rb +4 -4
- data/ext/solaris/smf/puppet.xml +0 -2
- data/ext/solaris/smf/svc-puppetd +1 -8
- data/ext/solaris/smf/svc-puppetmasterd +1 -8
- data/ext/windows/eventlog/Rakefile +32 -0
- data/ext/windows/eventlog/puppetres.dll +0 -0
- data/ext/windows/eventlog/puppetres.mc +18 -0
- data/ext/windows/service/daemon.rb +8 -54
- data/install.rb +24 -6
- data/lib/hiera/scope.rb +0 -7
- data/lib/puppet.rb +10 -21
- data/lib/puppet/agent.rb +13 -5
- data/lib/puppet/application.rb +10 -8
- data/lib/puppet/application/agent.rb +3 -21
- data/lib/puppet/application/apply.rb +22 -12
- data/lib/puppet/application/cert.rb +25 -180
- data/lib/puppet/application/describe.rb +9 -3
- data/lib/puppet/application/device.rb +41 -74
- data/lib/puppet/application/doc.rb +5 -3
- data/lib/puppet/application/filebucket.rb +1 -23
- data/lib/puppet/application/lookup.rb +2 -2
- data/lib/puppet/application/resource.rb +4 -4
- data/lib/puppet/application/script.rb +3 -3
- data/lib/puppet/application/ssl.rb +133 -0
- data/lib/puppet/application_support.rb +1 -2
- data/lib/puppet/configurer.rb +62 -127
- data/lib/puppet/configurer/downloader.rb +17 -34
- data/lib/puppet/configurer/fact_handler.rb +5 -1
- data/lib/puppet/configurer/plugin_handler.rb +2 -3
- data/lib/puppet/confine/false.rb +1 -7
- data/lib/puppet/confine/true.rb +1 -7
- data/lib/puppet/daemon.rb +2 -2
- data/lib/puppet/datatypes.rb +1 -1
- data/lib/puppet/defaults.rb +126 -286
- data/lib/puppet/environments.rb +2 -7
- data/lib/puppet/error.rb +14 -10
- data/lib/puppet/etc.rb +4 -25
- data/lib/puppet/external/dot.rb +23 -17
- data/lib/puppet/face/config.rb +50 -12
- data/lib/puppet/face/epp.rb +2 -2
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help.rb +21 -7
- data/lib/puppet/face/help/global.erb +2 -2
- data/lib/puppet/face/module/build.rb +4 -59
- data/lib/puppet/face/module/generate.rb +5 -247
- data/lib/puppet/face/module/install.rb +0 -4
- data/lib/puppet/face/module/list.rb +5 -10
- data/lib/puppet/face/module/search.rb +2 -2
- data/lib/puppet/face/module/uninstall.rb +1 -5
- data/lib/puppet/face/module/upgrade.rb +1 -5
- data/lib/puppet/face/node/clean.rb +14 -10
- data/lib/puppet/face/plugin.rb +2 -9
- data/lib/puppet/feature/base.rb +7 -26
- data/lib/puppet/feature/eventlog.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/base.rb +7 -7
- data/lib/puppet/file_serving/fileset.rb +2 -2
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +4 -3
- data/lib/puppet/file_serving/mount/locales.rb +2 -1
- data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -1
- data/lib/puppet/file_serving/mount/plugins.rb +2 -1
- data/lib/puppet/file_system.rb +8 -0
- data/lib/puppet/file_system/memory_file.rb +1 -1
- data/lib/puppet/file_system/posix.rb +2 -3
- data/lib/puppet/file_system/uniquefile.rb +0 -4
- data/lib/puppet/forge.rb +8 -12
- data/lib/puppet/functions.rb +138 -0
- data/lib/puppet/functions/abs.rb +61 -0
- data/lib/puppet/functions/call.rb +38 -2
- data/lib/puppet/functions/camelcase.rb +62 -0
- data/lib/puppet/functions/capitalize.rb +61 -0
- data/lib/puppet/functions/ceiling.rb +37 -0
- data/lib/puppet/functions/chomp.rb +57 -0
- data/lib/puppet/functions/chop.rb +67 -0
- data/lib/puppet/functions/compare.rb +125 -0
- data/lib/puppet/functions/convert_to.rb +3 -2
- data/lib/puppet/functions/dig.rb +21 -1
- data/lib/puppet/functions/downcase.rb +89 -0
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/eyaml_lookup_key.rb +4 -5
- data/lib/puppet/functions/filter.rb +7 -6
- data/lib/puppet/functions/floor.rb +37 -0
- data/lib/puppet/functions/get.rb +150 -0
- data/lib/puppet/functions/getvar.rb +87 -0
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/lstrip.rb +58 -0
- data/lib/puppet/functions/max.rb +183 -0
- data/lib/puppet/functions/min.rb +182 -0
- data/lib/puppet/functions/new.rb +3 -8
- data/lib/puppet/functions/reduce.rb +4 -2
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/round.rb +24 -0
- data/lib/puppet/functions/rstrip.rb +58 -0
- data/lib/puppet/functions/size.rb +15 -0
- data/lib/puppet/functions/sort.rb +74 -0
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +58 -0
- data/lib/puppet/functions/upcase.rb +89 -0
- data/lib/puppet/functions/yaml_data.rb +4 -5
- data/lib/puppet/gettext/config.rb +1 -1
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph.rb +0 -2
- data/lib/puppet/graph/rb_tree_map.rb +2 -2
- data/lib/puppet/graph/simple_graph.rb +10 -7
- data/lib/puppet/indirector/catalog/compiler.rb +0 -8
- data/lib/puppet/indirector/catalog/json.rb +14 -3
- data/lib/puppet/indirector/catalog/yaml.rb +0 -16
- data/lib/puppet/indirector/certificate/file.rb +0 -1
- data/lib/puppet/indirector/facts/yaml.rb +4 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +0 -6
- data/lib/puppet/indirector/indirection.rb +8 -12
- data/lib/puppet/indirector/key/file.rb +1 -6
- data/lib/puppet/indirector/node/exec.rb +1 -3
- data/lib/puppet/indirector/node/yaml.rb +0 -6
- data/lib/puppet/indirector/request.rb +20 -27
- data/lib/puppet/indirector/resource/ral.rb +3 -1
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/indirector/rest.rb +7 -65
- data/lib/puppet/indirector/ssl_file.rb +3 -44
- data/lib/puppet/indirector/terminus.rb +1 -1
- data/lib/puppet/indirector/yaml.rb +4 -4
- data/lib/puppet/info_service/task_information_service.rb +7 -3
- data/lib/puppet/interface.rb +2 -3
- data/lib/puppet/interface/action.rb +2 -5
- data/lib/puppet/interface/face_collection.rb +3 -1
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/metatype/manager.rb +3 -5
- data/lib/puppet/module.rb +5 -31
- data/lib/puppet/module/task.rb +208 -30
- data/lib/puppet/module_tool.rb +2 -5
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/module_tool/applications/application.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +7 -8
- data/lib/puppet/module_tool/applications/uninstaller.rb +4 -5
- data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +5 -6
- data/lib/puppet/module_tool/installed_modules.rb +2 -2
- data/lib/puppet/module_tool/local_tarball.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -2
- data/lib/puppet/module_tool/shared_behaviors.rb +6 -6
- data/lib/puppet/module_tool/tar/mini.rb +2 -12
- data/lib/puppet/network/authconfig.rb +0 -13
- data/lib/puppet/network/format_support.rb +13 -8
- data/lib/puppet/network/formats.rb +93 -2
- data/lib/puppet/network/http.rb +0 -2
- data/lib/puppet/network/http/api.rb +1 -10
- data/lib/puppet/network/http/api/indirected_routes.rb +22 -16
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -3
- data/lib/puppet/network/http/connection.rb +14 -57
- data/lib/puppet/network/http/factory.rb +13 -7
- data/lib/puppet/network/http/handler.rb +59 -27
- data/lib/puppet/network/http/pool.rb +1 -7
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +140 -67
- data/lib/puppet/node.rb +1 -2
- data/lib/puppet/node/environment.rb +5 -30
- data/lib/puppet/node/facts.rb +11 -1
- data/lib/puppet/parameter.rb +4 -7
- data/lib/puppet/parser/ast.rb +5 -9
- data/lib/puppet/parser/ast/branch.rb +3 -3
- data/lib/puppet/parser/ast/leaf.rb +5 -0
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/catalog_compiler.rb +32 -0
- data/lib/puppet/parser/compiler.rb +2 -3
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -2
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -2
- data/lib/puppet/parser/environment_compiler.rb +0 -3
- data/lib/puppet/parser/functions.rb +48 -18
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/filter.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +1 -1
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/parser/resource.rb +2 -4
- data/lib/puppet/parser/resource/param.rb +12 -11
- data/lib/puppet/parser/scope.rb +6 -8
- data/lib/puppet/parser/script_compiler.rb +7 -2
- data/lib/puppet/pops.rb +1 -0
- data/lib/puppet/pops/adaptable.rb +13 -7
- data/lib/puppet/pops/adapters.rb +18 -8
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +4 -4
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +3 -1
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +127 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +17 -2
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +2 -3
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +23 -4
- data/lib/puppet/pops/evaluator/runtime3_support.rb +7 -8
- data/lib/puppet/pops/functions/dispatch.rb +6 -0
- data/lib/puppet/pops/issues.rb +9 -10
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +5 -3
- data/lib/puppet/pops/loader/module_loaders.rb +47 -21
- data/lib/puppet/pops/loader/null_loader.rb +60 -0
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +54 -0
- data/lib/puppet/pops/loader/static_loader.rb +0 -36
- data/lib/puppet/pops/loader/task_instantiator.rb +72 -44
- data/lib/puppet/pops/loaders.rb +21 -33
- data/lib/puppet/pops/lookup/hiera_config.rb +1 -2
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +18 -22
- data/lib/puppet/pops/model/ast.pp +16 -0
- data/lib/puppet/pops/model/ast.rb +94 -0
- data/lib/puppet/pops/model/factory.rb +17 -38
- data/lib/puppet/pops/model/model_label_provider.rb +8 -1
- data/lib/puppet/pops/parser/egrammar.ra +14 -3
- data/lib/puppet/pops/parser/eparser.rb +1537 -1492
- data/lib/puppet/pops/parser/epp_support.rb +6 -2
- data/lib/puppet/pops/parser/heredoc_support.rb +8 -17
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/lexer2.rb +2 -7
- data/lib/puppet/pops/parser/locator.rb +87 -107
- data/lib/puppet/pops/parser/parser_support.rb +2 -11
- data/lib/puppet/pops/parser/pn_parser.rb +16 -17
- data/lib/puppet/pops/pcore.rb +19 -8
- data/lib/puppet/pops/puppet_stack.rb +48 -51
- data/lib/puppet/pops/resource/resource_type_impl.rb +0 -2
- data/lib/puppet/pops/serialization.rb +3 -2
- data/lib/puppet/pops/serialization/from_data_converter.rb +4 -3
- data/lib/puppet/pops/serialization/to_data_converter.rb +3 -3
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +226 -0
- data/lib/puppet/pops/types/iterable.rb +8 -34
- data/lib/puppet/pops/types/p_binary_type.rb +1 -2
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +3 -0
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +0 -4
- data/lib/puppet/pops/types/string_converter.rb +12 -21
- data/lib/puppet/pops/types/type_calculator.rb +0 -24
- data/lib/puppet/pops/types/type_factory.rb +17 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/types.rb +7 -32
- data/lib/puppet/pops/validation/checker4_0.rb +23 -33
- data/lib/puppet/pops/validation/tasks_checker.rb +47 -6
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +7 -10
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider.rb +14 -2
- data/lib/puppet/provider/exec.rb +58 -59
- data/lib/puppet/provider/file/posix.rb +0 -5
- data/lib/puppet/provider/file/windows.rb +2 -50
- data/lib/puppet/provider/group/aix.rb +2 -18
- data/lib/puppet/provider/group/groupadd.rb +19 -19
- data/lib/puppet/provider/group/windows_adsi.rb +4 -11
- data/lib/puppet/provider/nameservice.rb +28 -11
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package.rb +0 -2
- data/lib/puppet/provider/package/aix.rb +2 -17
- data/lib/puppet/provider/package/apt.rb +3 -14
- data/lib/puppet/provider/package/dnf.rb +3 -3
- data/lib/puppet/provider/package/dpkg.rb +7 -18
- data/lib/puppet/provider/package/fink.rb +3 -20
- data/lib/puppet/provider/package/gem.rb +43 -105
- data/lib/puppet/provider/package/openbsd.rb +2 -14
- data/lib/puppet/provider/package/pip.rb +108 -160
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +5 -18
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +4 -16
- data/lib/puppet/provider/package/portage.rb +6 -6
- data/lib/puppet/provider/package/puppet_gem.rb +2 -7
- data/lib/puppet/provider/package/rpm.rb +33 -82
- data/lib/puppet/provider/package/windows.rb +2 -6
- data/lib/puppet/provider/package/windows/exe_package.rb +10 -16
- data/lib/puppet/provider/package/windows/msi_package.rb +0 -8
- data/lib/puppet/provider/package/windows/package.rb +2 -10
- data/lib/puppet/provider/package/yum.rb +25 -37
- data/lib/puppet/provider/package/zypper.rb +0 -1
- data/lib/puppet/provider/parsedfile.rb +5 -26
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +9 -9
- data/lib/puppet/provider/service/debian.rb +1 -0
- data/lib/puppet/provider/service/launchd.rb +8 -39
- data/lib/puppet/provider/service/openbsd.rb +1 -1
- data/lib/puppet/provider/service/rcng.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +8 -2
- data/lib/puppet/provider/service/smf.rb +0 -54
- data/lib/puppet/provider/service/systemd.rb +24 -35
- data/lib/puppet/provider/service/upstart.rb +1 -3
- data/lib/puppet/provider/service/windows.rb +3 -23
- data/lib/puppet/provider/user/aix.rb +2 -48
- data/lib/puppet/provider/user/directoryservice.rb +8 -45
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +3 -12
- data/lib/puppet/provider/user/user_role_add.rb +1 -5
- data/lib/puppet/provider/user/useradd.rb +44 -74
- data/lib/puppet/provider/user/windows_adsi.rb +0 -7
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +3 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/reference/type.rb +9 -3
- data/lib/puppet/reports.rb +3 -3
- data/lib/puppet/resource.rb +22 -22
- data/lib/puppet/resource/catalog.rb +8 -14
- data/lib/puppet/resource/type.rb +1 -10
- data/lib/puppet/rest/client.rb +83 -0
- data/lib/puppet/rest/errors.rb +14 -0
- data/lib/puppet/rest/response.rb +34 -0
- data/lib/puppet/rest/route.rb +84 -0
- data/lib/puppet/rest/routes.rb +154 -0
- data/lib/puppet/rest/ssl_context.rb +13 -0
- data/lib/puppet/settings.rb +9 -54
- data/lib/puppet/settings/config_file.rb +1 -2
- data/lib/puppet/settings/environment_conf.rb +0 -1
- data/lib/puppet/settings/file_setting.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +0 -9
- data/lib/puppet/ssl.rb +0 -1
- data/lib/puppet/ssl/base.rb +1 -9
- data/lib/puppet/ssl/certificate.rb +7 -4
- data/lib/puppet/ssl/certificate_request.rb +6 -14
- data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
- data/lib/puppet/ssl/host.rb +400 -174
- data/lib/puppet/ssl/key.rb +1 -5
- data/lib/puppet/ssl/oids.rb +3 -3
- data/lib/puppet/ssl/validator/default_validator.rb +33 -49
- data/lib/puppet/test/test_helper.rb +12 -18
- data/lib/puppet/transaction.rb +7 -12
- data/lib/puppet/transaction/event.rb +37 -14
- data/lib/puppet/transaction/event_manager.rb +3 -11
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +2 -5
- data/lib/puppet/type.rb +7 -10
- data/lib/puppet/type/exec.rb +16 -50
- data/lib/puppet/type/file.rb +7 -16
- data/lib/puppet/type/file/content.rb +2 -3
- data/lib/puppet/type/file/data_sync.rb +1 -5
- data/lib/puppet/type/file/mode.rb +2 -7
- data/lib/puppet/type/file/source.rb +2 -1
- data/lib/puppet/type/filebucket.rb +8 -12
- data/lib/puppet/type/group.rb +3 -33
- data/lib/puppet/type/notify.rb +2 -3
- data/lib/puppet/type/package.rb +18 -154
- data/lib/puppet/type/resources.rb +2 -12
- data/lib/puppet/type/schedule.rb +34 -96
- data/lib/puppet/type/service.rb +10 -9
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +30 -14
- data/lib/puppet/util.rb +28 -52
- data/lib/puppet/util/autoload.rb +62 -56
- data/lib/puppet/util/character_encoding.rb +0 -22
- data/lib/puppet/util/classgen.rb +0 -6
- data/lib/puppet/util/command_line.rb +4 -7
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/connection.rb +74 -0
- data/lib/puppet/util/execution.rb +7 -22
- data/lib/puppet/util/feature.rb +63 -41
- data/lib/puppet/util/fileparsing.rb +27 -5
- data/lib/puppet/util/filetype.rb +8 -56
- data/lib/puppet/util/http_proxy.rb +18 -27
- data/lib/puppet/util/instance_loader.rb +3 -21
- data/lib/puppet/util/json.rb +0 -8
- data/lib/puppet/util/ldap/connection.rb +7 -7
- data/lib/puppet/util/log.rb +3 -8
- data/lib/puppet/util/log/destinations.rb +13 -5
- data/lib/puppet/util/logging.rb +19 -31
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/network_device/base.rb +1 -1
- data/lib/puppet/util/pidlock.rb +3 -23
- data/lib/puppet/util/platform.rb +3 -0
- data/lib/puppet/util/plist.rb +0 -6
- data/lib/puppet/util/posix.rb +0 -15
- data/lib/puppet/util/provider_features.rb +6 -7
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/reference.rb +8 -7
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/rubygems.rb +1 -13
- data/lib/puppet/util/run_mode.rb +1 -1
- data/lib/puppet/util/selinux.rb +3 -9
- data/lib/puppet/util/ssl.rb +40 -1
- data/lib/puppet/util/storage.rb +1 -13
- data/lib/puppet/util/suidmanager.rb +7 -5
- data/lib/puppet/util/tag_set.rb +1 -1
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/windows.rb +15 -0
- data/lib/puppet/util/windows/adsi.rb +7 -116
- data/lib/puppet/util/windows/api_types.rb +33 -46
- data/lib/puppet/util/windows/eventlog.rb +6 -1
- data/lib/puppet/util/windows/principal.rb +6 -8
- data/lib/puppet/util/windows/process.rb +3 -94
- data/lib/puppet/util/windows/registry.rb +14 -46
- data/lib/puppet/util/windows/security.rb +2 -40
- data/lib/puppet/util/windows/service.rb +72 -431
- data/lib/puppet/util/windows/sid.rb +3 -4
- data/lib/puppet/util/windows/user.rb +9 -17
- data/lib/puppet/util/yaml.rb +41 -5
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +246 -23
- data/locales/ja/puppet.po +11128 -0
- data/locales/puppet.pot +1321 -2527
- data/man/man5/puppet.conf.5 +31 -191
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +19 -23
- 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-filebucket.8 +2 -21
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -7
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +10 -100
- data/man/man8/puppet-node.8 +4 -7
- 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-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +28 -0
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +12 -3
- data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +22 -0
- data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +18 -0
- data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +7 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +6 -6
- data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -1
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +0 -2
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +0 -9
- data/spec/integration/agent/logging_spec.rb +9 -7
- data/spec/integration/application/apply_spec.rb +31 -26
- data/spec/integration/application/doc_spec.rb +2 -1
- data/spec/integration/application/lookup_spec.rb +5 -5
- data/spec/integration/configurer_spec.rb +8 -76
- data/spec/integration/data_binding_spec.rb +1 -1
- data/spec/integration/defaults_spec.rb +13 -16
- data/spec/integration/directory_environments_spec.rb +1 -1
- data/spec/integration/faces/config_spec.rb +4 -3
- data/spec/integration/faces/documentation_spec.rb +1 -0
- data/spec/integration/faces/plugin_spec.rb +49 -29
- data/spec/integration/file_bucket/file_spec.rb +4 -19
- data/spec/integration/file_serving/content_spec.rb +1 -0
- data/spec/integration/file_serving/fileset_spec.rb +1 -0
- data/spec/integration/file_serving/metadata_spec.rb +1 -0
- data/spec/integration/file_serving/terminus_helper_spec.rb +1 -0
- data/spec/integration/file_system/uniquefile_spec.rb +26 -29
- data/spec/integration/indirector/catalog/compiler_spec.rb +11 -10
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -22
- data/spec/integration/indirector/file_content/file_server_spec.rb +8 -7
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +8 -7
- data/spec/integration/network/authconfig_spec.rb +24 -23
- data/spec/integration/network/formats_spec.rb +1 -0
- data/spec/integration/network/http/api/indirected_routes_spec.rb +6 -34
- data/spec/integration/node/environment_spec.rb +2 -1
- data/spec/integration/node/facts_spec.rb +10 -9
- data/spec/integration/node_spec.rb +7 -10
- data/spec/integration/parser/catalog_spec.rb +8 -6
- data/spec/integration/parser/collection_spec.rb +9 -4
- data/spec/integration/parser/compiler_spec.rb +7 -25
- data/spec/integration/parser/scope_spec.rb +1 -1
- data/spec/integration/parser/undef_param_spec.rb +1 -1
- data/spec/integration/provider/service/init_spec.rb +9 -6
- data/spec/integration/provider/service/systemd_spec.rb +14 -11
- data/spec/integration/provider/service/windows_spec.rb +11 -8
- data/spec/integration/reference/providers_spec.rb +7 -0
- data/spec/integration/reports_spec.rb +2 -1
- data/spec/integration/resource/catalog_spec.rb +17 -14
- data/spec/integration/resource/type_collection_spec.rb +5 -4
- data/spec/integration/ssl/certificate_request_spec.rb +1 -2
- data/spec/integration/ssl/host_spec.rb +17 -24
- data/spec/integration/ssl/key_spec.rb +7 -2
- data/spec/integration/test/test_helper_spec.rb +32 -0
- data/spec/integration/transaction/report_spec.rb +14 -9
- data/spec/integration/type/exec_spec.rb +2 -1
- data/spec/integration/type/file_spec.rb +38 -46
- data/spec/integration/type/package_spec.rb +25 -21
- data/spec/integration/type/tidy_spec.rb +2 -1
- data/spec/integration/type_spec.rb +1 -0
- data/spec/integration/util/autoload_spec.rb +11 -7
- data/spec/integration/util/execution_spec.rb +5 -32
- data/spec/integration/util/rdoc/parser_spec.rb +14 -23
- data/spec/integration/util/settings_spec.rb +2 -1
- data/spec/integration/util/windows/adsi_spec.rb +8 -11
- data/spec/integration/util/windows/principal_spec.rb +2 -1
- data/spec/integration/util/windows/process_spec.rb +9 -7
- data/spec/integration/util/windows/registry_spec.rb +46 -127
- data/spec/integration/util/windows/security_spec.rb +15 -16
- data/spec/integration/util/windows/user_spec.rb +29 -66
- data/spec/integration/util_spec.rb +10 -7
- data/spec/lib/matchers/json.rb +12 -18
- data/{lib/puppet/ssl → spec/lib/puppet}/certificate_factory.rb +5 -6
- data/spec/lib/puppet/test_ca.rb +109 -0
- data/spec/lib/puppet_spec/compiler.rb +28 -1
- data/spec/lib/puppet_spec/files.rb +29 -23
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +1 -1
- data/spec/lib/puppet_spec/modules.rb +11 -1
- data/spec/lib/puppet_spec/scope.rb +2 -1
- data/spec/lib/puppet_spec/ssl.rb +265 -0
- data/spec/lib/puppet_spec/validators.rb +37 -0
- data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
- data/spec/shared_behaviours/file_server_terminus.rb +9 -8
- data/spec/shared_behaviours/file_serving.rb +8 -6
- data/spec/shared_behaviours/file_serving_model.rb +5 -22
- data/spec/shared_behaviours/hiera_indirections.rb +4 -3
- data/spec/shared_behaviours/iterative_functions.rb +1 -0
- data/spec/shared_behaviours/memory_terminus.rb +2 -2
- data/spec/shared_behaviours/path_parameters.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +0 -2
- data/spec/shared_examples/rhel_package_provider.rb +70 -112
- data/spec/spec_helper.rb +1 -15
- data/spec/unit/agent/disabler_spec.rb +5 -4
- data/spec/unit/agent/locker_spec.rb +13 -12
- data/spec/unit/agent_spec.rb +102 -105
- data/spec/unit/application/agent_spec.rb +95 -114
- data/spec/unit/application/apply_spec.rb +92 -119
- data/spec/unit/application/config_spec.rb +1 -0
- data/spec/unit/application/describe_spec.rb +7 -6
- data/spec/unit/application/device_spec.rb +180 -181
- data/spec/unit/application/doc_spec.rb +46 -44
- data/spec/unit/application/face_base_spec.rb +62 -61
- data/spec/unit/application/facts_spec.rb +4 -3
- data/spec/unit/application/filebucket_spec.rb +74 -66
- data/spec/unit/application/indirection_base_spec.rb +6 -8
- data/spec/unit/application/lookup_spec.rb +44 -37
- data/spec/unit/application/resource_spec.rb +48 -42
- data/spec/unit/application/ssl_spec.rb +322 -0
- data/spec/unit/application_spec.rb +108 -90
- data/spec/unit/capability_spec.rb +15 -16
- data/spec/unit/{ssl/certificate_factory_spec.rb → certificate_factory_spec.rb} +13 -20
- data/spec/unit/configurer/downloader_spec.rb +22 -31
- data/spec/unit/configurer/fact_handler_spec.rb +7 -2
- data/spec/unit/configurer/plugin_handler_spec.rb +8 -41
- data/spec/unit/configurer_spec.rb +475 -520
- data/spec/unit/confine/exists_spec.rb +15 -17
- data/spec/unit/confine/false_spec.rb +6 -32
- data/spec/unit/confine/feature_spec.rb +5 -7
- data/spec/unit/confine/true_spec.rb +6 -32
- data/spec/unit/confine/variable_spec.rb +15 -14
- data/spec/unit/confine_collection_spec.rb +29 -28
- data/spec/unit/confine_spec.rb +14 -13
- data/spec/unit/confiner_spec.rb +11 -10
- data/spec/unit/context/trusted_information_spec.rb +4 -3
- data/spec/unit/daemon_spec.rb +38 -35
- data/spec/unit/data_providers/function_data_provider_spec.rb +1 -0
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +1 -0
- data/spec/unit/datatypes_spec.rb +4 -3
- data/spec/unit/defaults_spec.rb +61 -32
- data/spec/unit/environments_spec.rb +7 -7
- data/spec/unit/etc_spec.rb +29 -52
- data/spec/unit/external/pson_spec.rb +1 -0
- data/spec/unit/face/catalog_spec.rb +1 -0
- data/spec/unit/face/config_spec.rb +35 -31
- data/spec/unit/face/epp_face_spec.rb +4 -3
- data/spec/unit/face/facts_spec.rb +6 -14
- data/spec/unit/face/generate_spec.rb +5 -4
- data/spec/unit/face/help_spec.rb +8 -7
- data/spec/unit/face/key_spec.rb +1 -0
- data/spec/unit/face/man_spec.rb +2 -1
- data/spec/unit/face/module/install_spec.rb +5 -3
- data/spec/unit/face/module/list_spec.rb +12 -62
- data/spec/unit/face/module/search_spec.rb +9 -11
- data/spec/unit/face/module/uninstall_spec.rb +8 -4
- data/spec/unit/face/node_spec.rb +30 -52
- data/spec/unit/face/parser_spec.rb +3 -3
- data/spec/unit/face/plugin_spec.rb +9 -44
- data/spec/unit/face/status_spec.rb +1 -0
- data/spec/unit/file_bucket/dipper_spec.rb +24 -28
- data/spec/unit/file_bucket/file_spec.rb +2 -0
- data/spec/unit/file_serving/base_spec.rb +18 -20
- data/spec/unit/file_serving/configuration/parser_spec.rb +28 -27
- data/spec/unit/file_serving/configuration_spec.rb +66 -63
- data/spec/unit/file_serving/content_spec.rb +11 -10
- data/spec/unit/file_serving/fileset_spec.rb +58 -63
- data/spec/unit/file_serving/http_metadata_spec.rb +7 -8
- data/spec/unit/file_serving/metadata_spec.rb +40 -40
- data/spec/unit/file_serving/mount/file_spec.rb +32 -31
- data/spec/unit/file_serving/mount/locales_spec.rb +26 -25
- data/spec/unit/file_serving/mount/modules_spec.rb +15 -14
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +26 -25
- data/spec/unit/file_serving/mount/plugins_spec.rb +26 -25
- data/spec/unit/file_serving/mount/tasks_spec.rb +15 -14
- data/spec/unit/file_serving/mount_spec.rb +1 -0
- data/spec/unit/file_serving/terminus_helper_spec.rb +42 -37
- data/spec/unit/file_serving/terminus_selector_spec.rb +13 -12
- data/spec/unit/file_system/path_pattern_spec.rb +1 -1
- data/spec/unit/file_system/uniquefile_spec.rb +6 -17
- data/spec/unit/file_system_spec.rb +9 -6
- data/spec/unit/forge/errors_spec.rb +1 -1
- data/spec/unit/forge/forge_spec.rb +16 -15
- data/spec/unit/forge/module_release_spec.rb +18 -18
- data/spec/unit/forge/repository_spec.rb +30 -27
- data/spec/unit/forge_spec.rb +11 -15
- data/spec/unit/functions/abs_spec.rb +70 -0
- data/spec/unit/functions/binary_file_spec.rb +3 -3
- data/spec/unit/functions/call_spec.rb +59 -5
- data/spec/unit/functions/camelcase_spec.rb +34 -0
- data/spec/unit/functions/capitalize_spec.rb +34 -0
- data/spec/unit/functions/ceiling_spec.rb +65 -0
- data/spec/unit/functions/chomp_spec.rb +46 -0
- data/spec/unit/functions/chop_spec.rb +38 -0
- data/spec/unit/functions/compare_spec.rb +147 -0
- data/spec/unit/functions/contain_spec.rb +2 -0
- data/spec/unit/functions/convert_to_spec.rb +3 -0
- data/spec/unit/functions/defined_spec.rb +1 -0
- data/spec/unit/functions/downcase_spec.rb +34 -0
- data/spec/unit/functions/epp_spec.rb +2 -2
- data/spec/unit/functions/filter_spec.rb +4 -4
- data/spec/unit/functions/find_file_spec.rb +7 -7
- data/spec/unit/functions/floor_spec.rb +65 -0
- data/spec/unit/functions/get_spec.rb +135 -0
- data/spec/unit/functions/getvar_spec.rb +121 -0
- data/spec/unit/functions/hiera_spec.rb +14 -48
- data/spec/unit/functions/include_spec.rb +4 -0
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -0
- data/spec/unit/functions/lookup_spec.rb +37 -62
- data/spec/unit/functions/lstrip_spec.rb +30 -0
- data/spec/unit/functions/match_spec.rb +3 -4
- data/spec/unit/functions/max_spec.rb +129 -0
- data/spec/unit/functions/min_spec.rb +129 -0
- data/spec/unit/functions/module_directory_spec.rb +12 -12
- data/spec/unit/functions/new_spec.rb +0 -15
- data/spec/unit/functions/regsubst_spec.rb +3 -4
- data/spec/unit/functions/require_spec.rb +3 -0
- data/spec/unit/functions/round_spec.rb +41 -0
- data/spec/unit/functions/rstrip_spec.rb +30 -0
- data/spec/unit/functions/shared.rb +8 -5
- data/spec/unit/functions/size_spec.rb +50 -0
- data/spec/unit/functions/sort_spec.rb +79 -0
- data/spec/unit/functions/split_spec.rb +3 -4
- data/spec/unit/functions/strip_spec.rb +30 -0
- data/spec/unit/functions/upcase_spec.rb +34 -0
- data/spec/unit/functions/versioncmp_spec.rb +4 -4
- data/spec/unit/functions4_spec.rb +78 -51
- data/spec/unit/gettext/config_spec.rb +4 -4
- data/spec/unit/gettext/module_loading_spec.rb +7 -7
- data/spec/unit/graph/rb_tree_map_spec.rb +2 -0
- data/spec/unit/graph/relationship_graph_spec.rb +2 -1
- data/spec/unit/graph/simple_graph_spec.rb +52 -11
- data/spec/unit/hiera/scope_spec.rb +0 -7
- data/spec/unit/hiera_puppet_spec.rb +20 -20
- data/spec/unit/indirector/catalog/compiler_spec.rb +166 -183
- data/spec/unit/indirector/catalog/json_spec.rb +2 -1
- data/spec/unit/indirector/catalog/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -0
- data/spec/unit/indirector/catalog/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/catalog/yaml_spec.rb +1 -0
- data/spec/unit/indirector/certificate/file_spec.rb +1 -8
- data/spec/unit/indirector/certificate/rest_spec.rb +10 -8
- data/spec/unit/indirector/certificate_request/file_spec.rb +1 -0
- data/spec/unit/indirector/certificate_request/rest_spec.rb +1 -0
- data/spec/unit/indirector/direct_file_server_spec.rb +49 -57
- data/spec/unit/indirector/envelope_spec.rb +2 -1
- data/spec/unit/indirector/exec_spec.rb +31 -26
- data/spec/unit/indirector/face_spec.rb +9 -9
- data/spec/unit/indirector/facts/facter_spec.rb +43 -37
- data/spec/unit/indirector/facts/network_device_spec.rb +9 -8
- data/spec/unit/indirector/facts/rest_spec.rb +8 -7
- data/spec/unit/indirector/facts/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +90 -77
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +13 -9
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +5 -4
- data/spec/unit/indirector/file_content/file_server_spec.rb +1 -0
- data/spec/unit/indirector/file_content/file_spec.rb +1 -0
- data/spec/unit/indirector/file_content/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_content/selector_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/file_server_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/file_spec.rb +13 -12
- data/spec/unit/indirector/file_metadata/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/selector_spec.rb +1 -0
- data/spec/unit/indirector/file_server_spec.rb +145 -145
- data/spec/unit/indirector/indirection_spec.rb +226 -249
- data/spec/unit/indirector/json_spec.rb +9 -7
- data/spec/unit/indirector/key/file_spec.rb +22 -38
- data/spec/unit/indirector/memory_spec.rb +7 -6
- data/spec/unit/indirector/msgpack_spec.rb +9 -7
- data/spec/unit/indirector/node/exec_spec.rb +43 -22
- data/spec/unit/indirector/node/memory_spec.rb +4 -2
- data/spec/unit/indirector/node/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/node/plain_spec.rb +4 -2
- data/spec/unit/indirector/node/rest_spec.rb +1 -0
- data/spec/unit/indirector/node/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/node/yaml_spec.rb +1 -0
- data/spec/unit/indirector/none_spec.rb +5 -5
- data/spec/unit/indirector/plain_spec.rb +8 -7
- data/spec/unit/indirector/report/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/report/processor_spec.rb +22 -21
- data/spec/unit/indirector/report/rest_spec.rb +12 -11
- data/spec/unit/indirector/report/yaml_spec.rb +1 -0
- data/spec/unit/indirector/request_spec.rb +18 -15
- data/spec/unit/indirector/resource/ral_spec.rb +55 -47
- data/spec/unit/indirector/resource/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/rest_spec.rb +110 -113
- data/spec/unit/indirector/ssl_file_spec.rb +100 -119
- data/spec/unit/indirector/status/local_spec.rb +1 -0
- data/spec/unit/indirector/status/rest_spec.rb +1 -0
- data/spec/unit/indirector/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/terminus_spec.rb +30 -32
- data/spec/unit/indirector/yaml_spec.rb +90 -68
- data/spec/unit/indirector_spec.rb +2 -1
- data/spec/unit/info_service_spec.rb +144 -10
- data/spec/unit/interface/action_builder_spec.rb +1 -0
- data/spec/unit/interface/action_manager_spec.rb +1 -0
- data/spec/unit/interface/action_spec.rb +3 -2
- data/spec/unit/interface/documentation_spec.rb +1 -0
- data/spec/unit/interface/face_collection_spec.rb +12 -19
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/man_spec.rb +4 -3
- data/spec/unit/module_spec.rb +52 -102
- data/spec/unit/module_tool/applications/installer_spec.rb +13 -12
- data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +2 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +13 -13
- data/spec/unit/module_tool/applications/upgrader_spec.rb +6 -6
- data/spec/unit/module_tool/install_directory_spec.rb +8 -8
- data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
- data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
- data/spec/unit/module_tool/tar/mini_spec.rb +12 -12
- data/spec/unit/module_tool/tar_spec.rb +13 -12
- data/spec/unit/module_tool_spec.rb +12 -29
- data/spec/unit/network/auth_config_parser_spec.rb +13 -11
- data/spec/unit/network/authconfig_spec.rb +18 -17
- data/spec/unit/network/authorization_spec.rb +5 -4
- data/spec/unit/network/authstore_spec.rb +1 -0
- data/spec/unit/network/format_handler_spec.rb +1 -0
- data/spec/unit/network/format_spec.rb +10 -9
- data/spec/unit/network/format_support_spec.rb +29 -28
- data/spec/unit/network/formats_spec.rb +31 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +41 -51
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +7 -9
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -2
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +7 -6
- data/spec/unit/network/http/api_spec.rb +2 -26
- data/spec/unit/network/http/compression_spec.rb +28 -24
- data/spec/unit/network/http/connection_spec.rb +122 -72
- data/spec/unit/network/http/factory_spec.rb +11 -40
- data/spec/unit/network/http/handler_spec.rb +18 -9
- data/spec/unit/network/http/nocache_pool_spec.rb +7 -6
- data/spec/unit/network/http/pool_spec.rb +29 -60
- data/spec/unit/network/http/request_spec.rb +2 -0
- data/spec/unit/network/http/response_spec.rb +13 -11
- data/spec/unit/network/http/route_spec.rb +1 -0
- data/spec/unit/network/http/session_spec.rb +2 -1
- data/spec/unit/network/http/site_spec.rb +1 -0
- data/spec/unit/network/http_pool_spec.rb +9 -18
- data/spec/unit/network/http_spec.rb +1 -0
- data/spec/unit/network/resolver_spec.rb +104 -28
- data/spec/unit/network/rights_spec.rb +53 -52
- data/spec/unit/node/environment_spec.rb +17 -18
- data/spec/unit/node/facts_spec.rb +21 -6
- data/spec/unit/node_spec.rb +23 -17
- data/spec/unit/other/selinux_spec.rb +1 -71
- data/spec/unit/parameter/boolean_spec.rb +2 -1
- data/spec/unit/parameter/package_options_spec.rb +2 -1
- data/spec/unit/parameter/path_spec.rb +1 -0
- data/spec/unit/parameter/value_collection_spec.rb +1 -0
- data/spec/unit/parameter/value_spec.rb +1 -0
- data/spec/unit/parameter_spec.rb +9 -9
- data/spec/unit/parser/ast/block_expression_spec.rb +8 -6
- data/spec/unit/parser/ast/leaf_spec.rb +21 -20
- data/spec/unit/parser/compiler_spec.rb +96 -84
- data/spec/unit/parser/environment_compiler_spec.rb +16 -23
- data/spec/unit/parser/files_spec.rb +1 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/functions/digest_spec.rb +1 -4
- data/spec/unit/parser/functions/fail_spec.rb +2 -5
- data/spec/unit/parser/functions/file_spec.rb +14 -17
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -5
- data/spec/unit/parser/functions/generate_spec.rb +37 -38
- data/spec/unit/parser/functions/inline_template_spec.rb +1 -4
- data/spec/unit/parser/functions/regsubst_spec.rb +1 -4
- data/spec/unit/parser/functions/scanf_spec.rb +1 -4
- data/spec/unit/parser/functions/shellquote_spec.rb +1 -0
- data/spec/unit/parser/functions/split_spec.rb +1 -4
- data/spec/unit/parser/functions/sprintf_spec.rb +1 -4
- data/spec/unit/parser/functions/tag_spec.rb +2 -5
- data/spec/unit/parser/functions/tagged_spec.rb +3 -6
- data/spec/unit/parser/functions/template_spec.rb +13 -17
- data/spec/unit/parser/functions/versioncmp_spec.rb +2 -5
- data/spec/unit/parser/functions_spec.rb +29 -3
- data/spec/unit/parser/relationship_spec.rb +1 -0
- data/spec/unit/parser/resource/param_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +42 -42
- data/spec/unit/parser/scope_spec.rb +35 -39
- data/spec/unit/parser/templatewrapper_spec.rb +12 -11
- data/spec/unit/parser/type_loader_spec.rb +19 -17
- data/spec/unit/pops/adaptable_spec.rb +1 -0
- data/spec/unit/pops/benchmark_spec.rb +1 -0
- data/spec/unit/pops/evaluator/access_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +11 -0
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -0
- data/spec/unit/pops/evaluator/collections_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +78 -18
- data/spec/unit/pops/evaluator/logical_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +5 -4
- data/spec/unit/pops/evaluator/string_interpolation_spec.rb +1 -0
- data/spec/unit/pops/evaluator/variables_spec.rb +1 -0
- data/spec/unit/pops/factory_spec.rb +4 -3
- data/spec/unit/pops/issues_spec.rb +20 -19
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +2 -2
- data/spec/unit/pops/loaders/loader_spec.rb +12 -36
- data/spec/unit/pops/loaders/loaders_spec.rb +57 -54
- data/spec/unit/pops/loaders/module_loaders_spec.rb +35 -3
- data/spec/unit/pops/loaders/static_loader_spec.rb +0 -36
- data/spec/unit/pops/lookup/context_spec.rb +1 -0
- data/spec/unit/pops/lookup/interpolation_spec.rb +3 -2
- data/spec/unit/pops/merge_strategy_spec.rb +1 -0
- data/spec/unit/pops/migration_spec.rb +5 -3
- data/spec/unit/pops/model/model_spec.rb +1 -0
- data/spec/unit/pops/model/pn_transformer_spec.rb +1 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +60 -21
- data/spec/unit/pops/parser/locator_spec.rb +6 -48
- data/spec/unit/pops/parser/parse_application_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +12 -124
- data/spec/unit/pops/parser/parse_plan_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_site_spec.rb +1 -0
- data/spec/unit/pops/parser/pn_parser_spec.rb +1 -0
- data/spec/unit/pops/pn_spec.rb +1 -0
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +7 -5
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +29 -4
- data/spec/unit/pops/serialization/to_stringified_spec.rb +157 -0
- data/spec/unit/pops/types/deferred_spec.rb +87 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +20 -0
- data/spec/unit/pops/types/p_timespan_type_spec.rb +0 -22
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +0 -19
- data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
- data/spec/unit/pops/types/ruby_generator_spec.rb +2 -2
- data/spec/unit/pops/types/string_converter_spec.rb +11 -22
- data/spec/unit/pops/types/task_spec.rb +148 -16
- data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
- data/spec/unit/pops/types/type_calculator_spec.rb +36 -36
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
- data/spec/unit/pops/types/type_parser_spec.rb +13 -13
- data/spec/unit/pops/types/types_spec.rb +12 -6
- data/spec/unit/pops/validator/validator_spec.rb +162 -82
- data/spec/unit/pops/visitor_spec.rb +1 -0
- data/spec/unit/property/boolean_spec.rb +1 -1
- data/spec/unit/property/ensure_spec.rb +1 -0
- data/spec/unit/property/keyvalue_spec.rb +34 -32
- data/spec/unit/property/list_spec.rb +27 -26
- data/spec/unit/property/ordered_list_spec.rb +14 -10
- data/spec/unit/property_spec.rb +53 -43
- data/spec/unit/provider/aix_object_spec.rb +45 -47
- data/spec/unit/provider/command_spec.rb +9 -9
- data/spec/unit/provider/exec/posix_spec.rb +9 -8
- data/spec/unit/provider/exec/shell_spec.rb +3 -1
- data/spec/unit/provider/exec/windows_spec.rb +6 -4
- data/spec/unit/provider/exec_spec.rb +1 -209
- data/spec/unit/provider/file/posix_spec.rb +24 -22
- data/spec/unit/provider/file/windows_spec.rb +19 -17
- data/spec/unit/provider/group/aix_spec.rb +7 -22
- data/spec/unit/provider/group/groupadd_spec.rb +27 -60
- data/spec/unit/provider/group/ldap_spec.rb +36 -33
- data/spec/unit/provider/group/pw_spec.rb +18 -15
- data/spec/unit/provider/group/windows_adsi_spec.rb +80 -128
- data/spec/unit/provider/ldap_spec.rb +62 -61
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +109 -102
- data/spec/unit/provider/nameservice_spec.rb +41 -39
- data/spec/unit/provider/package/aix_spec.rb +22 -48
- data/spec/unit/provider/package/appdmg_spec.rb +13 -13
- data/spec/unit/provider/package/apt_spec.rb +35 -60
- data/spec/unit/provider/package/aptitude_spec.rb +7 -7
- data/spec/unit/provider/package/aptrpm_spec.rb +13 -8
- data/spec/unit/provider/package/base_spec.rb +4 -4
- data/spec/unit/provider/package/dnf_spec.rb +23 -34
- data/spec/unit/provider/package/dpkg_spec.rb +72 -114
- data/spec/unit/provider/package/freebsd_spec.rb +18 -15
- data/spec/unit/provider/package/gem_spec.rb +86 -163
- data/spec/unit/provider/package/hpux_spec.rb +18 -15
- data/spec/unit/provider/package/macports_spec.rb +54 -56
- data/spec/unit/provider/package/nim_spec.rb +49 -33
- data/spec/unit/provider/package/openbsd_spec.rb +49 -60
- data/spec/unit/provider/package/opkg_spec.rb +26 -23
- data/spec/unit/provider/package/pacman_spec.rb +118 -97
- data/spec/unit/provider/package/pip3_spec.rb +6 -20
- data/spec/unit/provider/package/pip_spec.rb +129 -185
- data/spec/unit/provider/package/pkg_spec.rb +119 -129
- data/spec/unit/provider/package/pkgdmg_spec.rb +63 -65
- data/spec/unit/provider/package/pkgin_spec.rb +23 -20
- data/spec/unit/provider/package/pkgng_spec.rb +35 -67
- data/spec/unit/provider/package/pkgutil_spec.rb +49 -45
- data/spec/unit/provider/package/portage_spec.rb +76 -72
- data/spec/unit/provider/package/puppet_gem_spec.rb +21 -45
- data/spec/unit/provider/package/rpm_spec.rb +79 -291
- data/spec/unit/provider/package/sun_spec.rb +18 -16
- data/spec/unit/provider/package/tdnf_spec.rb +12 -9
- data/spec/unit/provider/package/up2date_spec.rb +4 -2
- data/spec/unit/provider/package/urpmi_spec.rb +17 -15
- data/spec/unit/provider/package/windows/exe_package_spec.rb +18 -15
- data/spec/unit/provider/package/windows/msi_package_spec.rb +23 -20
- data/spec/unit/provider/package/windows/package_spec.rb +43 -38
- data/spec/unit/provider/package/windows_spec.rb +36 -51
- data/spec/unit/provider/package/yum_spec.rb +24 -128
- data/spec/unit/provider/package/zypper_spec.rb +106 -117
- data/spec/unit/provider/parsedfile_spec.rb +45 -44
- data/spec/unit/provider/service/base_spec.rb +6 -5
- data/spec/unit/provider/service/bsd_spec.rb +54 -47
- data/spec/unit/provider/service/daemontools_spec.rb +53 -70
- data/spec/unit/provider/service/debian_spec.rb +58 -46
- data/spec/unit/provider/service/freebsd_spec.rb +23 -20
- data/spec/unit/provider/service/gentoo_spec.rb +81 -74
- data/spec/unit/provider/service/init_spec.rb +66 -65
- data/spec/unit/provider/service/launchd_spec.rb +114 -181
- data/spec/unit/provider/service/openbsd_spec.rb +94 -87
- data/spec/unit/provider/service/openrc_spec.rb +74 -70
- data/spec/unit/provider/service/openwrt_spec.rb +38 -30
- data/spec/unit/provider/service/rcng_spec.rb +24 -19
- data/spec/unit/provider/service/redhat_spec.rb +60 -60
- data/spec/unit/provider/service/runit_spec.rb +44 -61
- data/spec/unit/provider/service/smf_spec.rb +74 -143
- data/spec/unit/provider/service/src_spec.rb +69 -60
- data/spec/unit/provider/service/systemd_spec.rb +160 -222
- data/spec/unit/provider/service/upstart_spec.rb +99 -83
- data/spec/unit/provider/service/windows_spec.rb +42 -84
- data/spec/unit/provider/user/aix_spec.rb +24 -65
- data/spec/unit/provider/user/directoryservice_spec.rb +114 -187
- data/spec/unit/provider/user/hpux_spec.rb +21 -17
- data/spec/unit/provider/user/ldap_spec.rb +83 -80
- data/spec/unit/provider/user/openbsd_spec.rb +12 -11
- data/spec/unit/provider/user/pw_spec.rb +44 -80
- data/spec/unit/provider/user/user_role_add_spec.rb +94 -94
- data/spec/unit/provider/user/useradd_spec.rb +100 -208
- data/spec/unit/provider/user/windows_adsi_spec.rb +63 -62
- data/spec/unit/provider_spec.rb +189 -41
- data/spec/unit/puppet_pal_2pec.rb +26 -12
- data/spec/unit/puppet_pal_catalog_spec.rb +801 -0
- data/spec/unit/puppet_pal_spec.rb +2 -8
- data/spec/unit/puppet_spec.rb +7 -27
- data/spec/unit/relationship_spec.rb +1 -0
- data/spec/unit/reports/http_spec.rb +23 -21
- data/spec/unit/reports/store_spec.rb +4 -3
- data/spec/unit/reports_spec.rb +14 -12
- data/spec/unit/resource/capability_finder_spec.rb +26 -29
- data/spec/unit/resource/catalog_spec.rb +77 -81
- data/spec/unit/resource/status_spec.rb +8 -6
- data/spec/unit/resource/type_collection_spec.rb +18 -17
- data/spec/unit/resource/type_spec.rb +35 -34
- data/spec/unit/resource_spec.rb +79 -67
- data/spec/unit/rest/client_spec.rb +135 -0
- data/spec/unit/rest/route_spec.rb +132 -0
- data/spec/unit/scheduler/job_spec.rb +1 -0
- data/spec/unit/scheduler/scheduler_spec.rb +1 -0
- data/spec/unit/scheduler/splay_job_spec.rb +2 -1
- data/spec/unit/settings/array_setting_spec.rb +1 -1
- data/spec/unit/settings/autosign_setting_spec.rb +9 -9
- data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
- data/spec/unit/settings/config_file_spec.rb +10 -0
- data/spec/unit/settings/directory_setting_spec.rb +7 -2
- data/spec/unit/settings/duration_setting_spec.rb +2 -1
- data/spec/unit/settings/enum_setting_spec.rb +1 -1
- data/spec/unit/settings/environment_conf_spec.rb +6 -4
- data/spec/unit/settings/file_setting_spec.rb +50 -46
- data/spec/unit/settings/ini_file_spec.rb +2 -4
- data/spec/unit/settings/path_setting_spec.rb +3 -2
- data/spec/unit/settings/priority_setting_spec.rb +2 -1
- data/spec/unit/settings/string_setting_spec.rb +15 -14
- data/spec/unit/settings/terminus_setting_spec.rb +2 -1
- data/spec/unit/settings/value_translator_spec.rb +1 -0
- data/spec/unit/settings_spec.rb +226 -253
- data/spec/unit/ssl/base_spec.rb +15 -14
- data/spec/unit/ssl/certificate_request_attributes_spec.rb +22 -8
- data/spec/unit/ssl/certificate_request_spec.rb +63 -92
- data/spec/unit/ssl/certificate_spec.rb +29 -37
- data/spec/unit/ssl/digest_spec.rb +1 -0
- data/spec/unit/ssl/host_spec.rb +305 -685
- data/spec/unit/ssl/key_spec.rb +34 -46
- data/spec/unit/ssl/validator_spec.rb +70 -203
- data/spec/unit/task_spec.rb +172 -26
- data/spec/unit/transaction/additional_resource_generator_spec.rb +68 -67
- data/spec/unit/transaction/event_manager_spec.rb +84 -95
- data/spec/unit/transaction/event_spec.rb +15 -16
- data/spec/unit/transaction/persistence_spec.rb +18 -17
- data/spec/unit/transaction/report_spec.rb +24 -18
- data/spec/unit/transaction/resource_harness_spec.rb +33 -72
- data/spec/unit/transaction_spec.rb +106 -176
- data/spec/unit/type/component_spec.rb +1 -0
- data/spec/unit/type/exec_spec.rb +66 -120
- data/spec/unit/type/file/checksum_spec.rb +11 -10
- data/spec/unit/type/file/checksum_value_spec.rb +32 -31
- data/spec/unit/type/file/content_spec.rb +62 -65
- data/spec/unit/type/file/ctime_spec.rb +1 -0
- data/spec/unit/type/file/ensure_spec.rb +13 -12
- data/spec/unit/type/file/group_spec.rb +7 -5
- data/spec/unit/type/file/mode_spec.rb +6 -4
- data/spec/unit/type/file/mtime_spec.rb +1 -0
- data/spec/unit/type/file/owner_spec.rb +8 -6
- data/spec/unit/type/file/selinux_spec.rb +19 -17
- data/spec/unit/type/file/source_spec.rb +110 -113
- data/spec/unit/type/file/type_spec.rb +1 -0
- data/spec/unit/type/file_spec.rb +190 -204
- data/spec/unit/type/filebucket_spec.rb +10 -11
- data/spec/unit/type/group_spec.rb +9 -15
- data/spec/unit/type/noop_metaparam_spec.rb +2 -1
- data/spec/unit/type/package/package_settings_spec.rb +23 -44
- data/spec/unit/type/package_spec.rb +64 -61
- data/spec/unit/type/resources_spec.rb +101 -103
- data/spec/unit/type/schedule_spec.rb +28 -28
- data/spec/unit/type/service_spec.rb +85 -76
- data/spec/unit/type/stage_spec.rb +1 -0
- data/spec/unit/type/tidy_spec.rb +63 -62
- data/spec/unit/type/user_spec.rb +26 -147
- data/spec/unit/type/whit_spec.rb +1 -0
- data/spec/unit/type_spec.rb +164 -125
- data/spec/unit/util/at_fork_spec.rb +19 -18
- data/spec/unit/util/autoload_spec.rb +122 -93
- data/spec/unit/util/backups_spec.rb +35 -34
- data/spec/unit/util/character_encoding_spec.rb +5 -48
- data/spec/unit/util/checksums_spec.rb +39 -38
- data/spec/unit/util/colors_spec.rb +2 -1
- data/spec/unit/util/command_line_spec.rb +20 -40
- data/spec/unit/util/constant_inflector_spec.rb +1 -0
- data/spec/unit/util/diff_spec.rb +8 -7
- data/spec/unit/util/errors_spec.rb +1 -0
- data/spec/unit/util/execution_spec.rb +167 -285
- data/spec/unit/util/execution_stub_spec.rb +3 -2
- data/spec/unit/util/feature_spec.rb +46 -28
- data/spec/unit/util/filetype_spec.rb +53 -61
- data/spec/unit/util/http_proxy_spec.rb +13 -133
- data/spec/unit/util/inifile_spec.rb +31 -26
- data/spec/unit/util/json_lockfile_spec.rb +5 -3
- data/spec/unit/util/ldap/connection_spec.rb +25 -26
- data/spec/unit/util/ldap/generator_spec.rb +1 -0
- data/spec/unit/util/ldap/manager_spec.rb +102 -118
- data/spec/unit/util/lockfile_spec.rb +2 -1
- data/spec/unit/util/log/destinations_spec.rb +40 -23
- data/spec/unit/util/log_spec.rb +146 -48
- data/spec/unit/util/logging_spec.rb +114 -252
- data/spec/unit/util/metric_spec.rb +1 -0
- data/spec/unit/util/monkey_patches_spec.rb +12 -24
- data/spec/unit/util/multi_match_spec.rb +1 -0
- data/spec/unit/util/network_device/config_spec.rb +1 -0
- data/spec/unit/util/network_device/transport/base_spec.rb +6 -5
- data/spec/unit/util/network_device_spec.rb +9 -7
- data/spec/unit/util/package_spec.rb +1 -0
- data/spec/unit/util/pidlock_spec.rb +14 -86
- data/spec/unit/util/plist_spec.rb +33 -60
- data/spec/unit/util/posix_spec.rb +47 -78
- data/spec/unit/util/profiler/object_counts_spec.rb +2 -1
- data/spec/unit/util/rdoc_spec.rb +10 -9
- data/spec/unit/util/reference_spec.rb +1 -0
- data/spec/unit/util/resource_template_spec.rb +20 -20
- data/spec/unit/util/retry_action_spec.rb +8 -7
- data/spec/unit/util/rubygems_spec.rb +7 -41
- data/spec/unit/util/run_mode_spec.rb +11 -10
- data/spec/unit/util/selinux_spec.rb +73 -84
- data/spec/unit/util/splayer_spec.rb +9 -8
- data/spec/unit/util/ssl_spec.rb +1 -0
- data/spec/unit/util/storage_spec.rb +17 -111
- data/spec/unit/util/suidmanager_spec.rb +58 -47
- data/spec/unit/util/symbolic_file_mode_spec.rb +1 -0
- data/spec/unit/util/tag_set_spec.rb +9 -1
- data/spec/unit/util/tagging_spec.rb +12 -0
- data/spec/unit/util/terminal_spec.rb +10 -9
- data/spec/unit/util/user_attr_spec.rb +2 -1
- data/spec/unit/util/warnings_spec.rb +4 -3
- data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
- data/spec/unit/util/watcher_spec.rb +21 -51
- data/spec/unit/util/windows/access_control_entry_spec.rb +2 -1
- data/spec/unit/util/windows/access_control_list_spec.rb +2 -1
- data/spec/unit/util/windows/adsi_spec.rb +134 -278
- data/spec/unit/util/windows/api_types_spec.rb +42 -105
- data/spec/unit/util/windows/eventlog_spec.rb +13 -10
- data/spec/unit/util/windows/file_spec.rb +1 -0
- data/spec/unit/util/windows/root_certs_spec.rb +1 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -1
- data/spec/unit/util/windows/service_spec.rb +180 -432
- data/spec/unit/util/windows/sid_spec.rb +17 -15
- data/spec/unit/util/windows/string_spec.rb +2 -1
- data/spec/unit/util/yaml_spec.rb +162 -28
- data/spec/unit/util_spec.rb +74 -119
- data/spec/unit/version_spec.rb +6 -6
- data/tasks/benchmark.rake +5 -1
- data/tasks/ci.rake +0 -5
- data/tasks/manpages.rake +9 -2
- data/tasks/parser.rake +11 -3
- metadata +162 -479
- data/CODEOWNERS +0 -30
- data/ext/rack/config.ru +0 -44
- data/ext/rack/example-passenger-vhost.conf +0 -57
- data/lib/puppet/application/ca.rb +0 -11
- data/lib/puppet/application/certificate.rb +0 -17
- data/lib/puppet/application/certificate_request.rb +0 -7
- data/lib/puppet/application/certificate_revocation_list.rb +0 -7
- data/lib/puppet/application/master.rb +0 -319
- data/lib/puppet/confine/boolean.rb +0 -45
- data/lib/puppet/external/nagios.rb +0 -46
- data/lib/puppet/external/nagios/base.rb +0 -472
- data/lib/puppet/external/nagios/grammar.ry +0 -248
- data/lib/puppet/external/nagios/makefile +0 -9
- data/lib/puppet/external/nagios/parser.rb +0 -400
- data/lib/puppet/face/ca.rb +0 -266
- data/lib/puppet/face/certificate.rb +0 -167
- data/lib/puppet/face/certificate_request.rb +0 -56
- data/lib/puppet/face/certificate_revocation_list.rb +0 -56
- data/lib/puppet/feature/rack.rb +0 -19
- data/lib/puppet/graph/random_prioritizer.rb +0 -16
- data/lib/puppet/graph/title_hash_prioritizer.rb +0 -16
- data/lib/puppet/indirector/certificate/ca.rb +0 -9
- data/lib/puppet/indirector/certificate/disabled_ca.rb +0 -22
- data/lib/puppet/indirector/certificate_request/ca.rb +0 -22
- data/lib/puppet/indirector/certificate_request/disabled_ca.rb +0 -22
- data/lib/puppet/indirector/certificate_revocation_list/ca.rb +0 -8
- data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +0 -22
- data/lib/puppet/indirector/certificate_revocation_list/file.rb +0 -8
- data/lib/puppet/indirector/certificate_revocation_list/rest.rb +0 -22
- data/lib/puppet/indirector/certificate_status.rb +0 -4
- data/lib/puppet/indirector/certificate_status/file.rb +0 -91
- data/lib/puppet/indirector/certificate_status/rest.rb +0 -11
- data/lib/puppet/indirector/key/ca.rb +0 -16
- data/lib/puppet/indirector/key/disabled_ca.rb +0 -22
- data/lib/puppet/indirector/ldap.rb +0 -86
- data/lib/puppet/indirector/node/ldap.rb +0 -275
- data/lib/puppet/indirector/node/write_only_yaml.rb +0 -39
- data/lib/puppet/module_tool/applications/builder.rb +0 -152
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +0 -18
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +0 -89
- data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +0 -32
- data/lib/puppet/module_tool/skeleton/templates/generator/examples/init.pp.erb +0 -12
- data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +0 -48
- data/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +0 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +0 -6
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +0 -1
- data/lib/puppet/network/http/api/ca.rb +0 -2
- data/lib/puppet/network/http/api/ca/v1.rb +0 -11
- data/lib/puppet/network/http/rack.rb +0 -33
- data/lib/puppet/network/http/rack/rest.rb +0 -162
- data/lib/puppet/network/http/webrick.rb +0 -124
- data/lib/puppet/network/http/webrick/rest.rb +0 -114
- data/lib/puppet/network/server.rb +0 -39
- data/lib/puppet/provider/augeas/augeas.rb +0 -767
- data/lib/puppet/provider/cisco.rb +0 -9
- data/lib/puppet/provider/computer/computer.rb +0 -20
- data/lib/puppet/provider/cron/crontab.rb +0 -297
- data/lib/puppet/provider/host/parsed.rb +0 -46
- data/lib/puppet/provider/interface/cisco.rb +0 -27
- data/lib/puppet/provider/macauthorization/macauthorization.rb +0 -298
- data/lib/puppet/provider/mailalias/aliases.rb +0 -50
- data/lib/puppet/provider/maillist/mailman.rb +0 -108
- data/lib/puppet/provider/mcx/mcxcontent.rb +0 -173
- data/lib/puppet/provider/mount.rb +0 -76
- data/lib/puppet/provider/mount/parsed.rb +0 -285
- data/lib/puppet/provider/naginator.rb +0 -63
- data/lib/puppet/provider/package/dnfmodule.rb +0 -141
- data/lib/puppet/provider/package_targetable.rb +0 -69
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +0 -590
- data/lib/puppet/provider/selboolean/getsetsebool.rb +0 -47
- data/lib/puppet/provider/selmodule/semodule.rb +0 -157
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +0 -105
- data/lib/puppet/provider/sshkey/parsed.rb +0 -50
- data/lib/puppet/provider/vlan/cisco.rb +0 -28
- data/lib/puppet/provider/yumrepo/inifile.rb +0 -315
- data/lib/puppet/provider/zfs/zfs.rb +0 -108
- data/lib/puppet/provider/zone/solaris.rb +0 -364
- data/lib/puppet/provider/zpool/zpool.rb +0 -125
- data/lib/puppet/ssl/certificate_authority.rb +0 -554
- data/lib/puppet/ssl/certificate_authority/autosign_command.rb +0 -45
- data/lib/puppet/ssl/certificate_authority/interface.rb +0 -324
- data/lib/puppet/ssl/certificate_revocation_list.rb +0 -111
- data/lib/puppet/ssl/configuration.rb +0 -61
- data/lib/puppet/ssl/inventory.rb +0 -55
- data/lib/puppet/type/augeas.rb +0 -211
- data/lib/puppet/type/computer.rb +0 -66
- data/lib/puppet/type/cron.rb +0 -480
- data/lib/puppet/type/host.rb +0 -95
- data/lib/puppet/type/interface.rb +0 -121
- data/lib/puppet/type/k5login.rb +0 -165
- data/lib/puppet/type/macauthorization.rb +0 -167
- data/lib/puppet/type/mailalias.rb +0 -46
- data/lib/puppet/type/maillist.rb +0 -62
- data/lib/puppet/type/mcx.rb +0 -98
- data/lib/puppet/type/mount.rb +0 -314
- data/lib/puppet/type/nagios_command.rb +0 -3
- data/lib/puppet/type/nagios_contact.rb +0 -3
- data/lib/puppet/type/nagios_contactgroup.rb +0 -3
- data/lib/puppet/type/nagios_host.rb +0 -3
- data/lib/puppet/type/nagios_hostdependency.rb +0 -3
- data/lib/puppet/type/nagios_hostescalation.rb +0 -3
- data/lib/puppet/type/nagios_hostextinfo.rb +0 -3
- data/lib/puppet/type/nagios_hostgroup.rb +0 -3
- data/lib/puppet/type/nagios_service.rb +0 -3
- data/lib/puppet/type/nagios_servicedependency.rb +0 -3
- data/lib/puppet/type/nagios_serviceescalation.rb +0 -3
- data/lib/puppet/type/nagios_serviceextinfo.rb +0 -3
- data/lib/puppet/type/nagios_servicegroup.rb +0 -3
- data/lib/puppet/type/nagios_timeperiod.rb +0 -3
- data/lib/puppet/type/router.rb +0 -17
- data/lib/puppet/type/scheduled_task.rb +0 -183
- data/lib/puppet/type/selboolean.rb +0 -40
- data/lib/puppet/type/selmodule.rb +0 -58
- data/lib/puppet/type/ssh_authorized_key.rb +0 -143
- data/lib/puppet/type/sshkey.rb +0 -83
- data/lib/puppet/type/vlan.rb +0 -26
- data/lib/puppet/type/yumrepo.rb +0 -430
- data/lib/puppet/type/zfs.rb +0 -154
- data/lib/puppet/type/zone.rb +0 -382
- data/lib/puppet/type/zpool.rb +0 -91
- data/lib/puppet/util/methodhelper.rb +0 -32
- data/lib/puppet/util/nagios_maker.rb +0 -85
- data/lib/puppet/util/network_device/cisco.rb +0 -4
- data/lib/puppet/util/network_device/cisco/device.rb +0 -285
- data/lib/puppet/util/network_device/cisco/facts.rb +0 -72
- data/lib/puppet/util/network_device/cisco/interface.rb +0 -94
- data/lib/puppet/util/network_device/ipcalc.rb +0 -68
- data/lib/puppet/util/network_device/transport/ssh.rb +0 -126
- data/lib/puppet/util/network_device/transport/telnet.rb +0 -47
- data/lib/puppet/util/windows/taskscheduler.rb +0 -1267
- data/lib/puppet/vendor/load_semantic.rb +0 -1
- data/lib/puppet/vendor/load_semantic_puppet.rb +0 -1
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -5
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +0 -11
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency.rb +0 -181
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph.rb +0 -60
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph_node.rb +0 -117
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +0 -58
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/source.rb +0 -25
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/unsatisfiable_graph.rb +0 -31
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +0 -3
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +0 -203
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +0 -758
- data/lib/puppet/vendor/semantic_puppet/locales/config.yaml +0 -21
- data/man/man8/puppet-ca.8 +0 -196
- data/man/man8/puppet-cert.8 +0 -118
- data/man/man8/puppet-certificate.8 +0 -240
- data/man/man8/puppet-certificate_request.8 +0 -161
- data/man/man8/puppet-certificate_revocation_list.8 +0 -139
- data/man/man8/puppet-master.8 +0 -85
- data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +0 -19
- data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +0 -18
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +0 -15
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +0 -4
- data/spec/fixtures/integration/provider/cron/crontab/modify_entry +0 -13
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +0 -15
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +0 -6
- data/spec/fixtures/integration/provider/cron/crontab/purged +0 -8
- data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +0 -12
- data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +0 -14
- data/spec/fixtures/integration/provider/cron/crontab/unspecialized +0 -15
- data/spec/fixtures/integration/provider/mailalias/aliases/test1 +0 -32
- data/spec/fixtures/integration/provider/sshkey/sample +0 -21
- data/spec/fixtures/unit/provider/augeas/augeas/augeas/lenses/test.aug +0 -13
- data/spec/fixtures/unit/provider/augeas/augeas/etc/fstab +0 -10
- data/spec/fixtures/unit/provider/augeas/augeas/etc/hosts +0 -6
- data/spec/fixtures/unit/provider/augeas/augeas/etc/test +0 -3
- data/spec/fixtures/unit/provider/augeas/augeas/test.aug +0 -13
- data/spec/fixtures/unit/provider/host/parsed/valid_hosts +0 -19
- data/spec/fixtures/unit/provider/mount/mount-output.aix.txt +0 -7
- data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +0 -152
- data/spec/fixtures/unit/provider/mount/parsed/aix.mount +0 -11
- data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +0 -6
- data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +0 -9
- data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +0 -4
- data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +0 -17
- data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +0 -12
- data/spec/fixtures/unit/provider/mount/parsed/linux.mount +0 -6
- data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +0 -10
- data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +0 -9
- data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +0 -5
- data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +0 -5
- data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +0 -11
- data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +0 -6
- data/spec/fixtures/unit/provider/naginator/define_empty_param +0 -6
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +0 -19
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +0 -9
- data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +0 -6
- data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +0 -13
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +0 -7
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +0 -3
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +0 -1
- data/spec/fixtures/unit/provider/sshkey/parsed/sample +0 -21
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +0 -8
- data/spec/fixtures/unit/provider/zfs/zfs/zfs-list.out +0 -2
- data/spec/fixtures/unit/provider/zpool/zpool/zpool-list.out +0 -2
- data/spec/integration/faces/ca_spec.rb +0 -353
- data/spec/integration/indirector/node/ldap_spec.rb +0 -13
- data/spec/integration/network/http_pool_spec.rb +0 -120
- data/spec/integration/provider/cron/crontab_spec.rb +0 -240
- data/spec/integration/provider/file/windows_spec.rb +0 -162
- data/spec/integration/provider/mailalias/aliases_spec.rb +0 -9
- data/spec/integration/provider/mount_spec.rb +0 -163
- data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -217
- data/spec/integration/provider/sshkey_spec.rb +0 -153
- data/spec/integration/provider/yumrepo_spec.rb +0 -126
- data/spec/integration/ssl/autosign_spec.rb +0 -145
- data/spec/integration/ssl/certificate_authority_spec.rb +0 -161
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -33
- data/spec/integration/transaction_spec.rb +0 -553
- data/spec/integration/type/nagios_spec.rb +0 -69
- data/spec/integration/type/notify_spec.rb +0 -46
- data/spec/integration/type/user_spec.rb +0 -63
- data/spec/lib/puppet_spec/https.rb +0 -166
- data/spec/unit/application/cert_spec.rb +0 -272
- data/spec/unit/application/certificate_spec.rb +0 -21
- data/spec/unit/application/master_spec.rb +0 -414
- data/spec/unit/face/ca_spec.rb +0 -9
- data/spec/unit/face/certificate_request_spec.rb +0 -9
- data/spec/unit/face/certificate_revocation_list_spec.rb +0 -9
- data/spec/unit/face/certificate_spec.rb +0 -228
- data/spec/unit/face/module/build_spec.rb +0 -69
- data/spec/unit/graph/title_hash_prioritizer_spec.rb +0 -50
- data/spec/unit/indirector/certificate/ca_spec.rb +0 -21
- data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -32
- data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -56
- data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -32
- data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -15
- data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -32
- data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -16
- data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -33
- data/spec/unit/indirector/certificate_status/file_spec.rb +0 -190
- data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -17
- data/spec/unit/indirector/code_spec.rb +0 -30
- data/spec/unit/indirector/key/ca_spec.rb +0 -22
- data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -32
- data/spec/unit/indirector/ldap_spec.rb +0 -151
- data/spec/unit/indirector/node/ldap_spec.rb +0 -463
- data/spec/unit/indirector/node/write_only_yaml_spec.rb +0 -11
- data/spec/unit/module_tool/applications/builder_spec.rb +0 -439
- data/spec/unit/network/http/api/ca/v1_spec.rb +0 -26
- data/spec/unit/network/http/rack/rest_spec.rb +0 -322
- data/spec/unit/network/http/rack_spec.rb +0 -42
- data/spec/unit/network/http/webrick/rest_spec.rb +0 -230
- data/spec/unit/network/http/webrick_spec.rb +0 -277
- data/spec/unit/network/server_spec.rb +0 -94
- data/spec/unit/provider/augeas/augeas_spec.rb +0 -1096
- data/spec/unit/provider/cisco_spec.rb +0 -14
- data/spec/unit/provider/cron/crontab_spec.rb +0 -206
- data/spec/unit/provider/cron/parsed_spec.rb +0 -355
- data/spec/unit/provider/host/parsed_spec.rb +0 -219
- data/spec/unit/provider/interface/cisco_spec.rb +0 -53
- data/spec/unit/provider/macauthorization_spec.rb +0 -134
- data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -190
- data/spec/unit/provider/mount/parsed_spec.rb +0 -318
- data/spec/unit/provider/mount_spec.rb +0 -169
- data/spec/unit/provider/naginator_spec.rb +0 -78
- data/spec/unit/provider/network_device_spec.rb +0 -152
- data/spec/unit/provider/package/dnfmodule_spec.rb +0 -247
- data/spec/unit/provider/package_targetable_spec.rb +0 -60
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +0 -2050
- data/spec/unit/provider/selboolean_spec.rb +0 -34
- data/spec/unit/provider/selmodule-example.pp +0 -0
- data/spec/unit/provider/selmodule_spec.rb +0 -154
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -259
- data/spec/unit/provider/sshkey/parsed_spec.rb +0 -92
- data/spec/unit/provider/vlan/cisco_spec.rb +0 -53
- data/spec/unit/provider/yumrepo/inifile_spec.rb +0 -413
- data/spec/unit/provider/zfs/zfs_spec.rb +0 -171
- data/spec/unit/provider/zone/solaris_spec.rb +0 -261
- data/spec/unit/provider/zpool/zpool_spec.rb +0 -250
- data/spec/unit/settings/server_list_setting_spec.rb +0 -21
- data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +0 -29
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -563
- data/spec/unit/ssl/certificate_authority_spec.rb +0 -1165
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -196
- data/spec/unit/ssl/configuration_spec.rb +0 -138
- data/spec/unit/ssl/inventory_spec.rb +0 -155
- data/spec/unit/test/test_helper_spec.rb +0 -17
- data/spec/unit/type/augeas_spec.rb +0 -120
- data/spec/unit/type/computer_spec.rb +0 -77
- data/spec/unit/type/cron_spec.rb +0 -539
- data/spec/unit/type/host_spec.rb +0 -680
- data/spec/unit/type/interface_spec.rb +0 -128
- data/spec/unit/type/k5login_spec.rb +0 -204
- data/spec/unit/type/macauthorization_spec.rb +0 -111
- data/spec/unit/type/mailalias_spec.rb +0 -48
- data/spec/unit/type/maillist_spec.rb +0 -38
- data/spec/unit/type/mcx_spec.rb +0 -75
- data/spec/unit/type/mount_spec.rb +0 -622
- data/spec/unit/type/nagios_spec.rb +0 -312
- data/spec/unit/type/scheduled_task_spec.rb +0 -117
- data/spec/unit/type/selboolean_spec.rb +0 -41
- data/spec/unit/type/selmodule_spec.rb +0 -16
- data/spec/unit/type/ssh_authorized_key_spec.rb +0 -228
- data/spec/unit/type/sshkey_spec.rb +0 -75
- data/spec/unit/type/vlan_spec.rb +0 -42
- data/spec/unit/type/yumrepo_spec.rb +0 -476
- data/spec/unit/type/zfs_spec.rb +0 -45
- data/spec/unit/type/zone_spec.rb +0 -182
- data/spec/unit/type/zpool_spec.rb +0 -108
- data/spec/unit/util/nagios_maker_spec.rb +0 -121
- data/spec/unit/util/network_device/cisco/device_spec.rb +0 -491
- data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -63
- data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -97
- data/spec/unit/util/network_device/ipcalc_spec.rb +0 -61
- data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -252
- data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -90
@@ -1,72 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'puppet/util/network_device/cisco'
|
3
|
-
require 'puppet/util/network_device/ipcalc'
|
4
|
-
|
5
|
-
# this retrieves facts from a cisco device
|
6
|
-
class Puppet::Util::NetworkDevice::Cisco::Facts
|
7
|
-
|
8
|
-
attr_reader :transport
|
9
|
-
|
10
|
-
def initialize(transport)
|
11
|
-
@transport = transport
|
12
|
-
end
|
13
|
-
|
14
|
-
def retrieve
|
15
|
-
facts = {}
|
16
|
-
facts.merge(parse_show_ver)
|
17
|
-
end
|
18
|
-
|
19
|
-
def parse_show_ver
|
20
|
-
facts = {}
|
21
|
-
out = @transport.command("sh ver")
|
22
|
-
lines = out.split("\n")
|
23
|
-
lines.shift; lines.pop
|
24
|
-
lines.each do |l|
|
25
|
-
case l
|
26
|
-
# cisco WS-C2924C-XL (PowerPC403GA) processor (revision 0x11) with 8192K/1024K bytes of memory.
|
27
|
-
# Cisco 1841 (revision 5.0) with 355328K/37888K bytes of memory.
|
28
|
-
# Cisco 877 (MPC8272) processor (revision 0x200) with 118784K/12288K bytes of memory.
|
29
|
-
# cisco WS-C2960G-48TC-L (PowerPC405) processor (revision C0) with 61440K/4088K bytes of memory.
|
30
|
-
# cisco WS-C2950T-24 (RC32300) processor (revision R0) with 19959K bytes of memory.
|
31
|
-
when /[cC]isco ([\w-]+) (?:\(([\w-]+)\) processor )?\(revision (.+)\) with (\d+[KMG])(?:\/(\d+[KMG]))? bytes of memory\./
|
32
|
-
facts[:hardwaremodel] = $1
|
33
|
-
facts[:processor] = $2 if $2
|
34
|
-
facts[:hardwarerevision] = $3
|
35
|
-
facts[:memorysize] = $4
|
36
|
-
# uptime
|
37
|
-
# Switch uptime is 1 year, 12 weeks, 6 days, 22 hours, 32 minutes
|
38
|
-
# c2950 uptime is 3 weeks, 1 day, 23 hours, 36 minutes
|
39
|
-
# c2960 uptime is 2 years, 27 weeks, 5 days, 21 hours, 30 minutes
|
40
|
-
# router uptime is 5 weeks, 1 day, 3 hours, 30 minutes
|
41
|
-
when /^\s*([\w-]+)\s+uptime is (.*?)$/
|
42
|
-
facts[:hostname] = $1
|
43
|
-
facts[:uptime] = $2
|
44
|
-
facts[:uptime_seconds] = uptime_to_seconds($2)
|
45
|
-
facts[:uptime_days] = facts[:uptime_seconds] / 86400
|
46
|
-
# "IOS (tm) C2900XL Software (C2900XL-C3H2S-M), Version 12.0(5)WC10, RELEASE SOFTWARE (fc1)"=> { :operatingsystem => "IOS", :operatingsystemrelease => "12.0(5)WC10", :operatingsystemmajrelease => "12.0", :operatingsystemfeature => "C3H2S"},
|
47
|
-
# "IOS (tm) C2950 Software (C2950-I6K2L2Q4-M), Version 12.1(22)EA8a, RELEASE SOFTWARE (fc1)"=> { :operatingsystem => "IOS", :operatingsystemrelease => "12.1(22)EA8a", :operatingsystemmajrelease => "12.1", :operatingsystemfeature => "I6K2L2Q4"},
|
48
|
-
# "Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 12.2(44)SE, RELEASE SOFTWARE (fc1)"=>{ :operatingsystem => "IOS", :operatingsystemrelease => "12.2(44)SE", :operatingsystemmajrelease => "12.2", :operatingsystemfeature => "LANBASEK9"},
|
49
|
-
# "Cisco IOS Software, C870 Software (C870-ADVIPSERVICESK9-M), Version 12.4(11)XJ4, RELEASE SOFTWARE (fc2)"=>{ :operatingsystem => "IOS", :operatingsystemrelease => "12.4(11)XJ40", :operatingsystemmajrelease => "12.4XJ", :operatingsystemfeature => "ADVIPSERVICESK9"},
|
50
|
-
# "Cisco IOS Software, 1841 Software (C1841-ADVSECURITYK9-M), Version 12.4(24)T4, RELEASE SOFTWARE (fc2)" =>{ :operatingsystem => "IOS", :operatingsystemrelease => "12.4(24)T4", :operatingsystemmajrelease => "12.4T", :operatingsystemfeature => "ADVSECURITYK9"},
|
51
|
-
when /(?:Cisco )?(IOS)\s*(?:\(tm\) |Software, )?(?:\w+)\s+Software\s+\(\w+-(\w+)-\w+\), Version ([0-9.()A-Za-z]+),/
|
52
|
-
facts[:operatingsystem] = $1
|
53
|
-
facts[:operatingsystemrelease] = $3
|
54
|
-
facts[:operatingsystemmajrelease] = ios_major_version(facts[:operatingsystemrelease])
|
55
|
-
facts[:operatingsystemfeature] = $2
|
56
|
-
end
|
57
|
-
end
|
58
|
-
facts
|
59
|
-
end
|
60
|
-
|
61
|
-
def ios_major_version(version)
|
62
|
-
version.gsub(/^(\d+)\.(\d+)\(.+\)([A-Z]+)([\da-z]+)?/, '\1.\2\3')
|
63
|
-
end
|
64
|
-
|
65
|
-
def uptime_to_seconds(uptime)
|
66
|
-
captures = (uptime.match(/^(?:(\d+) years?,)?\s*(?:(\d+) weeks?,)?\s*(?:(\d+) days?,)?\s*(?:(\d+) hours?,)?\s*(\d+) minutes?$/)).captures
|
67
|
-
captures.zip([31536000, 604800, 86400, 3600, 60]).inject(0) do |total, (x,y)|
|
68
|
-
total + (x.nil? ? 0 : x.to_i * y)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
@@ -1,94 +0,0 @@
|
|
1
|
-
require 'puppet/util/network_device/cisco'
|
2
|
-
require 'puppet/util/network_device/ipcalc'
|
3
|
-
|
4
|
-
# this manages setting properties to an interface in a cisco switch or router
|
5
|
-
class Puppet::Util::NetworkDevice::Cisco::Interface
|
6
|
-
|
7
|
-
include Puppet::Util::NetworkDevice::IPCalc
|
8
|
-
extend Puppet::Util::NetworkDevice::IPCalc
|
9
|
-
|
10
|
-
attr_reader :transport, :name
|
11
|
-
|
12
|
-
def initialize(name, transport)
|
13
|
-
@name = name
|
14
|
-
@transport = transport
|
15
|
-
end
|
16
|
-
|
17
|
-
COMMANDS = {
|
18
|
-
# property => order, ios command/block/array
|
19
|
-
:description => [1, "description %s"],
|
20
|
-
:speed => [2, "speed %s"],
|
21
|
-
:duplex => [3, "duplex %s"],
|
22
|
-
:encapsulation => [4, "switchport trunk encapsulation %s"],
|
23
|
-
:mode => [5, "switchport mode %s"],
|
24
|
-
:access_vlan => [6, "switchport access vlan %s"],
|
25
|
-
:native_vlan => [7, "switchport trunk native vlan %s"],
|
26
|
-
:allowed_trunk_vlans => [8, "switchport trunk allowed vlan %s"],
|
27
|
-
:etherchannel => [9, ["channel-group %s", "port group %s"]],
|
28
|
-
:ipaddress => [10,
|
29
|
-
lambda do |prefix,ip,option|
|
30
|
-
ip.ipv6? ? "ipv6 address #{ip}/#{prefix} #{option}" :
|
31
|
-
"ip address #{ip} #{netmask(Socket::AF_INET,prefix)}"
|
32
|
-
end],
|
33
|
-
:ensure => [11, lambda { |value| value == :present ? "no shutdown" : "shutdown" } ]
|
34
|
-
}
|
35
|
-
|
36
|
-
def update(is={}, should={})
|
37
|
-
Puppet.debug("Updating interface #{name}")
|
38
|
-
command("conf t")
|
39
|
-
command("interface #{name}")
|
40
|
-
|
41
|
-
# apply changes in a defined order for cisco IOS devices
|
42
|
-
[is.keys, should.keys].flatten.uniq.sort {|a,b| COMMANDS[a][0] <=> COMMANDS[b][0] }.each do |property|
|
43
|
-
# Work around for old documentation which shows :native_vlan used for access vlan
|
44
|
-
if property == :access_vlan and should[:mode] != :trunk and should[:access_vlan].nil?
|
45
|
-
should[:access_vlan] = should[:native_vlan]
|
46
|
-
end
|
47
|
-
|
48
|
-
Puppet.debug("comparing #{property}: #{is[property]} == #{should[property]}")
|
49
|
-
|
50
|
-
# They're equal, so do nothing.
|
51
|
-
next if is[property] == should[property]
|
52
|
-
|
53
|
-
# We're deleting it
|
54
|
-
if should[property] == :absent or should[property].nil?
|
55
|
-
execute(property, is[property], "no ")
|
56
|
-
next
|
57
|
-
end
|
58
|
-
|
59
|
-
# We're replacing an existing value or creating a new one
|
60
|
-
execute(property, should[property])
|
61
|
-
end
|
62
|
-
|
63
|
-
command("exit")
|
64
|
-
command("exit")
|
65
|
-
end
|
66
|
-
|
67
|
-
def execute(property, value, prefix='')
|
68
|
-
case COMMANDS[property][1]
|
69
|
-
when Array
|
70
|
-
COMMANDS[property][1].each do |command|
|
71
|
-
transport.command(prefix + command % value) do |out|
|
72
|
-
break unless out =~ /^%/
|
73
|
-
end
|
74
|
-
end
|
75
|
-
when String
|
76
|
-
command(prefix + COMMANDS[property][1] % value)
|
77
|
-
when Proc
|
78
|
-
value = [value] unless value.is_a?(Array)
|
79
|
-
value.each do |v|
|
80
|
-
command(prefix + COMMANDS[property][1].call(*v))
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def command(command)
|
86
|
-
transport.command(command) do |out|
|
87
|
-
if out =~ /^%/mo or out =~ /^Command rejected:/mo
|
88
|
-
# strip off the command just sent
|
89
|
-
error = out.sub(command,'')
|
90
|
-
Puppet.err _("Error while executing '%{command}', device returned: %{error}") % { command: command, error: error }
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'puppet/util/network_device'
|
2
|
-
|
3
|
-
module Puppet::Util::NetworkDevice::IPCalc
|
4
|
-
|
5
|
-
# This is a rip-off of authstore
|
6
|
-
Octet = '(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])'
|
7
|
-
IPv4 = "#{Octet}\.#{Octet}\.#{Octet}\.#{Octet}"
|
8
|
-
IPv6_full = "_:_:_:_:_:_:_:_|_:_:_:_:_:_::_?|_:_:_:_:_::((_:)?_)?|_:_:_:_::((_:){0,2}_)?|_:_:_::((_:){0,3}_)?|_:_::((_:){0,4}_)?|_::((_:){0,5}_)?|::((_:){0,6}_)?"
|
9
|
-
IPv6_partial = "_:_:_:_:_:_:|_:_:_:_::(_:)?|_:_::(_:){0,2}|_::(_:){0,3}"
|
10
|
-
IP = "#{IPv4}|#{IPv6_full}".gsub(/_/,'([0-9a-fA-F]{1,4})').gsub(/\(/,'(?:')
|
11
|
-
|
12
|
-
def parse(value)
|
13
|
-
case value
|
14
|
-
when /^(#{IP})\/(\d+)$/ # 12.34.56.78/24, a001:b002::efff/120, c444:1000:2000::9:192.168.0.1/112
|
15
|
-
[$2.to_i,IPAddr.new($1)]
|
16
|
-
when /^(#{IP})$/ # 10.20.30.40,
|
17
|
-
value = IPAddr.new(value)
|
18
|
-
[bits(value.family),value]
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def bits(family)
|
23
|
-
family == Socket::AF_INET6 ? 128 : 32
|
24
|
-
end
|
25
|
-
|
26
|
-
def fullmask(family)
|
27
|
-
(1 << bits(family)) - 1
|
28
|
-
end
|
29
|
-
|
30
|
-
def mask(family, length)
|
31
|
-
(1 << (bits(family) - length)) - 1
|
32
|
-
end
|
33
|
-
|
34
|
-
# returns ip address netmask from prefix length
|
35
|
-
def netmask(family, length)
|
36
|
-
IPAddr.new(fullmask(family) & ~mask(family, length) , family)
|
37
|
-
end
|
38
|
-
|
39
|
-
# returns an IOS wildmask
|
40
|
-
def wildmask(family, length)
|
41
|
-
IPAddr.new(mask(family, length) , family)
|
42
|
-
end
|
43
|
-
|
44
|
-
# returns ip address prefix length from netmask
|
45
|
-
def prefix_length(netmask)
|
46
|
-
mask_addr = netmask.to_i
|
47
|
-
return 0 if mask_addr == 0
|
48
|
-
length=32
|
49
|
-
if (netmask.ipv6?)
|
50
|
-
length=128
|
51
|
-
end
|
52
|
-
|
53
|
-
mask = mask_addr < 2**length ? length : 128
|
54
|
-
|
55
|
-
mask.times do
|
56
|
-
if ((mask_addr & 1) == 1)
|
57
|
-
break
|
58
|
-
end
|
59
|
-
mask_addr = mask_addr >> 1
|
60
|
-
mask = mask - 1
|
61
|
-
end
|
62
|
-
mask
|
63
|
-
end
|
64
|
-
|
65
|
-
def linklocal?(ip)
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
@@ -1,126 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'puppet/util/network_device'
|
3
|
-
require 'puppet/util/network_device/transport'
|
4
|
-
require 'puppet/util/network_device/transport/base'
|
5
|
-
|
6
|
-
# This is an adaptation/simplification of gem net-ssh-telnet, which aims to have
|
7
|
-
# a sane interface to Net::SSH. Credits goes to net-ssh-telnet authors
|
8
|
-
class Puppet::Util::NetworkDevice::Transport::Ssh < Puppet::Util::NetworkDevice::Transport::Base
|
9
|
-
|
10
|
-
attr_accessor :buf, :ssh, :channel
|
11
|
-
|
12
|
-
def initialize(verbose = false)
|
13
|
-
super()
|
14
|
-
@verbose = verbose
|
15
|
-
unless Puppet.features.ssh?
|
16
|
-
raise _('Connecting with ssh to a network device requires the \'net/ssh\' ruby library')
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def handles_login?
|
21
|
-
true
|
22
|
-
end
|
23
|
-
|
24
|
-
def eof?
|
25
|
-
!! @eof
|
26
|
-
end
|
27
|
-
|
28
|
-
def connect(&block)
|
29
|
-
@output = []
|
30
|
-
@channel_data = ""
|
31
|
-
|
32
|
-
begin
|
33
|
-
Puppet.debug("connecting to #{host} as #{user}")
|
34
|
-
@ssh = Net::SSH.start(host, user, :port => port, :password => password, :timeout => timeout)
|
35
|
-
rescue TimeoutError
|
36
|
-
raise TimeoutError, _("timed out while opening an ssh connection to the host"), $!.backtrace
|
37
|
-
rescue Net::SSH::AuthenticationFailed
|
38
|
-
raise Puppet::Error, _("SSH authentication failure connecting to %{host} as %{user}") % { host: host, user: user }, $!.backtrace
|
39
|
-
rescue Net::SSH::Exception
|
40
|
-
raise Puppet::Error, _("SSH connection failure to %{host}") % { host: host }, $!.backtrace
|
41
|
-
end
|
42
|
-
|
43
|
-
@buf = ""
|
44
|
-
@eof = false
|
45
|
-
@channel = nil
|
46
|
-
@ssh.open_channel do |channel|
|
47
|
-
channel.request_pty { |ch,success| raise _("failed to open pty") unless success }
|
48
|
-
|
49
|
-
channel.send_channel_request("shell") do |ch, success|
|
50
|
-
raise _("failed to open ssh shell channel") unless success
|
51
|
-
|
52
|
-
ch.on_data { |_,data| @buf << data }
|
53
|
-
ch.on_extended_data { |_,type,data| @buf << data if type == 1 }
|
54
|
-
ch.on_close { @eof = true }
|
55
|
-
|
56
|
-
@channel = ch
|
57
|
-
expect(default_prompt, &block)
|
58
|
-
# this is a little bit unorthodox, we're trying to escape
|
59
|
-
# the ssh loop there while still having the ssh connection up
|
60
|
-
# otherwise we wouldn't be able to return ssh stdout/stderr
|
61
|
-
# for a given call of command.
|
62
|
-
return # rubocop:disable Lint/NonLocalExitFromIterator
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
@ssh.loop
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
def close
|
71
|
-
begin
|
72
|
-
@channel.close if @channel
|
73
|
-
@channel = nil
|
74
|
-
@ssh.close if @ssh
|
75
|
-
rescue IOError
|
76
|
-
Puppet.debug "device terminated ssh session impolitely"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def expect(prompt)
|
81
|
-
line = ''
|
82
|
-
sock = @ssh.transport.socket
|
83
|
-
|
84
|
-
while not @eof
|
85
|
-
break if line =~ prompt and @buf == ''
|
86
|
-
break if sock.closed?
|
87
|
-
|
88
|
-
IO::select([sock], [sock], nil, nil)
|
89
|
-
|
90
|
-
process_ssh
|
91
|
-
|
92
|
-
# at this point we have accumulated some data in @buf
|
93
|
-
# or the channel has been closed
|
94
|
-
if @buf != ""
|
95
|
-
line += @buf.gsub(/\r\n/no, "\n")
|
96
|
-
@buf = ''
|
97
|
-
yield line if block_given?
|
98
|
-
elsif @eof
|
99
|
-
# channel has been closed
|
100
|
-
break if line =~ prompt
|
101
|
-
if line == ''
|
102
|
-
line = nil
|
103
|
-
yield nil if block_given?
|
104
|
-
end
|
105
|
-
break
|
106
|
-
end
|
107
|
-
end
|
108
|
-
Puppet.debug("ssh: expected #{line}") if @verbose
|
109
|
-
line
|
110
|
-
end
|
111
|
-
|
112
|
-
def send(line)
|
113
|
-
Puppet.debug("ssh: send #{line}") if @verbose
|
114
|
-
@channel.send_data(line + "\n")
|
115
|
-
end
|
116
|
-
|
117
|
-
def process_ssh
|
118
|
-
while @buf == "" and not eof?
|
119
|
-
begin
|
120
|
-
@channel.connection.process(0.1)
|
121
|
-
rescue IOError
|
122
|
-
@eof = true
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'puppet/util/network_device'
|
2
|
-
require 'puppet/util/network_device/transport'
|
3
|
-
require 'puppet/util/network_device/transport/base'
|
4
|
-
|
5
|
-
if Puppet.features.telnet?
|
6
|
-
require 'net/telnet'
|
7
|
-
|
8
|
-
class Puppet::Util::NetworkDevice::Transport::Telnet < Puppet::Util::NetworkDevice::Transport::Base
|
9
|
-
def initialize(verbose = false)
|
10
|
-
super()
|
11
|
-
@verbose = verbose
|
12
|
-
end
|
13
|
-
|
14
|
-
def handles_login?
|
15
|
-
false
|
16
|
-
end
|
17
|
-
|
18
|
-
def connect
|
19
|
-
@telnet = Net::Telnet::new("Host" => host, "Port" => port || 23,
|
20
|
-
"Timeout" => 10,
|
21
|
-
"Prompt" => default_prompt)
|
22
|
-
end
|
23
|
-
|
24
|
-
def close
|
25
|
-
@telnet.close if @telnet
|
26
|
-
@telnet = nil
|
27
|
-
end
|
28
|
-
|
29
|
-
def expect(prompt)
|
30
|
-
@telnet.waitfor(prompt) do |out|
|
31
|
-
yield out if block_given?
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def command(cmd, options = {})
|
36
|
-
send(cmd)
|
37
|
-
expect(options[:prompt] || default_prompt) do |output|
|
38
|
-
yield output if block_given?
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def send(line)
|
43
|
-
Puppet.debug("telnet: send #{line}") if @verbose
|
44
|
-
@telnet.puts(line)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,1267 +0,0 @@
|
|
1
|
-
require 'puppet/util/windows'
|
2
|
-
|
3
|
-
# The Win32 module serves as a namespace only
|
4
|
-
module Win32
|
5
|
-
# The TaskScheduler class encapsulates taskscheduler settings and behavior
|
6
|
-
class TaskScheduler
|
7
|
-
include Puppet::Util::Windows::String
|
8
|
-
|
9
|
-
require 'ffi'
|
10
|
-
extend FFI::Library
|
11
|
-
|
12
|
-
# The error class raised if any task scheduler specific calls fail.
|
13
|
-
class Error < Puppet::Util::Windows::Error; end
|
14
|
-
|
15
|
-
class << self
|
16
|
-
attr_accessor :com_initialized
|
17
|
-
end
|
18
|
-
|
19
|
-
# :stopdoc:
|
20
|
-
TASK_TIME_TRIGGER_ONCE = :TASK_TIME_TRIGGER_ONCE
|
21
|
-
TASK_TIME_TRIGGER_DAILY = :TASK_TIME_TRIGGER_DAILY
|
22
|
-
TASK_TIME_TRIGGER_WEEKLY = :TASK_TIME_TRIGGER_WEEKLY
|
23
|
-
TASK_TIME_TRIGGER_MONTHLYDATE = :TASK_TIME_TRIGGER_MONTHLYDATE
|
24
|
-
TASK_TIME_TRIGGER_MONTHLYDOW = :TASK_TIME_TRIGGER_MONTHLYDOW
|
25
|
-
TASK_EVENT_TRIGGER_ON_IDLE = :TASK_EVENT_TRIGGER_ON_IDLE
|
26
|
-
TASK_EVENT_TRIGGER_AT_SYSTEMSTART = :TASK_EVENT_TRIGGER_AT_SYSTEMSTART
|
27
|
-
TASK_EVENT_TRIGGER_AT_LOGON = :TASK_EVENT_TRIGGER_AT_LOGON
|
28
|
-
|
29
|
-
TASK_SUNDAY = 0x1
|
30
|
-
TASK_MONDAY = 0x2
|
31
|
-
TASK_TUESDAY = 0x4
|
32
|
-
TASK_WEDNESDAY = 0x8
|
33
|
-
TASK_THURSDAY = 0x10
|
34
|
-
TASK_FRIDAY = 0x20
|
35
|
-
TASK_SATURDAY = 0x40
|
36
|
-
TASK_FIRST_WEEK = 1
|
37
|
-
TASK_SECOND_WEEK = 2
|
38
|
-
TASK_THIRD_WEEK = 3
|
39
|
-
TASK_FOURTH_WEEK = 4
|
40
|
-
TASK_LAST_WEEK = 5
|
41
|
-
TASK_JANUARY = 0x1
|
42
|
-
TASK_FEBRUARY = 0x2
|
43
|
-
TASK_MARCH = 0x4
|
44
|
-
TASK_APRIL = 0x8
|
45
|
-
TASK_MAY = 0x10
|
46
|
-
TASK_JUNE = 0x20
|
47
|
-
TASK_JULY = 0x40
|
48
|
-
TASK_AUGUST = 0x80
|
49
|
-
TASK_SEPTEMBER = 0x100
|
50
|
-
TASK_OCTOBER = 0x200
|
51
|
-
TASK_NOVEMBER = 0x400
|
52
|
-
TASK_DECEMBER = 0x800
|
53
|
-
|
54
|
-
TASK_FLAG_INTERACTIVE = 0x1
|
55
|
-
TASK_FLAG_DELETE_WHEN_DONE = 0x2
|
56
|
-
TASK_FLAG_DISABLED = 0x4
|
57
|
-
TASK_FLAG_START_ONLY_IF_IDLE = 0x10
|
58
|
-
TASK_FLAG_KILL_ON_IDLE_END = 0x20
|
59
|
-
TASK_FLAG_DONT_START_IF_ON_BATTERIES = 0x40
|
60
|
-
TASK_FLAG_KILL_IF_GOING_ON_BATTERIES = 0x80
|
61
|
-
TASK_FLAG_RUN_ONLY_IF_DOCKED = 0x100
|
62
|
-
TASK_FLAG_HIDDEN = 0x200
|
63
|
-
TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET = 0x400
|
64
|
-
TASK_FLAG_RESTART_ON_IDLE_RESUME = 0x800
|
65
|
-
TASK_FLAG_SYSTEM_REQUIRED = 0x1000
|
66
|
-
TASK_FLAG_RUN_ONLY_IF_LOGGED_ON = 0x2000
|
67
|
-
TASK_TRIGGER_FLAG_HAS_END_DATE = 0x1
|
68
|
-
TASK_TRIGGER_FLAG_KILL_AT_DURATION_END = 0x2
|
69
|
-
TASK_TRIGGER_FLAG_DISABLED = 0x4
|
70
|
-
|
71
|
-
TASK_MAX_RUN_TIMES = 1440
|
72
|
-
TASKS_TO_RETRIEVE = 5
|
73
|
-
|
74
|
-
# COM
|
75
|
-
|
76
|
-
CLSID_CTask = FFI::WIN32::GUID['148BD520-A2AB-11CE-B11F-00AA00530503']
|
77
|
-
IID_ITask = FFI::WIN32::GUID['148BD524-A2AB-11CE-B11F-00AA00530503']
|
78
|
-
IID_IPersistFile = FFI::WIN32::GUID['0000010b-0000-0000-C000-000000000046']
|
79
|
-
|
80
|
-
SCHED_S_TASK_READY = 0x00041300
|
81
|
-
SCHED_S_TASK_RUNNING = 0x00041301
|
82
|
-
SCHED_S_TASK_HAS_NOT_RUN = 0x00041303
|
83
|
-
SCHED_S_TASK_NOT_SCHEDULED = 0x00041305
|
84
|
-
# HRESULT error codes
|
85
|
-
# https://blogs.msdn.com/b/eldar/archive/2007/04/03/a-lot-of-hresult-codes.aspx
|
86
|
-
# in Ruby, an 0x8XXXXXXX style HRESULT can be resolved to 2s complement
|
87
|
-
# by using "0x8XXXXXXX".to_i(16) - - 0x100000000
|
88
|
-
SCHED_E_ACCOUNT_INFORMATION_NOT_SET = -2147216625 # 0x8004130F
|
89
|
-
SCHED_E_NO_SECURITY_SERVICES = -2147216622 # 0x80041312
|
90
|
-
# No mapping between account names and security IDs was done.
|
91
|
-
ERROR_NONE_MAPPED = -2147023564 # 0x80070534 WIN32 Error CODE 1332 (0x534)
|
92
|
-
|
93
|
-
# :startdoc:
|
94
|
-
|
95
|
-
# Shorthand constants
|
96
|
-
IDLE = Puppet::Util::Windows::Process::IDLE_PRIORITY_CLASS
|
97
|
-
NORMAL = Puppet::Util::Windows::Process::NORMAL_PRIORITY_CLASS
|
98
|
-
HIGH = Puppet::Util::Windows::Process::HIGH_PRIORITY_CLASS
|
99
|
-
REALTIME = Puppet::Util::Windows::Process::REALTIME_PRIORITY_CLASS
|
100
|
-
BELOW_NORMAL = Puppet::Util::Windows::Process::BELOW_NORMAL_PRIORITY_CLASS
|
101
|
-
ABOVE_NORMAL = Puppet::Util::Windows::Process::ABOVE_NORMAL_PRIORITY_CLASS
|
102
|
-
|
103
|
-
ONCE = TASK_TIME_TRIGGER_ONCE
|
104
|
-
DAILY = TASK_TIME_TRIGGER_DAILY
|
105
|
-
WEEKLY = TASK_TIME_TRIGGER_WEEKLY
|
106
|
-
MONTHLYDATE = TASK_TIME_TRIGGER_MONTHLYDATE
|
107
|
-
MONTHLYDOW = TASK_TIME_TRIGGER_MONTHLYDOW
|
108
|
-
|
109
|
-
ON_IDLE = TASK_EVENT_TRIGGER_ON_IDLE
|
110
|
-
AT_SYSTEMSTART = TASK_EVENT_TRIGGER_AT_SYSTEMSTART
|
111
|
-
AT_LOGON = TASK_EVENT_TRIGGER_AT_LOGON
|
112
|
-
FIRST_WEEK = TASK_FIRST_WEEK
|
113
|
-
SECOND_WEEK = TASK_SECOND_WEEK
|
114
|
-
THIRD_WEEK = TASK_THIRD_WEEK
|
115
|
-
FOURTH_WEEK = TASK_FOURTH_WEEK
|
116
|
-
LAST_WEEK = TASK_LAST_WEEK
|
117
|
-
SUNDAY = TASK_SUNDAY
|
118
|
-
MONDAY = TASK_MONDAY
|
119
|
-
TUESDAY = TASK_TUESDAY
|
120
|
-
WEDNESDAY = TASK_WEDNESDAY
|
121
|
-
THURSDAY = TASK_THURSDAY
|
122
|
-
FRIDAY = TASK_FRIDAY
|
123
|
-
SATURDAY = TASK_SATURDAY
|
124
|
-
JANUARY = TASK_JANUARY
|
125
|
-
FEBRUARY = TASK_FEBRUARY
|
126
|
-
MARCH = TASK_MARCH
|
127
|
-
APRIL = TASK_APRIL
|
128
|
-
MAY = TASK_MAY
|
129
|
-
JUNE = TASK_JUNE
|
130
|
-
JULY = TASK_JULY
|
131
|
-
AUGUST = TASK_AUGUST
|
132
|
-
SEPTEMBER = TASK_SEPTEMBER
|
133
|
-
OCTOBER = TASK_OCTOBER
|
134
|
-
NOVEMBER = TASK_NOVEMBER
|
135
|
-
DECEMBER = TASK_DECEMBER
|
136
|
-
|
137
|
-
INTERACTIVE = TASK_FLAG_INTERACTIVE
|
138
|
-
DELETE_WHEN_DONE = TASK_FLAG_DELETE_WHEN_DONE
|
139
|
-
DISABLED = TASK_FLAG_DISABLED
|
140
|
-
START_ONLY_IF_IDLE = TASK_FLAG_START_ONLY_IF_IDLE
|
141
|
-
KILL_ON_IDLE_END = TASK_FLAG_KILL_ON_IDLE_END
|
142
|
-
DONT_START_IF_ON_BATTERIES = TASK_FLAG_DONT_START_IF_ON_BATTERIES
|
143
|
-
KILL_IF_GOING_ON_BATTERIES = TASK_FLAG_KILL_IF_GOING_ON_BATTERIES
|
144
|
-
RUN_ONLY_IF_DOCKED = TASK_FLAG_RUN_ONLY_IF_DOCKED
|
145
|
-
HIDDEN = TASK_FLAG_HIDDEN
|
146
|
-
RUN_IF_CONNECTED_TO_INTERNET = TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET
|
147
|
-
RESTART_ON_IDLE_RESUME = TASK_FLAG_RESTART_ON_IDLE_RESUME
|
148
|
-
SYSTEM_REQUIRED = TASK_FLAG_SYSTEM_REQUIRED
|
149
|
-
RUN_ONLY_IF_LOGGED_ON = TASK_FLAG_RUN_ONLY_IF_LOGGED_ON
|
150
|
-
|
151
|
-
FLAG_HAS_END_DATE = TASK_TRIGGER_FLAG_HAS_END_DATE
|
152
|
-
FLAG_KILL_AT_DURATION_END = TASK_TRIGGER_FLAG_KILL_AT_DURATION_END
|
153
|
-
FLAG_DISABLED = TASK_TRIGGER_FLAG_DISABLED
|
154
|
-
|
155
|
-
MAX_RUN_TIMES = TASK_MAX_RUN_TIMES
|
156
|
-
|
157
|
-
# unfortunately MSTask.h does not specify the limits for any settings
|
158
|
-
# so these were determined with some experimentation
|
159
|
-
# if values too large are written, its suspected there may be internal
|
160
|
-
# limits may be exceeded, corrupting the job
|
161
|
-
# used for max application name and path values
|
162
|
-
MAX_PATH = 260
|
163
|
-
# UNLEN from lmcons.h is 256
|
164
|
-
# https://technet.microsoft.com/it-it/library/bb726984(en-us).aspx specifies 104
|
165
|
-
MAX_ACCOUNT_LENGTH = 256
|
166
|
-
# command line max length is limited to 8191, choose something high but still enough that we don't blow out CLI
|
167
|
-
MAX_PARAMETERS_LENGTH = 4096
|
168
|
-
# in testing, this value could be set to a length of 99999, but saving / loading the task failed
|
169
|
-
MAX_COMMENT_LENGTH = 8192
|
170
|
-
|
171
|
-
# Returns a new TaskScheduler object. If a work_item (and possibly the
|
172
|
-
# the trigger) are passed as arguments then a new work item is created and
|
173
|
-
# associated with that trigger, although you can still activate other tasks
|
174
|
-
# with the same handle.
|
175
|
-
#
|
176
|
-
# This is really just a bit of convenience. Passing arguments to the
|
177
|
-
# constructor is the same as calling TaskScheduler.new plus
|
178
|
-
# TaskScheduler#new_work_item.
|
179
|
-
#
|
180
|
-
def initialize(work_item=nil, trigger=nil)
|
181
|
-
@pITS = nil
|
182
|
-
@pITask = nil
|
183
|
-
|
184
|
-
if ! self.class.com_initialized
|
185
|
-
Puppet::Util::Windows::COM.InitializeCom()
|
186
|
-
self.class.com_initialized = true
|
187
|
-
end
|
188
|
-
|
189
|
-
@pITS = COM::TaskScheduler.new
|
190
|
-
at_exit do
|
191
|
-
begin
|
192
|
-
@pITS.Release if @pITS && !@pITS.null?
|
193
|
-
@pITS = nil
|
194
|
-
rescue
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
if work_item
|
199
|
-
if trigger
|
200
|
-
raise TypeError unless trigger.is_a?(Hash)
|
201
|
-
new_work_item(work_item, trigger)
|
202
|
-
end
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
# Returns an array of scheduled task names.
|
207
|
-
#
|
208
|
-
def enum
|
209
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
210
|
-
array = []
|
211
|
-
|
212
|
-
@pITS.UseInstance(COM::EnumWorkItems, :Enum) do |pIEnum|
|
213
|
-
FFI::MemoryPointer.new(:pointer) do |names_array_ptr_ptr|
|
214
|
-
FFI::MemoryPointer.new(:win32_ulong) do |fetched_count_ptr|
|
215
|
-
# awkward usage, if number requested is available, returns S_OK (0), or if less were returned returns S_FALSE (1)
|
216
|
-
while (pIEnum.Next(TASKS_TO_RETRIEVE, names_array_ptr_ptr, fetched_count_ptr) >= Puppet::Util::Windows::COM::S_OK)
|
217
|
-
count = fetched_count_ptr.read_win32_ulong
|
218
|
-
break if count == 0
|
219
|
-
|
220
|
-
names_array_ptr_ptr.read_com_memory_pointer do |names_array_ptr|
|
221
|
-
# iterate over the array of pointers
|
222
|
-
name_ptr_ptr = FFI::Pointer.new(:pointer, names_array_ptr)
|
223
|
-
for i in 0 ... count
|
224
|
-
name_ptr_ptr[i].read_com_memory_pointer do |name_ptr|
|
225
|
-
array << name_ptr.read_arbitrary_wide_string_up_to(MAX_PATH)
|
226
|
-
end
|
227
|
-
end
|
228
|
-
end
|
229
|
-
end
|
230
|
-
end
|
231
|
-
end
|
232
|
-
end
|
233
|
-
|
234
|
-
array
|
235
|
-
end
|
236
|
-
|
237
|
-
alias :tasks :enum
|
238
|
-
|
239
|
-
# Activate the specified task.
|
240
|
-
#
|
241
|
-
def activate(task)
|
242
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
243
|
-
raise TypeError unless task.is_a?(String)
|
244
|
-
|
245
|
-
FFI::MemoryPointer.new(:pointer) do |ptr|
|
246
|
-
@pITS.Activate(wide_string(task), IID_ITask, ptr)
|
247
|
-
|
248
|
-
reset_current_task
|
249
|
-
@pITask = COM::Task.new(ptr.read_pointer)
|
250
|
-
end
|
251
|
-
|
252
|
-
@pITask
|
253
|
-
end
|
254
|
-
|
255
|
-
# Delete the specified task name.
|
256
|
-
#
|
257
|
-
def delete(task)
|
258
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
259
|
-
raise TypeError unless task.is_a?(String)
|
260
|
-
|
261
|
-
@pITS.Delete(wide_string(task))
|
262
|
-
|
263
|
-
true
|
264
|
-
end
|
265
|
-
|
266
|
-
# Execute the current task.
|
267
|
-
#
|
268
|
-
def run
|
269
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
270
|
-
|
271
|
-
@pITask.Run
|
272
|
-
end
|
273
|
-
|
274
|
-
# Saves the current task. Tasks must be saved before they can be activated.
|
275
|
-
# The .job file itself is typically stored in the C:\WINDOWS\Tasks folder.
|
276
|
-
#
|
277
|
-
# If +file+ (an absolute path) is specified then the job is saved to that
|
278
|
-
# file instead. A '.job' extension is recommended but not enforced.
|
279
|
-
#
|
280
|
-
def save(file = nil)
|
281
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
282
|
-
raise Error.new(_('Account information must be set on the current task to save it properly.')) if !@account_information_set
|
283
|
-
|
284
|
-
reset = true
|
285
|
-
|
286
|
-
begin
|
287
|
-
@pITask.QueryInstance(COM::PersistFile) do |pIPersistFile|
|
288
|
-
wide_file = wide_string(file)
|
289
|
-
pIPersistFile.Save(wide_file, 1)
|
290
|
-
pIPersistFile.SaveCompleted(wide_file)
|
291
|
-
end
|
292
|
-
rescue
|
293
|
-
reset = false
|
294
|
-
ensure
|
295
|
-
reset_current_task if reset
|
296
|
-
end
|
297
|
-
end
|
298
|
-
|
299
|
-
# Terminate the current task.
|
300
|
-
#
|
301
|
-
def terminate
|
302
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
303
|
-
|
304
|
-
@pITask.Terminate
|
305
|
-
end
|
306
|
-
|
307
|
-
# Set the host on which the various TaskScheduler methods will execute.
|
308
|
-
#
|
309
|
-
def machine=(host)
|
310
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
311
|
-
raise TypeError unless host.is_a?(String)
|
312
|
-
|
313
|
-
@pITS.SetTargetComputer(wide_string(host))
|
314
|
-
|
315
|
-
host
|
316
|
-
end
|
317
|
-
|
318
|
-
alias :host= :machine=
|
319
|
-
|
320
|
-
# Sets the +user+ and +password+ for the given task. If the user and
|
321
|
-
# password are set properly then true is returned.
|
322
|
-
#
|
323
|
-
# In some cases the job may be created, but the account information was
|
324
|
-
# bad. In this case the task is created but a warning is generated and
|
325
|
-
# false is returned.
|
326
|
-
#
|
327
|
-
# Note that if intending to use SYSTEM, specify an empty user and nil password
|
328
|
-
#
|
329
|
-
# Calling task.set_account_information('SYSTEM', nil) will generally not
|
330
|
-
# work, except for one special case where flags are also set like:
|
331
|
-
# task.flags = Win32::TaskScheduler::TASK_FLAG_RUN_ONLY_IF_LOGGED_ON
|
332
|
-
#
|
333
|
-
# This must be done prior to the 1st save() call for the task to be
|
334
|
-
# properly registered and visible through the MMC snap-in / schtasks.exe
|
335
|
-
#
|
336
|
-
def set_account_information(user, password)
|
337
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
338
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
339
|
-
|
340
|
-
bool = false
|
341
|
-
|
342
|
-
begin
|
343
|
-
if (user.nil? || user=="") && (password.nil? || password=="")
|
344
|
-
@pITask.SetAccountInformation(wide_string(""), FFI::Pointer::NULL)
|
345
|
-
else
|
346
|
-
if user.length > MAX_ACCOUNT_LENGTH
|
347
|
-
raise Error.new(_("User has exceeded maximum allowed length %{max}") % { max: MAX_ACCOUNT_LENGTH })
|
348
|
-
end
|
349
|
-
user = wide_string(user)
|
350
|
-
password = wide_string(password)
|
351
|
-
@pITask.SetAccountInformation(user, password)
|
352
|
-
end
|
353
|
-
|
354
|
-
@account_information_set = true
|
355
|
-
bool = true
|
356
|
-
rescue Puppet::Util::Windows::Error => e
|
357
|
-
raise e unless e.code == SCHED_E_ACCOUNT_INFORMATION_NOT_SET
|
358
|
-
|
359
|
-
warn _('job created, but password was invalid')
|
360
|
-
end
|
361
|
-
|
362
|
-
bool
|
363
|
-
end
|
364
|
-
|
365
|
-
# Returns the user associated with the task or nil if no user has yet
|
366
|
-
# been associated with the task.
|
367
|
-
#
|
368
|
-
def account_information
|
369
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
370
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
371
|
-
|
372
|
-
# default under certain failures
|
373
|
-
user = nil
|
374
|
-
|
375
|
-
begin
|
376
|
-
FFI::MemoryPointer.new(:pointer) do |ptr|
|
377
|
-
@pITask.GetAccountInformation(ptr)
|
378
|
-
ptr.read_com_memory_pointer do |str_ptr|
|
379
|
-
user = str_ptr.read_arbitrary_wide_string_up_to(MAX_ACCOUNT_LENGTH) if ! str_ptr.null?
|
380
|
-
end
|
381
|
-
end
|
382
|
-
rescue Puppet::Util::Windows::Error => e
|
383
|
-
raise e unless e.code == SCHED_E_ACCOUNT_INFORMATION_NOT_SET ||
|
384
|
-
e.code == SCHED_E_NO_SECURITY_SERVICES ||
|
385
|
-
e.code == ERROR_NONE_MAPPED
|
386
|
-
end
|
387
|
-
|
388
|
-
user
|
389
|
-
end
|
390
|
-
|
391
|
-
# Returns the name of the application associated with the task.
|
392
|
-
#
|
393
|
-
def application_name
|
394
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
395
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
396
|
-
|
397
|
-
app = nil
|
398
|
-
|
399
|
-
FFI::MemoryPointer.new(:pointer) do |ptr|
|
400
|
-
@pITask.GetApplicationName(ptr)
|
401
|
-
|
402
|
-
ptr.read_com_memory_pointer do |str_ptr|
|
403
|
-
app = str_ptr.read_arbitrary_wide_string_up_to(MAX_PATH) if ! str_ptr.null?
|
404
|
-
end
|
405
|
-
end
|
406
|
-
|
407
|
-
app
|
408
|
-
end
|
409
|
-
|
410
|
-
# Sets the application name associated with the task.
|
411
|
-
#
|
412
|
-
def application_name=(app)
|
413
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
414
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
415
|
-
raise TypeError unless app.is_a?(String)
|
416
|
-
|
417
|
-
# the application name is written to a .job file on disk, so is subject to path limitations
|
418
|
-
if app.length > MAX_PATH
|
419
|
-
raise Error.new(_("Application name has exceeded maximum allowed length %{max}") % { max: MAX_PATH })
|
420
|
-
end
|
421
|
-
@pITask.SetApplicationName(wide_string(app))
|
422
|
-
|
423
|
-
app
|
424
|
-
end
|
425
|
-
|
426
|
-
# Returns the command line parameters for the task.
|
427
|
-
#
|
428
|
-
def parameters
|
429
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
430
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
431
|
-
|
432
|
-
param = nil
|
433
|
-
|
434
|
-
FFI::MemoryPointer.new(:pointer) do |ptr|
|
435
|
-
@pITask.GetParameters(ptr)
|
436
|
-
|
437
|
-
ptr.read_com_memory_pointer do |str_ptr|
|
438
|
-
param = str_ptr.read_arbitrary_wide_string_up_to(MAX_PARAMETERS_LENGTH) if ! str_ptr.null?
|
439
|
-
end
|
440
|
-
end
|
441
|
-
|
442
|
-
param
|
443
|
-
end
|
444
|
-
|
445
|
-
# Sets the parameters for the task. These parameters are passed as command
|
446
|
-
# line arguments to the application the task will run. To clear the command
|
447
|
-
# line parameters set it to an empty string.
|
448
|
-
#
|
449
|
-
def parameters=(param)
|
450
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
451
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
452
|
-
raise TypeError unless param.is_a?(String)
|
453
|
-
|
454
|
-
if param.length > MAX_PARAMETERS_LENGTH
|
455
|
-
raise Error.new(_("Parameters has exceeded maximum allowed length %{max}") % { max: MAX_PARAMETERS_LENGTH })
|
456
|
-
end
|
457
|
-
|
458
|
-
@pITask.SetParameters(wide_string(param))
|
459
|
-
|
460
|
-
param
|
461
|
-
end
|
462
|
-
|
463
|
-
# Returns the working directory for the task.
|
464
|
-
#
|
465
|
-
def working_directory
|
466
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
467
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
468
|
-
|
469
|
-
dir = nil
|
470
|
-
|
471
|
-
FFI::MemoryPointer.new(:pointer) do |ptr|
|
472
|
-
@pITask.GetWorkingDirectory(ptr)
|
473
|
-
|
474
|
-
ptr.read_com_memory_pointer do |str_ptr|
|
475
|
-
dir = str_ptr.read_arbitrary_wide_string_up_to(MAX_PATH) if ! str_ptr.null?
|
476
|
-
end
|
477
|
-
end
|
478
|
-
|
479
|
-
dir
|
480
|
-
end
|
481
|
-
|
482
|
-
# Sets the working directory for the task.
|
483
|
-
#
|
484
|
-
def working_directory=(dir)
|
485
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
486
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
487
|
-
raise TypeError unless dir.is_a?(String)
|
488
|
-
|
489
|
-
if dir.length > MAX_PATH
|
490
|
-
raise Error.new(_("Working directory has exceeded maximum allowed length %{max}") % { max: MAX_PATH })
|
491
|
-
end
|
492
|
-
|
493
|
-
@pITask.SetWorkingDirectory(wide_string(dir))
|
494
|
-
|
495
|
-
dir
|
496
|
-
end
|
497
|
-
|
498
|
-
# Returns the task's priority level. Possible values are 'idle',
|
499
|
-
# 'normal', 'high', 'realtime', 'below_normal', 'above_normal',
|
500
|
-
# and 'unknown'.
|
501
|
-
#
|
502
|
-
def priority
|
503
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
504
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
505
|
-
|
506
|
-
priority_name = ''
|
507
|
-
|
508
|
-
FFI::MemoryPointer.new(:dword, 1) do |ptr|
|
509
|
-
@pITask.GetPriority(ptr)
|
510
|
-
|
511
|
-
pri = ptr.read_dword
|
512
|
-
if (pri & IDLE) != 0
|
513
|
-
priority_name = 'idle'
|
514
|
-
elsif (pri & NORMAL) != 0
|
515
|
-
priority_name = 'normal'
|
516
|
-
elsif (pri & HIGH) != 0
|
517
|
-
priority_name = 'high'
|
518
|
-
elsif (pri & REALTIME) != 0
|
519
|
-
priority_name = 'realtime'
|
520
|
-
elsif (pri & BELOW_NORMAL) != 0
|
521
|
-
priority_name = 'below_normal'
|
522
|
-
elsif (pri & ABOVE_NORMAL) != 0
|
523
|
-
priority_name = 'above_normal'
|
524
|
-
else
|
525
|
-
priority_name = 'unknown'
|
526
|
-
end
|
527
|
-
end
|
528
|
-
|
529
|
-
priority_name
|
530
|
-
end
|
531
|
-
|
532
|
-
# Sets the priority of the task. The +priority+ should be a numeric
|
533
|
-
# priority constant value.
|
534
|
-
#
|
535
|
-
def priority=(priority)
|
536
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
537
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
538
|
-
raise TypeError unless priority.is_a?(Numeric)
|
539
|
-
|
540
|
-
@pITask.SetPriority(priority)
|
541
|
-
|
542
|
-
priority
|
543
|
-
end
|
544
|
-
|
545
|
-
# Creates a new work item (scheduled job) with the given +trigger+. The
|
546
|
-
# trigger variable is a hash of options that define when the scheduled
|
547
|
-
# job should run.
|
548
|
-
#
|
549
|
-
def new_work_item(task, trigger)
|
550
|
-
raise TypeError unless trigger.is_a?(Hash)
|
551
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
552
|
-
|
553
|
-
# I'm working around github issue #1 here.
|
554
|
-
enum.each{ |name|
|
555
|
-
if name.downcase == task.downcase + '.job'
|
556
|
-
raise Error.new(_("task '%{task}' already exists") % { task: task })
|
557
|
-
end
|
558
|
-
}
|
559
|
-
|
560
|
-
FFI::MemoryPointer.new(:pointer) do |ptr|
|
561
|
-
@pITS.NewWorkItem(wide_string(task), CLSID_CTask, IID_ITask, ptr)
|
562
|
-
|
563
|
-
reset_current_task
|
564
|
-
@pITask = COM::Task.new(ptr.read_pointer)
|
565
|
-
|
566
|
-
FFI::MemoryPointer.new(:word, 1) do |trigger_index_ptr|
|
567
|
-
# Without the 'enum.include?' check above the code segfaults here if the
|
568
|
-
# task already exists. This should probably be handled properly instead
|
569
|
-
# of simply avoiding the issue.
|
570
|
-
|
571
|
-
@pITask.UseInstance(COM::TaskTrigger, :CreateTrigger, trigger_index_ptr) do |pITaskTrigger|
|
572
|
-
populate_trigger(pITaskTrigger, trigger)
|
573
|
-
end
|
574
|
-
end
|
575
|
-
end
|
576
|
-
|
577
|
-
# preload task with the SYSTEM account
|
578
|
-
# empty string '' means 'SYSTEM' per MSDN, so default it
|
579
|
-
# given an account is necessary for creation of a task
|
580
|
-
# note that a user may set SYSTEM explicitly, but that has problems
|
581
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381276(v=vs.85).aspx
|
582
|
-
set_account_information('', nil)
|
583
|
-
|
584
|
-
@pITask
|
585
|
-
end
|
586
|
-
|
587
|
-
alias :new_task :new_work_item
|
588
|
-
|
589
|
-
# Returns the number of triggers associated with the active task.
|
590
|
-
#
|
591
|
-
def trigger_count
|
592
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
593
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
594
|
-
|
595
|
-
count = 0
|
596
|
-
|
597
|
-
FFI::MemoryPointer.new(:word, 1) do |ptr|
|
598
|
-
@pITask.GetTriggerCount(ptr)
|
599
|
-
count = ptr.read_word
|
600
|
-
end
|
601
|
-
|
602
|
-
count
|
603
|
-
end
|
604
|
-
|
605
|
-
# Deletes the trigger at the specified index.
|
606
|
-
#
|
607
|
-
def delete_trigger(index)
|
608
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
609
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
610
|
-
|
611
|
-
@pITask.DeleteTrigger(index)
|
612
|
-
index
|
613
|
-
end
|
614
|
-
|
615
|
-
# Returns a hash that describes the trigger at the given index for the
|
616
|
-
# current task.
|
617
|
-
#
|
618
|
-
def trigger(index)
|
619
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
620
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
621
|
-
|
622
|
-
trigger = {}
|
623
|
-
|
624
|
-
@pITask.UseInstance(COM::TaskTrigger, :GetTrigger, index) do |pITaskTrigger|
|
625
|
-
FFI::MemoryPointer.new(COM::TASK_TRIGGER.size) do |task_trigger_ptr|
|
626
|
-
pITaskTrigger.GetTrigger(task_trigger_ptr)
|
627
|
-
trigger = populate_hash_from_trigger(COM::TASK_TRIGGER.new(task_trigger_ptr))
|
628
|
-
end
|
629
|
-
end
|
630
|
-
|
631
|
-
trigger
|
632
|
-
end
|
633
|
-
|
634
|
-
# Sets the trigger for the currently active task.
|
635
|
-
#
|
636
|
-
def trigger=(trigger)
|
637
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
638
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
639
|
-
raise TypeError unless trigger.is_a?(Hash)
|
640
|
-
|
641
|
-
FFI::MemoryPointer.new(:word, 1) do |trigger_index_ptr|
|
642
|
-
# Without the 'enum.include?' check above the code segfaults here if the
|
643
|
-
# task already exists. This should probably be handled properly instead
|
644
|
-
# of simply avoiding the issue.
|
645
|
-
|
646
|
-
@pITask.UseInstance(COM::TaskTrigger, :CreateTrigger, trigger_index_ptr) do |pITaskTrigger|
|
647
|
-
populate_trigger(pITaskTrigger, trigger)
|
648
|
-
end
|
649
|
-
end
|
650
|
-
|
651
|
-
trigger
|
652
|
-
end
|
653
|
-
|
654
|
-
# Adds a trigger at the specified index.
|
655
|
-
#
|
656
|
-
def add_trigger(index, trigger)
|
657
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
658
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
659
|
-
raise TypeError unless trigger.is_a?(Hash)
|
660
|
-
|
661
|
-
@pITask.UseInstance(COM::TaskTrigger, :GetTrigger, index) do |pITaskTrigger|
|
662
|
-
populate_trigger(pITaskTrigger, trigger)
|
663
|
-
end
|
664
|
-
end
|
665
|
-
|
666
|
-
# Returns the flags (integer) that modify the behavior of the work item. You
|
667
|
-
# must OR the return value to determine the flags yourself.
|
668
|
-
#
|
669
|
-
def flags
|
670
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
671
|
-
|
672
|
-
flags = 0
|
673
|
-
|
674
|
-
FFI::MemoryPointer.new(:dword, 1) do |ptr|
|
675
|
-
@pITask.GetFlags(ptr)
|
676
|
-
flags = ptr.read_dword
|
677
|
-
end
|
678
|
-
|
679
|
-
flags
|
680
|
-
end
|
681
|
-
|
682
|
-
# Sets an OR'd value of flags that modify the behavior of the work item.
|
683
|
-
#
|
684
|
-
def flags=(flags)
|
685
|
-
raise Error.new(_('No current task scheduler. ITaskScheduler is NULL.')) if @pITS.nil?
|
686
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
687
|
-
|
688
|
-
@pITask.SetFlags(flags)
|
689
|
-
flags
|
690
|
-
end
|
691
|
-
|
692
|
-
# Returns the status of the currently active task. Possible values are
|
693
|
-
# 'ready', 'running', 'not scheduled' or 'unknown'.
|
694
|
-
#
|
695
|
-
def status
|
696
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
697
|
-
|
698
|
-
st = nil
|
699
|
-
|
700
|
-
FFI::MemoryPointer.new(:hresult, 1) do |ptr|
|
701
|
-
@pITask.GetStatus(ptr)
|
702
|
-
st = ptr.read_hresult
|
703
|
-
end
|
704
|
-
|
705
|
-
case st
|
706
|
-
when SCHED_S_TASK_READY
|
707
|
-
status = 'ready'
|
708
|
-
when SCHED_S_TASK_RUNNING
|
709
|
-
status = 'running'
|
710
|
-
when SCHED_S_TASK_NOT_SCHEDULED
|
711
|
-
status = 'not scheduled'
|
712
|
-
else
|
713
|
-
status = 'unknown'
|
714
|
-
end
|
715
|
-
|
716
|
-
status
|
717
|
-
end
|
718
|
-
|
719
|
-
# Returns the exit code from the last scheduled run.
|
720
|
-
#
|
721
|
-
def exit_code
|
722
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
723
|
-
|
724
|
-
status = 0
|
725
|
-
|
726
|
-
begin
|
727
|
-
FFI::MemoryPointer.new(:dword, 1) do |ptr|
|
728
|
-
@pITask.GetExitCode(ptr)
|
729
|
-
status = ptr.read_dword
|
730
|
-
end
|
731
|
-
rescue Puppet::Util::Windows::Error => e
|
732
|
-
raise e unless e.code == SCHED_S_TASK_HAS_NOT_RUN
|
733
|
-
end
|
734
|
-
|
735
|
-
status
|
736
|
-
end
|
737
|
-
|
738
|
-
# Returns the comment associated with the task, if any.
|
739
|
-
#
|
740
|
-
def comment
|
741
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
742
|
-
|
743
|
-
comment = nil
|
744
|
-
|
745
|
-
FFI::MemoryPointer.new(:pointer) do |ptr|
|
746
|
-
@pITask.GetComment(ptr)
|
747
|
-
|
748
|
-
ptr.read_com_memory_pointer do |str_ptr|
|
749
|
-
comment = str_ptr.read_arbitrary_wide_string_up_to(MAX_COMMENT_LENGTH) if ! str_ptr.null?
|
750
|
-
end
|
751
|
-
end
|
752
|
-
|
753
|
-
comment
|
754
|
-
end
|
755
|
-
|
756
|
-
# Sets the comment for the task.
|
757
|
-
#
|
758
|
-
def comment=(comment)
|
759
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
760
|
-
raise TypeError unless comment.is_a?(String)
|
761
|
-
|
762
|
-
if comment.length > MAX_COMMENT_LENGTH
|
763
|
-
raise Error.new(_("Comment has exceeded maximum allowed length %{max}") % { max: MAX_COMMENT_LENGTH })
|
764
|
-
end
|
765
|
-
|
766
|
-
@pITask.SetComment(wide_string(comment))
|
767
|
-
comment
|
768
|
-
end
|
769
|
-
|
770
|
-
# Returns the name of the user who created the task.
|
771
|
-
#
|
772
|
-
def creator
|
773
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
774
|
-
|
775
|
-
creator = nil
|
776
|
-
|
777
|
-
FFI::MemoryPointer.new(:pointer) do |ptr|
|
778
|
-
@pITask.GetCreator(ptr)
|
779
|
-
|
780
|
-
ptr.read_com_memory_pointer do |str_ptr|
|
781
|
-
creator = str_ptr.read_arbitrary_wide_string_up_to(MAX_ACCOUNT_LENGTH) if ! str_ptr.null?
|
782
|
-
end
|
783
|
-
end
|
784
|
-
|
785
|
-
creator
|
786
|
-
end
|
787
|
-
|
788
|
-
# Sets the creator for the task.
|
789
|
-
#
|
790
|
-
def creator=(creator)
|
791
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
792
|
-
raise TypeError unless creator.is_a?(String)
|
793
|
-
|
794
|
-
if creator.length > MAX_ACCOUNT_LENGTH
|
795
|
-
raise Error.new(_("Creator has exceeded maximum allowed length %{max}") % { max: MAX_ACCOUNT_LENGTH })
|
796
|
-
end
|
797
|
-
|
798
|
-
|
799
|
-
@pITask.SetCreator(wide_string(creator))
|
800
|
-
creator
|
801
|
-
end
|
802
|
-
|
803
|
-
# Returns a Time object that indicates the next time the task will run.
|
804
|
-
#
|
805
|
-
def next_run_time
|
806
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
807
|
-
|
808
|
-
time = nil
|
809
|
-
|
810
|
-
FFI::MemoryPointer.new(WIN32::SYSTEMTIME.size) do |ptr|
|
811
|
-
@pITask.GetNextRunTime(ptr)
|
812
|
-
time = WIN32::SYSTEMTIME.new(ptr).to_local_time
|
813
|
-
end
|
814
|
-
|
815
|
-
time
|
816
|
-
end
|
817
|
-
|
818
|
-
# Returns a Time object indicating the most recent time the task ran or
|
819
|
-
# nil if the task has never run.
|
820
|
-
#
|
821
|
-
def most_recent_run_time
|
822
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
823
|
-
|
824
|
-
time = nil
|
825
|
-
|
826
|
-
begin
|
827
|
-
FFI::MemoryPointer.new(WIN32::SYSTEMTIME.size) do |ptr|
|
828
|
-
@pITask.GetMostRecentRunTime(ptr)
|
829
|
-
time = WIN32::SYSTEMTIME.new(ptr).to_local_time
|
830
|
-
end
|
831
|
-
rescue Puppet::Util::Windows::Error => e
|
832
|
-
raise e unless e.code == SCHED_S_TASK_HAS_NOT_RUN
|
833
|
-
end
|
834
|
-
|
835
|
-
time
|
836
|
-
end
|
837
|
-
|
838
|
-
# Returns the maximum length of time, in milliseconds, that the task
|
839
|
-
# will run before terminating.
|
840
|
-
#
|
841
|
-
def max_run_time
|
842
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
843
|
-
|
844
|
-
max_run_time = nil
|
845
|
-
|
846
|
-
FFI::MemoryPointer.new(:dword, 1) do |ptr|
|
847
|
-
@pITask.GetMaxRunTime(ptr)
|
848
|
-
max_run_time = ptr.read_dword
|
849
|
-
end
|
850
|
-
|
851
|
-
max_run_time
|
852
|
-
end
|
853
|
-
|
854
|
-
# Sets the maximum length of time, in milliseconds, that the task can run
|
855
|
-
# before terminating. Returns the value you specified if successful.
|
856
|
-
#
|
857
|
-
def max_run_time=(max_run_time)
|
858
|
-
raise Error.new(_('No currently active task. ITask is NULL.')) if @pITask.nil?
|
859
|
-
raise TypeError unless max_run_time.is_a?(Numeric)
|
860
|
-
|
861
|
-
@pITask.SetMaxRunTime(max_run_time)
|
862
|
-
max_run_time
|
863
|
-
end
|
864
|
-
|
865
|
-
# Returns whether or not the scheduled task exists.
|
866
|
-
def exists?(job_name)
|
867
|
-
# task name comparison is case insensitive
|
868
|
-
tasks.any? { |name| name.casecmp(job_name + '.job') == 0 }
|
869
|
-
end
|
870
|
-
|
871
|
-
private
|
872
|
-
|
873
|
-
# :stopdoc:
|
874
|
-
|
875
|
-
# Used for the new_work_item method
|
876
|
-
ValidTriggerKeys = [
|
877
|
-
'end_day',
|
878
|
-
'end_month',
|
879
|
-
'end_year',
|
880
|
-
'flags',
|
881
|
-
'minutes_duration',
|
882
|
-
'minutes_interval',
|
883
|
-
'random_minutes_interval',
|
884
|
-
'start_day',
|
885
|
-
'start_hour',
|
886
|
-
'start_minute',
|
887
|
-
'start_month',
|
888
|
-
'start_year',
|
889
|
-
'trigger_type',
|
890
|
-
'type'
|
891
|
-
]
|
892
|
-
|
893
|
-
ValidTypeKeys = [
|
894
|
-
'days_interval',
|
895
|
-
'weeks_interval',
|
896
|
-
'days_of_week',
|
897
|
-
'months',
|
898
|
-
'days',
|
899
|
-
'weeks'
|
900
|
-
]
|
901
|
-
|
902
|
-
# Private method that validates keys, and converts all keys to lowercase
|
903
|
-
# strings.
|
904
|
-
#
|
905
|
-
def transform_and_validate(hash)
|
906
|
-
new_hash = {}
|
907
|
-
|
908
|
-
hash.each{ |key, value|
|
909
|
-
key = key.to_s.downcase
|
910
|
-
if key == 'type'
|
911
|
-
new_type_hash = {}
|
912
|
-
raise ArgumentError unless value.is_a?(Hash)
|
913
|
-
value.each{ |subkey, subvalue|
|
914
|
-
subkey = subkey.to_s.downcase
|
915
|
-
if ValidTypeKeys.include?(subkey)
|
916
|
-
new_type_hash[subkey] = subvalue
|
917
|
-
else
|
918
|
-
raise ArgumentError, _("Invalid type key '%{key}'") % { key: subkey }
|
919
|
-
end
|
920
|
-
}
|
921
|
-
new_hash[key] = new_type_hash
|
922
|
-
else
|
923
|
-
if ValidTriggerKeys.include?(key)
|
924
|
-
new_hash[key] = value
|
925
|
-
else
|
926
|
-
raise ArgumentError, _("Invalid key '%{key}'") % { key: key }
|
927
|
-
end
|
928
|
-
end
|
929
|
-
}
|
930
|
-
|
931
|
-
new_hash
|
932
|
-
end
|
933
|
-
|
934
|
-
def reset_current_task
|
935
|
-
# Ensure that COM reference is decremented properly
|
936
|
-
@pITask.Release if @pITask && ! @pITask.null?
|
937
|
-
@pITask = nil
|
938
|
-
@account_information_set = false
|
939
|
-
end
|
940
|
-
|
941
|
-
def populate_trigger(task_trigger, trigger)
|
942
|
-
raise TypeError unless task_trigger.is_a?(COM::TaskTrigger)
|
943
|
-
trigger = transform_and_validate(trigger)
|
944
|
-
|
945
|
-
FFI::MemoryPointer.new(COM::TASK_TRIGGER.size) do |trigger_ptr|
|
946
|
-
FFI::MemoryPointer.new(COM::TRIGGER_TYPE_UNION.size) do |trigger_type_union_ptr|
|
947
|
-
trigger_type_union = COM::TRIGGER_TYPE_UNION.new(trigger_type_union_ptr)
|
948
|
-
|
949
|
-
tmp = trigger['type'].is_a?(Hash) ? trigger['type'] : nil
|
950
|
-
case trigger['trigger_type']
|
951
|
-
when :TASK_TIME_TRIGGER_DAILY
|
952
|
-
if tmp && tmp['days_interval']
|
953
|
-
trigger_type_union[:Daily][:DaysInterval] = tmp['days_interval']
|
954
|
-
end
|
955
|
-
when :TASK_TIME_TRIGGER_WEEKLY
|
956
|
-
if tmp && tmp['weeks_interval'] && tmp['days_of_week']
|
957
|
-
trigger_type_union[:Weekly][:WeeksInterval] = tmp['weeks_interval']
|
958
|
-
trigger_type_union[:Weekly][:rgfDaysOfTheWeek] = tmp['days_of_week']
|
959
|
-
end
|
960
|
-
when :TASK_TIME_TRIGGER_MONTHLYDATE
|
961
|
-
if tmp && tmp['months'] && tmp['days']
|
962
|
-
trigger_type_union[:MonthlyDate][:rgfDays] = tmp['days']
|
963
|
-
trigger_type_union[:MonthlyDate][:rgfMonths] = tmp['months']
|
964
|
-
end
|
965
|
-
when :TASK_TIME_TRIGGER_MONTHLYDOW
|
966
|
-
if tmp && tmp['weeks'] && tmp['days_of_week'] && tmp['months']
|
967
|
-
trigger_type_union[:MonthlyDOW][:wWhichWeek] = tmp['weeks']
|
968
|
-
trigger_type_union[:MonthlyDOW][:rgfDaysOfTheWeek] = tmp['days_of_week']
|
969
|
-
trigger_type_union[:MonthlyDOW][:rgfMonths] = tmp['months']
|
970
|
-
end
|
971
|
-
when :TASK_TIME_TRIGGER_ONCE
|
972
|
-
# Do nothing. The Type member of the TASK_TRIGGER struct is ignored.
|
973
|
-
else
|
974
|
-
raise Error.new(_("Unknown trigger type %{type}") % { type: trigger['trigger_type'] })
|
975
|
-
end
|
976
|
-
|
977
|
-
trigger_struct = COM::TASK_TRIGGER.new(trigger_ptr)
|
978
|
-
trigger_struct[:cbTriggerSize] = COM::TASK_TRIGGER.size
|
979
|
-
now = Time.now
|
980
|
-
trigger_struct[:wBeginYear] = trigger['start_year'] || now.year
|
981
|
-
trigger_struct[:wBeginMonth] = trigger['start_month'] || now.month
|
982
|
-
trigger_struct[:wBeginDay] = trigger['start_day'] || now.day
|
983
|
-
trigger_struct[:wEndYear] = trigger['end_year'] || 0
|
984
|
-
trigger_struct[:wEndMonth] = trigger['end_month'] || 0
|
985
|
-
trigger_struct[:wEndDay] = trigger['end_day'] || 0
|
986
|
-
trigger_struct[:wStartHour] = trigger['start_hour'] || 0
|
987
|
-
trigger_struct[:wStartMinute] = trigger['start_minute'] || 0
|
988
|
-
trigger_struct[:MinutesDuration] = trigger['minutes_duration'] || 0
|
989
|
-
trigger_struct[:MinutesInterval] = trigger['minutes_interval'] || 0
|
990
|
-
trigger_struct[:rgFlags] = trigger['flags'] || 0
|
991
|
-
trigger_struct[:TriggerType] = trigger['trigger_type'] || :TASK_TIME_TRIGGER_ONCE
|
992
|
-
trigger_struct[:Type] = trigger_type_union
|
993
|
-
trigger_struct[:wRandomMinutesInterval] = trigger['random_minutes_interval'] || 0
|
994
|
-
|
995
|
-
task_trigger.SetTrigger(trigger_struct)
|
996
|
-
end
|
997
|
-
end
|
998
|
-
end
|
999
|
-
|
1000
|
-
def populate_hash_from_trigger(task_trigger)
|
1001
|
-
raise TypeError unless task_trigger.is_a?(COM::TASK_TRIGGER)
|
1002
|
-
|
1003
|
-
trigger = {
|
1004
|
-
'start_year' => task_trigger[:wBeginYear],
|
1005
|
-
'start_month' => task_trigger[:wBeginMonth],
|
1006
|
-
'start_day' => task_trigger[:wBeginDay],
|
1007
|
-
'end_year' => task_trigger[:wEndYear],
|
1008
|
-
'end_month' => task_trigger[:wEndMonth],
|
1009
|
-
'end_day' => task_trigger[:wEndDay],
|
1010
|
-
'start_hour' => task_trigger[:wStartHour],
|
1011
|
-
'start_minute' => task_trigger[:wStartMinute],
|
1012
|
-
'minutes_duration' => task_trigger[:MinutesDuration],
|
1013
|
-
'minutes_interval' => task_trigger[:MinutesInterval],
|
1014
|
-
'flags' => task_trigger[:rgFlags],
|
1015
|
-
'trigger_type' => task_trigger[:TriggerType],
|
1016
|
-
'random_minutes_interval' => task_trigger[:wRandomMinutesInterval]
|
1017
|
-
}
|
1018
|
-
|
1019
|
-
case task_trigger[:TriggerType]
|
1020
|
-
when :TASK_TIME_TRIGGER_DAILY
|
1021
|
-
trigger['type'] = { 'days_interval' => task_trigger[:Type][:Daily][:DaysInterval] }
|
1022
|
-
when :TASK_TIME_TRIGGER_WEEKLY
|
1023
|
-
trigger['type'] = {
|
1024
|
-
'weeks_interval' => task_trigger[:Type][:Weekly][:WeeksInterval],
|
1025
|
-
'days_of_week' => task_trigger[:Type][:Weekly][:rgfDaysOfTheWeek]
|
1026
|
-
}
|
1027
|
-
when :TASK_TIME_TRIGGER_MONTHLYDATE
|
1028
|
-
trigger['type'] = {
|
1029
|
-
'days' => task_trigger[:Type][:MonthlyDate][:rgfDays],
|
1030
|
-
'months' => task_trigger[:Type][:MonthlyDate][:rgfMonths]
|
1031
|
-
}
|
1032
|
-
when :TASK_TIME_TRIGGER_MONTHLYDOW
|
1033
|
-
trigger['type'] = {
|
1034
|
-
'weeks' => task_trigger[:Type][:MonthlyDOW][:wWhichWeek],
|
1035
|
-
'days_of_week' => task_trigger[:Type][:MonthlyDOW][:rgfDaysOfTheWeek],
|
1036
|
-
'months' => task_trigger[:Type][:MonthlyDOW][:rgfMonths]
|
1037
|
-
}
|
1038
|
-
when :TASK_TIME_TRIGGER_ONCE
|
1039
|
-
trigger['type'] = { 'once' => nil }
|
1040
|
-
else
|
1041
|
-
raise Error.new(_("Unknown trigger type %{type}") % { type: task_trigger[:TriggerType] })
|
1042
|
-
end
|
1043
|
-
|
1044
|
-
trigger
|
1045
|
-
end
|
1046
|
-
|
1047
|
-
module COM
|
1048
|
-
extend FFI::Library
|
1049
|
-
|
1050
|
-
com = Puppet::Util::Windows::COM
|
1051
|
-
|
1052
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381811(v=vs.85).aspx
|
1053
|
-
ITaskScheduler = com::Interface[com::IUnknown,
|
1054
|
-
FFI::WIN32::GUID['148BD527-A2AB-11CE-B11F-00AA00530503'],
|
1055
|
-
|
1056
|
-
SetTargetComputer: [[:lpcwstr], :hresult],
|
1057
|
-
# LPWSTR *
|
1058
|
-
GetTargetComputer: [[:pointer], :hresult],
|
1059
|
-
# IEnumWorkItems **
|
1060
|
-
Enum: [[:pointer], :hresult],
|
1061
|
-
# LPCWSTR, REFIID, IUnknown **
|
1062
|
-
Activate: [[:lpcwstr, :pointer, :pointer], :hresult],
|
1063
|
-
Delete: [[:lpcwstr], :hresult],
|
1064
|
-
# LPCWSTR, REFCLSID, REFIID, IUnknown **
|
1065
|
-
NewWorkItem: [[:lpcwstr, :pointer, :pointer, :pointer], :hresult],
|
1066
|
-
# LPCWSTR, IScheduledWorkItem *
|
1067
|
-
AddWorkItem: [[:lpcwstr, :pointer], :hresult],
|
1068
|
-
# LPCWSTR, REFIID
|
1069
|
-
IsOfType: [[:lpcwstr, :pointer], :hresult]
|
1070
|
-
]
|
1071
|
-
|
1072
|
-
TaskScheduler = com::Factory[ITaskScheduler,
|
1073
|
-
FFI::WIN32::GUID['148BD52A-A2AB-11CE-B11F-00AA00530503']]
|
1074
|
-
|
1075
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa380706(v=vs.85).aspx
|
1076
|
-
IEnumWorkItems = com::Interface[com::IUnknown,
|
1077
|
-
FFI::WIN32::GUID['148BD528-A2AB-11CE-B11F-00AA00530503'],
|
1078
|
-
|
1079
|
-
# ULONG, LPWSTR **, ULONG *
|
1080
|
-
Next: [[:win32_ulong, :pointer, :pointer], :hresult],
|
1081
|
-
Skip: [[:win32_ulong], :hresult],
|
1082
|
-
Reset: [[], :hresult],
|
1083
|
-
# IEnumWorkItems ** ppEnumWorkItems
|
1084
|
-
Clone: [[:pointer], :hresult]
|
1085
|
-
]
|
1086
|
-
|
1087
|
-
EnumWorkItems = com::Instance[IEnumWorkItems]
|
1088
|
-
|
1089
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381216(v=vs.85).aspx
|
1090
|
-
IScheduledWorkItem = com::Interface[com::IUnknown,
|
1091
|
-
FFI::WIN32::GUID['a6b952f0-a4b1-11d0-997d-00aa006887ec'],
|
1092
|
-
|
1093
|
-
# WORD *, ITaskTrigger **
|
1094
|
-
CreateTrigger: [[:pointer, :pointer], :hresult],
|
1095
|
-
DeleteTrigger: [[:word], :hresult],
|
1096
|
-
# WORD *
|
1097
|
-
GetTriggerCount: [[:pointer], :hresult],
|
1098
|
-
# WORD, ITaskTrigger **
|
1099
|
-
GetTrigger: [[:word, :pointer], :hresult],
|
1100
|
-
# WORD, LPWSTR *
|
1101
|
-
GetTriggerString: [[:word, :pointer], :hresult],
|
1102
|
-
# LPSYSTEMTIME, LPSYSTEMTIME, WORD *, LPSYSTEMTIME *
|
1103
|
-
GetRunTimes: [[:pointer, :pointer, :pointer, :pointer], :hresult],
|
1104
|
-
# SYSTEMTIME *
|
1105
|
-
GetNextRunTime: [[:pointer], :hresult],
|
1106
|
-
SetIdleWait: [[:word, :word], :hresult],
|
1107
|
-
# WORD *, WORD *
|
1108
|
-
GetIdleWait: [[:pointer, :pointer], :hresult],
|
1109
|
-
Run: [[], :hresult],
|
1110
|
-
Terminate: [[], :hresult],
|
1111
|
-
EditWorkItem: [[:hwnd, :dword], :hresult],
|
1112
|
-
# SYSTEMTIME *
|
1113
|
-
GetMostRecentRunTime: [[:pointer], :hresult],
|
1114
|
-
# HRESULT *
|
1115
|
-
GetStatus: [[:pointer], :hresult],
|
1116
|
-
GetExitCode: [[:pdword], :hresult],
|
1117
|
-
SetComment: [[:lpcwstr], :hresult],
|
1118
|
-
# LPWSTR *
|
1119
|
-
GetComment: [[:pointer], :hresult],
|
1120
|
-
SetCreator: [[:lpcwstr], :hresult],
|
1121
|
-
# LPWSTR *
|
1122
|
-
GetCreator: [[:pointer], :hresult],
|
1123
|
-
# WORD, BYTE[]
|
1124
|
-
SetWorkItemData: [[:word, :buffer_in], :hresult],
|
1125
|
-
# WORD *, BYTE **
|
1126
|
-
GetWorkItemData: [[:pointer, :pointer], :hresult],
|
1127
|
-
SetErrorRetryCount: [[:word], :hresult],
|
1128
|
-
# WORD *
|
1129
|
-
GetErrorRetryCount: [[:pointer], :hresult],
|
1130
|
-
SetErrorRetryInterval: [[:word], :hresult],
|
1131
|
-
# WORD *
|
1132
|
-
GetErrorRetryInterval: [[:pointer], :hresult],
|
1133
|
-
SetFlags: [[:dword], :hresult],
|
1134
|
-
# WORD *
|
1135
|
-
GetFlags: [[:pointer], :hresult],
|
1136
|
-
SetAccountInformation: [[:lpcwstr, :lpcwstr], :hresult],
|
1137
|
-
# LPWSTR *
|
1138
|
-
GetAccountInformation: [[:pointer], :hresult]
|
1139
|
-
]
|
1140
|
-
|
1141
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381311(v=vs.85).aspx
|
1142
|
-
ITask = com::Interface[IScheduledWorkItem,
|
1143
|
-
FFI::WIN32::GUID['148BD524-A2AB-11CE-B11F-00AA00530503'],
|
1144
|
-
|
1145
|
-
SetApplicationName: [[:lpcwstr], :hresult],
|
1146
|
-
# LPWSTR *
|
1147
|
-
GetApplicationName: [[:pointer], :hresult],
|
1148
|
-
SetParameters: [[:lpcwstr], :hresult],
|
1149
|
-
# LPWSTR *
|
1150
|
-
GetParameters: [[:pointer], :hresult],
|
1151
|
-
SetWorkingDirectory: [[:lpcwstr], :hresult],
|
1152
|
-
# LPWSTR *
|
1153
|
-
GetWorkingDirectory: [[:pointer], :hresult],
|
1154
|
-
SetPriority: [[:dword], :hresult],
|
1155
|
-
# DWORD *
|
1156
|
-
GetPriority: [[:pointer], :hresult],
|
1157
|
-
SetTaskFlags: [[:dword], :hresult],
|
1158
|
-
# DWORD *
|
1159
|
-
GetTaskFlags: [[:pointer], :hresult],
|
1160
|
-
SetMaxRunTime: [[:dword], :hresult],
|
1161
|
-
# DWORD *
|
1162
|
-
GetMaxRunTime: [[:pointer], :hresult]
|
1163
|
-
]
|
1164
|
-
|
1165
|
-
Task = com::Instance[ITask]
|
1166
|
-
|
1167
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms688695(v=vs.85).aspx
|
1168
|
-
IPersist = com::Interface[com::IUnknown,
|
1169
|
-
FFI::WIN32::GUID['0000010c-0000-0000-c000-000000000046'],
|
1170
|
-
# CLSID *
|
1171
|
-
GetClassID: [[:pointer], :hresult]
|
1172
|
-
]
|
1173
|
-
|
1174
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms687223(v=vs.85).aspx
|
1175
|
-
IPersistFile = com::Interface[IPersist,
|
1176
|
-
FFI::WIN32::GUID['0000010b-0000-0000-C000-000000000046'],
|
1177
|
-
|
1178
|
-
IsDirty: [[], :hresult],
|
1179
|
-
Load: [[:lpcolestr, :dword], :hresult],
|
1180
|
-
Save: [[:lpcolestr, :win32_bool], :hresult],
|
1181
|
-
SaveCompleted: [[:lpcolestr], :hresult],
|
1182
|
-
# LPOLESTR *
|
1183
|
-
GetCurFile: [[:pointer], :hresult]
|
1184
|
-
]
|
1185
|
-
|
1186
|
-
PersistFile = com::Instance[IPersistFile]
|
1187
|
-
|
1188
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381864(v=vs.85).aspx
|
1189
|
-
ITaskTrigger = com::Interface[com::IUnknown,
|
1190
|
-
FFI::WIN32::GUID['148BD52B-A2AB-11CE-B11F-00AA00530503'],
|
1191
|
-
|
1192
|
-
SetTrigger: [[:pointer], :hresult],
|
1193
|
-
GetTrigger: [[:pointer], :hresult],
|
1194
|
-
GetTriggerString: [[:pointer], :hresult]
|
1195
|
-
]
|
1196
|
-
|
1197
|
-
TaskTrigger = com::Instance[ITaskTrigger]
|
1198
|
-
|
1199
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa383620(v=vs.85).aspx
|
1200
|
-
# The TASK_TRIGGER_TYPE field of the TASK_TRIGGER structure determines
|
1201
|
-
# which member of the TRIGGER_TYPE_UNION field to use.
|
1202
|
-
TASK_TRIGGER_TYPE = enum(
|
1203
|
-
:TASK_TIME_TRIGGER_ONCE, 0, # Ignore the Type field
|
1204
|
-
:TASK_TIME_TRIGGER_DAILY, 1,
|
1205
|
-
:TASK_TIME_TRIGGER_WEEKLY, 2,
|
1206
|
-
:TASK_TIME_TRIGGER_MONTHLYDATE, 3,
|
1207
|
-
:TASK_TIME_TRIGGER_MONTHLYDOW, 4,
|
1208
|
-
:TASK_EVENT_TRIGGER_ON_IDLE, 5, # Ignore the Type field
|
1209
|
-
:TASK_EVENT_TRIGGER_AT_SYSTEMSTART, 6, # Ignore the Type field
|
1210
|
-
:TASK_EVENT_TRIGGER_AT_LOGON, 7 # Ignore the Type field
|
1211
|
-
)
|
1212
|
-
|
1213
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa446857(v=vs.85).aspx
|
1214
|
-
class DAILY < FFI::Struct
|
1215
|
-
layout :DaysInterval, :word
|
1216
|
-
end
|
1217
|
-
|
1218
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa384014(v=vs.85).aspx
|
1219
|
-
class WEEKLY < FFI::Struct
|
1220
|
-
layout :WeeksInterval, :word,
|
1221
|
-
:rgfDaysOfTheWeek, :word
|
1222
|
-
end
|
1223
|
-
|
1224
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381918(v=vs.85).aspx
|
1225
|
-
class MONTHLYDATE < FFI::Struct
|
1226
|
-
layout :rgfDays, :dword,
|
1227
|
-
:rgfMonths, :word
|
1228
|
-
end
|
1229
|
-
|
1230
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381918(v=vs.85).aspx
|
1231
|
-
class MONTHLYDOW < FFI::Struct
|
1232
|
-
layout :wWhichWeek, :word,
|
1233
|
-
:rgfDaysOfTheWeek, :word,
|
1234
|
-
:rgfMonths, :word
|
1235
|
-
end
|
1236
|
-
|
1237
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa384002(v=vs.85).aspx
|
1238
|
-
class TRIGGER_TYPE_UNION < FFI::Union
|
1239
|
-
layout :Daily, DAILY,
|
1240
|
-
:Weekly, WEEKLY,
|
1241
|
-
:MonthlyDate, MONTHLYDATE,
|
1242
|
-
:MonthlyDOW, MONTHLYDOW
|
1243
|
-
end
|
1244
|
-
|
1245
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa383618(v=vs.85).aspx
|
1246
|
-
class TASK_TRIGGER < FFI::Struct
|
1247
|
-
layout :cbTriggerSize, :word, # Structure size.
|
1248
|
-
:Reserved1, :word, # Reserved. Must be zero.
|
1249
|
-
:wBeginYear, :word, # Trigger beginning date year.
|
1250
|
-
:wBeginMonth, :word, # Trigger beginning date month.
|
1251
|
-
:wBeginDay, :word, # Trigger beginning date day.
|
1252
|
-
:wEndYear, :word, # Optional trigger ending date year.
|
1253
|
-
:wEndMonth, :word, # Optional trigger ending date month.
|
1254
|
-
:wEndDay, :word, # Optional trigger ending date day.
|
1255
|
-
:wStartHour, :word, # Run bracket start time hour.
|
1256
|
-
:wStartMinute, :word, # Run bracket start time minute.
|
1257
|
-
:MinutesDuration, :dword, # Duration of run bracket.
|
1258
|
-
:MinutesInterval, :dword, # Run bracket repetition interval.
|
1259
|
-
:rgFlags, :dword, # Trigger flags.
|
1260
|
-
:TriggerType, TASK_TRIGGER_TYPE, # Trigger type.
|
1261
|
-
:Type, TRIGGER_TYPE_UNION, # Trigger data.
|
1262
|
-
:Reserved2, :word, # Reserved. Must be zero.
|
1263
|
-
:wRandomMinutesInterval, :word # Maximum number of random minutes after start time
|
1264
|
-
end
|
1265
|
-
end
|
1266
|
-
end
|
1267
|
-
end
|