puppet 4.3.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/build_defaults.yaml +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/hiera/scope.rb +1 -1
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +45 -47
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/lookup_adapter.rb +73 -26
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +69 -22
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/file_system.rb +2 -2
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/lookup.rb +126 -150
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/match.rb +1 -0
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/facts/facter.rb +2 -13
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/hiera.rb +3 -1
- data/lib/puppet/indirector/indirection.rb +6 -2
- data/lib/puppet/indirector/json.rb +2 -2
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +6 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/node.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +4 -11
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/lookup.rb +128 -149
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -0
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +56 -14
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +80 -12
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +98 -96
- data/lib/puppet/pops/evaluator/closure.rb +122 -106
- data/lib/puppet/pops/evaluator/collector_transformer.rb +34 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +47 -42
- data/lib/puppet/pops/functions/function.rb +6 -2
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +50 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +18 -13
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup/explainer.rb +73 -3
- data/lib/puppet/pops/lookup/invocation.rb +21 -19
- data/lib/puppet/pops/lookup.rb +17 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +179 -157
- data/lib/puppet/pops/model/model.rb +17 -8
- data/lib/puppet/pops/model/model_label_provider.rb +14 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +17 -13
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +428 -403
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +16 -8
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +140 -387
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1253
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation/checker4_0.rb +115 -63
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +2 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +16 -9
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/rpm.rb +0 -1
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +7 -20
- data/lib/puppet/provider/service/init.rb +7 -0
- data/lib/puppet/provider/service/launchd.rb +6 -12
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/user/windows_adsi.rb +2 -2
- data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +33 -42
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction/additional_resource_generator.rb +23 -5
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/group.rb +6 -2
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +65 -28
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +190 -0
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +22 -16
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +84 -15
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/util/windows.rb +4 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +17 -0
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +4 -0
- data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +81 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/collection_spec.rb +8 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +201 -0
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
- data/spec/integration/util/windows/security_spec.rb +8 -8
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/application/lookup_spec.rb +138 -28
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +182 -5
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/epp_face_spec.rb +2 -2
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +17 -9
- data/spec/unit/functions/inline_epp_spec.rb +4 -4
- data/spec/unit/functions/lookup_spec.rb +88 -16
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +62 -6
- data/spec/unit/hiera/scope_spec.rb +5 -2
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/indirector/json_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +8 -0
- data/spec/unit/parser/compiler_spec.rb +16 -18
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +7 -7
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -2
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +127 -2
- data/spec/unit/pops/parser/lexer2_spec.rb +118 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -390
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +159 -15
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +8 -8
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +88 -47
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/rpm_spec.rb +2 -25
- data/spec/unit/provider/package/yum_spec.rb +12 -1
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/debian_spec.rb +6 -24
- data/spec/unit/provider/service/init_spec.rb +11 -1
- data/spec/unit/provider/service/launchd_spec.rb +18 -25
- data/spec/unit/provider/service/systemd_spec.rb +25 -12
- data/spec/unit/provider/service/upstart_spec.rb +57 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
- data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +99 -50
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +46 -38
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +48 -11
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +3342 -3195
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
data/lib/puppet/pops/utils.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# Provides utility methods
|
|
2
|
-
module Puppet::Pops
|
|
2
|
+
module Puppet::Pops
|
|
3
|
+
module Utils
|
|
3
4
|
# Can the given o be converted to numeric? (or is numeric already)
|
|
4
5
|
# Accepts a leading '::'
|
|
5
6
|
# Returns a boolean if the value is numeric
|
|
@@ -10,11 +11,11 @@ module Puppet::Pops::Utils
|
|
|
10
11
|
when Numeric
|
|
11
12
|
true
|
|
12
13
|
else
|
|
13
|
-
!!
|
|
14
|
+
!!Patterns::NUMERIC.match(relativize_name(o.to_s))
|
|
14
15
|
end
|
|
15
16
|
end
|
|
16
17
|
|
|
17
|
-
# Convert a match from
|
|
18
|
+
# Convert a match from Patterns::NUMERIC to floating point value if
|
|
18
19
|
# possible
|
|
19
20
|
def self.match_to_fp(match)
|
|
20
21
|
if match[5].to_s.length > 0
|
|
@@ -45,7 +46,7 @@ module Puppet::Pops::Utils
|
|
|
45
46
|
begin
|
|
46
47
|
case o
|
|
47
48
|
when String
|
|
48
|
-
match =
|
|
49
|
+
match = Patterns::NUMERIC.match(relativize_name(o))
|
|
49
50
|
if !match
|
|
50
51
|
nil
|
|
51
52
|
elsif match[5].to_s.length > 0
|
|
@@ -84,7 +85,7 @@ module Puppet::Pops::Utils
|
|
|
84
85
|
begin
|
|
85
86
|
case o
|
|
86
87
|
when String
|
|
87
|
-
match =
|
|
88
|
+
match = Patterns::NUMERIC.match(relativize_name(o))
|
|
88
89
|
if !match
|
|
89
90
|
nil
|
|
90
91
|
elsif match[5].to_s.length > 0
|
|
@@ -129,14 +130,14 @@ module Puppet::Pops::Utils
|
|
|
129
130
|
return find_adapter(o.eContainer, adapter)
|
|
130
131
|
end
|
|
131
132
|
|
|
132
|
-
# Finds the closest positioned
|
|
133
|
+
# Finds the closest positioned Model::Positioned object, or object decorated with
|
|
133
134
|
# a SourcePosAdapter, and returns
|
|
134
135
|
# a SourcePosAdapter for the first found, or nil if not found.
|
|
135
136
|
#
|
|
136
137
|
def self.find_closest_positioned(o)
|
|
137
|
-
return nil if o.nil? || o.is_a?(
|
|
138
|
-
return find_adapter(o,
|
|
139
|
-
o.offset.nil? ? find_closest_positioned(o.eContainer) :
|
|
138
|
+
return nil if o.nil? || o.is_a?(Model::Program) || (o.is_a?(Array) && o.empty?)
|
|
139
|
+
return find_adapter(o, Adapters::SourcePosAdapter) unless o.is_a?(Model::Positioned)
|
|
140
|
+
o.offset.nil? ? find_closest_positioned(o.eContainer) : Adapters::SourcePosAdapter.adapt(o)
|
|
140
141
|
end
|
|
141
|
-
|
|
142
|
+
end
|
|
142
143
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
module Puppet::Pops
|
|
2
|
+
module Validation
|
|
1
3
|
# A Validator validates a model.
|
|
2
4
|
#
|
|
3
5
|
# Validation is performed on each model element in isolation. Each method should validate the model element's state
|
|
@@ -9,10 +11,7 @@
|
|
|
9
11
|
# Model objects via their metamodel. (I.e an extra call to multiplicity check in polymorph check).
|
|
10
12
|
# This is however mostly valuable when validating model to model transformations, and is therefore T.B.D
|
|
11
13
|
#
|
|
12
|
-
class
|
|
13
|
-
Issues = Puppet::Pops::Issues
|
|
14
|
-
Model = Puppet::Pops::Model
|
|
15
|
-
|
|
14
|
+
class Checker4_0
|
|
16
15
|
attr_reader :acceptor
|
|
17
16
|
attr_reader :migration_checker
|
|
18
17
|
|
|
@@ -20,19 +19,19 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
20
19
|
# `:will_accept?` and `:accept`.
|
|
21
20
|
#
|
|
22
21
|
def initialize(diagnostics_producer)
|
|
23
|
-
@@check_visitor ||=
|
|
24
|
-
@@rvalue_visitor ||=
|
|
25
|
-
@@hostname_visitor ||=
|
|
26
|
-
@@assignment_visitor ||=
|
|
27
|
-
@@query_visitor ||=
|
|
28
|
-
@@top_visitor ||=
|
|
29
|
-
@@relation_visitor ||=
|
|
30
|
-
@@idem_visitor ||=
|
|
22
|
+
@@check_visitor ||= Visitor.new(nil, "check", 0, 0)
|
|
23
|
+
@@rvalue_visitor ||= Visitor.new(nil, "rvalue", 0, 0)
|
|
24
|
+
@@hostname_visitor ||= Visitor.new(nil, "hostname", 1, 2)
|
|
25
|
+
@@assignment_visitor ||= Visitor.new(nil, "assign", 0, 1)
|
|
26
|
+
@@query_visitor ||= Visitor.new(nil, "query", 0, 0)
|
|
27
|
+
@@top_visitor ||= Visitor.new(nil, "top", 1, 1)
|
|
28
|
+
@@relation_visitor ||= Visitor.new(nil, "relation", 0, 0)
|
|
29
|
+
@@idem_visitor ||= Visitor.new(self, "idem", 0, 0)
|
|
31
30
|
|
|
32
31
|
@acceptor = diagnostics_producer
|
|
33
32
|
|
|
34
33
|
# Use null migration checker unless given in context
|
|
35
|
-
@migration_checker = (Puppet.lookup(:migration_checker) {
|
|
34
|
+
@migration_checker = (Puppet.lookup(:migration_checker) { Migration::MigrationChecker.new() })
|
|
36
35
|
end
|
|
37
36
|
|
|
38
37
|
# Validates the entire model by visiting each model element and calling `check`.
|
|
@@ -94,7 +93,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
94
93
|
|
|
95
94
|
# Returns the last expression in a block, or the expression, if that expression is idem
|
|
96
95
|
def ends_with_idem(o)
|
|
97
|
-
if o.is_a?(
|
|
96
|
+
if o.is_a?(Model::BlockExpression)
|
|
98
97
|
last = o.statements[-1]
|
|
99
98
|
idem(last) ? last : nil
|
|
100
99
|
else
|
|
@@ -106,7 +105,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
106
105
|
|
|
107
106
|
def assign_VariableExpression(o, via_index)
|
|
108
107
|
varname_string = varname_to_s(o.expr)
|
|
109
|
-
if varname_string =~
|
|
108
|
+
if varname_string =~ Patterns::NUMERIC_VAR_NAME
|
|
110
109
|
acceptor.accept(Issues::ILLEGAL_NUMERIC_ASSIGNMENT, o, :varname => varname_string)
|
|
111
110
|
end
|
|
112
111
|
# Can not assign to something in another namespace (i.e. a '::' in the name is not legal)
|
|
@@ -213,21 +212,34 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
213
212
|
rvalue(o.right_expr)
|
|
214
213
|
end
|
|
215
214
|
|
|
215
|
+
def resource_without_title?(o)
|
|
216
|
+
if o.instance_of?(Model::BlockExpression)
|
|
217
|
+
statements = o.statements
|
|
218
|
+
statements.length == 2 && statements[0].instance_of?(Model::QualifiedName) && statements[1].instance_of?(Model::LiteralHash)
|
|
219
|
+
else
|
|
220
|
+
false
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
|
|
216
224
|
def check_BlockExpression(o)
|
|
217
|
-
o
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
225
|
+
if resource_without_title?(o)
|
|
226
|
+
acceptor.accept(Issues::RESOURCE_WITHOUT_TITLE, o, :name => o.statements[0].value)
|
|
227
|
+
else
|
|
228
|
+
o.statements[0..-2].each do |statement|
|
|
229
|
+
if idem(statement)
|
|
230
|
+
acceptor.accept(Issues::IDEM_EXPRESSION_NOT_LAST, statement)
|
|
231
|
+
break # only flag the first
|
|
232
|
+
end
|
|
221
233
|
end
|
|
222
234
|
end
|
|
223
235
|
end
|
|
224
236
|
|
|
225
237
|
def check_CallNamedFunctionExpression(o)
|
|
226
238
|
case o.functor_expr
|
|
227
|
-
when
|
|
239
|
+
when Model::QualifiedName
|
|
228
240
|
# ok
|
|
229
241
|
nil
|
|
230
|
-
when
|
|
242
|
+
when Model::RenderStringExpression
|
|
231
243
|
# helpful to point out this easy to make Epp error
|
|
232
244
|
acceptor.accept(Issues::ILLEGAL_EPP_PARAMETERS, o)
|
|
233
245
|
else
|
|
@@ -238,16 +250,16 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
238
250
|
def check_CapabilityMapping(o)
|
|
239
251
|
ok =
|
|
240
252
|
case o.component
|
|
241
|
-
when
|
|
253
|
+
when Model::QualifiedName
|
|
242
254
|
name = o.component.value
|
|
243
|
-
acceptor.accept(Issues::ILLEGAL_CLASSREF, o.component, {:name=>name}) unless name =~
|
|
255
|
+
acceptor.accept(Issues::ILLEGAL_CLASSREF, o.component, {:name=>name}) unless name =~ Patterns::CLASSREF_EXT
|
|
244
256
|
true
|
|
245
|
-
when
|
|
257
|
+
when Model::AccessExpression
|
|
246
258
|
keys = o.component.keys
|
|
247
259
|
expr = o.component.left_expr
|
|
248
|
-
if expr.is_a?(
|
|
260
|
+
if expr.is_a?(Model::QualifiedReference) && keys.size == 1
|
|
249
261
|
key = keys[0]
|
|
250
|
-
key.is_a?(
|
|
262
|
+
key.is_a?(Model::LiteralString) || key.is_a?(Model::QualifiedName) || key.is_a?(Model::QualifiedReference)
|
|
251
263
|
else
|
|
252
264
|
false
|
|
253
265
|
end
|
|
@@ -256,14 +268,15 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
256
268
|
end
|
|
257
269
|
acceptor.accept(Issues::ILLEGAL_EXPRESSION, o.component, :feature=>'capability mapping', :container => o) unless ok
|
|
258
270
|
|
|
259
|
-
if o.capability !~
|
|
271
|
+
if o.capability !~ Patterns::CLASSREF_EXT
|
|
260
272
|
acceptor.accept(Issues::ILLEGAL_CLASSREF, o, {:name=>o.capability})
|
|
261
273
|
end
|
|
262
274
|
end
|
|
263
275
|
|
|
264
276
|
def check_EppExpression(o)
|
|
265
|
-
if o.eContainer.is_a?(
|
|
277
|
+
if o.eContainer.is_a?(Model::LambdaExpression)
|
|
266
278
|
internal_check_no_capture(o.eContainer, o)
|
|
279
|
+
internal_check_parameter_name_uniqueness(o.eContainer)
|
|
267
280
|
end
|
|
268
281
|
end
|
|
269
282
|
|
|
@@ -287,13 +300,6 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
287
300
|
unless o.type_expr.is_a? Model::QualifiedReference
|
|
288
301
|
acceptor.accept(Issues::ILLEGAL_EXPRESSION, o.type_expr, :feature=> 'type name', :container => o)
|
|
289
302
|
end
|
|
290
|
-
|
|
291
|
-
# If a collect expression tries to collect exported resources and storeconfigs is not on
|
|
292
|
-
# then it will not work... This was checked in the parser previously. This is a runtime checking
|
|
293
|
-
# thing as opposed to a language thing.
|
|
294
|
-
if acceptor.will_accept?(Issues::RT_NO_STORECONFIGS) && o.query.is_a?(Model::ExportedQuery)
|
|
295
|
-
acceptor.accept(Issues::RT_NO_STORECONFIGS, o)
|
|
296
|
-
end
|
|
297
303
|
end
|
|
298
304
|
|
|
299
305
|
# Only used for function names, grammar should not be able to produce something faulty, but
|
|
@@ -336,32 +342,35 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
336
342
|
# for 'class', 'define', and function
|
|
337
343
|
def check_NamedDefinition(o)
|
|
338
344
|
top(o.eContainer, o)
|
|
339
|
-
if o.name !~
|
|
345
|
+
if o.name !~ Patterns::CLASSREF
|
|
340
346
|
acceptor.accept(Issues::ILLEGAL_DEFINITION_NAME, o, {:name=>o.name})
|
|
341
347
|
end
|
|
348
|
+
internal_check_reserved_type_name(o, o.name)
|
|
349
|
+
internal_check_future_reserved_word(o, o.name)
|
|
350
|
+
end
|
|
342
351
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
352
|
+
def check_TypeAlias(o)
|
|
353
|
+
top(o.eContainer, o)
|
|
354
|
+
internal_check_reserved_type_name(o, o.name)
|
|
355
|
+
internal_check_type_ref(o, o.type_expr)
|
|
356
|
+
end
|
|
346
357
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
358
|
+
def check_TypeDefinition(o)
|
|
359
|
+
top(o.eContainer, o)
|
|
360
|
+
internal_check_reserved_type_name(o, o.name)
|
|
361
|
+
# TODO: Check TypeDefinition body. For now, just error out
|
|
362
|
+
acceptor.accept(Issues::UNSUPPORTED_EXPRESSION, o)
|
|
352
363
|
end
|
|
353
364
|
|
|
354
365
|
def check_FunctionDefinition(o)
|
|
355
|
-
# TODO PUP-2080: more strict rule for top - can only be contained in Program (for now)
|
|
356
|
-
# sticking functions in classes would create functions in the class name space
|
|
357
|
-
# but not be special in any other way
|
|
358
|
-
#
|
|
359
366
|
check_NamedDefinition(o)
|
|
367
|
+
internal_check_parameter_name_uniqueness(o)
|
|
360
368
|
end
|
|
361
369
|
|
|
362
370
|
def check_HostClassDefinition(o)
|
|
363
371
|
check_NamedDefinition(o)
|
|
364
372
|
internal_check_no_capture(o)
|
|
373
|
+
internal_check_parameter_name_uniqueness(o)
|
|
365
374
|
internal_check_reserved_params(o)
|
|
366
375
|
internal_check_no_idem_last(o)
|
|
367
376
|
end
|
|
@@ -369,13 +378,23 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
369
378
|
def check_ResourceTypeDefinition(o)
|
|
370
379
|
check_NamedDefinition(o)
|
|
371
380
|
internal_check_no_capture(o)
|
|
381
|
+
internal_check_parameter_name_uniqueness(o)
|
|
372
382
|
internal_check_reserved_params(o)
|
|
373
383
|
internal_check_no_idem_last(o)
|
|
374
384
|
end
|
|
375
385
|
|
|
386
|
+
def internal_check_type_ref(o, r)
|
|
387
|
+
n = r.is_a?(Model::AccessExpression) ? r.left_expr : r
|
|
388
|
+
if n.is_a? Model::QualifiedReference
|
|
389
|
+
internal_check_future_reserved_word(r, n.value)
|
|
390
|
+
else
|
|
391
|
+
acceptor.accept(Issues::ILLEGAL_EXPRESSION, r, :feature => 'a type reference', :container => o)
|
|
392
|
+
end
|
|
393
|
+
end
|
|
394
|
+
|
|
376
395
|
def internal_check_no_idem_last(o)
|
|
377
396
|
if violator = ends_with_idem(o.body)
|
|
378
|
-
acceptor.accept(Issues::IDEM_NOT_ALLOWED_LAST, violator, {:container => o})
|
|
397
|
+
acceptor.accept(Issues::IDEM_NOT_ALLOWED_LAST, violator, {:container => o}) unless resource_without_title?(violator)
|
|
379
398
|
end
|
|
380
399
|
end
|
|
381
400
|
|
|
@@ -396,6 +415,19 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
396
415
|
end
|
|
397
416
|
end
|
|
398
417
|
|
|
418
|
+
def internal_check_reserved_type_name(o, name)
|
|
419
|
+
if RESERVED_TYPE_NAMES[name]
|
|
420
|
+
acceptor.accept(Issues::RESERVED_TYPE_NAME, o, {:name => name})
|
|
421
|
+
end
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
def internal_check_future_reserved_word(o, name)
|
|
425
|
+
if FUTURE_RESERVED_WORDS[name]
|
|
426
|
+
acceptor.accept(Issues::FUTURE_RESERVED_WORD, o, {:word => name})
|
|
427
|
+
end
|
|
428
|
+
end
|
|
429
|
+
|
|
430
|
+
|
|
399
431
|
RESERVED_PARAMETERS = {
|
|
400
432
|
'name' => true,
|
|
401
433
|
'title' => true,
|
|
@@ -409,6 +441,13 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
409
441
|
end
|
|
410
442
|
end
|
|
411
443
|
|
|
444
|
+
def internal_check_parameter_name_uniqueness(o)
|
|
445
|
+
unique = Set.new
|
|
446
|
+
o.parameters.each do |p|
|
|
447
|
+
acceptor.accept(Issues::DUPLICATE_PARAMETER, p, {:param_name => p.name}) unless unique.add?(p.name)
|
|
448
|
+
end
|
|
449
|
+
end
|
|
450
|
+
|
|
412
451
|
def check_IfExpression(o)
|
|
413
452
|
rvalue(o.test)
|
|
414
453
|
end
|
|
@@ -433,7 +472,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
433
472
|
hostname(o.host_matches, o)
|
|
434
473
|
top(o.eContainer, o)
|
|
435
474
|
if violator = ends_with_idem(o.body)
|
|
436
|
-
acceptor.accept(Issues::IDEM_NOT_ALLOWED_LAST, violator, {:container => o})
|
|
475
|
+
acceptor.accept(Issues::IDEM_NOT_ALLOWED_LAST, violator, {:container => o}) unless resource_without_title?(violator)
|
|
437
476
|
end
|
|
438
477
|
unless o.parent.nil?
|
|
439
478
|
acceptor.accept(Issues::ILLEGAL_NODE_INHERITANCE, o.parent)
|
|
@@ -452,7 +491,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
452
491
|
# DOH: QualifiedReferences are created with LOWER CASE NAMES at parse time
|
|
453
492
|
def check_QualifiedReference(o)
|
|
454
493
|
# Is this a valid qualified name?
|
|
455
|
-
if o.value !~
|
|
494
|
+
if o.value !~ Patterns::CLASSREF
|
|
456
495
|
acceptor.accept(Issues::ILLEGAL_CLASSREF, o, {:name=>o.value})
|
|
457
496
|
end
|
|
458
497
|
end
|
|
@@ -474,17 +513,21 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
474
513
|
acceptor.accept(Issues::ILLEGAL_NUMERIC_PARAMETER, o, :name => o.name)
|
|
475
514
|
end
|
|
476
515
|
|
|
477
|
-
unless o.name =~
|
|
516
|
+
unless o.name =~ Patterns::PARAM_NAME
|
|
478
517
|
acceptor.accept(Issues::ILLEGAL_PARAM_NAME, o, :name => o.name)
|
|
479
518
|
end
|
|
480
519
|
return unless o.value
|
|
481
520
|
|
|
482
|
-
|
|
483
|
-
|
|
521
|
+
internal_check_illegal_assignment(o.value)
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
def internal_check_illegal_assignment(o)
|
|
525
|
+
if o.is_a?(Model::AssignmentExpression)
|
|
526
|
+
acceptor.accept(Issues::ILLEGAL_ASSIGNMENT_CONTEXT, o)
|
|
484
527
|
else
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
528
|
+
# recursively check all contents unless it's a lambda expression. A lambda may contain
|
|
529
|
+
# local assignments
|
|
530
|
+
o.eContents.each {|model| internal_check_illegal_assignment(model) } unless o.is_a?(Model::LambdaExpression)
|
|
488
531
|
end
|
|
489
532
|
end
|
|
490
533
|
|
|
@@ -512,7 +555,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
512
555
|
def check_ResourceBody(o)
|
|
513
556
|
seenUnfolding = false
|
|
514
557
|
o.operations.each do |ao|
|
|
515
|
-
if ao.is_a?(
|
|
558
|
+
if ao.is_a?(Model::AttributesOperation)
|
|
516
559
|
if seenUnfolding
|
|
517
560
|
acceptor.accept(Issues::MULTIPLE_ATTRIBUTES_UNFOLD, ao)
|
|
518
561
|
else
|
|
@@ -570,11 +613,11 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
570
613
|
# name must be either a decimal string value, or a valid NAME
|
|
571
614
|
name = o.expr.value
|
|
572
615
|
if name[0,1] =~ /[0-9]/
|
|
573
|
-
unless name =~
|
|
616
|
+
unless name =~ Patterns::NUMERIC_VAR_NAME
|
|
574
617
|
acceptor.accept(Issues::ILLEGAL_NUMERIC_VAR_NAME, o, :name => name)
|
|
575
618
|
end
|
|
576
619
|
else
|
|
577
|
-
unless name =~
|
|
620
|
+
unless name =~ Patterns::VAR_NAME
|
|
578
621
|
acceptor.accept(Issues::ILLEGAL_VAR_NAME, o, :name => name)
|
|
579
622
|
end
|
|
580
623
|
end
|
|
@@ -593,7 +636,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
593
636
|
# but this allows pathological names like "a..b......c", "----"
|
|
594
637
|
# TODO: Investigate if more illegal hostnames should be flagged.
|
|
595
638
|
#
|
|
596
|
-
if o =~
|
|
639
|
+
if o =~ Patterns::ILLEGAL_HOSTNAME_CHARS
|
|
597
640
|
acceptor.accept(Issues::ILLEGAL_HOSTNAME_CHARS, semantic, :hostname => o)
|
|
598
641
|
end
|
|
599
642
|
end
|
|
@@ -700,8 +743,15 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
700
743
|
end
|
|
701
744
|
|
|
702
745
|
def top_BlockExpression(o, definition)
|
|
703
|
-
|
|
704
|
-
|
|
746
|
+
if !o.eContainer.is_a?(Model::Program) &&
|
|
747
|
+
(definition.is_a?(Model::FunctionDefinition) || definition.is_a?(Model::TypeAlias) || definition.is_a?(Model::TypeDefinition))
|
|
748
|
+
|
|
749
|
+
# not ok. These can never be nested in a block
|
|
750
|
+
acceptor.accept(Issues::NOT_ABSOLUTE_TOP_LEVEL, definition)
|
|
751
|
+
else
|
|
752
|
+
# ok, if this is a block representing the body of a class, or is top level
|
|
753
|
+
top o.eContainer, definition
|
|
754
|
+
end
|
|
705
755
|
end
|
|
706
756
|
|
|
707
757
|
def top_HostClassDefinition(o, definition)
|
|
@@ -840,3 +890,5 @@ class Puppet::Pops::Validation::Checker4_0
|
|
|
840
890
|
end
|
|
841
891
|
end
|
|
842
892
|
end
|
|
893
|
+
end
|
|
894
|
+
end
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
+
module Puppet::Pops
|
|
2
|
+
module Validation
|
|
1
3
|
# Configures validation suitable for 4.0
|
|
2
4
|
#
|
|
3
|
-
class
|
|
4
|
-
Issues =
|
|
5
|
+
class ValidatorFactory_4_0 < Factory
|
|
6
|
+
Issues = Issues
|
|
5
7
|
|
|
6
8
|
# Produces the checker to use
|
|
7
9
|
def checker diagnostic_producer
|
|
8
|
-
|
|
10
|
+
Checker4_0.new(diagnostic_producer)
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
# Produces the label provider to use
|
|
12
14
|
def label_provider
|
|
13
|
-
|
|
15
|
+
Model::ModelLabelProvider.new()
|
|
14
16
|
end
|
|
15
17
|
|
|
16
18
|
# Produces the severity producer to use
|
|
@@ -30,3 +32,5 @@ class Puppet::Pops::Validation::ValidatorFactory_4_0 < Puppet::Pops::Validation:
|
|
|
30
32
|
p
|
|
31
33
|
end
|
|
32
34
|
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
module Puppet::Pops
|
|
1
2
|
# A module with base functionality for validation of a model.
|
|
2
3
|
#
|
|
3
4
|
# * **Factory** - an abstract factory implementation that makes it easier to create a new validation factory.
|
|
@@ -6,7 +7,7 @@
|
|
|
6
7
|
# * **Acceptor** - the receiver/sink/collector of computed diagnostics
|
|
7
8
|
# * **DiagnosticFormatter** - produces human readable output for a Diagnostic
|
|
8
9
|
#
|
|
9
|
-
module
|
|
10
|
+
module Validation
|
|
10
11
|
|
|
11
12
|
# This class is an abstract base implementation of a _model validation factory_ that creates a validator instance
|
|
12
13
|
# and associates it with a fully configured DiagnosticProducer.
|
|
@@ -45,7 +46,7 @@ module Puppet::Pops::Validation
|
|
|
45
46
|
# @api public
|
|
46
47
|
#
|
|
47
48
|
def diagnostic_producer(acceptor)
|
|
48
|
-
|
|
49
|
+
DiagnosticProducer.new(acceptor, severity_producer(), label_provider())
|
|
49
50
|
end
|
|
50
51
|
|
|
51
52
|
# Produces the SeverityProducer to use
|
|
@@ -56,7 +57,7 @@ module Puppet::Pops::Validation
|
|
|
56
57
|
# @api public
|
|
57
58
|
#
|
|
58
59
|
def severity_producer
|
|
59
|
-
|
|
60
|
+
SeverityProducer.new
|
|
60
61
|
end
|
|
61
62
|
|
|
62
63
|
# Produces the checker to use.
|
|
@@ -119,12 +120,12 @@ module Puppet::Pops::Validation
|
|
|
119
120
|
|
|
120
121
|
# Override a default severity with the given severity level.
|
|
121
122
|
#
|
|
122
|
-
# @param issue [
|
|
123
|
+
# @param issue [Issues::Issue] the issue for which to set severity
|
|
123
124
|
# @param level [Symbol] the severity level (:error, :warning, or :ignore).
|
|
124
125
|
# @api public
|
|
125
126
|
#
|
|
126
127
|
def []=(issue, level)
|
|
127
|
-
raise Puppet::DevError.new("Attempt to set validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a?
|
|
128
|
+
raise Puppet::DevError.new("Attempt to set validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a? Issues::Issue
|
|
128
129
|
raise Puppet::DevError.new("Illegal severity level: #{option}") unless @@severity_hash[level]
|
|
129
130
|
raise Puppet::DevError.new("Attempt to demote the hard issue '#{issue.issue_code}' to #{level}") unless issue.demotable? || level == :error
|
|
130
131
|
@severities[issue] = level
|
|
@@ -144,7 +145,7 @@ module Puppet::Pops::Validation
|
|
|
144
145
|
# @api private
|
|
145
146
|
#
|
|
146
147
|
def assert_issue issue
|
|
147
|
-
raise Puppet::DevError.new("Attempt to get validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a?
|
|
148
|
+
raise Puppet::DevError.new("Attempt to get validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a? Issues::Issue
|
|
148
149
|
end
|
|
149
150
|
|
|
150
151
|
# Checks if the given severity level is valid.
|
|
@@ -203,7 +204,7 @@ module Puppet::Pops::Validation
|
|
|
203
204
|
source_pos = semantic
|
|
204
205
|
file = semantic.file
|
|
205
206
|
else
|
|
206
|
-
source_pos =
|
|
207
|
+
source_pos = Utils.find_closest_positioned(semantic)
|
|
207
208
|
file = source_pos ? source_pos.locator.file : nil
|
|
208
209
|
end
|
|
209
210
|
|
|
@@ -404,7 +405,7 @@ module Puppet::Pops::Validation
|
|
|
404
405
|
end
|
|
405
406
|
|
|
406
407
|
# Add a diagnostic, or all diagnostics from another acceptor to the set of diagnostics
|
|
407
|
-
# @param diagnostic [
|
|
408
|
+
# @param diagnostic [Diagnostic, Acceptor] diagnostic(s) that should be accepted
|
|
408
409
|
def accept(diagnostic)
|
|
409
410
|
if diagnostic.is_a?(Acceptor)
|
|
410
411
|
diagnostic.diagnostics.each {|d| self.send(d.severity, d)}
|
|
@@ -415,7 +416,7 @@ module Puppet::Pops::Validation
|
|
|
415
416
|
|
|
416
417
|
# Prunes the contain diagnostics by removing those for which the given block returns true.
|
|
417
418
|
# The internal statistics is updated as a consequence of removing.
|
|
418
|
-
# @return [Array<
|
|
419
|
+
# @return [Array<Diagnostic, nil] the removed set of diagnostics or nil if nothing was removed
|
|
419
420
|
#
|
|
420
421
|
def prune(&block)
|
|
421
422
|
removed = []
|
|
@@ -458,3 +459,4 @@ module Puppet::Pops::Validation
|
|
|
458
459
|
end
|
|
459
460
|
end
|
|
460
461
|
end
|
|
462
|
+
end
|
data/lib/puppet/pops.rb
CHANGED
|
@@ -34,14 +34,6 @@ module Puppet
|
|
|
34
34
|
|
|
35
35
|
# (the Types module initializes itself)
|
|
36
36
|
require 'puppet/pops/types/types'
|
|
37
|
-
require 'puppet/pops/types/type_asserter'
|
|
38
|
-
require 'puppet/pops/types/type_assertion_error'
|
|
39
|
-
require 'puppet/pops/types/type_calculator'
|
|
40
|
-
require 'puppet/pops/types/type_factory'
|
|
41
|
-
require 'puppet/pops/types/type_parser'
|
|
42
|
-
require 'puppet/pops/types/class_loader'
|
|
43
|
-
require 'puppet/pops/types/enumeration'
|
|
44
|
-
require 'puppet/pops/types/type_mismatch_describer'
|
|
45
37
|
|
|
46
38
|
require 'puppet/pops/merge_strategy'
|
|
47
39
|
|
|
@@ -196,7 +196,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
|
196
196
|
end
|
|
197
197
|
|
|
198
198
|
attrs.each { |val|
|
|
199
|
-
key = key_list.shift.
|
|
199
|
+
key = key_list.shift.to_sym
|
|
200
200
|
properties = self.load_attribute(key, val, mapping, properties)
|
|
201
201
|
}
|
|
202
202
|
properties.empty? ? nil : properties
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# you may not use this file except in compliance with the License.
|
|
6
6
|
# You may obtain a copy of the License at
|
|
7
7
|
#
|
|
8
|
-
#
|
|
8
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
|
9
9
|
#
|
|
10
10
|
# Unless required by applicable law or agreed to in writing, software
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
@@ -9,7 +9,7 @@ Puppet::Type.type(:cron).provide(:crontab, :parent => Puppet::Provider::ParsedFi
|
|
|
9
9
|
|
|
10
10
|
text_line :blank, :match => %r{^\s*$}
|
|
11
11
|
|
|
12
|
-
text_line :environment, :match => %r{^\s*\w
|
|
12
|
+
text_line :environment, :match => %r{^\s*\w+\s*=}
|
|
13
13
|
|
|
14
14
|
def self.filetype
|
|
15
15
|
tabname = case Facter.value(:osfamily)
|
|
@@ -45,7 +45,7 @@ Puppet::Type.type(:exec).provide :windows, :parent => Puppet::Provider::Exec do
|
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
if resource[:path]
|
|
48
|
-
Puppet::Util.withenv
|
|
48
|
+
Puppet::Util.withenv( {'PATH' => resource[:path].join(File::PATH_SEPARATOR)}, :windows) do
|
|
49
49
|
return if which(exe)
|
|
50
50
|
end
|
|
51
51
|
end
|
|
@@ -28,7 +28,7 @@ Puppet::Type.type(:group).provide :windows_adsi do
|
|
|
28
28
|
specified_users = Puppet::Util::Windows::ADSI::Group.name_sid_hash(should)
|
|
29
29
|
|
|
30
30
|
if @resource[:auth_membership]
|
|
31
|
-
current_users == specified_users
|
|
31
|
+
current_users.keys.to_a == specified_users.keys.to_a
|
|
32
32
|
else
|
|
33
33
|
(specified_users.keys.to_a & current_users.keys.to_a) == specified_users.keys.to_a
|
|
34
34
|
end
|
|
@@ -48,7 +48,7 @@ Puppet::Type.type(:group).provide :windows_adsi do
|
|
|
48
48
|
else
|
|
49
49
|
account = sid.account
|
|
50
50
|
end
|
|
51
|
-
resource.debug("#{sid.domain}\\#{account} (#{sid.
|
|
51
|
+
resource.debug("#{sid.domain}\\#{account} (#{sid.sid})")
|
|
52
52
|
"#{sid.domain}\\#{account}"
|
|
53
53
|
end
|
|
54
54
|
return users.join(',')
|