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
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'puppet/network/format_handler'
|
2
2
|
|
3
3
|
# Provides network serialization support when included
|
4
|
+
# @api public
|
4
5
|
module Puppet::Network::FormatSupport
|
5
6
|
def self.included(klass)
|
6
7
|
klass.extend(ClassMethods)
|
@@ -83,6 +84,10 @@ module Puppet::Network::FormatSupport
|
|
83
84
|
end
|
84
85
|
end
|
85
86
|
|
87
|
+
def to_msgpack(*args)
|
88
|
+
to_data_hash.to_msgpack(*args)
|
89
|
+
end
|
90
|
+
|
86
91
|
def render(format = nil)
|
87
92
|
format ||= self.class.default_format
|
88
93
|
|
@@ -102,5 +107,14 @@ module Puppet::Network::FormatSupport
|
|
102
107
|
def support_format?(name)
|
103
108
|
self.class.support_format?(name)
|
104
109
|
end
|
110
|
+
|
111
|
+
# @comment Document to_data_hash here as it is called as a hook from to_msgpack if it exists
|
112
|
+
# @!method to_data_hash(*args)
|
113
|
+
# @api public
|
114
|
+
# @abstract
|
115
|
+
# This method may be implemented to return a hash object that is used for serializing.
|
116
|
+
# The object returned by this method should contain all the info needed to instantiate it again.
|
117
|
+
# If the method exists it will be called from to_msgpack and other serialization methods.
|
118
|
+
# @return [Hash]
|
105
119
|
end
|
106
120
|
|
@@ -1,5 +1,31 @@
|
|
1
1
|
require 'puppet/network/format_handler'
|
2
2
|
|
3
|
+
Puppet::Network::FormatHandler.create_serialized_formats(:msgpack, :weight => 20, :mime => "application/x-msgpack", :required_methods => [:render_method, :intern_method]) do
|
4
|
+
def intern(klass, text)
|
5
|
+
data = MessagePack.unpack(text)
|
6
|
+
return data if data.is_a?(klass)
|
7
|
+
klass.from_pson(data)
|
8
|
+
end
|
9
|
+
|
10
|
+
def intern_multiple(klass, text)
|
11
|
+
MessagePack.unpack(text).collect do |data|
|
12
|
+
klass.from_pson(data)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def render(instance)
|
17
|
+
instance.to_msgpack
|
18
|
+
end
|
19
|
+
|
20
|
+
def render_multiple(instances)
|
21
|
+
instances.to_msgpack
|
22
|
+
end
|
23
|
+
|
24
|
+
def supported?(klass)
|
25
|
+
Puppet.features.msgpack? && klass.method_defined?(:to_msgpack)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
3
29
|
Puppet::Network::FormatHandler.create_serialized_formats(:yaml) do
|
4
30
|
def intern(klass, text)
|
5
31
|
data = YAML.load(text, :safe => true, :deserialize_symbols => true)
|
@@ -24,17 +24,17 @@ module Puppet::Network::HTTP
|
|
24
24
|
|
25
25
|
OPTION_DEFAULTS = {
|
26
26
|
:use_ssl => true,
|
27
|
-
:
|
27
|
+
:verify => nil,
|
28
28
|
:redirect_limit => 10
|
29
29
|
}
|
30
30
|
|
31
|
-
# Creates a new HTTP client connection to `host`:`port`.
|
31
|
+
# Creates a new HTTP client connection to `host`:`port`.
|
32
32
|
# @param host [String] the host to which this client will connect to
|
33
33
|
# @param port [Fixnum] the port to which this client will connect to
|
34
34
|
# @param options [Hash] options influencing the properties of the created connection,
|
35
35
|
# the following options are recognized:
|
36
36
|
# :use_ssl [Boolean] true to connect with SSL, false otherwise, defaults to true
|
37
|
-
# :
|
37
|
+
# :verify [#setup_connection] An object that will configure any verification to do on the connection
|
38
38
|
# :redirect_limit [Fixnum] the number of allowed redirections, defaults to 10
|
39
39
|
# passing any other option in the options hash results in a Puppet::Error exception
|
40
40
|
# @note the HTTP connection itself happens lazily only when {#request}, or one of the {#get}, {#post}, {#delete}, {#head} or {#put} is called
|
@@ -48,7 +48,7 @@ module Puppet::Network::HTTP
|
|
48
48
|
|
49
49
|
options = OPTION_DEFAULTS.merge(options)
|
50
50
|
@use_ssl = options[:use_ssl]
|
51
|
-
@
|
51
|
+
@verify = options[:verify]
|
52
52
|
@redirect_limit = options[:redirect_limit]
|
53
53
|
end
|
54
54
|
|
@@ -128,23 +128,19 @@ module Puppet::Network::HTTP
|
|
128
128
|
end
|
129
129
|
|
130
130
|
def execute_request(method, *args)
|
131
|
-
ssl_validator = Puppet::SSL::Validator.new(:ssl_configuration => ssl_configuration)
|
132
|
-
# Perform our own validation of the SSL connection in addition to OpenSSL
|
133
|
-
ssl_validator.register_verify_callback(connection)
|
134
|
-
|
135
131
|
response = connection.send(method, *args)
|
136
132
|
|
137
133
|
# Check the peer certs and warn if they're nearing expiration.
|
138
|
-
warn_if_near_expiration(
|
134
|
+
warn_if_near_expiration(*@verify.peer_certs)
|
139
135
|
|
140
136
|
response
|
141
137
|
rescue OpenSSL::SSL::SSLError => error
|
142
138
|
if error.message.include? "certificate verify failed"
|
143
139
|
msg = error.message
|
144
|
-
msg << ": [" +
|
140
|
+
msg << ": [" + @verify.verify_errors.join('; ') + "]"
|
145
141
|
raise Puppet::Error, msg
|
146
142
|
elsif error.message =~ /hostname (\w+ )?not match/
|
147
|
-
leaf_ssl_cert =
|
143
|
+
leaf_ssl_cert = @verify.peer_certs.last
|
148
144
|
|
149
145
|
valid_certnames = [leaf_ssl_cert.name, *leaf_ssl_cert.subject_alt_names].uniq
|
150
146
|
msg = valid_certnames.length > 1 ? "one of #{valid_certnames.join(', ')}" : valid_certnames.first
|
@@ -181,23 +177,7 @@ module Puppet::Network::HTTP
|
|
181
177
|
|
182
178
|
# Use cert information from a Puppet client to set up the http object.
|
183
179
|
def cert_setup
|
184
|
-
|
185
|
-
@connection.cert_store = ssl_host.ssl_store
|
186
|
-
@connection.ca_file = ssl_configuration.ca_auth_file
|
187
|
-
@connection.cert = ssl_host.certificate.content
|
188
|
-
@connection.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
189
|
-
@connection.key = ssl_host.key.content
|
190
|
-
else
|
191
|
-
# We don't have the local certificates, so we don't do any verification
|
192
|
-
# or setup at this early stage. REVISIT: Shouldn't we supply the local
|
193
|
-
# certificate details if we have them? The original code didn't.
|
194
|
-
# --daniel 2012-06-03
|
195
|
-
|
196
|
-
# Ruby 1.8 defaulted to this, but 1.9 defaults to peer verify,
|
197
|
-
# and we almost always talk to a dedicated, not-standard CA that
|
198
|
-
# isn't trusted out of the box. This forces the expected state.
|
199
|
-
@connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
200
|
-
end
|
180
|
+
@verify.setup_connection(@connection)
|
201
181
|
end
|
202
182
|
|
203
183
|
# This method largely exists for testing purposes, so that we can
|
@@ -205,18 +185,5 @@ module Puppet::Network::HTTP
|
|
205
185
|
def create_connection(*args)
|
206
186
|
Net::HTTP.new(*args)
|
207
187
|
end
|
208
|
-
|
209
|
-
# Use the global localhost instance.
|
210
|
-
def ssl_host
|
211
|
-
Puppet::SSL::Host.localhost
|
212
|
-
end
|
213
|
-
|
214
|
-
def ssl_configuration
|
215
|
-
@ssl_configuration ||= Puppet::SSL::Configuration.new(
|
216
|
-
Puppet[:localcacert],
|
217
|
-
:ca_chain_file => Puppet[:ssl_client_ca_chain],
|
218
|
-
:ca_auth_file => Puppet[:ssl_client_ca_auth]
|
219
|
-
)
|
220
|
-
end
|
221
188
|
end
|
222
189
|
end
|
@@ -89,15 +89,20 @@ module Puppet::Network::HTTP::Handler
|
|
89
89
|
configure_profiler(request_headers, request_params)
|
90
90
|
|
91
91
|
Puppet::Util::Profiler.profile("Processed request #{request_method} #{request_path}") do
|
92
|
-
|
92
|
+
indirection_name, method, key, params = uri2indirection(request_method, request_path, request_params)
|
93
93
|
|
94
|
-
check_authorization(
|
94
|
+
check_authorization(indirection_name, method, key, params)
|
95
95
|
warn_if_near_expiration(client_cert(request))
|
96
96
|
|
97
|
+
indirection = Puppet::Indirector::Indirection.instance(indirection_name.to_sym)
|
98
|
+
raise ArgumentError, "Could not find indirection '#{indirection_name}'" unless indirection
|
99
|
+
|
100
|
+
if !indirection.allow_remote_requests?
|
101
|
+
raise HTTPNotFoundError, "No handler for #{indirection.name}"
|
102
|
+
end
|
103
|
+
|
97
104
|
send("do_#{method}", indirection, key, params, request, response)
|
98
105
|
end
|
99
|
-
rescue SystemExit,NoMemoryError
|
100
|
-
raise
|
101
106
|
rescue HTTPError => e
|
102
107
|
return do_http_control_exception(response, e)
|
103
108
|
rescue Exception => e
|
@@ -129,19 +134,13 @@ module Puppet::Network::HTTP::Handler
|
|
129
134
|
set_response(response, exception.to_s, status)
|
130
135
|
end
|
131
136
|
|
132
|
-
def model(indirection_name)
|
133
|
-
raise ArgumentError, "Could not find indirection '#{indirection_name}'" unless indirection = Puppet::Indirector::Indirection.instance(indirection_name.to_sym)
|
134
|
-
indirection.model
|
135
|
-
end
|
136
|
-
|
137
137
|
# Execute our find.
|
138
|
-
def do_find(
|
139
|
-
|
140
|
-
|
141
|
-
raise HTTPNotFoundError, "Could not find #{indirection_name} #{key}"
|
138
|
+
def do_find(indirection, key, params, request, response)
|
139
|
+
unless result = indirection.find(key, params)
|
140
|
+
raise HTTPNotFoundError, "Could not find #{indirection.name} #{key}"
|
142
141
|
end
|
143
142
|
|
144
|
-
format = accepted_response_formatter_for(
|
143
|
+
format = accepted_response_formatter_for(indirection.model, request)
|
145
144
|
set_content_type(response, format)
|
146
145
|
|
147
146
|
rendered_result = result
|
@@ -157,9 +156,9 @@ module Puppet::Network::HTTP::Handler
|
|
157
156
|
end
|
158
157
|
|
159
158
|
# Execute our head.
|
160
|
-
def do_head(
|
161
|
-
unless
|
162
|
-
raise HTTPNotFoundError, "Could not find #{
|
159
|
+
def do_head(indirection, key, params, request, response)
|
160
|
+
unless indirection.head(key, params)
|
161
|
+
raise HTTPNotFoundError, "Could not find #{indirection.name} #{key}"
|
163
162
|
end
|
164
163
|
|
165
164
|
# No need to set a response because no response is expected from a
|
@@ -167,38 +166,35 @@ module Puppet::Network::HTTP::Handler
|
|
167
166
|
end
|
168
167
|
|
169
168
|
# Execute our search.
|
170
|
-
def do_search(
|
171
|
-
|
172
|
-
result = model.indirection.search(key, params)
|
169
|
+
def do_search(indirection, key, params, request, response)
|
170
|
+
result = indirection.search(key, params)
|
173
171
|
|
174
172
|
if result.nil?
|
175
|
-
raise HTTPNotFoundError, "Could not find instances in #{
|
173
|
+
raise HTTPNotFoundError, "Could not find instances in #{indirection.name} with '#{key}'"
|
176
174
|
end
|
177
175
|
|
178
|
-
format = accepted_response_formatter_for(model, request)
|
176
|
+
format = accepted_response_formatter_for(indirection.model, request)
|
179
177
|
set_content_type(response, format)
|
180
178
|
|
181
|
-
set_response(response, model.render_multiple(format, result))
|
179
|
+
set_response(response, indirection.model.render_multiple(format, result))
|
182
180
|
end
|
183
181
|
|
184
182
|
# Execute our destroy.
|
185
|
-
def do_destroy(
|
186
|
-
|
187
|
-
formatter = accepted_response_formatter_or_yaml_for(model_class, request)
|
183
|
+
def do_destroy(indirection, key, params, request, response)
|
184
|
+
formatter = accepted_response_formatter_or_yaml_for(indirection.model, request)
|
188
185
|
|
189
|
-
result =
|
186
|
+
result = indirection.destroy(key, params)
|
190
187
|
|
191
188
|
set_content_type(response, formatter)
|
192
189
|
set_response(response, formatter.render(result))
|
193
190
|
end
|
194
191
|
|
195
192
|
# Execute our save.
|
196
|
-
def do_save(
|
197
|
-
|
198
|
-
|
199
|
-
sent_object = read_body_into_model(model_class, request)
|
193
|
+
def do_save(indirection, key, params, request, response)
|
194
|
+
formatter = accepted_response_formatter_or_yaml_for(indirection.model, request)
|
195
|
+
sent_object = read_body_into_model(indirection.model, request)
|
200
196
|
|
201
|
-
result =
|
197
|
+
result = indirection.save(sent_object, key)
|
202
198
|
|
203
199
|
set_content_type(response, formatter)
|
204
200
|
set_response(response, formatter.render(result))
|
@@ -10,7 +10,6 @@ require 'puppet/ssl/configuration'
|
|
10
10
|
class Puppet::Network::HTTP::WEBrick
|
11
11
|
def initialize
|
12
12
|
@listening = false
|
13
|
-
@mutex = Mutex.new
|
14
13
|
end
|
15
14
|
|
16
15
|
def listen(address, port)
|
@@ -25,34 +24,28 @@ class Puppet::Network::HTTP::WEBrick
|
|
25
24
|
|
26
25
|
@server.mount('/', Puppet::Network::HTTP::WEBrickREST, :this_value_is_apparently_necessary_but_unused)
|
27
26
|
|
28
|
-
@
|
29
|
-
|
30
|
-
|
31
|
-
@
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
}
|
37
|
-
}
|
38
|
-
sleep 0.1 until @server.status == :Running
|
27
|
+
raise "WEBrick server is already listening" if @listening
|
28
|
+
@listening = true
|
29
|
+
@thread = Thread.new do
|
30
|
+
@server.start do |sock|
|
31
|
+
raise "Client disconnected before connection could be established" unless IO.select([sock],nil,nil,6.2)
|
32
|
+
sock.accept
|
33
|
+
@server.run(sock)
|
34
|
+
end
|
39
35
|
end
|
36
|
+
sleep 0.1 until @server.status == :Running
|
40
37
|
end
|
41
38
|
|
42
39
|
def unlisten
|
43
|
-
@
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
@listening = false
|
49
|
-
end
|
40
|
+
raise "WEBrick server is not listening" unless @listening
|
41
|
+
@server.shutdown
|
42
|
+
wait_for_shutdown
|
43
|
+
@server = nil
|
44
|
+
@listening = false
|
50
45
|
end
|
51
46
|
|
52
47
|
def listening?
|
53
|
-
@
|
54
|
-
@listening
|
55
|
-
end
|
48
|
+
@listening
|
56
49
|
end
|
57
50
|
|
58
51
|
def wait_for_shutdown
|
@@ -2,18 +2,52 @@ require 'puppet/network/http/connection'
|
|
2
2
|
|
3
3
|
module Puppet::Network; end
|
4
4
|
|
5
|
-
# This
|
6
|
-
#
|
7
|
-
#
|
8
|
-
# The
|
9
|
-
#
|
10
|
-
#
|
5
|
+
# This module contains the factory methods that should be used for getting a
|
6
|
+
# Puppet::Network::HTTP::Connection instance.
|
7
|
+
#
|
8
|
+
# The name "HttpPool" is a misnomer, and a leftover of history, but we would
|
9
|
+
# like to make this cache connections in the future.
|
10
|
+
#
|
11
|
+
# @api public
|
12
|
+
#
|
11
13
|
module Puppet::Network::HttpPool
|
12
14
|
|
13
|
-
# Retrieve a
|
14
|
-
#
|
15
|
+
# Retrieve a connection for the given host and port.
|
16
|
+
#
|
17
|
+
# @param host [String] The hostname to connect to
|
18
|
+
# @param port [Integer] The port on the host to connect to
|
19
|
+
# @param use_ssl [Boolean] Whether to use an SSL connection
|
20
|
+
# @param verify_peer [Boolean] Whether to verify the peer credentials, if possible. Verification will not take place if the CA certificate is missing.
|
21
|
+
# @return [Puppet::Network::HTTP::Connection]
|
22
|
+
#
|
23
|
+
# @api public
|
24
|
+
#
|
15
25
|
def self.http_instance(host, port, use_ssl = true, verify_peer = true)
|
16
|
-
|
26
|
+
verifier = if verify_peer
|
27
|
+
Puppet::SSL::Validator.default_validator()
|
28
|
+
else
|
29
|
+
Puppet::SSL::Validator.no_validator()
|
30
|
+
end
|
31
|
+
|
32
|
+
Puppet::Network::HTTP::Connection.new(host, port,
|
33
|
+
:use_ssl => use_ssl,
|
34
|
+
:verify => verifier)
|
17
35
|
end
|
18
36
|
|
37
|
+
# Get an http connection that will be secured with SSL and have the
|
38
|
+
# connection verified with the given verifier
|
39
|
+
#
|
40
|
+
# @param host [String] the DNS name to connect to
|
41
|
+
# @param port [Integer] the port to connect to
|
42
|
+
# @param verifier [#setup_connection, #peer_certs, #verify_errors] An object that will setup the appropriate
|
43
|
+
# verification on a Net::HTTP instance and report any errors and the certificates used.
|
44
|
+
# @return [Puppet::Network::HTTP::Connection]
|
45
|
+
#
|
46
|
+
# @api public
|
47
|
+
#
|
48
|
+
def self.http_ssl_instance(host, port, verifier = Puppet::SSL::Validator.default_validator())
|
49
|
+
Puppet::Network::HTTP::Connection.new(host, port,
|
50
|
+
:use_ssl => true,
|
51
|
+
:verify => verifier)
|
52
|
+
end
|
19
53
|
end
|
File without changes
|
data/lib/puppet/node.rb
CHANGED
@@ -16,7 +16,7 @@ class Puppet::Node
|
|
16
16
|
indirects :node, :terminus_setting => :node_terminus, :doc => "Where to find node information.
|
17
17
|
A node is composed of its name, its facts, and its environment."
|
18
18
|
|
19
|
-
attr_accessor :name, :classes, :source, :ipaddress, :parameters
|
19
|
+
attr_accessor :name, :classes, :source, :ipaddress, :parameters, :trusted_data
|
20
20
|
attr_reader :time, :facts
|
21
21
|
|
22
22
|
::PSON.register_document_type('Node',self)
|
@@ -31,17 +31,25 @@ class Puppet::Node
|
|
31
31
|
node
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
34
|
+
def to_data_hash
|
35
35
|
result = {
|
36
|
+
'name' => name,
|
37
|
+
'environment' => environment.name,
|
38
|
+
}
|
39
|
+
result['classes'] = classes unless classes.empty?
|
40
|
+
result['parameters'] = parameters unless parameters.empty?
|
41
|
+
result
|
42
|
+
end
|
43
|
+
|
44
|
+
def to_pson_data_hash(*args)
|
45
|
+
{
|
36
46
|
'document_type' => "Node",
|
37
|
-
'data' =>
|
47
|
+
'data' => to_data_hash,
|
38
48
|
}
|
39
|
-
|
40
|
-
result['data']['classes'] = classes unless classes.empty?
|
41
|
-
result['data']['parameters'] = parameters unless parameters.empty?
|
42
|
-
result['data']['environment'] = environment.name
|
49
|
+
end
|
43
50
|
|
44
|
-
|
51
|
+
def to_pson(*args)
|
52
|
+
to_pson_data_hash.to_pson(*args)
|
45
53
|
end
|
46
54
|
|
47
55
|
def environment
|
@@ -84,6 +92,7 @@ class Puppet::Node
|
|
84
92
|
# Merge the node facts with parameters from the node source.
|
85
93
|
def fact_merge
|
86
94
|
if @facts = Puppet::Node::Facts.indirection.find(name, :environment => environment)
|
95
|
+
@facts.sanitize
|
87
96
|
merge(@facts.values)
|
88
97
|
end
|
89
98
|
rescue => detail
|
@@ -143,4 +152,11 @@ class Puppet::Node
|
|
143
152
|
end
|
144
153
|
tmp.reverse
|
145
154
|
end
|
155
|
+
|
156
|
+
# Ensures the data is frozen
|
157
|
+
#
|
158
|
+
def trusted_data=(data)
|
159
|
+
Puppet.warning("Trusted node data modified for node #{name}") unless @trusted_data.nil?
|
160
|
+
@trusted_data = data.freeze
|
161
|
+
end
|
146
162
|
end
|