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,80 +1,6 @@
|
|
1
|
-
#
|
2
|
-
#
|
3
|
-
require 'puppet/
|
1
|
+
# Confines have been moved out of the provider as they are also used for other things.
|
2
|
+
# This provides backwards compatibility for people still including this old location.
|
3
|
+
require 'puppet/provider'
|
4
|
+
require 'puppet/confine'
|
4
5
|
|
5
|
-
|
6
|
-
include Puppet::Util
|
7
|
-
|
8
|
-
@tests = {}
|
9
|
-
|
10
|
-
class << self
|
11
|
-
attr_accessor :name
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.inherited(klass)
|
15
|
-
name = klass.to_s.split("::").pop.downcase.to_sym
|
16
|
-
raise "Test #{name} is already defined" if @tests.include?(name)
|
17
|
-
|
18
|
-
klass.name = name
|
19
|
-
|
20
|
-
@tests[name] = klass
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.test(name)
|
24
|
-
unless @tests[name]
|
25
|
-
begin
|
26
|
-
require "puppet/provider/confine/#{name}"
|
27
|
-
rescue LoadError => detail
|
28
|
-
unless detail.to_s =~ /No such file|cannot load such file/i
|
29
|
-
warn "Could not load confine test '#{name}': #{detail}"
|
30
|
-
end
|
31
|
-
# Could not find file
|
32
|
-
end
|
33
|
-
end
|
34
|
-
@tests[name]
|
35
|
-
end
|
36
|
-
|
37
|
-
attr_reader :values
|
38
|
-
|
39
|
-
# Mark that this confine is used for testing binary existence.
|
40
|
-
attr_accessor :for_binary
|
41
|
-
def for_binary?
|
42
|
-
for_binary
|
43
|
-
end
|
44
|
-
|
45
|
-
# Used for logging.
|
46
|
-
attr_accessor :label
|
47
|
-
|
48
|
-
def initialize(values)
|
49
|
-
values = [values] unless values.is_a?(Array)
|
50
|
-
@values = values
|
51
|
-
end
|
52
|
-
|
53
|
-
# Provide a hook for the message when there's a failure.
|
54
|
-
def message(value)
|
55
|
-
""
|
56
|
-
end
|
57
|
-
|
58
|
-
# Collect the results of all of them.
|
59
|
-
def result
|
60
|
-
values.collect { |value| pass?(value) }
|
61
|
-
end
|
62
|
-
|
63
|
-
# Test whether our confine matches.
|
64
|
-
def valid?
|
65
|
-
values.each do |value|
|
66
|
-
unless pass?(value)
|
67
|
-
Puppet.debug(label + ": " + message(value))
|
68
|
-
return false
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
return true
|
73
|
-
ensure
|
74
|
-
reset
|
75
|
-
end
|
76
|
-
|
77
|
-
# Provide a hook for subclasses.
|
78
|
-
def reset
|
79
|
-
end
|
80
|
-
end
|
6
|
+
Puppet::Provider::Confine = Puppet::Confine
|
File without changes
|
data/lib/puppet/provider/exec.rb
CHANGED
@@ -47,18 +47,17 @@ class Puppet::Provider::Exec < Puppet::Provider
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
|
51
50
|
Timeout::timeout(resource[:timeout]) do
|
52
51
|
# note that we are passing "false" for the "override_locale" parameter, which ensures that the user's
|
53
52
|
# default/system locale will be respected. Callers may override this behavior by setting locale-related
|
54
53
|
# environment variables (LANG, LC_ALL, etc.) in their 'environment' configuration.
|
55
|
-
output
|
56
|
-
|
57
|
-
|
58
|
-
|
54
|
+
output = Puppet::Util::Execution.execute(command, :failonfail => false, :combine => true,
|
55
|
+
:uid => resource[:user], :gid => resource[:group],
|
56
|
+
:override_locale => false,
|
57
|
+
:custom_environment => environment)
|
59
58
|
end
|
60
59
|
# The shell returns 127 if the command is missing.
|
61
|
-
if
|
60
|
+
if output.exitstatus == 127
|
62
61
|
raise ArgumentError, output
|
63
62
|
end
|
64
63
|
|
@@ -67,7 +66,10 @@ class Puppet::Provider::Exec < Puppet::Provider
|
|
67
66
|
self.fail detail.to_s
|
68
67
|
end
|
69
68
|
|
70
|
-
|
69
|
+
# Return output twice as processstatus was returned before, but only exitstatus was ever called.
|
70
|
+
# Output has the exitstatus on it so it is returned instead. This is here twice as changing this
|
71
|
+
# would result in a change to the underlying API.
|
72
|
+
return output, output
|
71
73
|
end
|
72
74
|
|
73
75
|
def extractexe(command)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'puppet/provider/exec'
|
2
2
|
|
3
3
|
Puppet::Type.type(:exec).provide :posix, :parent => Puppet::Provider::Exec do
|
4
|
+
has_feature :umask
|
4
5
|
confine :feature => :posix
|
5
6
|
defaultfor :feature => :posix
|
6
7
|
|
@@ -16,7 +17,7 @@ Puppet::Type.type(:exec).provide :posix, :parent => Puppet::Provider::Exec do
|
|
16
17
|
exe = extractexe(command)
|
17
18
|
|
18
19
|
if File.expand_path(exe) == exe
|
19
|
-
if !File.
|
20
|
+
if !Puppet::FileSystem::File.exist?(exe)
|
20
21
|
raise ArgumentError, "Could not find command '#{exe}'"
|
21
22
|
elsif !File.file?(exe)
|
22
23
|
raise ArgumentError, "'#{exe}' is a #{File.ftype(exe)}, not a file"
|
@@ -36,4 +37,12 @@ Puppet::Type.type(:exec).provide :posix, :parent => Puppet::Provider::Exec do
|
|
36
37
|
# distinguish not found from not executable
|
37
38
|
raise ArgumentError, "Could not find command '#{exe}'"
|
38
39
|
end
|
40
|
+
|
41
|
+
def run(command, check = false)
|
42
|
+
if resource[:umask]
|
43
|
+
Puppet::Util::withumask(resource[:umask]) { super(command, check) }
|
44
|
+
else
|
45
|
+
super(command, check)
|
46
|
+
end
|
47
|
+
end
|
39
48
|
end
|
@@ -36,7 +36,7 @@ Puppet::Type.type(:exec).provide :windows, :parent => Puppet::Provider::Exec do
|
|
36
36
|
exe = extractexe(command)
|
37
37
|
|
38
38
|
if absolute_path?(exe)
|
39
|
-
if !File.
|
39
|
+
if !Puppet::FileSystem::File.exist?(exe)
|
40
40
|
raise ArgumentError, "Could not find command '#{exe}'"
|
41
41
|
elsif !File.file?(exe)
|
42
42
|
raise ArgumentError, "'#{exe}' is a #{File.ftype(exe)}, not a file"
|
@@ -2,6 +2,7 @@ Puppet::Type.type(:file).provide :windows do
|
|
2
2
|
desc "Uses Microsoft Windows functionality to manage file ownership and permissions."
|
3
3
|
|
4
4
|
confine :operatingsystem => :windows
|
5
|
+
has_feature :manages_symlinks if Puppet.features.manages_symlinks?
|
5
6
|
|
6
7
|
include Puppet::Util::Warnings
|
7
8
|
|
@@ -35,33 +36,37 @@ Puppet::Type.type(:file).provide :windows do
|
|
35
36
|
alias :name2uid :name2id
|
36
37
|
|
37
38
|
def owner
|
38
|
-
return :absent unless resource.
|
39
|
+
return :absent unless resource.stat
|
39
40
|
get_owner(resource[:path])
|
40
41
|
end
|
41
42
|
|
42
43
|
def owner=(should)
|
43
44
|
begin
|
44
|
-
|
45
|
+
path = resource[:links] == :manage ? file.path.to_s : file.readlink
|
46
|
+
|
47
|
+
set_owner(should, path)
|
45
48
|
rescue => detail
|
46
49
|
raise Puppet::Error, "Failed to set owner to '#{should}': #{detail}"
|
47
50
|
end
|
48
51
|
end
|
49
52
|
|
50
53
|
def group
|
51
|
-
return :absent unless resource.
|
54
|
+
return :absent unless resource.stat
|
52
55
|
get_group(resource[:path])
|
53
56
|
end
|
54
57
|
|
55
58
|
def group=(should)
|
56
59
|
begin
|
57
|
-
|
60
|
+
path = resource[:links] == :manage ? file.path.to_s : file.readlink
|
61
|
+
|
62
|
+
set_group(should, path)
|
58
63
|
rescue => detail
|
59
64
|
raise Puppet::Error, "Failed to set group to '#{should}': #{detail}"
|
60
65
|
end
|
61
66
|
end
|
62
67
|
|
63
68
|
def mode
|
64
|
-
if resource.
|
69
|
+
if resource.stat
|
65
70
|
mode = get_mode(resource[:path])
|
66
71
|
mode ? mode.to_s(8) : :absent
|
67
72
|
else
|
@@ -85,4 +90,10 @@ Puppet::Type.type(:file).provide :windows do
|
|
85
90
|
resource.fail("Can only manage owner, group, and mode on filesystems that support Windows ACLs, such as NTFS")
|
86
91
|
end
|
87
92
|
end
|
93
|
+
|
94
|
+
attr_reader :file
|
95
|
+
private
|
96
|
+
def file
|
97
|
+
@file ||= Puppet::FileSystem::File.new(resource[:path])
|
98
|
+
end
|
88
99
|
end
|
File without changes
|
@@ -1,13 +1,45 @@
|
|
1
1
|
require 'puppet/util/adsi'
|
2
2
|
|
3
3
|
Puppet::Type.type(:group).provide :windows_adsi do
|
4
|
-
desc "Local group management for Windows.
|
4
|
+
desc "Local group management for Windows. Group members can be both users and groups.
|
5
|
+
Additionally, local groups can contain domain users."
|
5
6
|
|
6
7
|
defaultfor :operatingsystem => :windows
|
7
8
|
confine :operatingsystem => :windows
|
8
9
|
|
9
10
|
has_features :manages_members
|
10
11
|
|
12
|
+
def members_insync?(current, should)
|
13
|
+
return false unless current
|
14
|
+
|
15
|
+
# By comparing account SIDs we don't have to worry about case
|
16
|
+
# sensitivity, or canonicalization of account names.
|
17
|
+
|
18
|
+
# Cannot use munge of the group property to canonicalize @should
|
19
|
+
# since the default array_matching comparison is not commutative
|
20
|
+
should_empty = should.nil? or should.empty?
|
21
|
+
|
22
|
+
return false if current.empty? != should_empty
|
23
|
+
|
24
|
+
# dupes automatically weeded out when hashes built
|
25
|
+
Puppet::Util::ADSI::Group.name_sid_hash(current) == Puppet::Util::ADSI::Group.name_sid_hash(should)
|
26
|
+
end
|
27
|
+
|
28
|
+
def members_to_s(users)
|
29
|
+
return '' if users.nil? or !users.kind_of?(Array)
|
30
|
+
users = users.map do |user_name|
|
31
|
+
sid = Puppet::Util::Windows::Security.name_to_sid_object(user_name)
|
32
|
+
if sid.account =~ /\\/
|
33
|
+
account, _ = Puppet::Util::ADSI::User.parse_name(sid.account)
|
34
|
+
else
|
35
|
+
account = sid.account
|
36
|
+
end
|
37
|
+
resource.debug("#{sid.domain}\\#{account} (#{sid.to_s})")
|
38
|
+
"#{sid.domain}\\#{account}"
|
39
|
+
end
|
40
|
+
return users.join(',')
|
41
|
+
end
|
42
|
+
|
11
43
|
def group
|
12
44
|
@group ||= Puppet::Util::ADSI::Group.new(@resource[:name])
|
13
45
|
end
|
@@ -17,7 +17,7 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
|
|
17
17
|
# This should be confined based on macosx_productversion
|
18
18
|
# but puppet resource doesn't make the facts available and
|
19
19
|
# that interface is heavily used with this provider.
|
20
|
-
if
|
20
|
+
if Puppet::FileSystem::File.exist?("/usr/bin/sw_vers")
|
21
21
|
product_version = sw_vers "-productVersion"
|
22
22
|
|
23
23
|
confine :true => unless /^10\.[0-4]/.match(product_version)
|
File without changes
|
File without changes
|
File without changes
|
@@ -251,7 +251,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
251
251
|
Please check your password and try again.")
|
252
252
|
end
|
253
253
|
|
254
|
-
if File.
|
254
|
+
if Puppet::FileSystem::File.exist?("#{users_plist_dir}/#{resource_name}.plist")
|
255
255
|
# If a plist already exists in /var/db/dslocal/nodes/Default/users, then
|
256
256
|
# we will need to extract the binary plist from the 'ShadowHashData'
|
257
257
|
# key, log the new password into the resultant plist's 'SALTED-SHA512'
|
@@ -296,7 +296,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
296
296
|
if (Puppet::Util::Package.versioncmp(get_macosx_version_major, '10.7') == -1)
|
297
297
|
password_hash = nil
|
298
298
|
password_hash_file = "#{password_hash_dir}/#{guid}"
|
299
|
-
if File.
|
299
|
+
if Puppet::FileSystem::File.exist?(password_hash_file) and File.file?(password_hash_file)
|
300
300
|
fail("Could not read password hash file at #{password_hash_file}") if not File.readable?(password_hash_file)
|
301
301
|
f = File.new(password_hash_file)
|
302
302
|
password_hash = f.read
|
@@ -304,7 +304,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
|
|
304
304
|
end
|
305
305
|
password_hash
|
306
306
|
else
|
307
|
-
if File.
|
307
|
+
if Puppet::FileSystem::File.exist?("#{users_plist_dir}/#{username}.plist")
|
308
308
|
# If a plist exists in /var/db/dslocal/nodes/Default/users, we will
|
309
309
|
# extract the binary plist from the 'ShadowHashData' key, decode the
|
310
310
|
# salted-SHA512 password hash, and then return it.
|
@@ -93,7 +93,7 @@ Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Packag
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def query
|
96
|
-
|
96
|
+
Puppet::FileSystem::File.exist?("/var/db/.puppet_appdmg_installed_#{@resource[:name]}") ? {:name => @resource[:name], :ensure => :present} : nil
|
97
97
|
end
|
98
98
|
|
99
99
|
def install
|
@@ -33,7 +33,7 @@ Puppet::Type.type(:package).provide :apple, :parent => Puppet::Provider::Package
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def query
|
36
|
-
|
36
|
+
Puppet::FileSystem::File.exist?("/Library/Receipts/#{@resource[:name]}.pkg") ? {:name => @resource[:name], :ensure => :present} : nil
|
37
37
|
end
|
38
38
|
|
39
39
|
def install
|
@@ -84,7 +84,7 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
|
|
84
84
|
# preseeds answers to dpkg-set-selection from the "responsefile"
|
85
85
|
#
|
86
86
|
def run_preseed
|
87
|
-
if response = @resource[:responsefile] and
|
87
|
+
if response = @resource[:responsefile] and Puppet::FileSystem::File.exist?(response)
|
88
88
|
self.info("Preseeding #{response} to debconf-set-selections")
|
89
89
|
|
90
90
|
preseed response
|
File without changes
|
@@ -18,7 +18,7 @@ Puppet::Type.type(:package).provide :blastwave, :parent => :sun, :source => :sun
|
|
18
18
|
"The pkg-get command is missing; blastwave packaging unavailable"
|
19
19
|
end
|
20
20
|
|
21
|
-
unless
|
21
|
+
unless Puppet::FileSystem::File.exist?("/var/pkg-get/admin")
|
22
22
|
Puppet.notice "It is highly recommended you create '/var/pkg-get/admin'."
|
23
23
|
Puppet.notice "See /var/pkg-get/admin-fullauto"
|
24
24
|
end
|
@@ -40,7 +40,7 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
|
|
40
40
|
private
|
41
41
|
|
42
42
|
# Note: self:: is required here to keep these constants in the context of what will
|
43
|
-
# eventually become this Puppet
|
43
|
+
# eventually become this Puppet::Type::Package::ProviderDpkg class.
|
44
44
|
self::DPKG_DESCRIPTION_DELIMITER = ':DESC:'
|
45
45
|
self::DPKG_QUERY_FORMAT_STRING = %Q{'${Status} ${Package} ${Version} #{self::DPKG_DESCRIPTION_DELIMITER} ${Description}\\n#{self::DPKG_DESCRIPTION_DELIMITER}\\n'}
|
46
46
|
self::FIELDS_REGEX = %r{^(\S+) +(\S+) +(\S+) (\S+) (\S*) #{self::DPKG_DESCRIPTION_DELIMITER} (.*)$}
|
@@ -56,7 +56,7 @@ Puppet::Type.type(:package).provide :fink, :parent => :dpkg, :source => :dpkg do
|
|
56
56
|
# preseeds answers to dpkg-set-selection from the "responsefile"
|
57
57
|
#
|
58
58
|
def run_preseed
|
59
|
-
if response = @resource[:responsefile] and
|
59
|
+
if response = @resource[:responsefile] and Puppet::FileSystem::File.exist?(response)
|
60
60
|
self.info("Preseeding #{response} to debconf-set-selections")
|
61
61
|
|
62
62
|
preseed response
|
File without changes
|
File without changes
|
File without changes
|
@@ -74,22 +74,18 @@ Puppet::Type.type(:package).provide(:msi, :parent => Puppet::Provider::Package)
|
|
74
74
|
# because of the special quoting we need to do around the MSI
|
75
75
|
# properties to use.
|
76
76
|
command = ['msiexec.exe', '/qn', '/norestart', '/i', shell_quote(resource[:source]), install_options].flatten.compact.join(' ')
|
77
|
-
execute(command, :failonfail => false, :combine => true)
|
77
|
+
output = execute(command, :failonfail => false, :combine => true)
|
78
78
|
|
79
|
-
check_result(
|
79
|
+
check_result(output.exitstatus)
|
80
80
|
end
|
81
81
|
|
82
82
|
def uninstall
|
83
83
|
fail("The productcode property is missing.") unless properties[:productcode]
|
84
84
|
|
85
85
|
command = ['msiexec.exe', '/qn', '/norestart', '/x', properties[:productcode], uninstall_options].flatten.compact.join(' ')
|
86
|
-
execute(command, :failonfail => false, :combine => true)
|
86
|
+
output = execute(command, :failonfail => false, :combine => true)
|
87
87
|
|
88
|
-
check_result(
|
89
|
-
end
|
90
|
-
|
91
|
-
def exit_status
|
92
|
-
$CHILD_STATUS.exitstatus
|
88
|
+
check_result(output.exitstatus)
|
93
89
|
end
|
94
90
|
|
95
91
|
# (Un)install may "fail" because the package requested a reboot, the system requested a
|
@@ -102,8 +98,6 @@ Puppet::Type.type(:package).provide(:msi, :parent => Puppet::Provider::Package)
|
|
102
98
|
case hr
|
103
99
|
when 0
|
104
100
|
# yeah
|
105
|
-
when 194
|
106
|
-
warning("The package requested a reboot to finish the operation.")
|
107
101
|
when 1641
|
108
102
|
warning("The package #{operation}ed successfully and the system is rebooting now.")
|
109
103
|
when 3010
|
@@ -151,10 +151,10 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do
|
|
151
151
|
# I spent a lot of time trying to figure out a solution that didn't
|
152
152
|
# require parsing the `nimclient -o showres` output and was unable to
|
153
153
|
# do so.
|
154
|
-
HEADER_LINE_REGEX = /^([^\s]+)\s+[^@]+@@(I|R):(\1)\s+[^\s]+$/
|
155
|
-
PACKAGE_LINE_REGEX = /^.*@@(I|R):(.*)$/
|
156
|
-
RPM_PACKAGE_REGEX = /^(.*)-(.*-\d+) \2$/
|
157
|
-
INSTALLP_PACKAGE_REGEX = /^(.*) (.*)$/
|
154
|
+
self::HEADER_LINE_REGEX = /^([^\s]+)\s+[^@]+@@(I|R):(\1)\s+[^\s]+$/
|
155
|
+
self::PACKAGE_LINE_REGEX = /^.*@@(I|R):(.*)$/
|
156
|
+
self::RPM_PACKAGE_REGEX = /^(.*)-(.*-\d+) \2$/
|
157
|
+
self::INSTALLP_PACKAGE_REGEX = /^(.*) (.*)$/
|
158
158
|
|
159
159
|
# Here is some sample output that shows what the above regexes will be up
|
160
160
|
# against:
|
@@ -205,13 +205,13 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do
|
|
205
205
|
# meant to validate that the header line for the package listing output
|
206
206
|
# looks sane, so we know we're dealing with the kind of output that we
|
207
207
|
# are capable of handling.
|
208
|
-
unless line.match(HEADER_LINE_REGEX)
|
208
|
+
unless line.match(self.class::HEADER_LINE_REGEX)
|
209
209
|
self.fail "Unable to parse output from nimclient showres: line does not match expected package header format:\n'#{line}'"
|
210
210
|
end
|
211
211
|
end
|
212
212
|
|
213
213
|
def parse_installp_package_string(package_string)
|
214
|
-
unless match = package_string.match(INSTALLP_PACKAGE_REGEX)
|
214
|
+
unless match = package_string.match(self.class::INSTALLP_PACKAGE_REGEX)
|
215
215
|
self.fail "Unable to parse output from nimclient showres: package string does not match expected installp package string format:\n'#{package_string}'"
|
216
216
|
end
|
217
217
|
package_name = match.captures[0]
|
@@ -220,7 +220,7 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do
|
|
220
220
|
end
|
221
221
|
|
222
222
|
def parse_rpm_package_string(package_string)
|
223
|
-
unless match = package_string.match(RPM_PACKAGE_REGEX)
|
223
|
+
unless match = package_string.match(self.class::RPM_PACKAGE_REGEX)
|
224
224
|
self.fail "Unable to parse output from nimclient showres: package string does not match expected rpm package string format:\n'#{package_string}'"
|
225
225
|
end
|
226
226
|
package_name = match.captures[0]
|
@@ -229,7 +229,7 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do
|
|
229
229
|
end
|
230
230
|
|
231
231
|
def parse_showres_package_line(line)
|
232
|
-
unless match = line.match(PACKAGE_LINE_REGEX)
|
232
|
+
unless match = line.match(self.class::PACKAGE_LINE_REGEX)
|
233
233
|
self.fail "Unable to parse output from nimclient showres: line does not match expected package line format:\n'#{line}'"
|
234
234
|
end
|
235
235
|
|