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
@@ -21,21 +21,28 @@ describe Puppet::Type.type(:file) do
|
|
21
21
|
File.join(parent, 'file_testing')
|
22
22
|
end
|
23
23
|
|
24
|
+
let(:dir) do
|
25
|
+
# we create a directory first so backups of :path that are stored in
|
26
|
+
# the same directory will also be removed after the tests
|
27
|
+
parent = tmpdir('file_spec')
|
28
|
+
File.join(parent, 'dir_testing')
|
29
|
+
end
|
30
|
+
|
24
31
|
if Puppet.features.posix?
|
25
32
|
def set_mode(mode, file)
|
26
33
|
File.chmod(mode, file)
|
27
34
|
end
|
28
35
|
|
29
36
|
def get_mode(file)
|
30
|
-
File.
|
37
|
+
Puppet::FileSystem::File.new(file).lstat.mode
|
31
38
|
end
|
32
39
|
|
33
40
|
def get_owner(file)
|
34
|
-
File.
|
41
|
+
Puppet::FileSystem::File.new(file).lstat.uid
|
35
42
|
end
|
36
43
|
|
37
44
|
def get_group(file)
|
38
|
-
File.
|
45
|
+
Puppet::FileSystem::File.new(file).lstat.gid
|
39
46
|
end
|
40
47
|
else
|
41
48
|
class SecurityHelper
|
@@ -57,6 +64,10 @@ describe Puppet::Type.type(:file) do
|
|
57
64
|
def get_group(file)
|
58
65
|
SecurityHelper.get_group(file)
|
59
66
|
end
|
67
|
+
|
68
|
+
def get_aces_for_path_by_sid(path, sid)
|
69
|
+
SecurityHelper.get_aces_for_path_by_sid(path, sid)
|
70
|
+
end
|
60
71
|
end
|
61
72
|
|
62
73
|
before do
|
@@ -72,7 +83,7 @@ describe Puppet::Type.type(:file) do
|
|
72
83
|
status = catalog.apply.report.resource_statuses["File[#{source}]"]
|
73
84
|
status.should_not be_failed
|
74
85
|
status.should_not be_changed
|
75
|
-
File.
|
86
|
+
Puppet::FileSystem::File.exist?(source).should be_false
|
76
87
|
end
|
77
88
|
|
78
89
|
describe "when ensure is absent" do
|
@@ -81,14 +92,14 @@ describe Puppet::Type.type(:file) do
|
|
81
92
|
catalog.add_resource(described_class.new(:path => path, :ensure => :absent, :backup => :false))
|
82
93
|
report = catalog.apply.report
|
83
94
|
report.resource_statuses["File[#{path}]"].should_not be_failed
|
84
|
-
File.
|
95
|
+
Puppet::FileSystem::File.exist?(path).should be_false
|
85
96
|
end
|
86
97
|
|
87
98
|
it "should do nothing if file is not present" do
|
88
99
|
catalog.add_resource(described_class.new(:path => path, :ensure => :absent, :backup => :false))
|
89
100
|
report = catalog.apply.report
|
90
101
|
report.resource_statuses["File[#{path}]"].should_not be_failed
|
91
|
-
File.
|
102
|
+
Puppet::FileSystem::File.exist?(path).should be_false
|
92
103
|
end
|
93
104
|
|
94
105
|
# issue #14599
|
@@ -204,7 +215,7 @@ describe Puppet::Type.type(:file) do
|
|
204
215
|
end
|
205
216
|
end
|
206
217
|
|
207
|
-
describe "for links", :
|
218
|
+
describe "for links", :if => described_class.defaultprovider.feature?(:manages_symlinks) do
|
208
219
|
let(:link) { tmpfile('link_mode') }
|
209
220
|
|
210
221
|
describe "when managing links" do
|
@@ -214,7 +225,7 @@ describe Puppet::Type.type(:file) do
|
|
214
225
|
FileUtils.touch(link_target)
|
215
226
|
File.chmod(0444, link_target)
|
216
227
|
|
217
|
-
File.symlink(
|
228
|
+
Puppet::FileSystem::File.new(link_target).symlink(link)
|
218
229
|
end
|
219
230
|
|
220
231
|
it "should not set the executable bit on the link nor the target" do
|
@@ -222,8 +233,8 @@ describe Puppet::Type.type(:file) do
|
|
222
233
|
|
223
234
|
catalog.apply
|
224
235
|
|
225
|
-
(File.
|
226
|
-
(File.
|
236
|
+
(Puppet::FileSystem::File.new(link).stat.mode & 07777) == 0666
|
237
|
+
(Puppet::FileSystem::File.new(link_target).lstat.mode & 07777) == 0444
|
227
238
|
end
|
228
239
|
|
229
240
|
it "should ignore dangling symlinks (#6856)" do
|
@@ -232,7 +243,7 @@ describe Puppet::Type.type(:file) do
|
|
232
243
|
catalog.add_resource described_class.new(:path => link, :ensure => :link, :mode => 0666, :target => link_target, :links => :manage)
|
233
244
|
catalog.apply
|
234
245
|
|
235
|
-
File.
|
246
|
+
Puppet::FileSystem::File.exist?(link).should be_false
|
236
247
|
end
|
237
248
|
|
238
249
|
it "should create a link to the target if ensure is omitted" do
|
@@ -240,9 +251,9 @@ describe Puppet::Type.type(:file) do
|
|
240
251
|
catalog.add_resource described_class.new(:path => link, :target => link_target)
|
241
252
|
catalog.apply
|
242
253
|
|
243
|
-
File.should
|
244
|
-
File.
|
245
|
-
File.
|
254
|
+
Puppet::FileSystem::File.exist?(link).should be_true
|
255
|
+
Puppet::FileSystem::File.new(link).lstat.ftype.should == 'link'
|
256
|
+
Puppet::FileSystem::File.new(link).readlink().should == link_target
|
246
257
|
end
|
247
258
|
end
|
248
259
|
|
@@ -251,7 +262,7 @@ describe Puppet::Type.type(:file) do
|
|
251
262
|
target = tmpfile('dangling')
|
252
263
|
|
253
264
|
FileUtils.touch(target)
|
254
|
-
File.symlink(
|
265
|
+
Puppet::FileSystem::File.new(target).symlink(link)
|
255
266
|
File.delete(target)
|
256
267
|
|
257
268
|
catalog.add_resource described_class.new(:path => path, :source => link, :mode => 0600, :links => :follow)
|
@@ -264,7 +275,7 @@ describe Puppet::Type.type(:file) do
|
|
264
275
|
before :each do
|
265
276
|
File.chmod(0600, link_target)
|
266
277
|
|
267
|
-
File.symlink(
|
278
|
+
Puppet::FileSystem::File.new(link_target).symlink(link)
|
268
279
|
end
|
269
280
|
|
270
281
|
after :each do
|
@@ -327,7 +338,7 @@ describe Puppet::Type.type(:file) do
|
|
327
338
|
before :each do
|
328
339
|
FileUtils.touch(link_target)
|
329
340
|
|
330
|
-
File.symlink(
|
341
|
+
Puppet::FileSystem::File.new(link_target).symlink(link)
|
331
342
|
end
|
332
343
|
|
333
344
|
it "should create the file, not a symlink (#2817, #10315)" do
|
@@ -357,8 +368,8 @@ describe Puppet::Type.type(:file) do
|
|
357
368
|
File.chmod(0666, real_target)
|
358
369
|
|
359
370
|
# link -> target -> real_target
|
360
|
-
File.symlink(
|
361
|
-
File.symlink(
|
371
|
+
Puppet::FileSystem::File.new(real_target).symlink(target)
|
372
|
+
Puppet::FileSystem::File.new(target).symlink(link)
|
362
373
|
end
|
363
374
|
|
364
375
|
after :each do
|
@@ -397,13 +408,13 @@ describe Puppet::Type.type(:file) do
|
|
397
408
|
catalog.add_resource file
|
398
409
|
catalog.add_resource filebucket
|
399
410
|
|
400
|
-
File.open(file[:path], "
|
411
|
+
File.open(file[:path], "w") { |f| f.write("bar") }
|
401
412
|
|
402
|
-
md5 = Digest::MD5.hexdigest(
|
413
|
+
md5 = Digest::MD5.hexdigest("bar")
|
403
414
|
|
404
415
|
catalog.apply
|
405
416
|
|
406
|
-
filebucket.bucket.getfile(md5).should == "bar
|
417
|
+
filebucket.bucket.getfile(md5).should == "bar"
|
407
418
|
end
|
408
419
|
|
409
420
|
it "should backup files in the local directory when a backup string is provided" do
|
@@ -415,7 +426,7 @@ describe Puppet::Type.type(:file) do
|
|
415
426
|
catalog.apply
|
416
427
|
|
417
428
|
backup = file[:path] + ".bak"
|
418
|
-
|
429
|
+
Puppet::FileSystem::File.exist?(backup).should be_true
|
419
430
|
File.read(backup).should == "bar\n"
|
420
431
|
end
|
421
432
|
|
@@ -437,7 +448,7 @@ describe Puppet::Type.type(:file) do
|
|
437
448
|
File.read(file[:path]).should == "bar\n"
|
438
449
|
end
|
439
450
|
|
440
|
-
it "should not backup symlinks", :
|
451
|
+
it "should not backup symlinks", :if => described_class.defaultprovider.feature?(:manages_symlinks) do
|
441
452
|
link = tmpfile("link")
|
442
453
|
dest1 = tmpfile("dest1")
|
443
454
|
dest2 = tmpfile("dest2")
|
@@ -447,14 +458,14 @@ describe Puppet::Type.type(:file) do
|
|
447
458
|
catalog.add_resource bucket
|
448
459
|
|
449
460
|
File.open(dest1, "w") { |f| f.puts "whatever" }
|
450
|
-
File.symlink(
|
461
|
+
Puppet::FileSystem::File.new(dest1).symlink(link)
|
451
462
|
|
452
463
|
md5 = Digest::MD5.hexdigest(File.read(file[:path]))
|
453
464
|
|
454
465
|
catalog.apply
|
455
466
|
|
456
|
-
File.
|
457
|
-
File.exist?(bucket[:path]).should be_false
|
467
|
+
Puppet::FileSystem::File.new(link).readlink().should == dest2
|
468
|
+
Puppet::FileSystem::File.exist?(bucket[:path]).should be_false
|
458
469
|
end
|
459
470
|
|
460
471
|
it "should backup directories to the local filesystem by copying the whole directory" do
|
@@ -574,7 +585,7 @@ describe Puppet::Type.type(:file) do
|
|
574
585
|
end
|
575
586
|
end
|
576
587
|
|
577
|
-
it "should be able to recursively make links to other files", :
|
588
|
+
it "should be able to recursively make links to other files", :if => described_class.defaultprovider.feature?(:manages_symlinks) do
|
578
589
|
source = tmpfile("file_link_integration_source")
|
579
590
|
|
580
591
|
build_path(source)
|
@@ -590,13 +601,13 @@ describe Puppet::Type.type(:file) do
|
|
590
601
|
@dirs.each do |path|
|
591
602
|
link_path = path.sub(source, dest)
|
592
603
|
|
593
|
-
File.
|
604
|
+
Puppet::FileSystem::File.new(link_path).lstat.should be_directory
|
594
605
|
end
|
595
606
|
|
596
607
|
@files.each do |path|
|
597
608
|
link_path = path.sub(source, dest)
|
598
609
|
|
599
|
-
File.
|
610
|
+
Puppet::FileSystem::File.new(link_path).lstat.ftype.should == "link"
|
600
611
|
end
|
601
612
|
end
|
602
613
|
|
@@ -616,13 +627,13 @@ describe Puppet::Type.type(:file) do
|
|
616
627
|
@dirs.each do |path|
|
617
628
|
newpath = path.sub(source, dest)
|
618
629
|
|
619
|
-
File.
|
630
|
+
Puppet::FileSystem::File.new(newpath).lstat.should be_directory
|
620
631
|
end
|
621
632
|
|
622
633
|
@files.each do |path|
|
623
634
|
newpath = path.sub(source, dest)
|
624
635
|
|
625
|
-
File.
|
636
|
+
Puppet::FileSystem::File.new(newpath).lstat.ftype.should == "file"
|
626
637
|
end
|
627
638
|
end
|
628
639
|
|
@@ -685,8 +696,8 @@ describe Puppet::Type.type(:file) do
|
|
685
696
|
catalog.apply
|
686
697
|
|
687
698
|
File.should be_directory(path)
|
688
|
-
File.
|
689
|
-
File.
|
699
|
+
Puppet::FileSystem::File.exist?(File.join(path, 'one')).should be_false
|
700
|
+
Puppet::FileSystem::File.exist?(File.join(path, 'three', 'four')).should be_true
|
690
701
|
end
|
691
702
|
|
692
703
|
it "should recursively copy an empty directory" do
|
@@ -707,7 +718,7 @@ describe Puppet::Type.type(:file) do
|
|
707
718
|
catalog.apply
|
708
719
|
|
709
720
|
File.should be_directory(path)
|
710
|
-
File.
|
721
|
+
Puppet::FileSystem::File.exist?(File.join(path, 'a')).should be_false
|
711
722
|
end
|
712
723
|
|
713
724
|
it "should only recurse one level" do
|
@@ -731,9 +742,9 @@ describe Puppet::Type.type(:file) do
|
|
731
742
|
|
732
743
|
catalog.apply
|
733
744
|
|
734
|
-
File.
|
735
|
-
File.
|
736
|
-
File.
|
745
|
+
Puppet::FileSystem::File.exist?(File.join(path, 'a')).should be_true
|
746
|
+
Puppet::FileSystem::File.exist?(File.join(path, 'a', 'b')).should be_false
|
747
|
+
Puppet::FileSystem::File.exist?(File.join(path, 'z')).should be_false
|
737
748
|
end
|
738
749
|
end
|
739
750
|
|
@@ -830,10 +841,10 @@ describe Puppet::Type.type(:file) do
|
|
830
841
|
catalog.add_resource obj
|
831
842
|
catalog.apply
|
832
843
|
|
833
|
-
File.
|
834
|
-
File.
|
835
|
-
File.
|
836
|
-
File.
|
844
|
+
Puppet::FileSystem::File.exist?(File.join(path, 'a')).should be_true
|
845
|
+
Puppet::FileSystem::File.exist?(File.join(path, 'a', 'b')).should be_false
|
846
|
+
Puppet::FileSystem::File.exist?(File.join(path, 'z')).should be_true
|
847
|
+
Puppet::FileSystem::File.exist?(File.join(path, 'z', 'y')).should be_false
|
837
848
|
end
|
838
849
|
end
|
839
850
|
end
|
@@ -897,7 +908,7 @@ describe Puppet::Type.type(:file) do
|
|
897
908
|
|
898
909
|
expected_mode = Puppet.features.microsoft_windows? ? 0644 : 0755
|
899
910
|
File.read(dest).should == "foo"
|
900
|
-
(File.
|
911
|
+
(Puppet::FileSystem::File.new(dest).stat.mode & 007777).should == expected_mode
|
901
912
|
end
|
902
913
|
|
903
914
|
it "should be able to copy individual files even if recurse has been specified" do
|
@@ -949,7 +960,7 @@ describe Puppet::Type.type(:file) do
|
|
949
960
|
catalog.add_resource file
|
950
961
|
catalog.apply
|
951
962
|
|
952
|
-
File.
|
963
|
+
Puppet::FileSystem::File.exist?(dest).should be_false
|
953
964
|
end
|
954
965
|
|
955
966
|
describe "when sourcing" do
|
@@ -991,6 +1002,38 @@ describe Puppet::Type.type(:file) do
|
|
991
1002
|
end
|
992
1003
|
|
993
1004
|
describe "on Windows systems", :if => Puppet.features.microsoft_windows? do
|
1005
|
+
def expects_sid_granted_full_access_explicitly(path, sid)
|
1006
|
+
inherited_ace = Windows::Security::INHERITED_ACE
|
1007
|
+
|
1008
|
+
aces = get_aces_for_path_by_sid(path, sid)
|
1009
|
+
aces.should_not be_empty
|
1010
|
+
|
1011
|
+
aces.each do |ace|
|
1012
|
+
ace.mask.should == Windows::File::FILE_ALL_ACCESS
|
1013
|
+
(ace.flags & inherited_ace).should_not == inherited_ace
|
1014
|
+
end
|
1015
|
+
end
|
1016
|
+
|
1017
|
+
def expects_system_granted_full_access_explicitly(path)
|
1018
|
+
expects_sid_granted_full_access_explicitly(path, @sids[:system])
|
1019
|
+
end
|
1020
|
+
|
1021
|
+
def expects_at_least_one_inherited_ace_grants_full_access(path, sid)
|
1022
|
+
inherited_ace = Windows::Security::INHERITED_ACE
|
1023
|
+
|
1024
|
+
aces = get_aces_for_path_by_sid(path, sid)
|
1025
|
+
aces.should_not be_empty
|
1026
|
+
|
1027
|
+
aces.any? do |ace|
|
1028
|
+
ace.mask == Windows::File::FILE_ALL_ACCESS &&
|
1029
|
+
(ace.flags & inherited_ace) == inherited_ace
|
1030
|
+
end.should be_true
|
1031
|
+
end
|
1032
|
+
|
1033
|
+
def expects_at_least_one_inherited_system_ace_grants_full_access(path)
|
1034
|
+
expects_at_least_one_inherited_ace_grants_full_access(path, @sids[:system])
|
1035
|
+
end
|
1036
|
+
|
994
1037
|
it "should provide valid default values when ACLs are not supported" do
|
995
1038
|
Puppet::Util::Windows::Security.stubs(:supports_acl?).with(source).returns false
|
996
1039
|
|
@@ -1008,6 +1051,205 @@ describe Puppet::Type.type(:file) do
|
|
1008
1051
|
get_group(path).should =~ /^S\-1\-0\-0.*$/
|
1009
1052
|
get_mode(path).should == 0644
|
1010
1053
|
end
|
1054
|
+
|
1055
|
+
describe "when processing SYSTEM ACEs" do
|
1056
|
+
before do
|
1057
|
+
@sids = {
|
1058
|
+
:current_user => Puppet::Util::Windows::Security.name_to_sid(Sys::Admin.get_login),
|
1059
|
+
:system => Win32::Security::SID::LocalSystem,
|
1060
|
+
:admin => Puppet::Util::Windows::Security.name_to_sid("Administrator"),
|
1061
|
+
:guest => Puppet::Util::Windows::Security.name_to_sid("Guest"),
|
1062
|
+
:users => Win32::Security::SID::BuiltinUsers,
|
1063
|
+
:power_users => Win32::Security::SID::PowerUsers,
|
1064
|
+
:none => Win32::Security::SID::Nobody
|
1065
|
+
}
|
1066
|
+
end
|
1067
|
+
|
1068
|
+
describe "on files" do
|
1069
|
+
before :each do
|
1070
|
+
@file = described_class.new(
|
1071
|
+
:path => path,
|
1072
|
+
:ensure => :file,
|
1073
|
+
:source => source,
|
1074
|
+
:backup => false
|
1075
|
+
)
|
1076
|
+
catalog.add_resource @file
|
1077
|
+
end
|
1078
|
+
|
1079
|
+
describe "when source permissions are ignored" do
|
1080
|
+
before :each do
|
1081
|
+
@file[:source_permissions] = :ignore
|
1082
|
+
end
|
1083
|
+
|
1084
|
+
it "preserves the inherited SYSTEM ACE" do
|
1085
|
+
catalog.apply
|
1086
|
+
|
1087
|
+
expects_at_least_one_inherited_system_ace_grants_full_access(path)
|
1088
|
+
end
|
1089
|
+
end
|
1090
|
+
|
1091
|
+
describe "when permissions are insync?" do
|
1092
|
+
it "preserves the explicit SYSTEM ACE" do
|
1093
|
+
FileUtils.touch(path)
|
1094
|
+
|
1095
|
+
sd = Puppet::Util::Windows::Security.get_security_descriptor(path)
|
1096
|
+
sd.protect = true
|
1097
|
+
sd.owner = @sids[:none]
|
1098
|
+
sd.group = @sids[:none]
|
1099
|
+
Puppet::Util::Windows::Security.set_security_descriptor(source, sd)
|
1100
|
+
Puppet::Util::Windows::Security.set_security_descriptor(path, sd)
|
1101
|
+
|
1102
|
+
catalog.apply
|
1103
|
+
|
1104
|
+
expects_system_granted_full_access_explicitly(path)
|
1105
|
+
end
|
1106
|
+
end
|
1107
|
+
|
1108
|
+
describe "when permissions are not insync?" do
|
1109
|
+
before :each do
|
1110
|
+
@file[:owner] = 'None'
|
1111
|
+
@file[:group] = 'None'
|
1112
|
+
end
|
1113
|
+
|
1114
|
+
it "replaces inherited SYSTEM ACEs with an uninherited one for an existing file" do
|
1115
|
+
FileUtils.touch(path)
|
1116
|
+
|
1117
|
+
expects_at_least_one_inherited_system_ace_grants_full_access(path)
|
1118
|
+
|
1119
|
+
catalog.apply
|
1120
|
+
|
1121
|
+
expects_system_granted_full_access_explicitly(path)
|
1122
|
+
end
|
1123
|
+
|
1124
|
+
it "replaces inherited SYSTEM ACEs for a new file with an uninherited one" do
|
1125
|
+
catalog.apply
|
1126
|
+
|
1127
|
+
expects_system_granted_full_access_explicitly(path)
|
1128
|
+
end
|
1129
|
+
end
|
1130
|
+
|
1131
|
+
describe "created with SYSTEM as the group" do
|
1132
|
+
before :each do
|
1133
|
+
@file[:owner] = @sids[:users]
|
1134
|
+
@file[:group] = @sids[:system]
|
1135
|
+
@file[:mode] = 0644
|
1136
|
+
|
1137
|
+
catalog.apply
|
1138
|
+
end
|
1139
|
+
|
1140
|
+
it "should allow the user to explicitly set the mode to 4" do
|
1141
|
+
system_aces = get_aces_for_path_by_sid(path, @sids[:system])
|
1142
|
+
system_aces.should_not be_empty
|
1143
|
+
|
1144
|
+
system_aces.each do |ace|
|
1145
|
+
ace.mask.should == Windows::File::FILE_GENERIC_READ
|
1146
|
+
end
|
1147
|
+
end
|
1148
|
+
|
1149
|
+
it "prepends SYSTEM ace when changing group from system to power users" do
|
1150
|
+
@file[:group] = @sids[:power_users]
|
1151
|
+
catalog.apply
|
1152
|
+
|
1153
|
+
system_aces = get_aces_for_path_by_sid(path, @sids[:system])
|
1154
|
+
system_aces.size.should == 1
|
1155
|
+
end
|
1156
|
+
end
|
1157
|
+
end
|
1158
|
+
|
1159
|
+
describe "on directories" do
|
1160
|
+
before :each do
|
1161
|
+
@directory = described_class.new(
|
1162
|
+
:path => dir,
|
1163
|
+
:ensure => :directory
|
1164
|
+
)
|
1165
|
+
catalog.add_resource @directory
|
1166
|
+
end
|
1167
|
+
|
1168
|
+
describe "when source permissions are ignored" do
|
1169
|
+
before :each do
|
1170
|
+
@directory[:source_permissions] = :ignore
|
1171
|
+
end
|
1172
|
+
|
1173
|
+
it "preserves the inherited SYSTEM ACE" do
|
1174
|
+
catalog.apply
|
1175
|
+
|
1176
|
+
expects_at_least_one_inherited_system_ace_grants_full_access(dir)
|
1177
|
+
end
|
1178
|
+
end
|
1179
|
+
|
1180
|
+
describe "when permissions are insync?" do
|
1181
|
+
it "preserves the explicit SYSTEM ACE" do
|
1182
|
+
Dir.mkdir(dir)
|
1183
|
+
|
1184
|
+
source_dir = tmpdir('source_dir')
|
1185
|
+
@directory[:source] = source_dir
|
1186
|
+
|
1187
|
+
sd = Puppet::Util::Windows::Security.get_security_descriptor(source_dir)
|
1188
|
+
sd.protect = true
|
1189
|
+
sd.owner = @sids[:none]
|
1190
|
+
sd.group = @sids[:none]
|
1191
|
+
Puppet::Util::Windows::Security.set_security_descriptor(source_dir, sd)
|
1192
|
+
Puppet::Util::Windows::Security.set_security_descriptor(dir, sd)
|
1193
|
+
|
1194
|
+
catalog.apply
|
1195
|
+
|
1196
|
+
expects_system_granted_full_access_explicitly(dir)
|
1197
|
+
end
|
1198
|
+
end
|
1199
|
+
|
1200
|
+
describe "when permissions are not insync?" do
|
1201
|
+
before :each do
|
1202
|
+
@directory[:owner] = 'None'
|
1203
|
+
@directory[:group] = 'None'
|
1204
|
+
@directory[:mode] = 0444
|
1205
|
+
end
|
1206
|
+
|
1207
|
+
it "replaces inherited SYSTEM ACEs with an uninherited one for an existing directory" do
|
1208
|
+
FileUtils.mkdir(dir)
|
1209
|
+
|
1210
|
+
expects_at_least_one_inherited_system_ace_grants_full_access(dir)
|
1211
|
+
|
1212
|
+
catalog.apply
|
1213
|
+
|
1214
|
+
expects_system_granted_full_access_explicitly(dir)
|
1215
|
+
end
|
1216
|
+
|
1217
|
+
it "replaces inherited SYSTEM ACEs with an uninherited one for an existing directory" do
|
1218
|
+
catalog.apply
|
1219
|
+
|
1220
|
+
expects_system_granted_full_access_explicitly(dir)
|
1221
|
+
end
|
1222
|
+
|
1223
|
+
describe "created with SYSTEM as the group" do
|
1224
|
+
before :each do
|
1225
|
+
@directory[:owner] = @sids[:users]
|
1226
|
+
@directory[:group] = @sids[:system]
|
1227
|
+
@directory[:mode] = 0644
|
1228
|
+
|
1229
|
+
catalog.apply
|
1230
|
+
end
|
1231
|
+
|
1232
|
+
it "should allow the user to explicitly set the mode to 4" do
|
1233
|
+
system_aces = get_aces_for_path_by_sid(dir, @sids[:system])
|
1234
|
+
system_aces.should_not be_empty
|
1235
|
+
|
1236
|
+
system_aces.each do |ace|
|
1237
|
+
# unlike files, Puppet sets execute bit on directories that are readable
|
1238
|
+
ace.mask.should == Windows::File::FILE_GENERIC_READ | Windows::File::FILE_GENERIC_EXECUTE
|
1239
|
+
end
|
1240
|
+
end
|
1241
|
+
|
1242
|
+
it "prepends SYSTEM ace when changing group from system to power users" do
|
1243
|
+
@directory[:group] = @sids[:power_users]
|
1244
|
+
catalog.apply
|
1245
|
+
|
1246
|
+
system_aces = get_aces_for_path_by_sid(dir, @sids[:system])
|
1247
|
+
system_aces.size.should == 1
|
1248
|
+
end
|
1249
|
+
end
|
1250
|
+
end
|
1251
|
+
end
|
1252
|
+
end
|
1011
1253
|
end
|
1012
1254
|
end
|
1013
1255
|
|
@@ -1056,7 +1298,7 @@ describe Puppet::Type.type(:file) do
|
|
1056
1298
|
end
|
1057
1299
|
|
1058
1300
|
it "should purge files that are neither remote nor otherwise managed" do
|
1059
|
-
|
1301
|
+
Puppet::FileSystem::File.exist?(@purgee).should be_false
|
1060
1302
|
end
|
1061
1303
|
end
|
1062
1304
|
|