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
@@ -10,20 +10,18 @@ end
|
|
10
10
|
# Puppet::Node::Environment acts as a container for all configuration
|
11
11
|
# that is expected to vary between environments.
|
12
12
|
#
|
13
|
-
# ##
|
13
|
+
# ## Global variables
|
14
14
|
#
|
15
|
-
# The Puppet::Node::Environment uses a number of
|
16
|
-
# Since all web servers that Puppet runs on are single threaded these
|
17
|
-
# variables are effectively global.
|
15
|
+
# The Puppet::Node::Environment uses a number of global variables.
|
18
16
|
#
|
19
|
-
# ###
|
17
|
+
# ### `$environment`
|
20
18
|
#
|
21
|
-
# The 'environment'
|
19
|
+
# The 'environment' global variable represents the current environment that's
|
22
20
|
# being used in the compiler.
|
23
21
|
#
|
24
|
-
# ###
|
22
|
+
# ### `$known_resource_types`
|
25
23
|
#
|
26
|
-
# The 'known_resource_types'
|
24
|
+
# The 'known_resource_types' global variable represents a singleton instance
|
27
25
|
# of the Puppet::Resource::TypeCollection class. The variable is discarded
|
28
26
|
# and regenerated if it is accessed by an environment that doesn't match the
|
29
27
|
# environment of the 'known_resource_types'
|
@@ -129,7 +127,7 @@ class Puppet::Node::Environment
|
|
129
127
|
# @return [Puppet::Node::Environment] the currently set environment if one
|
130
128
|
# has been explicitly set, else it will return the '*root*' environment
|
131
129
|
def self.current
|
132
|
-
|
130
|
+
$environment || root
|
133
131
|
end
|
134
132
|
|
135
133
|
# Set the environment for the current thread
|
@@ -145,7 +143,7 @@ class Puppet::Node::Environment
|
|
145
143
|
#
|
146
144
|
# @param env [Puppet::Node::Environment]
|
147
145
|
def self.current=(env)
|
148
|
-
|
146
|
+
$environment = new(env)
|
149
147
|
end
|
150
148
|
|
151
149
|
|
@@ -164,7 +162,7 @@ class Puppet::Node::Environment
|
|
164
162
|
# @api private
|
165
163
|
def self.clear
|
166
164
|
@seen.clear
|
167
|
-
|
165
|
+
$environment = nil
|
168
166
|
end
|
169
167
|
|
170
168
|
# @!attribute [r] name
|
@@ -192,17 +190,16 @@ class Puppet::Node::Environment
|
|
192
190
|
# @param name [Symbol] The environment name
|
193
191
|
def initialize(name)
|
194
192
|
@name = name
|
195
|
-
extend MonitorMixin
|
196
193
|
end
|
197
194
|
|
198
195
|
# The current global TypeCollection
|
199
196
|
#
|
200
197
|
# @note The environment is loosely coupled with the {Puppet::Resource::TypeCollection}
|
201
198
|
# class. While there is a 1:1 relationship between an environment and a
|
202
|
-
# TypeCollection instance, there is only one TypeCollection instance
|
203
|
-
# at any given time. It is stored in
|
204
|
-
#
|
205
|
-
#
|
199
|
+
# TypeCollection instance, there is only one TypeCollection instance
|
200
|
+
# available at any given time. It is stored in `$known_resource_types`.
|
201
|
+
# `$known_resource_types` is accessed as an instance method, but is global
|
202
|
+
# to all environment variables.
|
206
203
|
#
|
207
204
|
# @api public
|
208
205
|
# @return [Puppet::Resource::TypeCollection] The current global TypeCollection
|
@@ -212,14 +209,15 @@ class Puppet::Node::Environment
|
|
212
209
|
# always just return our thread's known-resource types. Only at the start
|
213
210
|
# of a compilation (after our thread var has been set to nil) or when the
|
214
211
|
# environment has changed do we delve deeper.
|
215
|
-
|
216
|
-
|
212
|
+
$known_resource_types = nil if $known_resource_types && $known_resource_types.environment != self
|
213
|
+
$known_resource_types ||=
|
217
214
|
if @known_resource_types.nil? or @known_resource_types.require_reparse?
|
218
215
|
@known_resource_types = Puppet::Resource::TypeCollection.new(self)
|
219
216
|
@known_resource_types.import_ast(perform_initial_import, '')
|
217
|
+
@known_resource_types
|
218
|
+
else
|
219
|
+
@known_resource_types
|
220
220
|
end
|
221
|
-
@known_resource_types
|
222
|
-
}
|
223
221
|
end
|
224
222
|
|
225
223
|
# Yields each modules' plugin directory if the plugin directory (modulename/lib)
|
data/lib/puppet/node/facts.rb
CHANGED
@@ -84,16 +84,33 @@ class Puppet::Node::Facts
|
|
84
84
|
new_facts
|
85
85
|
end
|
86
86
|
|
87
|
-
def
|
87
|
+
def to_data_hash
|
88
88
|
result = {
|
89
89
|
'name' => name,
|
90
90
|
'values' => strip_internal,
|
91
91
|
}
|
92
92
|
|
93
|
-
|
94
|
-
|
93
|
+
if timestamp
|
94
|
+
if timestamp.is_a? Time
|
95
|
+
result['timestamp'] = timestamp.iso8601(9)
|
96
|
+
else
|
97
|
+
result['timestamp'] = timestamp
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
if expiration
|
102
|
+
if expiration.is_a? Time
|
103
|
+
result['expiration'] = expiration.iso8601(9)
|
104
|
+
else
|
105
|
+
result['expiration'] = expiration
|
106
|
+
end
|
107
|
+
end
|
95
108
|
|
96
|
-
result
|
109
|
+
result
|
110
|
+
end
|
111
|
+
|
112
|
+
def to_pson(*args)
|
113
|
+
to_data_hash.to_pson(*args)
|
97
114
|
end
|
98
115
|
|
99
116
|
# Add internal data to the facts for storage.
|
@@ -109,8 +126,6 @@ class Puppet::Node::Facts
|
|
109
126
|
self.values['_timestamp']
|
110
127
|
end
|
111
128
|
|
112
|
-
private
|
113
|
-
|
114
129
|
# Strip out that internal data.
|
115
130
|
def strip_internal
|
116
131
|
newvals = values.dup
|
@@ -118,6 +133,8 @@ class Puppet::Node::Facts
|
|
118
133
|
newvals
|
119
134
|
end
|
120
135
|
|
136
|
+
private
|
137
|
+
|
121
138
|
def sanitize_fact(fact)
|
122
139
|
if fact.is_a? Hash then
|
123
140
|
ret = {}
|
data/lib/puppet/parameter.rb
CHANGED
@@ -116,10 +116,13 @@ class Puppet::Parameter
|
|
116
116
|
@doc ||= ""
|
117
117
|
|
118
118
|
unless defined?(@addeddocvals)
|
119
|
-
@doc
|
119
|
+
@doc = Puppet::Util::Docs.scrub(@doc)
|
120
|
+
if vals = value_collection.doc
|
121
|
+
@doc << "\n\n#{vals}"
|
122
|
+
end
|
120
123
|
|
121
124
|
if f = self.required_features
|
122
|
-
@doc
|
125
|
+
@doc << "\n\nRequires features #{f.flatten.collect { |f| f.to_s }.join(" ")}."
|
123
126
|
end
|
124
127
|
@addeddocvals = true
|
125
128
|
end
|
@@ -567,6 +570,16 @@ class Puppet::Parameter
|
|
567
570
|
"'#{value}'"
|
568
571
|
end
|
569
572
|
end
|
573
|
+
|
574
|
+
# @comment Document post_compile_hook here as it does not exist anywhere (called from type if implemented)
|
575
|
+
# @!method post_compile()
|
576
|
+
# @since 3.4.0
|
577
|
+
# @api public
|
578
|
+
# @abstract A subclass may implement this - it is not implemented in the Parameter class
|
579
|
+
# This method may be implemented by a parameter in order to perform actions during compilation
|
580
|
+
# after all resources have been added to the catalog.
|
581
|
+
# @see Puppet::Type#finish
|
582
|
+
# @see Puppet::Parser::Compiler#finish
|
570
583
|
end
|
571
584
|
|
572
585
|
require 'puppet/parameter/path'
|
@@ -33,17 +33,19 @@ class Puppet::Parameter::ValueCollection
|
|
33
33
|
unless defined?(@doc)
|
34
34
|
@doc = ""
|
35
35
|
unless values.empty?
|
36
|
-
@doc
|
37
|
-
@doc
|
36
|
+
@doc << "Valid values are "
|
37
|
+
@doc << @strings.collect do |value|
|
38
38
|
if aliases = value.aliases and ! aliases.empty?
|
39
39
|
"`#{value.name}` (also called `#{aliases.join(", ")}`)"
|
40
40
|
else
|
41
41
|
"`#{value.name}`"
|
42
42
|
end
|
43
|
-
end.join(", ")
|
43
|
+
end.join(", ") << ". "
|
44
44
|
end
|
45
45
|
|
46
|
-
|
46
|
+
unless regexes.empty?
|
47
|
+
@doc << "Values can match `#{regexes.join("`, `")}`."
|
48
|
+
end
|
47
49
|
end
|
48
50
|
|
49
51
|
@doc
|
@@ -11,9 +11,10 @@ class Puppet::Parser::AST
|
|
11
11
|
|
12
12
|
# Return the parameter and the value.
|
13
13
|
def evaluate(scope)
|
14
|
+
value = @value.safeevaluate(scope)
|
14
15
|
return Puppet::Parser::Resource::Param.new(
|
15
16
|
:name => @param,
|
16
|
-
:value =>
|
17
|
+
:value => value.nil? ? :undef : value,
|
17
18
|
:source => scope.source, :line => self.line, :file => self.file,
|
18
19
|
:add => self.add
|
19
20
|
)
|
@@ -17,13 +17,8 @@ class Puppet::Parser::Compiler
|
|
17
17
|
include Puppet::Resource::TypeCollectionHelper
|
18
18
|
|
19
19
|
def self.compile(node)
|
20
|
-
|
21
|
-
|
22
|
-
# the thread, though, we can leave 'em hanging round with no ill effects,
|
23
|
-
# and this is safer than cleaning them at the end and assuming that will
|
24
|
-
# stick until the next entry to this function.
|
25
|
-
Thread.current[:known_resource_types] = nil
|
26
|
-
Thread.current[:env_module_directories] = nil
|
20
|
+
$known_resource_types = nil
|
21
|
+
$env_module_directories = nil
|
27
22
|
|
28
23
|
# ...and we actually do the compile now we have caching ready.
|
29
24
|
new(node).compile.to_resource
|
@@ -143,8 +138,27 @@ class Puppet::Parser::Compiler
|
|
143
138
|
end
|
144
139
|
|
145
140
|
# Evaluate all of the classes specified by the node.
|
141
|
+
# Classes with parameters are evaluated as if they were declared.
|
142
|
+
# Classes without parameters or with an empty set of parameters are evaluated
|
143
|
+
# as if they were included. This means classes with an empty set of
|
144
|
+
# parameters won't conflict even if the class has already been included.
|
146
145
|
def evaluate_node_classes
|
147
|
-
|
146
|
+
if @node.classes.is_a? Hash
|
147
|
+
classes_with_params, classes_without_params = @node.classes.partition {|name,params| params and !params.empty?}
|
148
|
+
|
149
|
+
# The results from Hash#partition are arrays of pairs rather than hashes,
|
150
|
+
# so we have to convert to the forms evaluate_classes expects (Hash, and
|
151
|
+
# Array of class names)
|
152
|
+
classes_with_params = Hash[classes_with_params]
|
153
|
+
classes_without_params.map!(&:first)
|
154
|
+
else
|
155
|
+
classes_with_params = {}
|
156
|
+
classes_without_params = @node.classes
|
157
|
+
end
|
158
|
+
|
159
|
+
evaluate_classes(classes_without_params, @node_scope || topscope)
|
160
|
+
|
161
|
+
evaluate_classes(classes_with_params, @node_scope || topscope)
|
148
162
|
end
|
149
163
|
|
150
164
|
# Evaluate each specified class in turn. If there are any classes we can't
|
@@ -487,10 +501,12 @@ class Puppet::Parser::Compiler
|
|
487
501
|
node.parameters.each do |param, value|
|
488
502
|
@topscope[param.to_s] = value
|
489
503
|
end
|
490
|
-
|
491
504
|
# These might be nil.
|
492
505
|
catalog.client_version = node.parameters["clientversion"]
|
493
506
|
catalog.server_version = node.parameters["serverversion"]
|
507
|
+
if Puppet[:trusted_node_data]
|
508
|
+
@topscope.set_trusted(node.trusted_data)
|
509
|
+
end
|
494
510
|
end
|
495
511
|
|
496
512
|
def create_settings_scope
|
data/lib/puppet/parser/files.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'puppet/util/autoload'
|
2
2
|
require 'puppet/parser/scope'
|
3
|
-
require 'monitor'
|
4
3
|
|
5
4
|
# A module for managing parser functions. Each specified function
|
6
5
|
# is added to a central module that then gets included into the Scope
|
@@ -18,8 +17,8 @@ module Puppet::Parser::Functions
|
|
18
17
|
#
|
19
18
|
# @api private
|
20
19
|
def self.reset
|
21
|
-
@functions = Hash.new { |h,k| h[k] = {} }
|
22
|
-
@modules = Hash.new
|
20
|
+
@functions = Hash.new { |h,k| h[k] = {} }
|
21
|
+
@modules = Hash.new
|
23
22
|
|
24
23
|
# Runs a newfunction to create a function for each of the log levels
|
25
24
|
Puppet::Util::Log.levels.each do |level|
|
@@ -46,9 +45,7 @@ module Puppet::Parser::Functions
|
|
46
45
|
if env and ! env.is_a?(Puppet::Node::Environment)
|
47
46
|
env = Puppet::Node::Environment.new(env)
|
48
47
|
end
|
49
|
-
@modules.
|
50
|
-
@modules[ (env || Environment.current || Environment.root).name ] ||= Module.new
|
51
|
-
}
|
48
|
+
@modules[ (env || Environment.current || Environment.root).name ] ||= Module.new
|
52
49
|
end
|
53
50
|
|
54
51
|
# Create a new Puppet DSL function.
|
@@ -170,11 +167,9 @@ module Puppet::Parser::Functions
|
|
170
167
|
name = name.intern
|
171
168
|
|
172
169
|
func = nil
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
func = get_function(name)
|
177
|
-
end
|
170
|
+
unless func = get_function(name)
|
171
|
+
autoloader.load(name, Environment.current)
|
172
|
+
func = get_function(name)
|
178
173
|
end
|
179
174
|
|
180
175
|
if func
|
@@ -190,14 +185,14 @@ module Puppet::Parser::Functions
|
|
190
185
|
ret = ""
|
191
186
|
|
192
187
|
merged_functions.sort { |a,b| a[0].to_s <=> b[0].to_s }.each do |name, hash|
|
193
|
-
ret
|
188
|
+
ret << "#{name}\n#{"-" * name.to_s.length}\n"
|
194
189
|
if hash[:doc]
|
195
|
-
ret
|
190
|
+
ret << Puppet::Util::Docs.scrub(hash[:doc])
|
196
191
|
else
|
197
|
-
ret
|
192
|
+
ret << "Undocumented.\n"
|
198
193
|
end
|
199
194
|
|
200
|
-
ret
|
195
|
+
ret << "\n\n- *Type*: #{hash[:type]}\n\n"
|
201
196
|
end
|
202
197
|
|
203
198
|
ret
|
@@ -229,9 +224,7 @@ module Puppet::Parser::Functions
|
|
229
224
|
private
|
230
225
|
|
231
226
|
def merged_functions
|
232
|
-
@functions.
|
233
|
-
@functions[Environment.root].merge(@functions[Environment.current])
|
234
|
-
}
|
227
|
+
@functions[Environment.root].merge(@functions[Environment.current])
|
235
228
|
end
|
236
229
|
|
237
230
|
def get_function(name)
|
@@ -241,9 +234,7 @@ module Puppet::Parser::Functions
|
|
241
234
|
|
242
235
|
def add_function(name, func)
|
243
236
|
name = name.intern
|
244
|
-
@functions.
|
245
|
-
@functions[Environment.current][name] = func
|
246
|
-
}
|
237
|
+
@functions[Environment.current][name] = func
|
247
238
|
end
|
248
239
|
end
|
249
240
|
|
@@ -1,44 +1,15 @@
|
|
1
|
-
require 'puppet/parser/ast/lambda'
|
2
|
-
|
3
1
|
Puppet::Parser::Functions::newfunction(
|
4
2
|
:collect,
|
5
3
|
:type => :rvalue,
|
6
4
|
:arity => 2,
|
7
5
|
:doc => <<-'ENDHEREDOC') do |args|
|
8
|
-
|
9
|
-
argument and returns an array with the result of each invocation of the parameterized block.
|
10
|
-
|
11
|
-
This function takes two mandatory arguments: the first should be an Array or a Hash, and the second
|
12
|
-
a parameterized block as produced by the puppet syntax:
|
13
|
-
|
14
|
-
$a.collect |$x| { ... }
|
15
|
-
|
16
|
-
When the first argument `$a` is an Array, the block is called with each entry in turn. When the first argument
|
17
|
-
is a hash the entry is an array with `[key, value]`.
|
18
|
-
|
19
|
-
*Examples*
|
6
|
+
The 'collect' function has been renamed to 'map'. Please update your manifests.
|
20
7
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
# Turns hash into array of keys
|
25
|
-
$a.collect |$x| { $x[0] }
|
26
|
-
|
27
|
-
- Since 3.2
|
8
|
+
The collect function is reserved for future use.
|
9
|
+
- Removed as of 3.4
|
28
10
|
- requires `parser = future`.
|
29
11
|
ENDHEREDOC
|
30
12
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
raise ArgumentError, ("collect(): wrong argument type (#{pblock.class}; must be a parameterized block.") unless pblock.is_a? Puppet::Parser::AST::Lambda
|
35
|
-
|
36
|
-
case receiver
|
37
|
-
when Array
|
38
|
-
when Hash
|
39
|
-
else
|
40
|
-
raise ArgumentError, ("collect(): wrong argument type (#{receiver.class}; must be an Array or a Hash.")
|
41
|
-
end
|
42
|
-
|
43
|
-
receiver.to_a.collect {|x| pblock.call(self, x) }
|
44
|
-
end
|
13
|
+
raise NotImplementedError,
|
14
|
+
"The 'collect' function has been renamed to 'map'. Please update your manifests."
|
15
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Called within a class definition, establishes a containment
|
2
|
+
# relationship with another class
|
3
|
+
|
4
|
+
Puppet::Parser::Functions::newfunction(
|
5
|
+
:contain,
|
6
|
+
:arity => -2,
|
7
|
+
:doc => "Contain one or more classes inside the current class. If any of
|
8
|
+
these classes are undeclared, they will be declared as if called with the
|
9
|
+
`include` function. Accepts a class name, an array of class names, or a
|
10
|
+
comma-separated list of class names.
|
11
|
+
|
12
|
+
A contained class will not be applied before the containing class is
|
13
|
+
begun, and will be finished before the containing class is finished.
|
14
|
+
"
|
15
|
+
) do |classes|
|
16
|
+
scope = self
|
17
|
+
|
18
|
+
scope.function_include(classes)
|
19
|
+
|
20
|
+
classes.each do |class_name|
|
21
|
+
class_resource = scope.catalog.resource("Class", class_name)
|
22
|
+
if ! scope.catalog.edge?(scope.resource, class_resource)
|
23
|
+
scope.catalog.add_edge(scope.resource, class_resource)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|