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
@@ -0,0 +1,23 @@
|
|
1
|
+
Puppet::Type.type(:service).provide :openbsd, :parent => :init do
|
2
|
+
|
3
|
+
desc "Provider for OpenBSD's rc.d daemon control scripts"
|
4
|
+
|
5
|
+
confine :operatingsystem => :openbsd
|
6
|
+
defaultfor :operatingsystem => :openbsd
|
7
|
+
|
8
|
+
def self.defpath
|
9
|
+
["/etc/rc.d"]
|
10
|
+
end
|
11
|
+
|
12
|
+
def startcmd
|
13
|
+
[self.initscript, "-f", :start]
|
14
|
+
end
|
15
|
+
|
16
|
+
def restartcmd
|
17
|
+
(@resource[:hasrestart] == :true) && [self.initscript, "-f", :restart]
|
18
|
+
end
|
19
|
+
|
20
|
+
def statuscmd
|
21
|
+
[self.initscript, :check]
|
22
|
+
end
|
23
|
+
end
|
File without changes
|
@@ -42,7 +42,7 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
|
|
42
42
|
def defpath(dummy_argument=:work_arround_for_ruby_GC_bug)
|
43
43
|
unless @defpath
|
44
44
|
["/etc/sv", "/var/lib/service"].each do |path|
|
45
|
-
if
|
45
|
+
if Puppet::FileSystem::File.exist?(path)
|
46
46
|
@defpath = path
|
47
47
|
break
|
48
48
|
end
|
@@ -57,7 +57,7 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
|
|
57
57
|
def servicedir
|
58
58
|
unless @servicedir
|
59
59
|
["/service", "/etc/service","/var/service"].each do |path|
|
60
|
-
if
|
60
|
+
if Puppet::FileSystem::File.exist?(path)
|
61
61
|
@servicedir = path
|
62
62
|
break
|
63
63
|
end
|
@@ -105,7 +105,7 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
|
|
105
105
|
# before a disable
|
106
106
|
def disable
|
107
107
|
# unlink the daemon symlink to disable it
|
108
|
-
File.unlink(self.service) if
|
108
|
+
Puppet::FileSystem::File.unlink(self.service) if Puppet::FileSystem::File.new(self.service).symlink?
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
File without changes
|
File without changes
|
File without changes
|
@@ -71,7 +71,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
71
71
|
paths.each do |path|
|
72
72
|
service_name = name.match(/^(\S+)/)[1]
|
73
73
|
fqname = File.join(path, service_name + suffix)
|
74
|
-
if File.
|
74
|
+
if Puppet::FileSystem::File.exist?(fqname)
|
75
75
|
return fqname
|
76
76
|
end
|
77
77
|
|
@@ -148,7 +148,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
148
148
|
|
149
149
|
private
|
150
150
|
def is_upstart?(script = initscript)
|
151
|
-
File.
|
151
|
+
Puppet::FileSystem::File.exist?(script) && script.match(/\/etc\/init\/\S+\.conf/)
|
152
152
|
end
|
153
153
|
|
154
154
|
def version_is_pre_0_6_7
|
@@ -256,7 +256,7 @@ private
|
|
256
256
|
end
|
257
257
|
|
258
258
|
def read_override_file
|
259
|
-
if File.
|
259
|
+
if Puppet::FileSystem::File.exist?(overscript)
|
260
260
|
read_script_from(overscript)
|
261
261
|
else
|
262
262
|
""
|
@@ -41,7 +41,7 @@ Puppet::Type.type(:ssh_authorized_key).provide(
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def user
|
44
|
-
uid = File.
|
44
|
+
uid = Puppet::FileSystem::File.new(target).stat.uid
|
45
45
|
Etc.getpwuid(uid).name
|
46
46
|
end
|
47
47
|
|
@@ -55,7 +55,7 @@ Puppet::Type.type(:ssh_authorized_key).provide(
|
|
55
55
|
self.class.backup_target(target)
|
56
56
|
|
57
57
|
Puppet::Util::SUIDManager.asuser(@resource.should(:user)) do
|
58
|
-
unless File.exist?(dir = File.dirname(target))
|
58
|
+
unless Puppet::FileSystem::File.exist?(dir = File.dirname(target))
|
59
59
|
Puppet.debug "Creating #{dir}"
|
60
60
|
Dir.mkdir(dir, dir_perm)
|
61
61
|
end
|
File without changes
|
File without changes
|
@@ -238,7 +238,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
238
238
|
def self.get_sha1(guid)
|
239
239
|
password_hash = nil
|
240
240
|
password_hash_file = "#{password_hash_dir}/#{guid}"
|
241
|
-
if File.
|
241
|
+
if Puppet::FileSystem::File.exist?(password_hash_file) and File.file?(password_hash_file)
|
242
242
|
raise Puppet::Error, "Could not read password hash file at #{password_hash_file}" if not File.readable?(password_hash_file)
|
243
243
|
f = File.new(password_hash_file)
|
244
244
|
password_hash = f.read
|
@@ -160,7 +160,7 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
|
|
160
160
|
else
|
161
161
|
cmd = [command(:add)]
|
162
162
|
end
|
163
|
-
if not @resource.should(gid) and Puppet::Util.gid(@resource[:name])
|
163
|
+
if not @resource.should(:gid) and Puppet::Util.gid(@resource[:name])
|
164
164
|
cmd += ["-g", @resource[:name]]
|
165
165
|
end
|
166
166
|
cmd += add_properties
|
@@ -261,7 +261,7 @@ Puppet::Type.type(:zone).provide(:solaris) do
|
|
261
261
|
# which makes zoneadmd mount the zone root
|
262
262
|
zoneadm :ready unless File.directory?(zoneetc)
|
263
263
|
|
264
|
-
unless File.
|
264
|
+
unless Puppet::FileSystem::File.exist?(sysidcfg)
|
265
265
|
begin
|
266
266
|
File.open(sysidcfg, "w", 0600) do |f|
|
267
267
|
f.puts cfg
|
@@ -14,14 +14,13 @@ config = Puppet::Util::Reference.newreference(:configuration, :depth => 1, :doc
|
|
14
14
|
|
15
15
|
# Print the doc string itself
|
16
16
|
begin
|
17
|
-
str << object.desc
|
17
|
+
str << Puppet::Util::Docs.scrub(object.desc)
|
18
18
|
rescue => detail
|
19
19
|
Puppet.log_exception(detail)
|
20
20
|
end
|
21
21
|
str << "\n\n"
|
22
22
|
|
23
23
|
# Now print the data about the item.
|
24
|
-
str << ""
|
25
24
|
val = object.default
|
26
25
|
if name.to_s == "vardir"
|
27
26
|
val = "/var/lib/puppet"
|
@@ -10,16 +10,14 @@ reference = Puppet::Util::Reference.newreference :indirection, :doc => "Indirect
|
|
10
10
|
name = indirection.to_s.capitalize
|
11
11
|
text << "## " + indirection.to_s + "\n\n"
|
12
12
|
|
13
|
-
text << ind.doc + "\n\n"
|
14
|
-
|
15
|
-
text << "### Termini\n\n"
|
13
|
+
text << Puppet::Util::Docs.scrub(ind.doc) + "\n\n"
|
16
14
|
|
17
15
|
Puppet::Indirector::Terminus.terminus_classes(ind.name).sort { |a,b| a.to_s <=> b.to_s }.each do |terminus|
|
18
16
|
terminus_name = terminus.to_s
|
19
17
|
term_class = Puppet::Indirector::Terminus.terminus_class(ind.name, terminus)
|
20
18
|
if term_class
|
21
19
|
terminus_doc = Puppet::Util::Docs.scrub(term_class.doc)
|
22
|
-
text <<
|
20
|
+
text << markdown_header("`#{terminus_name}` terminus", 3) << terminus_doc << "\n\n"
|
23
21
|
else
|
24
22
|
Puppet.warning "Could not build docs for indirector #{name.inspect}, terminus #{terminus_name.inspect}: could not locate terminus."
|
25
23
|
end
|
@@ -31,7 +29,7 @@ end
|
|
31
29
|
|
32
30
|
reference.header = <<HEADER
|
33
31
|
|
34
|
-
|
32
|
+
## About Indirection
|
35
33
|
|
36
34
|
Puppet's indirector support pluggable backends (termini) for a variety of key-value stores (indirections).
|
37
35
|
Each indirection type corresponds to a particular Ruby class (the "Indirected Class" below) and values are instances of that class.
|
@@ -40,15 +38,15 @@ The termini can be local (e.g., on-disk files) or remote (e.g., using a REST int
|
|
40
38
|
|
41
39
|
An indirector has five methods, which are mapped into HTTP verbs for the REST interface:
|
42
40
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
41
|
+
* `find(key)` - get a single value (mapped to GET or POST with a singular endpoint)
|
42
|
+
* `search(key)` - get a list of matching values (mapped to GET with a plural endpoint)
|
43
|
+
* `head(key)` - return true if the key exists (mapped to HEAD)
|
44
|
+
* `destroy(key)` - remove the key van value (mapped to DELETE)
|
45
|
+
* `save(instance)` - write the instance to the store, using the instance's name as the key (mapped to PUT)
|
48
46
|
|
49
|
-
These methods are available via the `indirection` class method on the indirected classes. For example
|
47
|
+
These methods are available via the `indirection` class method on the indirected classes. For example:
|
50
48
|
|
51
|
-
|
49
|
+
foo_cert = Puppet::SSL::Certificate.indirection.find('foo.example.com')
|
52
50
|
|
53
51
|
At startup, each indirection is configured with a terminus.
|
54
52
|
In most cases, this is the default terminus defined by the indirected class, but it can be overridden by the application or face, or overridden with the `route_file` configuration.
|
@@ -58,12 +56,12 @@ Indirections can also have a cache, represented by a second terminus.
|
|
58
56
|
This is a write-through cache: modifications are written both to the cache and to the primary terminus.
|
59
57
|
Values fetched from the terminus are written to the cache.
|
60
58
|
|
61
|
-
|
59
|
+
### Interaction with REST
|
62
60
|
|
63
61
|
REST endpoints have the form `/{environment}/{indirection}/{key}`, where the indirection can be singular or plural, following normal English spelling rules.
|
64
62
|
On the server side, REST responses are generated from the locally-configured endpoints.
|
65
63
|
|
66
|
-
|
64
|
+
### Indirections and Termini
|
67
65
|
|
68
66
|
Below is the list of all indirections, their associated terminus classes, and how you select between them.
|
69
67
|
|
data/lib/puppet/relationship.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
1
|
# subscriptions are permanent associations determining how different
|
4
2
|
# objects react to an event
|
5
3
|
|
@@ -72,7 +70,7 @@ class Puppet::Relationship
|
|
72
70
|
"{ #{source} => #{target} }"
|
73
71
|
end
|
74
72
|
|
75
|
-
def
|
73
|
+
def to_data_hash
|
76
74
|
data = {
|
77
75
|
'source' => source.to_s,
|
78
76
|
'target' => target.to_s
|
@@ -85,8 +83,13 @@ class Puppet::Relationship
|
|
85
83
|
data
|
86
84
|
end
|
87
85
|
|
86
|
+
# This doesn't include document type as it is part of a catalog
|
87
|
+
def to_pson_data_hash
|
88
|
+
to_data_hash
|
89
|
+
end
|
90
|
+
|
88
91
|
def to_pson(*args)
|
89
|
-
|
92
|
+
to_data_hash.to_pson(*args)
|
90
93
|
end
|
91
94
|
|
92
95
|
def to_s
|
data/lib/puppet/reports.rb
CHANGED
@@ -72,9 +72,9 @@ class Puppet::Reports
|
|
72
72
|
instance_loader(:report).loadall
|
73
73
|
loaded_instances(:report).sort { |a,b| a.to_s <=> b.to_s }.each do |name|
|
74
74
|
mod = self.report(name)
|
75
|
-
docs
|
75
|
+
docs << "#{name}\n#{"-" * name.to_s.length}\n"
|
76
76
|
|
77
|
-
docs
|
77
|
+
docs << Puppet::Util::Docs.scrub(mod.doc) << "\n\n"
|
78
78
|
end
|
79
79
|
|
80
80
|
docs
|
@@ -114,7 +114,7 @@ Puppet::Reports.register_report(:rrdgraph) do
|
|
114
114
|
metric.graph
|
115
115
|
end
|
116
116
|
|
117
|
-
mkhtml unless
|
117
|
+
mkhtml unless Puppet::FileSystem::File.exist?(File.join(hostdir, "index.html"))
|
118
118
|
end
|
119
119
|
|
120
120
|
# Unfortunately, RRD does not deal well with changing lists of values,
|
data/lib/puppet/reports/store.rb
CHANGED
@@ -17,7 +17,7 @@ Puppet::Reports.register_report(:store) do
|
|
17
17
|
|
18
18
|
dir = File.join(Puppet[:reportdir], host)
|
19
19
|
|
20
|
-
if !
|
20
|
+
if ! Puppet::FileSystem::File.exist?(dir)
|
21
21
|
FileUtils.mkdir_p(dir)
|
22
22
|
FileUtils.chmod_R(0750, dir)
|
23
23
|
end
|
@@ -54,11 +54,11 @@ Puppet::Reports.register_report(:store) do
|
|
54
54
|
|
55
55
|
dir = File.join(Puppet[:reportdir], host)
|
56
56
|
|
57
|
-
if File.
|
57
|
+
if Puppet::FileSystem::File.exist?(dir)
|
58
58
|
Dir.entries(dir).each do |file|
|
59
59
|
next if ['.','..'].include?(file)
|
60
60
|
file = File.join(dir, file)
|
61
|
-
File.unlink(file) if File.file?(file)
|
61
|
+
Puppet::FileSystem::File.unlink(file) if File.file?(file)
|
62
62
|
end
|
63
63
|
Dir.rmdir(dir)
|
64
64
|
end
|
@@ -108,7 +108,7 @@ Puppet::Reports.register_report(:tagmail) do
|
|
108
108
|
|
109
109
|
# Process the report. This just calls the other associated messages.
|
110
110
|
def process
|
111
|
-
unless
|
111
|
+
unless Puppet::FileSystem::File.exist?(Puppet[:tagmap])
|
112
112
|
Puppet.notice "Cannot send tagmail report; no tagmap file #{Puppet[:tagmap]}"
|
113
113
|
return
|
114
114
|
end
|
@@ -158,7 +158,7 @@ Puppet::Reports.register_report(:tagmail) do
|
|
158
158
|
p.puts "From: #{Puppet[:reportfrom]}"
|
159
159
|
p.puts "Subject: Puppet Report for #{self.host}"
|
160
160
|
p.puts "To: " + emails.join(", ")
|
161
|
-
|
161
|
+
p.puts
|
162
162
|
p.puts messages
|
163
163
|
end
|
164
164
|
end
|
data/lib/puppet/resource.rb
CHANGED
@@ -56,7 +56,7 @@ class Puppet::Resource
|
|
56
56
|
"#{@type}[#{@title}]#{to_hash.inspect}"
|
57
57
|
end
|
58
58
|
|
59
|
-
def
|
59
|
+
def to_data_hash
|
60
60
|
data = ([:type, :title, :tags] + ATTRIBUTES).inject({}) do |hash, param|
|
61
61
|
next hash unless value = self.send(param)
|
62
62
|
hash[param.to_s] = value
|
@@ -80,6 +80,11 @@ class Puppet::Resource
|
|
80
80
|
data
|
81
81
|
end
|
82
82
|
|
83
|
+
# This doesn't include document type as it is part of a catalog
|
84
|
+
def to_pson_data_hash
|
85
|
+
to_data_hash
|
86
|
+
end
|
87
|
+
|
83
88
|
def self.value_to_pson_data(value)
|
84
89
|
if value.is_a? Array
|
85
90
|
value.map{|v| value_to_pson_data(v) }
|
@@ -102,8 +107,20 @@ class Puppet::Resource
|
|
102
107
|
end
|
103
108
|
end
|
104
109
|
|
110
|
+
YAML_ATTRIBUTES = [:@file, :@line, :@exported, :@type, :@title, :@tags, :@parameters]
|
111
|
+
|
112
|
+
# Explicitly list the instance variables that should be serialized when
|
113
|
+
# converting to YAML.
|
114
|
+
#
|
115
|
+
# @api private
|
116
|
+
# @return [Array<Symbol>] The intersection of our explicit variable list and
|
117
|
+
# all of the instance variables defined on this class.
|
118
|
+
def to_yaml_properties
|
119
|
+
YAML_ATTRIBUTES & super
|
120
|
+
end
|
121
|
+
|
105
122
|
def to_pson(*args)
|
106
|
-
|
123
|
+
to_data_hash.to_pson(*args)
|
107
124
|
end
|
108
125
|
|
109
126
|
# Proxy these methods to the parameters hash. It's likely they'll
|
@@ -328,10 +345,7 @@ class Puppet::Resource
|
|
328
345
|
result = scope.compiler.injector.lookup(scope, name)
|
329
346
|
end
|
330
347
|
if result.nil?
|
331
|
-
|
332
|
-
name,
|
333
|
-
:environment => scope.environment.to_s,
|
334
|
-
:variables => Puppet::DataBinding::Variables.new(scope))
|
348
|
+
lookup_with_databinding(name, scope)
|
335
349
|
else
|
336
350
|
result
|
337
351
|
end
|
@@ -339,6 +353,19 @@ class Puppet::Resource
|
|
339
353
|
|
340
354
|
private :lookup_external_default_for
|
341
355
|
|
356
|
+
def lookup_with_databinding(name, scope)
|
357
|
+
begin
|
358
|
+
Puppet::DataBinding.indirection.find(
|
359
|
+
name,
|
360
|
+
:environment => scope.environment.to_s,
|
361
|
+
:variables => scope)
|
362
|
+
rescue Puppet::DataBinding::LookupError => e
|
363
|
+
raise Puppet::Error.new("Error from DataBinding '#{Puppet[:data_binding_terminus]}' while looking up '#{name}': #{e.message}", e)
|
364
|
+
end
|
365
|
+
end
|
366
|
+
|
367
|
+
private :lookup_with_databinding
|
368
|
+
|
342
369
|
def set_default_parameters(scope)
|
343
370
|
return [] unless resource_type and resource_type.respond_to?(:arguments)
|
344
371
|
|
@@ -362,8 +389,39 @@ class Puppet::Resource
|
|
362
389
|
end.compact
|
363
390
|
end
|
364
391
|
|
365
|
-
def
|
366
|
-
|
392
|
+
def copy_as_resource
|
393
|
+
result = Puppet::Resource.new(type, title)
|
394
|
+
|
395
|
+
to_hash.each do |p, v|
|
396
|
+
if v.is_a?(Puppet::Resource)
|
397
|
+
v = Puppet::Resource.new(v.type, v.title)
|
398
|
+
elsif v.is_a?(Array)
|
399
|
+
# flatten resource references arrays
|
400
|
+
v = v.flatten if v.flatten.find { |av| av.is_a?(Puppet::Resource) }
|
401
|
+
v = v.collect do |av|
|
402
|
+
av = Puppet::Resource.new(av.type, av.title) if av.is_a?(Puppet::Resource)
|
403
|
+
av
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
407
|
+
# If the value is an array with only one value, then
|
408
|
+
# convert it to a single value. This is largely so that
|
409
|
+
# the database interaction doesn't have to worry about
|
410
|
+
# whether it returns an array or a string.
|
411
|
+
result[p] = if v.is_a?(Array) and v.length == 1
|
412
|
+
v[0]
|
413
|
+
else
|
414
|
+
v
|
415
|
+
end
|
416
|
+
end
|
417
|
+
|
418
|
+
result.file = self.file
|
419
|
+
result.line = self.line
|
420
|
+
result.exported = self.exported
|
421
|
+
result.virtual = self.virtual
|
422
|
+
result.tag(*self.tags)
|
423
|
+
|
424
|
+
result
|
367
425
|
end
|
368
426
|
|
369
427
|
def valid_parameter?(name)
|
@@ -365,19 +365,23 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
|
|
365
365
|
result.add_edge(edge)
|
366
366
|
end
|
367
367
|
|
368
|
+
def to_data_hash
|
369
|
+
{
|
370
|
+
'tags' => tags,
|
371
|
+
'name' => name,
|
372
|
+
'version' => version,
|
373
|
+
'environment' => environment.to_s,
|
374
|
+
'resources' => @resources.collect { |v| @resource_table[v].to_pson_data_hash },
|
375
|
+
'edges' => edges. collect { |e| e.to_pson_data_hash },
|
376
|
+
'classes' => classes
|
377
|
+
}
|
378
|
+
end
|
379
|
+
|
368
380
|
PSON.register_document_type('Catalog',self)
|
369
381
|
def to_pson_data_hash
|
370
382
|
{
|
371
383
|
'document_type' => 'Catalog',
|
372
|
-
'data' =>
|
373
|
-
'tags' => tags,
|
374
|
-
'name' => name,
|
375
|
-
'version' => version,
|
376
|
-
'environment' => environment.to_s,
|
377
|
-
'resources' => @resources.collect { |v| @resource_table[v].to_pson_data_hash },
|
378
|
-
'edges' => edges. collect { |e| e.to_pson_data_hash },
|
379
|
-
'classes' => classes
|
380
|
-
},
|
384
|
+
'data' => to_data_hash,
|
381
385
|
'metadata' => {
|
382
386
|
'api_version' => 1
|
383
387
|
}
|
@@ -465,7 +469,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
|
|
465
469
|
|
466
470
|
# Verify that the given resource isn't declared elsewhere.
|
467
471
|
def fail_on_duplicate_type_and_title(resource)
|
468
|
-
# Short-
|
472
|
+
# Short-circuit the common case,
|
469
473
|
return unless existing_resource = @resource_table[title_key_for_ref(resource.ref)]
|
470
474
|
|
471
475
|
# If we've gotten this far, it's a real conflict
|
@@ -492,22 +496,11 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
|
|
492
496
|
next if virtual_not_exported?(resource)
|
493
497
|
next if block_given? and yield resource
|
494
498
|
|
495
|
-
|
496
|
-
|
497
|
-
#has a reference to the catalog being converted. . . So, give it a reference to the new one
|
498
|
-
#problem solved. . .
|
499
|
-
if resource.class == Puppet::Resource
|
500
|
-
resource = resource.dup
|
501
|
-
resource.catalog = result
|
502
|
-
elsif resource.is_a?(Puppet::Parser::Resource)
|
503
|
-
resource = resource.to_resource
|
504
|
-
resource.catalog = result
|
505
|
-
end
|
499
|
+
newres = resource.copy_as_resource
|
500
|
+
newres.catalog = result
|
506
501
|
|
507
|
-
if
|
508
|
-
newres =
|
509
|
-
else
|
510
|
-
newres = resource.send(convert)
|
502
|
+
if convert != :to_resource
|
503
|
+
newres = newres.to_ral
|
511
504
|
end
|
512
505
|
|
513
506
|
# We can't guarantee that resources don't munge their names
|