puppet 5.4.0 → 5.5.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/Gemfile +3 -3
- data/MAINTAINERS +0 -19
- data/README.md +5 -5
- data/Rakefile +26 -0
- data/conf/auth.conf +5 -0
- data/ext/project_data.yaml +1 -0
- data/ext/regexp_nodes/regexp_nodes.rb +3 -4
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/application/cert.rb +3 -1
- data/lib/puppet/application/device.rb +100 -13
- data/lib/puppet/application/facts.rb +5 -0
- data/lib/puppet/application/lookup.rb +12 -2
- data/lib/puppet/configurer.rb +37 -17
- data/lib/puppet/confine.rb +4 -1
- data/lib/puppet/datatypes.rb +1 -1
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/error.rb +6 -3
- data/lib/puppet/external/dot.rb +0 -7
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/face/config.rb +92 -10
- data/lib/puppet/face/epp.rb +31 -6
- data/lib/puppet/face/facts.rb +49 -0
- data/lib/puppet/face/help.rb +33 -35
- data/lib/puppet/face/help/action.erb +1 -1
- data/lib/puppet/face/help/face.erb +1 -1
- data/lib/puppet/face/man.rb +55 -12
- data/lib/puppet/face/parser.rb +30 -3
- data/lib/puppet/file_bucket/file.rb +0 -2
- data/lib/puppet/file_serving/base.rb +10 -10
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/forge/errors.rb +3 -3
- data/lib/puppet/functions.rb +1 -3
- data/lib/puppet/functions/alert.rb +1 -1
- data/lib/puppet/functions/all.rb +6 -6
- data/lib/puppet/functions/annotate.rb +10 -10
- data/lib/puppet/functions/any.rb +6 -6
- data/lib/puppet/functions/assert_type.rb +4 -4
- data/lib/puppet/functions/binary_file.rb +14 -2
- data/lib/puppet/functions/break.rb +31 -2
- data/lib/puppet/functions/call.rb +4 -4
- data/lib/puppet/functions/contain.rb +19 -3
- data/lib/puppet/functions/convert_to.rb +6 -5
- data/lib/puppet/functions/crit.rb +1 -1
- data/lib/puppet/functions/debug.rb +1 -1
- data/lib/puppet/functions/defined.rb +11 -9
- data/lib/puppet/functions/dig.rb +26 -2
- data/lib/puppet/functions/each.rb +8 -8
- data/lib/puppet/functions/emerg.rb +1 -1
- data/lib/puppet/functions/empty.rb +79 -0
- data/lib/puppet/functions/err.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +3 -1
- data/lib/puppet/functions/filter.rb +7 -7
- data/lib/puppet/functions/find_file.rb +15 -1
- data/lib/puppet/functions/flatten.rb +64 -0
- data/lib/puppet/functions/hiera.rb +6 -6
- data/lib/puppet/functions/hiera_array.rb +6 -6
- data/lib/puppet/functions/hiera_hash.rb +6 -6
- data/lib/puppet/functions/hiera_include.rb +8 -8
- data/lib/puppet/functions/include.rb +28 -2
- data/lib/puppet/functions/info.rb +1 -1
- data/lib/puppet/functions/inline_epp.rb +2 -2
- data/lib/puppet/functions/join.rb +56 -0
- data/lib/puppet/functions/json_data.rb +2 -2
- data/lib/puppet/functions/keys.rb +25 -0
- data/lib/puppet/functions/length.rb +44 -0
- data/lib/puppet/functions/lest.rb +39 -1
- data/lib/puppet/functions/lookup.rb +2 -1
- data/lib/puppet/functions/map.rb +10 -9
- data/lib/puppet/functions/match.rb +6 -6
- data/lib/puppet/functions/new.rb +995 -2
- data/lib/puppet/functions/next.rb +1 -1
- data/lib/puppet/functions/notice.rb +1 -1
- data/lib/puppet/functions/reduce.rb +6 -6
- data/lib/puppet/functions/regsubst.rb +9 -3
- data/lib/puppet/functions/require.rb +36 -2
- data/lib/puppet/functions/return.rb +1 -1
- data/lib/puppet/functions/reverse_each.rb +71 -2
- data/lib/puppet/functions/slice.rb +23 -9
- data/lib/puppet/functions/split.rb +12 -10
- data/lib/puppet/functions/step.rb +73 -1
- data/lib/puppet/functions/strftime.rb +176 -2
- data/lib/puppet/functions/then.rb +65 -2
- data/lib/puppet/functions/tree_each.rb +19 -19
- data/lib/puppet/functions/type.rb +42 -1
- data/lib/puppet/functions/unique.rb +13 -13
- data/lib/puppet/functions/unwrap.rb +8 -4
- data/lib/puppet/functions/values.rb +25 -0
- data/lib/puppet/functions/versioncmp.rb +1 -1
- data/lib/puppet/functions/warning.rb +1 -1
- data/lib/puppet/functions/with.rb +6 -4
- data/lib/puppet/functions/yaml_data.rb +3 -1
- data/lib/puppet/indirector/certificate_status/file.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +1 -3
- data/lib/puppet/indirector/facts/rest.rb +21 -0
- data/lib/puppet/indirector/facts/yaml.rb +0 -4
- data/lib/puppet/indirector/rest.rb +2 -2
- data/lib/puppet/module.rb +3 -3
- data/lib/puppet/module/task.rb +2 -3
- data/lib/puppet/module_tool/applications/application.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +2 -2
- data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
- data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +3 -3
- data/lib/puppet/network/authconfig.rb +1 -1
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +5 -7
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -0
- data/lib/puppet/network/http/api/master/v3/environment.rb +2 -2
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
- data/lib/puppet/network/http/error.rb +3 -3
- data/lib/puppet/network/resolver.rb +1 -2
- data/lib/puppet/parser/compiler.rb +12 -5
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +15 -4
- data/lib/puppet/parser/functions/new.rb +31 -46
- data/lib/puppet/parser/parser_factory.rb +1 -1
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +11 -11
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +5 -2
- data/lib/puppet/pops/functions/dispatch.rb +1 -1
- data/lib/puppet/pops/issue_reporter.rb +18 -1
- data/lib/puppet/pops/issues.rb +6 -3
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -2
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
- data/lib/puppet/pops/loader/task_instantiator.rb +5 -5
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -1
- data/lib/puppet/pops/loaders.rb +18 -7
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +55 -6
- data/lib/puppet/pops/model/factory.rb +6 -3
- data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
- data/lib/puppet/pops/model/pn_transformer.rb +400 -0
- data/lib/puppet/pops/parser/egrammar.ra +1 -1
- data/lib/puppet/pops/parser/eparser.rb +1 -1
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/lexer_support.rb +3 -2
- data/lib/puppet/pops/parser/locator.rb +0 -2
- data/lib/puppet/pops/parser/pn_parser.rb +316 -0
- data/lib/puppet/pops/pcore.rb +17 -17
- data/lib/puppet/pops/pn.rb +236 -0
- data/lib/puppet/pops/serialization/json.rb +7 -7
- data/lib/puppet/pops/types/class_loader.rb +6 -3
- data/lib/puppet/pops/types/implementation_registry.rb +28 -35
- data/lib/puppet/pops/types/p_object_type.rb +3 -3
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +24 -1
- data/lib/puppet/pops/types/ruby_generator.rb +3 -4
- data/lib/puppet/pops/types/type_calculator.rb +1 -1
- data/lib/puppet/pops/types/type_factory.rb +0 -4
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/type_parser.rb +14 -7
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/pops/utils.rb +2 -2
- data/lib/puppet/pops/validation/checker4_0.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +3 -1
- data/lib/puppet/provider/group/windows_adsi.rb +4 -7
- data/lib/puppet/provider/nameservice.rb +3 -3
- data/lib/puppet/provider/package/pacman.rb +4 -4
- data/lib/puppet/provider/package/pip.rb +3 -3
- data/lib/puppet/provider/package/pkgdmg.rb +3 -3
- data/lib/puppet/provider/package/pkgutil.rb +2 -2
- data/lib/puppet/provider/package/portage.rb +9 -9
- data/lib/puppet/provider/package/zypper.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -2
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +6 -2
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +20 -9
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/type.rb +11 -11
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/capability_finder.rb +5 -5
- data/lib/puppet/resource/catalog.rb +6 -3
- data/lib/puppet/resource/status.rb +9 -2
- data/lib/puppet/resource/type.rb +1 -1
- data/lib/puppet/settings.rb +31 -19
- data/lib/puppet/settings/base_setting.rb +5 -0
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/ttl_setting.rb +5 -0
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/certificate_request.rb +0 -2
- data/lib/puppet/syntax_checkers/json.rb +1 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
- data/lib/puppet/transaction/event.rb +1 -1
- data/lib/puppet/transaction/report.rb +18 -12
- data/lib/puppet/type.rb +9 -13
- data/lib/puppet/type/augeas.rb +2 -2
- data/lib/puppet/type/cron.rb +11 -6
- data/lib/puppet/type/exec.rb +1 -1
- data/lib/puppet/type/file.rb +4 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/k5login.rb +30 -54
- data/lib/puppet/type/package.rb +3 -3
- data/lib/puppet/type/schedule.rb +12 -12
- data/lib/puppet/type/scheduled_task.rb +2 -2
- data/lib/puppet/type/ssh_authorized_key.rb +5 -5
- data/lib/puppet/type/sshkey.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +26 -5
- data/lib/puppet/util.rb +0 -4
- data/lib/puppet/util/backups.rb +1 -1
- data/lib/puppet/util/inifile.rb +3 -4
- data/lib/puppet/util/json.rb +68 -0
- data/lib/puppet/util/json_lockfile.rb +3 -3
- data/lib/puppet/util/log.rb +2 -5
- data/lib/puppet/util/log/destinations.rb +2 -2
- data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
- data/lib/puppet/util/plist.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -8
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/warnings.rb +0 -2
- data/lib/puppet/util/windows/adsi.rb +15 -18
- data/lib/puppet/util/windows/com.rb +2 -1
- data/lib/puppet/util/windows/file.rb +2 -2
- data/lib/puppet/util/windows/principal.rb +7 -6
- data/lib/puppet/util/windows/sid.rb +60 -7
- data/lib/puppet/util/windows/taskscheduler.rb +0 -9
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +53 -48
- data/locales/ja/puppet.po +1357 -912
- data/locales/puppet.pot +549 -466
- data/man/man5/puppet.conf.5 +103 -20
- data/man/man8/puppet-agent.8 +6 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.8 +1 -1
- data/man/man8/puppet-config.8 +35 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +33 -11
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +34 -12
- data/man/man8/puppet-facts.8 +50 -1
- data/man/man8/puppet-filebucket.8 +38 -11
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +10 -4
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +15 -6
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +31 -8
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +67 -0
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +3 -3
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
- data/spec/integration/application/apply_spec.rb +15 -15
- data/spec/integration/application/lookup_spec.rb +21 -0
- data/spec/integration/faces/config_spec.rb +16 -4
- data/spec/integration/network/http/api/indirected_routes_spec.rb +5 -5
- data/spec/integration/parser/catalog_spec.rb +1 -1
- data/spec/integration/parser/collection_spec.rb +2 -2
- data/spec/integration/parser/compiler_spec.rb +17 -18
- data/spec/integration/parser/pcore_resource_spec.rb +2 -2
- data/spec/integration/parser/scope_spec.rb +2 -2
- data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
- data/spec/integration/ssl/key_spec.rb +1 -1
- data/spec/integration/transaction/report_spec.rb +3 -3
- data/spec/integration/transaction_spec.rb +0 -1
- data/spec/integration/type/file_spec.rb +10 -11
- data/spec/integration/type_spec.rb +1 -2
- data/spec/integration/util/windows/adsi_spec.rb +86 -1
- data/spec/integration/util/windows/principal_spec.rb +11 -2
- data/spec/integration/util/windows/security_spec.rb +2 -2
- data/spec/lib/matchers/json.rb +4 -4
- data/spec/lib/puppet_spec/language.rb +34 -35
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/shared_behaviours/file_server_terminus.rb +0 -2
- data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/application/cert_spec.rb +21 -9
- data/spec/unit/application/device_spec.rb +96 -2
- data/spec/unit/application/face_base_spec.rb +2 -2
- data/spec/unit/application/lookup_spec.rb +0 -1
- data/spec/unit/configurer_spec.rb +14 -0
- data/spec/unit/confine_spec.rb +16 -0
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
- data/spec/unit/datatypes_spec.rb +49 -0
- data/spec/unit/environments_spec.rb +7 -0
- data/spec/unit/face/config_spec.rb +116 -12
- data/spec/unit/face/epp_face_spec.rb +53 -2
- data/spec/unit/face/facts_spec.rb +53 -0
- data/spec/unit/face/help_spec.rb +62 -69
- data/spec/unit/face/man_spec.rb +26 -0
- data/spec/unit/face/module/list_spec.rb +0 -1
- data/spec/unit/face/parser_spec.rb +78 -0
- data/spec/unit/file_bucket/dipper_spec.rb +0 -4
- data/spec/unit/file_serving/content_spec.rb +0 -1
- data/spec/unit/file_serving/fileset_spec.rb +0 -1
- data/spec/unit/file_serving/metadata_spec.rb +0 -1
- data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
- data/spec/unit/forge_spec.rb +1 -2
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- data/spec/unit/functions/empty_spec.rb +77 -0
- data/spec/unit/functions/epp_spec.rb +1 -1
- data/spec/unit/functions/flatten_spec.rb +31 -0
- data/spec/unit/functions/include_spec.rb +2 -2
- data/spec/unit/functions/inline_epp_spec.rb +1 -1
- data/spec/unit/functions/join_spec.rb +33 -0
- data/spec/unit/functions/keys_spec.rb +31 -0
- data/spec/unit/functions/length_spec.rb +50 -0
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
- data/spec/unit/functions/lookup_spec.rb +52 -0
- data/spec/unit/functions/shared.rb +1 -1
- data/spec/unit/functions/values_spec.rb +30 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +30 -32
- data/spec/unit/graph/title_hash_prioritizer_spec.rb +2 -1
- data/spec/unit/indirector/catalog/compiler_spec.rb +0 -15
- data/spec/unit/indirector/facts/rest_spec.rb +45 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +6 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/indirector/node/ldap_spec.rb +2 -2
- data/spec/unit/indirector/request_spec.rb +0 -2
- data/spec/unit/indirector/rest_spec.rb +2 -2
- data/spec/unit/indirector_spec.rb +0 -1
- data/spec/unit/info_service_spec.rb +1 -1
- data/spec/unit/interface/action_manager_spec.rb +1 -1
- data/spec/unit/interface/action_spec.rb +1 -1
- data/spec/unit/module_spec.rb +0 -5
- data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
- data/spec/unit/network/formats_spec.rb +5 -13
- data/spec/unit/network/http/api/indirected_routes_spec.rb +6 -2
- data/spec/unit/network/http/connection_spec.rb +1 -1
- data/spec/unit/network/http/handler_spec.rb +3 -2
- data/spec/unit/node/environment_spec.rb +1 -1
- data/spec/unit/node_spec.rb +3 -3
- data/spec/unit/parser/compiler_spec.rb +9 -2
- data/spec/unit/parser/environment_compiler_spec.rb +8 -8
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/functions/fail_spec.rb +1 -1
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
- data/spec/unit/parser/functions/realize_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +0 -1
- data/spec/unit/parser/scope_spec.rb +3 -3
- data/spec/unit/parser/type_loader_spec.rb +1 -1
- data/spec/unit/pops/adaptable_spec.rb +0 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -3
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -4
- data/spec/unit/pops/factory_rspec_helper.rb +1 -1
- data/spec/unit/pops/factory_spec.rb +5 -5
- data/spec/unit/pops/issues_spec.rb +23 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +24 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
- data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
- data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +14 -5
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +9 -9
- data/spec/unit/pops/parser/parse_calls_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
- data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
- data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
- data/spec/unit/pops/pn_spec.rb +148 -0
- data/spec/unit/pops/types/iterable_spec.rb +1 -1
- data/spec/unit/pops/types/p_object_type_spec.rb +5 -5
- data/spec/unit/pops/types/p_timespan_type_spec.rb +11 -4
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +9 -2
- data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
- data/spec/unit/pops/types/ruby_generator_spec.rb +3 -8
- data/spec/unit/pops/types/string_converter_spec.rb +3 -3
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +3 -1
- data/spec/unit/property_spec.rb +2 -2
- data/spec/unit/provider/aixobject_spec.rb +1 -1
- data/spec/unit/provider/cron/crontab_spec.rb +3 -3
- data/spec/unit/provider/exec/posix_spec.rb +6 -6
- data/spec/unit/provider/group/groupadd_spec.rb +4 -4
- data/spec/unit/provider/group/windows_adsi_spec.rb +79 -22
- data/spec/unit/provider/ldap_spec.rb +0 -1
- data/spec/unit/provider/nameservice_spec.rb +5 -5
- data/spec/unit/provider/package/rpm_spec.rb +3 -4
- data/spec/unit/provider/package/yum_spec.rb +6 -2
- data/spec/unit/provider/parsedfile_spec.rb +1 -1
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/init_spec.rb +2 -2
- data/spec/unit/provider/service/openrc_spec.rb +2 -2
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/smf_spec.rb +2 -0
- data/spec/unit/provider/service/systemd_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_spec.rb +7 -7
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -4
- data/spec/unit/provider/sshkey/parsed_spec.rb +0 -2
- data/spec/unit/provider/user/useradd_spec.rb +15 -9
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/provider/yumrepo/inifile_spec.rb +76 -0
- data/spec/unit/puppet_pal_2pec.rb +4 -5
- data/spec/unit/resource/catalog_spec.rb +8 -3
- data/spec/unit/resource/status_spec.rb +15 -4
- data/spec/unit/resource/type_spec.rb +2 -3
- data/spec/unit/settings_spec.rb +9 -4
- data/spec/unit/ssl/certificate_authority_spec.rb +1 -9
- data/spec/unit/ssl/certificate_request_spec.rb +1 -2
- data/spec/unit/transaction/report_spec.rb +41 -0
- data/spec/unit/transaction_spec.rb +1 -1
- data/spec/unit/type/exec_spec.rb +7 -9
- data/spec/unit/type/file/selinux_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +4 -3
- data/spec/unit/type/k5login_spec.rb +79 -10
- data/spec/unit/type/mount_spec.rb +1 -1
- data/spec/unit/type/nagios_spec.rb +6 -6
- data/spec/unit/type/user_spec.rb +1 -1
- data/spec/unit/type/yumrepo_spec.rb +18 -0
- data/spec/unit/type/zfs_spec.rb +1 -1
- data/spec/unit/type_spec.rb +14 -15
- data/spec/unit/util/docs_spec.rb +1 -1
- data/spec/unit/util/execution_spec.rb +0 -1
- data/spec/unit/util/inifile_spec.rb +35 -4
- data/spec/unit/util/log/destinations_spec.rb +2 -2
- data/spec/unit/util/log_spec.rb +6 -5
- data/spec/unit/util/network_device/cisco/device_spec.rb +2 -2
- data/spec/unit/util/plist_spec.rb +3 -3
- data/spec/unit/util/selinux_spec.rb +2 -2
- data/spec/unit/util/tagging_spec.rb +1 -7
- data/spec/unit/util/windows/adsi_spec.rb +31 -27
- data/spec/unit/util/windows/sid_spec.rb +86 -15
- data/spec/unit/util_spec.rb +2 -2
- data/spec/watchr.rb +0 -1
- data/tasks/benchmark.rake +37 -0
- data/tasks/manpages.rake +1 -1
- metadata +71 -11
- checksums.yaml +0 -7
data/Gemfile
CHANGED
@@ -49,9 +49,7 @@ group(:development, :test) do
|
|
49
49
|
gem "yarjuf", "~> 2.0"
|
50
50
|
|
51
51
|
# json-schema does not support windows, so omit it from the platforms list
|
52
|
-
|
53
|
-
gem "multi_json", "1.7.7", :require => false, :platforms => [:ruby, :jruby]
|
54
|
-
gem "json-schema", "2.1.1", :require => false, :platforms => [:ruby, :jruby]
|
52
|
+
gem "json-schema", "~> 2.0", :require => false, :platforms => [:ruby, :jruby]
|
55
53
|
|
56
54
|
if RUBY_VERSION >= '2.0'
|
57
55
|
# pin rubocop as 0.50 requires a higher version of the rainbow gem (see below)
|
@@ -74,6 +72,8 @@ group(:development, :test) do
|
|
74
72
|
gem 'webmock', '~> 1.24'
|
75
73
|
gem 'vcr', '~> 2.9'
|
76
74
|
gem "hiera-eyaml", :require => false
|
75
|
+
|
76
|
+
gem 'memory_profiler', :platforms => [:mri_21, :mri_22, :mri_23, :mri_24, :mri_25]
|
77
77
|
end
|
78
78
|
|
79
79
|
group(:development) do
|
data/MAINTAINERS
CHANGED
@@ -33,34 +33,15 @@
|
|
33
33
|
"github": "Iristyle",
|
34
34
|
"name": "Ethan J. Brown"
|
35
35
|
},
|
36
|
-
{
|
37
|
-
"github": "HAIL9000",
|
38
|
-
"email": "hailee@puppet.com",
|
39
|
-
"name": "Hailee Kenney"
|
40
|
-
},
|
41
36
|
{
|
42
37
|
"github": "er0ck",
|
43
38
|
"email": "eric.thompson@puppet.com",
|
44
39
|
"name": "Eric Thompson"
|
45
40
|
},
|
46
|
-
{
|
47
|
-
"github": "johnduarte",
|
48
|
-
"email": "john.duarte@puppet.com",
|
49
|
-
"name": "John Duarte"
|
50
|
-
},
|
51
|
-
{
|
52
|
-
"github": "adrienthebo",
|
53
|
-
"name": "Adrien Thebo"
|
54
|
-
},
|
55
41
|
{
|
56
42
|
"github": "jtappa",
|
57
43
|
"email": "jorie@puppet.com",
|
58
44
|
"name": "Jorie Tappa"
|
59
|
-
},
|
60
|
-
{
|
61
|
-
"github": "MosesMendoza",
|
62
|
-
"email": "moses@puppet.com",
|
63
|
-
"name": "Moses Mendoza"
|
64
45
|
}
|
65
46
|
]
|
66
47
|
}
|
data/README.md
CHANGED
@@ -23,26 +23,26 @@ HTTP API
|
|
23
23
|
Installation
|
24
24
|
------------
|
25
25
|
|
26
|
-
The best way to run Puppet is with [Puppet Enterprise](https://puppet.com/puppet/puppet-enterprise),
|
26
|
+
The best way to run Puppet is with [Puppet Enterprise (PE)](https://puppet.com/puppet/puppet-enterprise),
|
27
27
|
which also includes orchestration features, a web console, and professional support.
|
28
|
-
|
28
|
+
The PE documentation is [available here.](https://puppet.com/docs/pe/latest)
|
29
29
|
|
30
30
|
To install an open source release of Puppet,
|
31
31
|
[see the installation guide on the docs site.](http://puppet.com/docs/puppet/5.4/install_pre.html)
|
32
32
|
|
33
33
|
If you need to run Puppet from source as a tester or developer,
|
34
|
-
|
34
|
+
see the [Running Puppet from Source](https://docs.puppet.com/puppet/3.8/from_source.html) guide on the docs site.
|
35
35
|
|
36
36
|
Developing and Contributing
|
37
37
|
------
|
38
38
|
|
39
39
|
We'd love to get contributions from you! For a quick guide to getting your
|
40
|
-
system setup for developing take a look at our [Quickstart
|
40
|
+
system setup for developing, take a look at our [Quickstart
|
41
41
|
Guide](https://github.com/puppetlabs/puppet/blob/master/docs/quickstart.md). Once you are up and running, take a look at the
|
42
42
|
[Contribution Documents](https://github.com/puppetlabs/puppet/blob/master/CONTRIBUTING.md) to see how to get your changes merged
|
43
43
|
in.
|
44
44
|
|
45
|
-
For more complete docs on developing with
|
45
|
+
For more complete docs on developing with Puppet, take a look at the
|
46
46
|
rest of the [developer documents](https://github.com/puppetlabs/puppet/blob/master/docs/index.md).
|
47
47
|
|
48
48
|
License
|
data/Rakefile
CHANGED
@@ -19,6 +19,7 @@ rescue LoadError
|
|
19
19
|
end
|
20
20
|
|
21
21
|
require 'rake'
|
22
|
+
require 'open3'
|
22
23
|
|
23
24
|
Dir['tasks/**/*.rake'].each { |t| load t }
|
24
25
|
|
@@ -110,6 +111,31 @@ task(:commits) do
|
|
110
111
|
end
|
111
112
|
end
|
112
113
|
|
114
|
+
desc "verify that changed files are clean of Ruby warnings"
|
115
|
+
task(:warnings) do
|
116
|
+
# This rake task looks at all files modified in this branch. This is
|
117
|
+
# accomplished by using the TRAVIS_COMMIT_RANGE environment variable, which
|
118
|
+
# is present in travis CI and populated with the range of commits the PR
|
119
|
+
# contains. If not available, this falls back to `master..HEAD` as a next
|
120
|
+
# best bet as `master` is unlikely to ever be absent.
|
121
|
+
commit_range = ENV['TRAVIS_COMMIT_RANGE'].nil? ? 'master...HEAD' : ENV['TRAVIS_COMMIT_RANGE']
|
122
|
+
ruby_files_ok = true
|
123
|
+
puts "Checking modified files #{commit_range}"
|
124
|
+
%x{git diff --name-only #{commit_range}}.each_line do |modified_file|
|
125
|
+
modified_file.chomp!
|
126
|
+
next unless File.extname(modified_file) == '.rb'
|
127
|
+
puts modified_file
|
128
|
+
|
129
|
+
stdout, stderr, _ = Open3.capture3("ruby -wc \"#{modified_file}\"")
|
130
|
+
unless stderr.empty?
|
131
|
+
ruby_files_ok = false
|
132
|
+
puts stderr
|
133
|
+
end
|
134
|
+
puts stdout
|
135
|
+
end
|
136
|
+
raise "One or more ruby files contain warnings." unless ruby_files_ok
|
137
|
+
end
|
138
|
+
|
113
139
|
if Rake.application.top_level_tasks.grep(/^gettext:/).any?
|
114
140
|
begin
|
115
141
|
spec = Gem::Specification.find_by_name 'gettext-setup'
|
data/conf/auth.conf
CHANGED
@@ -100,6 +100,11 @@ path ~ ^/puppet/v3/report/([^/]+)$
|
|
100
100
|
method save
|
101
101
|
allow $1
|
102
102
|
|
103
|
+
# allow all nodes to update their own facts
|
104
|
+
path ~ ^/puppet/v3/facts/([^/]+)$
|
105
|
+
method save
|
106
|
+
allow $1
|
107
|
+
|
103
108
|
# Allow all nodes to access all file services; this is necessary for
|
104
109
|
# pluginsync, file serving from modules, and file serving from custom
|
105
110
|
# mount points (see fileserver.conf). Note that the `/file` prefix matches
|
data/ext/project_data.yaml
CHANGED
@@ -89,7 +89,6 @@ class ExternalNode
|
|
89
89
|
# parameters
|
90
90
|
def initialize(hostname, classdir = 'classes/', parameterdir = 'parameters/', environmentdir = 'environment/')
|
91
91
|
# instance variables that contain the lists of classes and parameters
|
92
|
-
@hostname
|
93
92
|
@classes = Set.new
|
94
93
|
@parameters = Hash.new("unknown") # sets a default value of "unknown"
|
95
94
|
@environment = "production"
|
@@ -134,13 +133,13 @@ class ExternalNode
|
|
134
133
|
patternlist = []
|
135
134
|
|
136
135
|
begin
|
137
|
-
open(filepath).each
|
136
|
+
open(filepath).each do |l|
|
138
137
|
l.chomp!
|
139
138
|
|
140
139
|
next if l =~ /^$/
|
141
140
|
next if l =~ /^#/
|
142
141
|
|
143
|
-
|
142
|
+
if l =~ /^\s*(\S+)/
|
144
143
|
m = Regexp.last_match
|
145
144
|
log("found a non-comment line, transforming [#{l}] into [#{m[1]}]")
|
146
145
|
l.gsub!(l,m[1])
|
@@ -151,7 +150,7 @@ class ExternalNode
|
|
151
150
|
pattern = %r{#{l}}
|
152
151
|
patternlist << pattern
|
153
152
|
log("appending [#{pattern}] to patternlist for [#{filepath}]")
|
154
|
-
|
153
|
+
end
|
155
154
|
rescue StandardError
|
156
155
|
log("Problem reading #{filepath}: #{$!}",:err)
|
157
156
|
exit(1)
|
@@ -245,7 +245,7 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
245
245
|
$stderr.puts _("%{file} is not readable") % { file: file }
|
246
246
|
exit(63)
|
247
247
|
end
|
248
|
-
node.classes = Puppet::FileSystem.read(file, :encoding => 'utf-8').split(/[\s
|
248
|
+
node.classes = Puppet::FileSystem.read(file, :encoding => 'utf-8').split(/[\s]+/)
|
249
249
|
end
|
250
250
|
end
|
251
251
|
|
@@ -269,8 +269,10 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
269
269
|
end
|
270
270
|
begin
|
271
271
|
if subcommand == :destroy
|
272
|
+
raise _("Refusing to destroy all certs, provide an explicit list of certs to destroy") if hosts == :all
|
273
|
+
|
272
274
|
signed_hosts = hosts - @ca.waiting?
|
273
|
-
apply(@ca, :revoke, options.merge(:to => signed_hosts))
|
275
|
+
apply(@ca, :revoke, options.merge(:to => signed_hosts)) unless signed_hosts.empty?
|
274
276
|
end
|
275
277
|
apply(@ca, subcommand, options.merge(:to => hosts, :digest => @digest))
|
276
278
|
rescue => detail
|
@@ -24,13 +24,16 @@ class Puppet::Application::Device < Puppet::Application
|
|
24
24
|
end
|
25
25
|
|
26
26
|
{
|
27
|
+
:apply => nil,
|
27
28
|
:waitforcert => nil,
|
28
29
|
:detailed_exitcodes => false,
|
29
30
|
:verbose => false,
|
30
31
|
:debug => false,
|
31
32
|
:centrallogs => false,
|
32
33
|
:setdest => false,
|
34
|
+
:resource => false,
|
33
35
|
:target => nil,
|
36
|
+
:to_yaml => false,
|
34
37
|
}.each do |opt,val|
|
35
38
|
options[opt] = val
|
36
39
|
end
|
@@ -40,12 +43,18 @@ class Puppet::Application::Device < Puppet::Application
|
|
40
43
|
|
41
44
|
option("--centrallogging")
|
42
45
|
option("--debug","-d")
|
46
|
+
option("--resource","-r")
|
47
|
+
option("--to_yaml","-y")
|
43
48
|
option("--verbose","-v")
|
44
49
|
|
45
50
|
option("--detailed-exitcodes") do |arg|
|
46
51
|
options[:detailed_exitcodes] = true
|
47
52
|
end
|
48
53
|
|
54
|
+
option("--apply MANIFEST") do |arg|
|
55
|
+
options[:apply] = arg.to_s
|
56
|
+
end
|
57
|
+
|
49
58
|
option("--logdest DEST", "-l DEST") do |arg|
|
50
59
|
handle_logdest_arg(arg)
|
51
60
|
end
|
@@ -85,6 +94,7 @@ USAGE
|
|
85
94
|
puppet device [-d|--debug] [--detailed-exitcodes] [--deviceconfig <file>]
|
86
95
|
[-h|--help] [-l|--logdest syslog|<file>|console]
|
87
96
|
[-v|--verbose] [-w|--waitforcert <seconds>]
|
97
|
+
[-a|--apply <file>] [-r|--resource <type> [name]]
|
88
98
|
[-t|--target <device>] [--user=<user>] [-V|--version]
|
89
99
|
|
90
100
|
|
@@ -150,10 +160,21 @@ you can specify '--server <servername>' as an argument.
|
|
150
160
|
appending nature of logging. It must be appended manually to make the content
|
151
161
|
valid JSON.
|
152
162
|
|
163
|
+
* --apply:
|
164
|
+
Apply a manifest against a remote target. Target must be specified.
|
165
|
+
|
166
|
+
* --resource:
|
167
|
+
Displays a resource state as Puppet code, roughly equivalent to
|
168
|
+
`puppet resource`. Can be filterd by title. Requires --target be specified.
|
169
|
+
|
153
170
|
* --target:
|
154
171
|
Target a specific device/certificate in the device.conf. Doing so will perform a
|
155
172
|
device run against only that device/certificate.
|
156
173
|
|
174
|
+
* --to_yaml:
|
175
|
+
Output found resources in yaml format, suitable to use with Hiera and
|
176
|
+
create_resources.
|
177
|
+
|
157
178
|
* --user:
|
158
179
|
The user to run as.
|
159
180
|
|
@@ -170,7 +191,7 @@ you can specify '--server <servername>' as an argument.
|
|
170
191
|
|
171
192
|
EXAMPLE
|
172
193
|
-------
|
173
|
-
$ puppet device --
|
194
|
+
$ puppet device --target remotehost --verbose
|
174
195
|
|
175
196
|
AUTHOR
|
176
197
|
------
|
@@ -182,10 +203,24 @@ COPYRIGHT
|
|
182
203
|
Copyright (c) 2011 Puppet Inc., LLC
|
183
204
|
Licensed under the Apache 2.0 License
|
184
205
|
HELP
|
185
|
-
|
206
|
+
end
|
186
207
|
|
187
208
|
|
188
209
|
def main
|
210
|
+
if options[:resource] and !options[:target]
|
211
|
+
Puppet.err _("resource command requires target")
|
212
|
+
exit(1)
|
213
|
+
end
|
214
|
+
unless options[:apply].nil?
|
215
|
+
if options[:target].nil?
|
216
|
+
Puppet.err _("missing argument: --target is required when using --apply")
|
217
|
+
exit(1)
|
218
|
+
end
|
219
|
+
unless File.file?(options[:apply])
|
220
|
+
Puppet.err _("%{file} does not exist, cannot apply") % { file: options[:apply] }
|
221
|
+
exit(1)
|
222
|
+
end
|
223
|
+
end
|
189
224
|
vardir = Puppet[:vardir]
|
190
225
|
confdir = Puppet[:confdir]
|
191
226
|
certname = Puppet[:certname]
|
@@ -212,27 +247,61 @@ Licensed under the Apache 2.0 License
|
|
212
247
|
# Handle nil scheme & port
|
213
248
|
scheme = "#{device_url.scheme}://" if device_url.scheme
|
214
249
|
port = ":#{device_url.port}" if device_url.port
|
215
|
-
Puppet.info _("starting applying configuration to %{target} at %{scheme}%{url_host}%{port}%{url_path}") % { target: device.name, scheme: scheme, url_host: device_url.host, port: port, url_path: device_url.path }
|
216
250
|
|
217
251
|
# override local $vardir and $certname
|
218
252
|
Puppet[:confdir] = ::File.join(Puppet[:devicedir], device.name)
|
219
253
|
Puppet[:vardir] = ::File.join(Puppet[:devicedir], device.name)
|
220
254
|
Puppet[:certname] = device.name
|
221
255
|
|
222
|
-
# this will reload and recompute default settings and create the devices sub vardir, or we hope so :-)
|
223
|
-
Puppet.settings.use :main, :agent, :ssl
|
224
|
-
|
225
256
|
# this init the device singleton, so that the facts terminus
|
226
257
|
# and the various network_device provider can use it
|
227
258
|
Puppet::Util::NetworkDevice.init(device)
|
228
259
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
260
|
+
if options[:resource]
|
261
|
+
type, name = parse_args(command_line.args)
|
262
|
+
Puppet.info _("retrieving resource: %{resource} from %{target} at %{scheme}%{url_host}%{port}%{url_path}") % { resource: type, target: device.name, scheme: scheme, url_host: device_url.host, port: port, url_path: device_url.path }
|
263
|
+
|
264
|
+
resources = find_resources(type, name)
|
265
|
+
|
266
|
+
if options[:to_yaml]
|
267
|
+
text = resources.map do |resource|
|
268
|
+
resource.prune_parameters(:parameters_to_include => @extra_params).to_hierayaml.force_encoding(Encoding.default_external)
|
269
|
+
end.join("\n")
|
270
|
+
text.prepend("#{type.downcase}:\n")
|
271
|
+
else
|
272
|
+
text = resources.map do |resource|
|
273
|
+
resource.prune_parameters(:parameters_to_include => @extra_params).to_manifest.force_encoding(Encoding.default_external)
|
274
|
+
end.join("\n")
|
275
|
+
end
|
276
|
+
(puts text)
|
277
|
+
elsif options[:apply]
|
278
|
+
# avoid reporting to server
|
279
|
+
Puppet::Transaction::Report.indirection.terminus_class = :yaml
|
280
|
+
Puppet::Resource::Catalog.indirection.cache_class = nil
|
281
|
+
|
282
|
+
require 'puppet/application/apply'
|
283
|
+
begin
|
284
|
+
|
285
|
+
Puppet[:node_terminus] = :plain
|
286
|
+
Puppet[:catalog_terminus] = :compiler
|
287
|
+
Puppet[:catalog_cache_terminus] = nil
|
288
|
+
Puppet[:facts_terminus] = :network_device
|
289
|
+
Puppet.override(:network_device => true) do
|
290
|
+
Puppet::Application::Apply.new(Puppet::Util::CommandLine.new('puppet', ["apply", options[:apply]])).run_command
|
291
|
+
end
|
292
|
+
end
|
293
|
+
else
|
294
|
+
Puppet.info _("starting applying configuration to %{target} at %{scheme}%{url_host}%{port}%{url_path}") % { target: device.name, scheme: scheme, url_host: device_url.host, port: port, url_path: device_url.path }
|
295
|
+
# this will reload and recompute default settings and create the devices sub vardir
|
296
|
+
Puppet.settings.use :main, :agent, :ssl
|
297
|
+
# ask for a ssl cert if needed, but at least
|
298
|
+
# setup the ssl system for this device.
|
299
|
+
setup_host
|
300
|
+
|
301
|
+
require 'puppet/configurer'
|
302
|
+
configurer = Puppet::Configurer.new
|
303
|
+
configurer.run(:network_device => true, :pluginsync => Puppet::Configurer.should_pluginsync?)
|
304
|
+
end
|
236
305
|
rescue => detail
|
237
306
|
Puppet.log_exception(detail)
|
238
307
|
# If we rescued an error, then we return 1 as the exit code
|
@@ -258,6 +327,24 @@ Licensed under the Apache 2.0 License
|
|
258
327
|
end
|
259
328
|
end
|
260
329
|
|
330
|
+
def parse_args(args)
|
331
|
+
type = args.shift or raise _("You must specify the type to display")
|
332
|
+
Puppet::Type.type(type) or raise _("Could not find type %{type}") % { type: type }
|
333
|
+
name = args.shift
|
334
|
+
|
335
|
+
[type, name]
|
336
|
+
end
|
337
|
+
|
338
|
+
def find_resources(type, name)
|
339
|
+
key = [type, name].join('/')
|
340
|
+
|
341
|
+
if name
|
342
|
+
[ Puppet::Resource.indirection.find( key ) ]
|
343
|
+
else
|
344
|
+
Puppet::Resource.indirection.search( key, {} )
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
261
348
|
def setup_host
|
262
349
|
@host = Puppet::SSL::Host.new
|
263
350
|
waitforcert = options[:waitforcert] || (Puppet[:onetime] ? 0 : Puppet[:waitforcert])
|
@@ -1,4 +1,9 @@
|
|
1
1
|
require 'puppet/application/indirection_base'
|
2
2
|
|
3
3
|
class Puppet::Application::Facts < Puppet::Application::IndirectionBase
|
4
|
+
# Allows `puppet facts` actions to be run against environments that
|
5
|
+
# don't exist locally, such as using the `--environment` flag to make a REST
|
6
|
+
# request to a specific environment on a master. There is no way to set this
|
7
|
+
# behavior per-action, so it must be set for the face as a whole.
|
8
|
+
environment_mode :not_required
|
4
9
|
end
|
@@ -335,13 +335,23 @@ Copyright (c) 2015 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
335
335
|
Puppet.settings[:facts_terminus] = 'facter'
|
336
336
|
end
|
337
337
|
|
338
|
-
|
338
|
+
unless node.is_a?(Puppet::Node) # to allow unit tests to pass a node instance
|
339
|
+
ni = Puppet::Node.indirection
|
340
|
+
tc = ni.terminus_class
|
341
|
+
if tc == :plain || options[:compile]
|
342
|
+
node = ni.find(node)
|
343
|
+
else
|
344
|
+
ni.terminus_class = :plain
|
345
|
+
node = ni.find(node)
|
346
|
+
ni.terminus_class = tc
|
347
|
+
end
|
348
|
+
end
|
339
349
|
|
340
350
|
fact_file = options[:fact_file]
|
341
351
|
|
342
352
|
if fact_file
|
343
353
|
if fact_file.end_with?("json")
|
344
|
-
given_facts =
|
354
|
+
given_facts = Puppet::Util::Json.load(Puppet::FileSystem.read(fact_file, :encoding => 'utf-8'))
|
345
355
|
else
|
346
356
|
given_facts = YAML.load(Puppet::FileSystem.read(fact_file, :encoding => 'utf-8'))
|
347
357
|
end
|
data/lib/puppet/configurer.rb
CHANGED
@@ -102,22 +102,31 @@ class Puppet::Configurer
|
|
102
102
|
end
|
103
103
|
|
104
104
|
# Convert a plain resource catalog into our full host catalog.
|
105
|
-
def convert_catalog(result, duration)
|
106
|
-
catalog =
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
105
|
+
def convert_catalog(result, duration, options = {})
|
106
|
+
catalog = nil
|
107
|
+
|
108
|
+
catalog_conversion_time = thinmark do
|
109
|
+
catalog = result.to_ral
|
110
|
+
catalog.finalize
|
111
|
+
catalog.retrieval_duration = duration
|
112
|
+
catalog.write_class_file
|
113
|
+
catalog.write_resource_file
|
114
|
+
end
|
115
|
+
options[:report].add_times(:convert_catalog, catalog_conversion_time) if options[:report]
|
116
|
+
|
111
117
|
catalog
|
112
118
|
end
|
113
119
|
|
114
120
|
def get_facts(options)
|
115
121
|
if options[:pluginsync]
|
116
|
-
|
117
|
-
|
122
|
+
plugin_sync_time = thinmark do
|
123
|
+
remote_environment_for_plugins = Puppet::Node::Environment.remote(@environment)
|
124
|
+
download_plugins(remote_environment_for_plugins)
|
118
125
|
|
119
|
-
|
120
|
-
|
126
|
+
Puppet::GettextConfig.reset_text_domain('agent')
|
127
|
+
Puppet::ModuleTranslations.load_from_vardir(Puppet[:vardir])
|
128
|
+
end
|
129
|
+
options[:report].add_times(:plugin_sync, plugin_sync_time) if options[:report]
|
121
130
|
end
|
122
131
|
|
123
132
|
facts_hash = {}
|
@@ -127,7 +136,10 @@ class Puppet::Configurer
|
|
127
136
|
# get a hash with both of these pieces of information.
|
128
137
|
#
|
129
138
|
# facts_for_uploading may set Puppet[:node_name_value] as a side effect
|
130
|
-
|
139
|
+
facter_time = thinmark do
|
140
|
+
facts_hash = facts_for_uploading
|
141
|
+
end
|
142
|
+
options[:report].add_times(:fact_generation, facter_time) if options[:report]
|
131
143
|
end
|
132
144
|
facts_hash
|
133
145
|
end
|
@@ -149,17 +161,17 @@ class Puppet::Configurer
|
|
149
161
|
|
150
162
|
# retrieve_catalog returns json catalog
|
151
163
|
catalog = retrieve_catalog(query_options)
|
152
|
-
return convert_catalog(catalog, @duration) if catalog
|
164
|
+
return convert_catalog(catalog, @duration, options) if catalog
|
153
165
|
|
154
166
|
Puppet.err _("Could not retrieve catalog; skipping run")
|
155
167
|
nil
|
156
168
|
end
|
157
169
|
|
158
|
-
def prepare_and_retrieve_catalog_from_cache
|
170
|
+
def prepare_and_retrieve_catalog_from_cache(options = {})
|
159
171
|
result = retrieve_catalog_from_cache({:transaction_uuid => @transaction_uuid, :static_catalog => @static_catalog})
|
160
172
|
if result
|
161
173
|
Puppet.info _("Using cached catalog from environment '%{catalog_env}'") % { catalog_env: result.environment }
|
162
|
-
return convert_catalog(result, @duration)
|
174
|
+
return convert_catalog(result, @duration, options)
|
163
175
|
end
|
164
176
|
nil
|
165
177
|
end
|
@@ -171,7 +183,10 @@ class Puppet::Configurer
|
|
171
183
|
report.configuration_version = catalog.version
|
172
184
|
|
173
185
|
benchmark(:notice, _("Applied catalog in %{seconds} seconds")) do
|
174
|
-
|
186
|
+
apply_catalog_time = thinmark do
|
187
|
+
catalog.apply(options)
|
188
|
+
end
|
189
|
+
options[:report].add_times(:catalog_application, apply_catalog_time)
|
175
190
|
end
|
176
191
|
ensure
|
177
192
|
report.finalize_report
|
@@ -238,7 +253,7 @@ class Puppet::Configurer
|
|
238
253
|
Puppet::GettextConfig.reset_text_domain('agent')
|
239
254
|
Puppet::ModuleTranslations.load_from_vardir(Puppet[:vardir])
|
240
255
|
|
241
|
-
if catalog = prepare_and_retrieve_catalog_from_cache
|
256
|
+
if catalog = prepare_and_retrieve_catalog_from_cache(options)
|
242
257
|
options[:catalog] = catalog
|
243
258
|
@cached_catalog_status = 'explicitly_requested'
|
244
259
|
|
@@ -267,13 +282,18 @@ class Puppet::Configurer
|
|
267
282
|
# We only need to find out the environment to run in if we don't already have a catalog
|
268
283
|
unless (options[:catalog] || Puppet[:strict_environment_mode])
|
269
284
|
begin
|
270
|
-
|
285
|
+
node = nil
|
286
|
+
node_retr_time = thinmark do
|
287
|
+
node = options[:node] || Puppet::Node.indirection.find(Puppet[:node_name_value],
|
271
288
|
:environment => Puppet::Node::Environment.remote(@environment),
|
272
289
|
:configured_environment => configured_environment,
|
273
290
|
:ignore_cache => true,
|
274
291
|
:transaction_uuid => @transaction_uuid,
|
275
292
|
:fail_on_404 => true)
|
293
|
+
end
|
294
|
+
options[:report].add_times(:node_retrieval, node_retr_time)
|
276
295
|
|
296
|
+
if node
|
277
297
|
# If we have deserialized a node from a rest call, we want to set
|
278
298
|
# an environment instance as a simple 'remote' environment reference.
|
279
299
|
if !node.has_environment_instance? && node.environment_name
|