puppet 7.4.0-x64-mingw32 → 7.8.0-x64-mingw32
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.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +2 -2
- data/Gemfile +2 -1
- data/Gemfile.lock +30 -24
- data/ext/osx/puppet.plist +2 -0
- data/install.rb +11 -11
- data/lib/hiera_puppet.rb +1 -1
- data/lib/puppet.rb +37 -37
- data/lib/puppet/agent.rb +6 -6
- data/lib/puppet/agent/disabler.rb +1 -1
- data/lib/puppet/agent/locker.rb +2 -2
- data/lib/puppet/application.rb +6 -6
- data/lib/puppet/application/agent.rb +18 -11
- data/lib/puppet/application/apply.rb +6 -5
- data/lib/puppet/application/catalog.rb +1 -1
- data/lib/puppet/application/config.rb +1 -1
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/device.rb +8 -7
- data/lib/puppet/application/doc.rb +7 -7
- data/lib/puppet/application/epp.rb +2 -2
- data/lib/puppet/application/face_base.rb +2 -2
- data/lib/puppet/application/facts.rb +1 -1
- data/lib/puppet/application/filebucket.rb +2 -2
- data/lib/puppet/application/generate.rb +1 -1
- data/lib/puppet/application/help.rb +1 -1
- data/lib/puppet/application/indirection_base.rb +1 -1
- data/lib/puppet/application/lookup.rb +6 -6
- data/lib/puppet/application/module.rb +1 -1
- data/lib/puppet/application/node.rb +1 -1
- data/lib/puppet/application/parser.rb +2 -2
- data/lib/puppet/application/plugin.rb +1 -1
- data/lib/puppet/application/report.rb +1 -1
- data/lib/puppet/application/resource.rb +3 -2
- data/lib/puppet/application/script.rb +6 -5
- data/lib/puppet/application/ssl.rb +13 -2
- data/lib/puppet/application_support.rb +4 -4
- data/lib/puppet/compilable_resource_type.rb +1 -1
- data/lib/puppet/concurrent/lock.rb +1 -1
- data/lib/puppet/configurer.rb +4 -4
- data/lib/puppet/configurer/downloader.rb +4 -3
- data/lib/puppet/configurer/fact_handler.rb +3 -3
- data/lib/puppet/configurer/plugin_handler.rb +1 -1
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/confine/boolean.rb +1 -1
- data/lib/puppet/confine/exists.rb +1 -1
- data/lib/puppet/confine/false.rb +1 -1
- data/lib/puppet/confine/feature.rb +1 -1
- data/lib/puppet/confine/true.rb +1 -1
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/confine_collection.rb +1 -1
- data/lib/puppet/confiner.rb +1 -1
- data/lib/puppet/context.rb +2 -2
- data/lib/puppet/context/trusted_information.rb +1 -1
- data/lib/puppet/daemon.rb +2 -2
- data/lib/puppet/data_binding.rb +1 -1
- data/lib/puppet/datatypes/error.rb +1 -1
- data/lib/puppet/defaults.rb +18 -12
- data/lib/puppet/environments.rb +17 -2
- data/lib/puppet/etc.rb +1 -1
- data/lib/puppet/external/pson/common.rb +1 -1
- data/lib/puppet/external/pson/pure.rb +3 -3
- data/lib/puppet/face.rb +1 -1
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +2 -2
- data/lib/puppet/face/epp.rb +6 -6
- data/lib/puppet/face/facts.rb +2 -2
- data/lib/puppet/face/generate.rb +2 -2
- data/lib/puppet/face/help.rb +3 -3
- data/lib/puppet/face/module.rb +3 -3
- data/lib/puppet/face/module/install.rb +2 -2
- data/lib/puppet/face/node.rb +1 -1
- data/lib/puppet/face/parser.rb +4 -4
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/face/report.rb +1 -1
- data/lib/puppet/face/resource.rb +1 -1
- data/lib/puppet/feature/base.rb +2 -2
- data/lib/puppet/feature/bolt.rb +1 -1
- data/lib/puppet/feature/cfpropertylist.rb +1 -1
- data/lib/puppet/feature/eventlog.rb +1 -1
- data/lib/puppet/feature/hiera_eyaml.rb +1 -1
- data/lib/puppet/feature/hocon.rb +1 -1
- data/lib/puppet/feature/libuser.rb +2 -2
- data/lib/puppet/feature/msgpack.rb +1 -1
- data/lib/puppet/feature/pe_license.rb +1 -1
- data/lib/puppet/feature/selinux.rb +1 -1
- data/lib/puppet/feature/ssh.rb +1 -1
- data/lib/puppet/feature/telnet.rb +1 -1
- data/lib/puppet/feature/zlib.rb +1 -1
- data/lib/puppet/ffi/posix.rb +2 -2
- data/lib/puppet/ffi/posix/constants.rb +1 -1
- data/lib/puppet/ffi/posix/functions.rb +1 -1
- data/lib/puppet/ffi/windows.rb +4 -4
- data/lib/puppet/ffi/windows/api_types.rb +3 -3
- data/lib/puppet/ffi/windows/constants.rb +1 -1
- data/lib/puppet/ffi/windows/functions.rb +1 -1
- data/lib/puppet/ffi/windows/structs.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +4 -4
- data/lib/puppet/file_bucket/file.rb +3 -3
- data/lib/puppet/file_serving/base.rb +2 -2
- data/lib/puppet/file_serving/configuration.rb +10 -10
- data/lib/puppet/file_serving/configuration/parser.rb +2 -2
- data/lib/puppet/file_serving/content.rb +3 -3
- data/lib/puppet/file_serving/fileset.rb +16 -4
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +6 -6
- data/lib/puppet/file_serving/mount.rb +4 -4
- data/lib/puppet/file_serving/mount/file.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -1
- data/lib/puppet/file_serving/mount/modules.rb +1 -1
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -1
- data/lib/puppet/file_serving/mount/plugins.rb +1 -1
- data/lib/puppet/file_serving/mount/tasks.rb +1 -1
- data/lib/puppet/file_serving/terminus_helper.rb +2 -2
- data/lib/puppet/file_serving/terminus_selector.rb +1 -1
- data/lib/puppet/file_system.rb +9 -9
- data/lib/puppet/file_system/jruby.rb +1 -1
- data/lib/puppet/file_system/memory_file.rb +8 -1
- data/lib/puppet/file_system/path_pattern.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/file_system/windows.rb +4 -2
- data/lib/puppet/forge.rb +5 -5
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/errors.rb +3 -3
- data/lib/puppet/forge/repository.rb +4 -4
- data/lib/puppet/functions.rb +1 -1
- data/lib/puppet/functions/all.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/capitalize.rb +2 -2
- data/lib/puppet/functions/downcase.rb +2 -2
- data/lib/puppet/functions/get.rb +5 -5
- data/lib/puppet/functions/group_by.rb +13 -5
- data/lib/puppet/functions/lest.rb +1 -1
- data/lib/puppet/functions/new.rb +100 -100
- data/lib/puppet/functions/partition.rb +12 -4
- data/lib/puppet/functions/require.rb +5 -5
- data/lib/puppet/functions/sort.rb +3 -3
- data/lib/puppet/functions/tree_each.rb +7 -9
- data/lib/puppet/functions/type.rb +4 -4
- data/lib/puppet/functions/upcase.rb +2 -2
- data/lib/puppet/functions/versioncmp.rb +1 -1
- data/lib/puppet/generate/models/type/type.rb +1 -1
- data/lib/puppet/generate/type.rb +2 -2
- data/lib/puppet/gettext/config.rb +3 -3
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph.rb +6 -6
- data/lib/puppet/graph/simple_graph.rb +2 -2
- data/lib/puppet/http.rb +26 -26
- data/lib/puppet/http/factory.rb +6 -2
- data/lib/puppet/http/proxy.rb +1 -1
- data/lib/puppet/http/resolver/server_list.rb +15 -4
- data/lib/puppet/http/service/compiler.rb +73 -1
- data/lib/puppet/http/service/file_server.rb +3 -2
- data/lib/puppet/indirector.rb +5 -5
- data/lib/puppet/indirector/catalog/compiler.rb +7 -6
- data/lib/puppet/indirector/catalog/json.rb +2 -2
- data/lib/puppet/indirector/catalog/msgpack.rb +2 -2
- data/lib/puppet/indirector/catalog/rest.rb +2 -2
- data/lib/puppet/indirector/catalog/store_configs.rb +2 -2
- data/lib/puppet/indirector/catalog/yaml.rb +2 -2
- data/lib/puppet/indirector/code.rb +1 -1
- data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
- data/lib/puppet/indirector/data_binding/none.rb +1 -1
- data/lib/puppet/indirector/direct_file_server.rb +2 -2
- data/lib/puppet/indirector/envelope.rb +1 -1
- data/lib/puppet/indirector/errors.rb +1 -1
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/face.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +2 -2
- data/lib/puppet/indirector/facts/json.rb +3 -3
- data/lib/puppet/indirector/facts/memory.rb +2 -2
- data/lib/puppet/indirector/facts/network_device.rb +2 -2
- data/lib/puppet/indirector/facts/rest.rb +2 -2
- data/lib/puppet/indirector/facts/store_configs.rb +2 -2
- data/lib/puppet/indirector/facts/yaml.rb +3 -3
- data/lib/puppet/indirector/file_bucket_file/file.rb +4 -4
- data/lib/puppet/indirector/file_bucket_file/rest.rb +2 -2
- data/lib/puppet/indirector/file_bucket_file/selector.rb +1 -1
- data/lib/puppet/indirector/file_content.rb +1 -1
- data/lib/puppet/indirector/file_content/file.rb +3 -3
- data/lib/puppet/indirector/file_content/file_server.rb +3 -3
- data/lib/puppet/indirector/file_content/rest.rb +3 -3
- data/lib/puppet/indirector/file_content/selector.rb +4 -4
- data/lib/puppet/indirector/file_metadata.rb +1 -1
- data/lib/puppet/indirector/file_metadata/file.rb +3 -3
- data/lib/puppet/indirector/file_metadata/file_server.rb +3 -3
- data/lib/puppet/indirector/file_metadata/http.rb +3 -3
- data/lib/puppet/indirector/file_metadata/rest.rb +4 -3
- data/lib/puppet/indirector/file_metadata/selector.rb +4 -4
- data/lib/puppet/indirector/file_server.rb +4 -4
- data/lib/puppet/indirector/generic_http.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +1 -1
- data/lib/puppet/indirector/indirection.rb +5 -5
- data/lib/puppet/indirector/json.rb +2 -2
- data/lib/puppet/indirector/memory.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +2 -2
- data/lib/puppet/indirector/node/exec.rb +2 -2
- data/lib/puppet/indirector/node/json.rb +2 -2
- data/lib/puppet/indirector/node/memory.rb +2 -2
- data/lib/puppet/indirector/node/msgpack.rb +2 -2
- data/lib/puppet/indirector/node/plain.rb +2 -2
- data/lib/puppet/indirector/node/rest.rb +2 -2
- data/lib/puppet/indirector/node/store_configs.rb +2 -2
- data/lib/puppet/indirector/node/yaml.rb +2 -2
- data/lib/puppet/indirector/none.rb +1 -1
- data/lib/puppet/indirector/plain.rb +1 -1
- data/lib/puppet/indirector/report/json.rb +2 -2
- data/lib/puppet/indirector/report/msgpack.rb +2 -2
- data/lib/puppet/indirector/report/processor.rb +3 -3
- data/lib/puppet/indirector/report/rest.rb +1 -1
- data/lib/puppet/indirector/report/yaml.rb +2 -2
- data/lib/puppet/indirector/request.rb +3 -3
- data/lib/puppet/indirector/resource/ral.rb +1 -1
- data/lib/puppet/indirector/resource/store_configs.rb +2 -2
- data/lib/puppet/indirector/terminus.rb +5 -5
- data/lib/puppet/indirector/yaml.rb +2 -2
- data/lib/puppet/info_service.rb +3 -3
- data/lib/puppet/info_service/class_information_service.rb +3 -3
- data/lib/puppet/info_service/plan_information_service.rb +1 -1
- data/lib/puppet/info_service/task_information_service.rb +1 -1
- data/lib/puppet/interface.rb +10 -10
- data/lib/puppet/interface/documentation.rb +1 -1
- data/lib/puppet/loaders.rb +21 -25
- data/lib/puppet/metatype/manager.rb +3 -3
- data/lib/puppet/module.rb +5 -4
- data/lib/puppet/module/plan.rb +1 -1
- data/lib/puppet/module/task.rb +1 -1
- data/lib/puppet/module_tool.rb +10 -10
- data/lib/puppet/module_tool/applications.rb +7 -7
- data/lib/puppet/module_tool/applications/application.rb +2 -2
- data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
- data/lib/puppet/module_tool/applications/installer.rb +7 -7
- data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
- data/lib/puppet/module_tool/applications/upgrader.rb +5 -5
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/contents_description.rb +1 -1
- data/lib/puppet/module_tool/dependency.rb +2 -2
- data/lib/puppet/module_tool/errors.rb +6 -6
- data/lib/puppet/module_tool/install_directory.rb +2 -2
- data/lib/puppet/module_tool/installed_modules.rb +2 -2
- data/lib/puppet/module_tool/local_tarball.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +3 -3
- data/lib/puppet/module_tool/tar.rb +4 -4
- data/lib/puppet/network/format.rb +1 -1
- data/lib/puppet/network/format_handler.rb +3 -3
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +2 -2
- data/lib/puppet/network/http.rb +17 -14
- data/lib/puppet/network/http/api.rb +11 -7
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master.rb +3 -2
- data/lib/puppet/network/http/api/master/v3.rb +2 -25
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -33
- data/lib/puppet/network/http/api/server.rb +10 -0
- data/lib/puppet/network/http/api/server/v3.rb +39 -0
- data/lib/puppet/network/http/api/server/v3/environments.rb +48 -0
- data/lib/puppet/network/http/connection.rb +1 -1
- data/lib/puppet/network/http/error.rb +1 -1
- data/lib/puppet/network/http/handler.rb +3 -3
- data/lib/puppet/network/http_pool.rb +1 -1
- data/lib/puppet/node.rb +3 -3
- data/lib/puppet/node/environment.rb +15 -8
- data/lib/puppet/node/facts.rb +3 -3
- data/lib/puppet/pal/pal_api.rb +10 -10
- data/lib/puppet/pal/pal_impl.rb +3 -3
- data/lib/puppet/parameter.rb +4 -4
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/path.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parameter/value_collection.rb +1 -1
- data/lib/puppet/parser.rb +10 -10
- data/lib/puppet/parser/ast.rb +8 -8
- data/lib/puppet/parser/ast/hostclass.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +2 -2
- data/lib/puppet/parser/catalog_compiler.rb +2 -2
- data/lib/puppet/parser/compiler.rb +5 -5
- data/lib/puppet/parser/e4_parser_adapter.rb +1 -1
- data/lib/puppet/parser/functions.rb +4 -4
- data/lib/puppet/parser/functions/digest.rb +1 -1
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
- data/lib/puppet/parser/functions/versioncmp.rb +1 -1
- data/lib/puppet/parser/parser_factory.rb +2 -2
- data/lib/puppet/parser/resource.rb +3 -3
- data/lib/puppet/parser/scope.rb +3 -3
- data/lib/puppet/parser/script_compiler.rb +2 -2
- data/lib/puppet/parser/templatewrapper.rb +2 -2
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/configuration.rb +5 -5
- data/lib/puppet/pops.rb +57 -57
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +7 -7
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/loader/base_loader.rb +42 -32
- data/lib/puppet/pops/loader/dependency_loader.rb +2 -2
- data/lib/puppet/pops/loader/loader.rb +15 -5
- data/lib/puppet/pops/loader/module_loaders.rb +8 -8
- data/lib/puppet/pops/loader/predefined_loader.rb +4 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +1 -1
- data/lib/puppet/pops/loader/static_loader.rb +4 -0
- data/lib/puppet/pops/loader/task_instantiator.rb +1 -1
- data/lib/puppet/pops/loaders.rb +4 -4
- data/lib/puppet/pops/lookup/invocation.rb +1 -1
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/pn_transformer.rb +1 -1
- data/lib/puppet/pops/parser/eparser.rb +2 -2
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/lexer2.rb +5 -9
- data/lib/puppet/pops/parser/lexer_support.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +4 -4
- data/lib/puppet/pops/puppet_stack.rb +1 -1
- data/lib/puppet/pops/serialization/json.rb +1 -1
- data/lib/puppet/pops/serialization/json_path.rb +1 -1
- data/lib/puppet/pops/time/timespan.rb +1 -1
- data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
- data/lib/puppet/pops/types/p_type_set_type.rb +1 -1
- data/lib/puppet/pops/types/string_converter.rb +1 -1
- data/lib/puppet/pops/types/type_calculator.rb +1 -1
- data/lib/puppet/pops/types/type_formatter.rb +1 -1
- data/lib/puppet/pops/types/type_parser.rb +1 -1
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/pops/validation/checker4_0.rb +1 -2
- data/lib/puppet/property.rb +3 -3
- data/lib/puppet/property/boolean.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/property/keyvalue.rb +1 -1
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/provider.rb +2 -2
- data/lib/puppet/provider/confine.rb +2 -2
- data/lib/puppet/provider/exec.rb +2 -2
- data/lib/puppet/provider/exec/posix.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/file/posix.rb +1 -1
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/aix.rb +1 -1
- data/lib/puppet/provider/group/directoryservice.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +2 -2
- data/lib/puppet/provider/group/ldap.rb +1 -1
- data/lib/puppet/provider/group/pw.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +1 -1
- data/lib/puppet/provider/ldap.rb +2 -2
- data/lib/puppet/provider/nameservice.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
- data/lib/puppet/provider/nameservice/objectadd.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +1 -1
- data/lib/puppet/provider/package.rb +1 -1
- data/lib/puppet/provider/package/aix.rb +2 -2
- data/lib/puppet/provider/package/appdmg.rb +2 -2
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +5 -5
- data/lib/puppet/provider/package/dnfmodule.rb +2 -2
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +3 -3
- data/lib/puppet/provider/package/hpux.rb +1 -1
- data/lib/puppet/provider/package/macports.rb +2 -2
- data/lib/puppet/provider/package/nim.rb +13 -8
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/opkg.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +3 -3
- data/lib/puppet/provider/package/pkg.rb +2 -2
- data/lib/puppet/provider/package/pkgdmg.rb +3 -3
- data/lib/puppet/provider/package/pkgin.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/portupgrade.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +12 -1
- data/lib/puppet/provider/package/puppetserver_gem.rb +0 -0
- data/lib/puppet/provider/package/rpm.rb +2 -2
- data/lib/puppet/provider/package/sun.rb +1 -1
- data/lib/puppet/provider/package/windows.rb +3 -3
- data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
- data/lib/puppet/provider/package/windows/msi_package.rb +1 -1
- data/lib/puppet/provider/package/windows/package.rb +4 -4
- data/lib/puppet/provider/package/yum.rb +6 -6
- data/lib/puppet/provider/package/zypper.rb +3 -3
- data/lib/puppet/provider/package_targetable.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +3 -3
- data/lib/puppet/provider/service/base.rb +6 -4
- data/lib/puppet/provider/service/daemontools.rb +0 -1
- data/lib/puppet/provider/service/debian.rb +3 -5
- data/lib/puppet/provider/service/freebsd.rb +1 -1
- data/lib/puppet/provider/service/init.rb +1 -1
- data/lib/puppet/provider/service/launchd.rb +9 -3
- data/lib/puppet/provider/service/service.rb +28 -3
- data/lib/puppet/provider/service/smf.rb +0 -24
- data/lib/puppet/provider/service/src.rb +2 -2
- data/lib/puppet/provider/service/systemd.rb +18 -8
- data/lib/puppet/provider/service/windows.rb +38 -0
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +26 -13
- data/lib/puppet/provider/user/ldap.rb +1 -1
- data/lib/puppet/provider/user/openbsd.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +2 -2
- data/lib/puppet/provider/user/useradd.rb +12 -5
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/indirection.rb +4 -4
- data/lib/puppet/reference/report.rb +1 -1
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/reports/http.rb +2 -2
- data/lib/puppet/reports/log.rb +1 -1
- data/lib/puppet/reports/store.rb +2 -2
- data/lib/puppet/resource.rb +4 -4
- data/lib/puppet/resource/catalog.rb +5 -5
- data/lib/puppet/resource/status.rb +2 -2
- data/lib/puppet/resource/type.rb +4 -4
- data/lib/puppet/resource/type_collection.rb +4 -4
- data/lib/puppet/runtime.rb +1 -1
- data/lib/puppet/scheduler.rb +4 -4
- data/lib/puppet/settings.rb +31 -30
- data/lib/puppet/settings/autosign_setting.rb +1 -1
- data/lib/puppet/settings/base_setting.rb +2 -2
- data/lib/puppet/settings/certificate_revocation_setting.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/settings/errors.rb +1 -1
- data/lib/puppet/settings/priority_setting.rb +3 -3
- data/lib/puppet/ssl.rb +11 -11
- data/lib/puppet/ssl/base.rb +3 -3
- data/lib/puppet/ssl/certificate.rb +1 -1
- data/lib/puppet/ssl/certificate_request.rb +2 -2
- data/lib/puppet/ssl/certificate_request_attributes.rb +2 -2
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/ssl/openssl_loader.rb +1 -1
- data/lib/puppet/ssl/ssl_context.rb +1 -1
- data/lib/puppet/ssl/ssl_provider.rb +1 -1
- data/lib/puppet/ssl/state_machine.rb +2 -2
- data/lib/puppet/ssl/verifier.rb +5 -1
- data/lib/puppet/syntax_checkers/base64.rb +1 -1
- data/lib/puppet/syntax_checkers/epp.rb +1 -1
- data/lib/puppet/syntax_checkers/json.rb +1 -1
- data/lib/puppet/syntax_checkers/pp.rb +1 -1
- data/lib/puppet/transaction.rb +11 -11
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +4 -4
- data/lib/puppet/transaction/event_manager.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +14 -14
- data/lib/puppet/type/component.rb +3 -3
- data/lib/puppet/type/file.rb +37 -19
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/checksum_value.rb +2 -2
- data/lib/puppet/type/file/content.rb +2 -2
- data/lib/puppet/type/file/data_sync.rb +2 -2
- data/lib/puppet/type/file/ensure.rb +1 -1
- data/lib/puppet/type/file/group.rb +1 -1
- data/lib/puppet/type/file/mode.rb +1 -1
- data/lib/puppet/type/file/selcontext.rb +2 -2
- data/lib/puppet/type/file/source.rb +4 -4
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/package.rb +2 -2
- data/lib/puppet/type/resources.rb +2 -2
- data/lib/puppet/type/service.rb +18 -38
- data/lib/puppet/type/tidy.rb +24 -5
- data/lib/puppet/type/user.rb +42 -24
- data/lib/puppet/util.rb +43 -34
- data/lib/puppet/util/at_fork.rb +3 -3
- data/lib/puppet/util/at_fork/solaris.rb +1 -1
- data/lib/puppet/util/autoload.rb +4 -4
- data/lib/puppet/util/checksums.rb +3 -3
- data/lib/puppet/util/colors.rb +1 -1
- data/lib/puppet/util/command_line.rb +6 -6
- data/lib/puppet/util/command_line/puppet_option_parser.rb +2 -2
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/feature.rb +2 -2
- data/lib/puppet/util/filetype.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +1 -1
- data/lib/puppet/util/inifile.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +3 -3
- data/lib/puppet/util/json_lockfile.rb +1 -1
- data/lib/puppet/util/ldap/connection.rb +1 -1
- data/lib/puppet/util/ldap/generator.rb +1 -1
- data/lib/puppet/util/ldap/manager.rb +3 -3
- data/lib/puppet/util/limits.rb +1 -1
- data/lib/puppet/util/log.rb +6 -6
- data/lib/puppet/util/log/destinations.rb +1 -1
- data/lib/puppet/util/logging.rb +2 -2
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +14 -3
- data/lib/puppet/util/network_device/base.rb +3 -3
- data/lib/puppet/util/network_device/config.rb +2 -2
- data/lib/puppet/util/network_device/transport.rb +1 -1
- data/lib/puppet/util/network_device/transport/base.rb +2 -2
- data/lib/puppet/util/package/version/range.rb +6 -6
- data/lib/puppet/util/package/version/range/eq.rb +1 -1
- data/lib/puppet/util/package/version/range/gt.rb +1 -1
- data/lib/puppet/util/package/version/range/gt_eq.rb +1 -1
- data/lib/puppet/util/package/version/range/lt.rb +1 -1
- data/lib/puppet/util/package/version/range/lt_eq.rb +1 -1
- data/lib/puppet/util/package/version/range/min_max.rb +1 -1
- data/lib/puppet/util/package/version/range/simple.rb +1 -1
- data/lib/puppet/util/package/version/rpm.rb +1 -1
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/plist.rb +1 -1
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/profiler.rb +3 -3
- data/lib/puppet/util/profiler/aggregate.rb +2 -2
- data/lib/puppet/util/profiler/object_counts.rb +1 -1
- data/lib/puppet/util/profiler/wall_clock.rb +1 -1
- data/lib/puppet/util/provider_features.rb +2 -2
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser.rb +6 -6
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +2 -2
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/selinux.rb +30 -4
- data/lib/puppet/util/skip_tags.rb +1 -1
- data/lib/puppet/util/storage.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +2 -2
- data/lib/puppet/util/symbolic_file_mode.rb +1 -1
- data/lib/puppet/util/tag_set.rb +1 -1
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/watched_file.rb +1 -1
- data/lib/puppet/util/watcher.rb +3 -3
- data/lib/puppet/util/windows.rb +20 -20
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +47 -1
- data/lib/puppet/util/windows/daemon.rb +1 -1
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/file.rb +1 -1
- data/lib/puppet/util/windows/monkey_patches/process.rb +2 -2
- data/lib/puppet/util/windows/principal.rb +10 -3
- data/lib/puppet/util/windows/process.rb +2 -2
- data/lib/puppet/util/windows/registry.rb +1 -1
- data/lib/puppet/util/windows/root_certs.rb +2 -2
- data/lib/puppet/util/windows/security.rb +1 -1
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/service.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +5 -3
- data/lib/puppet/util/windows/user.rb +1 -1
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +4 -4
- data/lib/puppet/x509/cert_provider.rb +1 -1
- data/lib/puppet/x509/pem_store.rb +1 -1
- data/lib/puppet_pal.rb +2 -2
- data/locales/puppet.pot +183 -175
- data/man/man5/puppet.conf.5 +266 -240
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +5 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
- data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/ca.pem +57 -35
- data/spec/fixtures/ssl/crl.pem +28 -18
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +33 -24
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +108 -58
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
- data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
- data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
- data/spec/fixtures/ssl/intermediate.pem +57 -36
- data/spec/fixtures/ssl/pluto-key.pem +107 -57
- data/spec/fixtures/ssl/pluto.pem +52 -30
- data/spec/fixtures/ssl/request-key.pem +107 -57
- data/spec/fixtures/ssl/request.pem +47 -26
- data/spec/fixtures/ssl/revoked-key.pem +107 -57
- data/spec/fixtures/ssl/revoked.pem +52 -30
- data/spec/fixtures/ssl/signed-key.pem +107 -57
- data/spec/fixtures/ssl/signed.pem +52 -30
- data/spec/fixtures/ssl/tampered-cert.pem +52 -30
- data/spec/fixtures/ssl/tampered-csr.pem +47 -26
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
- data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-ca.pem +55 -33
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +9 -0
- data/spec/integration/application/plugin_spec.rb +1 -1
- data/spec/integration/application/resource_spec.rb +30 -0
- data/spec/integration/http/client_spec.rb +12 -0
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -3
- data/spec/integration/parser/collection_spec.rb +10 -0
- data/spec/integration/type/file_spec.rb +5 -5
- data/spec/integration/util/windows/adsi_spec.rb +18 -0
- data/spec/integration/util/windows/principal_spec.rb +21 -0
- data/spec/integration/util/windows/registry_spec.rb +6 -0
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/files.rb +1 -1
- data/spec/shared_contexts/provider.rb +16 -0
- data/spec/spec_helper.rb +11 -1
- data/spec/unit/application/agent_spec.rb +7 -2
- data/spec/unit/application/facts_spec.rb +5 -5
- data/spec/unit/application/ssl_spec.rb +23 -0
- data/spec/unit/configurer/downloader_spec.rb +6 -0
- data/spec/unit/configurer_spec.rb +23 -0
- data/spec/unit/environments_spec.rb +164 -88
- data/spec/unit/file_bucket/dipper_spec.rb +1 -1
- data/spec/unit/file_serving/fileset_spec.rb +60 -0
- data/spec/unit/file_system_spec.rb +9 -0
- data/spec/unit/functions4_spec.rb +17 -8
- data/spec/unit/gettext/config_spec.rb +12 -0
- data/spec/unit/http/factory_spec.rb +19 -0
- data/spec/unit/http/service/compiler_spec.rb +123 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +14 -10
- data/spec/unit/module_spec.rb +1 -1
- data/spec/unit/network/http/api/master_spec.rb +38 -0
- data/spec/unit/network/http/api/{master → server}/v3/environments_spec.rb +2 -2
- data/spec/unit/network/http/api/{master → server}/v3_spec.rb +19 -19
- data/spec/unit/network/http/api_spec.rb +11 -11
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
- data/spec/unit/pops/lookup/context_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +0 -4
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
- data/spec/unit/pops/types/type_parser_spec.rb +2 -1
- data/spec/unit/pops/validator/validator_spec.rb +20 -43
- data/spec/unit/provider/package/dnfmodule_spec.rb +13 -4
- data/spec/unit/provider/package/gem_spec.rb +3 -1
- data/spec/unit/provider/package/nim_spec.rb +42 -0
- data/spec/unit/provider/package/pip2_spec.rb +3 -1
- data/spec/unit/provider/package/pip3_spec.rb +3 -1
- data/spec/unit/provider/package/pip_spec.rb +3 -1
- data/spec/unit/provider/package/pkg_spec.rb +44 -44
- data/spec/unit/provider/package/puppet_gem_spec.rb +31 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +2 -0
- data/spec/unit/provider/service/base_spec.rb +8 -8
- data/spec/unit/provider/service/bsd_spec.rb +0 -4
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +15 -17
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +19 -14
- data/spec/unit/provider/service/init_spec.rb +29 -20
- data/spec/unit/provider/service/launchd_spec.rb +10 -12
- data/spec/unit/provider/service/openbsd_spec.rb +21 -35
- data/spec/unit/provider/service/openrc_spec.rb +15 -14
- data/spec/unit/provider/service/openwrt_spec.rb +3 -1
- data/spec/unit/provider/service/redhat_spec.rb +20 -19
- data/spec/unit/provider/service/smf_spec.rb +6 -5
- data/spec/unit/provider/service/src_spec.rb +5 -10
- data/spec/unit/provider/service/systemd_spec.rb +80 -29
- data/spec/unit/provider/service/upstart_spec.rb +25 -20
- data/spec/unit/provider/service/windows_spec.rb +202 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +67 -35
- data/spec/unit/provider/user/useradd_spec.rb +21 -6
- data/spec/unit/resource/catalog_spec.rb +1 -1
- data/spec/unit/ssl/state_machine_spec.rb +19 -5
- data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
- data/spec/unit/transaction_spec.rb +18 -20
- data/spec/unit/type/file/selinux_spec.rb +3 -3
- data/spec/unit/type/service_spec.rb +59 -188
- data/spec/unit/type/tidy_spec.rb +17 -7
- data/spec/unit/type/user_spec.rb +45 -0
- data/spec/unit/util/at_fork_spec.rb +9 -9
- data/spec/unit/util/posix_spec.rb +1 -1
- data/spec/unit/util/selinux_spec.rb +87 -16
- data/spec/unit/util/windows/sid_spec.rb +6 -0
- data/tasks/generate_cert_fixtures.rake +2 -2
- metadata +17 -16
- data/spec/lib/matchers/include.rb +0 -27
- data/spec/lib/matchers/include_spec.rb +0 -32
- data/spec/unit/pops/parser/parse_application_spec.rb +0 -13
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -23
- data/spec/unit/pops/parser/parse_site_spec.rb +0 -43
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'matchers/include'
|
3
2
|
|
4
3
|
require 'puppet/indirector/file_content/file'
|
5
4
|
require 'puppet/indirector/file_metadata/file'
|
@@ -30,7 +29,6 @@ end
|
|
30
29
|
|
31
30
|
describe Puppet::Indirector::DirectFileServer, " when interacting with FileServing::Fileset and the model" do
|
32
31
|
include PuppetSpec::Files
|
33
|
-
include Matchers::Include
|
34
32
|
|
35
33
|
matcher :file_with_content do |name, content|
|
36
34
|
match do |actual|
|
@@ -52,7 +50,7 @@ describe Puppet::Indirector::DirectFileServer, " when interacting with FileServi
|
|
52
50
|
terminus = Puppet::Indirector::FileContent::File.new
|
53
51
|
request = terminus.indirection.request(:search, Puppet::Util.path_to_uri(path).to_s, nil, :recurse => true)
|
54
52
|
|
55
|
-
expect(terminus.search(request)).to
|
53
|
+
expect(terminus.search(request)).to contain_exactly(
|
56
54
|
file_with_content(File.join(path, "one"), "one content"),
|
57
55
|
file_with_content(File.join(path, "two"), "two content"),
|
58
56
|
directory_named(path))
|
@@ -235,6 +235,16 @@ describe 'collectors' do
|
|
235
235
|
MANIFEST
|
236
236
|
end
|
237
237
|
|
238
|
+
it "splats attributes from a hash" do
|
239
|
+
expect_the_message_to_be(["overridden message"], <<-MANIFEST)
|
240
|
+
@notify { "testing": message => "original message" }
|
241
|
+
|
242
|
+
Notify <| |> {
|
243
|
+
* => { message => "overridden message" }
|
244
|
+
}
|
245
|
+
MANIFEST
|
246
|
+
end
|
247
|
+
|
238
248
|
it "collects with override when inside a class (#10963)" do
|
239
249
|
expect_the_message_to_be(["overridden message"], <<-MANIFEST)
|
240
250
|
@notify { "testing": message => "original message" }
|
@@ -895,7 +895,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
895
895
|
|
896
896
|
# Change the source file.
|
897
897
|
File.open(checksum_file, "wb") { |f| f.write "some content" }
|
898
|
-
FileUtils.touch target_file, :
|
898
|
+
FileUtils.touch target_file, mtime: Time.now - 20
|
899
899
|
|
900
900
|
# The 2nd time should update the resource.
|
901
901
|
second_catalog.add_resource Puppet::Type.send(:newfile, @options)
|
@@ -1399,7 +1399,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1399
1399
|
it "should fetch if no header specified" do
|
1400
1400
|
File.open(httppath, "wb") { |f| f.puts "Content originally on disk\n" }
|
1401
1401
|
# make sure the mtime is not "right now", lest we get a race
|
1402
|
-
FileUtils.touch httppath, :
|
1402
|
+
FileUtils.touch httppath, mtime: Time.parse("Sun, 22 Mar 2015 22:57:43 GMT")
|
1403
1403
|
catalog.add_resource resource
|
1404
1404
|
catalog.apply
|
1405
1405
|
expect(Puppet::FileSystem.exist?(httppath)).to be_truthy
|
@@ -1409,7 +1409,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1409
1409
|
it "should fetch if mtime is older on disk" do
|
1410
1410
|
File.open(httppath, "wb") { |f| f.puts "Content originally on disk\n" }
|
1411
1411
|
# fixture has Last-Modified: Sun, 22 Mar 2015 22:25:34 GMT
|
1412
|
-
FileUtils.touch httppath, :
|
1412
|
+
FileUtils.touch httppath, mtime: Time.parse("Sun, 22 Mar 2015 22:22:34 GMT")
|
1413
1413
|
catalog.add_resource resource
|
1414
1414
|
catalog.apply
|
1415
1415
|
expect(Puppet::FileSystem.exist?(httppath)).to be_truthy
|
@@ -1455,7 +1455,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1455
1455
|
it "should not update if content on disk is up-to-date" do
|
1456
1456
|
File.open(httppath, "wb") { |f| f.puts "Content via HTTP\n" }
|
1457
1457
|
disk_mtime = Time.parse("Sun, 22 Mar 2015 22:22:34 GMT")
|
1458
|
-
FileUtils.touch httppath, :
|
1458
|
+
FileUtils.touch httppath, mtime: disk_mtime
|
1459
1459
|
catalog.add_resource resource
|
1460
1460
|
catalog.apply
|
1461
1461
|
expect(Puppet::FileSystem.exist?(httppath)).to be_truthy
|
@@ -2002,7 +2002,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
2002
2002
|
it "should not update mtime on an old directory" do
|
2003
2003
|
disk_mtime = Time.parse("Sun, 22 Mar 2015 22:22:34 GMT")
|
2004
2004
|
FileUtils.mkdir_p path
|
2005
|
-
FileUtils.touch path, :
|
2005
|
+
FileUtils.touch path, mtime: disk_mtime
|
2006
2006
|
status = catalog.apply.report.resource_statuses["File[#{path}]"]
|
2007
2007
|
expect(status).to be_nil
|
2008
2008
|
expect(Puppet::FileSystem).to be_directory(path)
|
@@ -55,6 +55,24 @@ describe Puppet::Util::Windows::ADSI::User,
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
58
|
+
|
59
|
+
describe '.current_user_name_with_format' do
|
60
|
+
context 'when desired format is NameSamCompatible' do
|
61
|
+
it 'should get the same user name as the current_user_name method but fully qualified' do
|
62
|
+
user_name = Puppet::Util::Windows::ADSI::User.current_user_name
|
63
|
+
fully_qualified_user_name = Puppet::Util::Windows::ADSI::User.current_sam_compatible_user_name
|
64
|
+
|
65
|
+
expect(fully_qualified_user_name).to match(/^.+\\#{user_name}$/)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should have the same SID as with the current_user_name method' do
|
69
|
+
user_name = Puppet::Util::Windows::ADSI::User.current_user_name
|
70
|
+
fully_qualified_user_name = Puppet::Util::Windows::ADSI::User.current_sam_compatible_user_name
|
71
|
+
|
72
|
+
expect(Puppet::Util::Windows::SID.name_to_sid(user_name)).to eq(Puppet::Util::Windows::SID.name_to_sid(fully_qualified_user_name))
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
58
76
|
end
|
59
77
|
|
60
78
|
describe Puppet::Util::Windows::ADSI::Group,
|
@@ -7,6 +7,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet::Util::Platform.wi
|
|
7
7
|
let (:system_bytes) { [1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0] }
|
8
8
|
let (:null_sid_bytes) { [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }
|
9
9
|
let (:administrator_bytes) { [1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2, 0, 0] }
|
10
|
+
let (:all_application_packages_bytes) { [1, 2, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0, 1, 0, 0, 0] }
|
10
11
|
let (:computer_sid) { Puppet::Util::Windows::SID.name_to_principal(Puppet::Util::Windows::ADSI.computer_name) }
|
11
12
|
# BUILTIN is localized on German Windows, but not French
|
12
13
|
# looking this up like this dilutes the values of the tests as we're comparing two mechanisms
|
@@ -121,6 +122,26 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet::Util::Platform.wi
|
|
121
122
|
expect(principal.to_s).to eq(builtin_localized)
|
122
123
|
end
|
123
124
|
|
125
|
+
it "should always sanitize the account name first" do
|
126
|
+
expect(Puppet::Util::Windows::SID::Principal).to receive(:sanitize_account_name).with('NT AUTHORITY\\SYSTEM').and_call_original
|
127
|
+
Puppet::Util::Windows::SID::Principal.lookup_account_name('NT AUTHORITY\\SYSTEM')
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should be able to create an instance from an account name prefixed by APPLICATION PACKAGE AUTHORITY" do
|
131
|
+
principal = Puppet::Util::Windows::SID::Principal.lookup_account_name('APPLICATION PACKAGE AUTHORITY\\ALL APPLICATION PACKAGES')
|
132
|
+
expect(principal.account).to eq('ALL APPLICATION PACKAGES')
|
133
|
+
expect(principal.sid_bytes).to eq(all_application_packages_bytes)
|
134
|
+
expect(principal.sid).to eq('S-1-15-2-1')
|
135
|
+
expect(principal.domain).to eq('APPLICATION PACKAGE AUTHORITY')
|
136
|
+
expect(principal.domain_account).to eq('APPLICATION PACKAGE AUTHORITY\\ALL APPLICATION PACKAGES')
|
137
|
+
expect(principal.account_type).to eq(:SidTypeWellKnownGroup)
|
138
|
+
expect(principal.to_s).to eq('APPLICATION PACKAGE AUTHORITY\\ALL APPLICATION PACKAGES')
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should fail without proper account name sanitization when it is prefixed by APPLICATION PACKAGE AUTHORITY" do
|
142
|
+
given_account_name = 'APPLICATION PACKAGE AUTHORITY\\ALL APPLICATION PACKAGES'
|
143
|
+
expect { Puppet::Util::Windows::SID::Principal.lookup_account_name(nil, false, given_account_name) }.to raise_error(Puppet::Util::Windows::Error, /No mapping between account names and security IDs was done./)
|
144
|
+
end
|
124
145
|
end
|
125
146
|
|
126
147
|
describe ".lookup_account_sid" do
|
@@ -263,6 +263,12 @@ describe Puppet::Util::Windows::Registry do
|
|
263
263
|
type: Win32::Registry::REG_EXPAND_SZ,
|
264
264
|
value: "\0\0\0reg expand string",
|
265
265
|
expected_value: ""
|
266
|
+
},
|
267
|
+
{
|
268
|
+
name: 'REG_EXPAND_SZ_2',
|
269
|
+
type: Win32::Registry::REG_EXPAND_SZ,
|
270
|
+
value: "1\x002\x003\x004\x00\x00\x00\x90\xD8UoY".force_encoding("UTF-16LE"),
|
271
|
+
expected_value: "1234"
|
266
272
|
}
|
267
273
|
].each do |pair|
|
268
274
|
it 'reads up to the first wide null' do
|
data/spec/lib/puppet/test_ca.rb
CHANGED
@@ -30,7 +30,7 @@ module Puppet
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def create_request(name)
|
33
|
-
key = OpenSSL::PKey::RSA.new(
|
33
|
+
key = OpenSSL::PKey::RSA.new(2048)
|
34
34
|
csr = OpenSSL::X509::Request.new
|
35
35
|
csr.public_key = key.public_key
|
36
36
|
csr.subject = OpenSSL::X509::Name.new([["CN", name]])
|
@@ -127,7 +127,7 @@ module Puppet
|
|
127
127
|
key = if opts[:key_type] == :ec
|
128
128
|
key = OpenSSL::PKey::EC.generate('prime256v1')
|
129
129
|
else
|
130
|
-
key = OpenSSL::PKey::RSA.new(
|
130
|
+
key = OpenSSL::PKey::RSA.new(2048)
|
131
131
|
end
|
132
132
|
cert = OpenSSL::X509::Certificate.new
|
133
133
|
cert.public_key = if key.is_a?(OpenSSL::PKey::EC)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.shared_context('provider specificity') do
|
4
|
+
around do |example|
|
5
|
+
old_defaults = described_class.instance_variable_get(:@defaults)
|
6
|
+
old_notdefaults = described_class.instance_variable_get(:@notdefaults)
|
7
|
+
begin
|
8
|
+
described_class.instance_variable_set(:@defaults, [])
|
9
|
+
described_class.instance_variable_set(:@notdefaults, [])
|
10
|
+
example.run
|
11
|
+
ensure
|
12
|
+
described_class.instance_variable_set(:@defaults, old_defaults)
|
13
|
+
described_class.instance_variable_set(:@notdefaults, old_notdefaults)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -162,10 +162,20 @@ RSpec.configure do |config|
|
|
162
162
|
PUPPET_FACTER_2_GCE_URL = %r{^http://metadata/computeMetadata/v1(beta1)?}.freeze
|
163
163
|
PUPPET_FACTER_3_GCE_URL = "http://metadata.google.internal/computeMetadata/v1/?recursive=true&alt=json".freeze
|
164
164
|
|
165
|
+
# Facter azure metadata endpoint
|
166
|
+
PUPPET_FACTER_AZ_URL = "http://169.254.169.254/metadata/instance?api-version=2020-09-01"
|
167
|
+
|
168
|
+
# Facter EC2 endpoint
|
169
|
+
PUPPET_FACTER_EC2_METADATA = 'http://169.254.169.254/latest/meta-data/'
|
170
|
+
PUPPET_FACTER_EC2_USERDATA = 'http://169.254.169.254/latest/user-data/'
|
171
|
+
|
165
172
|
config.around :each do |example|
|
166
|
-
# Ignore requests from Facter
|
173
|
+
# Ignore requests from Facter to external services
|
167
174
|
stub_request(:get, PUPPET_FACTER_2_GCE_URL)
|
168
175
|
stub_request(:get, PUPPET_FACTER_3_GCE_URL)
|
176
|
+
stub_request(:get, PUPPET_FACTER_AZ_URL)
|
177
|
+
stub_request(:get, PUPPET_FACTER_EC2_METADATA)
|
178
|
+
stub_request(:get, PUPPET_FACTER_EC2_USERDATA)
|
169
179
|
|
170
180
|
# Enable VCR if the example is tagged with `:vcr` metadata.
|
171
181
|
if example.metadata[:vcr]
|
@@ -546,11 +546,16 @@ describe Puppet::Application::Agent do
|
|
546
546
|
@puppetd.options[:digest] = :MD5
|
547
547
|
end
|
548
548
|
|
549
|
+
def expected_fingerprint(name, x509)
|
550
|
+
digest = OpenSSL::Digest.new(name).hexdigest(x509.to_der)
|
551
|
+
digest.scan(/../).join(':').upcase
|
552
|
+
end
|
553
|
+
|
549
554
|
it "should fingerprint the certificate if it exists" do
|
550
555
|
cert = cert_fixture('signed.pem')
|
551
556
|
allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_client_cert).and_return(cert)
|
552
557
|
|
553
|
-
expect(@puppetd).to receive(:puts).with(
|
558
|
+
expect(@puppetd).to receive(:puts).with("(MD5) #{expected_fingerprint('md5', cert)}")
|
554
559
|
|
555
560
|
@puppetd.fingerprint
|
556
561
|
end
|
@@ -560,7 +565,7 @@ describe Puppet::Application::Agent do
|
|
560
565
|
allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_client_cert).and_return(nil)
|
561
566
|
allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_request).and_return(request)
|
562
567
|
|
563
|
-
expect(@puppetd).to receive(:puts).with(
|
568
|
+
expect(@puppetd).to receive(:puts).with("(MD5) #{expected_fingerprint('md5', request)}")
|
564
569
|
|
565
570
|
@puppetd.fingerprint
|
566
571
|
end
|
@@ -3,7 +3,7 @@ require 'puppet/application/facts'
|
|
3
3
|
|
4
4
|
describe Puppet::Application::Facts do
|
5
5
|
let(:app) { Puppet::Application[:facts] }
|
6
|
-
let(:values) { {"filesystems" => "apfs,autofs,devfs", "macaddress" => "64:52:11:22:03:
|
6
|
+
let(:values) { {"filesystems" => "apfs,autofs,devfs", "macaddress" => "64:52:11:22:03:2e"} }
|
7
7
|
|
8
8
|
before :each do
|
9
9
|
Puppet::Node::Facts.indirection.terminus_class = :memory
|
@@ -21,7 +21,7 @@ describe Puppet::Application::Facts do
|
|
21
21
|
name: whatever
|
22
22
|
values:
|
23
23
|
filesystems: apfs,autofs,devfs
|
24
|
-
macaddress: "64:52:11:22:03:
|
24
|
+
macaddress: "64:52:11:22:03:2e"
|
25
25
|
END
|
26
26
|
|
27
27
|
expect {
|
@@ -42,7 +42,7 @@ describe Puppet::Application::Facts do
|
|
42
42
|
name: #{Puppet[:certname]}
|
43
43
|
values:
|
44
44
|
filesystems: apfs,autofs,devfs
|
45
|
-
macaddress: "64:52:11:22:03:
|
45
|
+
macaddress: "64:52:11:22:03:2e"
|
46
46
|
END
|
47
47
|
|
48
48
|
expect {
|
@@ -55,7 +55,7 @@ describe Puppet::Application::Facts do
|
|
55
55
|
let(:expected) { <<~END }
|
56
56
|
{
|
57
57
|
"filesystems": "apfs,autofs,devfs",
|
58
|
-
"macaddress": "64:52:11:22:03:
|
58
|
+
"macaddress": "64:52:11:22:03:2e"
|
59
59
|
}
|
60
60
|
END
|
61
61
|
|
@@ -119,7 +119,7 @@ describe Puppet::Application::Facts do
|
|
119
119
|
let(:expected) { <<~END }
|
120
120
|
---
|
121
121
|
filesystems: apfs,autofs,devfs
|
122
|
-
macaddress: 64:52:11:22:03:
|
122
|
+
macaddress: 64:52:11:22:03:2e
|
123
123
|
END
|
124
124
|
|
125
125
|
before :each do
|
@@ -432,4 +432,27 @@ describe Puppet::Application::Ssl, unless: Puppet::Util::Platform.jruby? do
|
|
432
432
|
expects_command_to_pass
|
433
433
|
end
|
434
434
|
end
|
435
|
+
|
436
|
+
context 'when showing' do
|
437
|
+
before do
|
438
|
+
ssl.command_line.args << 'show'
|
439
|
+
File.write(Puppet[:hostcert], @host[:cert].to_pem)
|
440
|
+
end
|
441
|
+
|
442
|
+
it 'reports if the key is missing' do
|
443
|
+
File.delete(Puppet[:hostprivkey])
|
444
|
+
|
445
|
+
expects_command_to_fail(/The private key is missing from/)
|
446
|
+
end
|
447
|
+
|
448
|
+
it 'reports if the cert is missing' do
|
449
|
+
File.delete(Puppet[:hostcert])
|
450
|
+
|
451
|
+
expects_command_to_fail(/The client certificate is missing from/)
|
452
|
+
end
|
453
|
+
|
454
|
+
it 'prints certificate information' do
|
455
|
+
expects_command_to_pass(@host[:cert].to_text)
|
456
|
+
end
|
457
|
+
end
|
435
458
|
end
|
@@ -81,6 +81,12 @@ describe Puppet::Configurer::Downloader do
|
|
81
81
|
expect(file[:source_permissions]).to eq(:ignore)
|
82
82
|
end
|
83
83
|
|
84
|
+
it "should ignore the max file limit" do
|
85
|
+
file = generate_file_resource
|
86
|
+
|
87
|
+
expect(file[:max_files]).to eq(-1)
|
88
|
+
end
|
89
|
+
|
84
90
|
describe "on POSIX", :if => Puppet.features.posix? do
|
85
91
|
it "should allow source_permissions to be overridden" do
|
86
92
|
file = generate_file_resource(:source_permissions => :use)
|
@@ -1075,6 +1075,29 @@ describe Puppet::Configurer do
|
|
1075
1075
|
}.to raise_error(Puppet::Error, /Could not select a functional puppet server from server_list: 'myserver:123,someotherservername'/)
|
1076
1076
|
end
|
1077
1077
|
|
1078
|
+
it "should warn when servers in 'server_list' are unreachable" do
|
1079
|
+
Puppet.settings[:server_list] = "mybadserver1:123,mybadserver2:123,mygoodserver"
|
1080
|
+
Puppet[:usecacheonfailure] = false
|
1081
|
+
|
1082
|
+
stub_request(:get, 'https://mybadserver1:123/status/v1/simple/server').and_raise(Puppet::HTTP::HTTPError)
|
1083
|
+
stub_request(:get, 'https://mybadserver2:123/status/v1/simple/server').and_raise(Puppet::HTTP::HTTPError)
|
1084
|
+
stub_request(:get, 'https://mygoodserver:8140/status/v1/simple/server').to_return(status: 200)
|
1085
|
+
|
1086
|
+
expect(Puppet).to receive(:warning).with(/^Unable to connect to server from server_list setting:.*Trying with next server from server_list.$/).twice
|
1087
|
+
configurer.run
|
1088
|
+
end
|
1089
|
+
|
1090
|
+
it "should warn when servers in 'server_list' respond with error" do
|
1091
|
+
Puppet.settings[:server_list] = "mybadserver:123,someotherservername"
|
1092
|
+
Puppet[:usecacheonfailure] = false
|
1093
|
+
|
1094
|
+
stub_request(:get, 'https://mybadserver:123/status/v1/simple/server').to_return(status: 400)
|
1095
|
+
stub_request(:get, 'https://someotherservername:8140/status/v1/simple/server').to_return(status: 200)
|
1096
|
+
|
1097
|
+
expect(Puppet).to receive(:warning).with(/^Puppet server mybadserver:123 is unavailable: 400 Trying with next server from server_list.$/)
|
1098
|
+
configurer.run
|
1099
|
+
end
|
1100
|
+
|
1078
1101
|
it "should not error when usecacheonfailure is true and no servers in 'server_list' are reachable" do
|
1079
1102
|
Puppet.settings[:server_list] = "myserver:123,someotherservername"
|
1080
1103
|
Puppet[:usecacheonfailure] = true
|
@@ -1,13 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'puppet/environments'
|
3
3
|
require 'puppet/file_system'
|
4
|
-
require 'matchers/include'
|
5
|
-
require 'matchers/include_in_order'
|
6
4
|
|
7
|
-
module PuppetEnvironments
|
8
5
|
describe Puppet::Environments do
|
9
|
-
include Matchers::Include
|
10
|
-
|
11
6
|
FS = Puppet::FileSystem
|
12
7
|
|
13
8
|
before(:each) do
|
@@ -49,7 +44,7 @@ describe Puppet::Environments do
|
|
49
44
|
loader_from(:filesystem => [directory_tree, global_path_1, global_path_2],
|
50
45
|
:directory => directory_tree.children.first,
|
51
46
|
:modulepath => [global_path_1_location, global_path_2_location]) do |loader|
|
52
|
-
expect(loader.list).to
|
47
|
+
expect(loader.list).to contain_exactly(
|
53
48
|
environment(:an_environment).
|
54
49
|
with_manifest("#{FS.path_string(directory_tree)}/envdir/an_environment/manifests").
|
55
50
|
with_modulepath(["#{FS.path_string(directory_tree)}/envdir/an_environment/modules",
|
@@ -87,7 +82,7 @@ describe Puppet::Environments do
|
|
87
82
|
|
88
83
|
loader_from(:filesystem => [envdir],
|
89
84
|
:directory => envdir) do |loader|
|
90
|
-
expect(loader.list).to
|
85
|
+
expect(loader.list).to contain_exactly(environment(:env1), environment(:env2))
|
91
86
|
end
|
92
87
|
end
|
93
88
|
|
@@ -406,33 +401,29 @@ config_version=$vardir/random/scripts
|
|
406
401
|
]),
|
407
402
|
])
|
408
403
|
|
409
|
-
|
410
|
-
|
411
|
-
loader = Puppet::Environments::Cached.new(dir_loader)
|
412
|
-
Puppet.override(:environments => loader) do
|
413
|
-
original_env = loader.get("env3") # force the environment.conf to be read
|
414
|
-
|
415
|
-
changed_envdir = FS::MemoryFile.a_directory(base_dir, [
|
416
|
-
FS::MemoryFile.a_directory("env3", [
|
417
|
-
FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
|
418
|
-
manifest=/manifest_changed
|
419
|
-
modulepath=/modules_changed
|
420
|
-
environment_timeout=0
|
421
|
-
EOF
|
422
|
-
]),
|
423
|
-
])
|
404
|
+
cached_loader_from(:filesystem => [original_envdir], :directory => original_envdir) do |loader|
|
405
|
+
original_env = loader.get("env3") # force the environment.conf to be read
|
424
406
|
|
425
|
-
|
426
|
-
|
407
|
+
changed_envdir = FS::MemoryFile.a_directory(base_dir, [
|
408
|
+
FS::MemoryFile.a_directory("env3", [
|
409
|
+
FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
|
410
|
+
manifest=/manifest_changed
|
411
|
+
modulepath=/modules_changed
|
412
|
+
environment_timeout=0
|
413
|
+
EOF
|
414
|
+
]),
|
415
|
+
])
|
427
416
|
|
428
|
-
|
429
|
-
|
430
|
-
with_full_modulepath([File.expand_path("/modules_orig")])
|
417
|
+
FS.overlay(changed_envdir) do
|
418
|
+
changed_env = loader.get("env3")
|
431
419
|
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
420
|
+
expect(original_env).to environment(:env3).
|
421
|
+
with_manifest(File.expand_path("/manifest_orig")).
|
422
|
+
with_full_modulepath([File.expand_path("/modules_orig")])
|
423
|
+
|
424
|
+
expect(changed_env).to environment(:env3).
|
425
|
+
with_manifest(File.expand_path("/manifest_changed")).
|
426
|
+
with_full_modulepath([File.expand_path("/modules_changed")])
|
436
427
|
end
|
437
428
|
end
|
438
429
|
end
|
@@ -558,24 +549,49 @@ config_version=$vardir/random/scripts
|
|
558
549
|
|
559
550
|
describe "cached loaders" do
|
560
551
|
it "lists environments" do
|
561
|
-
|
562
|
-
expect(
|
552
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
553
|
+
expect(loader.list).to contain_exactly(
|
563
554
|
environment(:an_environment),
|
564
555
|
environment(:another_environment),
|
565
556
|
environment(:symlinked_environment))
|
566
557
|
end
|
567
558
|
end
|
568
559
|
|
560
|
+
it "returns the same cached environment object for list and get methods" do
|
561
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
562
|
+
env = loader.list.find { |e| e.name == :an_environment }
|
563
|
+
|
564
|
+
expect(env).to equal(loader.get(:an_environment)) # same object
|
565
|
+
end
|
566
|
+
end
|
567
|
+
|
568
|
+
it "returns the same cached environment object for multiple list calls" do
|
569
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
570
|
+
expect(loader.list.first).to equal(loader.list.first) # same object
|
571
|
+
end
|
572
|
+
end
|
573
|
+
|
574
|
+
it "expires environments and returns a new environment object with the same value" do
|
575
|
+
Puppet[:environment_timeout] = "0"
|
576
|
+
|
577
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
578
|
+
a = loader.list.first
|
579
|
+
b = loader.list.first
|
580
|
+
expect(a).to eq(b) # same value
|
581
|
+
expect(a).to_not equal(b) # not same object
|
582
|
+
end
|
583
|
+
end
|
584
|
+
|
569
585
|
it "has search_paths" do
|
570
|
-
|
571
|
-
expect(
|
586
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
587
|
+
expect(loader.search_paths).to eq(["file://#{directory_tree.children.first}"])
|
572
588
|
end
|
573
589
|
end
|
574
590
|
|
575
591
|
context "#get" do
|
576
592
|
it "gets an environment" do
|
577
|
-
|
578
|
-
expect(
|
593
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
594
|
+
expect(loader.get(:an_environment)).to environment(:an_environment)
|
579
595
|
end
|
580
596
|
end
|
581
597
|
|
@@ -592,16 +608,16 @@ config_version=$vardir/random/scripts
|
|
592
608
|
end
|
593
609
|
|
594
610
|
it "returns nil if env not found" do
|
595
|
-
|
596
|
-
expect(
|
611
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
612
|
+
expect(loader.get(:doesnotexist)).to be_nil
|
597
613
|
end
|
598
614
|
end
|
599
615
|
end
|
600
616
|
|
601
617
|
context "#get!" do
|
602
618
|
it "gets an environment" do
|
603
|
-
|
604
|
-
expect(
|
619
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
620
|
+
expect(loader.get!(:an_environment)).to environment(:an_environment)
|
605
621
|
end
|
606
622
|
end
|
607
623
|
|
@@ -618,14 +634,41 @@ config_version=$vardir/random/scripts
|
|
618
634
|
end
|
619
635
|
|
620
636
|
it "raises error if environment is not found" do
|
621
|
-
|
637
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
622
638
|
expect do
|
623
|
-
|
639
|
+
loader.get!(:doesnotexist)
|
624
640
|
end.to raise_error(Puppet::Environments::EnvironmentNotFound)
|
625
641
|
end
|
626
642
|
end
|
627
643
|
end
|
628
644
|
|
645
|
+
context "#get_conf" do
|
646
|
+
it "loads environment.conf" do
|
647
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
648
|
+
expect(loader.get_conf(:an_environment)).to match_environment_conf(:an_environment).
|
649
|
+
with_env_path(directory_tree.children.first).
|
650
|
+
with_global_module_path([])
|
651
|
+
end
|
652
|
+
end
|
653
|
+
|
654
|
+
it "always reloads environment.conf" do
|
655
|
+
env = Puppet::Node::Environment.create(:cached, [])
|
656
|
+
mocked_loader = double('loader')
|
657
|
+
expect(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20)).twice
|
658
|
+
|
659
|
+
cached = Puppet::Environments::Cached.new(mocked_loader)
|
660
|
+
|
661
|
+
cached.get_conf(:cached)
|
662
|
+
cached.get_conf(:cached)
|
663
|
+
end
|
664
|
+
|
665
|
+
it "returns nil if environment is not found" do
|
666
|
+
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
667
|
+
expect(loader.get_conf(:doesnotexist)).to be_nil
|
668
|
+
end
|
669
|
+
end
|
670
|
+
end
|
671
|
+
|
629
672
|
context "expiration policies" do
|
630
673
|
let(:service) { ReplayExpirationService.new }
|
631
674
|
|
@@ -647,8 +690,6 @@ config_version=$vardir/random/scripts
|
|
647
690
|
end
|
648
691
|
|
649
692
|
it "evicts an expired environment" do
|
650
|
-
service = ReplayExpirationService.new
|
651
|
-
|
652
693
|
expect(service).to receive(:expired?).and_return(true)
|
653
694
|
|
654
695
|
with_environment_loaded(service) do |cached|
|
@@ -700,13 +741,15 @@ config_version=$vardir/random/scripts
|
|
700
741
|
expect(service.created_envs).to eq([:an_environment, :an_environment])
|
701
742
|
expect(service.evicted_envs).to eq([:an_environment])
|
702
743
|
end
|
703
|
-
end
|
704
744
|
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
745
|
+
it "evicts expired environments when listing" do
|
746
|
+
expect(service).to receive(:expired?).with(:an_environment).and_return(true)
|
747
|
+
|
748
|
+
with_environment_loaded(service) do |cached|
|
749
|
+
cached.list
|
750
|
+
end
|
751
|
+
|
752
|
+
expect(service.evicted_envs).to eq([:an_environment])
|
710
753
|
end
|
711
754
|
end
|
712
755
|
|
@@ -724,6 +767,30 @@ config_version=$vardir/random/scripts
|
|
724
767
|
|
725
768
|
context '#clear_all' do
|
726
769
|
let(:service) { ReplayExpirationService.new }
|
770
|
+
let(:envdir) { File.expand_path("envdir") }
|
771
|
+
let(:default_dir) { File.join(envdir, "cached_env", "modules") }
|
772
|
+
let(:expected_dir) { File.join(envdir, "cached_env", "site") }
|
773
|
+
|
774
|
+
let(:base_dir) do
|
775
|
+
FS::MemoryFile.a_directory(envdir, [
|
776
|
+
FS::MemoryFile.a_directory("cached_env", [
|
777
|
+
FS::MemoryFile.a_missing_file("environment.conf")
|
778
|
+
])
|
779
|
+
])
|
780
|
+
end
|
781
|
+
|
782
|
+
let(:updated_dir) do
|
783
|
+
FS::MemoryFile.a_directory(envdir, [
|
784
|
+
FS::MemoryFile.a_directory("cached_env", [
|
785
|
+
FS::MemoryFile.a_directory("site"),
|
786
|
+
FS::MemoryFile.a_missing_directory("modules"),
|
787
|
+
FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
|
788
|
+
modulepath=site
|
789
|
+
environment_timeout=unlimited
|
790
|
+
EOF
|
791
|
+
])
|
792
|
+
])
|
793
|
+
end
|
727
794
|
|
728
795
|
it 'evicts all environments' do
|
729
796
|
with_environment_loaded(service) do |cached|
|
@@ -735,48 +802,44 @@ config_version=$vardir/random/scripts
|
|
735
802
|
end
|
736
803
|
end
|
737
804
|
|
738
|
-
it '
|
739
|
-
base_dir
|
740
|
-
|
741
|
-
FS::MemoryFile.a_directory("env3", [
|
742
|
-
FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
|
743
|
-
manifest=/manifest_orig
|
744
|
-
modulepath=/modules_orig
|
745
|
-
environment_timeout=60
|
746
|
-
EOF
|
747
|
-
]),
|
748
|
-
])
|
805
|
+
it "recomputes modulepath if 'get' is called before 'clear_all'" do
|
806
|
+
cached_loader_from(:filesystem => [base_dir], :directory => base_dir) do |loader|
|
807
|
+
loader.get(:cached_env)
|
749
808
|
|
750
|
-
|
751
|
-
dir_loader = Puppet::Environments::Directories.new(original_envdir, [])
|
752
|
-
loader = Puppet::Environments::Cached.new(dir_loader)
|
753
|
-
Puppet.override(:environments => loader) do
|
754
|
-
original_env = loader.get("env3") # force the environment.conf to be read
|
755
|
-
|
756
|
-
changed_envdir = FS::MemoryFile.a_directory(base_dir, [
|
757
|
-
FS::MemoryFile.a_directory("env3", [
|
758
|
-
FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
|
759
|
-
manifest=/manifest_changed
|
760
|
-
modulepath=/modules_changed
|
761
|
-
environment_timeout=60
|
762
|
-
EOF
|
763
|
-
]),
|
764
|
-
])
|
809
|
+
expect(Puppet.settings.value(:modulepath, :cached_env)).to eq(default_dir)
|
765
810
|
|
766
|
-
|
811
|
+
FS.overlay(updated_dir) do
|
767
812
|
loader.clear_all
|
768
813
|
|
769
|
-
|
770
|
-
|
814
|
+
expect(loader.get(:cached_env).modulepath).to contain_exactly(expected_dir)
|
815
|
+
end
|
816
|
+
end
|
817
|
+
end
|
818
|
+
|
819
|
+
it "recomputes modulepath if 'list' is called before 'clear_all'" do
|
820
|
+
cached_loader_from(:filesystem => [base_dir], :directory => base_dir) do |loader|
|
821
|
+
loader.list
|
771
822
|
|
772
|
-
|
773
|
-
with_manifest(File.expand_path("/manifest_orig")).
|
774
|
-
with_full_modulepath([File.expand_path("/modules_orig")])
|
823
|
+
expect(Puppet.settings.value(:modulepath, :cached_env)).to eq(default_dir)
|
775
824
|
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
825
|
+
FS.overlay(updated_dir) do
|
826
|
+
loader.clear_all
|
827
|
+
|
828
|
+
expect(loader.get(:cached_env).modulepath).to contain_exactly(expected_dir)
|
829
|
+
end
|
830
|
+
end
|
831
|
+
end
|
832
|
+
|
833
|
+
it "recomputes modulepath if 'get_conf' is called before 'clear_all'" do
|
834
|
+
cached_loader_from(:filesystem => [base_dir], :directory => base_dir) do |loader|
|
835
|
+
loader.get_conf(:cached_env)
|
836
|
+
|
837
|
+
expect(Puppet.settings.value(:modulepath, :cached_env)).to eq(default_dir)
|
838
|
+
|
839
|
+
FS.overlay(updated_dir) do
|
840
|
+
loader.clear_all
|
841
|
+
|
842
|
+
expect(loader.get(:cached_env).modulepath).to contain_exactly(expected_dir)
|
780
843
|
end
|
781
844
|
end
|
782
845
|
end
|
@@ -862,6 +925,20 @@ config_version=$vardir/random/scripts
|
|
862
925
|
end
|
863
926
|
end
|
864
927
|
|
928
|
+
def cached_loader_from(options, &block)
|
929
|
+
FS.overlay(*options[:filesystem]) do
|
930
|
+
environments = Puppet::Environments::Cached.new(
|
931
|
+
Puppet::Environments::Directories.new(
|
932
|
+
options[:directory],
|
933
|
+
options[:modulepath] || []
|
934
|
+
)
|
935
|
+
)
|
936
|
+
Puppet.override(:environments => environments) do
|
937
|
+
yield environments
|
938
|
+
end
|
939
|
+
end
|
940
|
+
end
|
941
|
+
|
865
942
|
def loader_from(options, &block)
|
866
943
|
FS.overlay(*options[:filesystem]) do
|
867
944
|
environments = Puppet::Environments::Directories.new(
|
@@ -914,4 +991,3 @@ config_version=$vardir/random/scripts
|
|
914
991
|
end
|
915
992
|
end
|
916
993
|
end
|
917
|
-
end
|