puppet 3.3.2 → 3.4.0.rc1
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.
- data/CONTRIBUTING.md +22 -0
- data/Gemfile +11 -2
- data/README.md +13 -17
- data/README_DEVELOPER.md +1 -1
- data/Rakefile +1 -1
- data/examples/hiera/README.md +4 -4
- data/ext/debian/puppetmaster.init +1 -0
- data/ext/debian/rules +2 -5
- data/ext/nagios/check_puppet.rb +7 -7
- data/ext/osx/file_mapping.yaml +1 -1
- data/ext/osx/preflight.erb +34 -19
- data/ext/rack/{files/config.ru → config.ru} +0 -0
- data/ext/rack/{files/apache2.conf → example-passenger-vhost.conf} +6 -0
- data/ext/redhat/puppet.spec.erb +20 -2
- data/ext/systemd/{puppetagent.service → puppet.service} +0 -0
- data/lib/hiera_puppet.rb +2 -2
- data/lib/puppet/agent.rb +1 -6
- data/lib/puppet/application.rb +15 -2
- data/lib/puppet/application/agent.rb +2 -7
- data/lib/puppet/application/apply.rb +8 -13
- data/lib/puppet/application/cert.rb +47 -7
- data/lib/puppet/application/device.rb +1 -6
- data/lib/puppet/application/face_base.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +3 -12
- data/lib/puppet/application/master.rb +1 -6
- data/lib/puppet/application/queue.rb +1 -6
- data/lib/puppet/application/resource.rb +2 -6
- data/lib/puppet/coercion.rb +11 -0
- data/lib/puppet/configurer.rb +5 -3
- data/lib/puppet/configurer/downloader.rb +3 -1
- data/lib/puppet/configurer/plugin_handler.rb +10 -0
- data/lib/puppet/confine.rb +80 -0
- data/lib/puppet/{provider/confine → confine}/exists.rb +3 -3
- data/lib/puppet/{provider/confine → confine}/false.rb +2 -2
- data/lib/puppet/{provider/confine → confine}/feature.rb +2 -2
- data/lib/puppet/{provider/confine → confine}/true.rb +2 -2
- data/lib/puppet/{provider/confine → confine}/variable.rb +2 -2
- data/lib/puppet/{provider/confine_collection.rb → confine_collection.rb} +4 -4
- data/lib/puppet/{provider/confiner.rb → confiner.rb} +4 -4
- data/lib/puppet/daemon.rb +2 -6
- data/lib/puppet/data_binding.rb +2 -30
- data/lib/puppet/defaults.rb +283 -174
- data/lib/puppet/error.rb +1 -0
- data/lib/puppet/external/nagios.rb +0 -2
- data/lib/puppet/external/nagios/base.rb +4 -3
- data/lib/puppet/external/nagios/grammar.ry +173 -112
- data/lib/puppet/external/nagios/parser.rb +233 -184
- data/lib/puppet/face/file/store.rb +1 -1
- data/lib/puppet/face/module/generate.rb +5 -7
- data/lib/puppet/face/parser.rb +12 -2
- data/lib/puppet/face/plugin.rb +6 -0
- data/lib/puppet/feature/base.rb +16 -0
- data/lib/puppet/feature/external_facts.rb +5 -0
- data/lib/puppet/feature/libuser.rb +1 -1
- data/lib/puppet/feature/msgpack.rb +1 -0
- data/lib/puppet/feature/rails.rb +2 -2
- data/lib/puppet/file_bucket/dipper.rb +8 -6
- data/lib/puppet/file_bucket/file.rb +17 -1
- data/lib/puppet/file_serving/base.rb +21 -10
- data/lib/puppet/file_serving/configuration.rb +5 -7
- data/lib/puppet/file_serving/configuration/parser.rb +1 -1
- data/lib/puppet/file_serving/content.rb +1 -1
- data/lib/puppet/file_serving/fileset.rb +3 -3
- data/lib/puppet/file_serving/metadata.rb +22 -18
- data/lib/puppet/file_serving/mount/file.rb +1 -1
- data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
- data/lib/puppet/file_system.rb +3 -0
- data/lib/puppet/file_system/file.rb +261 -0
- data/lib/puppet/file_system/file18.rb +5 -0
- data/lib/puppet/file_system/file19.rb +5 -0
- data/lib/puppet/file_system/file19windows.rb +113 -0
- data/lib/puppet/file_system/memory_file.rb +31 -0
- data/lib/puppet/file_system/tempfile.rb +20 -0
- data/lib/puppet/indirector/active_record.rb +1 -0
- data/lib/puppet/indirector/catalog/compiler.rb +28 -0
- data/lib/puppet/indirector/certificate_request/memory.rb +6 -0
- data/lib/puppet/indirector/data_binding/hiera.rb +46 -2
- data/lib/puppet/indirector/direct_file_server.rb +2 -2
- data/lib/puppet/indirector/facts/facter.rb +25 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +60 -74
- data/lib/puppet/indirector/indirection.rb +5 -1
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/key/ca.rb +4 -0
- data/lib/puppet/indirector/key/file.rb +7 -3
- data/lib/puppet/indirector/key/memory.rb +6 -0
- data/lib/puppet/indirector/node/write_only_yaml.rb +2 -2
- data/lib/puppet/indirector/request.rb +17 -11
- data/lib/puppet/indirector/resource/ral.rb +5 -0
- data/lib/puppet/indirector/resource/rest.rb +1 -0
- data/lib/puppet/indirector/resource/store_configs.rb +4 -0
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/indirector/ssl_file.rb +7 -7
- data/lib/puppet/indirector/terminus.rb +4 -0
- data/lib/puppet/indirector/yaml.rb +3 -3
- data/lib/puppet/interface/documentation.rb +4 -11
- data/lib/puppet/module.rb +19 -6
- data/lib/puppet/module_tool/applications/builder.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -1
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/dependency.rb +7 -3
- data/lib/puppet/module_tool/metadata.rb +6 -2
- data/lib/puppet/module_tool/tar.rb +2 -1
- data/lib/puppet/module_tool/tar/gnu.rb +6 -2
- data/lib/puppet/module_tool/tar/mini.rb +2 -0
- data/lib/puppet/module_tool/tar/solaris.rb +2 -5
- data/lib/puppet/network/authconfig.rb +0 -2
- data/lib/puppet/network/authentication.rb +1 -1
- data/lib/puppet/network/authstore.rb +6 -7
- data/lib/puppet/network/format.rb +2 -3
- data/lib/puppet/network/format_handler.rb +16 -11
- data/lib/puppet/network/format_support.rb +14 -0
- data/lib/puppet/network/formats.rb +26 -0
- data/lib/puppet/network/http/connection.rb +8 -41
- data/lib/puppet/network/http/handler.rb +28 -32
- data/lib/puppet/network/http/webrick.rb +15 -22
- data/lib/puppet/network/http_pool.rb +43 -9
- data/lib/puppet/network/rights.rb +0 -0
- data/lib/puppet/node.rb +24 -8
- data/lib/puppet/node/environment.rb +18 -20
- data/lib/puppet/node/facts.rb +23 -6
- data/lib/puppet/parameter.rb +15 -2
- data/lib/puppet/parameter/boolean.rb +5 -0
- data/lib/puppet/parameter/value_collection.rb +6 -4
- data/lib/puppet/parser/ast/resourceparam.rb +2 -1
- data/lib/puppet/parser/compiler.rb +25 -9
- data/lib/puppet/parser/files.rb +1 -1
- data/lib/puppet/parser/functions.rb +12 -21
- data/lib/puppet/parser/functions/collect.rb +6 -35
- data/lib/puppet/parser/functions/contain.rb +26 -0
- data/lib/puppet/parser/functions/create_resources.rb +5 -0
- data/lib/puppet/parser/functions/extlookup.rb +2 -2
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/{reject.rb → filter.rb} +13 -12
- data/lib/puppet/parser/functions/fqdn_rand.rb +13 -5
- data/lib/puppet/parser/functions/include.rb +18 -1
- data/lib/puppet/parser/functions/map.rb +44 -0
- data/lib/puppet/parser/functions/select.rb +6 -38
- data/lib/puppet/parser/lexer.rb +1 -1
- data/lib/puppet/parser/parser_support.rb +1 -1
- data/lib/puppet/parser/resource.rb +6 -45
- data/lib/puppet/parser/scope.rb +33 -2
- data/lib/puppet/parser/type_loader.rb +4 -60
- data/lib/puppet/pops/binder/bindings_loader.rb +1 -1
- data/lib/puppet/pops/binder/config/binder_config.rb +3 -3
- data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +1 -1
- data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +1 -1
- data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +2 -2
- data/lib/puppet/pops/issues.rb +4 -0
- data/lib/puppet/pops/model/ast_transformer.rb +4 -1
- data/lib/puppet/pops/model/model_label_provider.rb +1 -1
- data/lib/puppet/pops/parser/egrammar.ra +5 -24
- data/lib/puppet/pops/parser/eparser.rb +859 -902
- data/lib/puppet/pops/parser/lexer.rb +48 -30
- data/lib/puppet/pops/parser/parser_support.rb +1 -1
- data/lib/puppet/pops/patterns.rb +4 -4
- data/lib/puppet/pops/utils.rb +1 -1
- data/lib/puppet/pops/validation/checker3_1.rb +25 -20
- data/lib/puppet/provider.rb +23 -6
- data/lib/puppet/provider/aixobject.rb +0 -0
- data/lib/puppet/provider/augeas/augeas.rb +21 -5
- data/lib/puppet/provider/confine.rb +5 -79
- data/lib/puppet/provider/cron/crontab.rb +0 -0
- data/lib/puppet/provider/exec.rb +9 -7
- data/lib/puppet/provider/exec/posix.rb +10 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/file/posix.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +16 -5
- data/lib/puppet/provider/group/aix.rb +0 -0
- data/lib/puppet/provider/group/windows_adsi.rb +33 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +0 -0
- data/lib/puppet/provider/maillist/mailman.rb +0 -0
- data/lib/puppet/provider/mount/parsed.rb +0 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +1 -1
- data/lib/puppet/provider/package/aptitude.rb +0 -0
- data/lib/puppet/provider/package/blastwave.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/fink.rb +1 -1
- data/lib/puppet/provider/package/freebsd.rb +0 -0
- data/lib/puppet/provider/package/gem.rb +0 -0
- data/lib/puppet/provider/package/macports.rb +0 -0
- data/lib/puppet/provider/package/msi.rb +4 -10
- data/lib/puppet/provider/package/nim.rb +8 -8
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/opkg.rb +0 -0
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/ports.rb +0 -0
- data/lib/puppet/provider/package/rpm.rb +39 -3
- data/lib/puppet/provider/package/sun.rb +3 -3
- data/lib/puppet/provider/package/sunfreeware.rb +0 -0
- data/lib/puppet/provider/package/windows.rb +12 -19
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/parsedfile.rb +0 -0
- data/lib/puppet/provider/port/parsed.rb +0 -0
- data/lib/puppet/provider/service/base.rb +0 -0
- data/lib/puppet/provider/service/bsd.rb +3 -3
- data/lib/puppet/provider/service/daemontools.rb +8 -8
- data/lib/puppet/provider/service/debian.rb +0 -0
- data/lib/puppet/provider/service/freebsd.rb +3 -3
- data/lib/puppet/provider/service/init.rb +5 -4
- data/lib/puppet/provider/service/launchd.rb +35 -24
- data/lib/puppet/provider/service/openbsd.rb +23 -0
- data/lib/puppet/provider/service/redhat.rb +0 -0
- data/lib/puppet/provider/service/runit.rb +3 -3
- data/lib/puppet/provider/service/smf.rb +0 -0
- data/lib/puppet/provider/service/src.rb +0 -0
- data/lib/puppet/provider/service/systemd.rb +0 -0
- data/lib/puppet/provider/service/upstart.rb +3 -3
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
- data/lib/puppet/provider/sshkey/parsed.rb +0 -0
- data/lib/puppet/provider/user/aix.rb +0 -0
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +1 -1
- data/lib/puppet/provider/zone/solaris.rb +1 -1
- data/lib/puppet/rails/benchmark.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -2
- data/lib/puppet/reference/indirection.rb +12 -14
- data/lib/puppet/relationship.rb +7 -4
- data/lib/puppet/reports.rb +2 -2
- data/lib/puppet/reports/rrdgraph.rb +1 -1
- data/lib/puppet/reports/store.rb +3 -3
- data/lib/puppet/reports/tagmail.rb +2 -2
- data/lib/puppet/resource.rb +66 -8
- data/lib/puppet/resource/catalog.rb +18 -25
- data/lib/puppet/resource/status.rb +10 -4
- data/lib/puppet/run.rb +6 -2
- data/lib/puppet/settings.rb +39 -119
- data/lib/puppet/settings/base_setting.rb +8 -9
- data/lib/puppet/settings/directory_setting.rb +8 -0
- data/lib/puppet/settings/file_setting.rb +35 -1
- data/lib/puppet/settings/priority_setting.rb +42 -0
- data/lib/puppet/ssl.rb +4 -0
- data/lib/puppet/ssl/certificate.rb +18 -0
- data/lib/puppet/ssl/certificate_authority.rb +101 -72
- data/lib/puppet/ssl/certificate_authority/autosign_command.rb +44 -0
- data/lib/puppet/ssl/certificate_authority/interface.rb +21 -17
- data/lib/puppet/ssl/certificate_factory.rb +38 -12
- data/lib/puppet/ssl/certificate_request.rb +201 -47
- data/lib/puppet/ssl/certificate_request_attributes.rb +34 -0
- data/lib/puppet/ssl/certificate_revocation_list.rb +2 -2
- data/lib/puppet/ssl/host.rb +21 -10
- data/lib/puppet/ssl/inventory.rb +6 -10
- data/lib/puppet/ssl/key.rb +1 -1
- data/lib/puppet/ssl/oids.rb +78 -0
- data/lib/puppet/ssl/validator.rb +41 -97
- data/lib/puppet/ssl/validator/default_validator.rb +153 -0
- data/lib/puppet/ssl/validator/no_validator.rb +17 -0
- data/lib/puppet/status.rb +4 -0
- data/lib/puppet/test/test_helper.rb +5 -0
- data/lib/puppet/transaction.rb +13 -0
- data/lib/puppet/transaction/event.rb +8 -3
- data/lib/puppet/transaction/report.rb +6 -2
- data/lib/puppet/transaction/resource_harness.rb +173 -115
- data/lib/puppet/type.rb +30 -13
- data/lib/puppet/type/augeas.rb +12 -46
- data/lib/puppet/type/component.rb +1 -7
- data/lib/puppet/type/cron.rb +0 -0
- data/lib/puppet/type/exec.rb +13 -1
- data/lib/puppet/type/file.rb +19 -10
- data/lib/puppet/type/file/checksum.rb +0 -0
- data/lib/puppet/type/file/content.rb +3 -0
- data/lib/puppet/type/file/ensure.rb +33 -15
- data/lib/puppet/type/file/group.rb +0 -0
- data/lib/puppet/type/file/mode.rb +6 -2
- data/lib/puppet/type/file/owner.rb +0 -0
- data/lib/puppet/type/file/source.rb +65 -14
- data/lib/puppet/type/file/target.rb +6 -6
- data/lib/puppet/type/file/type.rb +0 -0
- data/lib/puppet/type/filebucket.rb +0 -0
- data/lib/puppet/type/group.rb +18 -0
- data/lib/puppet/type/host.rb +0 -0
- data/lib/puppet/type/k5login.rb +4 -4
- data/lib/puppet/type/mailalias.rb +0 -0
- data/lib/puppet/type/maillist.rb +0 -0
- data/lib/puppet/type/mount.rb +15 -1
- data/lib/puppet/type/package.rb +7 -1
- data/lib/puppet/type/port.rb +0 -0
- data/lib/puppet/type/schedule.rb +9 -4
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/sshkey.rb +0 -0
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +3 -0
- data/lib/puppet/type/yumrepo.rb +8 -6
- data/lib/puppet/type/zpool.rb +0 -0
- data/lib/puppet/util.rb +4 -31
- data/lib/puppet/util/adsi.rb +73 -17
- data/lib/puppet/util/autoload.rb +3 -3
- data/lib/puppet/util/backups.rb +4 -4
- data/lib/puppet/util/cacher.rb +7 -13
- data/lib/puppet/util/checksums.rb +2 -2
- data/lib/puppet/util/classgen.rb +3 -1
- data/lib/puppet/util/colors.rb +1 -0
- data/lib/puppet/util/command_line.rb +5 -0
- data/lib/puppet/util/docs.rb +33 -27
- data/lib/puppet/util/execution.rb +42 -18
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/instance_loader.rb +2 -2
- data/lib/puppet/util/instrumentation.rb +23 -42
- data/lib/puppet/util/instrumentation/data.rb +11 -4
- data/lib/puppet/util/instrumentation/indirection_probe.rb +11 -4
- data/lib/puppet/util/instrumentation/instrumentable.rb +7 -14
- data/lib/puppet/util/instrumentation/listener.rb +15 -8
- data/lib/puppet/util/instrumentation/listeners/log.rb +4 -10
- data/lib/puppet/util/instrumentation/listeners/performance.rb +8 -14
- data/lib/puppet/util/limits.rb +12 -0
- data/lib/puppet/util/lockfile.rb +2 -2
- data/lib/puppet/util/log.rb +14 -6
- data/lib/puppet/util/log/destinations.rb +23 -1
- data/lib/puppet/util/metric.rb +9 -3
- data/lib/puppet/util/monkey_patches.rb +7 -2
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/plugins.rb +1 -1
- data/lib/puppet/util/posix.rb +0 -0
- data/lib/puppet/util/profiler.rb +7 -2
- data/lib/puppet/util/provider_features.rb +2 -2
- data/lib/puppet/util/rdoc.rb +28 -30
- data/lib/puppet/util/rdoc/code_objects.rb +75 -25
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +12 -487
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +477 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc1.rb +19 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +1 -1
- data/lib/puppet/util/storage.rb +2 -2
- data/lib/puppet/util/suidmanager.rb +1 -1
- data/lib/puppet/util/tag_set.rb +29 -0
- data/lib/puppet/util/tagging.rb +8 -24
- data/lib/puppet/util/watched_file.rb +1 -1
- data/lib/puppet/util/watcher.rb +1 -1
- data/lib/puppet/util/windows.rb +3 -0
- data/lib/puppet/util/windows/access_control_entry.rb +84 -0
- data/lib/puppet/util/windows/access_control_list.rb +106 -0
- data/lib/puppet/util/windows/file.rb +213 -0
- data/lib/puppet/util/windows/process.rb +199 -0
- data/lib/puppet/util/windows/root_certs.rb +52 -37
- data/lib/puppet/util/windows/security.rb +270 -245
- data/lib/puppet/util/windows/security_descriptor.rb +62 -0
- data/lib/puppet/util/windows/sid.rb +26 -4
- data/lib/puppet/version.rb +2 -2
- data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
- data/spec/fixtures/unit/indirector/{hiera → data_binding/hiera}/global.yaml +0 -0
- data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +1 -0
- data/spec/fixtures/unit/module/trailing-comma.json +24 -0
- data/spec/fixtures/unit/util/monkey_patches/x509.pem +32 -0
- data/spec/integration/application/apply_spec.rb +1 -1
- data/spec/integration/application/doc_spec.rb +1 -1
- data/spec/integration/configurer_spec.rb +4 -2
- data/spec/integration/data_binding.rb +100 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +16 -13
- data/spec/integration/indirector/direct_file_server_spec.rb +3 -5
- data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
- data/spec/integration/node/facts_spec.rb +1 -1
- data/spec/integration/node_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +90 -0
- data/spec/integration/parser/parser_spec.rb +2 -2
- data/spec/integration/provider/cron/crontab_spec.rb +3 -5
- data/spec/integration/resource/catalog_spec.rb +1 -1
- data/spec/integration/ssl/autosign_spec.rb +90 -0
- data/spec/integration/ssl/certificate_authority_spec.rb +62 -69
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
- data/spec/integration/ssl/host_spec.rb +1 -1
- data/spec/integration/transaction_spec.rb +13 -13
- data/spec/integration/type/exec_spec.rb +2 -2
- data/spec/integration/type/file_spec.rb +287 -45
- data/spec/integration/type/tidy_spec.rb +3 -3
- data/spec/integration/util/rdoc/parser_spec.rb +236 -35
- data/spec/integration/util/settings_spec.rb +1 -1
- data/spec/integration/util/windows/process_spec.rb +22 -0
- data/spec/integration/util/windows/security_spec.rb +316 -106
- data/spec/lib/matchers/containment_matchers.rb +52 -0
- data/spec/lib/puppet_spec/compiler.rb +6 -0
- data/spec/lib/puppet_spec/files.rb +20 -21
- data/spec/shared_behaviours/documentation_on_faces.rb +3 -3
- data/spec/shared_behaviours/file_server_terminus.rb +2 -2
- data/spec/shared_contexts/platform.rb +1 -0
- data/spec/spec_helper.rb +13 -1
- data/spec/unit/agent_spec.rb +0 -12
- data/spec/unit/application/agent_spec.rb +4 -4
- data/spec/unit/application/apply_spec.rb +18 -2
- data/spec/unit/application/cert_spec.rb +8 -6
- data/spec/unit/application/device_spec.rb +1 -1
- data/spec/unit/application/filebucket_spec.rb +1 -1
- data/spec/unit/application/inspect_spec.rb +1 -1
- data/spec/unit/application_spec.rb +24 -0
- data/spec/unit/configurer/downloader_spec.rb +8 -7
- data/spec/unit/configurer/fact_handler_spec.rb +23 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +7 -2
- data/spec/unit/configurer_spec.rb +15 -5
- data/spec/unit/{provider/confine → confine}/exists_spec.rb +12 -12
- data/spec/unit/{provider/confine → confine}/false_spec.rb +9 -9
- data/spec/unit/{provider/confine → confine}/feature_spec.rb +10 -10
- data/spec/unit/{provider/confine → confine}/true_spec.rb +7 -7
- data/spec/unit/{provider/confine → confine}/variable_spec.rb +16 -16
- data/spec/unit/{provider/confine_collection_spec.rb → confine_collection_spec.rb} +30 -30
- data/spec/unit/{provider/confine_spec.rb → confine_spec.rb} +11 -11
- data/spec/unit/{provider/confiner_spec.rb → confiner_spec.rb} +4 -4
- data/spec/unit/face/parser_spec.rb +54 -0
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_serving/base_spec.rb +32 -9
- data/spec/unit/file_serving/configuration_spec.rb +7 -7
- data/spec/unit/file_serving/content_spec.rb +12 -7
- data/spec/unit/file_serving/fileset_spec.rb +57 -27
- data/spec/unit/file_serving/metadata_spec.rb +74 -12
- data/spec/unit/file_serving/mount/file_spec.rb +10 -10
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +73 -0
- data/spec/unit/file_system/file_spec.rb +486 -0
- data/spec/unit/file_system/tempfile_spec.rb +48 -0
- data/spec/unit/graph/relationship_graph_spec.rb +0 -6
- data/spec/unit/hiera_puppet_spec.rb +2 -2
- data/spec/unit/indirector/catalog/compiler_spec.rb +15 -19
- data/spec/unit/indirector/certificate_status/file_spec.rb +30 -40
- data/spec/unit/indirector/data_binding/hiera_spec.rb +95 -2
- data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
- data/spec/unit/indirector/facts/facter_spec.rb +33 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +61 -52
- data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
- data/spec/unit/indirector/file_server_spec.rb +4 -4
- data/spec/unit/indirector/json_spec.rb +4 -4
- data/spec/unit/indirector/key/file_spec.rb +13 -14
- data/spec/unit/indirector/resource/ral_spec.rb +7 -0
- data/spec/unit/indirector/resource/store_configs_spec.rb +11 -0
- data/spec/unit/indirector/rest_spec.rb +7 -3
- data/spec/unit/indirector/ssl_file_spec.rb +14 -17
- data/spec/unit/indirector/yaml_spec.rb +4 -4
- data/spec/unit/module_spec.rb +43 -15
- data/spec/unit/module_tool/tar/gnu_spec.rb +2 -2
- data/spec/unit/module_tool/tar/solaris_spec.rb +2 -2
- data/spec/unit/module_tool/tar_spec.rb +45 -0
- data/spec/unit/network/authconfig_spec.rb +2 -1
- data/spec/unit/network/authentication_spec.rb +2 -2
- data/spec/unit/network/format_handler_spec.rb +2 -2
- data/spec/unit/network/formats_spec.rb +24 -0
- data/spec/unit/network/http/connection_spec.rb +76 -199
- data/spec/unit/network/http/handler_spec.rb +33 -34
- data/spec/unit/network/http_pool_spec.rb +8 -5
- data/spec/unit/node/environment_spec.rb +76 -90
- data/spec/unit/node/facts_spec.rb +20 -3
- data/spec/unit/node_spec.rb +43 -0
- data/spec/unit/parameter/boolean_spec.rb +22 -12
- data/spec/unit/parser/ast/resourceparam_spec.rb +51 -0
- data/spec/unit/parser/compiler_spec.rb +103 -35
- data/spec/unit/parser/eparser_adapter_spec.rb +12 -12
- data/spec/unit/parser/files_spec.rb +11 -11
- data/spec/unit/parser/functions/contain_spec.rb +185 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +13 -5
- data/spec/unit/parser/functions/generate_spec.rb +1 -1
- data/spec/unit/parser/functions_spec.rb +2 -2
- data/spec/unit/parser/lexer_spec.rb +1 -1
- data/spec/unit/parser/methods/each_spec.rb +1 -1
- data/spec/unit/parser/methods/{select_spec.rb → filter_spec.rb} +11 -11
- data/spec/unit/parser/methods/map_spec.rb +95 -0
- data/spec/unit/parser/methods/reduce_spec.rb +12 -11
- data/spec/unit/parser/methods/shared.rb +5 -5
- data/spec/unit/parser/methods/slice_spec.rb +13 -13
- data/spec/unit/parser/parser_spec.rb +1 -1
- data/spec/unit/parser/resource/param_spec.rb +44 -0
- data/spec/unit/parser/resource_spec.rb +16 -15
- data/spec/unit/pops/model/ast_transformer_spec.rb +18 -4
- data/spec/unit/pops/parser/lexer_spec.rb +22 -5
- data/spec/unit/pops/parser/parse_calls_spec.rb +5 -5
- data/spec/unit/pops/transformer/transform_calls_spec.rb +6 -6
- data/spec/unit/pops/transformer/transform_containers_spec.rb +2 -2
- data/spec/unit/pops/validator/validator_spec.rb +31 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +57 -2
- data/spec/unit/provider/exec/posix_spec.rb +8 -3
- data/spec/unit/provider/file/posix_spec.rb +2 -2
- data/spec/unit/provider/group/windows_adsi_spec.rb +70 -3
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
- data/spec/unit/provider/package/apt_spec.rb +1 -1
- data/spec/unit/provider/package/msi_spec.rb +15 -42
- data/spec/unit/provider/package/openbsd_spec.rb +3 -3
- data/spec/unit/provider/package/rpm_spec.rb +56 -13
- data/spec/unit/provider/package/windows_spec.rb +15 -19
- data/spec/unit/provider/service/base_spec.rb +1 -1
- data/spec/unit/provider/service/daemontools_spec.rb +18 -8
- data/spec/unit/provider/service/freebsd_spec.rb +3 -3
- data/spec/unit/provider/service/gentoo_spec.rb +5 -2
- data/spec/unit/provider/service/init_spec.rb +17 -17
- data/spec/unit/provider/service/launchd_spec.rb +76 -23
- data/spec/unit/provider/service/openbsd_spec.rb +125 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +12 -5
- data/spec/unit/provider/service/upstart_spec.rb +4 -4
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +5 -5
- data/spec/unit/provider/user/directoryservice_spec.rb +4 -4
- data/spec/unit/provider/zone/solaris_spec.rb +1 -1
- data/spec/unit/provider_spec.rb +2 -2
- data/spec/unit/reports/http_spec.rb +19 -34
- data/spec/unit/reports/store_spec.rb +2 -2
- data/spec/unit/resource/catalog_spec.rb +81 -11
- data/spec/unit/resource/status_spec.rb +11 -1
- data/spec/unit/resource/type_spec.rb +30 -1
- data/spec/unit/resource_spec.rb +40 -4
- data/spec/unit/settings/file_setting_spec.rb +2 -2
- data/spec/unit/settings/path_setting_spec.rb +2 -2
- data/spec/unit/settings/priority_setting_spec.rb +66 -0
- data/spec/unit/settings_spec.rb +16 -31
- data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +30 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +129 -134
- data/spec/unit/ssl/certificate_factory_spec.rb +18 -0
- data/spec/unit/ssl/certificate_request_attributes_spec.rb +61 -0
- data/spec/unit/ssl/certificate_request_spec.rb +103 -0
- data/spec/unit/ssl/certificate_spec.rb +31 -18
- data/spec/unit/ssl/host_spec.rb +34 -8
- data/spec/unit/ssl/inventory_spec.rb +27 -62
- data/spec/unit/ssl/key_spec.rb +4 -4
- data/spec/unit/ssl/oids_spec.rb +48 -0
- data/spec/unit/ssl/validator_spec.rb +49 -6
- data/spec/unit/status_spec.rb +9 -0
- data/spec/unit/transaction/event_spec.rb +1 -9
- data/spec/unit/transaction/report_spec.rb +20 -1
- data/spec/unit/transaction/resource_harness_spec.rb +60 -210
- data/spec/unit/transaction_spec.rb +54 -8
- data/spec/unit/type/component_spec.rb +2 -2
- data/spec/unit/type/exec_spec.rb +14 -7
- data/spec/unit/type/file/content_spec.rb +13 -2
- data/spec/unit/type/file/ctime_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +48 -2
- data/spec/unit/type/file/mtime_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +177 -7
- data/spec/unit/type/file_spec.rb +63 -71
- data/spec/unit/type/group_spec.rb +20 -0
- data/spec/unit/type/k5login_spec.rb +3 -3
- data/spec/unit/type/mount_spec.rb +53 -0
- data/spec/unit/type/nagios_spec.rb +216 -0
- data/spec/unit/type/package_spec.rb +7 -1
- data/spec/unit/type/schedule_spec.rb +6 -0
- data/spec/unit/type/service_spec.rb +3 -3
- data/spec/unit/type/tidy_spec.rb +14 -14
- data/spec/unit/type/user_spec.rb +9 -0
- data/spec/unit/type_spec.rb +86 -4
- data/spec/unit/util/adsi_spec.rb +120 -12
- data/spec/unit/util/autoload_spec.rb +14 -14
- data/spec/unit/util/backups_spec.rb +29 -21
- data/spec/unit/util/checksums_spec.rb +2 -1
- data/spec/unit/util/command_line_spec.rb +41 -0
- data/spec/unit/util/docs_spec.rb +91 -0
- data/spec/unit/util/execution_spec.rb +26 -2
- data/spec/unit/util/filetype_spec.rb +7 -7
- data/spec/unit/util/lockfile_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +32 -0
- data/spec/unit/util/monkey_patches_spec.rb +41 -0
- data/spec/unit/util/pidlock_spec.rb +6 -6
- data/spec/unit/util/rdoc/parser_spec.rb +15 -13
- data/spec/unit/util/rdoc_spec.rb +18 -24
- data/spec/unit/util/resource_template_spec.rb +3 -3
- data/spec/unit/util/selinux_spec.rb +4 -2
- data/spec/unit/util/storage_spec.rb +4 -4
- data/spec/unit/util/suidmanager_spec.rb +7 -0
- data/spec/unit/util/tag_set_spec.rb +46 -0
- data/spec/unit/util/tagging_spec.rb +82 -45
- data/spec/unit/util/watcher_spec.rb +4 -1
- data/spec/unit/util/windows/access_control_entry_spec.rb +67 -0
- data/spec/unit/util/windows/access_control_list_spec.rb +133 -0
- data/spec/unit/util/windows/root_certs_spec.rb +10 -8
- data/spec/unit/util/windows/security_descriptor_spec.rb +117 -0
- data/spec/unit/util/windows/sid_spec.rb +69 -0
- data/spec/unit/util_spec.rb +7 -7
- data/tasks/ci.rake +17 -36
- metadata +2811 -2746
- checksums.yaml +0 -7
- data/examples/mac_automount.pp +0 -16
- data/examples/mcx_dock_absent.pp +0 -4
- data/examples/mcx_dock_default.pp +0 -118
- data/examples/mcx_dock_full.pp +0 -125
- data/examples/mcx_dock_invalid.pp +0 -9
- data/examples/mcx_nogroup.pp +0 -118
- data/examples/mcx_notexists_absent.pp +0 -4
- data/ext/rack/README +0 -58
- data/ext/rack/manifest.pp +0 -59
- data/lib/puppet/external/lock.rb +0 -63
- data/lib/puppet/indirector/hiera.rb +0 -39
- data/lib/puppet/parser/functions/foreach.rb +0 -95
- data/spec/integration/network/server/webrick_spec.rb +0 -76
- data/spec/integration/parser/functions_spec.rb +0 -16
- data/spec/unit/indirector/hiera_spec.rb +0 -154
- data/spec/unit/parser/methods/collect_spec.rb +0 -153
- data/spec/unit/parser/methods/foreach_spec.rb +0 -91
- data/spec/unit/parser/methods/reject_spec.rb +0 -73
- data/spec/unit/resource/resource_type.json +0 -34
@@ -148,8 +148,8 @@ class Puppet::Pops::Parser::Lexer
|
|
148
148
|
TOKENS.add_tokens(
|
149
149
|
'[' => :LBRACK,
|
150
150
|
']' => :RBRACK,
|
151
|
-
# '{' => :LBRACE, # Specialized to handle lambda
|
152
|
-
'}' => :RBRACE,
|
151
|
+
# '{' => :LBRACE, # Specialized to handle lambda and brace count
|
152
|
+
# '}' => :RBRACE, # Specialized to handle brace count
|
153
153
|
'(' => :LPAREN,
|
154
154
|
')' => :RPAREN,
|
155
155
|
'=' => :EQUALS,
|
@@ -194,7 +194,6 @@ class Puppet::Pops::Parser::Lexer
|
|
194
194
|
"<dqstring between two interpolations>" => :DQMID,
|
195
195
|
"<dqstring after final interpolation>" => :DQPOST,
|
196
196
|
"<boolean>" => :BOOLEAN,
|
197
|
-
"<lambda start>" => :LAMBDA, # A LBRACE followed by '|'
|
198
197
|
"<select start>" => :SELBRACE # A QMARK followed by '{'
|
199
198
|
)
|
200
199
|
|
@@ -214,10 +213,6 @@ class Puppet::Pops::Parser::Lexer
|
|
214
213
|
REGEX_INTRODUCING_TOKENS.include? context[:after]
|
215
214
|
end
|
216
215
|
|
217
|
-
IN_STRING_INTERPOLATION = Proc.new do |context|
|
218
|
-
context[:string_interpolation_depth] > 0
|
219
|
-
end
|
220
|
-
|
221
216
|
DASHED_VARIABLES_ALLOWED = Proc.new do |context|
|
222
217
|
Puppet[:allow_variables_with_dashes]
|
223
218
|
end
|
@@ -227,20 +222,6 @@ class Puppet::Pops::Parser::Lexer
|
|
227
222
|
end
|
228
223
|
end
|
229
224
|
|
230
|
-
# LBRACE needs look ahead to differentiate between '{' and a '{'
|
231
|
-
# followed by a '|' (start of lambda) The racc grammar can only do one
|
232
|
-
# token lookahead.
|
233
|
-
#
|
234
|
-
TOKENS.add_token :LBRACE, /\{/ do | lexer, value |
|
235
|
-
if lexer.match?(/[ \t\r]*\|/)
|
236
|
-
[TOKENS[:LAMBDA], value]
|
237
|
-
elsif lexer.lexing_context[:after] == :QMARK
|
238
|
-
[TOKENS[:SELBRACE], value]
|
239
|
-
else
|
240
|
-
[TOKENS[:LBRACE], value]
|
241
|
-
end
|
242
|
-
end
|
243
|
-
|
244
225
|
# Numbers are treated separately from names, so that they may contain dots.
|
245
226
|
TOKENS.add_token :NUMBER, %r{\b(?:0[xX][0-9A-Fa-f]+|0?\d+(?:\.\d+)?(?:[eE]-?\d+)?)\b} do |lexer, value|
|
246
227
|
lexer.assert_numeric(value)
|
@@ -305,10 +286,31 @@ class Puppet::Pops::Parser::Lexer
|
|
305
286
|
lexer.tokenize_interpolated_string(DQ_initial_token_types)
|
306
287
|
end
|
307
288
|
|
308
|
-
|
309
|
-
|
289
|
+
|
290
|
+
# LBRACE needs look ahead to differentiate between '{' and a '{'
|
291
|
+
# followed by a '|' (start of lambda) The racc grammar can only do one
|
292
|
+
# token lookahead.
|
293
|
+
#
|
294
|
+
TOKENS.add_token :LBRACE, "{" do |lexer, value|
|
295
|
+
lexer.lexing_context[:brace_count] += 1
|
296
|
+
if lexer.lexing_context[:after] == :QMARK
|
297
|
+
[TOKENS[:SELBRACE], value]
|
298
|
+
else
|
299
|
+
[TOKENS[:LBRACE], value]
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
303
|
+
# RBRACE needs to differentiate between a regular brace that is part of
|
304
|
+
# syntax and one that is the ending of a string interpolation.
|
305
|
+
TOKENS.add_token :RBRACE, "}" do |lexer, value|
|
306
|
+
context = lexer.lexing_context
|
307
|
+
if context[:interpolation_stack].empty? || context[:brace_count] != context[:interpolation_stack][-1]
|
308
|
+
context[:brace_count] -= 1
|
309
|
+
[TOKENS[:RBRACE], value]
|
310
|
+
else
|
311
|
+
lexer.tokenize_interpolated_string(DQ_continuation_token_types)
|
312
|
+
end
|
310
313
|
end
|
311
|
-
TOKENS[:DQCONT].acceptable_when Contextual::IN_STRING_INTERPOLATION
|
312
314
|
|
313
315
|
TOKENS.add_token :DOLLAR_VAR_WITH_DASH, %r{\$(?:::)?(?:[-\w]+::)*[-\w]+} do |lexer, value|
|
314
316
|
lexer.warn_if_variable_has_hyphen(value)
|
@@ -339,9 +341,21 @@ class Puppet::Pops::Parser::Lexer
|
|
339
341
|
# reference.
|
340
342
|
#
|
341
343
|
if lexer.match?(%r{[ \t\r]*\(})
|
342
|
-
|
344
|
+
# followed by ( is a function call
|
345
|
+
[TOKENS[:NAME], value]
|
346
|
+
|
347
|
+
elsif kwd_token = KEYWORDS.lookup(value)
|
348
|
+
# true, false, if, unless, case, and undef are keywords that cannot be used as variables
|
349
|
+
# but node, and several others are variables
|
350
|
+
if [ :TRUE, :FALSE ].include?(kwd_token.name)
|
351
|
+
[ TOKENS[:BOOLEAN], eval(value) ]
|
352
|
+
elsif [ :IF, :UNLESS, :CASE, :UNDEF ].include?(kwd_token.name)
|
353
|
+
[kwd_token, value]
|
354
|
+
else
|
355
|
+
[TOKENS[:VARIABLE], value]
|
356
|
+
end
|
343
357
|
else
|
344
|
-
[TOKENS[:VARIABLE],value]
|
358
|
+
[TOKENS[:VARIABLE], value]
|
345
359
|
end
|
346
360
|
|
347
361
|
end
|
@@ -404,7 +418,7 @@ class Puppet::Pops::Parser::Lexer
|
|
404
418
|
|
405
419
|
def file=(file)
|
406
420
|
@file = file
|
407
|
-
contents = File.
|
421
|
+
contents = Puppet::FileSystem::File.exist?(file) ? File.read(file) : ""
|
408
422
|
@scanner = StringScanner.new(contents)
|
409
423
|
@locator = Locator.new(contents, multibyte?)
|
410
424
|
end
|
@@ -501,7 +515,8 @@ class Puppet::Pops::Parser::Lexer
|
|
501
515
|
:start_of_line => true,
|
502
516
|
:offset => 0, # byte offset before where token starts
|
503
517
|
:end_offset => 0, # byte offset after scanned token
|
504
|
-
:
|
518
|
+
:brace_count => 0, # nested depth of braces
|
519
|
+
:interpolation_stack => [] # matching interpolation brace level
|
505
520
|
}
|
506
521
|
end
|
507
522
|
|
@@ -592,8 +607,11 @@ class Puppet::Pops::Parser::Lexer
|
|
592
607
|
end
|
593
608
|
|
594
609
|
lexing_context[:after] = final_token.name unless newline
|
595
|
-
|
596
|
-
|
610
|
+
if final_token.name == :DQPRE
|
611
|
+
lexing_context[:interpolation_stack] << lexing_context[:brace_count]
|
612
|
+
elsif final_token.name == :DQPOST
|
613
|
+
lexing_context[:interpolation_stack].pop
|
614
|
+
end
|
597
615
|
|
598
616
|
value = token_value[:value]
|
599
617
|
|
data/lib/puppet/pops/patterns.rb
CHANGED
@@ -18,18 +18,18 @@ module Puppet::Pops::Patterns
|
|
18
18
|
|
19
19
|
# NAME matches a name the same way as the lexer.
|
20
20
|
# This name includes hyphen, which may be illegal in variables, and names in general.
|
21
|
-
NAME = %r{((::)?[a-z0-9]
|
21
|
+
NAME = %r{\A((::)?[a-z0-9]\w*)(::[a-z0-9]\w*)*\z}
|
22
22
|
|
23
23
|
# CLASSREF_EXT matches a class reference the same way as the lexer - i.e. the external source form
|
24
24
|
# where each part must start with a capital letter A-Z.
|
25
25
|
# This name includes hyphen, which may be illegal in some cases.
|
26
26
|
#
|
27
|
-
CLASSREF_EXT = %r{((::){0,1}[A-Z][-\w]*)
|
27
|
+
CLASSREF_EXT = %r{\A((::){0,1}[A-Z][-\w]*)+\z}
|
28
28
|
|
29
|
-
# CLASSREF matches a class reference the way it is represented
|
29
|
+
# CLASSREF matches a class reference the way it is represented internally in the
|
30
30
|
# model (i.e. in lower case).
|
31
31
|
# This name includes hyphen, which may be illegal in some cases.
|
32
32
|
#
|
33
|
-
CLASSREF = %r{((::){0,1}[a-z][-\w]*)
|
33
|
+
CLASSREF = %r{\A((::){0,1}[a-z][-\w]*)+\z}
|
34
34
|
|
35
35
|
end
|
data/lib/puppet/pops/utils.rb
CHANGED
@@ -20,7 +20,7 @@ class Puppet::Pops::Validation::Checker3_1
|
|
20
20
|
def initialize(diagnostics_producer)
|
21
21
|
@@check_visitor ||= Puppet::Pops::Visitor.new(nil, "check", 0, 0)
|
22
22
|
@@rvalue_visitor ||= Puppet::Pops::Visitor.new(nil, "rvalue", 0, 0)
|
23
|
-
@@hostname_visitor ||= Puppet::Pops::Visitor.new(nil, "hostname", 1,
|
23
|
+
@@hostname_visitor ||= Puppet::Pops::Visitor.new(nil, "hostname", 1, 2)
|
24
24
|
@@assignment_visitor ||= Puppet::Pops::Visitor.new(nil, "assign", 0, 1)
|
25
25
|
@@query_visitor ||= Puppet::Pops::Visitor.new(nil, "query", 0, 0)
|
26
26
|
@@top_visitor ||= Puppet::Pops::Visitor.new(nil, "top", 1, 1)
|
@@ -45,8 +45,9 @@ class Puppet::Pops::Validation::Checker3_1
|
|
45
45
|
end
|
46
46
|
|
47
47
|
# Performs check if this is a vaid hostname expression
|
48
|
-
|
49
|
-
|
48
|
+
# @param single_feature_name [String, nil] the name of a single valued hostname feature of the value's container. e.g. 'parent'
|
49
|
+
def hostname(o, semantic, single_feature_name = nil)
|
50
|
+
@@hostname_visitor.visit_this(self, o, semantic, single_feature_name)
|
50
51
|
end
|
51
52
|
|
52
53
|
# Performs check if this is valid as a query
|
@@ -125,7 +126,7 @@ class Puppet::Pops::Validation::Checker3_1
|
|
125
126
|
case o.left_expr
|
126
127
|
when Model::QualifiedName
|
127
128
|
# allows many keys, but the name should really be a QualifiedReference
|
128
|
-
acceptor.accept(Issues::DEPRECATED_NAME_AS_TYPE, o, :name => o.value)
|
129
|
+
acceptor.accept(Issues::DEPRECATED_NAME_AS_TYPE, o, :name => o.left_expr.value)
|
129
130
|
when Model::QualifiedReference
|
130
131
|
# ok, allows many - this is a resource reference
|
131
132
|
|
@@ -255,6 +256,7 @@ class Puppet::Pops::Validation::Checker3_1
|
|
255
256
|
def check_NodeDefinition(o)
|
256
257
|
# Check that hostnames are valid hostnames (or regular expressons)
|
257
258
|
hostname(o.host_matches, o)
|
259
|
+
hostname(o.parent, o, 'parent') unless o.parent.nil?
|
258
260
|
top(o.eContainer, o)
|
259
261
|
end
|
260
262
|
|
@@ -385,11 +387,14 @@ class Puppet::Pops::Validation::Checker3_1
|
|
385
387
|
#--- HOSTNAME CHECKS
|
386
388
|
|
387
389
|
# Transforms Array of host matching expressions into a (Ruby) array of AST::HostName
|
388
|
-
def hostname_Array(o, semantic)
|
389
|
-
|
390
|
+
def hostname_Array(o, semantic, single_feature_name)
|
391
|
+
if single_feature_name
|
392
|
+
acceptor.accept(Issues::ILLEGAL_EXPRESSION, o, {:feature=>single_feature_name, :container=>semantic})
|
393
|
+
end
|
394
|
+
o.each {|x| hostname(x, semantic, false) }
|
390
395
|
end
|
391
396
|
|
392
|
-
def hostname_String(o, semantic)
|
397
|
+
def hostname_String(o, semantic, single_feature_name)
|
393
398
|
# The 3.x checker only checks for illegal characters - if matching /[^-\w.]/ the name is invalid,
|
394
399
|
# but this allows pathological names like "a..b......c", "----"
|
395
400
|
# TODO: Investigate if more illegal hostnames should be flagged.
|
@@ -399,11 +404,11 @@ class Puppet::Pops::Validation::Checker3_1
|
|
399
404
|
end
|
400
405
|
end
|
401
406
|
|
402
|
-
def hostname_LiteralValue(o, semantic)
|
403
|
-
hostname_String(o.value.to_s, o)
|
407
|
+
def hostname_LiteralValue(o, semantic, single_feature_name)
|
408
|
+
hostname_String(o.value.to_s, o, single_feature_name)
|
404
409
|
end
|
405
410
|
|
406
|
-
def hostname_ConcatenatedString(o, semantic)
|
411
|
+
def hostname_ConcatenatedString(o, semantic, single_feature_name)
|
407
412
|
# Puppet 3.1. only accepts a concatenated string without interpolated expressions
|
408
413
|
if the_expr = o.segments.index {|s| s.is_a?(Model::TextExpression) }
|
409
414
|
acceptor.accept(Issues::ILLEGAL_HOSTNAME_INTERPOLATION, o.segments[the_expr].expr)
|
@@ -413,32 +418,32 @@ class Puppet::Pops::Validation::Checker3_1
|
|
413
418
|
else
|
414
419
|
# corner case, may be ok, but lexer may have replaced with plain string, this is
|
415
420
|
# here if it does not
|
416
|
-
hostname_String(o.segments[0], o.segments[0])
|
421
|
+
hostname_String(o.segments[0], o.segments[0], false)
|
417
422
|
end
|
418
423
|
end
|
419
424
|
|
420
|
-
def hostname_QualifiedName(o, semantic)
|
421
|
-
hostname_String(o.value.to_s, o)
|
425
|
+
def hostname_QualifiedName(o, semantic, single_feature_name)
|
426
|
+
hostname_String(o.value.to_s, o, single_feature_name)
|
422
427
|
end
|
423
428
|
|
424
|
-
def hostname_QualifiedReference(o, semantic)
|
425
|
-
hostname_String(o.value.to_s, o)
|
429
|
+
def hostname_QualifiedReference(o, semantic, single_feature_name)
|
430
|
+
hostname_String(o.value.to_s, o, single_feature_name)
|
426
431
|
end
|
427
432
|
|
428
|
-
def hostname_LiteralNumber(o, semantic)
|
433
|
+
def hostname_LiteralNumber(o, semantic, single_feature_name)
|
429
434
|
# always ok
|
430
435
|
end
|
431
436
|
|
432
|
-
def hostname_LiteralDefault(o, semantic)
|
437
|
+
def hostname_LiteralDefault(o, semantic, single_feature_name)
|
433
438
|
# always ok
|
434
439
|
end
|
435
440
|
|
436
|
-
def hostname_LiteralRegularExpression(o, semantic)
|
441
|
+
def hostname_LiteralRegularExpression(o, semantic, single_feature_name)
|
437
442
|
# always ok
|
438
443
|
end
|
439
444
|
|
440
|
-
def hostname_Object(o, semantic)
|
441
|
-
acceptor.accept(Issues::ILLEGAL_EXPRESSION, o, {:feature=>'hostname', :container=>semantic})
|
445
|
+
def hostname_Object(o, semantic, single_feature_name)
|
446
|
+
acceptor.accept(Issues::ILLEGAL_EXPRESSION, o, {:feature=> single_feature_name || 'hostname', :container=>semantic})
|
442
447
|
end
|
443
448
|
|
444
449
|
#---QUERY CHECKS
|
data/lib/puppet/provider.rb
CHANGED
@@ -40,10 +40,10 @@ class Puppet::Provider
|
|
40
40
|
include Puppet::Util::Warnings
|
41
41
|
extend Puppet::Util::Warnings
|
42
42
|
|
43
|
-
require 'puppet/
|
43
|
+
require 'puppet/confiner'
|
44
44
|
require 'puppet/provider/command'
|
45
45
|
|
46
|
-
extend Puppet::
|
46
|
+
extend Puppet::Confiner
|
47
47
|
|
48
48
|
Puppet::Util.logmethods(self, true)
|
49
49
|
|
@@ -148,6 +148,7 @@ class Puppet::Provider
|
|
148
148
|
# @raise [Puppet::DevError] if the name does not reference an existing command.
|
149
149
|
# @return [String] the absolute path to the found executable for the command
|
150
150
|
# @see which
|
151
|
+
# @api public
|
151
152
|
def self.command(name)
|
152
153
|
name = name.intern
|
153
154
|
|
@@ -163,7 +164,7 @@ class Puppet::Provider
|
|
163
164
|
end
|
164
165
|
|
165
166
|
# Confines this provider to be suitable only on hosts where the given commands are present.
|
166
|
-
# Also see {Puppet::
|
167
|
+
# Also see {Puppet::Confiner#confine} for other types of confinement of a provider by use of other types of
|
167
168
|
# predicates.
|
168
169
|
#
|
169
170
|
# @note It is preferred if the commands are not entered with absolute paths as this allows puppet
|
@@ -173,6 +174,7 @@ class Puppet::Provider
|
|
173
174
|
# be executing on the system. Each command is specified with a name and the path of the executable.
|
174
175
|
# @return [void]
|
175
176
|
# @see optional_commands
|
177
|
+
# @api public
|
176
178
|
#
|
177
179
|
def self.commands(command_specs)
|
178
180
|
command_specs.each do |name, path|
|
@@ -189,6 +191,7 @@ class Puppet::Provider
|
|
189
191
|
# be executing on the system. Each command is specified with a name and the path of the executable.
|
190
192
|
# (@see #has_command)
|
191
193
|
# @see commands
|
194
|
+
# @api public
|
192
195
|
def self.optional_commands(hash)
|
193
196
|
hash.each do |name, target|
|
194
197
|
has_command(name, target) do
|
@@ -221,6 +224,7 @@ class Puppet::Provider
|
|
221
224
|
# @comment a yield [ ] produces {|| ...} in the signature, do not remove the space.
|
222
225
|
# @note the name ´has_command´ looks odd in an API context, but makes more sense when seen in the internal
|
223
226
|
# DSL context where a Provider is declaratively defined.
|
227
|
+
# @api public
|
224
228
|
#
|
225
229
|
def self.has_command(name, path, &block)
|
226
230
|
name = name.intern
|
@@ -485,7 +489,7 @@ class Puppet::Provider
|
|
485
489
|
if @defaults.length > 0
|
486
490
|
return "Default for " + @defaults.collect do |f, v|
|
487
491
|
"`#{f}` == `#{[v].flatten.join(', ')}`"
|
488
|
-
end.join(" and ") + "."
|
492
|
+
end.sort.join(" and ") + "."
|
489
493
|
end
|
490
494
|
end
|
491
495
|
|
@@ -493,7 +497,7 @@ class Puppet::Provider
|
|
493
497
|
if @commands.length > 0
|
494
498
|
return "Required binaries: " + @commands.collect do |n, c|
|
495
499
|
"`#{c}`"
|
496
|
-
end.join(", ") + "."
|
500
|
+
end.sort.join(", ") + "."
|
497
501
|
end
|
498
502
|
end
|
499
503
|
|
@@ -501,7 +505,7 @@ class Puppet::Provider
|
|
501
505
|
if features.length > 0
|
502
506
|
return "Supported features: " + features.collect do |f|
|
503
507
|
"`#{f}`"
|
504
|
-
end.join(", ") + "."
|
508
|
+
end.sort.join(", ") + "."
|
505
509
|
end
|
506
510
|
end
|
507
511
|
|
@@ -602,6 +606,18 @@ class Puppet::Provider
|
|
602
606
|
# fetched state (i.e. what is returned from the {instances} method).
|
603
607
|
# @param resources_hash [Hash<{String => Puppet::Resource}>] map from name to resource of resources to prefetch
|
604
608
|
# @return [void]
|
609
|
+
# @api public
|
610
|
+
|
611
|
+
# @comment Document post_resource_eval here as it does not exist anywhere else (called from transaction if implemented)
|
612
|
+
# @!method self.post_resource_eval()
|
613
|
+
# @since 3.4.0
|
614
|
+
# @api public
|
615
|
+
# @abstract A subclass may implement this - it is not implemented in the Provider class
|
616
|
+
# This method may be implemented by a provider in order to perform any
|
617
|
+
# cleanup actions needed. It will be called at the end of the transaction if
|
618
|
+
# any resources in the catalog make use of the provider, regardless of
|
619
|
+
# whether the resources are changed or not and even if resource failures occur.
|
620
|
+
# @return [void]
|
605
621
|
|
606
622
|
# @comment Document flush here as it does not exist anywhere (called from transaction if implemented)
|
607
623
|
# @!method flush()
|
@@ -609,5 +625,6 @@ class Puppet::Provider
|
|
609
625
|
# This method may be implemented by a provider in order to flush properties that has not been individually
|
610
626
|
# applied to the managed entity's current state.
|
611
627
|
# @return [void]
|
628
|
+
# @api public
|
612
629
|
end
|
613
630
|
|
File without changes
|
@@ -125,7 +125,7 @@ Puppet::Type.type(:augeas).provide(:augeas) do
|
|
125
125
|
end
|
126
126
|
fail("missing string argument #{narg} for #{cmd}") unless argline[-1]
|
127
127
|
elsif f == :comparator
|
128
|
-
argline << sc.scan(/(
|
128
|
+
argline << sc.scan(/(==|!=|=~|<=|>=|<|>)/)
|
129
129
|
unless argline[-1]
|
130
130
|
puts sc.rest
|
131
131
|
fail("invalid comparator for command #{cmd}")
|
@@ -198,6 +198,17 @@ Puppet::Type.type(:augeas).provide(:augeas) do
|
|
198
198
|
end
|
199
199
|
end
|
200
200
|
|
201
|
+
def is_numeric?(s)
|
202
|
+
case s
|
203
|
+
when Fixnum
|
204
|
+
true
|
205
|
+
when String
|
206
|
+
s.match(/\A[+-]?\d+?(\.\d+)?\Z/n) == nil ? false : true
|
207
|
+
else
|
208
|
+
false
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
201
212
|
# Used by the need_to_run? method to process get filters. Returns
|
202
213
|
# true if there is a match, false if otherwise
|
203
214
|
# Assumes a syntax of get /files/path [COMPARATOR] value
|
@@ -213,10 +224,15 @@ Puppet::Type.type(:augeas).provide(:augeas) do
|
|
213
224
|
|
214
225
|
#check the value in augeas
|
215
226
|
result = @aug.get(path) || ''
|
216
|
-
|
217
|
-
|
227
|
+
|
228
|
+
if ['<', '<=', '>=', '>'].include? comparator and is_numeric?(result) and
|
229
|
+
is_numeric?(arg)
|
230
|
+
resultf = result.to_f
|
231
|
+
argf = arg.to_f
|
232
|
+
return_value = (resultf.send(comparator, argf))
|
233
|
+
elsif comparator == "!="
|
218
234
|
return_value = (result != arg)
|
219
|
-
|
235
|
+
elsif comparator == "=~"
|
220
236
|
regex = Regexp.new(arg)
|
221
237
|
return_value = (result =~ regex)
|
222
238
|
else
|
@@ -292,7 +308,7 @@ Puppet::Type.type(:augeas).provide(:augeas) do
|
|
292
308
|
load_path.flatten!
|
293
309
|
end
|
294
310
|
|
295
|
-
if File.
|
311
|
+
if Puppet::FileSystem::File.exist?("#{Puppet[:libdir]}/augeas/lenses")
|
296
312
|
load_path << "#{Puppet[:libdir]}/augeas/lenses"
|
297
313
|
end
|
298
314
|
|