├── .gitattributes ├── .github ├── dependabot.yml ├── release.yml └── workflows │ ├── backport.yml │ ├── checks.yaml │ ├── release.yaml │ └── rspec_tests.yaml ├── .gitignore ├── .gitmodules ├── .mailmap ├── .noexec.yaml ├── .rubocop.yml ├── .rubocop_todo.yml ├── .yardopts ├── CHANGELOG.md ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── Gemfile ├── Guardfile.example ├── LICENSE ├── README.md ├── Rakefile ├── acceptance ├── .beaker.yml ├── .gitignore ├── Gemfile ├── README.md ├── Rakefile ├── config │ ├── aio │ │ └── options.rb │ ├── gem │ │ └── options.rb │ ├── git │ │ └── options.rb │ └── nodes │ │ ├── aix-53-power.yaml │ │ ├── aix-61-power.yaml │ │ ├── aix-71-power.yaml │ │ ├── gem.yaml │ │ ├── huaweios-6-powerpc.yaml │ │ ├── pe │ │ ├── centos-5-32ma-32da-32da │ │ ├── centos-5-32mda │ │ ├── centos-5-64ma-64da-64da │ │ ├── centos-5-64mda │ │ ├── centos-6-32ma-32da-32da │ │ ├── centos-6-32mda │ │ ├── centos-6-64ma-64da-64da │ │ ├── centos-6-64mda │ │ ├── centos-6-64mda-sol-10-64a │ │ ├── debian-6-32ma-32da-32da │ │ ├── debian-6-32mda │ │ ├── debian-6-64ma-64da-64da │ │ ├── debian-6-64mda │ │ ├── debian-7-32ma-32da-32da │ │ ├── debian-7-32mda │ │ ├── debian-7-64ma-64da-64da │ │ ├── debian-7-64mda │ │ ├── debian-7-i386 │ │ ├── oracle-5-32ma-32da-32da │ │ ├── oracle-5-32mda │ │ ├── oracle-5-64ma-64da-64da │ │ ├── oracle-5-64mda │ │ ├── oracle-6-32ma-32da-32da │ │ ├── oracle-6-32mda │ │ ├── oracle-6-64ma-64da-64da │ │ ├── oracle-6-64mda │ │ ├── redhat-5-32ma-32da-32da │ │ ├── redhat-5-32mda │ │ ├── redhat-5-64ma-64da-64da │ │ ├── redhat-5-64mda │ │ ├── redhat-6-32ma-32da-32da │ │ ├── redhat-6-32mda │ │ ├── redhat-6-64ma-64da-64da │ │ ├── redhat-6-64mda │ │ ├── scientific-5-32ma-32da-32da │ │ ├── scientific-5-32mda │ │ ├── scientific-5-64ma-64da-64da │ │ ├── scientific-5-64mda │ │ ├── scientific-6-32ma-32da-32da │ │ ├── scientific-6-32mda │ │ ├── scientific-6-64ma-64da-64da │ │ ├── scientific-6-64mda │ │ ├── sles-11-32ma-32da-32da │ │ ├── sles-11-32mda │ │ ├── sles-11-64ma-64da-64da │ │ ├── sles-11-64mda │ │ ├── solaris-10-64a │ │ ├── solaris-11-64a │ │ ├── ubuntu-1004-32ma-32da-32da │ │ ├── ubuntu-1004-32mda │ │ ├── ubuntu-1004-64ma-64da-64da │ │ ├── ubuntu-1004-64mda │ │ ├── ubuntu-1204-32ma-32da-32da │ │ ├── ubuntu-1204-32mda │ │ ├── ubuntu-1204-64ma-64da-64da │ │ └── ubuntu-1204-64mda │ │ ├── solaris-10-sparc.yaml │ │ └── solaris-11-sparc.yaml ├── fixtures │ ├── MockInstaller.cs │ ├── MockService.cs │ ├── MockUninstaller.cs │ ├── debian-repo │ │ ├── Packages.gz │ │ ├── Release │ │ ├── helloworld_1.0-1.deb │ │ ├── helloworld_1.19-1.deb │ │ └── helloworld_2.0-1.deb │ ├── el-repo │ │ ├── RPMS │ │ │ ├── kernel-devel-puppet-3.10.0-1062.1.1.noarch.rpm │ │ │ └── kernel-devel-puppet-3.10.0-1062.4.3.noarch.rpm │ │ └── repodata │ │ │ ├── 0427a2b1b650922e9e7359c09be8820caa3b1ae72efef4998fd7a50fbd3a858c-primary.xml.gz │ │ │ ├── 12382dd1ca2ce49561d698430501e038a8694b64a5d69bdb7133bff1be5bd4ab-filelists.xml.gz │ │ │ ├── 4427b13c52edea24fc19776198a99611464b3c67f7828aeed8c5d20f3d8b1c02-filelists.sqlite.bz2 │ │ │ ├── 653202d291344674c0e6c2547647d09c2b0044ec96986b9c62f74dc49f15a3db-other.sqlite.bz2 │ │ │ ├── 68861daea8ff469f3418abd08697b408df11c8079b0b24178a4e2b4bd8a7102e-primary.sqlite.bz2 │ │ │ ├── c274906bddc4277eb4a9f54ad0bfb833ae2c34209d2c8059ee187aa409886ead-other.xml.gz │ │ │ └── repomd.xml │ ├── manifest_large_exported_classes_node.pp │ └── sles-repo │ │ ├── noarch │ │ ├── helloworld-1.0-2.noarch.rpm │ │ ├── helloworld-1.19-2.noarch.rpm │ │ └── helloworld-2.0-2.noarch.rpm │ │ └── repodata │ │ ├── filelists.xml.gz │ │ ├── other.xml.gz │ │ ├── primary.xml.gz │ │ └── repomd.xml ├── lib │ ├── acceptance_spec_helper.rb │ ├── helper.rb │ └── puppet │ │ └── acceptance │ │ ├── agent_fqdn_utils.rb │ │ ├── aix_util.rb │ │ ├── classifier_utils.rb │ │ ├── classifier_utils_spec.rb │ │ ├── common_utils.rb │ │ ├── environment_utils.rb │ │ ├── environment_utils_spec.rb │ │ ├── i18n_utils.rb │ │ ├── i18ndemo_utils.rb │ │ ├── module_utils.rb │ │ ├── puppet_type_test_tools.rb │ │ ├── puppet_type_test_tools_spec.rb │ │ ├── rpm_util.rb │ │ ├── service_utils.rb │ │ ├── solaris_util.rb │ │ ├── static_catalog_utils.rb │ │ ├── temp_file_utils.rb │ │ ├── windows_utils.rb │ │ └── windows_utils │ │ ├── package_installer.rb │ │ └── service.rb ├── pending │ ├── ticket_11860_exec_should_not_override_locale.rb │ ├── ticket_4149_parseonly_should_not_fail.rb │ ├── ticket_4151_defined_function_should_not_return_true_for_unrealized_virtual_resources.rb │ ├── ticket_5027_warn_on_dynamic_scope.rb │ ├── ticket_5224_exec_should_unset_user_env_vars.rb │ └── ticket_6928_puppet_master_parse_fails.rb ├── teardown │ └── common │ │ └── 099_Archive_Logs.rb ├── tests │ ├── agent │ │ ├── agent_disable_lockfile.rb │ │ ├── agent_fails_with_unknown_resource.rb │ │ ├── agent_parses_json_catalog.rb │ │ ├── fallback_to_cached_catalog.rb │ │ └── last_run_summary_report.rb │ ├── aix │ │ ├── aix_package_provider.rb │ │ └── nim_package_provider.rb │ ├── allow_arbitrary_node_name_fact_for_agent.rb │ ├── allow_arbitrary_node_name_for_agent.rb │ ├── apply │ │ └── classes │ │ │ ├── parameterized_classes.rb │ │ │ ├── should_allow_param_override.rb │ │ │ ├── should_allow_param_undef_override.rb │ │ │ ├── should_include_resources_from_class.rb │ │ │ └── should_not_auto_include_resources_from_class.rb │ ├── catalog_with_binary_data.rb │ ├── direct_puppet │ │ ├── cached_catalog_remediate_local_drift.rb │ │ ├── catalog_uuid_correlates_catalogs_with_reports.rb │ │ ├── static_catalog_env_control.rb │ │ └── supports_utf8.rb │ ├── environment │ │ ├── broken_unassigned_environment_handled_gracefully.rb │ │ ├── can_enumerate_environments.rb │ │ ├── custom_type_provider_from_same_environment.rb │ │ ├── directory_environment_production_created_master.rb │ │ ├── enc_nonexistent_directory_environment.rb │ │ ├── environment_scenario-bad.rb │ │ ├── feature_branch_configured_environment.rb │ │ ├── should_find_existing_production_environment.rb │ │ ├── use_agent_environment_when_enc_doesnt_specify.rb │ │ ├── use_agent_environment_when_no_enc.rb │ │ ├── use_enc_environment.rb │ │ ├── use_enc_environment_for_files.rb │ │ ├── use_enc_environment_for_pluginsync.rb │ │ ├── use_environment_from_environmentpath.rb │ │ ├── use_last_server_specified_environment.rb │ │ └── variables_refreshed_each_compilation.rb │ ├── face │ │ ├── 4654_facts_face.rb │ │ ├── loadable_from_modules.rb │ │ └── parser_validate.rb │ ├── i18n │ │ ├── enable_option_disable_i18n.rb │ │ ├── modules │ │ │ ├── puppet_agent.rb │ │ │ ├── puppet_agent_cached_catalog.rb │ │ │ ├── puppet_agent_with_multiple_environments.rb │ │ │ ├── puppet_apply.rb │ │ │ ├── puppet_apply_module_lang.rb │ │ │ ├── puppet_apply_unsupported_lang.rb │ │ │ ├── puppet_describe.rb │ │ │ ├── puppet_face.rb │ │ │ └── puppet_resource.rb │ │ └── translation_fallback.rb │ ├── language │ │ ├── binary_data_type.rb │ │ ├── exported_resources.rb │ │ ├── functions_in_puppet_language.rb │ │ ├── objects_in_catalog.rb │ │ ├── pcore_generate_env_isolation.rb │ │ ├── pcore_resource_types_should_have_precedence_over_ruby.rb │ │ ├── resource_refs_with_nested_arrays.rb │ │ ├── sensitive_data_type.rb │ │ └── server_set_facts.rb │ ├── loader │ │ ├── autoload_from_resource_type_decl.rb │ │ ├── func4x_loadable_from_modules.rb │ │ └── resource_triggers_autoload.rb │ ├── lookup │ │ ├── config3_interpolation.rb │ │ ├── config5_interpolation.rb │ │ ├── hiera3_custom_backend.rb │ │ ├── lookup.rb │ │ ├── lookup_rich_values.rb │ │ ├── merge_strategies.rb │ │ ├── v3_config_and_data.rb │ │ └── v4_hieradata_with_v5_configs.rb │ ├── modulepath.rb │ ├── ordering │ │ └── master_agent_application.rb │ ├── parser_functions │ │ ├── calling_all_functions.rb │ │ ├── hiera │ │ │ └── lookup_data.rb │ │ ├── hiera_array │ │ │ └── lookup_data.rb │ │ ├── hiera_hash │ │ │ └── lookup_data.rb │ │ ├── hiera_in_templates.rb │ │ ├── no_exception_in_reduce_with_bignum.rb │ │ └── puppet_lookup_cmd.rb │ ├── pluginsync │ │ ├── 3935_pluginsync_should_follow_symlinks.rb │ │ ├── 4420_pluginfacts_should_be_resolvable_on_agent.rb │ │ ├── 4847_pluginfacts_should_be_resolvable_from_applications.rb │ │ ├── 7316_apps_should_be_available_via_pluginsync.rb │ │ ├── 7316_faces_with_app_stubs_should_be_available_via_pluginsync.rb │ │ ├── feature │ │ │ └── pluginsync_should_sync_features.rb │ │ └── files_earlier_in_modulepath_take_precendence.rb │ ├── provider │ │ └── package │ │ │ ├── apt_install_package_with_range.rb │ │ │ ├── dnfmodule_enable_only.rb │ │ │ ├── dnfmodule_ensure_versionable.rb │ │ │ ├── dnfmodule_manages_flavors.rb │ │ │ ├── dpkg_ensure_latest_virtual_packages.rb │ │ │ ├── dpkg_hold_true_package_is_latest.rb │ │ │ ├── dpkg_hold_true_should_preserve_version.rb │ │ │ ├── gem.rb │ │ │ ├── pip.rb │ │ │ ├── puppetserver_gem.rb │ │ │ ├── rpm_ensure_install_multiversion_package.rb │ │ │ ├── yum_semantic_versioning.rb │ │ │ └── zypper_install_package_with_range.rb │ ├── reports │ │ ├── agent_sends_json_report_for_cached_catalog.rb │ │ ├── cached_catalog_status_in_report.rb │ │ ├── corrective_change_new_resource.rb │ │ ├── corrective_change_outside_puppet.rb │ │ ├── corrective_change_via_puppet.rb │ │ └── submission.rb │ ├── resource │ │ ├── exec │ │ │ ├── accept_array_commands.rb │ │ │ ├── accept_multi-line_commands.rb │ │ │ ├── should_accept_large_output.rb │ │ │ ├── should_not_run_command_creates.rb │ │ │ ├── should_run_bad_command.rb │ │ │ ├── should_run_command.rb │ │ │ ├── should_run_command_as_user.rb │ │ │ ├── should_run_command_in_cwd.rb │ │ │ ├── should_set_environment_variables.rb │ │ │ └── should_set_path.rb │ │ ├── file │ │ │ ├── ascii_diff_output_content_attribute.rb │ │ │ ├── bin_diff_output_content_attribute.rb │ │ │ ├── content_attribute.rb │ │ │ ├── handle_fifo_files.rb │ │ │ ├── handle_fifo_files_when_recursing.rb │ │ │ ├── should_create_directory.rb │ │ │ ├── should_create_empty.rb │ │ │ ├── should_create_symlink.rb │ │ │ ├── should_default_mode.rb │ │ │ ├── should_remove_dir.rb │ │ │ ├── should_remove_file.rb │ │ │ ├── source_attribute.rb │ │ │ ├── symbolic_modes.rb │ │ │ ├── ticket_6448_file_with_utf8_source.rb │ │ │ ├── ticket_7680-follow-symlinks.rb │ │ │ └── ticket_8740_should_not_enumerate_root_directory.rb │ │ ├── group │ │ │ ├── should_create.rb │ │ │ ├── should_destroy.rb │ │ │ ├── should_manage_attributes_aix.rb │ │ │ ├── should_manage_members.rb │ │ │ ├── should_modify_gid.rb │ │ │ ├── should_not_create_existing.rb │ │ │ ├── should_not_destroy_unexisting.rb │ │ │ ├── should_query.rb │ │ │ └── should_query_all.rb │ │ ├── package │ │ │ ├── common_package_name_in_different_providers.rb │ │ │ ├── does_not_exist.rb │ │ │ ├── ips │ │ │ │ ├── basic_tests.rb │ │ │ │ ├── should_be_holdable.rb │ │ │ │ ├── should_be_idempotent.rb │ │ │ │ ├── should_be_updatable.rb │ │ │ │ ├── should_be_updateable_and_unholdable_at_same_time.rb │ │ │ │ ├── should_be_versionable.rb │ │ │ │ ├── should_create.rb │ │ │ │ ├── should_query.rb │ │ │ │ └── should_remove.rb │ │ │ ├── windows.rb │ │ │ └── yum.rb │ │ ├── service │ │ │ ├── AIX_service_provider.rb │ │ │ ├── init_on_systemd.rb │ │ │ ├── launchd_provider.rb │ │ │ ├── puppet_service_management.rb │ │ │ ├── puppet_service_runs_puppet.rb │ │ │ ├── service_enable_linux.rb │ │ │ ├── should_not_change_the_system.rb │ │ │ ├── should_query_all.rb │ │ │ ├── smf_basic_tests.rb │ │ │ ├── systemd_resource_shows_correct_output.rb │ │ │ ├── ticket_5024_systemd_enabling_masked_service.rb │ │ │ ├── windows.rb │ │ │ └── windows_mixed_utf8.rb │ │ ├── tidy │ │ │ ├── resources_should_be_non_isomorphic.rb │ │ │ └── should_remove_old_files.rb │ │ └── user │ │ │ ├── osx_10.4_should_fail_when_modify_home.rb │ │ │ ├── osx_10.4_should_fail_when_modify_uid.rb │ │ │ ├── should_allow_managed_macos_users_to_login.rb │ │ │ ├── should_create.rb │ │ │ ├── should_create_modify_with_password.rb │ │ │ ├── should_create_with_expiry_absent.rb │ │ │ ├── should_create_with_gid.rb │ │ │ ├── should_destroy.rb │ │ │ ├── should_destroy_with_managehome.rb │ │ │ ├── should_manage_attributes_aix.rb │ │ │ ├── should_manage_groups.rb │ │ │ ├── should_manage_purge_ssh_keys.rb │ │ │ ├── should_manage_roles_on_windows.rb │ │ │ ├── should_manage_shell.rb │ │ │ ├── should_modify.rb │ │ │ ├── should_modify_gid.rb │ │ │ ├── should_modify_gid_forcelocal.rb │ │ │ ├── should_modify_when_not_managing_home.rb │ │ │ ├── should_modify_while_managing_home.rb │ │ │ ├── should_not_create_existing.rb │ │ │ ├── should_not_destroy_unexisting.rb │ │ │ ├── should_not_modify_disabled.rb │ │ │ ├── should_purge.rb │ │ │ ├── should_query.rb │ │ │ ├── should_query_all.rb │ │ │ └── utf8_user_comments.rb │ ├── security │ │ ├── cve-2013-1640_facter_string.rb │ │ ├── cve-2013-1652_improper_query_params.rb │ │ ├── cve-2013-1652_poison_other_node_cache.rb │ │ ├── cve-2013-2275_report_acl.rb │ │ └── cve-2013-4761_injection_of_class_names_loading_code.rb │ ├── ssl │ │ ├── autosign_command.rb │ │ ├── certificate_extensions.rb │ │ └── trusted_external_facts.rb │ ├── ticket_1334_clientbucket_corrupted.rb │ ├── ticket_13948_lib_dir_hook_should_be_called_on_initialization.rb │ ├── ticket_15560_managehome.rb │ ├── ticket_2280_refresh_fail_should_fail_run.rb │ ├── ticket_2455_on_solaris_init_provider_should_start_service_in_own_smf_contract.rb │ ├── ticket_5477_master_not_dectect_sitepp.rb │ ├── ticket_5592_hiera_lookup_when_param_undef.rb │ ├── ticket_6541_invalid_filebucket_files.rb │ ├── ticket_6857_password-disclosure-when-changing-a-users-password.rb │ ├── ticket_6907_use_provider_in_same_run_it_becomes_suitable.rb │ ├── ticket_9862_puppet_runs_without_service_user_or_group_present.rb │ ├── utf8 │ │ ├── utf8-in-catalog.rb │ │ ├── utf8-in-file-resource.rb │ │ ├── utf8-in-function-args.rb │ │ ├── utf8-in-puppet-describe.rb │ │ └── utf8-recursive-copy.rb │ └── windows │ │ ├── PA-2191_windows_nocodepage_utf8_fallback.rb │ │ ├── PUP-9719_windows_system_first_pa_run.rb │ │ ├── QA-506_windows_exit_codes_test.rb │ │ ├── QA-760_win_dash_dot_file_test.rb │ │ ├── enable_password_changes_special_users.rb │ │ ├── service_manager_integration.rb │ │ └── winexitcode │ │ └── manifests │ │ ├── execute.pp │ │ └── init.pp └── vmpooler.cfg ├── api ├── docs │ ├── http_api_index.md │ ├── http_catalog.md │ ├── http_certificate.md │ ├── http_certificate_request.md │ ├── http_certificate_revocation_list.md │ ├── http_certificate_status.md │ ├── http_environments.md │ ├── http_facts.md │ ├── http_file_bucket_file.md │ ├── http_file_content.md │ ├── http_file_metadata.md │ ├── http_node.md │ ├── http_report.md │ └── pson.md └── schemas │ ├── catalog.json │ ├── environments.json │ ├── error.json │ ├── facts.json │ ├── file_metadata.json │ ├── host.json │ ├── json-meta-schema.json │ ├── node.json │ └── report.json ├── benchmarks ├── catalog_memory │ ├── benchmarker.rb │ ├── description │ ├── puppet.conf.erb │ └── site.pp.erb ├── defined_types │ ├── benchmarker.rb │ ├── description │ ├── module │ │ └── testing.pp.erb │ ├── puppet.conf.erb │ └── site.pp.erb ├── dependency_loading │ ├── benchmarker.rb │ ├── description │ ├── module │ │ ├── function.erb │ │ ├── global_function.erb │ │ ├── init.pp.erb │ │ └── init.pp_no_call.erb │ ├── puppet.conf.erb │ └── site.pp.erb ├── empty_catalog │ ├── benchmarker.rb │ ├── description │ ├── puppet.conf.erb │ └── site.pp.erb ├── evaluations │ ├── benchmarker.rb │ ├── benchmarker_task.rb │ ├── description │ ├── manifests │ │ ├── assert_type.pp │ │ ├── fcall_3x.pp │ │ ├── fcall_4x.pp │ │ ├── fcall_ns4x.pp │ │ ├── interpolation.pp │ │ ├── var_absolute.pp │ │ ├── var_class_absolute.pp │ │ ├── var_class_relative.pp │ │ └── var_relative.pp │ ├── module │ │ ├── func3.rb.erb │ │ ├── func4.rb.erb │ │ ├── init.pp.erb │ │ └── module1_func4.rb.erb │ ├── puppet.conf.erb │ └── site.pp.erb ├── fq_var_lookup │ ├── benchmarker.rb │ ├── description │ ├── module │ │ ├── badclass.pp.erb │ │ └── params.pp.erb │ ├── puppet.conf.erb │ └── site.pp.erb ├── full_catalog │ ├── Gemfile │ ├── benchmarker.rb │ ├── description │ ├── hiera.yaml.erb │ ├── puppet.conf.erb │ ├── r10k.yaml │ └── site.pp.erb ├── function_loading │ ├── benchmarker.rb │ ├── description │ ├── env_function.erb │ ├── module │ │ ├── function.erb │ │ └── init.pp.erb │ ├── puppet.conf.erb │ └── site.pp.erb ├── hiera_conf_interpol │ ├── benchmarker.rb │ ├── description │ └── puppet.conf.erb ├── hiera_env_lookup │ ├── benchmarker.rb │ ├── description │ └── puppet.conf.erb ├── hiera_function │ ├── benchmarker.rb │ ├── description │ └── puppet.conf.erb ├── hiera_global_lookup │ ├── benchmarker.rb │ ├── description │ └── puppet.conf.erb ├── hiera_include │ ├── benchmarker.rb │ ├── description │ └── puppet.conf.erb ├── hiera_include_one │ ├── benchmarker.rb │ ├── description │ └── puppet.conf.erb ├── legacy_hiera_lookup │ ├── benchmarker.rb │ └── description ├── many_environments │ ├── benchmarker.rb │ └── description ├── many_modules │ ├── benchmarker.rb │ ├── description │ ├── module │ │ ├── init.pp.erb │ │ ├── internal.pp.erb │ │ └── role.pp.erb │ ├── puppet.conf.erb │ └── site.pp.erb ├── missing_type_caching │ ├── benchmarker.rb │ ├── description │ ├── module │ │ └── testmodule.pp.erb │ ├── puppet.conf.erb │ └── site.pp.erb ├── serialization │ ├── benchmarker.rb │ ├── catalog.json │ └── description ├── system_startup │ ├── benchmarker.rb │ └── description ├── type_inference │ ├── benchmarker.rb │ ├── description │ ├── puppet.conf.erb │ └── site.pp.erb └── virtual_collection │ ├── benchmarker.rb │ ├── description │ ├── puppet.conf.erb │ └── site.pp.erb ├── bin └── puppet ├── conf ├── environment.conf ├── fileserver.conf ├── hiera.yaml └── puppet.conf ├── docs ├── catalogs.md ├── environment_convergence.md ├── http.md ├── httpcaroute.png ├── httpclient.png ├── index.md ├── indirector.md ├── parser_work.md ├── profiling.md ├── quickstart.md ├── rspec_tutorial.md ├── settings.md ├── unicode.md └── windows.md ├── examples ├── enc │ └── regexp_nodes │ │ ├── classes │ │ ├── databases │ │ └── webservers │ │ ├── environment │ │ └── development │ │ ├── parameters │ │ └── service │ │ │ ├── prod │ │ │ ├── qa │ │ │ └── sandbox │ │ └── regexp_nodes.rb ├── hiera │ ├── README.md │ ├── data │ │ ├── common.yaml │ │ └── dc1.yaml │ ├── hiera.yaml │ ├── modules │ │ ├── ntp │ │ │ ├── data │ │ │ │ └── common.yaml │ │ │ ├── hiera.yaml │ │ │ ├── manifests │ │ │ │ └── config.pp │ │ │ └── templates │ │ │ │ └── ntp.conf.epp │ │ └── users │ │ │ └── manifests │ │ │ ├── common.pp │ │ │ └── dc1.pp │ └── site.pp └── nagios │ └── check_puppet.rb ├── ext ├── README.md ├── build_defaults.yaml ├── debian │ ├── puppet.default │ └── puppet.init ├── hiera │ └── hiera.yaml ├── osx │ └── puppet.plist ├── project_data.yaml ├── redhat │ ├── client.init │ └── client.sysconfig ├── solaris │ └── smf │ │ ├── puppet │ │ └── puppet.xml ├── suse │ └── client.init ├── systemd │ └── puppet.service └── windows │ ├── puppet_interactive.bat │ ├── puppet_shell.bat │ ├── run_puppet_interactive.bat │ └── service │ ├── daemon.bat │ └── daemon.rb ├── install.rb ├── lib ├── hiera │ ├── puppet_function.rb │ └── scope.rb ├── hiera_puppet.rb ├── puppet.rb ├── puppet │ ├── agent.rb │ ├── agent │ │ ├── disabler.rb │ │ └── locker.rb │ ├── application.rb │ ├── application │ │ ├── agent.rb │ │ ├── apply.rb │ │ ├── catalog.rb │ │ ├── config.rb │ │ ├── describe.rb │ │ ├── device.rb │ │ ├── doc.rb │ │ ├── epp.rb │ │ ├── face_base.rb │ │ ├── facts.rb │ │ ├── filebucket.rb │ │ ├── generate.rb │ │ ├── help.rb │ │ ├── indirection_base.rb │ │ ├── lookup.rb │ │ ├── module.rb │ │ ├── node.rb │ │ ├── parser.rb │ │ ├── plugin.rb │ │ ├── report.rb │ │ ├── resource.rb │ │ ├── script.rb │ │ └── ssl.rb │ ├── application_support.rb │ ├── coercion.rb │ ├── compilable_resource_type.rb │ ├── concurrent.rb │ ├── concurrent │ │ ├── lock.rb │ │ ├── synchronized.rb │ │ └── thread_local_singleton.rb │ ├── configurer.rb │ ├── configurer │ │ ├── downloader.rb │ │ ├── fact_handler.rb │ │ └── plugin_handler.rb │ ├── confine.rb │ ├── confine │ │ ├── any.rb │ │ ├── boolean.rb │ │ ├── exists.rb │ │ ├── false.rb │ │ ├── feature.rb │ │ ├── true.rb │ │ └── variable.rb │ ├── confine_collection.rb │ ├── confiner.rb │ ├── context.rb │ ├── context │ │ └── trusted_information.rb │ ├── daemon.rb │ ├── data_binding.rb │ ├── datatypes.rb │ ├── datatypes │ │ ├── error.rb │ │ └── impl │ │ │ └── error.rb │ ├── defaults.rb │ ├── environments.rb │ ├── error.rb │ ├── etc.rb │ ├── external │ │ └── dot.rb │ ├── face.rb │ ├── face │ │ ├── catalog.rb │ │ ├── catalog │ │ │ └── select.rb │ │ ├── config.rb │ │ ├── epp.rb │ │ ├── facts.rb │ │ ├── generate.rb │ │ ├── help.rb │ │ ├── help │ │ │ ├── action.erb │ │ │ ├── face.erb │ │ │ ├── global.erb │ │ │ └── man.erb │ │ ├── module.rb │ │ ├── module │ │ │ ├── changes.rb │ │ │ ├── install.rb │ │ │ ├── list.rb │ │ │ ├── uninstall.rb │ │ │ └── upgrade.rb │ │ ├── node.rb │ │ ├── node │ │ │ └── clean.rb │ │ ├── parser.rb │ │ ├── plugin.rb │ │ ├── report.rb │ │ └── resource.rb │ ├── facter_impl.rb │ ├── feature │ │ ├── base.rb │ │ ├── bolt.rb │ │ ├── cfpropertylist.rb │ │ ├── eventlog.rb │ │ ├── hiera_eyaml.rb │ │ ├── hocon.rb │ │ ├── libuser.rb │ │ ├── msgpack.rb │ │ ├── pe_license.rb │ │ ├── pson.rb │ │ ├── selinux.rb │ │ ├── ssh.rb │ │ ├── telnet.rb │ │ └── zlib.rb │ ├── ffi │ │ ├── posix.rb │ │ ├── posix │ │ │ ├── constants.rb │ │ │ └── functions.rb │ │ ├── windows.rb │ │ └── windows │ │ │ ├── api_types.rb │ │ │ ├── constants.rb │ │ │ ├── functions.rb │ │ │ └── structs.rb │ ├── file_bucket.rb │ ├── file_bucket │ │ ├── dipper.rb │ │ └── file.rb │ ├── file_serving.rb │ ├── file_serving │ │ ├── base.rb │ │ ├── configuration.rb │ │ ├── configuration │ │ │ └── parser.rb │ │ ├── content.rb │ │ ├── fileset.rb │ │ ├── http_metadata.rb │ │ ├── metadata.rb │ │ ├── mount.rb │ │ ├── mount │ │ │ ├── file.rb │ │ │ ├── locales.rb │ │ │ ├── modules.rb │ │ │ ├── pluginfacts.rb │ │ │ ├── plugins.rb │ │ │ ├── scripts.rb │ │ │ └── tasks.rb │ │ ├── terminus_helper.rb │ │ └── terminus_selector.rb │ ├── file_system.rb │ ├── file_system │ │ ├── file_impl.rb │ │ ├── jruby.rb │ │ ├── memory_file.rb │ │ ├── memory_impl.rb │ │ ├── path_pattern.rb │ │ ├── posix.rb │ │ ├── uniquefile.rb │ │ └── windows.rb │ ├── forge.rb │ ├── forge │ │ ├── cache.rb │ │ ├── errors.rb │ │ └── repository.rb │ ├── functions.rb │ ├── functions │ │ ├── abs.rb │ │ ├── alert.rb │ │ ├── all.rb │ │ ├── annotate.rb │ │ ├── any.rb │ │ ├── assert_type.rb │ │ ├── binary_file.rb │ │ ├── break.rb │ │ ├── call.rb │ │ ├── camelcase.rb │ │ ├── capitalize.rb │ │ ├── ceiling.rb │ │ ├── chomp.rb │ │ ├── chop.rb │ │ ├── compare.rb │ │ ├── contain.rb │ │ ├── convert_to.rb │ │ ├── crit.rb │ │ ├── debug.rb │ │ ├── defined.rb │ │ ├── dig.rb │ │ ├── downcase.rb │ │ ├── each.rb │ │ ├── emerg.rb │ │ ├── empty.rb │ │ ├── epp.rb │ │ ├── err.rb │ │ ├── eyaml_lookup_key.rb │ │ ├── filter.rb │ │ ├── find_file.rb │ │ ├── find_template.rb │ │ ├── flatten.rb │ │ ├── floor.rb │ │ ├── get.rb │ │ ├── getvar.rb │ │ ├── group_by.rb │ │ ├── hiera.rb │ │ ├── hiera_array.rb │ │ ├── hiera_hash.rb │ │ ├── hiera_include.rb │ │ ├── hocon_data.rb │ │ ├── import.rb │ │ ├── include.rb │ │ ├── index.rb │ │ ├── info.rb │ │ ├── inline_epp.rb │ │ ├── join.rb │ │ ├── json_data.rb │ │ ├── keys.rb │ │ ├── length.rb │ │ ├── lest.rb │ │ ├── lookup.rb │ │ ├── lstrip.rb │ │ ├── map.rb │ │ ├── match.rb │ │ ├── max.rb │ │ ├── min.rb │ │ ├── module_directory.rb │ │ ├── new.rb │ │ ├── next.rb │ │ ├── notice.rb │ │ ├── partition.rb │ │ ├── reduce.rb │ │ ├── regsubst.rb │ │ ├── require.rb │ │ ├── return.rb │ │ ├── reverse_each.rb │ │ ├── round.rb │ │ ├── rstrip.rb │ │ ├── scanf.rb │ │ ├── size.rb │ │ ├── slice.rb │ │ ├── sort.rb │ │ ├── split.rb │ │ ├── step.rb │ │ ├── strftime.rb │ │ ├── strip.rb │ │ ├── then.rb │ │ ├── tree_each.rb │ │ ├── type.rb │ │ ├── unique.rb │ │ ├── unwrap.rb │ │ ├── upcase.rb │ │ ├── values.rb │ │ ├── versioncmp.rb │ │ ├── warning.rb │ │ ├── with.rb │ │ └── yaml_data.rb │ ├── generate │ │ ├── models │ │ │ └── type │ │ │ │ ├── property.rb │ │ │ │ └── type.rb │ │ ├── templates │ │ │ └── type │ │ │ │ └── pcore.erb │ │ └── type.rb │ ├── gettext │ │ ├── config.rb │ │ ├── module_translations.rb │ │ └── stubs.rb │ ├── graph.rb │ ├── graph │ │ ├── key.rb │ │ ├── prioritizer.rb │ │ ├── rb_tree_map.rb │ │ ├── relationship_graph.rb │ │ ├── sequential_prioritizer.rb │ │ └── simple_graph.rb │ ├── http.rb │ ├── http │ │ ├── client.rb │ │ ├── dns.rb │ │ ├── errors.rb │ │ ├── external_client.rb │ │ ├── factory.rb │ │ ├── pool.rb │ │ ├── pool_entry.rb │ │ ├── proxy.rb │ │ ├── redirector.rb │ │ ├── resolver.rb │ │ ├── resolver │ │ │ ├── server_list.rb │ │ │ ├── settings.rb │ │ │ └── srv.rb │ │ ├── response.rb │ │ ├── response_converter.rb │ │ ├── response_net_http.rb │ │ ├── retry_after_handler.rb │ │ ├── service.rb │ │ ├── service │ │ │ ├── ca.rb │ │ │ ├── compiler.rb │ │ │ ├── file_server.rb │ │ │ ├── puppetserver.rb │ │ │ └── report.rb │ │ ├── session.rb │ │ └── site.rb │ ├── indirector.rb │ ├── indirector │ │ ├── catalog │ │ │ ├── compiler.rb │ │ │ ├── json.rb │ │ │ ├── msgpack.rb │ │ │ ├── rest.rb │ │ │ ├── store_configs.rb │ │ │ └── yaml.rb │ │ ├── code.rb │ │ ├── data_binding │ │ │ ├── hiera.rb │ │ │ └── none.rb │ │ ├── direct_file_server.rb │ │ ├── envelope.rb │ │ ├── errors.rb │ │ ├── exec.rb │ │ ├── face.rb │ │ ├── fact_search.rb │ │ ├── facts │ │ │ ├── facter.rb │ │ │ ├── json.rb │ │ │ ├── memory.rb │ │ │ ├── network_device.rb │ │ │ ├── rest.rb │ │ │ ├── store_configs.rb │ │ │ └── yaml.rb │ │ ├── file_bucket_file │ │ │ ├── file.rb │ │ │ ├── rest.rb │ │ │ └── selector.rb │ │ ├── file_content.rb │ │ ├── file_content │ │ │ ├── file.rb │ │ │ ├── file_server.rb │ │ │ ├── rest.rb │ │ │ └── selector.rb │ │ ├── file_metadata.rb │ │ ├── file_metadata │ │ │ ├── file.rb │ │ │ ├── file_server.rb │ │ │ ├── http.rb │ │ │ ├── rest.rb │ │ │ └── selector.rb │ │ ├── file_server.rb │ │ ├── generic_http.rb │ │ ├── hiera.rb │ │ ├── indirection.rb │ │ ├── json.rb │ │ ├── memory.rb │ │ ├── msgpack.rb │ │ ├── node │ │ │ ├── exec.rb │ │ │ ├── json.rb │ │ │ ├── memory.rb │ │ │ ├── msgpack.rb │ │ │ ├── plain.rb │ │ │ ├── rest.rb │ │ │ ├── store_configs.rb │ │ │ └── yaml.rb │ │ ├── none.rb │ │ ├── plain.rb │ │ ├── report │ │ │ ├── json.rb │ │ │ ├── msgpack.rb │ │ │ ├── processor.rb │ │ │ ├── rest.rb │ │ │ └── yaml.rb │ │ ├── request.rb │ │ ├── resource │ │ │ ├── ral.rb │ │ │ ├── store_configs.rb │ │ │ └── validator.rb │ │ ├── rest.rb │ │ ├── store_configs.rb │ │ ├── terminus.rb │ │ └── yaml.rb │ ├── info_service.rb │ ├── info_service │ │ ├── class_information_service.rb │ │ ├── plan_information_service.rb │ │ └── task_information_service.rb │ ├── interface.rb │ ├── interface │ │ ├── action.rb │ │ ├── action_builder.rb │ │ ├── action_manager.rb │ │ ├── documentation.rb │ │ ├── face_collection.rb │ │ ├── option.rb │ │ ├── option_builder.rb │ │ └── option_manager.rb │ ├── loaders.rb │ ├── metatype │ │ └── manager.rb │ ├── module.rb │ ├── module │ │ ├── plan.rb │ │ └── task.rb │ ├── module_tool.rb │ ├── module_tool │ │ ├── applications.rb │ │ ├── applications │ │ │ ├── application.rb │ │ │ ├── checksummer.rb │ │ │ ├── installer.rb │ │ │ ├── uninstaller.rb │ │ │ ├── unpacker.rb │ │ │ └── upgrader.rb │ │ ├── checksums.rb │ │ ├── dependency.rb │ │ ├── errors.rb │ │ ├── errors │ │ │ ├── base.rb │ │ │ ├── installer.rb │ │ │ ├── shared.rb │ │ │ ├── uninstaller.rb │ │ │ └── upgrader.rb │ │ ├── install_directory.rb │ │ ├── installed_modules.rb │ │ ├── local_tarball.rb │ │ ├── metadata.rb │ │ ├── shared_behaviors.rb │ │ ├── tar.rb │ │ └── tar │ │ │ ├── gnu.rb │ │ │ └── mini.rb │ ├── network.rb │ ├── network │ │ ├── authconfig.rb │ │ ├── authorization.rb │ │ ├── client_request.rb │ │ ├── format.rb │ │ ├── format_handler.rb │ │ ├── format_support.rb │ │ ├── formats.rb │ │ ├── http.rb │ │ ├── http │ │ │ ├── api.rb │ │ │ ├── api │ │ │ │ ├── indirected_routes.rb │ │ │ │ ├── indirection_type.rb │ │ │ │ ├── master.rb │ │ │ │ ├── master │ │ │ │ │ ├── v3.rb │ │ │ │ │ └── v3 │ │ │ │ │ │ └── environments.rb │ │ │ │ ├── server.rb │ │ │ │ └── server │ │ │ │ │ ├── v3.rb │ │ │ │ │ └── v3 │ │ │ │ │ └── environments.rb │ │ │ ├── connection.rb │ │ │ ├── error.rb │ │ │ ├── handler.rb │ │ │ ├── issues.rb │ │ │ ├── memory_response.rb │ │ │ ├── request.rb │ │ │ ├── response.rb │ │ │ └── route.rb │ │ ├── http_pool.rb │ │ └── uri.rb │ ├── node.rb │ ├── node │ │ ├── environment.rb │ │ ├── facts.rb │ │ └── server_facts.rb │ ├── pal │ │ ├── catalog_compiler.rb │ │ ├── compiler.rb │ │ ├── function_signature.rb │ │ ├── json_catalog_encoder.rb │ │ ├── pal_api.rb │ │ ├── pal_impl.rb │ │ ├── plan_signature.rb │ │ ├── script_compiler.rb │ │ └── task_signature.rb │ ├── parameter.rb │ ├── parameter │ │ ├── boolean.rb │ │ ├── package_options.rb │ │ ├── path.rb │ │ ├── value.rb │ │ └── value_collection.rb │ ├── parser.rb │ ├── parser │ │ ├── abstract_compiler.rb │ │ ├── ast.rb │ │ ├── ast │ │ │ ├── block_expression.rb │ │ │ ├── branch.rb │ │ │ ├── hostclass.rb │ │ │ ├── leaf.rb │ │ │ ├── node.rb │ │ │ ├── pops_bridge.rb │ │ │ ├── resource.rb │ │ │ ├── resource_instance.rb │ │ │ ├── resourceparam.rb │ │ │ └── top_level_construct.rb │ │ ├── catalog_compiler.rb │ │ ├── compiler.rb │ │ ├── compiler │ │ │ ├── catalog_validator.rb │ │ │ └── catalog_validator │ │ │ │ └── relationship_validator.rb │ │ ├── e4_parser_adapter.rb │ │ ├── files.rb │ │ ├── functions.rb │ │ ├── functions │ │ │ ├── assert_type.rb │ │ │ ├── binary_file.rb │ │ │ ├── break.rb │ │ │ ├── contain.rb │ │ │ ├── create_resources.rb │ │ │ ├── defined.rb │ │ │ ├── dig.rb │ │ │ ├── digest.rb │ │ │ ├── each.rb │ │ │ ├── epp.rb │ │ │ ├── fail.rb │ │ │ ├── file.rb │ │ │ ├── filter.rb │ │ │ ├── find_file.rb │ │ │ ├── fqdn_rand.rb │ │ │ ├── generate.rb │ │ │ ├── hiera.rb │ │ │ ├── hiera_array.rb │ │ │ ├── hiera_hash.rb │ │ │ ├── hiera_include.rb │ │ │ ├── include.rb │ │ │ ├── inline_epp.rb │ │ │ ├── inline_template.rb │ │ │ ├── lest.rb │ │ │ ├── lookup.rb │ │ │ ├── map.rb │ │ │ ├── match.rb │ │ │ ├── md5.rb │ │ │ ├── new.rb │ │ │ ├── next.rb │ │ │ ├── realize.rb │ │ │ ├── reduce.rb │ │ │ ├── regsubst.rb │ │ │ ├── require.rb │ │ │ ├── return.rb │ │ │ ├── reverse_each.rb │ │ │ ├── scanf.rb │ │ │ ├── sha1.rb │ │ │ ├── sha256.rb │ │ │ ├── shellquote.rb │ │ │ ├── slice.rb │ │ │ ├── split.rb │ │ │ ├── sprintf.rb │ │ │ ├── step.rb │ │ │ ├── strftime.rb │ │ │ ├── tag.rb │ │ │ ├── tagged.rb │ │ │ ├── template.rb │ │ │ ├── then.rb │ │ │ ├── type.rb │ │ │ ├── versioncmp.rb │ │ │ └── with.rb │ │ ├── parser_factory.rb │ │ ├── relationship.rb │ │ ├── resource.rb │ │ ├── resource │ │ │ └── param.rb │ │ ├── scope.rb │ │ ├── script_compiler.rb │ │ ├── templatewrapper.rb │ │ └── type_loader.rb │ ├── plugins.rb │ ├── plugins │ │ ├── configuration.rb │ │ └── syntax_checkers.rb │ ├── pops.rb │ ├── pops │ │ ├── adaptable.rb │ │ ├── adapters.rb │ │ ├── evaluator │ │ │ ├── access_operator.rb │ │ │ ├── callable_signature.rb │ │ │ ├── closure.rb │ │ │ ├── collector_transformer.rb │ │ │ ├── collectors │ │ │ │ ├── abstract_collector.rb │ │ │ │ ├── catalog_collector.rb │ │ │ │ ├── exported_collector.rb │ │ │ │ └── fixed_set_collector.rb │ │ │ ├── compare_operator.rb │ │ │ ├── deferred_resolver.rb │ │ │ ├── epp_evaluator.rb │ │ │ ├── evaluator_impl.rb │ │ │ ├── external_syntax_support.rb │ │ │ ├── json_strict_literal_evaluator.rb │ │ │ ├── literal_evaluator.rb │ │ │ ├── puppet_proc.rb │ │ │ ├── relationship_operator.rb │ │ │ ├── runtime3_converter.rb │ │ │ ├── runtime3_resource_support.rb │ │ │ └── runtime3_support.rb │ │ ├── functions │ │ │ ├── dispatch.rb │ │ │ ├── dispatcher.rb │ │ │ └── function.rb │ │ ├── issue_reporter.rb │ │ ├── issues.rb │ │ ├── label_provider.rb │ │ ├── loader │ │ │ ├── base_loader.rb │ │ │ ├── dependency_loader.rb │ │ │ ├── gem_support.rb │ │ │ ├── generic_plan_instantiator.rb │ │ │ ├── loader.rb │ │ │ ├── loader_paths.rb │ │ │ ├── module_loaders.rb │ │ │ ├── predefined_loader.rb │ │ │ ├── puppet_function_instantiator.rb │ │ │ ├── puppet_plan_instantiator.rb │ │ │ ├── puppet_resource_type_impl_instantiator.rb │ │ │ ├── ruby_data_type_instantiator.rb │ │ │ ├── ruby_function_instantiator.rb │ │ │ ├── ruby_legacy_function_instantiator.rb │ │ │ ├── runtime3_type_loader.rb │ │ │ ├── simple_environment_loader.rb │ │ │ ├── static_loader.rb │ │ │ ├── task_instantiator.rb │ │ │ ├── type_definition_instantiator.rb │ │ │ ├── typed_name.rb │ │ │ └── uri_helper.rb │ │ ├── loaders.rb │ │ ├── lookup.rb │ │ ├── lookup │ │ │ ├── configured_data_provider.rb │ │ │ ├── context.rb │ │ │ ├── data_adapter.rb │ │ │ ├── data_dig_function_provider.rb │ │ │ ├── data_hash_function_provider.rb │ │ │ ├── data_provider.rb │ │ │ ├── environment_data_provider.rb │ │ │ ├── explainer.rb │ │ │ ├── function_provider.rb │ │ │ ├── global_data_provider.rb │ │ │ ├── hiera_config.rb │ │ │ ├── interpolation.rb │ │ │ ├── invocation.rb │ │ │ ├── key_recorder.rb │ │ │ ├── location_resolver.rb │ │ │ ├── lookup_adapter.rb │ │ │ ├── lookup_key.rb │ │ │ ├── lookup_key_function_provider.rb │ │ │ ├── module_data_provider.rb │ │ │ └── sub_lookup.rb │ │ ├── merge_strategy.rb │ │ ├── migration │ │ │ └── migration_checker.rb │ │ ├── model │ │ │ ├── ast.pp │ │ │ ├── ast.rb │ │ │ ├── ast_transformer.rb │ │ │ ├── factory.rb │ │ │ ├── model_label_provider.rb │ │ │ ├── model_tree_dumper.rb │ │ │ ├── pn_transformer.rb │ │ │ └── tree_dumper.rb │ │ ├── parser │ │ │ ├── code_merger.rb │ │ │ ├── egrammar.ra │ │ │ ├── eparser.rb │ │ │ ├── epp_parser.rb │ │ │ ├── epp_support.rb │ │ │ ├── evaluating_parser.rb │ │ │ ├── heredoc_support.rb │ │ │ ├── interpolation_support.rb │ │ │ ├── lexer2.rb │ │ │ ├── lexer_support.rb │ │ │ ├── locatable.rb │ │ │ ├── locator.rb │ │ │ ├── parser_support.rb │ │ │ ├── pn_parser.rb │ │ │ └── slurp_support.rb │ │ ├── patterns.rb │ │ ├── pcore.rb │ │ ├── pn.rb │ │ ├── puppet_stack.rb │ │ ├── resource │ │ │ ├── param.rb │ │ │ ├── resource_type_impl.rb │ │ │ └── resource_type_set.pcore │ │ ├── semantic_error.rb │ │ ├── serialization.rb │ │ ├── serialization │ │ │ ├── abstract_reader.rb │ │ │ ├── abstract_writer.rb │ │ │ ├── deserializer.rb │ │ │ ├── extension.rb │ │ │ ├── from_data_converter.rb │ │ │ ├── instance_reader.rb │ │ │ ├── instance_writer.rb │ │ │ ├── json.rb │ │ │ ├── json_path.rb │ │ │ ├── object.rb │ │ │ ├── serializer.rb │ │ │ ├── time_factory.rb │ │ │ ├── to_data_converter.rb │ │ │ └── to_stringified_converter.rb │ │ ├── time │ │ │ ├── timespan.rb │ │ │ └── timestamp.rb │ │ ├── types │ │ │ ├── annotatable.rb │ │ │ ├── annotation.rb │ │ │ ├── class_loader.rb │ │ │ ├── implementation_registry.rb │ │ │ ├── iterable.rb │ │ │ ├── p_binary_type.rb │ │ │ ├── p_init_type.rb │ │ │ ├── p_meta_type.rb │ │ │ ├── p_object_type.rb │ │ │ ├── p_object_type_extension.rb │ │ │ ├── p_runtime_type.rb │ │ │ ├── p_sem_ver_range_type.rb │ │ │ ├── p_sem_ver_type.rb │ │ │ ├── p_sensitive_type.rb │ │ │ ├── p_timespan_type.rb │ │ │ ├── p_timestamp_type.rb │ │ │ ├── p_type_set_type.rb │ │ │ ├── p_uri_type.rb │ │ │ ├── puppet_object.rb │ │ │ ├── recursion_guard.rb │ │ │ ├── ruby_generator.rb │ │ │ ├── ruby_method.rb │ │ │ ├── string_converter.rb │ │ │ ├── tree_iterators.rb │ │ │ ├── type_acceptor.rb │ │ │ ├── type_asserter.rb │ │ │ ├── type_assertion_error.rb │ │ │ ├── type_calculator.rb │ │ │ ├── type_conversion_error.rb │ │ │ ├── type_factory.rb │ │ │ ├── type_formatter.rb │ │ │ ├── type_mismatch_describer.rb │ │ │ ├── type_parser.rb │ │ │ ├── type_set_reference.rb │ │ │ ├── type_with_members.rb │ │ │ └── types.rb │ │ ├── utils.rb │ │ ├── validation.rb │ │ ├── validation │ │ │ ├── checker4_0.rb │ │ │ ├── tasks_checker.rb │ │ │ └── validator_factory_4_0.rb │ │ ├── visitable.rb │ │ └── visitor.rb │ ├── property.rb │ ├── property │ │ ├── boolean.rb │ │ ├── ensure.rb │ │ ├── keyvalue.rb │ │ ├── list.rb │ │ └── ordered_list.rb │ ├── provider.rb │ ├── provider │ │ ├── aix_object.rb │ │ ├── command.rb │ │ ├── confine.rb │ │ ├── exec.rb │ │ ├── exec │ │ │ ├── posix.rb │ │ │ ├── shell.rb │ │ │ └── windows.rb │ │ ├── file │ │ │ ├── posix.rb │ │ │ └── windows.rb │ │ ├── group │ │ │ ├── aix.rb │ │ │ ├── directoryservice.rb │ │ │ ├── groupadd.rb │ │ │ ├── ldap.rb │ │ │ ├── pw.rb │ │ │ └── windows_adsi.rb │ │ ├── ldap.rb │ │ ├── nameservice.rb │ │ ├── nameservice │ │ │ ├── directoryservice.rb │ │ │ ├── objectadd.rb │ │ │ └── pw.rb │ │ ├── network_device.rb │ │ ├── package.rb │ │ ├── package │ │ │ ├── aix.rb │ │ │ ├── appdmg.rb │ │ │ ├── apple.rb │ │ │ ├── apt.rb │ │ │ ├── aptitude.rb │ │ │ ├── aptrpm.rb │ │ │ ├── blastwave.rb │ │ │ ├── dnf.rb │ │ │ ├── dnfmodule.rb │ │ │ ├── dpkg.rb │ │ │ ├── fink.rb │ │ │ ├── freebsd.rb │ │ │ ├── gem.rb │ │ │ ├── hpux.rb │ │ │ ├── macports.rb │ │ │ ├── nim.rb │ │ │ ├── openbsd.rb │ │ │ ├── opkg.rb │ │ │ ├── pacman.rb │ │ │ ├── pip.rb │ │ │ ├── pip2.rb │ │ │ ├── pip3.rb │ │ │ ├── pkg.rb │ │ │ ├── pkgdmg.rb │ │ │ ├── pkgin.rb │ │ │ ├── pkgng.rb │ │ │ ├── pkgutil.rb │ │ │ ├── portage.rb │ │ │ ├── ports.rb │ │ │ ├── portupgrade.rb │ │ │ ├── puppet_gem.rb │ │ │ ├── puppetserver_gem.rb │ │ │ ├── rpm.rb │ │ │ ├── rug.rb │ │ │ ├── sun.rb │ │ │ ├── sunfreeware.rb │ │ │ ├── tdnf.rb │ │ │ ├── up2date.rb │ │ │ ├── urpmi.rb │ │ │ ├── windows.rb │ │ │ ├── windows │ │ │ │ ├── exe_package.rb │ │ │ │ ├── msi_package.rb │ │ │ │ └── package.rb │ │ │ ├── xbps.rb │ │ │ ├── yum.rb │ │ │ └── zypper.rb │ │ ├── package_targetable.rb │ │ ├── parsedfile.rb │ │ ├── service │ │ │ ├── base.rb │ │ │ ├── bsd.rb │ │ │ ├── daemontools.rb │ │ │ ├── debian.rb │ │ │ ├── freebsd.rb │ │ │ ├── gentoo.rb │ │ │ ├── init.rb │ │ │ ├── launchd.rb │ │ │ ├── openbsd.rb │ │ │ ├── openrc.rb │ │ │ ├── openwrt.rb │ │ │ ├── rcng.rb │ │ │ ├── redhat.rb │ │ │ ├── runit.rb │ │ │ ├── service.rb │ │ │ ├── smf.rb │ │ │ ├── src.rb │ │ │ ├── systemd.rb │ │ │ ├── upstart.rb │ │ │ └── windows.rb │ │ └── user │ │ │ ├── aix.rb │ │ │ ├── directoryservice.rb │ │ │ ├── hpux.rb │ │ │ ├── ldap.rb │ │ │ ├── openbsd.rb │ │ │ ├── pw.rb │ │ │ ├── user_role_add.rb │ │ │ ├── useradd.rb │ │ │ └── windows_adsi.rb │ ├── reference │ │ ├── configuration.rb │ │ ├── function.rb │ │ ├── indirection.rb │ │ ├── metaparameter.rb │ │ ├── providers.rb │ │ ├── report.rb │ │ └── type.rb │ ├── relationship.rb │ ├── reports.rb │ ├── reports │ │ ├── http.rb │ │ ├── log.rb │ │ └── store.rb │ ├── resource.rb │ ├── resource │ │ ├── catalog.rb │ │ ├── status.rb │ │ ├── type.rb │ │ └── type_collection.rb │ ├── runtime.rb │ ├── scheduler.rb │ ├── scheduler │ │ ├── job.rb │ │ ├── scheduler.rb │ │ ├── splay_job.rb │ │ └── timer.rb │ ├── settings.rb │ ├── settings │ │ ├── alias_setting.rb │ │ ├── array_setting.rb │ │ ├── autosign_setting.rb │ │ ├── base_setting.rb │ │ ├── boolean_setting.rb │ │ ├── certificate_revocation_setting.rb │ │ ├── config_file.rb │ │ ├── directory_setting.rb │ │ ├── duration_setting.rb │ │ ├── enum_setting.rb │ │ ├── environment_conf.rb │ │ ├── errors.rb │ │ ├── file_or_directory_setting.rb │ │ ├── file_setting.rb │ │ ├── http_extra_headers_setting.rb │ │ ├── ini_file.rb │ │ ├── integer_setting.rb │ │ ├── path_setting.rb │ │ ├── port_setting.rb │ │ ├── priority_setting.rb │ │ ├── server_list_setting.rb │ │ ├── string_setting.rb │ │ ├── symbolic_enum_setting.rb │ │ ├── terminus_setting.rb │ │ ├── ttl_setting.rb │ │ └── value_translator.rb │ ├── ssl.rb │ ├── ssl │ │ ├── base.rb │ │ ├── certificate.rb │ │ ├── certificate_request.rb │ │ ├── certificate_request_attributes.rb │ │ ├── certificate_signer.rb │ │ ├── digest.rb │ │ ├── error.rb │ │ ├── oids.rb │ │ ├── openssl_loader.rb │ │ ├── ssl_context.rb │ │ ├── ssl_provider.rb │ │ ├── state_machine.rb │ │ └── verifier.rb │ ├── syntax_checkers.rb │ ├── syntax_checkers │ │ ├── base64.rb │ │ ├── epp.rb │ │ ├── json.rb │ │ └── pp.rb │ ├── test │ │ └── test_helper.rb │ ├── thread_local.rb │ ├── transaction.rb │ ├── transaction │ │ ├── additional_resource_generator.rb │ │ ├── event.rb │ │ ├── event_manager.rb │ │ ├── persistence.rb │ │ ├── report.rb │ │ └── resource_harness.rb │ ├── trusted_external.rb │ ├── type.rb │ ├── type │ │ ├── component.rb │ │ ├── exec.rb │ │ ├── file.rb │ │ ├── file │ │ │ ├── checksum.rb │ │ │ ├── checksum_value.rb │ │ │ ├── content.rb │ │ │ ├── ctime.rb │ │ │ ├── data_sync.rb │ │ │ ├── ensure.rb │ │ │ ├── group.rb │ │ │ ├── mode.rb │ │ │ ├── mtime.rb │ │ │ ├── owner.rb │ │ │ ├── selcontext.rb │ │ │ ├── source.rb │ │ │ ├── target.rb │ │ │ └── type.rb │ │ ├── filebucket.rb │ │ ├── group.rb │ │ ├── notify.rb │ │ ├── package.rb │ │ ├── resources.rb │ │ ├── schedule.rb │ │ ├── service.rb │ │ ├── stage.rb │ │ ├── tidy.rb │ │ ├── user.rb │ │ └── whit.rb │ ├── util.rb │ ├── util │ │ ├── at_fork.rb │ │ ├── at_fork │ │ │ ├── noop.rb │ │ │ └── solaris.rb │ │ ├── autoload.rb │ │ ├── backups.rb │ │ ├── character_encoding.rb │ │ ├── checksums.rb │ │ ├── classgen.rb │ │ ├── colors.rb │ │ ├── command_line.rb │ │ ├── command_line │ │ │ ├── puppet_option_parser.rb │ │ │ └── trollop.rb │ │ ├── constant_inflector.rb │ │ ├── diff.rb │ │ ├── docs.rb │ │ ├── errors.rb │ │ ├── execution.rb │ │ ├── execution_stub.rb │ │ ├── feature.rb │ │ ├── file_watcher.rb │ │ ├── fileparsing.rb │ │ ├── filetype.rb │ │ ├── http_proxy.rb │ │ ├── inifile.rb │ │ ├── instance_loader.rb │ │ ├── json.rb │ │ ├── json_lockfile.rb │ │ ├── ldap.rb │ │ ├── ldap │ │ │ ├── connection.rb │ │ │ ├── generator.rb │ │ │ └── manager.rb │ │ ├── libuser.conf │ │ ├── libuser.rb │ │ ├── limits.rb │ │ ├── lockfile.rb │ │ ├── log.rb │ │ ├── log │ │ │ ├── destination.rb │ │ │ └── destinations.rb │ │ ├── logging.rb │ │ ├── metaid.rb │ │ ├── metric.rb │ │ ├── monkey_patches.rb │ │ ├── multi_match.rb │ │ ├── network_device.rb │ │ ├── network_device │ │ │ ├── base.rb │ │ │ ├── config.rb │ │ │ ├── transport.rb │ │ │ └── transport │ │ │ │ └── base.rb │ │ ├── package.rb │ │ ├── package │ │ │ └── version │ │ │ │ ├── debian.rb │ │ │ │ ├── gem.rb │ │ │ │ ├── pip.rb │ │ │ │ ├── range.rb │ │ │ │ ├── range │ │ │ │ ├── eq.rb │ │ │ │ ├── gt.rb │ │ │ │ ├── gt_eq.rb │ │ │ │ ├── lt.rb │ │ │ │ ├── lt_eq.rb │ │ │ │ ├── min_max.rb │ │ │ │ └── simple.rb │ │ │ │ └── rpm.rb │ │ ├── pidlock.rb │ │ ├── platform.rb │ │ ├── plist.rb │ │ ├── posix.rb │ │ ├── profiler.rb │ │ ├── profiler │ │ │ ├── aggregate.rb │ │ │ ├── around_profiler.rb │ │ │ ├── logging.rb │ │ │ ├── object_counts.rb │ │ │ └── wall_clock.rb │ │ ├── provider_features.rb │ │ ├── psych_support.rb │ │ ├── rdoc.rb │ │ ├── rdoc │ │ │ ├── code_objects.rb │ │ │ ├── generators │ │ │ │ ├── puppet_generator.rb │ │ │ │ └── template │ │ │ │ │ └── puppet │ │ │ │ │ └── puppet.rb │ │ │ ├── parser.rb │ │ │ └── parser │ │ │ │ ├── puppet_parser_core.rb │ │ │ │ └── puppet_parser_rdoc2.rb │ │ ├── reference.rb │ │ ├── resource_template.rb │ │ ├── retry_action.rb │ │ ├── rpm_compare.rb │ │ ├── rubygems.rb │ │ ├── run_mode.rb │ │ ├── selinux.rb │ │ ├── skip_tags.rb │ │ ├── splayer.rb │ │ ├── storage.rb │ │ ├── suidmanager.rb │ │ ├── symbolic_file_mode.rb │ │ ├── tag_set.rb │ │ ├── tagging.rb │ │ ├── terminal.rb │ │ ├── user_attr.rb │ │ ├── warnings.rb │ │ ├── watched_file.rb │ │ ├── watcher.rb │ │ ├── watcher │ │ │ ├── change_watcher.rb │ │ │ ├── periodic_watcher.rb │ │ │ └── timer.rb │ │ ├── windows.rb │ │ ├── windows │ │ │ ├── access_control_entry.rb │ │ │ ├── access_control_list.rb │ │ │ ├── adsi.rb │ │ │ ├── com.rb │ │ │ ├── daemon.rb │ │ │ ├── error.rb │ │ │ ├── eventlog.rb │ │ │ ├── file.rb │ │ │ ├── monkey_patches │ │ │ │ └── process.rb │ │ │ ├── principal.rb │ │ │ ├── process.rb │ │ │ ├── registry.rb │ │ │ ├── root_certs.rb │ │ │ ├── security.rb │ │ │ ├── security_descriptor.rb │ │ │ ├── service.rb │ │ │ ├── sid.rb │ │ │ ├── string.rb │ │ │ └── user.rb │ │ └── yaml.rb │ ├── vendor.rb │ ├── vendor │ │ └── require_vendored.rb │ ├── version.rb │ ├── x509.rb │ └── x509 │ │ ├── cert_provider.rb │ │ └── pem_store.rb ├── puppet_pal.rb └── puppet_x.rb ├── locales ├── config.yaml ├── en │ └── puppet.po └── puppet.pot ├── man ├── man5 │ └── puppet.conf.5 └── man8 │ ├── puppet-agent.8 │ ├── puppet-apply.8 │ ├── puppet-catalog.8 │ ├── puppet-config.8 │ ├── puppet-describe.8 │ ├── puppet-device.8 │ ├── puppet-doc.8 │ ├── puppet-epp.8 │ ├── puppet-facts.8 │ ├── puppet-filebucket.8 │ ├── puppet-generate.8 │ ├── puppet-help.8 │ ├── puppet-lookup.8 │ ├── puppet-module.8 │ ├── puppet-node.8 │ ├── puppet-parser.8 │ ├── puppet-plugin.8 │ ├── puppet-report.8 │ ├── puppet-resource.8 │ ├── puppet-script.8 │ ├── puppet-ssl.8 │ └── puppet.8 ├── puppet.gemspec ├── rakelib ├── benchmark.rake ├── ci.rake ├── generate_ast_model.rake ├── generate_cert_fixtures.rake ├── generate_references.rake ├── man │ └── puppet.erb ├── manpages.rake ├── memwalk.rake ├── parallel.rake ├── parser.rake ├── references │ ├── configuration.erb │ ├── function.erb │ ├── functions_template.erb │ ├── get_typedocs.rb │ ├── man.erb │ ├── man │ │ └── overview.erb │ ├── metaparameter.erb │ ├── report.erb │ ├── types │ │ ├── overview.erb │ │ ├── single_type.erb │ │ └── type.erb │ └── unified_type.erb └── yard.rake ├── references ├── configuration.md ├── function.md ├── man │ ├── agent.md │ ├── apply.md │ ├── catalog.md │ ├── config.md │ ├── describe.md │ ├── device.md │ ├── doc.md │ ├── epp.md │ ├── facts.md │ ├── filebucket.md │ ├── generate.md │ ├── help.md │ ├── lookup.md │ ├── module.md │ ├── node.md │ ├── overview.md │ ├── parser.md │ ├── plugin.md │ ├── report.md │ ├── resource.md │ ├── script.md │ └── ssl.md ├── metaparameter.md ├── report.md ├── type.md └── types │ ├── exec.md │ ├── file.md │ ├── filebucket.md │ ├── group.md │ ├── notify.md │ ├── overview.md │ ├── package.md │ ├── resources.md │ ├── schedule.md │ ├── service.md │ ├── stage.md │ ├── tidy.md │ └── user.md ├── spec ├── fixtures │ ├── faulty_face │ │ └── puppet │ │ │ └── face │ │ │ └── syntax.rb │ ├── hiera.yaml │ ├── integration │ │ ├── application │ │ │ ├── agent │ │ │ │ ├── cached_deferred_catalog.json │ │ │ │ └── lib │ │ │ │ │ └── facter │ │ │ │ │ └── agent_spec_role.rb │ │ │ ├── apply │ │ │ │ └── environments │ │ │ │ │ └── spec │ │ │ │ │ ├── .resource_types │ │ │ │ │ └── applytest.pp │ │ │ │ │ └── modules │ │ │ │ │ └── amod │ │ │ │ │ └── lib │ │ │ │ │ └── puppet │ │ │ │ │ ├── provider │ │ │ │ │ └── applytest │ │ │ │ │ │ └── applytest.rb │ │ │ │ │ └── type │ │ │ │ │ └── applytest.rb │ │ │ └── module │ │ │ │ └── environments │ │ │ │ └── direnv │ │ │ │ └── modules │ │ │ │ └── nginx │ │ │ │ ├── README │ │ │ │ ├── manifests │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ ├── l10n │ │ │ └── envs │ │ │ │ └── prod │ │ │ │ └── modules │ │ │ │ └── demo │ │ │ │ ├── Gemfile │ │ │ │ ├── Rakefile │ │ │ │ ├── lib │ │ │ │ └── puppet │ │ │ │ │ └── functions │ │ │ │ │ └── l10n.rb │ │ │ │ ├── locales │ │ │ │ ├── config.yaml │ │ │ │ ├── ja │ │ │ │ │ └── puppet-l10n.po │ │ │ │ └── puppet-l10n.pot │ │ │ │ └── metadata.json │ │ └── node │ │ │ └── environment │ │ │ ├── sitedir │ │ │ ├── 00_a.pp │ │ │ ├── 01_b.pp │ │ │ ├── 03_empty.pp │ │ │ └── 04_include.pp │ │ │ └── sitedir2 │ │ │ ├── 00_a.pp │ │ │ ├── 02_folder │ │ │ └── 01_b.pp │ │ │ ├── 03_c.pp │ │ │ └── 04_include.pp │ ├── java.tgz │ ├── manifests │ │ └── site.pp │ ├── module.tar.gz │ ├── releases │ │ └── jamtur01-apache │ │ │ ├── Modulefile │ │ │ ├── files │ │ │ ├── httpd │ │ │ └── test.vhost │ │ │ ├── lib │ │ │ └── puppet │ │ │ │ ├── provider │ │ │ │ └── a2mod │ │ │ │ │ └── debian.rb │ │ │ │ └── type │ │ │ │ └── a2mod.rb │ │ │ ├── manifests │ │ │ ├── dev.pp │ │ │ ├── init.pp │ │ │ ├── params.pp │ │ │ ├── php.pp │ │ │ ├── ssl.pp │ │ │ └── vhost.pp │ │ │ ├── metadata.json │ │ │ ├── templates │ │ │ └── vhost-default.conf.erb │ │ │ └── tests │ │ │ ├── apache.pp │ │ │ ├── dev.pp │ │ │ ├── init.pp │ │ │ ├── php.pp │ │ │ ├── ssl.pp │ │ │ └── vhost.pp │ ├── ssl │ │ ├── 127.0.0.1-key.pem │ │ ├── 127.0.0.1.pem │ │ ├── bad-basic-constraints.pem │ │ ├── bad-int-basic-constraints.pem │ │ ├── ca.pem │ │ ├── crl.pem │ │ ├── ec-key-openssl.pem │ │ ├── ec-key-pk8.pem │ │ ├── ec-key.pem │ │ ├── ec.pem │ │ ├── encrypted-ec-key.pem │ │ ├── encrypted-key.pem │ │ ├── generate_fixtures.rb │ │ ├── intermediate-agent-crl.pem │ │ ├── intermediate-agent.pem │ │ ├── intermediate-crl.pem │ │ ├── intermediate-key.pem │ │ ├── intermediate.pem │ │ ├── netlock-arany-utf8.pem │ │ ├── oid-key.pem │ │ ├── oid.pem │ │ ├── pluto-key.pem │ │ ├── pluto.pem │ │ ├── renewed.pem │ │ ├── request-key.pem │ │ ├── request.pem │ │ ├── revoked-key.pem │ │ ├── revoked.pem │ │ ├── signed-key.pem │ │ ├── signed.pem │ │ ├── tampered-cert.pem │ │ ├── tampered-csr.pem │ │ ├── trusted_oid_mapping.yaml │ │ ├── unknown-127.0.0.1-key.pem │ │ ├── unknown-127.0.0.1.pem │ │ ├── unknown-ca-key.pem │ │ └── unknown-ca.pem │ ├── stdlib.tgz │ ├── unit │ │ ├── application │ │ │ └── environments │ │ │ │ ├── production │ │ │ │ ├── data │ │ │ │ │ └── common.yaml │ │ │ │ ├── environment.conf │ │ │ │ └── manifests │ │ │ │ │ └── site.pp │ │ │ │ └── puppet_func_provider │ │ │ │ ├── environment.conf │ │ │ │ ├── functions │ │ │ │ └── environment │ │ │ │ │ └── data.pp │ │ │ │ └── manifests │ │ │ │ └── site.pp │ │ ├── data_providers │ │ │ └── environments │ │ │ │ ├── hiera_bad_syntax_json │ │ │ │ ├── data │ │ │ │ │ └── bad.json │ │ │ │ ├── environment.conf │ │ │ │ ├── hiera.yaml │ │ │ │ └── manifests │ │ │ │ │ └── site.pp │ │ │ │ ├── hiera_bad_syntax_yaml │ │ │ │ ├── data │ │ │ │ │ └── bad.yaml │ │ │ │ ├── environment.conf │ │ │ │ ├── hiera.yaml │ │ │ │ └── manifests │ │ │ │ │ └── site.pp │ │ │ │ ├── hiera_defaults │ │ │ │ ├── data │ │ │ │ │ └── common.yaml │ │ │ │ ├── environment.conf │ │ │ │ ├── manifests │ │ │ │ │ └── site.pp │ │ │ │ └── modules │ │ │ │ │ └── one │ │ │ │ │ ├── data │ │ │ │ │ └── common.yaml │ │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ │ └── metadata.json │ │ │ │ ├── hiera_env_config │ │ │ │ ├── data1 │ │ │ │ │ ├── first.json │ │ │ │ │ ├── name.yaml │ │ │ │ │ ├── second.json │ │ │ │ │ ├── single.yaml │ │ │ │ │ ├── third_utf8.json │ │ │ │ │ └── utf8.yaml │ │ │ │ ├── data2 │ │ │ │ │ └── single.yaml │ │ │ │ ├── environment.conf │ │ │ │ ├── hiera.yaml │ │ │ │ └── manifests │ │ │ │ │ └── site.pp │ │ │ │ ├── hiera_misc │ │ │ │ ├── data │ │ │ │ │ └── common.yaml │ │ │ │ ├── environment.conf │ │ │ │ ├── manifests │ │ │ │ │ └── site.pp │ │ │ │ └── modules │ │ │ │ │ └── one │ │ │ │ │ ├── data │ │ │ │ │ └── common.yaml │ │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ │ └── metadata.json │ │ │ │ ├── hiera_module_config │ │ │ │ ├── data │ │ │ │ │ ├── common.yaml │ │ │ │ │ └── specific.yaml │ │ │ │ ├── environment.conf │ │ │ │ ├── hiera.yaml │ │ │ │ ├── manifests │ │ │ │ │ └── site.pp │ │ │ │ └── modules │ │ │ │ │ └── one │ │ │ │ │ ├── data1 │ │ │ │ │ ├── first.json │ │ │ │ │ ├── name.yaml │ │ │ │ │ ├── second.json │ │ │ │ │ ├── server1.yaml │ │ │ │ │ ├── server2.yaml │ │ │ │ │ └── single.yaml │ │ │ │ │ ├── data2 │ │ │ │ │ └── single.yaml │ │ │ │ │ ├── hiera.yaml │ │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ │ └── metadata.json │ │ │ │ ├── hiera_modules │ │ │ │ ├── data │ │ │ │ │ ├── common.yaml │ │ │ │ │ └── specific.yaml │ │ │ │ ├── environment.conf │ │ │ │ ├── hiera.yaml │ │ │ │ ├── manifests │ │ │ │ │ └── site.pp │ │ │ │ └── modules │ │ │ │ │ ├── one │ │ │ │ │ ├── data │ │ │ │ │ │ └── common.yaml │ │ │ │ │ ├── hiera.yaml │ │ │ │ │ ├── manifests │ │ │ │ │ │ └── init.pp │ │ │ │ │ └── metadata.json │ │ │ │ │ └── two │ │ │ │ │ ├── data │ │ │ │ │ └── common.yaml │ │ │ │ │ ├── hiera.yaml │ │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ │ └── metadata.json │ │ │ │ └── production │ │ │ │ ├── environment.conf │ │ │ │ ├── lib │ │ │ │ └── puppet │ │ │ │ │ └── functions │ │ │ │ │ └── environment │ │ │ │ │ └── data.rb │ │ │ │ └── modules │ │ │ │ ├── abc │ │ │ │ ├── lib │ │ │ │ │ └── puppet │ │ │ │ │ │ └── functions │ │ │ │ │ │ └── abc │ │ │ │ │ │ └── data.rb │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ │ │ └── xyz │ │ │ │ ├── functions │ │ │ │ └── data.pp │ │ │ │ ├── manifests │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ ├── forge │ │ │ ├── bacula-releases.json │ │ │ ├── bacula.json │ │ │ └── bacula.tar.gz │ │ ├── functions │ │ │ ├── hiera │ │ │ │ └── hiera │ │ │ │ │ └── backend │ │ │ │ │ └── hieraspec_backend.rb │ │ │ ├── lookup │ │ │ │ ├── data │ │ │ │ │ └── common.yaml │ │ │ │ └── hiera │ │ │ │ │ └── backend │ │ │ │ │ ├── custom_backend.rb │ │ │ │ │ └── other_backend.rb │ │ │ └── lookup_fixture │ │ │ │ ├── data │ │ │ │ └── common.yaml │ │ │ │ └── environments │ │ │ │ └── production │ │ │ │ ├── environment.conf │ │ │ │ ├── lib │ │ │ │ └── puppet │ │ │ │ │ └── functions │ │ │ │ │ └── environment │ │ │ │ │ └── data.rb │ │ │ │ └── modules │ │ │ │ ├── abc │ │ │ │ ├── lib │ │ │ │ │ └── puppet │ │ │ │ │ │ └── functions │ │ │ │ │ │ └── abc │ │ │ │ │ │ └── data.rb │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ │ │ ├── bad_data │ │ │ │ ├── lib │ │ │ │ │ └── puppet │ │ │ │ │ │ └── functions │ │ │ │ │ │ └── bad_data │ │ │ │ │ │ └── data.rb │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ │ │ ├── bca │ │ │ │ ├── lib │ │ │ │ │ └── puppet │ │ │ │ │ │ └── functions │ │ │ │ │ │ └── bca │ │ │ │ │ │ └── data.rb │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ │ │ ├── empty_json │ │ │ │ ├── data │ │ │ │ │ └── empty.json │ │ │ │ ├── hiera.yaml │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ │ │ ├── empty_key_json │ │ │ │ ├── data │ │ │ │ │ └── empty_key.json │ │ │ │ ├── hiera.yaml │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ │ │ ├── empty_key_yaml │ │ │ │ ├── data │ │ │ │ │ └── empty_key.yaml │ │ │ │ ├── hiera.yaml │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ │ │ ├── empty_yaml │ │ │ │ ├── data │ │ │ │ │ └── empty.yaml │ │ │ │ ├── hiera.yaml │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ │ │ ├── hieraprovider │ │ │ │ ├── data │ │ │ │ │ └── first.json │ │ │ │ ├── hiera.yaml │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ │ │ ├── meta │ │ │ │ ├── lib │ │ │ │ │ └── puppet │ │ │ │ │ │ └── functions │ │ │ │ │ │ └── meta │ │ │ │ │ │ └── data.rb │ │ │ │ ├── manifests │ │ │ │ │ └── init.pp │ │ │ │ └── metadata.json │ │ │ │ └── no_provider │ │ │ │ └── manifests │ │ │ │ └── init.pp │ │ ├── indirector │ │ │ ├── data_binding │ │ │ │ └── hiera │ │ │ │ │ ├── global.yaml │ │ │ │ │ └── invalid.yaml │ │ │ └── hiera │ │ │ │ ├── global.yaml │ │ │ │ └── invalid.yaml │ │ ├── module │ │ │ └── trailing-comma.json │ │ ├── parser │ │ │ ├── functions │ │ │ │ └── create_resources │ │ │ │ │ └── foo │ │ │ │ │ └── manifests │ │ │ │ │ ├── init.pp │ │ │ │ │ └── wrongdefine.pp │ │ │ └── lexer │ │ │ │ ├── aliastest.pp │ │ │ │ ├── append.pp │ │ │ │ ├── argumentdefaults.pp │ │ │ │ ├── arithmetic_expression.pp │ │ │ │ ├── arraytrailingcomma.pp │ │ │ │ ├── casestatement.pp │ │ │ │ ├── classheirarchy.pp │ │ │ │ ├── classincludes.pp │ │ │ │ ├── classpathtest.pp │ │ │ │ ├── collection.pp │ │ │ │ ├── collection_override.pp │ │ │ │ ├── collection_within_virtual_definitions.pp │ │ │ │ ├── componentmetaparams.pp │ │ │ │ ├── componentrequire.pp │ │ │ │ ├── deepclassheirarchy.pp │ │ │ │ ├── defineoverrides.pp │ │ │ │ ├── emptyclass.pp │ │ │ │ ├── emptyexec.pp │ │ │ │ ├── emptyifelse.pp │ │ │ │ ├── falsevalues.pp │ │ │ │ ├── filecreate.pp │ │ │ │ ├── fqdefinition.pp │ │ │ │ ├── fqparents.pp │ │ │ │ ├── funccomma.pp │ │ │ │ ├── hash.pp │ │ │ │ ├── ifexpression.pp │ │ │ │ ├── implicititeration.pp │ │ │ │ ├── multilinecomments.pp │ │ │ │ ├── multipleclass.pp │ │ │ │ ├── multipleinstances.pp │ │ │ │ ├── multisubs.pp │ │ │ │ ├── namevartest.pp │ │ │ │ ├── scopetest.pp │ │ │ │ ├── selectorvalues.pp │ │ │ │ ├── simpledefaults.pp │ │ │ │ ├── simpleselector.pp │ │ │ │ ├── singleary.pp │ │ │ │ ├── singlequote.pp │ │ │ │ ├── singleselector.pp │ │ │ │ ├── subclass_name_duplication.pp │ │ │ │ ├── tag.pp │ │ │ │ ├── tagged.pp │ │ │ │ └── virtualresources.pp │ │ ├── pops │ │ │ ├── binder │ │ │ │ ├── bindings_composer │ │ │ │ │ └── ok │ │ │ │ │ │ ├── binder_config.yaml │ │ │ │ │ │ ├── lib │ │ │ │ │ │ └── puppet │ │ │ │ │ │ │ └── bindings │ │ │ │ │ │ │ └── confdirtest.rb │ │ │ │ │ │ └── modules │ │ │ │ │ │ ├── awesome2 │ │ │ │ │ │ └── lib │ │ │ │ │ │ │ ├── puppet │ │ │ │ │ │ │ └── bindings │ │ │ │ │ │ │ │ └── awesome2 │ │ │ │ │ │ │ │ └── default.rb │ │ │ │ │ │ │ └── puppet_x │ │ │ │ │ │ │ └── awesome2 │ │ │ │ │ │ │ └── echo_scheme_handler.rb │ │ │ │ │ │ ├── bad │ │ │ │ │ │ └── lib │ │ │ │ │ │ │ └── puppet │ │ │ │ │ │ │ └── bindings │ │ │ │ │ │ │ └── bad │ │ │ │ │ │ │ └── default.rb │ │ │ │ │ │ └── good │ │ │ │ │ │ └── lib │ │ │ │ │ │ └── puppet │ │ │ │ │ │ └── bindings │ │ │ │ │ │ └── good │ │ │ │ │ │ └── default.rb │ │ │ │ └── config │ │ │ │ │ └── binder_config │ │ │ │ │ ├── nolayer │ │ │ │ │ └── binder_config.yaml │ │ │ │ │ └── ok │ │ │ │ │ └── binder_config.yaml │ │ │ ├── loaders │ │ │ │ └── loaders │ │ │ │ │ ├── dependent_modules_with_metadata │ │ │ │ │ └── modules │ │ │ │ │ │ ├── usee │ │ │ │ │ │ ├── functions │ │ │ │ │ │ │ └── usee_puppet.pp │ │ │ │ │ │ ├── lib │ │ │ │ │ │ │ └── puppet │ │ │ │ │ │ │ │ ├── functions │ │ │ │ │ │ │ │ └── usee │ │ │ │ │ │ │ │ │ ├── callee.rb │ │ │ │ │ │ │ │ │ └── usee_ruby.rb │ │ │ │ │ │ │ │ └── type │ │ │ │ │ │ │ │ └── usee_type.rb │ │ │ │ │ │ ├── manifests │ │ │ │ │ │ │ └── init.pp │ │ │ │ │ │ └── types │ │ │ │ │ │ │ └── zero.pp │ │ │ │ │ │ ├── usee2 │ │ │ │ │ │ └── lib │ │ │ │ │ │ │ └── puppet │ │ │ │ │ │ │ └── functions │ │ │ │ │ │ │ └── usee2 │ │ │ │ │ │ │ └── callee.rb │ │ │ │ │ │ └── user │ │ │ │ │ │ ├── functions │ │ │ │ │ │ ├── puppet_calling_puppet.pp │ │ │ │ │ │ ├── puppet_calling_puppet_init.pp │ │ │ │ │ │ └── puppet_calling_ruby.pp │ │ │ │ │ │ ├── lib │ │ │ │ │ │ └── puppet │ │ │ │ │ │ │ └── functions │ │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── caller.rb │ │ │ │ │ │ │ ├── caller2.rb │ │ │ │ │ │ │ ├── ruby_calling_puppet.rb │ │ │ │ │ │ │ ├── ruby_calling_puppet_init.rb │ │ │ │ │ │ │ └── ruby_calling_ruby.rb │ │ │ │ │ │ ├── manifests │ │ │ │ │ │ └── init.pp │ │ │ │ │ │ ├── metadata.json │ │ │ │ │ │ └── types │ │ │ │ │ │ ├── withuseeone.pp │ │ │ │ │ │ └── withuseezero.pp │ │ │ │ │ ├── mix_4x_and_3x_functions │ │ │ │ │ ├── usee │ │ │ │ │ │ ├── lib │ │ │ │ │ │ │ └── puppet │ │ │ │ │ │ │ │ └── parser │ │ │ │ │ │ │ │ └── functions │ │ │ │ │ │ │ │ ├── bad_func_load.rb │ │ │ │ │ │ │ │ ├── bad_func_load2.rb │ │ │ │ │ │ │ │ ├── bad_func_load3.rb │ │ │ │ │ │ │ │ ├── bad_func_load4.rb │ │ │ │ │ │ │ │ ├── bad_func_load5.rb │ │ │ │ │ │ │ │ ├── callee.rb │ │ │ │ │ │ │ │ ├── callee_ws.rb │ │ │ │ │ │ │ │ ├── func_with_syntax_error.rb │ │ │ │ │ │ │ │ └── good_func_load.rb │ │ │ │ │ │ └── metadata.json │ │ │ │ │ └── user │ │ │ │ │ │ ├── functions │ │ │ │ │ │ ├── puppetcalled.pp │ │ │ │ │ │ ├── puppetcaller.pp │ │ │ │ │ │ └── puppetcaller4.pp │ │ │ │ │ │ ├── lib │ │ │ │ │ │ └── puppet │ │ │ │ │ │ │ └── functions │ │ │ │ │ │ │ └── user │ │ │ │ │ │ │ ├── caller.rb │ │ │ │ │ │ │ ├── caller_ws.rb │ │ │ │ │ │ │ └── callingpuppet.rb │ │ │ │ │ │ └── metadata.json │ │ │ │ │ ├── module_no_lib │ │ │ │ │ └── modules │ │ │ │ │ │ └── modulea │ │ │ │ │ │ ├── functions │ │ │ │ │ │ └── hello.pp │ │ │ │ │ │ ├── manifests │ │ │ │ │ │ └── init.pp │ │ │ │ │ │ └── metadata.json │ │ │ │ │ ├── no_modules │ │ │ │ │ └── manifests │ │ │ │ │ │ └── site.pp │ │ │ │ │ ├── pp_resources │ │ │ │ │ └── .resource_types │ │ │ │ │ │ ├── addlogic.pp │ │ │ │ │ │ ├── badcall.pp │ │ │ │ │ │ ├── empty.pp │ │ │ │ │ │ ├── myresource.pp │ │ │ │ │ │ └── wrongname.pp │ │ │ │ │ ├── single_module │ │ │ │ │ └── modules │ │ │ │ │ │ └── modulea │ │ │ │ │ │ ├── functions │ │ │ │ │ │ ├── hello.pp │ │ │ │ │ │ └── subspace │ │ │ │ │ │ │ └── hello.pp │ │ │ │ │ │ ├── lib │ │ │ │ │ │ └── puppet │ │ │ │ │ │ │ └── functions │ │ │ │ │ │ │ ├── modulea │ │ │ │ │ │ │ └── rb_func_a.rb │ │ │ │ │ │ │ └── rb_func_a.rb │ │ │ │ │ │ ├── manifests │ │ │ │ │ │ └── init.pp │ │ │ │ │ │ └── metadata.json │ │ │ │ │ └── wo_metadata_module │ │ │ │ │ └── modules │ │ │ │ │ └── moduleb │ │ │ │ │ ├── lib │ │ │ │ │ └── puppet │ │ │ │ │ │ └── functions │ │ │ │ │ │ └── moduleb │ │ │ │ │ │ └── rb_func_b.rb │ │ │ │ │ └── manifests │ │ │ │ │ └── init.pp │ │ │ └── parser │ │ │ │ └── lexer │ │ │ │ ├── aliastest.pp │ │ │ │ ├── append.pp │ │ │ │ ├── argumentdefaults.pp │ │ │ │ ├── arithmetic_expression.pp │ │ │ │ ├── arraytrailingcomma.pp │ │ │ │ ├── casestatement.pp │ │ │ │ ├── classheirarchy.pp │ │ │ │ ├── classincludes.pp │ │ │ │ ├── classpathtest.pp │ │ │ │ ├── collection.pp │ │ │ │ ├── collection_override.pp │ │ │ │ ├── collection_within_virtual_definitions.pp │ │ │ │ ├── componentmetaparams.pp │ │ │ │ ├── componentrequire.pp │ │ │ │ ├── deepclassheirarchy.pp │ │ │ │ ├── defineoverrides.pp │ │ │ │ ├── emptyclass.pp │ │ │ │ ├── emptyexec.pp │ │ │ │ ├── emptyifelse.pp │ │ │ │ ├── falsevalues.pp │ │ │ │ ├── filecreate.pp │ │ │ │ ├── fqdefinition.pp │ │ │ │ ├── fqparents.pp │ │ │ │ ├── funccomma.pp │ │ │ │ ├── hash.pp │ │ │ │ ├── ifexpression.pp │ │ │ │ ├── implicititeration.pp │ │ │ │ ├── multilinecomments.pp │ │ │ │ ├── multipleclass.pp │ │ │ │ ├── multipleinstances.pp │ │ │ │ ├── multisubs.pp │ │ │ │ ├── namevartest.pp │ │ │ │ ├── scopetest.pp │ │ │ │ ├── selectorvalues.pp │ │ │ │ ├── simpledefaults.pp │ │ │ │ ├── simpleselector.pp │ │ │ │ ├── singleary.pp │ │ │ │ ├── singlequote.pp │ │ │ │ ├── singleselector.pp │ │ │ │ ├── subclass_name_duplication.pp │ │ │ │ ├── tag.pp │ │ │ │ ├── tagged.pp │ │ │ │ └── virtualresources.pp │ │ ├── provider │ │ │ ├── aix_object │ │ │ │ ├── aix_colon_list_real_world_input.out │ │ │ │ └── aix_colon_list_real_world_output.out │ │ │ ├── cron │ │ │ │ ├── crontab │ │ │ │ │ ├── single_line.yaml │ │ │ │ │ └── vixie_header.txt │ │ │ │ └── parsed │ │ │ │ │ ├── managed │ │ │ │ │ └── simple │ │ │ ├── package │ │ │ │ ├── dnfmodule │ │ │ │ │ └── dnf-module-list.txt │ │ │ │ ├── gem │ │ │ │ │ ├── gem-list-single-package │ │ │ │ │ └── line-with-1.8.5-warning │ │ │ │ ├── openbsd │ │ │ │ │ ├── pkginfo.detail │ │ │ │ │ ├── pkginfo.list │ │ │ │ │ ├── pkginfo.query │ │ │ │ │ └── pkginfo_flavors.list │ │ │ │ ├── pkg │ │ │ │ │ ├── dummy_implicit_version │ │ │ │ │ ├── dummy_solaris10 │ │ │ │ │ ├── dummy_solaris11.certificate_warning │ │ │ │ │ ├── dummy_solaris11.ifo.installed │ │ │ │ │ ├── dummy_solaris11.ifo.known │ │ │ │ │ ├── dummy_solaris11.installed │ │ │ │ │ ├── dummy_solaris11.known │ │ │ │ │ ├── incomplete │ │ │ │ │ ├── solaris11 │ │ │ │ │ └── unknown_status │ │ │ │ ├── pkgng │ │ │ │ │ ├── pkg.query │ │ │ │ │ ├── pkg.query.zsh │ │ │ │ │ └── pkg.version │ │ │ │ ├── puppetserver_gem │ │ │ │ │ └── gem-list-local-packages │ │ │ │ ├── sun │ │ │ │ │ ├── dummy.server │ │ │ │ │ └── simple │ │ │ │ ├── yum │ │ │ │ │ ├── yum-check-update-broken-notices.txt │ │ │ │ │ ├── yum-check-update-multiline.txt │ │ │ │ │ ├── yum-check-update-obsoletes.txt │ │ │ │ │ ├── yum-check-update-plugin-output.txt │ │ │ │ │ ├── yum-check-update-security.txt │ │ │ │ │ ├── yum-check-update-simple.txt │ │ │ │ │ └── yum-check-update-subscription-manager.txt │ │ │ │ └── zypper │ │ │ │ │ ├── zypper-list-updates-SLES11sp1.out │ │ │ │ │ ├── zypper-list-updates-empty.out │ │ │ │ │ └── zypper-search-uninstalled.out │ │ │ ├── parsedfile │ │ │ │ ├── aliases.txt │ │ │ │ └── simple.txt │ │ │ ├── service │ │ │ │ ├── base │ │ │ │ │ └── ps_ef.mixed_encoding │ │ │ │ ├── gentoo │ │ │ │ │ └── rc_update_show │ │ │ │ ├── openbsd │ │ │ │ │ └── rcctl_getall │ │ │ │ ├── openrc │ │ │ │ │ ├── rcservice_list │ │ │ │ │ └── rcstatus │ │ │ │ ├── smf │ │ │ │ │ ├── svcs_fmri.out │ │ │ │ │ ├── svcs_instances.out │ │ │ │ │ └── svcs_multiple_fmris.out │ │ │ │ └── systemd │ │ │ │ │ ├── list_unit_files_services │ │ │ │ │ └── list_unit_files_services_vendor_preset │ │ │ └── user │ │ │ │ └── aix │ │ │ │ └── aix_passwd_file.out │ │ ├── reports │ │ │ └── tagmail │ │ │ │ ├── tagmail_email.conf │ │ │ │ ├── tagmail_failers.conf │ │ │ │ └── tagmail_passers.conf │ │ ├── ssl │ │ │ ├── certificate │ │ │ │ └── old-style-cert-exts.pem │ │ │ └── certificate_request │ │ │ │ └── old-style-cert-request.pem │ │ ├── type │ │ │ └── user │ │ │ │ └── authorized_keys │ │ └── util │ │ │ ├── filetype │ │ │ ├── aixtab_output │ │ │ └── suntab_output │ │ │ ├── monkey_patches │ │ │ └── x509.pem │ │ │ └── rdoc │ │ │ └── basic.pp │ ├── vcr │ │ └── cassettes │ │ │ └── Puppet_Type_File │ │ │ └── when_sourcing │ │ │ └── from_http │ │ │ ├── using_md5 │ │ │ ├── should_fetch_if_not_on_the_local_disk.yml │ │ │ ├── should_not_update_if_content_on_disk_is_up-to-date.yml │ │ │ └── should_update_if_content_differs_on_disk.yml │ │ │ └── using_mtime │ │ │ ├── should_fetch_if_mtime_is_older_on_disk.yml │ │ │ ├── should_fetch_if_no_header_specified.yml │ │ │ ├── should_fetch_if_not_on_the_local_disk.yml │ │ │ └── should_not_update_if_mtime_is_newer_on_disk.yml │ └── yaml │ │ ├── report2.6.x.yaml │ │ └── test.local.yaml ├── integration │ ├── agent │ │ └── logging_spec.rb │ ├── application │ │ ├── agent_spec.rb │ │ ├── apply_spec.rb │ │ ├── doc_spec.rb │ │ ├── filebucket_spec.rb │ │ ├── help_spec.rb │ │ ├── lookup_spec.rb │ │ ├── module_spec.rb │ │ ├── plugin_spec.rb │ │ ├── resource_spec.rb │ │ └── ssl_spec.rb │ ├── configurer_spec.rb │ ├── data_binding_spec.rb │ ├── defaults_spec.rb │ ├── directory_environments_spec.rb │ ├── environments │ │ ├── default_manifest_spec.rb │ │ ├── setting_hooks_spec.rb │ │ ├── settings_interpolation_spec.rb │ │ └── settings_spec.rb │ ├── http │ │ └── client_spec.rb │ ├── indirector │ │ ├── catalog │ │ │ └── compiler_spec.rb │ │ ├── direct_file_server_spec.rb │ │ ├── facts │ │ │ └── facter_spec.rb │ │ ├── file_content │ │ │ └── file_server_spec.rb │ │ └── file_metadata │ │ │ └── file_server_spec.rb │ ├── l10n │ │ └── compiler_spec.rb │ ├── network │ │ ├── formats_spec.rb │ │ ├── http │ │ │ └── api │ │ │ │ └── indirected_routes_spec.rb │ │ └── http_pool_spec.rb │ ├── node │ │ ├── environment_spec.rb │ │ └── facts_spec.rb │ ├── node_spec.rb │ ├── parser │ │ ├── catalog_spec.rb │ │ ├── class_spec.rb │ │ ├── collection_spec.rb │ │ ├── compiler_spec.rb │ │ ├── conditionals_spec.rb │ │ ├── dynamic_scoping_spec.rb │ │ ├── environment_spec.rb │ │ ├── node_spec.rb │ │ ├── parameter_defaults_spec.rb │ │ ├── pcore_resource_spec.rb │ │ ├── resource_expressions_spec.rb │ │ ├── scope_spec.rb │ │ ├── script_compiler_spec.rb │ │ └── undef_param_spec.rb │ ├── provider │ │ └── file │ │ │ └── windows_spec.rb │ ├── resource │ │ ├── catalog_spec.rb │ │ └── type_collection_spec.rb │ ├── transaction │ │ └── report_spec.rb │ ├── transaction_spec.rb │ ├── type │ │ ├── exec_spec.rb │ │ ├── file_spec.rb │ │ ├── notify_spec.rb │ │ ├── package_spec.rb │ │ └── tidy_spec.rb │ ├── type_spec.rb │ ├── util │ │ ├── autoload_spec.rb │ │ ├── execution_spec.rb │ │ ├── rdoc │ │ │ └── parser_spec.rb │ │ ├── settings_spec.rb │ │ └── windows │ │ │ ├── adsi_spec.rb │ │ │ ├── monkey_patches │ │ │ └── process_spec.rb │ │ │ ├── principal_spec.rb │ │ │ ├── process_spec.rb │ │ │ ├── registry_spec.rb │ │ │ ├── security_spec.rb │ │ │ └── user_spec.rb │ └── util_spec.rb ├── lib │ ├── matchers │ │ ├── containment_matchers.rb │ │ ├── include_in_order.rb │ │ ├── include_in_order_spec.rb │ │ ├── json.rb │ │ ├── match_tokens2.rb │ │ ├── relationship_graph_matchers.rb │ │ └── resource.rb │ ├── puppet │ │ ├── certificate_factory.rb │ │ ├── face │ │ │ ├── 1.0.0 │ │ │ │ └── huzzah.rb │ │ │ ├── basetest.rb │ │ │ ├── huzzah.rb │ │ │ ├── huzzah │ │ │ │ └── obsolete.rb │ │ │ └── version_matching.rb │ │ ├── indirector │ │ │ └── indirector_testing │ │ │ │ ├── json.rb │ │ │ │ ├── memory.rb │ │ │ │ └── msgpack.rb │ │ ├── indirector_proxy.rb │ │ ├── indirector_testing.rb │ │ └── test_ca.rb │ └── puppet_spec │ │ ├── character_encoding.rb │ │ ├── compiler.rb │ │ ├── files.rb │ │ ├── fixtures.rb │ │ ├── handler.rb │ │ ├── https.rb │ │ ├── language.rb │ │ ├── matchers.rb │ │ ├── module_tool │ │ ├── shared_functions.rb │ │ └── stub_source.rb │ │ ├── modules.rb │ │ ├── network.rb │ │ ├── pops.rb │ │ ├── puppetserver.rb │ │ ├── scope.rb │ │ ├── settings.rb │ │ ├── ssl.rb │ │ ├── unindent.rb │ │ └── verbose.rb ├── shared_behaviours │ ├── all_parsedfile_providers.rb │ ├── an_indirector_face.rb │ ├── documentation_on_faces.rb │ ├── file_server_terminus.rb │ ├── file_serving.rb │ ├── hiera_indirections.rb │ ├── iterative_functions.rb │ ├── memory_terminus.rb │ ├── path_parameters.rb │ ├── store_configs_terminus.rb │ └── things_that_declare_options.rb ├── shared_contexts │ ├── checksum.rb │ ├── digests.rb │ ├── https.rb │ ├── l10n.rb │ ├── provider.rb │ └── types_setup.rb ├── shared_examples │ └── rhel_package_provider.rb ├── spec_helper.rb └── unit │ ├── agent │ ├── disabler_spec.rb │ └── locker_spec.rb │ ├── agent_spec.rb │ ├── application │ ├── agent_spec.rb │ ├── apply_spec.rb │ ├── config_spec.rb │ ├── describe_spec.rb │ ├── device_spec.rb │ ├── doc_spec.rb │ ├── face_base_spec.rb │ ├── facts_spec.rb │ ├── filebucket_spec.rb │ ├── indirection_base_spec.rb │ ├── lookup_spec.rb │ ├── resource_spec.rb │ └── ssl_spec.rb │ ├── application_spec.rb │ ├── certificate_factory_spec.rb │ ├── concurrent │ ├── lock_spec.rb │ └── thread_local_singleton_spec.rb │ ├── configurer │ ├── downloader_spec.rb │ ├── fact_handler_spec.rb │ └── plugin_handler_spec.rb │ ├── configurer_spec.rb │ ├── confine │ ├── exists_spec.rb │ ├── false_spec.rb │ ├── feature_spec.rb │ ├── true_spec.rb │ └── variable_spec.rb │ ├── confine_collection_spec.rb │ ├── confine_spec.rb │ ├── confiner_spec.rb │ ├── context │ └── trusted_information_spec.rb │ ├── context_spec.rb │ ├── daemon_spec.rb │ ├── data_binding_spec.rb │ ├── data_providers │ ├── function_data_provider_spec.rb │ └── hiera_data_provider_spec.rb │ ├── datatypes_spec.rb │ ├── defaults_spec.rb │ ├── environments_spec.rb │ ├── etc_spec.rb │ ├── external │ └── pson_spec.rb │ ├── face │ ├── catalog_spec.rb │ ├── config_spec.rb │ ├── epp_face_spec.rb │ ├── facts_spec.rb │ ├── generate_spec.rb │ ├── help_spec.rb │ ├── module │ │ ├── install_spec.rb │ │ ├── list_spec.rb │ │ ├── uninstall_spec.rb │ │ └── upgrade_spec.rb │ ├── node_spec.rb │ ├── parser_spec.rb │ └── plugin_spec.rb │ ├── face_spec.rb │ ├── facter_impl_spec.rb │ ├── file_bucket │ ├── dipper_spec.rb │ └── file_spec.rb │ ├── file_serving │ ├── base_spec.rb │ ├── configuration │ │ └── parser_spec.rb │ ├── configuration_spec.rb │ ├── content_spec.rb │ ├── fileset_spec.rb │ ├── http_metadata_spec.rb │ ├── metadata_spec.rb │ ├── mount │ │ ├── file_spec.rb │ │ ├── locales_spec.rb │ │ ├── modules_spec.rb │ │ ├── pluginfacts_spec.rb │ │ ├── plugins_spec.rb │ │ ├── scripts_spec.rb │ │ └── tasks_spec.rb │ ├── mount_spec.rb │ ├── terminus_helper_spec.rb │ └── terminus_selector_spec.rb │ ├── file_system │ ├── path_pattern_spec.rb │ └── uniquefile_spec.rb │ ├── file_system_spec.rb │ ├── forge │ ├── errors_spec.rb │ ├── forge_spec.rb │ ├── module_release_spec.rb │ └── repository_spec.rb │ ├── forge_spec.rb │ ├── functions │ ├── abs_spec.rb │ ├── all_spec.rb │ ├── annotate_spec.rb │ ├── any_spec.rb │ ├── assert_type_spec.rb │ ├── binary_file_spec.rb │ ├── break_spec.rb │ ├── call_spec.rb │ ├── camelcase_spec.rb │ ├── capitalize_spec.rb │ ├── ceiling_spec.rb │ ├── chomp_spec.rb │ ├── chop_spec.rb │ ├── compare_spec.rb │ ├── contain_spec.rb │ ├── convert_to_spec.rb │ ├── defined_spec.rb │ ├── dig_spec.rb │ ├── downcase_spec.rb │ ├── each_spec.rb │ ├── empty_spec.rb │ ├── epp_spec.rb │ ├── filter_spec.rb │ ├── find_file_spec.rb │ ├── find_template_spec.rb │ ├── flatten_spec.rb │ ├── floor_spec.rb │ ├── get_spec.rb │ ├── getvar_spec.rb │ ├── group_by_spec.rb │ ├── hiera_spec.rb │ ├── include_spec.rb │ ├── index_spec.rb │ ├── inline_epp_spec.rb │ ├── join_spec.rb │ ├── keys_spec.rb │ ├── length_spec.rb │ ├── lest_spec.rb │ ├── logging_spec.rb │ ├── lookup_fixture_spec.rb │ ├── lookup_spec.rb │ ├── lstrip_spec.rb │ ├── map_spec.rb │ ├── match_spec.rb │ ├── max_spec.rb │ ├── min_spec.rb │ ├── module_directory_spec.rb │ ├── new_spec.rb │ ├── next_spec.rb │ ├── partition_spec.rb │ ├── reduce_spec.rb │ ├── regsubst_spec.rb │ ├── require_spec.rb │ ├── return_spec.rb │ ├── reverse_each_spec.rb │ ├── round_spec.rb │ ├── rstrip_spec.rb │ ├── scanf_spec.rb │ ├── shared.rb │ ├── size_spec.rb │ ├── slice_spec.rb │ ├── sort_spec.rb │ ├── split_spec.rb │ ├── step_spec.rb │ ├── strftime_spec.rb │ ├── strip_spec.rb │ ├── then_spec.rb │ ├── tree_each_spec.rb │ ├── type_spec.rb │ ├── unique_spec.rb │ ├── unwrap_spec.rb │ ├── upcase_spec.rb │ ├── values_spec.rb │ ├── versioncmp_spec.rb │ └── with_spec.rb │ ├── functions4_spec.rb │ ├── gettext │ ├── config_spec.rb │ └── module_loading_spec.rb │ ├── graph │ ├── key_spec.rb │ ├── rb_tree_map_spec.rb │ ├── relationship_graph_spec.rb │ ├── sequential_prioritizer_spec.rb │ └── simple_graph_spec.rb │ ├── hiera │ └── scope_spec.rb │ ├── hiera_puppet_spec.rb │ ├── http │ ├── client_spec.rb │ ├── dns_spec.rb │ ├── external_client_spec.rb │ ├── factory_spec.rb │ ├── pool_entry_spec.rb │ ├── pool_spec.rb │ ├── proxy_spec.rb │ ├── resolver_spec.rb │ ├── response_spec.rb │ ├── service │ │ ├── ca_spec.rb │ │ ├── compiler_spec.rb │ │ ├── file_server_spec.rb │ │ ├── puppetserver_spec.rb │ │ └── report_spec.rb │ ├── service_spec.rb │ ├── session_spec.rb │ └── site_spec.rb │ ├── indirector │ ├── catalog │ │ ├── compiler_spec.rb │ │ ├── json_spec.rb │ │ ├── msgpack_spec.rb │ │ ├── rest_spec.rb │ │ ├── store_configs_spec.rb │ │ └── yaml_spec.rb │ ├── data_binding │ │ ├── hiera_spec.rb │ │ └── none_spec.rb │ ├── direct_file_server_spec.rb │ ├── envelope_spec.rb │ ├── exec_spec.rb │ ├── face_spec.rb │ ├── facts │ │ ├── facter_spec.rb │ │ ├── json_spec.rb │ │ ├── network_device_spec.rb │ │ ├── rest_spec.rb │ │ ├── store_configs_spec.rb │ │ └── yaml_spec.rb │ ├── file_bucket_file │ │ ├── file_spec.rb │ │ ├── rest_spec.rb │ │ └── selector_spec.rb │ ├── file_content │ │ ├── file_server_spec.rb │ │ ├── file_spec.rb │ │ ├── rest_spec.rb │ │ └── selector_spec.rb │ ├── file_metadata │ │ ├── file_server_spec.rb │ │ ├── file_spec.rb │ │ ├── http_spec.rb │ │ ├── rest_spec.rb │ │ └── selector_spec.rb │ ├── file_server_spec.rb │ ├── hiera_spec.rb │ ├── indirection_spec.rb │ ├── json_spec.rb │ ├── memory_spec.rb │ ├── msgpack_spec.rb │ ├── node │ │ ├── exec_spec.rb │ │ ├── json_spec.rb │ │ ├── memory_spec.rb │ │ ├── msgpack_spec.rb │ │ ├── plain_spec.rb │ │ ├── rest_spec.rb │ │ ├── store_configs_spec.rb │ │ └── yaml_spec.rb │ ├── none_spec.rb │ ├── plain_spec.rb │ ├── report │ │ ├── json_spec.rb │ │ ├── msgpack_spec.rb │ │ ├── processor_spec.rb │ │ ├── rest_spec.rb │ │ └── yaml_spec.rb │ ├── request_spec.rb │ ├── resource │ │ ├── ral_spec.rb │ │ └── store_configs_spec.rb │ ├── rest_spec.rb │ ├── terminus_spec.rb │ └── yaml_spec.rb │ ├── indirector_spec.rb │ ├── info_service_spec.rb │ ├── interface │ ├── action_builder_spec.rb │ ├── action_manager_spec.rb │ ├── action_spec.rb │ ├── documentation_spec.rb │ ├── face_collection_spec.rb │ ├── option_builder_spec.rb │ └── option_spec.rb │ ├── interface_spec.rb │ ├── module_spec.rb │ ├── module_tool │ ├── application_spec.rb │ ├── applications │ │ ├── checksummer_spec.rb │ │ ├── installer_spec.rb │ │ ├── uninstaller_spec.rb │ │ ├── unpacker_spec.rb │ │ └── upgrader_spec.rb │ ├── install_directory_spec.rb │ ├── installed_modules_spec.rb │ ├── metadata_spec.rb │ ├── tar │ │ ├── gnu_spec.rb │ │ └── mini_spec.rb │ └── tar_spec.rb │ ├── module_tool_spec.rb │ ├── network │ ├── authconfig_spec.rb │ ├── authorization_spec.rb │ ├── format_handler_spec.rb │ ├── format_spec.rb │ ├── format_support_spec.rb │ ├── formats_spec.rb │ ├── http │ │ ├── api │ │ │ ├── indirected_routes_spec.rb │ │ │ ├── master_spec.rb │ │ │ └── server │ │ │ │ ├── v3 │ │ │ │ └── environments_spec.rb │ │ │ │ └── v3_spec.rb │ │ ├── api_spec.rb │ │ ├── connection_spec.rb │ │ ├── error_spec.rb │ │ ├── handler_spec.rb │ │ ├── request_spec.rb │ │ ├── response_spec.rb │ │ └── route_spec.rb │ ├── http_pool_spec.rb │ └── uri_spec.rb │ ├── node │ ├── environment_spec.rb │ └── facts_spec.rb │ ├── node_spec.rb │ ├── other │ └── selinux_spec.rb │ ├── parameter │ ├── boolean_spec.rb │ ├── package_options_spec.rb │ ├── path_spec.rb │ ├── value_collection_spec.rb │ └── value_spec.rb │ ├── parameter_spec.rb │ ├── parser │ ├── ast │ │ ├── block_expression_spec.rb │ │ └── leaf_spec.rb │ ├── compiler_spec.rb │ ├── files_spec.rb │ ├── functions │ │ ├── create_resources_spec.rb │ │ ├── digest_spec.rb │ │ ├── fail_spec.rb │ │ ├── file_spec.rb │ │ ├── fqdn_rand_spec.rb │ │ ├── generate_spec.rb │ │ ├── hiera_array_spec.rb │ │ ├── hiera_hash_spec.rb │ │ ├── hiera_include_spec.rb │ │ ├── hiera_spec.rb │ │ ├── inline_template_spec.rb │ │ ├── lookup_spec.rb │ │ ├── realize_spec.rb │ │ ├── regsubst_spec.rb │ │ ├── scanf_spec.rb │ │ ├── shellquote_spec.rb │ │ ├── split_spec.rb │ │ ├── sprintf_spec.rb │ │ ├── tag_spec.rb │ │ ├── tagged_spec.rb │ │ ├── template_spec.rb │ │ └── versioncmp_spec.rb │ ├── functions_spec.rb │ ├── relationship_spec.rb │ ├── resource │ │ └── param_spec.rb │ ├── resource_spec.rb │ ├── scope_spec.rb │ ├── templatewrapper_spec.rb │ └── type_loader_spec.rb │ ├── plan_spec.rb │ ├── pops │ ├── adaptable_spec.rb │ ├── benchmark_spec.rb │ ├── containment_spec.rb │ ├── evaluator │ │ ├── access_ops_spec.rb │ │ ├── arithmetic_ops_spec.rb │ │ ├── basic_expressions_spec.rb │ │ ├── collections_ops_spec.rb │ │ ├── comparison_ops_spec.rb │ │ ├── conditionals_spec.rb │ │ ├── deferred_resolver_spec.rb │ │ ├── evaluating_parser_spec.rb │ │ ├── evaluator_rspec_helper.rb │ │ ├── json_strict_literal_evaluator_spec.rb │ │ ├── literal_evaluator_spec.rb │ │ ├── logical_ops_spec.rb │ │ ├── runtime3_converter_spec.rb │ │ ├── string_interpolation_spec.rb │ │ └── variables_spec.rb │ ├── factory_rspec_helper.rb │ ├── factory_spec.rb │ ├── issues_spec.rb │ ├── label_provider_spec.rb │ ├── loaders │ │ ├── dependency_loader_spec.rb │ │ ├── environment_loader_spec.rb │ │ ├── loader_paths_spec.rb │ │ ├── loader_spec.rb │ │ ├── loaders_spec.rb │ │ ├── module_loaders_spec.rb │ │ └── static_loader_spec.rb │ ├── lookup │ │ ├── context_spec.rb │ │ ├── interpolation_spec.rb │ │ └── lookup_spec.rb │ ├── merge_strategy_spec.rb │ ├── migration_spec.rb │ ├── model │ │ ├── model_spec.rb │ │ └── pn_transformer_spec.rb │ ├── parser │ │ ├── epp_parser_spec.rb │ │ ├── evaluating_parser_spec.rb │ │ ├── lexer2_spec.rb │ │ ├── locator_spec.rb │ │ ├── parse_basic_expressions_spec.rb │ │ ├── parse_calls_spec.rb │ │ ├── parse_conditionals_spec.rb │ │ ├── parse_containers_spec.rb │ │ ├── parse_functions_spec.rb │ │ ├── parse_heredoc_spec.rb │ │ ├── parse_lambda_spec.rb │ │ ├── parse_plan_spec.rb │ │ ├── parse_resource_spec.rb │ │ ├── parser_rspec_helper.rb │ │ ├── parser_spec.rb │ │ ├── parsing_typed_parameters_spec.rb │ │ └── pn_parser_spec.rb │ ├── pn_spec.rb │ ├── puppet_stack_spec.rb │ ├── resource │ │ └── resource_type_impl_spec.rb │ ├── serialization │ │ ├── packer_spec.rb │ │ ├── serialization_spec.rb │ │ ├── to_from_hr_spec.rb │ │ └── to_stringified_spec.rb │ ├── time │ │ ├── timespan_spec.rb │ │ └── timestamp_spec.rb │ ├── types │ │ ├── class_loader_spec.rb │ │ ├── deferred_spec.rb │ │ ├── error_spec.rb │ │ ├── iterable_spec.rb │ │ ├── p_binary_type_spec.rb │ │ ├── p_init_type_spec.rb │ │ ├── p_object_type_spec.rb │ │ ├── p_sem_ver_type_spec.rb │ │ ├── p_sensitive_type_spec.rb │ │ ├── p_timespan_type_spec.rb │ │ ├── p_timestamp_type_spec.rb │ │ ├── p_type_set_type_spec.rb │ │ ├── p_uri_type_spec.rb │ │ ├── recursion_guard_spec.rb │ │ ├── ruby_generator_spec.rb │ │ ├── string_converter_spec.rb │ │ ├── task_spec.rb │ │ ├── type_acceptor_spec.rb │ │ ├── type_asserter_spec.rb │ │ ├── type_calculator_spec.rb │ │ ├── type_factory_spec.rb │ │ ├── type_formatter_spec.rb │ │ ├── type_mismatch_describer_spec.rb │ │ ├── type_parser_spec.rb │ │ └── types_spec.rb │ ├── utils_spec.rb │ ├── validation_spec.rb │ ├── validator │ │ └── validator_spec.rb │ └── visitor_spec.rb │ ├── property │ ├── boolean_spec.rb │ ├── ensure_spec.rb │ ├── keyvalue_spec.rb │ ├── list_spec.rb │ └── ordered_list_spec.rb │ ├── property_spec.rb │ ├── provider │ ├── README.markdown │ ├── aix_object_spec.rb │ ├── command_spec.rb │ ├── exec │ │ ├── posix_spec.rb │ │ ├── shell_spec.rb │ │ └── windows_spec.rb │ ├── exec_spec.rb │ ├── file │ │ ├── posix_spec.rb │ │ └── windows_spec.rb │ ├── group │ │ ├── aix_spec.rb │ │ ├── directoryservice_spec.rb │ │ ├── groupadd_spec.rb │ │ ├── ldap_spec.rb │ │ ├── pw_spec.rb │ │ └── windows_adsi_spec.rb │ ├── ldap_spec.rb │ ├── nameservice │ │ └── directoryservice_spec.rb │ ├── nameservice_spec.rb │ ├── package │ │ ├── aix_spec.rb │ │ ├── appdmg_spec.rb │ │ ├── apt_spec.rb │ │ ├── aptitude_spec.rb │ │ ├── aptrpm_spec.rb │ │ ├── base_spec.rb │ │ ├── dnf_spec.rb │ │ ├── dnfmodule_spec.rb │ │ ├── dpkg_spec.rb │ │ ├── freebsd_spec.rb │ │ ├── gem_spec.rb │ │ ├── hpux_spec.rb │ │ ├── macports_spec.rb │ │ ├── nim_spec.rb │ │ ├── openbsd_spec.rb │ │ ├── opkg_spec.rb │ │ ├── pacman_spec.rb │ │ ├── pip2_spec.rb │ │ ├── pip3_spec.rb │ │ ├── pip_spec.rb │ │ ├── pkg_spec.rb │ │ ├── pkgdmg_spec.rb │ │ ├── pkgin_spec.rb │ │ ├── pkgng_spec.rb │ │ ├── pkgutil_spec.rb │ │ ├── portage_spec.rb │ │ ├── puppet_gem_spec.rb │ │ ├── puppetserver_gem_spec.rb │ │ ├── rpm_spec.rb │ │ ├── sun_spec.rb │ │ ├── tdnf_spec.rb │ │ ├── up2date_spec.rb │ │ ├── urpmi_spec.rb │ │ ├── windows │ │ │ ├── exe_package_spec.rb │ │ │ ├── msi_package_spec.rb │ │ │ └── package_spec.rb │ │ ├── windows_spec.rb │ │ ├── xbps_spec.rb │ │ ├── yum_spec.rb │ │ └── zypper_spec.rb │ ├── package_targetable_spec.rb │ ├── parsedfile_spec.rb │ ├── service │ │ ├── base_spec.rb │ │ ├── bsd_spec.rb │ │ ├── daemontools_spec.rb │ │ ├── debian_spec.rb │ │ ├── freebsd_spec.rb │ │ ├── gentoo_spec.rb │ │ ├── init_spec.rb │ │ ├── launchd_spec.rb │ │ ├── openbsd_spec.rb │ │ ├── openrc_spec.rb │ │ ├── openwrt_spec.rb │ │ ├── rcng_spec.rb │ │ ├── redhat_spec.rb │ │ ├── runit_spec.rb │ │ ├── smf_spec.rb │ │ ├── src_spec.rb │ │ ├── systemd_spec.rb │ │ ├── upstart_spec.rb │ │ └── windows_spec.rb │ └── user │ │ ├── aix_spec.rb │ │ ├── directoryservice_spec.rb │ │ ├── hpux_spec.rb │ │ ├── ldap_spec.rb │ │ ├── openbsd_spec.rb │ │ ├── pw_spec.rb │ │ ├── user_role_add_spec.rb │ │ ├── useradd_spec.rb │ │ └── windows_adsi_spec.rb │ ├── provider_spec.rb │ ├── puppet_pal_2pec.rb │ ├── puppet_pal_catalog_spec.rb │ ├── puppet_pal_spec.rb │ ├── puppet_spec.rb │ ├── relationship_spec.rb │ ├── reports │ ├── http_spec.rb │ └── store_spec.rb │ ├── reports_spec.rb │ ├── resource │ ├── catalog_spec.rb │ ├── status_spec.rb │ ├── type_collection_spec.rb │ └── type_spec.rb │ ├── resource_spec.rb │ ├── scheduler │ ├── job_spec.rb │ ├── scheduler_spec.rb │ └── splay_job_spec.rb │ ├── settings │ ├── array_setting_spec.rb │ ├── autosign_setting_spec.rb │ ├── certificate_revocation_setting_spec.rb │ ├── config_file_spec.rb │ ├── directory_setting_spec.rb │ ├── duration_setting_spec.rb │ ├── enum_setting_spec.rb │ ├── environment_conf_spec.rb │ ├── file_setting_spec.rb │ ├── http_extra_headers_spec.rb │ ├── ini_file_spec.rb │ ├── integer_setting_spec.rb │ ├── path_setting_spec.rb │ ├── port_setting_spec.rb │ ├── priority_setting_spec.rb │ ├── server_list_setting_spec.rb │ ├── string_setting_spec.rb │ ├── terminus_setting_spec.rb │ └── value_translator_spec.rb │ ├── settings_spec.rb │ ├── ssl │ ├── base_spec.rb │ ├── certificate_request_attributes_spec.rb │ ├── certificate_request_spec.rb │ ├── certificate_signer_spec.rb │ ├── certificate_spec.rb │ ├── digest_spec.rb │ ├── oids_spec.rb │ ├── ssl_provider_spec.rb │ ├── state_machine_spec.rb │ └── verifier_spec.rb │ ├── task_spec.rb │ ├── test │ └── test_helper_spec.rb │ ├── transaction │ ├── additional_resource_generator_spec.rb │ ├── event_manager_spec.rb │ ├── event_spec.rb │ ├── persistence_spec.rb │ ├── report_spec.rb │ └── resource_harness_spec.rb │ ├── transaction_spec.rb │ ├── type │ ├── README.markdown │ ├── component_spec.rb │ ├── exec_spec.rb │ ├── file │ │ ├── checksum_spec.rb │ │ ├── checksum_value_spec.rb │ │ ├── content_spec.rb │ │ ├── ctime_spec.rb │ │ ├── ensure_spec.rb │ │ ├── group_spec.rb │ │ ├── mode_spec.rb │ │ ├── mtime_spec.rb │ │ ├── owner_spec.rb │ │ ├── selinux_spec.rb │ │ ├── source_spec.rb │ │ └── type_spec.rb │ ├── file_spec.rb │ ├── filebucket_spec.rb │ ├── group_spec.rb │ ├── noop_metaparam_spec.rb │ ├── package │ │ └── package_settings_spec.rb │ ├── package_spec.rb │ ├── resources_spec.rb │ ├── schedule_spec.rb │ ├── service_spec.rb │ ├── stage_spec.rb │ ├── tidy_spec.rb │ ├── user_spec.rb │ └── whit_spec.rb │ ├── type_spec.rb │ ├── util │ ├── at_fork_spec.rb │ ├── autoload_spec.rb │ ├── backups_spec.rb │ ├── character_encoding_spec.rb │ ├── checksums_spec.rb │ ├── colors_spec.rb │ ├── command_line_spec.rb │ ├── command_line_utils │ │ └── puppet_option_parser_spec.rb │ ├── constant_inflector_spec.rb │ ├── diff_spec.rb │ ├── docs_spec.rb │ ├── errors_spec.rb │ ├── execution_spec.rb │ ├── execution_stub_spec.rb │ ├── feature_spec.rb │ ├── filetype_spec.rb │ ├── inifile_spec.rb │ ├── json_lockfile_spec.rb │ ├── json_spec.rb │ ├── ldap │ │ ├── connection_spec.rb │ │ ├── generator_spec.rb │ │ └── manager_spec.rb │ ├── lockfile_spec.rb │ ├── log │ │ └── destinations_spec.rb │ ├── log_spec.rb │ ├── logging_spec.rb │ ├── metric_spec.rb │ ├── monkey_patches_spec.rb │ ├── multi_match_spec.rb │ ├── network_device │ │ ├── config_spec.rb │ │ └── transport │ │ │ └── base_spec.rb │ ├── network_device_spec.rb │ ├── package │ │ └── version │ │ │ ├── debian_spec.rb │ │ │ ├── pip_spec.rb │ │ │ ├── range_spec.rb │ │ │ └── rpm_spec.rb │ ├── package_spec.rb │ ├── pidlock_spec.rb │ ├── plist_spec.rb │ ├── posix_spec.rb │ ├── profiler │ │ ├── aggregate_spec.rb │ │ ├── around_profiler_spec.rb │ │ ├── logging_spec.rb │ │ ├── object_counts_spec.rb │ │ └── wall_clock_spec.rb │ ├── profiler_spec.rb │ ├── rdoc_spec.rb │ ├── reference_spec.rb │ ├── resource_template_spec.rb │ ├── retry_action_spec.rb │ ├── rpm_compare_spec.rb │ ├── rubygems_spec.rb │ ├── run_mode_spec.rb │ ├── selinux_spec.rb │ ├── skip_tags_spec.rb │ ├── splayer_spec.rb │ ├── storage_spec.rb │ ├── suidmanager_spec.rb │ ├── symbolic_file_mode_spec.rb │ ├── tag_set_spec.rb │ ├── tagging_spec.rb │ ├── terminal_spec.rb │ ├── user_attr_spec.rb │ ├── warnings_spec.rb │ ├── watched_file_spec.rb │ ├── watcher │ │ └── periodic_watcher_spec.rb │ ├── watcher_spec.rb │ ├── windows │ │ ├── access_control_entry_spec.rb │ │ ├── access_control_list_spec.rb │ │ ├── adsi_spec.rb │ │ ├── api_types_spec.rb │ │ ├── eventlog_spec.rb │ │ ├── file_spec.rb │ │ ├── root_certs_spec.rb │ │ ├── security_descriptor_spec.rb │ │ ├── service_spec.rb │ │ ├── sid_spec.rb │ │ └── string_spec.rb │ ├── windows_spec.rb │ └── yaml_spec.rb │ ├── util_spec.rb │ ├── version_spec.rb │ └── x509 │ ├── cert_provider_spec.rb │ └── pem_store_spec.rb ├── tasks └── tag.rake ├── util ├── README_UTIL.md ├── binary_search_specs.rb ├── rspec_grouper └── rspec_runner └── yardoc └── templates └── default ├── method_details └── html │ ├── method_signature.erb │ └── setup.rb └── module └── html └── item_summary.erb /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # raise PRs for gem updates 4 | - package-ecosystem: bundler 5 | directory: "/" 6 | schedule: 7 | interval: daily 8 | time: "13:00" 9 | open-pull-requests-limit: 10 10 | 11 | # Maintain dependencies for GitHub Actions 12 | - package-ecosystem: github-actions 13 | directory: "/" 14 | schedule: 15 | interval: daily 16 | time: "13:00" 17 | open-pull-requests-limit: 10 18 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "benchmarks/full_catalog/puppetlabs-puppetserver_perf_control"] 2 | path = benchmarks/full_catalog/puppetlabs-puppetserver_perf_control 3 | url = https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control 4 | -------------------------------------------------------------------------------- /.noexec.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | exclude: 3 | - gem 4 | - rake 5 | - rspec 6 | -------------------------------------------------------------------------------- /.yardopts: -------------------------------------------------------------------------------- 1 | --protected 2 | --private 3 | --verbose 4 | --markup markdown 5 | --readme README.md 6 | --tag status 7 | --transitive-tag status 8 | --tag comment 9 | --hide-tag comment 10 | --tag dsl:"DSL" 11 | --no-transitive-tag api 12 | --template-path yardoc/templates 13 | --files CO*.md,api/**/*.md 14 | --api public 15 | --api private 16 | --hide-void-return 17 | --exclude lib/puppet/vendor/ 18 | lib/**/*.rb 19 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # defaults 2 | * @puppetlabs/phoenix 3 | 4 | # PAL 5 | /lib/puppet/pal @puppetlabs/bolt 6 | 7 | # puppet module 8 | /lib/puppet/application/module.rb @puppetlabs/modules 9 | /lib/puppet/face/module @puppetlabs/modules 10 | /lib/puppet/forge @puppetlabs/modules 11 | /lib/puppet/module_tool @puppetlabs/modules 12 | -------------------------------------------------------------------------------- /acceptance/.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant 2 | local_options.rb 3 | pl-puppet-build.repo 4 | pl-puppet-repos.rpm 5 | repos.tar 6 | repo-configs 7 | log 8 | id_rsa-acceptance 9 | id_rsa-acceptance.pub 10 | preserved_config.yaml 11 | merged_options.rb 12 | tmp 13 | -------------------------------------------------------------------------------- /acceptance/config/gem/options.rb: -------------------------------------------------------------------------------- 1 | { 2 | # Use `git` so that we have a sane ruby environment 3 | :type => 'git', 4 | } 5 | -------------------------------------------------------------------------------- /acceptance/config/nodes/aix-53-power.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | HOSTS: 3 | master: 4 | roles: 5 | - master 6 | platform: el-7-x86_64 7 | hypervisor: vmpooler 8 | template: redhat-7-x86_64 9 | pe-aix-53-acceptance: 10 | roles: 11 | - agent 12 | platform: aix-5.3-power 13 | hypervisor: none 14 | vmhostname: pe-aix-53-acceptance.delivery.puppetlabs.net 15 | CONFIG: 16 | pooling_api: http://vmpooler.delivery.puppetlabs.net/ 17 | -------------------------------------------------------------------------------- /acceptance/config/nodes/aix-61-power.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | HOSTS: 3 | master: 4 | roles: 5 | - master 6 | platform: el-7-x86_64 7 | hypervisor: vmpooler 8 | template: redhat-7-x86_64 9 | pe-aix-61-acceptance: 10 | roles: 11 | - agent 12 | platform: aix-6.1-power 13 | hypervisor: none 14 | vmhostname: pe-aix-61-acceptance.delivery.puppetlabs.net 15 | CONFIG: 16 | pooling_api: http://vmpooler.delivery.puppetlabs.net/ 17 | -------------------------------------------------------------------------------- /acceptance/config/nodes/aix-71-power.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | HOSTS: 3 | master: 4 | roles: 5 | - master 6 | platform: el-7-x86_64 7 | hypervisor: vmpooler 8 | template: redhat-7-x86_64 9 | pe-aix-71-acceptance: 10 | roles: 11 | - agent 12 | platform: aix-7.1-power 13 | hypervisor: none 14 | vmhostname: pe-aix-71-acceptance.delivery.puppetlabs.net 15 | CONFIG: 16 | pooling_api: http://vmpooler.delivery.puppetlabs.net/ 17 | -------------------------------------------------------------------------------- /acceptance/config/nodes/huaweios-6-powerpc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | HOSTS: 3 | master: 4 | roles: 5 | - master 6 | platform: el-7-x86_64 7 | hypervisor: vmpooler 8 | template: redhat-7-x86_64 9 | huawei-ce6850-2-debian-vm-eth0.ops.puppetlabs.net: 10 | roles: 11 | - agent 12 | platform: huaweios-6-powerpc 13 | hypervisor: none 14 | CONFIG: 15 | pooling_api: http://vmpooler.delivery.puppetlabs.net/ 16 | -------------------------------------------------------------------------------- /acceptance/config/nodes/pe/debian-7-i386: -------------------------------------------------------------------------------- 1 | HOSTS: 2 | debian-7-i386: 3 | roles: 4 | - master 5 | - dashboard 6 | - database 7 | - agent 8 | platform: debian-7-i386 9 | template: debian-7-i386 10 | hypervisor: vcloud 11 | CONFIG: 12 | nfs_server: none 13 | consoleport: 443 14 | datastore: instance0 15 | folder: Delivery/Quality Assurance/Enterprise/Dynamic 16 | resourcepool: delivery/Quality Assurance/Enterprise/Dynamic 17 | -------------------------------------------------------------------------------- /acceptance/config/nodes/solaris-10-sparc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | HOSTS: 3 | master: 4 | roles: 5 | - master 6 | platform: el-7-x86_64 7 | hypervisor: vmpooler 8 | template: redhat-7-x86_64 9 | solaris-10-sparc: 10 | roles: 11 | - agent 12 | platform: solaris-10-sparc 13 | hypervisor: none 14 | ip: 10.32.121.124 15 | vmhostname: sol10-1.delivery.puppetlabs.net 16 | CONFIG: 17 | pooling_api: http://vmpooler.delivery.puppetlabs.net/ 18 | -------------------------------------------------------------------------------- /acceptance/config/nodes/solaris-11-sparc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | HOSTS: 3 | master: 4 | roles: 5 | - master 6 | platform: el-7-x86_64 7 | hypervisor: vmpooler 8 | template: redhat-7-x86_64 9 | solaris-11-sparc: 10 | roles: 11 | - agent 12 | platform: solaris-11-sparc 13 | hypervisor: none 14 | ip: 10.32.114.245 15 | vmhostname: sol11-1.delivery.puppetlabs.net 16 | CONFIG: 17 | pooling_api: http://vmpooler.delivery.puppetlabs.net/ 18 | -------------------------------------------------------------------------------- /acceptance/fixtures/debian-repo/Packages.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/debian-repo/Packages.gz -------------------------------------------------------------------------------- /acceptance/fixtures/debian-repo/Release: -------------------------------------------------------------------------------- 1 | Archive: stable 2 | Component: contrib 3 | Origin: Puppet 4 | Label: Puppet 5 | Architecture: i386 -------------------------------------------------------------------------------- /acceptance/fixtures/debian-repo/helloworld_1.0-1.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/debian-repo/helloworld_1.0-1.deb -------------------------------------------------------------------------------- /acceptance/fixtures/debian-repo/helloworld_1.19-1.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/debian-repo/helloworld_1.19-1.deb -------------------------------------------------------------------------------- /acceptance/fixtures/debian-repo/helloworld_2.0-1.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/debian-repo/helloworld_2.0-1.deb -------------------------------------------------------------------------------- /acceptance/fixtures/el-repo/RPMS/kernel-devel-puppet-3.10.0-1062.1.1.noarch.rpm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/el-repo/RPMS/kernel-devel-puppet-3.10.0-1062.1.1.noarch.rpm -------------------------------------------------------------------------------- /acceptance/fixtures/el-repo/RPMS/kernel-devel-puppet-3.10.0-1062.4.3.noarch.rpm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/el-repo/RPMS/kernel-devel-puppet-3.10.0-1062.4.3.noarch.rpm -------------------------------------------------------------------------------- /acceptance/fixtures/el-repo/repodata/0427a2b1b650922e9e7359c09be8820caa3b1ae72efef4998fd7a50fbd3a858c-primary.xml.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/el-repo/repodata/0427a2b1b650922e9e7359c09be8820caa3b1ae72efef4998fd7a50fbd3a858c-primary.xml.gz -------------------------------------------------------------------------------- /acceptance/fixtures/el-repo/repodata/12382dd1ca2ce49561d698430501e038a8694b64a5d69bdb7133bff1be5bd4ab-filelists.xml.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/el-repo/repodata/12382dd1ca2ce49561d698430501e038a8694b64a5d69bdb7133bff1be5bd4ab-filelists.xml.gz -------------------------------------------------------------------------------- /acceptance/fixtures/el-repo/repodata/4427b13c52edea24fc19776198a99611464b3c67f7828aeed8c5d20f3d8b1c02-filelists.sqlite.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/el-repo/repodata/4427b13c52edea24fc19776198a99611464b3c67f7828aeed8c5d20f3d8b1c02-filelists.sqlite.bz2 -------------------------------------------------------------------------------- /acceptance/fixtures/el-repo/repodata/653202d291344674c0e6c2547647d09c2b0044ec96986b9c62f74dc49f15a3db-other.sqlite.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/el-repo/repodata/653202d291344674c0e6c2547647d09c2b0044ec96986b9c62f74dc49f15a3db-other.sqlite.bz2 -------------------------------------------------------------------------------- /acceptance/fixtures/el-repo/repodata/68861daea8ff469f3418abd08697b408df11c8079b0b24178a4e2b4bd8a7102e-primary.sqlite.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/el-repo/repodata/68861daea8ff469f3418abd08697b408df11c8079b0b24178a4e2b4bd8a7102e-primary.sqlite.bz2 -------------------------------------------------------------------------------- /acceptance/fixtures/el-repo/repodata/c274906bddc4277eb4a9f54ad0bfb833ae2c34209d2c8059ee187aa409886ead-other.xml.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/el-repo/repodata/c274906bddc4277eb4a9f54ad0bfb833ae2c34209d2c8059ee187aa409886ead-other.xml.gz -------------------------------------------------------------------------------- /acceptance/fixtures/sles-repo/noarch/helloworld-1.0-2.noarch.rpm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/sles-repo/noarch/helloworld-1.0-2.noarch.rpm -------------------------------------------------------------------------------- /acceptance/fixtures/sles-repo/noarch/helloworld-1.19-2.noarch.rpm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/sles-repo/noarch/helloworld-1.19-2.noarch.rpm -------------------------------------------------------------------------------- /acceptance/fixtures/sles-repo/noarch/helloworld-2.0-2.noarch.rpm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/sles-repo/noarch/helloworld-2.0-2.noarch.rpm -------------------------------------------------------------------------------- /acceptance/fixtures/sles-repo/repodata/filelists.xml.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/sles-repo/repodata/filelists.xml.gz -------------------------------------------------------------------------------- /acceptance/fixtures/sles-repo/repodata/other.xml.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/sles-repo/repodata/other.xml.gz -------------------------------------------------------------------------------- /acceptance/fixtures/sles-repo/repodata/primary.xml.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/acceptance/fixtures/sles-repo/repodata/primary.xml.gz -------------------------------------------------------------------------------- /acceptance/lib/acceptance_spec_helper.rb: -------------------------------------------------------------------------------- 1 | require 'fileutils' 2 | 3 | dir = File.expand_path(File.dirname(__FILE__)) 4 | $LOAD_PATH.unshift dir 5 | 6 | RSpec.configure do |config| 7 | config.mock_with :mocha 8 | end 9 | -------------------------------------------------------------------------------- /acceptance/lib/helper.rb: -------------------------------------------------------------------------------- 1 | $LOAD_PATH << File.expand_path(File.dirname(__FILE__)) 2 | 3 | require 'beaker-puppet' 4 | -------------------------------------------------------------------------------- /acceptance/tests/apply/classes/should_include_resources_from_class.rb: -------------------------------------------------------------------------------- 1 | test_name "resources declared in a class can be applied with include" 2 | 3 | tag 'audit:high', 4 | 'audit:unit' # This should be covered at the unit layer. 5 | 6 | manifest = %q{ 7 | class x { 8 | notify{'a':} 9 | } 10 | include x 11 | } 12 | apply_manifest_on(agents, manifest) do |result| 13 | fail_test "the resource did not apply" unless result.stdout.include?("defined 'message' as 'a'") 14 | end 15 | -------------------------------------------------------------------------------- /acceptance/tests/windows/winexitcode/manifests/execute.pp: -------------------------------------------------------------------------------- 1 | define winexitcode::execute ( 2 | $exit_code = 0, 3 | ) { 4 | 5 | include winexitcode 6 | 7 | exec { "testcommand_${exit_code}": 8 | command => "c:\\Windows\\System32\\cmd.exe /c c:\\tmp\\test.bat ${title}", 9 | returns => $exit_code, 10 | logoutput => true, 11 | require => Class['winexitcode'], 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /acceptance/tests/windows/winexitcode/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class winexitcode { 2 | file { "c:\\tmp": 3 | ensure => directory, 4 | mode => '0660', 5 | owner => 'Administrator', 6 | group => 'Administrators', 7 | } 8 | -> 9 | file { "c:\\tmp\\test.bat": 10 | ensure => file, 11 | mode => '0660', 12 | owner => 'Administrator', 13 | group => 'Administrators', 14 | content => 'exit /b %1', 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /api/docs/pson.md: -------------------------------------------------------------------------------- 1 | PSON was moved to https://github.com/puppetlabs/puppet-pson 2 | -------------------------------------------------------------------------------- /benchmarks/catalog_memory/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: Runs an empty catalog and dumps the state of the memory after all runs and a diff between first and last run 2 | Benchmark target: catalog compilation memory consumption / leak 3 | Parser: Future 4 | Requires: Ruby 2.1.0 5 | 6 | -------------------------------------------------------------------------------- /benchmarks/catalog_memory/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | environment_timeout = '0' 5 | -------------------------------------------------------------------------------- /benchmarks/catalog_memory/site.pp.erb: -------------------------------------------------------------------------------- 1 | notice('hello world') -------------------------------------------------------------------------------- /benchmarks/defined_types/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: heavy use of defined types 2 | Benchmark target: catalog compilation 3 | 4 | -------------------------------------------------------------------------------- /benchmarks/defined_types/module/testing.pp.erb: -------------------------------------------------------------------------------- 1 | define <%= name %>::testing { 2 | notify { "in <%= name %>: $title": } 3 | } 4 | -------------------------------------------------------------------------------- /benchmarks/defined_types/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | -------------------------------------------------------------------------------- /benchmarks/defined_types/site.pp.erb: -------------------------------------------------------------------------------- 1 | <% size.times do |i| %> 2 | module<%= i %>::testing { "first": } 3 | module<%= i %>::testing{ "second": } 4 | <% end %> 5 | -------------------------------------------------------------------------------- /benchmarks/dependency_loading/module/function.erb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'<%= name %>::f<%= name %>') do 2 | def f<%= name %> 3 | '<%= name %>::f<%= name %>' 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /benchmarks/dependency_loading/module/global_function.erb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'f<%= name %>') do 2 | def f<%= name %> 3 | 'global f<%= name %>' 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /benchmarks/dependency_loading/module/init.pp.erb: -------------------------------------------------------------------------------- 1 | class <%= name %> { 2 | # Call local and global function defined in 3 | $v = [ <%= other %>::f<%= other %>(), f<%= other %>() ] 4 | } 5 | -------------------------------------------------------------------------------- /benchmarks/dependency_loading/module/init.pp_no_call.erb: -------------------------------------------------------------------------------- 1 | class <%= name %> { 2 | } 3 | -------------------------------------------------------------------------------- /benchmarks/dependency_loading/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | environment_timeout = 0 5 | -------------------------------------------------------------------------------- /benchmarks/dependency_loading/site.pp.erb: -------------------------------------------------------------------------------- 1 | <% size.times do |i| %><% if (i + 1) % modula == 0 %>include module<%= i %> 2 | <% end %><% end %> 3 | -------------------------------------------------------------------------------- /benchmarks/empty_catalog/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: an empty catalog (only one call to log a message) shows the setup time for env / compiler 2 | Benchmark target: catalog compilation overhead 3 | Parser: Future 4 | 5 | -------------------------------------------------------------------------------- /benchmarks/empty_catalog/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | environment_timeout = '0' 5 | -------------------------------------------------------------------------------- /benchmarks/empty_catalog/site.pp.erb: -------------------------------------------------------------------------------- 1 | notice('hello world') -------------------------------------------------------------------------------- /benchmarks/evaluations/benchmarker_task.rb: -------------------------------------------------------------------------------- 1 | # Helper class that is used by the Rake task generator. 2 | # Currently only supports defining arguments that are passed to run 3 | # (The rake task generator always passes :warm_up_runs as an Integer when profiling). 4 | # Other benchmarks, and for regular runs that wants arguments must specified them 5 | # as an Array of symbols. 6 | # 7 | class BenchmarkerTask 8 | def self.run_args 9 | [:detail] 10 | end 11 | end -------------------------------------------------------------------------------- /benchmarks/evaluations/manifests/fcall_3x.pp: -------------------------------------------------------------------------------- 1 | $tmp = [ 2 | func3(x,y), func3(x,y), func3(x,y), func3(x,y), func3(x,y), 3 | func3(x,y), func3(x,y), func3(x,y), func3(x,y), func3(x,y), 4 | func3(x,y), func3(x,y), func3(x,y), func3(x,y), func3(x,y), 5 | func3(x,y), func3(x,y), func3(x,y), func3(x,y), func3(x,y), 6 | ] 7 | -------------------------------------------------------------------------------- /benchmarks/evaluations/manifests/fcall_4x.pp: -------------------------------------------------------------------------------- 1 | $tmp = [ 2 | func4(x,y), func4(x,y), func4(x,y), func4(x,y), func4(x,y), 3 | func4(x,y), func4(x,y), func4(x,y), func4(x,y), func4(x,y), 4 | func4(x,y), func4(x,y), func4(x,y), func4(x,y), func4(x,y), 5 | func4(x,y), func4(x,y), func4(x,y), func4(x,y), func4(x,y), 6 | ] 7 | -------------------------------------------------------------------------------- /benchmarks/evaluations/manifests/fcall_ns4x.pp: -------------------------------------------------------------------------------- 1 | $tmp = [ 2 | module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), 3 | module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), 4 | module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), 5 | module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), module1::func4(x,y), 6 | ] 7 | -------------------------------------------------------------------------------- /benchmarks/evaluations/manifests/interpolation.pp: -------------------------------------------------------------------------------- 1 | $tmp = [ "...$x...", 2 | "...$x...$x", 3 | "...$x...$x...", 4 | "...$x...$x...$x...", 5 | "...$x...$x...$x...$x", 6 | "...$x...$x...$x...$x...", 7 | "...$x...$x...$x...$x...$x", 8 | "...$x...$x...$x...$x...$x...", 9 | "...$x...$x...$x...$x...$x...$x", 10 | "...$x...$x...$x...$x...$x...$x...", 11 | ] -------------------------------------------------------------------------------- /benchmarks/evaluations/manifests/var_absolute.pp: -------------------------------------------------------------------------------- 1 | $tmp = [ $::x, $::x, $::x, $::x, $::x, $::x, $::x, $::x, $::x, $::x, 2 | $::x, $::x, $::x, $::x, $::x, $::x, $::x, $::x, $::x, $::x, 3 | ] 4 | -------------------------------------------------------------------------------- /benchmarks/evaluations/manifests/var_class_relative.pp: -------------------------------------------------------------------------------- 1 | $tmp = [ $testing::param_a, $testing::param_a, $testing::param_a, $testing::param_a, $testing::param_a, 2 | $testing::param_a, $testing::param_a, $testing::param_a, $testing::param_a, $testing::param_a, 3 | $testing::param_a, $testing::param_a, $testing::param_a, $testing::param_a, $testing::param_a, 4 | $testing::param_a, $testing::param_a, $testing::param_a, $testing::param_a, $testing::param_a, 5 | ] 6 | -------------------------------------------------------------------------------- /benchmarks/evaluations/manifests/var_relative.pp: -------------------------------------------------------------------------------- 1 | $tmp = [$x, $x, $x, $x, $x, $x, $x, $x, $x, $x, 2 | $x, $x, $x, $x, $x, $x, $x, $x, $x, $x, 3 | ] 4 | -------------------------------------------------------------------------------- /benchmarks/evaluations/module/func3.rb.erb: -------------------------------------------------------------------------------- 1 | Puppet::Parser::Functions::newfunction(:func3, 2 | :arity => 2, 3 | :doc => "Blah blah, this is a lot of documentation that the ruby parser must deal with 4 | because documentation is part of what is loaded at runtime. Some functions have 5 | very little documentation, and some have quite a lot. This simulates documentation 6 | that is slightly longer than the shortest ones.") do |vals| 7 | # produces nil 8 | end 9 | -------------------------------------------------------------------------------- /benchmarks/evaluations/module/func4.rb.erb: -------------------------------------------------------------------------------- 1 | # Blah blah, this is a lot of documentation that the ruby parser must deal with 2 | # because documentation is part of what is loaded at runtime. Some functions have 3 | # very little documentation, and some have quite a lot. This simulates documentation 4 | # that is slightly longer than the shortest ones. 5 | # 6 | Puppet::Functions.create_function(:func4) do 7 | def func4(x,y) 8 | end 9 | end -------------------------------------------------------------------------------- /benchmarks/evaluations/module/init.pp.erb: -------------------------------------------------------------------------------- 1 | # empty init (for now) -------------------------------------------------------------------------------- /benchmarks/evaluations/module/module1_func4.rb.erb: -------------------------------------------------------------------------------- 1 | # Blah blah, this is a lot of documentation that the ruby parser must deal with 2 | # because documentation is part of what is loaded at runtime. Some functions have 3 | # very little documentation, and some have quite a lot. This simulates documentation 4 | # that is slightly longer than the shortest ones. 5 | # 6 | Puppet::Functions.create_function(:'<%= name %>::func4') do 7 | def func4(x,y) 8 | end 9 | end -------------------------------------------------------------------------------- /benchmarks/evaluations/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | environment_timeout = '0' 5 | strict_variables = true 6 | -------------------------------------------------------------------------------- /benchmarks/evaluations/site.pp.erb: -------------------------------------------------------------------------------- 1 | # Common setup done once for all micro benchmarks 2 | # 3 | class testing { 4 | $param_a = 10 5 | $param_b = 20 6 | } 7 | include testing 8 | $x = 'aaaaaaaa' 9 | 10 | 11 | -------------------------------------------------------------------------------- /benchmarks/fq_var_lookup/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: many qualified variable lookups without leading ::. 2 | Benchmark target: catalog compilation. 3 | 4 | -------------------------------------------------------------------------------- /benchmarks/fq_var_lookup/module/params.pp.erb: -------------------------------------------------------------------------------- 1 | class tst_generate::params { 2 | $basedir = '/tmp/type_collection_tst' 3 | $user = 'tstusr' 4 | $ugroup = 'tstugroup' 5 | } 6 | -------------------------------------------------------------------------------- /benchmarks/fq_var_lookup/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | -------------------------------------------------------------------------------- /benchmarks/fq_var_lookup/site.pp.erb: -------------------------------------------------------------------------------- 1 | include tst_generate::badclass 2 | -------------------------------------------------------------------------------- /benchmarks/full_catalog/Gemfile: -------------------------------------------------------------------------------- 1 | source ENV['GEM_SOURCE'] || "https://rubygems.org" 2 | 3 | gem "r10k", '~> 2.6' 4 | -------------------------------------------------------------------------------- /benchmarks/full_catalog/description: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/benchmarks/full_catalog/description -------------------------------------------------------------------------------- /benchmarks/full_catalog/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | environmentpath = <%= codedir %> 2 | confdir = <%= target %> 3 | -------------------------------------------------------------------------------- /benchmarks/full_catalog/r10k.yaml: -------------------------------------------------------------------------------- 1 | :cachedir: '/tmp/full_catalog_r10k_cache' 2 | -------------------------------------------------------------------------------- /benchmarks/full_catalog/site.pp.erb: -------------------------------------------------------------------------------- 1 | node 'default' { 2 | include ::role::by_size::<%= size %> 3 | } 4 | -------------------------------------------------------------------------------- /benchmarks/function_loading/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: many functions spread across many modules. 2 | Benchmark target: function loading and call overhead 3 | 4 | A number of modules are generated. The environment, and each module holds a large number of functions (several 100s). 5 | Fuctions call each other and cause deep recursion (and on demand loading as they are called. 6 | Calls are made across modules, and to the environment. 7 | -------------------------------------------------------------------------------- /benchmarks/function_loading/env_function.erb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'environment::f<%= n %>') do 2 | def f<%= n %> 3 | <% if n > 0 %>call_function(:'environment::f<%= n-1 %>')<% else %>'environment::f<%= n %>'<% end %> 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /benchmarks/function_loading/module/function.erb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'<%= name %>::f<%= n %>') do 2 | def f<%= n %> 3 | '<%= name %>::f<%= n %>' 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /benchmarks/function_loading/module/init.pp.erb: -------------------------------------------------------------------------------- 1 | class <%= name %> { 2 | <% mc.times do |m| %> 3 | $v<%= m %> = [ 4 | <% (function_count - 1).times do |n| %> <%= name %>::f<%= n %>(), 5 | <% end %> 6 | module<%= m %>::f<%= function_count - 1 %>() 7 | ] 8 | <% end %> 9 | } 10 | -------------------------------------------------------------------------------- /benchmarks/function_loading/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | environment_timeout = 0 5 | parser = future 6 | -------------------------------------------------------------------------------- /benchmarks/function_loading/site.pp.erb: -------------------------------------------------------------------------------- 1 | environment::f<%= function_count() - 1 %>() 2 | <% size.times do |i| %>include module<%= i %> 3 | <% end %> 4 | 5 | -------------------------------------------------------------------------------- /benchmarks/hiera_conf_interpol/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: Many lookups using a Hiera configuration with many interpolations 2 | Benchmark target: hiera lookup. 3 | -------------------------------------------------------------------------------- /benchmarks/hiera_conf_interpol/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | codedir = <%= location %> 4 | environmentpath = <%= File.join(location, 'environments') %> 5 | environment_timeout = 0 6 | -------------------------------------------------------------------------------- /benchmarks/hiera_env_lookup/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: Many lookups using a Hiera 5 configuration in an environment 2 | Benchmark target: hiera lookup. 3 | -------------------------------------------------------------------------------- /benchmarks/hiera_env_lookup/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | codedir = <%= location %> 4 | environmentpath = <%= File.join(location, 'environments') %> 5 | environment_timeout = 0 6 | -------------------------------------------------------------------------------- /benchmarks/hiera_function/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: Many lookups using hiera function 2 | Benchmark target: hiera lookup. 3 | -------------------------------------------------------------------------------- /benchmarks/hiera_function/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | codedir = <%= location %> 4 | environmentpath = <%= File.join(location, 'environments') %> 5 | environment_timeout = 0 6 | -------------------------------------------------------------------------------- /benchmarks/hiera_global_lookup/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: Many lookups using a global Hiera 3 configuration 2 | Benchmark target: hiera lookup. 3 | -------------------------------------------------------------------------------- /benchmarks/hiera_global_lookup/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | codedir = <%= location %> 4 | environmentpath = <%= File.join(location, 'environments') %> 5 | environment_timeout = 0 6 | -------------------------------------------------------------------------------- /benchmarks/hiera_include/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: Large nested hierarchy dataset 2 | Benchmark target: hiera include. 3 | -------------------------------------------------------------------------------- /benchmarks/hiera_include/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | codedir = <%= location %> 4 | environmentpath = <%= File.join(location, 'environments') %> 5 | environment_timeout = 0 6 | -------------------------------------------------------------------------------- /benchmarks/hiera_include_one/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: Large nested hierarchy dataset, many compilations, one lookup per compile 2 | Benchmark target: hiera include. 3 | -------------------------------------------------------------------------------- /benchmarks/hiera_include_one/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | codedir = <%= location %> 4 | environmentpath = <%= File.join(location, 'environments') %> 5 | environment_timeout = 0 6 | -------------------------------------------------------------------------------- /benchmarks/legacy_hiera_lookup/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: Lookups that uses raw Hiera 3 (the legacy implementation) 2 | Benchmark target: legacy hiera lookup. 3 | -------------------------------------------------------------------------------- /benchmarks/many_environments/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: many directory environments. 2 | Benchmark target: environment lookup. 3 | -------------------------------------------------------------------------------- /benchmarks/many_modules/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: many manifests spread across many modules. 2 | Benchmark target: catalog compilation. 3 | 4 | -------------------------------------------------------------------------------- /benchmarks/many_modules/module/init.pp.erb: -------------------------------------------------------------------------------- 1 | class <%= name %> { 2 | class { "<%= name %>::internal": } 3 | <% roles.each do |role| %> 4 | class { "<%= name %>::role<%= role %>": } 5 | <% end %> 6 | } 7 | -------------------------------------------------------------------------------- /benchmarks/many_modules/module/internal.pp.erb: -------------------------------------------------------------------------------- 1 | class <%= name %>::internal { 2 | notify { "<%= name %>::internal": } 3 | } 4 | -------------------------------------------------------------------------------- /benchmarks/many_modules/module/role.pp.erb: -------------------------------------------------------------------------------- 1 | class <%= name %>::role<%= index %> { 2 | notify { "<%= name %>::role<%= index %>": } 3 | } 4 | -------------------------------------------------------------------------------- /benchmarks/many_modules/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | -------------------------------------------------------------------------------- /benchmarks/many_modules/site.pp.erb: -------------------------------------------------------------------------------- 1 | <% size.times do |i| %> 2 | include module<%= i %> 3 | <% end %> 4 | -------------------------------------------------------------------------------- /benchmarks/missing_type_caching/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: heavy use of defined types found in init.pp 2 | Benchmark target: catalog compilation 3 | 4 | -------------------------------------------------------------------------------- /benchmarks/missing_type_caching/module/testmodule.pp.erb: -------------------------------------------------------------------------------- 1 | define testmodule { 2 | notify { "in <%= name %>: $title": } 3 | } 4 | -------------------------------------------------------------------------------- /benchmarks/missing_type_caching/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | -------------------------------------------------------------------------------- /benchmarks/missing_type_caching/site.pp.erb: -------------------------------------------------------------------------------- 1 | if true { 2 | <% size.times do |i| %> 3 | testmodule { "foo<%= i %>": } 4 | <% end %> 5 | } 6 | -------------------------------------------------------------------------------- /benchmarks/serialization/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: Serializing catalogs in JSON vs PSON 2 | Benchmark target: overhead of ruby PSON/JSON serialization 3 | 4 | -------------------------------------------------------------------------------- /benchmarks/system_startup/benchmarker.rb: -------------------------------------------------------------------------------- 1 | class Benchmarker 2 | def initialize(target, size) 3 | end 4 | 5 | def setup 6 | end 7 | 8 | def generate 9 | end 10 | 11 | def run(args=nil) 12 | # Just running help is probably a good proxy of a full startup. 13 | # Simply asking for the version might also be good, but it would miss all 14 | # of the app searching and loading parts 15 | `puppet help` 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /benchmarks/system_startup/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: running puppet commands from the CLI 2 | Benchmark target: overhead of loading puppet 3 | -------------------------------------------------------------------------------- /benchmarks/type_inference/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: a resource is defined with typed arguments 2 | Benchmark target: type inference overhead 3 | Parser: Future 4 | 5 | -------------------------------------------------------------------------------- /benchmarks/type_inference/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | environment_timeout = '0' 5 | -------------------------------------------------------------------------------- /benchmarks/virtual_collection/description: -------------------------------------------------------------------------------- 1 | Benchmark scenario: heavy use of virtual collection 2 | Benchmark target: catalog compilation 3 | Parser: Future 4 | 5 | -------------------------------------------------------------------------------- /benchmarks/virtual_collection/puppet.conf.erb: -------------------------------------------------------------------------------- 1 | confdir = <%= location %> 2 | vardir = <%= location %> 3 | environmentpath = <%= File.join(location, 'environments') %> 4 | 5 | -------------------------------------------------------------------------------- /benchmarks/virtual_collection/site.pp.erb: -------------------------------------------------------------------------------- 1 | <% size.times do |i| %> 2 | @notify { "name<%= i %>":} 3 | <% end %> 4 | 5 | <% size.times do |i| %> 6 | Notify <| title == "name<%= i %>" |> 7 | <% end %> 8 | -------------------------------------------------------------------------------- /bin/puppet: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # frozen_string_literal: true 3 | 4 | begin 5 | require 'puppet/util/command_line' 6 | Puppet::Util::CommandLine.new.execute 7 | rescue LoadError => e 8 | $stderr.puts e.message 9 | exit(1) 10 | end 11 | -------------------------------------------------------------------------------- /conf/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Hiera 5 Global configuration file 3 | 4 | version: 5 5 | 6 | # defaults: 7 | # data_hash: yaml_data 8 | # hierarchy: 9 | # - name: Common 10 | # data_hash: yaml_data 11 | hierarchy: [] 12 | -------------------------------------------------------------------------------- /conf/puppet.conf: -------------------------------------------------------------------------------- 1 | # This file can be used to override the default puppet settings. 2 | # See the following links for more details on what settings are available: 3 | # - https://puppet.com/docs/puppet/latest/config_important_settings.html 4 | # - https://puppet.com/docs/puppet/latest/config_about_settings.html 5 | # - https://puppet.com/docs/puppet/latest/config_file_main.html 6 | # - https://puppet.com/docs/puppet/latest/configuration.html 7 | -------------------------------------------------------------------------------- /docs/httpcaroute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/docs/httpcaroute.png -------------------------------------------------------------------------------- /docs/httpclient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/docs/httpclient.png -------------------------------------------------------------------------------- /examples/enc/regexp_nodes/classes/databases: -------------------------------------------------------------------------------- 1 | db\d{2} 2 | mysql 3 | -------------------------------------------------------------------------------- /examples/enc/regexp_nodes/classes/webservers: -------------------------------------------------------------------------------- 1 | ^(web|www) 2 | leterel 3 | -------------------------------------------------------------------------------- /examples/enc/regexp_nodes/environment/development: -------------------------------------------------------------------------------- 1 | ^dev- 2 | prod-canary 3 | -------------------------------------------------------------------------------- /examples/enc/regexp_nodes/parameters/service/prod: -------------------------------------------------------------------------------- 1 | \d{3}$ 2 | -------------------------------------------------------------------------------- /examples/enc/regexp_nodes/parameters/service/qa: -------------------------------------------------------------------------------- 1 | ^qa- 2 | ^qa2- 3 | ^qa3- 4 | -------------------------------------------------------------------------------- /examples/enc/regexp_nodes/parameters/service/sandbox: -------------------------------------------------------------------------------- 1 | ^dev- 2 | -------------------------------------------------------------------------------- /examples/hiera/data/common.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | classes: 3 | - users::common 4 | - ntp::config 5 | 6 | ntp::config::ntpservers: 7 | - 'ntp1.example.com' 8 | - 'ntp2.example.com' 9 | 10 | lookup_options: 11 | classes: 12 | merge: unique 13 | -------------------------------------------------------------------------------- /examples/hiera/data/dc1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | ntp::config::ntpservers: 3 | - 'ntp1.dc1.example.com' 4 | - 'ntp2.dc1.example.com' 5 | classes: 6 | - users::dc1 7 | -------------------------------------------------------------------------------- /examples/hiera/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 5 3 | defaults: 4 | datadir: data 5 | data_hash: yaml_data 6 | 7 | hierarchy: 8 | - name: 'Per Location' 9 | path: "%{facts.location}.yaml" 10 | 11 | - name: 'Per Environment' 12 | path: "%{facts.environment}.yaml" 13 | 14 | - name: 'Common Data' 15 | path: 'common.yaml' 16 | -------------------------------------------------------------------------------- /examples/hiera/modules/ntp/data/common.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | ntp::config::ntpservers: 3 | - '1.pool.ntp.org' 4 | - '2.pool.ntp.org' 5 | -------------------------------------------------------------------------------- /examples/hiera/modules/ntp/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 5 3 | defaults: 4 | datadir: data 5 | data_hash: yaml_data 6 | 7 | hierarchy: 8 | - name: 'Common Data' 9 | path: 'common.yaml' 10 | -------------------------------------------------------------------------------- /examples/hiera/modules/ntp/templates/ntp.conf.epp: -------------------------------------------------------------------------------- 1 | <% $ntp::config::ntpservers.each |$server| { -%> 2 | server <%= $server %> 3 | <% } -%> 4 | -------------------------------------------------------------------------------- /examples/hiera/modules/users/manifests/common.pp: -------------------------------------------------------------------------------- 1 | # @summary Notify to demonstrate users::common in catalog 2 | # 3 | # A common Class that all examples should include 4 | # 5 | # @example 6 | # include users::common 7 | class users::common { 8 | notify { 'Adding users::common': } 9 | } 10 | -------------------------------------------------------------------------------- /examples/hiera/modules/users/manifests/dc1.pp: -------------------------------------------------------------------------------- 1 | # @summary Notify to demonstrate users::dc1 in catalog 2 | # 3 | # A Class that should be present in dc1 node(s) catalog 4 | # 5 | # @example 6 | # include users::dc1 7 | class users::dc1 { 8 | notify { 'Adding users::dc1': } 9 | } 10 | -------------------------------------------------------------------------------- /examples/hiera/site.pp: -------------------------------------------------------------------------------- 1 | node default { 2 | include lookup('classes') 3 | } 4 | -------------------------------------------------------------------------------- /ext/debian/puppet.default: -------------------------------------------------------------------------------- 1 | # Defaults for puppet - sourced by /etc/init.d/puppet 2 | 3 | # Startup options 4 | DAEMON_OPTS="" 5 | -------------------------------------------------------------------------------- /ext/project_data.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | project: 'puppet' 3 | gem_rdoc_options: 4 | - --title 5 | - "Puppet - Configuration Management" 6 | - --main 7 | - README.md 8 | - --line-numbers 9 | # Array of files to include when building source tarballs 10 | files: 11 | - '[A-Z]*' 12 | - install.rb 13 | - bin 14 | - lib 15 | - conf 16 | - man 17 | - examples 18 | - ext 19 | - tasks 20 | - locales 21 | -------------------------------------------------------------------------------- /ext/redhat/client.sysconfig: -------------------------------------------------------------------------------- 1 | # You may specify parameters to the puppet client here 2 | #PUPPET_EXTRA_OPTS=--waitforcert=500 3 | -------------------------------------------------------------------------------- /ext/windows/puppet_interactive.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | SETLOCAL 3 | echo Running Puppet agent on demand ... 4 | cd "%~dp0" 5 | call puppet.bat agent --test %* 6 | PAUSE 7 | -------------------------------------------------------------------------------- /ext/windows/puppet_shell.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | SETLOCAL 3 | if exist "%~dp0environment.bat" ( 4 | call "%~dp0environment.bat" %0 %* 5 | ) else ( 6 | SET "PATH=%~dp0;%PATH%" 7 | ) 8 | REM Display Ruby version 9 | ruby.exe -v 10 | -------------------------------------------------------------------------------- /ext/windows/run_puppet_interactive.bat: -------------------------------------------------------------------------------- 1 | @echo Running puppet on demand ... 2 | @echo off 3 | SETLOCAL 4 | if exist "%~dp0environment.bat" ( 5 | call "%~dp0environment.bat" %0 %* 6 | ) else ( 7 | SET "PATH=%~dp0;%PATH%" 8 | ) 9 | elevate.exe "%~dp0puppet_interactive.bat" 10 | -------------------------------------------------------------------------------- /ext/windows/service/daemon.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | SETLOCAL 3 | 4 | call "%~dp0..\bin\environment.bat" %0 %* 5 | 6 | ruby -rubygems "%~dp0daemon.rb" %* -------------------------------------------------------------------------------- /lib/puppet/application/catalog.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/indirection_base' 4 | 5 | class Puppet::Application::Catalog < Puppet::Application::IndirectionBase 6 | end 7 | -------------------------------------------------------------------------------- /lib/puppet/application/config.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/face_base' 4 | 5 | class Puppet::Application::Config < Puppet::Application::FaceBase 6 | environment_mode :not_required 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/application/epp.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/face_base' 4 | require_relative '../../puppet/face' 5 | 6 | class Puppet::Application::Epp < Puppet::Application::FaceBase 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/application/generate.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/face_base' 4 | 5 | # The Generate application. 6 | class Puppet::Application::Generate < Puppet::Application::FaceBase 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/application/help.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/face_base' 4 | 5 | class Puppet::Application::Help < Puppet::Application::FaceBase 6 | environment_mode :not_required 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/application/indirection_base.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/face_base' 4 | 5 | class Puppet::Application::IndirectionBase < Puppet::Application::FaceBase 6 | end 7 | -------------------------------------------------------------------------------- /lib/puppet/application/module.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/face_base' 4 | 5 | class Puppet::Application::Module < Puppet::Application::FaceBase 6 | end 7 | -------------------------------------------------------------------------------- /lib/puppet/application/node.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/indirection_base' 4 | 5 | class Puppet::Application::Node < Puppet::Application::IndirectionBase 6 | end 7 | -------------------------------------------------------------------------------- /lib/puppet/application/parser.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/face_base' 4 | require_relative '../../puppet/face' 5 | 6 | class Puppet::Application::Parser < Puppet::Application::FaceBase 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/application/plugin.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/face_base' 4 | class Puppet::Application::Plugin < Puppet::Application::FaceBase 5 | environment_mode :not_required 6 | end 7 | -------------------------------------------------------------------------------- /lib/puppet/application/report.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/application/indirection_base' 4 | 5 | class Puppet::Application::Report < Puppet::Application::IndirectionBase 6 | end 7 | -------------------------------------------------------------------------------- /lib/puppet/concurrent.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Puppet::Concurrent 4 | end 5 | -------------------------------------------------------------------------------- /lib/puppet/concurrent/lock.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/concurrent/synchronized' 4 | 5 | module Puppet 6 | module Concurrent 7 | # A simple lock that at the moment only does any locking on jruby 8 | class Lock 9 | include Puppet::Concurrent::Synchronized 10 | def synchronize 11 | yield 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /lib/puppet/feature/bolt.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | Puppet.features.add(:bolt, :libs => ['bolt']) 6 | -------------------------------------------------------------------------------- /lib/puppet/feature/cfpropertylist.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | Puppet.features.add(:cfpropertylist, :libs => ['cfpropertylist']) 6 | -------------------------------------------------------------------------------- /lib/puppet/feature/eventlog.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | if Puppet::Util::Platform.windows? 6 | Puppet.features.add(:eventlog) 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/feature/hiera_eyaml.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | Puppet.features.add(:hiera_eyaml, :libs => ['hiera/backend/eyaml/parser/parser']) 6 | -------------------------------------------------------------------------------- /lib/puppet/feature/hocon.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | Puppet.features.add(:hocon, :libs => ['hocon']) 6 | -------------------------------------------------------------------------------- /lib/puppet/feature/libuser.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | require_relative '../../puppet/util/libuser' 5 | 6 | Puppet.features.add(:libuser) { 7 | File.executable?("/usr/sbin/lgroupadd") and 8 | File.executable?("/usr/sbin/luseradd") and 9 | Puppet::FileSystem.exist?(Puppet::Util::Libuser.getconf) 10 | } 11 | -------------------------------------------------------------------------------- /lib/puppet/feature/msgpack.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | Puppet.features.add(:msgpack, :libs => ["msgpack"]) 6 | -------------------------------------------------------------------------------- /lib/puppet/feature/pe_license.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | # Is the pe license library installed providing the ability to read licenses. 6 | Puppet.features.add(:pe_license, :libs => %(pe_license)) 7 | -------------------------------------------------------------------------------- /lib/puppet/feature/pson.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | # PSON is deprecated, use JSON instead 6 | Puppet.features.add(:pson, :libs => ['puppet/external/pson']) 7 | -------------------------------------------------------------------------------- /lib/puppet/feature/selinux.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | Puppet.features.add(:selinux, :libs => ["selinux"]) 6 | -------------------------------------------------------------------------------- /lib/puppet/feature/ssh.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | Puppet.features.add(:ssh, :libs => %(net/ssh)) 6 | -------------------------------------------------------------------------------- /lib/puppet/feature/telnet.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | Puppet.features.add(:telnet, :libs => %(net/telnet)) 6 | -------------------------------------------------------------------------------- /lib/puppet/feature/zlib.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/feature' 4 | 5 | # We want this to load if possible, but it's not automatically 6 | # required. 7 | Puppet.features.add(:zlib, :libs => %(zlib)) 8 | -------------------------------------------------------------------------------- /lib/puppet/ffi/posix.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'ffi' 4 | 5 | module Puppet 6 | module FFI 7 | module POSIX 8 | require_relative 'posix/functions' 9 | require_relative 'posix/constants' 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /lib/puppet/ffi/windows.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'ffi' 4 | 5 | module Puppet 6 | module FFI 7 | module Windows 8 | require_relative 'windows/api_types' 9 | require_relative 'windows/constants' 10 | require_relative 'windows/structs' 11 | require_relative 'windows/functions' 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /lib/puppet/file_bucket.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # stub 4 | module Puppet::FileBucket 5 | class BucketError < RuntimeError; end 6 | end 7 | -------------------------------------------------------------------------------- /lib/puppet/file_serving.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Just a stub class. 4 | class Puppet::FileServing # :nodoc: 5 | end 6 | -------------------------------------------------------------------------------- /lib/puppet/functions/import.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # The import function raises an error when called to inform the user that import is no longer supported. 4 | # 5 | Puppet::Functions.create_function(:import) do 6 | def import(*args) 7 | raise Puppet::Pops::SemanticError, Puppet::Pops::Issues::DISCONTINUED_IMPORT 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /lib/puppet/functions/size.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # The same as length() - returns the size of an Array, Hash, String, or Binary value. 4 | # 5 | # @since 6.0.0 - also supporting Binary 6 | # 7 | Puppet::Functions.create_function(:size) do 8 | dispatch :generic_size do 9 | param 'Variant[Collection, String, Binary]', :arg 10 | end 11 | 12 | def generic_size(arg) 13 | call_function('length', arg) 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /lib/puppet/gettext/stubs.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # These stub the translation methods normally brought in 4 | # by FastGettext. Used when Gettext could not be properly 5 | # initialized. 6 | def _(msg) 7 | msg 8 | end 9 | 10 | def n_(*args, &block) 11 | plural = args[2] == 1 ? args[0] : args[1] 12 | block ? block.call : plural 13 | end 14 | -------------------------------------------------------------------------------- /lib/puppet/graph.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Puppet::Graph 4 | require_relative 'graph/prioritizer' 5 | require_relative 'graph/sequential_prioritizer' 6 | 7 | require_relative 'graph/simple_graph' 8 | require_relative 'graph/rb_tree_map' 9 | require_relative 'graph/key' 10 | require_relative 'graph/relationship_graph' 11 | end 12 | -------------------------------------------------------------------------------- /lib/puppet/indirector/catalog/msgpack.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/resource/catalog' 4 | require_relative '../../../puppet/indirector/msgpack' 5 | 6 | class Puppet::Resource::Catalog::Msgpack < Puppet::Indirector::Msgpack 7 | desc "Store catalogs as flat files, serialized using MessagePack." 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/indirector/catalog/store_configs.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/indirector/store_configs' 4 | require_relative '../../../puppet/resource/catalog' 5 | 6 | class Puppet::Resource::Catalog::StoreConfigs < Puppet::Indirector::StoreConfigs 7 | desc 'Part of the "storeconfigs" feature. Should not be directly set by end users.' 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/indirector/catalog/yaml.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/resource/catalog' 4 | require_relative '../../../puppet/indirector/yaml' 5 | 6 | class Puppet::Resource::Catalog::Yaml < Puppet::Indirector::Yaml 7 | desc "Store catalogs as flat files, serialized using YAML." 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/indirector/code.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/indirector/terminus' 4 | 5 | # Do nothing, requiring that the back-end terminus do all 6 | # of the work. 7 | class Puppet::Indirector::Code < Puppet::Indirector::Terminus 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/indirector/data_binding/hiera.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/indirector/hiera' 4 | require 'hiera/scope' 5 | 6 | class Puppet::DataBinding::Hiera < Puppet::Indirector::Hiera 7 | desc "Retrieve data using Hiera." 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/indirector/data_binding/none.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/indirector/none' 4 | 5 | class Puppet::DataBinding::None < Puppet::Indirector::None 6 | desc "A Dummy terminus that always throws :no_such_key for data lookups." 7 | def find(request) 8 | throw :no_such_key 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/indirector/envelope.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/indirector' 4 | 5 | # Provide any attributes or functionality needed for indirected 6 | # instances. 7 | module Puppet::Indirector::Envelope 8 | attr_accessor :expiration 9 | 10 | def expired? 11 | expiration and expiration < Time.now 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /lib/puppet/indirector/errors.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/error' 4 | 5 | module Puppet::Indirector 6 | class ValidationError < Puppet::Error; end 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/indirector/facts/store_configs.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/node/facts' 4 | require_relative '../../../puppet/indirector/store_configs' 5 | 6 | class Puppet::Node::Facts::StoreConfigs < Puppet::Indirector::StoreConfigs 7 | desc 'Part of the "storeconfigs" feature. Should not be directly set by end users.' 8 | 9 | def allow_remote_requests? 10 | false 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /lib/puppet/indirector/file_content.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # A stub class, so our constants work. 4 | class Puppet::Indirector::FileContent # :nodoc: 5 | end 6 | 7 | require_relative '../../puppet/file_serving/content' 8 | -------------------------------------------------------------------------------- /lib/puppet/indirector/file_content/file.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/file_serving/content' 4 | require_relative '../../../puppet/indirector/file_content' 5 | require_relative '../../../puppet/indirector/direct_file_server' 6 | 7 | class Puppet::Indirector::FileContent::File < Puppet::Indirector::DirectFileServer 8 | desc "Retrieve file contents from disk." 9 | end 10 | -------------------------------------------------------------------------------- /lib/puppet/indirector/file_content/file_server.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/file_serving/content' 4 | require_relative '../../../puppet/indirector/file_content' 5 | require_relative '../../../puppet/indirector/file_server' 6 | 7 | class Puppet::Indirector::FileContent::FileServer < Puppet::Indirector::FileServer 8 | desc "Retrieve file contents using Puppet's fileserver." 9 | end 10 | -------------------------------------------------------------------------------- /lib/puppet/indirector/file_metadata.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # A stub class, so our constants work. 4 | class Puppet::Indirector::FileMetadata # :nodoc: 5 | end 6 | 7 | require_relative '../../puppet/file_serving/metadata' 8 | -------------------------------------------------------------------------------- /lib/puppet/indirector/file_metadata/file.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/file_serving/metadata' 4 | require_relative '../../../puppet/indirector/file_metadata' 5 | require_relative '../../../puppet/indirector/direct_file_server' 6 | 7 | class Puppet::Indirector::FileMetadata::File < Puppet::Indirector::DirectFileServer 8 | desc "Retrieve file metadata directly from the local filesystem." 9 | end 10 | -------------------------------------------------------------------------------- /lib/puppet/indirector/file_metadata/file_server.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/file_serving/metadata' 4 | require_relative '../../../puppet/indirector/file_metadata' 5 | require_relative '../../../puppet/indirector/file_server' 6 | 7 | class Puppet::Indirector::FileMetadata::FileServer < Puppet::Indirector::FileServer 8 | desc "Retrieve file metadata using Puppet's fileserver." 9 | end 10 | -------------------------------------------------------------------------------- /lib/puppet/indirector/generic_http.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/file_serving/terminus_helper' 4 | 5 | class Puppet::Indirector::GenericHttp < Puppet::Indirector::Terminus 6 | desc "Retrieve data from a remote HTTP server." 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/indirector/node/json.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/node' 4 | require_relative '../../../puppet/indirector/json' 5 | 6 | class Puppet::Node::Json < Puppet::Indirector::JSON 7 | desc "Store node information as flat files, serialized using JSON, 8 | or deserialize stored JSON nodes." 9 | end 10 | -------------------------------------------------------------------------------- /lib/puppet/indirector/node/msgpack.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/node' 4 | require_relative '../../../puppet/indirector/msgpack' 5 | 6 | class Puppet::Node::Msgpack < Puppet::Indirector::Msgpack 7 | desc "Store node information as flat files, serialized using MessagePack, 8 | or deserialize stored MessagePack nodes." 9 | end 10 | -------------------------------------------------------------------------------- /lib/puppet/indirector/node/store_configs.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/indirector/store_configs' 4 | require_relative '../../../puppet/node' 5 | 6 | class Puppet::Node::StoreConfigs < Puppet::Indirector::StoreConfigs 7 | desc 'Part of the "storeconfigs" feature. Should not be directly set by end users.' 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/indirector/node/yaml.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/node' 4 | require_relative '../../../puppet/indirector/yaml' 5 | 6 | class Puppet::Node::Yaml < Puppet::Indirector::Yaml 7 | desc "Store node information as flat files, serialized using YAML, 8 | or deserialize stored YAML nodes." 9 | end 10 | -------------------------------------------------------------------------------- /lib/puppet/indirector/none.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/indirector/terminus' 4 | 5 | # A none terminus type, meant to always return nil 6 | class Puppet::Indirector::None < Puppet::Indirector::Terminus 7 | def find(request) 8 | nil 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/indirector/plain.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/indirector/terminus' 4 | 5 | # An empty terminus type, meant to just return empty objects. 6 | class Puppet::Indirector::Plain < Puppet::Indirector::Terminus 7 | # Just return nothing. 8 | def find(request) 9 | indirection.model.new(request.key) 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /lib/puppet/indirector/report/msgpack.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/transaction/report' 4 | require_relative '../../../puppet/indirector/msgpack' 5 | 6 | class Puppet::Transaction::Report::Msgpack < Puppet::Indirector::Msgpack 7 | desc "Store last report as a flat file, serialized using MessagePack." 8 | 9 | # Force report to be saved there 10 | def path(name, ext = '.msgpack') 11 | Puppet[:lastrunreport] 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /lib/puppet/indirector/resource/validator.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Puppet::Resource::Validator 4 | def validate_key(request) 5 | type, title = request.key.split('/', 2) 6 | unless type.casecmp(request.instance.type).zero? and title == request.instance.title 7 | raise Puppet::Indirector::ValidationError, _("Resource instance does not match request key") 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/module_tool/errors.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/module_tool' 4 | 5 | module Puppet::ModuleTool 6 | module Errors 7 | require_relative 'errors/base' 8 | require_relative 'errors/installer' 9 | require_relative 'errors/uninstaller' 10 | require_relative 'errors/upgrader' 11 | require_relative 'errors/shared' 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /lib/puppet/network.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Just a stub, so we can correctly scope other classes. 4 | module Puppet::Network # :nodoc: 5 | end 6 | -------------------------------------------------------------------------------- /lib/puppet/network/authconfig.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Puppet 4 | class Network::AuthConfig 5 | def self.authprovider_class=(_) 6 | # legacy auth is not supported, ignore 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /lib/puppet/network/http/api/master.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../../puppet/network/http/api/server' 4 | 5 | Puppet::Network::HTTP::API::Master = Puppet::Network::HTTP::API::Server 6 | -------------------------------------------------------------------------------- /lib/puppet/network/http/api/master/v3.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../../../puppet/network/http/api/master' 4 | require_relative '../../../../../puppet/network/http/api/server/v3' 5 | -------------------------------------------------------------------------------- /lib/puppet/network/http/api/master/v3/environments.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../../../../puppet/network/http/api/master' 4 | require_relative '../../../../../../puppet/network/http/api/server/v3/environments' 5 | -------------------------------------------------------------------------------- /lib/puppet/network/http/api/server.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Puppet 4 | module Network 5 | module HTTP 6 | class API 7 | module Server 8 | end 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /lib/puppet/network/http/memory_response.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | class Puppet::Network::HTTP::MemoryResponse 4 | attr_reader :code, :type, :body 5 | 6 | def initialize 7 | @body = ''.dup 8 | end 9 | 10 | def respond_with(code, type, body) 11 | @code = code 12 | @type = type 13 | @body += body 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /lib/puppet/parser/ast/top_level_construct.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # The base class for AST nodes representing top level things: 4 | # hostclasses, definitions, and nodes. 5 | class Puppet::Parser::AST::TopLevelConstruct < Puppet::Parser::AST 6 | end 7 | -------------------------------------------------------------------------------- /lib/puppet/parser/functions/digest.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/util/checksums' 4 | Puppet::Parser::Functions.newfunction(:digest, :type => :rvalue, :arity => 1, :doc => "Returns a hash value from a provided string using the digest_algorithm setting from the Puppet config file.") do |args| 5 | algo = Puppet[:digest_algorithm] 6 | Puppet::Util::Checksums.method(algo.intern).call args[0] 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/parser/functions/fail.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | Puppet::Parser::Functions.newfunction( 4 | :fail, 5 | :arity => -1, 6 | :doc => <<~DOC 7 | Fail with a parse error. Any parameters will be stringified, 8 | concatenated, and passed to the exception-handler. 9 | DOC 10 | ) do |vals| 11 | vals = vals.collect(&:to_s).join(" ") if vals.is_a? Array 12 | raise Puppet::ParseError, vals.to_s 13 | end 14 | -------------------------------------------------------------------------------- /lib/puppet/parser/functions/md5.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'digest/md5' 4 | 5 | Puppet::Parser::Functions.newfunction(:md5, :type => :rvalue, :arity => 1, :doc => "Returns a MD5 hash value from a provided string.") do |args| 6 | Digest::MD5.hexdigest(args[0]) 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/parser/functions/sha1.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'digest/sha1' 4 | 5 | Puppet::Parser::Functions.newfunction(:sha1, :type => :rvalue, :arity => 1, :doc => "Returns a SHA1 hash value from a provided string.") do |args| 6 | Digest::SHA1.hexdigest(args[0]) 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/parser/functions/sha256.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'digest/sha2' 4 | 5 | Puppet::Parser::Functions.newfunction(:sha256, :type => :rvalue, :arity => 1, :doc => "Returns a SHA256 hash value from a provided string.") do |args| 6 | Digest::SHA256.hexdigest(args[0]) 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/plugins.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # The Puppet Plugins module defines extension points where plugins can be configured 4 | # to add or modify puppet's behavior. See the respective classes in this module for more 5 | # details. 6 | # 7 | # @api public 8 | # @since Puppet 4.0.0 9 | # 10 | module Puppet::Plugins 11 | end 12 | -------------------------------------------------------------------------------- /lib/puppet/pops/types/type_conversion_error.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Puppet::Pops::Types 4 | # Raised when a conversion of a value to another type failed. 5 | # 6 | class TypeConversionError < Puppet::Error; end 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/pops/visitable.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Visitable is a mix-in module that makes a class visitable by a Visitor 4 | module Puppet::Pops::Visitable 5 | def accept(visitor, *arguments) 6 | visitor.visit(self, *arguments) 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/property/boolean.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/coercion' 4 | 5 | class Puppet::Property::Boolean < Puppet::Property 6 | def unsafe_munge(value) 7 | Puppet::Coercion.boolean(value) 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /lib/puppet/provider/confine.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Confines have been moved out of the provider as they are also used for other things. 4 | # This provides backwards compatibility for people still including this old location. 5 | require_relative '../../puppet/provider' 6 | require_relative '../../puppet/confine' 7 | 8 | Puppet::Provider::Confine = Puppet::Confine 9 | -------------------------------------------------------------------------------- /lib/puppet/reports/log.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/reports' 4 | 5 | Puppet::Reports.register_report(:log) do 6 | desc "Send all received logs to the local log destinations. Usually 7 | the log destination is syslog." 8 | 9 | def process 10 | logs.each do |log| 11 | log.source = "//#{host}/#{log.source}" 12 | Puppet::Util::Log.newmessage(log) 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /lib/puppet/scheduler/timer.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Puppet::Scheduler 4 | class Timer 5 | def wait_for(seconds) 6 | if seconds > 0 7 | sleep(seconds) 8 | end 9 | end 10 | 11 | def now 12 | Time.now 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /lib/puppet/settings/array_setting.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | class Puppet::Settings::ArraySetting < Puppet::Settings::BaseSetting 4 | def type 5 | :array 6 | end 7 | 8 | def munge(value) 9 | case value 10 | when String 11 | value.split(/\s*,\s*/) 12 | when Array 13 | value 14 | else 15 | raise ArgumentError, _("Expected an Array or String, got a %{klass}") % { klass: value.class } 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /lib/puppet/settings/errors.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Exceptions for the settings module 4 | require_relative '../../puppet/error' 5 | 6 | class Puppet::Settings 7 | class SettingsError < Puppet::Error; end 8 | class ValidationError < SettingsError; end 9 | class InterpolationError < SettingsError; end 10 | 11 | class ParseError < SettingsError 12 | include Puppet::ExternalFileError 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /lib/puppet/settings/path_setting.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | class Puppet::Settings::PathSetting < Puppet::Settings::StringSetting 4 | def munge(value) 5 | if value.is_a?(String) 6 | value = value.split(File::PATH_SEPARATOR).map { |d| File.expand_path(d) }.join(File::PATH_SEPARATOR) 7 | end 8 | value 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/settings/string_setting.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | class Puppet::Settings::StringSetting < Puppet::Settings::BaseSetting 4 | def type 5 | :string 6 | end 7 | 8 | def validate(value) 9 | value.nil? or value.is_a?(String) 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /lib/puppet/settings/terminus_setting.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | class Puppet::Settings::TerminusSetting < Puppet::Settings::BaseSetting 4 | def munge(value) 5 | case value 6 | when '', nil 7 | nil 8 | when String 9 | value.intern 10 | when Symbol 11 | value 12 | else 13 | raise Puppet::Settings::ValidationError, _("Invalid terminus setting: %{value}") % { value: value } 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /lib/puppet/settings/value_translator.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Convert arguments into booleans, integers, or whatever. 4 | class Puppet::Settings::ValueTranslator 5 | def [](value) 6 | # Handle different data types correctly 7 | case value 8 | when /^false$/i; false 9 | when /^true$/i; true 10 | when true; true 11 | when false; false 12 | else 13 | value.gsub(/^["']|["']$/, '').sub(/\s+$/, '') 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /lib/puppet/syntax_checkers.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # A name space for syntax checkers provided by Puppet. 4 | module Puppet::SyntaxCheckers 5 | end 6 | -------------------------------------------------------------------------------- /lib/puppet/thread_local.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'concurrent' 4 | 5 | class Puppet::ThreadLocal < Concurrent::ThreadLocalVar 6 | end 7 | -------------------------------------------------------------------------------- /lib/puppet/util/at_fork/noop.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # A noop implementation of the Puppet::Util::AtFork handler 4 | class Puppet::Util::AtFork::Noop 5 | class << self 6 | def new 7 | # no need to instantiate every time, return the class object itself 8 | self 9 | end 10 | 11 | def prepare 12 | end 13 | 14 | def parent 15 | end 16 | 17 | def child 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /lib/puppet/util/http_proxy.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/http' 4 | 5 | # for backwards compatibility 6 | Puppet::Util::HttpProxy = Puppet::HTTP::Proxy 7 | -------------------------------------------------------------------------------- /lib/puppet/util/ldap.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Puppet::Util::Ldap 4 | end 5 | -------------------------------------------------------------------------------- /lib/puppet/util/libuser.conf: -------------------------------------------------------------------------------- 1 | [import] 2 | login_defs = /etc/login.defs 3 | default_useradd = /etc/default/useradd 4 | 5 | [defaults] 6 | crypt_style = md5 7 | modules = files shadow 8 | create_modules = files shadow 9 | 10 | [userdefaults] 11 | LU_USERNAME = %n 12 | LU_GIDNUMBER = %u 13 | 14 | [groupdefaults] 15 | LU_GROUPNAME = %n 16 | -------------------------------------------------------------------------------- /lib/puppet/util/libuser.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Puppet::Util::Libuser 4 | def self.getconf 5 | File.expand_path('libuser.conf', __dir__) 6 | end 7 | 8 | def self.getenv 9 | newenv = {} 10 | newenv['LIBUSER_CONF'] = getconf 11 | newenv 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /lib/puppet/util/limits.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util' 4 | 5 | module Puppet::Util::Limits 6 | # @api private 7 | def setpriority(priority) 8 | return unless priority 9 | 10 | Process.setpriority(0, Process.pid, priority) 11 | rescue Errno::EACCES, NotImplementedError 12 | Puppet.warning(_("Failed to set process priority to '%{priority}'") % { priority: priority }) 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /lib/puppet/util/network_device/transport.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../puppet/util/network_device' 4 | 5 | # stub 6 | module Puppet::Util::NetworkDevice::Transport 7 | end 8 | -------------------------------------------------------------------------------- /lib/puppet/util/package/version/range/eq.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../../../puppet/util/package/version/range/simple' 4 | 5 | module Puppet::Util::Package::Version 6 | class Range 7 | class Eq < Simple 8 | def to_s 9 | @version.to_s 10 | end 11 | 12 | def include?(version) 13 | version == @version 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /lib/puppet/util/package/version/range/gt.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../../../puppet/util/package/version/range/simple' 4 | 5 | module Puppet::Util::Package::Version 6 | class Range 7 | class Gt < Simple 8 | def to_s 9 | ">#{@version}" 10 | end 11 | 12 | def include?(version) 13 | version > @version 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /lib/puppet/util/package/version/range/gt_eq.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../../../puppet/util/package/version/range/simple' 4 | 5 | module Puppet::Util::Package::Version 6 | class Range 7 | class GtEq < Simple 8 | def to_s 9 | ">=#{@version}" 10 | end 11 | 12 | def include?(version) 13 | version >= @version 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /lib/puppet/util/package/version/range/lt.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../../../puppet/util/package/version/range/simple' 4 | 5 | module Puppet::Util::Package::Version 6 | class Range 7 | class Lt < Simple 8 | def to_s 9 | "<#{@version}" 10 | end 11 | 12 | def include?(version) 13 | version < @version 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /lib/puppet/util/package/version/range/lt_eq.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../../../puppet/util/package/version/range/simple' 4 | 5 | module Puppet::Util::Package::Version 6 | class Range 7 | class LtEq < Simple 8 | def to_s 9 | "<=#{@version}" 10 | end 11 | 12 | def include?(version) 13 | version <= @version 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /lib/puppet/util/package/version/range/simple.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../../../puppet/util/package/version/range' 4 | 5 | module Puppet::Util::Package::Version 6 | class Range 7 | class Simple 8 | def initialize(version) 9 | @version = version 10 | end 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../../../puppet/util/rdoc/parser/puppet_parser_core' 4 | 5 | module RDoc 6 | PUPPET_RDOC_VERSION = 2 7 | 8 | # @api private 9 | class PuppetParserRDoc2 < Parser 10 | include PuppetParserCore 11 | 12 | def create_rdoc_preprocess 13 | Markup::PreProcess.new(@input_file_name, @options.rdoc_include) 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /lib/puppet/util/skip_tags.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../../puppet/util/tagging' 4 | 5 | class Puppet::Util::SkipTags 6 | include Puppet::Util::Tagging 7 | 8 | def initialize(stags) 9 | self.tags = stags unless defined?(@tags) 10 | end 11 | 12 | def split_qualified_tags? 13 | false 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /lib/puppet/util/watcher/timer.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | class Puppet::Util::Watcher::Timer 4 | attr_reader :timeout 5 | 6 | def initialize(timeout) 7 | @timeout = timeout 8 | end 9 | 10 | def start 11 | @start_time = now 12 | end 13 | 14 | def expired? 15 | (now - @start_time) >= @timeout 16 | end 17 | 18 | def now 19 | Time.now.to_i 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /lib/puppet/util/windows/string.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Puppet 4 | module Util 5 | module Windows 6 | module String 7 | def wide_string(str) 8 | # if given a nil string, assume caller wants to pass a nil pointer to win32 9 | return nil if str.nil? 10 | 11 | str.encode('UTF-16LE') 12 | end 13 | module_function :wide_string 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /lib/puppet/vendor/require_vendored.rb: -------------------------------------------------------------------------------- 1 | # This adds upfront requirements on vendored code found under lib/vendor/x 2 | # Add one requirement per vendored package (or a comment if it is loaded on demand). 3 | 4 | # The vendored library 'rgen' is loaded on demand. 5 | -------------------------------------------------------------------------------- /lib/puppet/x509.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../puppet' 4 | require_relative '../puppet/ssl/openssl_loader' 5 | 6 | # Responsible for loading and saving certificates and private keys. 7 | # 8 | # @see Puppet::X509::CertProvider 9 | # @api private 10 | module Puppet::X509 11 | require_relative 'x509/pem_store' 12 | require_relative 'x509/cert_provider' 13 | end 14 | -------------------------------------------------------------------------------- /lib/puppet_pal.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Puppet as a Library "PAL" 4 | # This is the entry point when using PAL as a standalone library. 5 | # 6 | # This requires all of puppet because 'settings' and many other things are still required in PAL. 7 | # Eventually that will not be the case. 8 | # 9 | require_relative 'puppet' 10 | require_relative 'puppet/pal/pal_api' 11 | -------------------------------------------------------------------------------- /rakelib/references/configuration.erb: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | built_from_commit: <%= sha %> 4 | title: Configuration Reference 5 | toc: columns 6 | canonical: "/puppet/latest/configuration.html" 7 | --- 8 | 9 | # Configuration Reference 10 | 11 | > **NOTE:** This page was generated from the Puppet source code on <%= now %> 12 | 13 | <%= body %> 14 | -------------------------------------------------------------------------------- /rakelib/references/man.erb: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | built_from_commit: <%= sha %> 4 | title: '<%= title %>' 5 | canonical: "<%= canonical %>" 6 | --- 7 | 8 | # <%= title %> 9 | 10 | > **NOTE:** This page was generated from the OpenVox source code on <%= now %> 11 | 12 | <%= body %> 13 | -------------------------------------------------------------------------------- /rakelib/references/metaparameter.erb: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | built_from_commit: <%= sha %> 4 | title: Metaparameter Reference 5 | toc: columns 6 | canonical: "/puppet/latest/metaparameter.html" 7 | --- 8 | 9 | # Metaparameter Reference 10 | 11 | > **NOTE:** This page was generated from the Puppet source code on <%= now %> 12 | 13 | <%= body %> 14 | -------------------------------------------------------------------------------- /rakelib/references/report.erb: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | built_from_commit: <%= sha %> 4 | title: Report Reference 5 | toc: columns 6 | canonical: "/puppet/latest/report.html" 7 | --- 8 | 9 | # Report Reference 10 | 11 | > **NOTE:** This page was generated from the Puppet source code on <%= now %> 12 | 13 | <%= body %> 14 | -------------------------------------------------------------------------------- /rakelib/references/types/single_type.erb: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | built_from_commit: <%= sha %> 4 | title: '<%= title %>' 5 | canonical: "/puppet/latest/types/<%= type %>.html" 6 | --- 7 | 8 | # <%= title %> 9 | 10 | > **NOTE:** This page was generated from the Puppet source code on <%= now %> 11 | 12 | 13 | 14 | <%= body %> 15 | 16 | -------------------------------------------------------------------------------- /spec/fixtures/faulty_face/puppet/face/syntax.rb: -------------------------------------------------------------------------------- 1 | Puppet::Face.define(:syntax, '1.0.0') do 2 | action :foo do 3 | when_invoked do |whom| 4 | "hello, #{whom}" 5 | end 6 | # This 'end' is deliberately omitted, to induce a syntax error. 7 | # Please don't fix that, as it is used for testing. --daniel 2011-05-02 8 | end 9 | -------------------------------------------------------------------------------- /spec/fixtures/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :hierarchy: 3 | - %{test_suite} 4 | - spec_hiera 5 | :backends: 6 | - yaml 7 | - puppet 8 | :yaml: 9 | :datadir: './spec/fixtures' 10 | -------------------------------------------------------------------------------- /spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb: -------------------------------------------------------------------------------- 1 | Facter.add(:agent_spec_role) do 2 | setcode { 'web' } 3 | end 4 | -------------------------------------------------------------------------------- /spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:applytest).provide(:applytest) do 2 | end 3 | -------------------------------------------------------------------------------- /spec/fixtures/integration/application/module/environments/direnv/modules/nginx/README: -------------------------------------------------------------------------------- 1 | nginx 2 | 3 | This is the nginx module. 4 | -------------------------------------------------------------------------------- /spec/fixtures/integration/application/module/environments/direnv/modules/nginx/manifests/init.pp: -------------------------------------------------------------------------------- 1 | # Class: nginx 2 | # 3 | # This module manages nginx 4 | # 5 | # Parameters: 6 | # 7 | # Actions: 8 | # 9 | # Requires: 10 | # 11 | # Sample Usage: 12 | # 13 | # [Remember: No empty lines between comments and class definition] 14 | class nginx { 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile: -------------------------------------------------------------------------------- 1 | source ENV['GEM_SOURCE'] || "https://rubygems.org" 2 | 3 | gem 'gettext-setup', '~> 0.28', require: false, platforms: [:ruby] 4 | gem "rake" 5 | -------------------------------------------------------------------------------- /spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile: -------------------------------------------------------------------------------- 1 | spec = Gem::Specification.find_by_name 'gettext-setup' 2 | load "#{spec.gem_dir}/lib/tasks/gettext.rake" 3 | GettextSetup.initialize(File.absolute_path('locales', File.dirname(__FILE__))) 4 | -------------------------------------------------------------------------------- /spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:l10n) do 2 | dispatch :l10n_impl do 3 | end 4 | 5 | def l10n_impl 6 | _("IT'S HAPPY FUN TIME") 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "puppet-l10n", 3 | "version": "0.0.1", 4 | "author": "puppet", 5 | "source": "", 6 | "license": "Apache-2.0", 7 | "dependencies": [] 8 | } 9 | -------------------------------------------------------------------------------- /spec/fixtures/integration/node/environment/sitedir/00_a.pp: -------------------------------------------------------------------------------- 1 | class a {} 2 | $a = 10 -------------------------------------------------------------------------------- /spec/fixtures/integration/node/environment/sitedir/01_b.pp: -------------------------------------------------------------------------------- 1 | class b {} 2 | 3 | # if the files are evaluated in the wrong order, the file 'b' has a reference 4 | # to $a (set in file 'a') and with strict variable lookup should raise an error 5 | # and fail this test. 6 | $b = $a # error if $a not set in strict mode 7 | -------------------------------------------------------------------------------- /spec/fixtures/integration/node/environment/sitedir/03_empty.pp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/spec/fixtures/integration/node/environment/sitedir/03_empty.pp -------------------------------------------------------------------------------- /spec/fixtures/integration/node/environment/sitedir/04_include.pp: -------------------------------------------------------------------------------- 1 | include a, b 2 | notify { "variables": message => "a: $a, b: $b" } 3 | -------------------------------------------------------------------------------- /spec/fixtures/integration/node/environment/sitedir2/00_a.pp: -------------------------------------------------------------------------------- 1 | class a {} 2 | $a = 10 -------------------------------------------------------------------------------- /spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp: -------------------------------------------------------------------------------- 1 | class b {} 2 | 3 | # if the files are evaluated in the wrong order, the file 'b' has a reference 4 | # to $a (set in file 'a') and with strict variable lookup should raise an error 5 | # and fail this test. 6 | $b = $a # error if $a not set in strict mode 7 | -------------------------------------------------------------------------------- /spec/fixtures/integration/node/environment/sitedir2/03_c.pp: -------------------------------------------------------------------------------- 1 | $c = $a + $b -------------------------------------------------------------------------------- /spec/fixtures/integration/node/environment/sitedir2/04_include.pp: -------------------------------------------------------------------------------- 1 | include a, b 2 | notify { "variables": message => "a: $a, b: $b c: $c" } 3 | -------------------------------------------------------------------------------- /spec/fixtures/java.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/spec/fixtures/java.tgz -------------------------------------------------------------------------------- /spec/fixtures/manifests/site.pp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/spec/fixtures/manifests/site.pp -------------------------------------------------------------------------------- /spec/fixtures/module.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/spec/fixtures/module.tar.gz -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/Modulefile: -------------------------------------------------------------------------------- 1 | name 'jamtur01-apache' 2 | version '0.0.1' 3 | -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/lib/puppet/type/a2mod.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:a2mod) do 2 | @doc = "Manage Apache 2 modules" 3 | 4 | ensurable 5 | 6 | newparam(:name) do 7 | desc "The name of the module to be managed" 8 | 9 | isnamevar 10 | 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/manifests/dev.pp: -------------------------------------------------------------------------------- 1 | class apache::dev { 2 | include apache::params 3 | 4 | package{$apache::params::apache_dev: ensure => installed} 5 | } 6 | -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/manifests/php.pp: -------------------------------------------------------------------------------- 1 | class apache::php{ 2 | package{'libapache2-mod-php5': 3 | ensure => present, 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp: -------------------------------------------------------------------------------- 1 | class apache::ssl { 2 | include apache 3 | 4 | 5 | case $facts['os']['name'] { 6 | "centos": { 7 | package { $apache::params::ssl_package: 8 | require => Package['httpd'], 9 | } 10 | } 11 | "ubuntu": { 12 | a2mod { "ssl": ensure => present, } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/tests/apache.pp: -------------------------------------------------------------------------------- 1 | include apache 2 | -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/tests/dev.pp: -------------------------------------------------------------------------------- 1 | include apache::dev 2 | -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/tests/init.pp: -------------------------------------------------------------------------------- 1 | include apache 2 | -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/tests/php.pp: -------------------------------------------------------------------------------- 1 | include apache::php 2 | -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/tests/ssl.pp: -------------------------------------------------------------------------------- 1 | include apache::ssl 2 | -------------------------------------------------------------------------------- /spec/fixtures/releases/jamtur01-apache/tests/vhost.pp: -------------------------------------------------------------------------------- 1 | include apache 2 | apache::vhost { 'test.vhost': source => 'puppet:///modules/apache/test.vhost' } 3 | -------------------------------------------------------------------------------- /spec/fixtures/ssl/ec-key-openssl.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BggqhkjOPQMBBw== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MHcCAQEEIC1xD81Rha4nzXM4OrG/eLlh3KzmClXOUlOeE975dZ8loAoGCCqGSM49 6 | AwEHoUQDQgAEUFW3mhj/TNMWNrctybN7Dho5ro/437/9luPrrPqkP5ucfZ+ftClN 7 | 8yHzPyf4l770aFB0jf4r1BkdBmQ16fzE3g== 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /spec/fixtures/ssl/ec-key-pk8.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgrSK9I6zVGCuBNUcc 3 | J4KS6WOdfeE4SnfK02vhMzWXWl+hRANCAASh/nwXGgRbniDHt3fUKq6Odqokxqn3 4 | 62kj/zH0oSYC3eJIaEaw9kwYb1cSD9mHDlrisWSRFX66i/LrXGTKAVtd 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /spec/fixtures/ssl/trusted_oid_mapping.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | oid_mapping: 3 | '1.3.6.1.4.1.34380.1.2.1.1': 4 | shortname : 'myshortname' 5 | longname : 'Long name' 6 | -------------------------------------------------------------------------------- /spec/fixtures/stdlib.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/spec/fixtures/stdlib.tgz -------------------------------------------------------------------------------- /spec/fixtures/unit/application/environments/production/environment.conf: -------------------------------------------------------------------------------- 1 | environment_data_provider = 'hiera' -------------------------------------------------------------------------------- /spec/fixtures/unit/application/environments/production/manifests/site.pp: -------------------------------------------------------------------------------- 1 | $cx = ' C from site.pp' 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf: -------------------------------------------------------------------------------- 1 | environment_data_provider = 'function' 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/application/environments/puppet_func_provider/functions/environment/data.pp: -------------------------------------------------------------------------------- 1 | function environment::data() { 2 | { 3 | a => 'This is A', 4 | b => 'This is B', 5 | c => "This is ${if $cx == undef { 'C from data.pp' } else { $cx }}", 6 | lookup_options => { 7 | a => 'first' 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp: -------------------------------------------------------------------------------- 1 | $cx = 'C from site.pp' 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json: -------------------------------------------------------------------------------- 1 | { 2 | "test::param_a": "env data param_a is 10", 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf: -------------------------------------------------------------------------------- 1 | # Use the 'sample' env data provider (in this fixture) 2 | environment_data_provider=hiera 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: "bad" 5 | :backend: json 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp: -------------------------------------------------------------------------------- 1 | class test($param_a) { 2 | notify { "$param_a": } 3 | } 4 | 5 | include test 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | { 3 | one::test::param_c: env data param_c is 300 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf: -------------------------------------------------------------------------------- 1 | # Use the 'sample' env data provider (in this fixture) 2 | environment_data_provider=hiera 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: "bad" 5 | :backend: yaml 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp: -------------------------------------------------------------------------------- 1 | class test($param_a) { 2 | notify { "$param_a": } 3 | } 4 | 5 | include test 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | one::test::param_c: env data param_c is 300 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf: -------------------------------------------------------------------------------- 1 | # Use the 'sample' env data provider (in this fixture) 2 | environment_data_provider=hiera 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp: -------------------------------------------------------------------------------- 1 | include one::test 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | one::test::param_a: module data param_a is 100 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class one { 2 | class test($param_a = "param default is 100", $param_b = "param default is 200", $param_c = "param default is 300") { 3 | notify { "$param_a, $param_b, $param_c": } 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/one", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-one.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "hiera" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json: -------------------------------------------------------------------------------- 1 | { 2 | "test::param_a": "env data param_a is 10" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | test::param_b: env data param_b is 20 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json: -------------------------------------------------------------------------------- 1 | { 2 | "test::param_c": "env data param_c is 30" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | test::param_d: env data param_d is 40 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json: -------------------------------------------------------------------------------- 1 | { 2 | "test::param_json_utf8": "env data param_json_utf8 is ᚠᛇᚻ" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | test::param_yaml_utf8: env data param_yaml_utf8 is ᛫ᛒᛦ 3 | 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | test::param_e: env data param_e is 50 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf: -------------------------------------------------------------------------------- 1 | # Use the 'sample' env data provider (in this fixture) 2 | environment_data_provider=hiera 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp: -------------------------------------------------------------------------------- 1 | class test($param_a = 1, $param_b = 2, $param_c = 3, $param_d = 4, $param_e = 5, $param_yaml_utf8 = 'hi', $param_json_utf8 = 'hi') { 2 | notify { "$param_a, $param_b, $param_c, $param_d, $param_e, $param_yaml_utf8, $param_json_utf8": } 3 | } 4 | 5 | include test 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf: -------------------------------------------------------------------------------- 1 | # Use the 'sample' env data provider (in this fixture) 2 | environment_data_provider=hiera 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp: -------------------------------------------------------------------------------- 1 | include one::test 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/one", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-one.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "hiera" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | users::local: 3 | bob: 4 | name: Bob 5 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | users::local: 3 | bob: 4 | shell: /bin/zsh 5 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf: -------------------------------------------------------------------------------- 1 | # Use the 'sample' env data provider (in this fixture) 2 | environment_data_provider=hiera 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: "common" 5 | :backend: yaml 6 | - :name: "specific" 7 | :backend: yaml 8 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp: -------------------------------------------------------------------------------- 1 | include one::test 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json: -------------------------------------------------------------------------------- 1 | { 2 | "one::test::param_a": "module data param_a is 100" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml: -------------------------------------------------------------------------------- 1 | one::test::param_b: module data param_b is 200 2 | one::my_var: 'In name.yaml' -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json: -------------------------------------------------------------------------------- 1 | { 2 | "one::test::param_c": "module data param_c is 300" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server1.yaml: -------------------------------------------------------------------------------- 1 | one::my_var: 'server1' 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server2.yaml: -------------------------------------------------------------------------------- 1 | one::my_var: 'server2' 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | one::test::param_d: module data param_d is 400 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | one::test::param_e: module data param_e is 500 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class one { 2 | class test($param_a = "param default is 100", $param_b = "param default is 200", $param_c = "param default is 300", $param_d = "param default is 400", $param_e = "param default is 500") { 3 | notify { "$param_a, $param_b, $param_c, $param_d, $param_e": } 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/one", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-one.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "hiera" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | one::local: 3 | bob: 4 | name: Bob 5 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | one::local: 3 | bob: 4 | shell: /bin/zsh 5 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf: -------------------------------------------------------------------------------- 1 | # Use the 'sample' env data provider (in this fixture) 2 | environment_data_provider=hiera 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: "common" 5 | :backend: yaml 6 | - :name: "specific" 7 | :backend: yaml 8 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp: -------------------------------------------------------------------------------- 1 | include one::test 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | lookup_options: 3 | one::local: 4 | merge: 5 | strategy: "deep" 6 | merge_hash_arrays: true 7 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: "common" 5 | :backend: yaml 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class one($local={}) { 2 | } 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/one", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-one.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "hiera" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | lookup_options: 3 | two::arg: 4 | merge: unique -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: "common" 5 | :backend: yaml 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class two($arg=[]) { 2 | include one 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/two", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-two.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "hiera" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/production/environment.conf: -------------------------------------------------------------------------------- 1 | environment_timeout = 0 2 | environment_data_provider = 'function' -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/production/lib/puppet/functions/environment/data.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'environment::data') do 2 | def data() 3 | { 'abc::def::test1' => 'env_test1', 4 | 'abc::def::test2' => 'env_test2', 5 | 'xyz::def::test1' => 'env_test1', 6 | 'xyz::def::test2' => 'env_test2' 7 | } 8 | end 9 | end -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'abc::data') do 2 | def data() 3 | { 'abc::def::test1' => 'module_test1', 4 | 'abc::def::test2' => 'module_test2', 5 | 'abc::def::test3' => 'module_test3', 6 | 'abc::def::ipl' => '%{lookup("abc::def::test2")}-ipl' 7 | } 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class abc { 2 | include 'abc::def' 3 | } 4 | 5 | class abc::def ($test1, $test2, $test3, $ipl ) { 6 | notify { $test1: } 7 | notify { $test2: } 8 | notify { $test3: } 9 | notify { $ipl: } 10 | } 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/abc", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-abc.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "function" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/production/modules/xyz/functions/data.pp: -------------------------------------------------------------------------------- 1 | function xyz::data { 2 | { 'xyz::def::test1' => 'module_test1', 3 | 'xyz::def::test2' => 'module_test2', 4 | 'xyz::def::test3' => 'module_test3' 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/production/modules/xyz/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class xyz { 2 | include 'xyz::def' 3 | } 4 | 5 | class xyz::def ($test1, $test2, $test3) { 6 | notify { $test1: } 7 | notify { $test2: } 8 | notify { $test3: } 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/abc", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-abc.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "function" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/forge/bacula.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/spec/fixtures/unit/forge/bacula.tar.gz -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup/data/common.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | abc::a: global_a 3 | abc::c: 4 | - global_c 5 | 6 | abc::e: 7 | k1: global_e1 8 | 9 | abc::f: 10 | k1: 11 | s1: global_f11 12 | k2: 13 | s3: global_f23 14 | 15 | bca::e: 16 | k1: global_e1 17 | 18 | no_provider::e: 19 | k1: global_e1 20 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb: -------------------------------------------------------------------------------- 1 | class Hiera::Backend::Other_backend 2 | def lookup(key, scope, order_override, resolution_type, context) 3 | value = Hiera::Config[:other][key.to_sym] 4 | throw :no_such_key if value.nil? 5 | value 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/data/common.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | abc::a: global_a 3 | abc::c: 4 | - global_c 5 | 6 | abc::e: 7 | k1: global_e1 8 | 9 | abc::f: 10 | k1: 11 | s1: global_f11 12 | k2: 13 | s3: global_f23 14 | 15 | bca::e: 16 | k1: global_e1 17 | 18 | no_provider::e: 19 | k1: global_e1 20 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/environment.conf: -------------------------------------------------------------------------------- 1 | environment_timeout = 0 2 | environment_data_provider = 'function' 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/functions/abc/data.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'abc::data') do 2 | def data() 3 | { 'abc::b' => 'module_b', 4 | 'abc::c' => 'module_c', 5 | 'abc::e' => { 'k1' => 'module_e1', 'k2' => 'module_e2' }, 6 | 'abc::f' => { 'k1' => { 's1' => 'module_f11', 's3' => 'module_f13' }, 'k2' => { 's1' => 'module_f21', 's2' => 'module_f22' }}, 7 | } 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class abc { 2 | if $block != 'no_block_present' { 3 | $result = lookup(*$args) |$names| { if $block == true { $names } else { $block } } 4 | } 5 | else { 6 | $result = lookup(*$args) 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/abc", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-abc.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "function" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'bad_data::data') do 2 | def data() 3 | { 'b' => 'module_b', # Intentionally bad key (no module prefix) 4 | 'bad_data::c' => 'module_c' # Good key. Should be OK 5 | } 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class bad_data { 2 | } 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/bad_data", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-bad_data.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "function" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class bca { 2 | } 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/bca", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-bca.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "function" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: empty 5 | :backend: json 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class empty_json { 2 | } 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/empty_json", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-empty_json.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "hiera" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/data/empty_key.json: -------------------------------------------------------------------------------- 1 | { "empty_key_json::has_undef_value": null } 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: empty_key 5 | :backend: json 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class empty_key_json { 2 | } 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/empty_key_json", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-empty_key_json.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "hiera" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/data/empty_key.yaml: -------------------------------------------------------------------------------- 1 | empty_key_yaml::has_undef_value: ~ 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: empty_key 5 | :backend: yaml 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class empty_key_yaml { 2 | } 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/empty_key_yaml", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-empty_key_yaml.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "hiera" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/data/empty.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | empty_key: ~ 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: empty 5 | :backend: yaml 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class empty_yaml { 2 | } 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/empty_yaml", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-empty_yaml.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "hiera" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/data/first.json: -------------------------------------------------------------------------------- 1 | { 2 | "hieraprovider::test::param_a": "module data param_a is 100", 3 | "test::param_b": "module data param_a is 100" 4 | } 5 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/hiera.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | :version: 4 3 | :hierarchy: 4 | - :name: "two paths" 5 | :backend: json 6 | :paths: 7 | - "first" 8 | - "second_not_present" 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class hieraprovider { 2 | class test($param_a = "param default is 100") { 3 | notify { "$param_a": } 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/hieraprovider", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-hieraprovider.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "hiera" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class meta { 2 | $result = lookup(*$args) 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example/meta", 3 | "version": "0.0.2", 4 | "source": "git@github.com/example/example-meta.git", 5 | "dependencies": [], 6 | "author": "Bob the Builder", 7 | "license": "Apache-2.0", 8 | "data_provider": "function" 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/no_provider/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class no_provider { 2 | } 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/indirector/data_binding/hiera/global.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | integer: 3000 3 | string: 'apache' 4 | hash: 5 | user: 'Hightower' 6 | group: 'admin' 7 | mode: '0644' 8 | array: 9 | - '0.ntp.puppetlabs.com' 10 | - '1.ntp.puppetlabs.com' 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml: -------------------------------------------------------------------------------- 1 | { invalid: 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/indirector/hiera/global.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | integer: 3000 3 | string: 'apache' 4 | hash: 5 | user: 'Hightower' 6 | group: 'admin' 7 | mode: '0644' 8 | array: 9 | - '0.ntp.puppetlabs.com' 10 | - '1.ntp.puppetlabs.com' 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/indirector/hiera/invalid.yaml: -------------------------------------------------------------------------------- 1 | { invalid: 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class foo { 2 | create_resources('foo::wrongdefine', {'blah'=>{'one'=>'two'}}) 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp: -------------------------------------------------------------------------------- 1 | define foo::wrongdefine($one){ 2 | $foo = $one, 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/aliastest.pp: -------------------------------------------------------------------------------- 1 | file { "a file": 2 | path => "/tmp/aliastest", 3 | ensure => file 4 | } 5 | 6 | file { "another": 7 | path => "/tmp/aliastest2", 8 | ensure => file, 9 | require => File["a file"] 10 | } 11 | 12 | file { "a third": 13 | path => "/tmp/aliastest3", 14 | ensure => file, 15 | require => File["/tmp/aliastest"] 16 | } 17 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/append.pp: -------------------------------------------------------------------------------- 1 | $var=['/tmp/file1','/tmp/file2'] 2 | 3 | class arraytest { 4 | $var += ['/tmp/file3', '/tmp/file4'] 5 | file { 6 | $var: 7 | content => "test" 8 | } 9 | } 10 | 11 | include arraytest 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/argumentdefaults.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | define testargs($file, $mode = '0755') { 4 | file { $file: ensure => file, mode => $mode } 5 | } 6 | 7 | testargs { "testingname": 8 | file => "/tmp/argumenttest1" 9 | } 10 | 11 | testargs { "testingother": 12 | file => "/tmp/argumenttest2", 13 | mode => '0644' 14 | } 15 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/arithmetic_expression.pp: -------------------------------------------------------------------------------- 1 | 2 | $one = 1.30 3 | $two = 2.034e-2 4 | 5 | $result = ((( $two + 2) / $one) + 4 * 5.45) - (6 << 7) + (0x800 + -9) 6 | 7 | 8 | notice("result is $result == 1295.87692307692") 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp: -------------------------------------------------------------------------------- 1 | file { 2 | ["/tmp/arraytrailingcomma1","/tmp/arraytrailingcomma2", ]: content => "tmp" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/classheirarchy.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | class base { 4 | file { "/tmp/classheir1": ensure => file, mode => '0755' } 5 | } 6 | 7 | class sub1 inherits base { 8 | file { "/tmp/classheir2": ensure => file, mode => '0755' } 9 | } 10 | 11 | class sub2 inherits base { 12 | file { "/tmp/classheir3": ensure => file, mode => '0755' } 13 | } 14 | 15 | include sub1, sub2 16 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/classincludes.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | class base { 4 | file { "/tmp/classincludes1": ensure => file, mode => '0755' } 5 | } 6 | 7 | class sub1 inherits base { 8 | file { "/tmp/classincludes2": ensure => file, mode => '0755' } 9 | } 10 | 11 | class sub2 inherits base { 12 | file { "/tmp/classincludes3": ensure => file, mode => '0755' } 13 | } 14 | 15 | $sub = "sub2" 16 | 17 | include sub1, $sub 18 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/classpathtest.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | define mytype { 4 | file { "/tmp/classtest": ensure => file, mode => '0755' } 5 | } 6 | 7 | class testing { 8 | mytype { "componentname": } 9 | } 10 | 11 | include testing 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/collection.pp: -------------------------------------------------------------------------------- 1 | class one { 2 | @file { "/tmp/colltest1": content => "one" } 3 | @file { "/tmp/colltest2": content => "two" } 4 | } 5 | 6 | class two { 7 | File <| content == "one" |> 8 | } 9 | 10 | include one, two 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/collection_override.pp: -------------------------------------------------------------------------------- 1 | @file { 2 | "/tmp/collection": 3 | content => "whatever" 4 | } 5 | 6 | File<| |> { 7 | mode => '0600' 8 | } 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/componentmetaparams.pp: -------------------------------------------------------------------------------- 1 | file { "/tmp/component1": 2 | ensure => file 3 | } 4 | 5 | define thing { 6 | file { $name: ensure => file } 7 | } 8 | 9 | thing { "/tmp/component2": 10 | require => File["/tmp/component1"] 11 | } 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/componentrequire.pp: -------------------------------------------------------------------------------- 1 | define testfile($mode) { 2 | file { $name: mode => $mode, ensure => present } 3 | } 4 | 5 | testfile { "/tmp/testing_component_requires2": mode => '0755' } 6 | 7 | file { "/tmp/testing_component_requires1": mode => '0755', ensure => present, 8 | require => Testfile["/tmp/testing_component_requires2"] } 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/defineoverrides.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | $file = "/tmp/defineoverrides1" 4 | 5 | define myfile($mode) { 6 | file { $name: ensure => file, mode => $mode } 7 | } 8 | 9 | class base { 10 | myfile { $file: mode => '0644' } 11 | } 12 | 13 | class sub inherits base { 14 | Myfile[$file] { mode => '0755', } # test the end-comma 15 | } 16 | 17 | include sub 18 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/emptyclass.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | define component { 4 | } 5 | 6 | class testing { 7 | } 8 | 9 | include testing 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/emptyexec.pp: -------------------------------------------------------------------------------- 1 | exec { "touch /tmp/emptyexectest": 2 | path => "/usr/bin:/bin" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/emptyifelse.pp: -------------------------------------------------------------------------------- 1 | 2 | if false { 3 | } else { 4 | # nothing here 5 | } 6 | 7 | if true { 8 | # still nothing 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/falsevalues.pp: -------------------------------------------------------------------------------- 1 | $value = false 2 | 3 | file { "/tmp/falsevalues$value": ensure => file } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/filecreate.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | file { 4 | "/tmp/createatest": ensure => file, mode => '0755'; 5 | "/tmp/createbtest": ensure => file, mode => '0755' 6 | } 7 | 8 | file { 9 | "/tmp/createctest": ensure => file; 10 | "/tmp/createdtest": ensure => file; 11 | } 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/fqdefinition.pp: -------------------------------------------------------------------------------- 1 | define one::two($ensure) { 2 | file { "/tmp/fqdefinition": ensure => $ensure } 3 | } 4 | 5 | one::two { "/tmp/fqdefinition": ensure => file } 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/fqparents.pp: -------------------------------------------------------------------------------- 1 | class base { 2 | class one { 3 | file { "/tmp/fqparent1": ensure => file } 4 | } 5 | } 6 | 7 | class two::three inherits base::one { 8 | file { "/tmp/fqparent2": ensure => file } 9 | } 10 | 11 | include two::three 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/funccomma.pp: -------------------------------------------------------------------------------- 1 | @file { 2 | ["/tmp/funccomma1","/tmp/funccomma2"]: content => "1" 3 | } 4 | 5 | realize( File["/tmp/funccomma1"], File["/tmp/funccomma2"] , ) 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/ifexpression.pp: -------------------------------------------------------------------------------- 1 | $one = 1 2 | $two = 2 3 | 4 | if ($one < $two) and (($two < 3) or ($two == 2)) { 5 | notice("True!") 6 | } 7 | 8 | if "test regex" =~ /(.*) regex/ { 9 | file { 10 | "/tmp/${1}iftest": ensure => file, mode => '0755' 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/multilinecomments.pp: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | file { 4 | "/tmp/multilinecomments": content => "pouet" 5 | } 6 | */ 7 | 8 | /* and another one for #2333, the whitespace after the 9 | end comment is here on purpose */ 10 | 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/multipleclass.pp: -------------------------------------------------------------------------------- 1 | class one { 2 | file { "/tmp/multipleclassone": content => "one" } 3 | } 4 | 5 | class one { 6 | file { "/tmp/multipleclasstwo": content => "two" } 7 | } 8 | 9 | include one 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/multipleinstances.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | file { 4 | "/tmp/multipleinstancesa": ensure => file, mode => '0755'; 5 | "/tmp/multipleinstancesb": ensure => file, mode => '0755'; 6 | "/tmp/multipleinstancesc": ensure => file, mode => '0755'; 7 | } 8 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/multisubs.pp: -------------------------------------------------------------------------------- 1 | class base { 2 | file { "/tmp/multisubtest": content => "base", mode => '0644' } 3 | } 4 | 5 | class sub1 inherits base { 6 | File["/tmp/multisubtest"] { mode => '0755' } 7 | } 8 | 9 | class sub2 inherits base { 10 | File["/tmp/multisubtest"] { content => sub2 } 11 | } 12 | 13 | include sub1, sub2 14 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/namevartest.pp: -------------------------------------------------------------------------------- 1 | define filetest($mode, $ensure = file) { 2 | file { $name: 3 | mode => $mode, 4 | ensure => $ensure 5 | } 6 | } 7 | 8 | filetest { "/tmp/testfiletest": mode => '0644'} 9 | filetest { "/tmp/testdirtest": mode => '0755', ensure => directory} 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/scopetest.pp: -------------------------------------------------------------------------------- 1 | 2 | $mode = 640 3 | 4 | define thing { 5 | file { "/tmp/$name": ensure => file, mode => $mode } 6 | } 7 | 8 | class testing { 9 | $mode = 755 10 | thing {scopetest: } 11 | } 12 | 13 | include testing 14 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/simpledefaults.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | File { mode => '0755' } 4 | 5 | file { "/tmp/defaulttest": ensure => file } 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/singleary.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | file { "/tmp/singleary1": 4 | ensure => file 5 | } 6 | 7 | file { "/tmp/singleary2": 8 | ensure => file 9 | } 10 | 11 | file { "/tmp/singleary3": 12 | ensure => file, 13 | require => [File["/tmp/singleary1"], File["/tmp/singleary2"]] 14 | } 15 | 16 | file { "/tmp/singleary4": 17 | ensure => file, 18 | require => [File["/tmp/singleary1"]] 19 | } 20 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/singlequote.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | file { "/tmp/singlequote1": 4 | ensure => file, 5 | content => 'a $quote' 6 | } 7 | 8 | file { "/tmp/singlequote2": 9 | ensure => file, 10 | content => 'some "\yayness\"' 11 | } 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env puppet 2 | 3 | class one::fake { 4 | file { "/tmp/subclass_name_duplication1": ensure => present } 5 | } 6 | 7 | class two::fake { 8 | file { "/tmp/subclass_name_duplication2": ensure => present } 9 | } 10 | 11 | include one::fake, two::fake 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/parser/lexer/tag.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | $variable = value 4 | 5 | tag yayness, rahness 6 | 7 | tag booness, $variable 8 | 9 | file { "/tmp/settestingness": ensure => file } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 1 3 | layers: 4 | [{name: site, include: 'confdir:/confdirtest'}, 5 | {name: test, include: 'echo:/quick/brown/fox'}, 6 | {name: modules, include: ['module:/*::default'], exclude: 'module:/bad::default/' } 7 | ] 8 | extensions: 9 | scheme_handlers: 10 | echo: 'PuppetX::Awesome2::EchoSchemeHandler' 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb: -------------------------------------------------------------------------------- 1 | Puppet::Bindings.newbindings('confdirtest') do |scope| 2 | bind { 3 | name 'has_funny_hat' 4 | to 'the pope' 5 | } 6 | bind { 7 | name 'the_meaning_of_life' 8 | to 42 9 | } 10 | end -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb: -------------------------------------------------------------------------------- 1 | nil + nil + nil # broken on purpose, this file should never be loaded 2 | 3 | Puppet::Bindings.newbindings('bad::default') do |scope| 4 | nil + nil + nil # broken on purpose, this should never be evaluated 5 | end -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb: -------------------------------------------------------------------------------- 1 | Puppet::Bindings.newbindings('good::default') do |scope| 2 | bind { 3 | name 'the_meaning_of_life' 4 | to 300 5 | } 6 | end -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/binder/config/binder_config/nolayer/binder_config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 1 3 | categories: 4 | - ['node', '$fqn'] 5 | - ['environment', '$environment'] 6 | - ['common', 'true'] 7 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 1 3 | layers: 4 | - {name: site, include: 'confdir:/'} 5 | - {name: modules, include: 'module:/*::test/', exclude: 'module:/bad::test/' } 6 | categories: 7 | - ['node', '$fqn'] 8 | - ['environment', '$environment'] 9 | - ['common', 'true'] -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp: -------------------------------------------------------------------------------- 1 | function usee::usee_puppet() { 2 | "I'm the function usee::usee_puppet()" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/callee.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'usee::callee') do 2 | def callee(value) 3 | "usee::callee() was told '#{value}'" 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'usee::usee_ruby') do 2 | def usee_ruby() 3 | "I'm the function usee::usee_ruby()" 4 | end 5 | end 6 | 7 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:usee_type) do 2 | newparam(:name, :namevar => true) do 3 | desc 'An arbitrary name used as the identity of the resource.' 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp: -------------------------------------------------------------------------------- 1 | function usee_puppet_init() { 2 | "I'm the function usee::usee_puppet_init()" 3 | } 4 | 5 | type Usee::One = Integer[1,1] 6 | 7 | class usee { 8 | } 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp: -------------------------------------------------------------------------------- 1 | type Usee::Zero = Integer[0,0] 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'usee2::callee') do 2 | def callee(value) 3 | "usee2::callee() was told '#{value}'" 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp: -------------------------------------------------------------------------------- 1 | function user::puppet_calling_puppet () { 2 | usee::usee_puppet() 3 | } 4 | 5 | 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp: -------------------------------------------------------------------------------- 1 | function user::puppet_calling_puppet_init () { 2 | usee_puppet_init() 3 | } 4 | 5 | 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp: -------------------------------------------------------------------------------- 1 | function user::puppet_calling_ruby() { 2 | usee::usee_ruby() 3 | } 4 | 5 | 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'user::caller') do 2 | def caller() 3 | call_function('usee::callee', 'passed value') + " + I am user::caller()" 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'user::caller2') do 2 | def caller2() 3 | call_function('usee2::callee', 'passed value') + " + I am user::caller2()" 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'user::ruby_calling_puppet') do 2 | def ruby_calling_puppet() 3 | call_function('usee::usee_puppet') 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'user::ruby_calling_puppet_init') do 2 | def ruby_calling_puppet_init() 3 | call_function('usee_puppet_init') 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'user::ruby_calling_ruby') do 2 | def ruby_calling_ruby() 3 | call_function('usee::usee_ruby') 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-user", 3 | "author": "test", 4 | "description": "", 5 | "license": "", 6 | "source": "", 7 | "version": "1.0.0", 8 | "dependencies": [ 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp: -------------------------------------------------------------------------------- 1 | type User::WithUseeOne = Array[Usee::One] 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp: -------------------------------------------------------------------------------- 1 | type User::WithUseeZero = Array[Usee::Zero] 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb: -------------------------------------------------------------------------------- 1 | module Puppet::Parser::Functions 2 | newfunction(:bad_func_load, :type => :rvalue, :doc => <<-EOS 3 | A function using the 3x API 4 | EOS 5 | ) do |arguments| 6 | "the returned value" 7 | end 8 | 9 | def method_here_is_illegal() 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb: -------------------------------------------------------------------------------- 1 | module Puppet::Parser::Functions 2 | x = newfunction(:bad_func_load2, :type => :rvalue, :doc => <<-EOS 3 | A function using the 3x API 4 | EOS 5 | ) do |arguments| 6 | "some return value" 7 | end 8 | end 9 | def illegal_method_here 10 | end 11 | x 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb: -------------------------------------------------------------------------------- 1 | module Puppet::Parser::Functions 2 | newfunction(:bad_func_load3, :type => :rvalue, :doc => <<-EOS 3 | A function using the 3x API 4 | EOS 5 | ) do |arguments| 6 | def bad_func_load3_illegal_method 7 | "some return value from illegal method" 8 | end 9 | "some return value" 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb: -------------------------------------------------------------------------------- 1 | module Puppet::Parser::Functions 2 | newfunction(:bad_func_load4, :type => :rvalue, :doc => <<-EOS 3 | A function using the 3x API 4 | EOS 5 | ) do |arguments| 6 | def self.bad_func_load4_illegal_method 7 | "some return value from illegal method" 8 | end 9 | "some return value" 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb: -------------------------------------------------------------------------------- 1 | x = module Puppet::Parser::Functions 2 | newfunction(:bad_func_load5, :type => :rvalue, :doc => <<-EOS 3 | A function using the 3x API 4 | EOS 5 | ) do |arguments| 6 | "some return value" 7 | end 8 | end 9 | def self.bad_func_load5_illegal_method 10 | end 11 | # Attempt to get around problem of not returning what newfunction returns 12 | x 13 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee.rb: -------------------------------------------------------------------------------- 1 | module Puppet::Parser::Functions 2 | newfunction(:callee, :type => :rvalue, :doc => <<-EOS 3 | A function using the 3x API 4 | EOS 5 | ) do |arguments| 6 | "usee::callee() got '#{arguments[0]}'" 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee_ws.rb: -------------------------------------------------------------------------------- 1 | module Puppet::Parser::Functions 2 | newfunction(:callee_ws, :type => :rvalue, :doc => <<-EOS 3 | A function using the 3x API 4 | EOS 5 | ) do |arguments| 6 | "usee::callee_ws() got '#{self['passed_in_scope']}'" 7 | end 8 | end -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/func_with_syntax_error.rb: -------------------------------------------------------------------------------- 1 | module Puppet::Parser::Functions 2 | newfunction(:func_with_syntax_error, :type => :rvalue, :doc => <<-EOS 3 | A function using the 3x API having a syntax error 4 | EOS 5 | ) do |arguments| 6 | # this syntax error is here on purpose! 7 | 1+ + + + 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb: -------------------------------------------------------------------------------- 1 | module Puppet::Parser::Functions 2 | newfunction(:good_func_load, :type => :rvalue, :doc => <<-EOS 3 | A function using the 3x API 4 | EOS 5 | ) do |arguments| 6 | # This is not illegal 7 | Float("3.14") 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-usee", 3 | "author": "test", 4 | "description": "", 5 | "license": "", 6 | "source": "", 7 | "version": "1.0.0", 8 | "dependencies": [] 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcalled.pp: -------------------------------------------------------------------------------- 1 | function user::puppetcalled($who) { 2 | "Did you call to say you love $who?" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller.pp: -------------------------------------------------------------------------------- 1 | function user::puppetcaller { 2 | "${callee(first)} - ${callee(second)}" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller4.pp: -------------------------------------------------------------------------------- 1 | function user::puppetcaller4 { 2 | user::caller() 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'user::caller') do 2 | def caller() 3 | call_function('callee', 'first') + ' - ' + call_function('callee', 'second') 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/callingpuppet.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'user::callingpuppet') do 2 | def callingpuppet() 3 | call_function('user::puppetcalled', 'me') 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-user", 3 | "author": "test", 4 | "description": "", 5 | "license": "", 6 | "source": "", 7 | "version": "1.0.0", 8 | "dependencies": [{ "name": "test/usee" }] 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/functions/hello.pp: -------------------------------------------------------------------------------- 1 | function modulea::hello() { 2 | "modulea::hello()" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class modulea { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-modulea", 3 | "author": "test", 4 | "license": "", 5 | "project_page": "", 6 | "source": "", 7 | "summary": "", 8 | "version": "1.0.0", 9 | "dependencies": [] 10 | } 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp: -------------------------------------------------------------------------------- 1 | function bar() { 2 | $value_from_scope 3 | } 4 | 5 | class foo::bar { 6 | with(1) |$x| { notice $x } 7 | notify { bar(): } 8 | } 9 | 10 | include foo::bar 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/pp_resources/.resource_types/addlogic.pp: -------------------------------------------------------------------------------- 1 | $rname = 'addlogic' 2 | Puppet::Resource::ResourceType3.new($rname) -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/pp_resources/.resource_types/badcall.pp: -------------------------------------------------------------------------------- 1 | Integer.new(34) -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/pp_resources/.resource_types/empty.pp: -------------------------------------------------------------------------------- 1 | # Just some 2 | # comments 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/pp_resources/.resource_types/myresource.pp: -------------------------------------------------------------------------------- 1 | Puppet::Resource::ResourceType3.new('myresource', 2 | [Puppet::Resource::Param.new(String, 'myprop')], 3 | [Puppet::Resource::Param.new(String, 'myparam')] 4 | ) -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/pp_resources/.resource_types/wrongname.pp: -------------------------------------------------------------------------------- 1 | Puppet::Resource::ResourceType3.new('notwrongname') -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/hello.pp: -------------------------------------------------------------------------------- 1 | function modulea::hello() { 2 | "modulea::hello()" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/subspace/hello.pp: -------------------------------------------------------------------------------- 1 | function modulea::subspace::hello() { 2 | "modulea::subspace::hello()" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'modulea::rb_func_a') do 2 | def rb_func_a() 3 | "I am modulea::rb_func_a()" 4 | end 5 | end -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:rb_func_a) do 2 | def rb_func_a() 3 | "I am rb_func_a()" 4 | end 5 | end -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class modulea { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-modulea", 3 | "author": "test", 4 | "license": "", 5 | "project_page": "", 6 | "source": "", 7 | "summary": "", 8 | "version": "1.0.0", 9 | "dependencies": [] 10 | } 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:'moduleb::rb_func_b') do 2 | def rb_func_b() 3 | # Should be able to call modulea::rb_func_a() 4 | call_function('modulea::rb_func_a') + " + I am moduleb::rb_func_b()" 5 | end 6 | end -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp: -------------------------------------------------------------------------------- 1 | class moduleb { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/aliastest.pp: -------------------------------------------------------------------------------- 1 | file { "a file": 2 | path => "/tmp/aliastest", 3 | ensure => file 4 | } 5 | 6 | file { "another": 7 | path => "/tmp/aliastest2", 8 | ensure => file, 9 | require => File["a file"] 10 | } 11 | 12 | file { "a third": 13 | path => "/tmp/aliastest3", 14 | ensure => file, 15 | require => File["/tmp/aliastest"] 16 | } 17 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/append.pp: -------------------------------------------------------------------------------- 1 | $var=['/tmp/file1','/tmp/file2'] 2 | 3 | class arraytest { 4 | $var += ['/tmp/file3', '/tmp/file4'] 5 | file { 6 | $var: 7 | content => "test" 8 | } 9 | } 10 | 11 | include arraytest 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | define testargs($file, $mode = 755) { 4 | file { $file: ensure => file, mode => $mode } 5 | } 6 | 7 | testargs { "testingname": 8 | file => "/tmp/argumenttest1" 9 | } 10 | 11 | testargs { "testingother": 12 | file => "/tmp/argumenttest2", 13 | mode => '0644' 14 | } 15 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp: -------------------------------------------------------------------------------- 1 | 2 | $one = 1.30 3 | $two = 2.034e-2 4 | 5 | $result = ((( $two + 2) / $one) + 4 * 5.45) - (6 << 7) + (0x800 + -9) 6 | 7 | 8 | notice("result is $result == 1295.87692307692") 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp: -------------------------------------------------------------------------------- 1 | file { 2 | ["/tmp/arraytrailingcomma1","/tmp/arraytrailingcomma2", ]: content => "tmp" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | class base { 4 | file { "/tmp/classheir1": ensure => file, mode => '0755' } 5 | } 6 | 7 | class sub1 inherits base { 8 | file { "/tmp/classheir2": ensure => file, mode => '0755' } 9 | } 10 | 11 | class sub2 inherits base { 12 | file { "/tmp/classheir3": ensure => file, mode => '0755' } 13 | } 14 | 15 | include sub1, sub2 16 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/classincludes.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | class base { 4 | file { "/tmp/classincludes1": ensure => file, mode => '0755' } 5 | } 6 | 7 | class sub1 inherits base { 8 | file { "/tmp/classincludes2": ensure => file, mode => '0755' } 9 | } 10 | 11 | class sub2 inherits base { 12 | file { "/tmp/classincludes3": ensure => file, mode => '0755' } 13 | } 14 | 15 | $sub = "sub2" 16 | 17 | include sub1, $sub 18 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/classpathtest.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | define mytype { 4 | file { "/tmp/classtest": ensure => file, mode => '0755' } 5 | } 6 | 7 | class testing { 8 | mytype { "componentname": } 9 | } 10 | 11 | include testing 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/collection.pp: -------------------------------------------------------------------------------- 1 | class one { 2 | @file { "/tmp/colltest1": content => "one" } 3 | @file { "/tmp/colltest2": content => "two" } 4 | } 5 | 6 | class two { 7 | File <| content == "one" |> 8 | } 9 | 10 | include one, two 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/collection_override.pp: -------------------------------------------------------------------------------- 1 | @file { 2 | "/tmp/collection": 3 | content => "whatever" 4 | } 5 | 6 | File<| |> { 7 | mode => '0600' 8 | } 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp: -------------------------------------------------------------------------------- 1 | file { "/tmp/component1": 2 | ensure => file 3 | } 4 | 5 | define thing { 6 | file { $name: ensure => file } 7 | } 8 | 9 | thing { "/tmp/component2": 10 | require => File["/tmp/component1"] 11 | } 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/componentrequire.pp: -------------------------------------------------------------------------------- 1 | define testfile($mode) { 2 | file { $name: mode => $mode, ensure => present } 3 | } 4 | 5 | testfile { "/tmp/testing_component_requires2": mode => '0755' } 6 | 7 | file { "/tmp/testing_component_requires1": mode => '0755', ensure => present, 8 | require => Testfile["/tmp/testing_component_requires2"] } 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | $file = "/tmp/defineoverrides1" 4 | 5 | define myfile($mode) { 6 | file { $name: ensure => file, mode => $mode } 7 | } 8 | 9 | class base { 10 | myfile { $file: mode => '0644' } 11 | } 12 | 13 | class sub inherits base { 14 | Myfile[$file] { mode => '0755', } # test the end-comma 15 | } 16 | 17 | include sub 18 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/emptyclass.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | define component { 4 | } 5 | 6 | class testing { 7 | } 8 | 9 | include testing 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/emptyexec.pp: -------------------------------------------------------------------------------- 1 | exec { "touch /tmp/emptyexectest": 2 | path => "/usr/bin:/bin" 3 | } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp: -------------------------------------------------------------------------------- 1 | 2 | if false { 3 | } else { 4 | # nothing here 5 | } 6 | 7 | if true { 8 | # still nothing 9 | } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/falsevalues.pp: -------------------------------------------------------------------------------- 1 | $value = false 2 | 3 | file { "/tmp/falsevalues$value": ensure => file } 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/filecreate.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | file { 4 | "/tmp/createatest": ensure => file, mode => '0755'; 5 | "/tmp/createbtest": ensure => file, mode => '0755' 6 | } 7 | 8 | file { 9 | "/tmp/createctest": ensure => file; 10 | "/tmp/createdtest": ensure => file; 11 | } 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp: -------------------------------------------------------------------------------- 1 | define one::two($ensure) { 2 | file { "/tmp/fqdefinition": ensure => $ensure } 3 | } 4 | 5 | one::two { "/tmp/fqdefinition": ensure => file } 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/fqparents.pp: -------------------------------------------------------------------------------- 1 | class base { 2 | class one { 3 | file { "/tmp/fqparent1": ensure => file } 4 | } 5 | } 6 | 7 | class two::three inherits base::one { 8 | file { "/tmp/fqparent2": ensure => file } 9 | } 10 | 11 | include two::three 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/funccomma.pp: -------------------------------------------------------------------------------- 1 | @file { 2 | ["/tmp/funccomma1","/tmp/funccomma2"]: content => "1" 3 | } 4 | 5 | realize( File["/tmp/funccomma1"], File["/tmp/funccomma2"] , ) 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/ifexpression.pp: -------------------------------------------------------------------------------- 1 | $one = 1 2 | $two = 2 3 | 4 | if ($one < $two) and (($two < 3) or ($two == 2)) { 5 | notice("True!") 6 | } 7 | 8 | if "test regex" =~ /(.*) regex/ { 9 | file { 10 | "/tmp/${1}iftest": ensure => file, mode => '0755' 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | file { 4 | "/tmp/multilinecomments": content => "pouet" 5 | } 6 | */ 7 | 8 | /* and another one for #2333, the whitespace after the 9 | end comment is here on purpose */ 10 | 11 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/multipleclass.pp: -------------------------------------------------------------------------------- 1 | class one { 2 | file { "/tmp/multipleclassone": content => "one" } 3 | } 4 | 5 | class one { 6 | file { "/tmp/multipleclasstwo": content => "two" } 7 | } 8 | 9 | include one 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | file { 4 | "/tmp/multipleinstancesa": ensure => file, mode => '0755'; 5 | "/tmp/multipleinstancesb": ensure => file, mode => '0755'; 6 | "/tmp/multipleinstancesc": ensure => file, mode => '0755'; 7 | } 8 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/multisubs.pp: -------------------------------------------------------------------------------- 1 | class base { 2 | file { "/tmp/multisubtest": content => "base", mode => '0644' } 3 | } 4 | 5 | class sub1 inherits base { 6 | File["/tmp/multisubtest"] { mode => '0755' } 7 | } 8 | 9 | class sub2 inherits base { 10 | File["/tmp/multisubtest"] { content => sub2 } 11 | } 12 | 13 | include sub1, sub2 14 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/namevartest.pp: -------------------------------------------------------------------------------- 1 | define filetest($mode, $ensure = file) { 2 | file { $name: 3 | mode => $mode, 4 | ensure => $ensure 5 | } 6 | } 7 | 8 | filetest { "/tmp/testfiletest": mode => '0644'} 9 | filetest { "/tmp/testdirtest": mode => '0755', ensure => directory} 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/scopetest.pp: -------------------------------------------------------------------------------- 1 | 2 | $mode = 640 3 | 4 | define thing { 5 | file { "/tmp/$name": ensure => file, mode => $mode } 6 | } 7 | 8 | class testing { 9 | $mode = 755 10 | thing {scopetest: } 11 | } 12 | 13 | include testing 14 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | File { mode => '0755' } 4 | 5 | file { "/tmp/defaulttest": ensure => file } 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/singleary.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | file { "/tmp/singleary1": 4 | ensure => file 5 | } 6 | 7 | file { "/tmp/singleary2": 8 | ensure => file 9 | } 10 | 11 | file { "/tmp/singleary3": 12 | ensure => file, 13 | require => [File["/tmp/singleary1"], File["/tmp/singleary2"]] 14 | } 15 | 16 | file { "/tmp/singleary4": 17 | ensure => file, 18 | require => [File["/tmp/singleary1"]] 19 | } 20 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/singlequote.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | file { "/tmp/singlequote1": 4 | ensure => file, 5 | content => 'a $quote' 6 | } 7 | 8 | file { "/tmp/singlequote2": 9 | ensure => file, 10 | content => 'some "\yayness\"' 11 | } 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env puppet 2 | 3 | class one::fake { 4 | file { "/tmp/subclass_name_duplication1": ensure => present } 5 | } 6 | 7 | class two::fake { 8 | file { "/tmp/subclass_name_duplication2": ensure => present } 9 | } 10 | 11 | include one::fake, two::fake 12 | -------------------------------------------------------------------------------- /spec/fixtures/unit/pops/parser/lexer/tag.pp: -------------------------------------------------------------------------------- 1 | # $Id$ 2 | 3 | $variable = value 4 | 5 | tag yayness, rahness 6 | 7 | tag booness, $variable 8 | 9 | file { "/tmp/settestingness": ensure => file } 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_input.out: -------------------------------------------------------------------------------- 1 | root:0:system:system,bin,sys,security,cron,audit,lp:/:/usr/bin/ksh:root:general:true:false:false:true:true:system:nosak:ALL:0:SYSTEM:NONE:22:files:compat:0:0:false:0:0:-1:0:0:0:0:0:0:0:8:0:0:0:-1:-1:-1:-1:-1:-1:-1:1527849270:1533085305:ssh:ssh:fd8c#!:215d#!:178e#!:12#!:290#!:fa72#!:fab2#!:882:10.10.28.247:147:This is some comment I added 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/cron/crontab/vixie_header.txt: -------------------------------------------------------------------------------- 1 | # DO NOT EDIT THIS FILE - edit the master and reinstall. 2 | # (- installed on Thu Apr 12 12:16:01 2007) 3 | # (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $) 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/cron/parsed/managed: -------------------------------------------------------------------------------- 1 | # Puppet Name: real_job 2 | * * * * * /bin/true 3 | # Puppet Name: complex_job 4 | MAILTO=foo@example.com 5 | SHELL=/bin/sh 6 | @reboot /bin/true >> /dev/null 2>&1 7 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/cron/parsed/simple: -------------------------------------------------------------------------------- 1 | # use /bin/sh to run commands, no matter what /etc/passwd says 2 | SHELL=/bin/sh 3 | # mail any output to `paul', no matter whose crontab this is 4 | MAILTO=paul 5 | # 6 | # run five minutes after midnight, every day 7 | 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 8 | # run at 2:15pm on the first of every month -- output mailed to paul 9 | 15 14 1 * * $HOME/bin/monthly 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/gem/gem-list-single-package: -------------------------------------------------------------------------------- 1 | 2 | *** REMOTE GEMS *** 3 | 4 | bundler (1.6.2) 5 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/openbsd/pkginfo.query: -------------------------------------------------------------------------------- 1 | bash-3.1.17 GNU Bourne Again Shell 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list: -------------------------------------------------------------------------------- 1 | bash-3.1.17-static GNU Bourne Again Shell 2 | vim-7.0.42-no_x11 vi clone, many additional features 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkg/dummy_implicit_version: -------------------------------------------------------------------------------- 1 | pkg://solaris/dummy@1.0,5.11-0.151006:20140220T084443Z --- 2 | pkg://solaris/dummy@1.0,5.11-0.151006:20140219T191632Z --- 3 | pkg://solaris/dummy@1.0,5.11-0.151006:20140219T191204Z --- 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkg/dummy_solaris10: -------------------------------------------------------------------------------- 1 | pkg://solaris/dummy@2.5.5,5.10-0.111:20131230T130000Z installed ----- 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkg/dummy_solaris11.certificate_warning: -------------------------------------------------------------------------------- 1 | Certificate '/var/pkg/ssl/871b4ed0ade09926e6adf95f86bf17535f987684' for publisher 'solarisstudio', needed to access 'https://pkg.oracle.com/solarisstudio/release/', will expire in '29' days. 2 | pkg://solaris/dummy@1.0.6-0.175.0.0.0.2.537 i-- 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.installed: -------------------------------------------------------------------------------- 1 | pkg://solaris/dummy@1.0.6,5.11-0.175.0.0.0.2.537:20131230T130000Z i-- 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known: -------------------------------------------------------------------------------- 1 | pkg://solaris/dummy@1.0.6,5.11-0.175.0.0.0.2.537:20131230T130000Z --- 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed: -------------------------------------------------------------------------------- 1 | pkg://solaris/dummy@1.0.6,5.11-0.175.0.0.0.2.537:20131230T130000Z installed u---- 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known: -------------------------------------------------------------------------------- 1 | pkg://solaris/dummy@1.0.6,5.11-0.175.0.0.0.2.537:20131230T130000Z known u---- 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkg/incomplete: -------------------------------------------------------------------------------- 1 | pkg://solaris/dummy@2.5.5,5.11-0.111:20131230T130000Z installed ---- RANDOM_TRASH 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkg/solaris11: -------------------------------------------------------------------------------- 1 | pkg://solaris/dummy/dummy@3.0,5.11-0.175.0.0.0.2.537:20131230T130000Z i-- 2 | pkg://solaris/dummy/dummy2@1.8.1.2-0.175.0.0.0.2.537:20131230T130000Z i-- 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkgng/pkg.query: -------------------------------------------------------------------------------- 1 | ca_root_nss 3.15.3.1 security/ca_root_nss 2 | curl 7.33.0 ftp/curl 3 | gnupg 2.0.22 security/gnupg 4 | nmap 6.40 security/nmap 5 | pkg 1.2.4_1 ports-mgmt/pkg 6 | zsh 5.0.2_1 shells/zsh 7 | tac_plus F4.0.4.27a net/tac_plus4 8 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh: -------------------------------------------------------------------------------- 1 | zsh 5.0.2_1 shells/zsh 2 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/pkgng/pkg.version: -------------------------------------------------------------------------------- 1 | shells/bash-completion < needs updating (index has 2.1_3) 2 | ftp/curl < needs updating (index has 7.33.0_2) 3 | shells/zsh < needs updating (index has 5.0.4) 4 | sysutils/orphan ? orphaned: sysutils/orphan 5 | sysutils/broken ! Comparison failed 6 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/sun/dummy.server: -------------------------------------------------------------------------------- 1 | PKGINST: SUNWdummy 2 | NAME: Dummy server 3 | CATEGORY: system 4 | ARCH: i386 5 | VERSION: 11.11.0,REV=2010.10.12.04.23 6 | BASEDIR: / 7 | VENDOR: Oracle Corporation 8 | DESC: Dummy server (9.6.1-P3) 9 | INSTDATE: Nov 05 2010 09:14 10 | HOTLINE: Please contact your local service provider 11 | STATUS: completely installed 12 | 13 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/package/zypper/zypper-list-updates-empty.out: -------------------------------------------------------------------------------- 1 | Loading repository data... 2 | Reading installed packages... 3 | No updates found. 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/parsedfile/aliases.txt: -------------------------------------------------------------------------------- 1 | manager: root 2 | dumper: postmaster 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/parsedfile/simple.txt: -------------------------------------------------------------------------------- 1 | # This is a sample fixture for the parsedfile provider. 2 | # HEADER As added by software from a third party. 3 | # Another inconspicuous comment. 4 | A generic content line with: a value. 5 | A_second_line_with_no_spaces 6 | Qexample for bug PUP-4012 7 | Another line 8 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/service/openbsd/rcctl_getall: -------------------------------------------------------------------------------- 1 | accounting=NO 2 | pf=YES 3 | postgresql_flags=-l /var/postgresql/logfile 4 | tftpd_flags=/tftpboot 5 | wsmoused_flags=NO 6 | xdm_flags= 7 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/service/openrc/rcservice_list: -------------------------------------------------------------------------------- 1 | alsasound 2 | consolefont 3 | lvm-monitoring 4 | pydoc-2.7 5 | pydoc-3.2 6 | wpa_supplicant 7 | xdm 8 | xdm-setup 9 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/service/smf/svcs_fmri.out: -------------------------------------------------------------------------------- 1 | fmri svc:/application/tstapp:default 2 | name Dummy 3 | enabled false 4 | state disabled 5 | next_state none 6 | state_time July 26, 2018 11:57:49 AM PDT 7 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/service/smf/svcs_instances.out: -------------------------------------------------------------------------------- 1 | legacy_run lrc:/etc/rcS_d/S50sk98sol 2 | online svc:/system/svc/restarter:default 3 | maintenance svc:/network/cswrsyncd:default 4 | degraded svc:/network/dns/client:default 5 | -------------------------------------------------------------------------------- /spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out: -------------------------------------------------------------------------------- 1 | fmri svc:/application/tstapp:one 2 | name Dummy 3 | enabled false 4 | state disabled 5 | next_state none 6 | state_time July 26, 2018 11:57:49 AM PDT 7 | 8 | fmri svc:/application/tstapp:two 9 | name Dummy 10 | enabled false 11 | state disabled 12 | next_state none 13 | state_time July 26, 2018 11:57:49 AM PDT 14 | -------------------------------------------------------------------------------- /spec/fixtures/unit/reports/tagmail/tagmail_email.conf: -------------------------------------------------------------------------------- 1 | secure: user@domain.com 2 | 3 | -------------------------------------------------------------------------------- /spec/fixtures/unit/reports/tagmail/tagmail_failers.conf: -------------------------------------------------------------------------------- 1 | tag: 2 | : abuse@domain.com 3 | invalid!tag: abuse@domain.com 4 | -------------------------------------------------------------------------------- /spec/fixtures/unit/util/filetype/suntab_output: -------------------------------------------------------------------------------- 1 | #ident "@(#)root 1.19 98/07/06 SMI" /* SVr4.0 1.1.3.1 */ 2 | # 3 | # The root crontab should be used to perform accounting data collection. 4 | # 5 | # 6 | 10 3 * * * /usr/sbin/logadm 7 | 15 3 * * 0 /usr/lib/fs/nfs/nfsfind 8 | 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean 9 | #10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___ 10 | -------------------------------------------------------------------------------- /spec/fixtures/unit/util/rdoc/basic.pp: -------------------------------------------------------------------------------- 1 | # im a class 2 | class foo { 3 | file { '/tmp/foo' : 4 | ensure => present, 5 | } 6 | } 7 | 8 | # im a node 9 | node gar { 10 | } 11 | 12 | # im a define 13 | define baz { } 14 | 15 | # im a resource 16 | host { 'cow' : } 17 | -------------------------------------------------------------------------------- /spec/lib/puppet/face/1.0.0/huzzah.rb: -------------------------------------------------------------------------------- 1 | require 'puppet/face' 2 | Puppet::Face.define(:huzzah, '1.0.0') do 3 | copyright "Puppet Inc.", 2011 4 | license "Apache 2 license; see COPYING" 5 | summary "life is a thing for celebration" 6 | action(:obsolete_in_core) { when_invoked { |_| "you are in obsolete core now!" } } 7 | action(:call_newer) { when_invoked { |_| method_on_newer } } 8 | end 9 | -------------------------------------------------------------------------------- /spec/lib/puppet/face/huzzah.rb: -------------------------------------------------------------------------------- 1 | require 'puppet/face' 2 | Puppet::Face.define(:huzzah, '2.0.1') do 3 | copyright "Puppet Inc.", 2011 4 | license "Apache 2 license; see COPYING" 5 | summary "life is a thing for celebration" 6 | action(:bar) { when_invoked { |options| "is where beer comes from" } } 7 | action(:call_older) { when_invoked { |_| method_on_older } } 8 | end 9 | -------------------------------------------------------------------------------- /spec/lib/puppet/face/huzzah/obsolete.rb: -------------------------------------------------------------------------------- 1 | Puppet::Face.define(:huzzah, '1.0.0') do 2 | action :obsolete do 3 | summary "This is an action on version 1.0.0 of the face" 4 | when_invoked do |options| options end 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /spec/lib/puppet/indirector/indirector_testing/json.rb: -------------------------------------------------------------------------------- 1 | require 'puppet/indirector_testing' 2 | require 'puppet/indirector/json' 3 | 4 | class Puppet::IndirectorTesting::JSON < Puppet::Indirector::JSON 5 | desc "Testing the JSON indirector" 6 | end 7 | -------------------------------------------------------------------------------- /spec/lib/puppet/indirector/indirector_testing/memory.rb: -------------------------------------------------------------------------------- 1 | require 'puppet/indirector/memory' 2 | 3 | class Puppet::IndirectorTesting::Memory < Puppet::Indirector::Memory 4 | def supports_remote_requests? 5 | true 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /spec/lib/puppet/indirector/indirector_testing/msgpack.rb: -------------------------------------------------------------------------------- 1 | require 'puppet/indirector_testing' 2 | require 'puppet/indirector/msgpack' 3 | 4 | class Puppet::IndirectorTesting::Msgpack < Puppet::Indirector::Msgpack 5 | desc "Testing the MessagePack indirector" 6 | end 7 | -------------------------------------------------------------------------------- /spec/lib/puppet_spec/character_encoding.rb: -------------------------------------------------------------------------------- 1 | # A support module for testing character encoding 2 | module PuppetSpec::CharacterEncoding 3 | def self.with_external_encoding(encoding, &blk) 4 | original_encoding = Encoding.default_external 5 | begin 6 | Encoding.default_external = encoding 7 | yield 8 | ensure 9 | Encoding.default_external = original_encoding 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /spec/lib/puppet_spec/scope.rb: -------------------------------------------------------------------------------- 1 | module PuppetSpec::Scope 2 | # Initialize a new scope suitable for testing. 3 | # 4 | def create_test_scope_for_node(node_name) 5 | node = Puppet::Node.new(node_name) 6 | compiler = Puppet::Parser::Compiler.new(node) 7 | scope = Puppet::Parser::Scope.new(compiler) 8 | scope.source = Puppet::Resource::Type.new(:node, node_name) 9 | scope.parent = compiler.topscope 10 | scope 11 | end 12 | 13 | end 14 | -------------------------------------------------------------------------------- /spec/lib/puppet_spec/unindent.rb: -------------------------------------------------------------------------------- 1 | class String 2 | def unindent(left_padding = '') 3 | gsub(/^#{scan(/^\s*/).min_by{ |l| l.length }}/, left_padding) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/lib/puppet_spec/verbose.rb: -------------------------------------------------------------------------------- 1 | # Support code for running stuff with warnings disabled or enabled 2 | module Kernel 3 | def with_verbose_disabled 4 | verbose, $VERBOSE = $VERBOSE, nil 5 | begin 6 | yield 7 | ensure 8 | $VERBOSE = verbose 9 | end 10 | end 11 | 12 | def with_verbose_enabled 13 | verbose, $VERBOSE = $VERBOSE, true 14 | begin 15 | yield 16 | ensure 17 | $VERBOSE = verbose 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /spec/shared_behaviours/an_indirector_face.rb: -------------------------------------------------------------------------------- 1 | shared_examples_for "an indirector face" do 2 | [:find, :search, :save, :destroy, :info].each do |action| 3 | it { is_expected.to be_action action } 4 | it { is_expected.to respond_to action } 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /spec/unit/data_binding_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | require 'puppet/data_binding' 3 | 4 | describe Puppet::DataBinding do 5 | describe "when indirecting" do 6 | it "should default to the 'hiera' data_binding terminus" do 7 | Puppet::DataBinding.indirection.reset_terminus_class 8 | expect(Puppet::DataBinding.indirection.terminus_class).to eq(:hiera) 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /spec/unit/face_spec.rb: -------------------------------------------------------------------------------- 1 | # You should look at interface_spec.rb 2 | -------------------------------------------------------------------------------- /spec/unit/indirector/file_content/selector_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | require 'puppet/indirector/file_content/selector' 4 | 5 | describe Puppet::Indirector::FileContent::Selector do 6 | include PuppetSpec::Files 7 | 8 | it_should_behave_like "Puppet::FileServing::Files", :file_content 9 | end 10 | -------------------------------------------------------------------------------- /spec/unit/indirector/file_metadata/selector_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | require 'puppet/indirector/file_metadata/selector' 4 | 5 | describe Puppet::Indirector::FileMetadata::Selector do 6 | include PuppetSpec::Files 7 | 8 | it_should_behave_like "Puppet::FileServing::Files", :file_metadata 9 | end 10 | 11 | -------------------------------------------------------------------------------- /spec/unit/network/authconfig_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | require 'puppet/network/authconfig' 3 | 4 | describe Puppet::Network::AuthConfig do 5 | it "accepts an auth provider class" do 6 | Puppet::Network::AuthConfig.authprovider_class = Object 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /spec/unit/network/authorization_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | require 'puppet/network/authorization' 3 | 4 | describe Puppet::Network::Authorization do 5 | it "accepts an auth config loader class" do 6 | Puppet::Network::Authorization.authconfigloader_class = Object 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /spec/unit/parser/functions/hiera_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | require 'puppet_spec/scope' 3 | 4 | describe 'Puppet::Parser::Functions#hiera' do 5 | include PuppetSpec::Scope 6 | 7 | let :scope do create_test_scope_for_node('foo') end 8 | 9 | it 'should raise an error since this function is converted to 4x API)' do 10 | expect { scope.function_hiera(['key']) }.to raise_error(Puppet::ParseError, /can only be called using the 4.x function API/) 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /spec/unit/pops/containment_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVoxProject/puppet/58ad649671153adb975d382bcca51d66331f42a7/spec/unit/pops/containment_spec.rb -------------------------------------------------------------------------------- /spec/unit/pops/parser/parser_rspec_helper.rb: -------------------------------------------------------------------------------- 1 | require 'puppet/pops' 2 | 3 | require File.join(File.dirname(__FILE__), '/../factory_rspec_helper') 4 | 5 | module ParserRspecHelper 6 | include FactoryRspecHelper 7 | 8 | def parse(code) 9 | parser = Puppet::Pops::Parser::Parser.new() 10 | parser.parse_string(code) 11 | end 12 | 13 | def parse_epp(code) 14 | parser = Puppet::Pops::Parser::EppParser.new() 15 | parser.parse_string(code) 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /spec/unit/pops/time/timestamp_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | require 'puppet/pops' 3 | 4 | module Puppet::Pops 5 | module Time 6 | describe 'Timestamp' do 7 | it 'Does not loose microsecond precision when converted to/from String' do 8 | ts = Timestamp.new(1495789430910161286) 9 | expect(Timestamp.parse(ts.to_s)).to eql(ts) 10 | end 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /spec/unit/pops/types/class_loader_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | require 'puppet/pops' 3 | 4 | describe 'the Puppet::Pops::Types::ClassLoader' do 5 | it 'should produce path alternatives for CamelCase classes' do 6 | expected_paths = ['puppet_x/some_thing', 'puppetx/something'] 7 | # path_for_name method is private 8 | expect(Puppet::Pops::Types::ClassLoader.send(:paths_for_name, ['PuppetX', 'SomeThing'])).to include(*expected_paths) 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /spec/unit/property/ensure_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | require 'puppet/property/ensure' 4 | 5 | klass = Puppet::Property::Ensure 6 | 7 | describe klass do 8 | it "should be a subclass of Property" do 9 | expect(klass.superclass).to eq(Puppet::Property) 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /spec/unit/provider/README.markdown: -------------------------------------------------------------------------------- 1 | Provider Specs 2 | ============== 3 | 4 | Define specs for your providers under this directory. 5 | -------------------------------------------------------------------------------- /spec/unit/puppet_pal_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | require 'puppet_spec/files' 3 | require_relative 'puppet_pal_2pec' 4 | -------------------------------------------------------------------------------- /spec/unit/type/README.markdown: -------------------------------------------------------------------------------- 1 | Resource Type Specs 2 | =================== 3 | 4 | Define specs for your resource types in this directory. 5 | -------------------------------------------------------------------------------- /spec/unit/type/stage_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe Puppet::Type.type(:stage) do 4 | it "should have a 'name' parameter'" do 5 | expect(Puppet::Type.type(:stage).new(:name => :foo)[:name]).to eq(:foo) 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /spec/unit/type/whit_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | whit = Puppet::Type.type(:whit) 4 | 5 | describe whit do 6 | it "should stringify in a way that users will regognise" do 7 | expect(whit.new(:name => "Foo::Bar").to_s).to eq("Foo::Bar") 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/unit/util/skip_tags_spec.rb: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | require 'spec_helper' 3 | 4 | require 'puppet/util/skip_tags' 5 | 6 | describe Puppet::Util::SkipTags do 7 | let(:tagger) { Puppet::Util::SkipTags.new([]) } 8 | 9 | it "should add qualified classes as single tags" do 10 | tagger.tag("one::two::three") 11 | expect(tagger.tags).to include("one::two::three") 12 | expect(tagger.tags).not_to include("one", "two", "three") 13 | end 14 | end 15 | --------------------------------------------------------------------------------