puppet 5.4.0-x86-mingw32 → 5.5.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- 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 +83 -11
- checksums.yaml +0 -7
data/lib/puppet/confine.rb
CHANGED
@@ -21,7 +21,7 @@ class Puppet::Confine
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.test(name)
|
24
|
-
unless @tests
|
24
|
+
unless @tests.include?(name)
|
25
25
|
begin
|
26
26
|
require "puppet/confine/#{name}"
|
27
27
|
rescue LoadError => detail
|
@@ -29,6 +29,9 @@ class Puppet::Confine
|
|
29
29
|
warn "Could not load confine test '#{name}': #{detail}"
|
30
30
|
end
|
31
31
|
# Could not find file
|
32
|
+
if !Puppet[:always_retry_plugins]
|
33
|
+
@tests[name] = nil
|
34
|
+
end
|
32
35
|
end
|
33
36
|
end
|
34
37
|
@tests[name]
|
data/lib/puppet/datatypes.rb
CHANGED
@@ -169,7 +169,7 @@ module Puppet::DataTypes
|
|
169
169
|
end
|
170
170
|
end
|
171
171
|
else
|
172
|
-
Puppet::Pops::Loaders.implementation_registry.register_implementation(created_type, @implementation_class
|
172
|
+
Puppet::Pops::Loaders.implementation_registry.register_implementation(created_type, @implementation_class)
|
173
173
|
end
|
174
174
|
created_type.implementation_class = @implementation_class
|
175
175
|
elsif !@implementation.nil?
|
data/lib/puppet/environments.rb
CHANGED
@@ -115,7 +115,7 @@ module Puppet::Environments
|
|
115
115
|
def get_conf(name)
|
116
116
|
env = get(name)
|
117
117
|
if env
|
118
|
-
Puppet::Settings::EnvironmentConf.static_for(env,
|
118
|
+
Puppet::Settings::EnvironmentConf.static_for(env, Puppet[:environment_timeout], Puppet[:static_catalogs], Puppet[:rich_data])
|
119
119
|
else
|
120
120
|
nil
|
121
121
|
end
|
data/lib/puppet/error.rb
CHANGED
@@ -46,7 +46,7 @@ module Puppet
|
|
46
46
|
|
47
47
|
# Contains an issue code and can be annotated with an environment and a node
|
48
48
|
class ParseErrorWithIssue < Puppet::ParseError
|
49
|
-
attr_reader :issue_code, :basic_message
|
49
|
+
attr_reader :issue_code, :basic_message, :arguments
|
50
50
|
attr_accessor :environment, :node
|
51
51
|
|
52
52
|
# @param message [String] The error message
|
@@ -55,11 +55,13 @@ module Puppet
|
|
55
55
|
# @param pos [Integer] The position on the line
|
56
56
|
# @param original [Exception] Original exception
|
57
57
|
# @param issue_code [Symbol] The issue code
|
58
|
+
# @param arguments [Hash{Symbol=>Object}] Issue arguments
|
58
59
|
#
|
59
|
-
def initialize(message, file=nil, line=nil, pos=nil, original=nil, issue_code= nil)
|
60
|
+
def initialize(message, file=nil, line=nil, pos=nil, original=nil, issue_code= nil, arguments = nil)
|
60
61
|
super(message, file, line, pos, original)
|
61
62
|
@issue_code = issue_code
|
62
63
|
@basic_message = message
|
64
|
+
@arguments = arguments
|
63
65
|
end
|
64
66
|
|
65
67
|
def to_s
|
@@ -83,7 +85,8 @@ module Puppet
|
|
83
85
|
line,
|
84
86
|
nil,
|
85
87
|
nil,
|
86
|
-
issue.issue_code
|
88
|
+
issue.issue_code,
|
89
|
+
args)
|
87
90
|
end
|
88
91
|
end
|
89
92
|
|
data/lib/puppet/external/dot.rb
CHANGED
@@ -181,9 +181,6 @@ module DOT
|
|
181
181
|
# node element
|
182
182
|
|
183
183
|
class DOTNode < DOTElement
|
184
|
-
|
185
|
-
@ports
|
186
|
-
|
187
184
|
def initialize (params = {}, option_list = NODE_OPTS)
|
188
185
|
super(params, option_list)
|
189
186
|
@ports = params['ports'] ? params['ports'] : []
|
@@ -235,10 +232,6 @@ module DOT
|
|
235
232
|
# notation.
|
236
233
|
|
237
234
|
class DOTSubgraph < DOTElement
|
238
|
-
|
239
|
-
@nodes
|
240
|
-
@dot_string
|
241
|
-
|
242
235
|
def initialize (params = {}, option_list = GRAPH_OPTS)
|
243
236
|
super(params, option_list)
|
244
237
|
@nodes = params['nodes'] ? params['nodes'] : []
|
data/lib/puppet/face/config.rb
CHANGED
@@ -2,6 +2,7 @@ require 'puppet/face'
|
|
2
2
|
require 'puppet/settings/ini_file'
|
3
3
|
|
4
4
|
Puppet::Face.define(:config, '0.0.1') do
|
5
|
+
extend Puppet::Util::Colors
|
5
6
|
copyright "Puppet Inc.", 2011
|
6
7
|
license _("Apache 2 license; see COPYING")
|
7
8
|
|
@@ -11,8 +12,10 @@ Puppet::Face.define(:config, '0.0.1') do
|
|
11
12
|
'puppet.conf' configuration file. For documentation about individual settings,
|
12
13
|
see https://docs.puppetlabs.com/puppet/latest/reference/configuration.html."
|
13
14
|
|
15
|
+
DEFAULT_SECTION_MARKER = Object.new
|
16
|
+
DEFAULT_SECTION = "main"
|
14
17
|
option "--section " + _("SECTION_NAME") do
|
15
|
-
default_to {
|
18
|
+
default_to { DEFAULT_SECTION_MARKER } #Sentinel object for default detection during commands
|
16
19
|
summary _("The section of the configuration file to interact with.")
|
17
20
|
description <<-EOT
|
18
21
|
The section of the puppet.conf configuration file to interact with.
|
@@ -57,7 +60,15 @@ Puppet::Face.define(:config, '0.0.1') do
|
|
57
60
|
when_invoked do |*args|
|
58
61
|
options = args.pop
|
59
62
|
|
60
|
-
|
63
|
+
@default_section = false
|
64
|
+
if options[:section] == DEFAULT_SECTION_MARKER
|
65
|
+
options[:section] = DEFAULT_SECTION
|
66
|
+
@default_section = true
|
67
|
+
end
|
68
|
+
|
69
|
+
render_all_settings = args.empty? || args == ['all']
|
70
|
+
|
71
|
+
args = Puppet.settings.to_a.collect(&:first) if render_all_settings
|
61
72
|
|
62
73
|
values_from_the_selected_section =
|
63
74
|
Puppet.settings.values(nil, options[:section].to_sym)
|
@@ -67,23 +78,77 @@ Puppet::Face.define(:config, '0.0.1') do
|
|
67
78
|
:basemodulepath => values_from_the_selected_section.interpolate(:basemodulepath),
|
68
79
|
}
|
69
80
|
|
81
|
+
to_be_rendered = nil
|
70
82
|
Puppet.override(Puppet.base_context(loader_settings),
|
71
83
|
_("New environment loaders generated from the requested section.")) do
|
72
84
|
# And now we can lookup values that include those from environments configured from
|
73
85
|
# the requested section
|
74
86
|
values = Puppet.settings.values(Puppet[:environment].to_sym, options[:section].to_sym)
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
87
|
+
|
88
|
+
warn_default_section(options[:section]) if @default_section
|
89
|
+
report_section_and_environment(options[:section], Puppet.settings[:environment])
|
90
|
+
|
91
|
+
to_be_rendered = {}
|
92
|
+
args.sort.each do |setting_name|
|
93
|
+
to_be_rendered[setting_name] = values.print(setting_name.to_sym)
|
81
94
|
end
|
82
95
|
end
|
83
|
-
|
96
|
+
|
97
|
+
# convert symbols to strings before formatting output
|
98
|
+
if render_all_settings
|
99
|
+
to_be_rendered = stringifyhash(to_be_rendered)
|
100
|
+
end
|
101
|
+
to_be_rendered
|
102
|
+
end
|
103
|
+
|
104
|
+
when_rendering :console do |to_be_rendered|
|
105
|
+
output = ''
|
106
|
+
if to_be_rendered.keys.length > 1
|
107
|
+
to_be_rendered.keys.sort.each do |setting|
|
108
|
+
output << "#{setting} = #{to_be_rendered[setting]}\n"
|
109
|
+
end
|
110
|
+
else
|
111
|
+
output << "#{to_be_rendered.to_a[0].last}\n"
|
112
|
+
end
|
113
|
+
|
114
|
+
output
|
84
115
|
end
|
85
116
|
end
|
86
117
|
|
118
|
+
def stringifyhash(hash)
|
119
|
+
newhash = {}
|
120
|
+
hash.each do |key, val|
|
121
|
+
key = key.to_s
|
122
|
+
if val.is_a? Hash
|
123
|
+
newhash[key] = stringifyhash(val)
|
124
|
+
elsif val.is_a? Symbol
|
125
|
+
newhash[key] = val.to_s
|
126
|
+
else
|
127
|
+
newhash[key] = val
|
128
|
+
end
|
129
|
+
end
|
130
|
+
newhash
|
131
|
+
end
|
132
|
+
|
133
|
+
def warn_default_section(section_name)
|
134
|
+
messages = []
|
135
|
+
messages << _("No section specified; defaulting to '%{section_name}'.") %
|
136
|
+
{ section_name: section_name }
|
137
|
+
#TRANSLATORS '--section' is a command line option and should not be translated
|
138
|
+
messages << _("Set the config section by using the `--section` flag.")
|
139
|
+
#TRANSLATORS `puppet config --section user print foo` is a command line example and should not be translated
|
140
|
+
messages << _("For example, `puppet config --section user print foo`.")
|
141
|
+
messages << _("For more information, see https://puppet.com/docs/puppet/latest/configuration.html")
|
142
|
+
|
143
|
+
Puppet.warning(messages.join("\n"))
|
144
|
+
end
|
145
|
+
|
146
|
+
def report_section_and_environment(section_name, environment_name)
|
147
|
+
$stderr.puts colorize(:hyellow,
|
148
|
+
_("Resolving settings from section '%{section_name}' in environment '%{environment_name}'") %
|
149
|
+
{ section_name: section_name, environment_name: environment_name })
|
150
|
+
end
|
151
|
+
|
87
152
|
action(:set) do
|
88
153
|
summary _("Set Puppet's settings.")
|
89
154
|
arguments _("[setting_name] [setting_value]")
|
@@ -106,6 +171,13 @@ Puppet::Face.define(:config, '0.0.1') do
|
|
106
171
|
EOT
|
107
172
|
|
108
173
|
when_invoked do |name, value, options|
|
174
|
+
|
175
|
+
@default_section = false
|
176
|
+
if options[:section] == DEFAULT_SECTION_MARKER
|
177
|
+
options[:section] = DEFAULT_SECTION
|
178
|
+
@default_section = true
|
179
|
+
end
|
180
|
+
|
109
181
|
if name == 'environment' && options[:section] == 'main'
|
110
182
|
Puppet.warning _(<<-EOM).chomp
|
111
183
|
The environment should be set in either the `[user]`, `[agent]`, or `[master]`
|
@@ -119,6 +191,8 @@ https://puppet.com/docs/puppet/latest/configuration.html#environment
|
|
119
191
|
EOM
|
120
192
|
end
|
121
193
|
|
194
|
+
report_section_and_environment(options[:section], Puppet.settings[:environment])
|
195
|
+
|
122
196
|
path = Puppet::FileSystem.pathname(Puppet.settings.which_configuration_file)
|
123
197
|
Puppet::FileSystem.touch(path)
|
124
198
|
Puppet::FileSystem.open(path, nil, 'r+:UTF-8') do |file|
|
@@ -151,7 +225,12 @@ https://puppet.com/docs/puppet/latest/configuration.html#environment
|
|
151
225
|
EOT
|
152
226
|
|
153
227
|
when_invoked do |name, options|
|
154
|
-
|
228
|
+
|
229
|
+
@default_section = false
|
230
|
+
if options[:section] == DEFAULT_SECTION_MARKER
|
231
|
+
options[:section] = DEFAULT_SECTION
|
232
|
+
@default_section = true
|
233
|
+
end
|
155
234
|
|
156
235
|
path = Puppet::FileSystem.pathname(Puppet.settings.which_configuration_file)
|
157
236
|
if Puppet::FileSystem.exist?(path)
|
@@ -159,6 +238,9 @@ https://puppet.com/docs/puppet/latest/configuration.html#environment
|
|
159
238
|
Puppet::Settings::IniFile.update(file) do |config|
|
160
239
|
setting_string = config.delete(options[:section], name)
|
161
240
|
if setting_string
|
241
|
+
|
242
|
+
report_section_and_environment(options[:section], Puppet.settings[:environment])
|
243
|
+
|
162
244
|
puts(_("Deleted setting from '%{section_name}': '%{setting_string}'") %
|
163
245
|
{ section_name: options[:section], name: name, setting_string: setting_string.strip })
|
164
246
|
else
|
data/lib/puppet/face/epp.rb
CHANGED
@@ -104,13 +104,19 @@ Puppet::Face.define(:epp, '0.0.1') do
|
|
104
104
|
|
105
105
|
action (:dump) do
|
106
106
|
summary _("Outputs a dump of the internal template parse tree for debugging")
|
107
|
-
arguments "-e <source> | [<templates> ...] "
|
107
|
+
arguments "[--format <old|pn|json>] [--pretty] { -e <source> | [<templates> ...] } "
|
108
108
|
returns _("A dump of the resulting AST model unless there are syntax or validation errors.")
|
109
109
|
description <<-'EOT'
|
110
110
|
The dump action parses and validates the EPP syntax and dumps the resulting AST model
|
111
111
|
in a human readable (but not necessarily an easy to understand) format.
|
112
|
-
|
113
|
-
|
112
|
+
|
113
|
+
The output format can be controlled using the --format <old|pn|json> where:
|
114
|
+
* 'old' is the default, but now deprecated format which is not API.
|
115
|
+
* 'pn' is the Puppet Extended S-Expression Notation.
|
116
|
+
* 'json' outputs the same graph as 'pn' but with JSON syntax.
|
117
|
+
|
118
|
+
The output will be "pretty printed" when the option --pretty is given together with --format 'pn' or 'json'.
|
119
|
+
This option has no effect on the 'old' format.
|
114
120
|
|
115
121
|
The command accepts one or more templates (.epp) files, or an -e followed by the template
|
116
122
|
source text. The given templates can be paths to template files, or references
|
@@ -137,6 +143,14 @@ Puppet::Face.define(:epp, '0.0.1') do
|
|
137
143
|
summary _("Whether or not to validate the parsed result, if no-validate only syntax errors are reported.")
|
138
144
|
end
|
139
145
|
|
146
|
+
option('--format ' + _('<old, pn, or json>')) do
|
147
|
+
summary _("Get result in 'old' (deprecated format), 'pn' (new format), or 'json' (new format in JSON).")
|
148
|
+
end
|
149
|
+
|
150
|
+
option('--pretty') do
|
151
|
+
summary _('Pretty print output. Only applicable together with --format pn or json')
|
152
|
+
end
|
153
|
+
|
140
154
|
option("--[no-]header") do
|
141
155
|
summary _("Whether or not to show a file name header between files.")
|
142
156
|
end
|
@@ -353,7 +367,6 @@ Puppet::Face.define(:epp, '0.0.1') do
|
|
353
367
|
|
354
368
|
def dump_parse(source, filename, options, show_filename = true)
|
355
369
|
output = ""
|
356
|
-
dumper = Puppet::Pops::Model::ModelTreeDumper.new
|
357
370
|
evaluating_parser = Puppet::Pops::Parser::EvaluatingParser::EvaluatingEppParser.new
|
358
371
|
begin
|
359
372
|
if options[:validate]
|
@@ -365,7 +378,19 @@ Puppet::Face.define(:epp, '0.0.1') do
|
|
365
378
|
if show_filename && options[:header]
|
366
379
|
output << "--- #{filename}\n"
|
367
380
|
end
|
368
|
-
|
381
|
+
fmt = options[:format]
|
382
|
+
if fmt.nil? || fmt == 'old'
|
383
|
+
output << Puppet::Pops::Model::ModelTreeDumper.new.dump(parse_result) << "\n"
|
384
|
+
else
|
385
|
+
require 'puppet/pops/pn'
|
386
|
+
pn = Puppet::Pops::Model::PNTransformer.transform(parse_result)
|
387
|
+
case fmt
|
388
|
+
when 'json'
|
389
|
+
options[:pretty] ? JSON.pretty_unparse(pn.to_data) : JSON.dump(pn.to_data)
|
390
|
+
else
|
391
|
+
pn.format(options[:pretty] ? Puppet::Pops::PN::Indent.new(' ') : nil, output)
|
392
|
+
end
|
393
|
+
end
|
369
394
|
rescue Puppet::ParseError => detail
|
370
395
|
if show_filename
|
371
396
|
Puppet.err("--- #{filename}")
|
@@ -484,7 +509,7 @@ Puppet::Face.define(:epp, '0.0.1') do
|
|
484
509
|
if fact_file.is_a?(Hash) # when used via the Face API
|
485
510
|
given_facts = fact_file
|
486
511
|
elsif fact_file.end_with?("json")
|
487
|
-
given_facts =
|
512
|
+
given_facts = Puppet::Util::Json.load(Puppet::FileSystem.read(fact_file, :encoding => 'utf-8'))
|
488
513
|
else
|
489
514
|
given_facts = YAML.load(Puppet::FileSystem.read(fact_file, :encoding => 'utf-8'))
|
490
515
|
end
|
data/lib/puppet/face/facts.rb
CHANGED
@@ -35,4 +35,53 @@ Puppet::Indirector::Face.define(:facts, '0.0.1') do
|
|
35
35
|
|
36
36
|
deactivate_action(:destroy)
|
37
37
|
deactivate_action(:search)
|
38
|
+
|
39
|
+
action(:upload) do
|
40
|
+
summary _("Upload local facts to the puppet master.")
|
41
|
+
description <<-'EOT'
|
42
|
+
Reads facts from the local system using the `facter` terminus, then
|
43
|
+
saves the returned facts using the rest terminus.
|
44
|
+
EOT
|
45
|
+
returns "Nothing."
|
46
|
+
notes <<-'EOT'
|
47
|
+
This action requires that the puppet master's `auth.conf` file
|
48
|
+
allow `PUT` or `save` access to the `/puppet/v3/facts` API endpoint.
|
49
|
+
|
50
|
+
For details on configuring Puppet Server's `auth.conf`, see:
|
51
|
+
|
52
|
+
<https://puppet.com/docs/puppetserver/latest/config_file_auth.html>
|
53
|
+
|
54
|
+
For legacy Rack-based Puppet Masters, see:
|
55
|
+
|
56
|
+
<https://puppet.com/docs/puppet/latest/config_file_auth.html>
|
57
|
+
EOT
|
58
|
+
examples <<-'EOT'
|
59
|
+
Upload facts:
|
60
|
+
|
61
|
+
$ puppet facts upload
|
62
|
+
EOT
|
63
|
+
|
64
|
+
render_as :json
|
65
|
+
|
66
|
+
when_invoked do |options|
|
67
|
+
# Use `agent` sections settings for certificates, Puppet Server URL,
|
68
|
+
# etc. instead of `user` section settings.
|
69
|
+
Puppet.settings.preferred_run_mode = :agent
|
70
|
+
Puppet::Node::Facts.indirection.terminus_class = :facter
|
71
|
+
|
72
|
+
facts = Puppet::Node::Facts.indirection.find(Puppet[:node_name_value])
|
73
|
+
unless Puppet[:node_name_fact].empty?
|
74
|
+
Puppet[:node_name_value] = facts.values[Puppet[:node_name_fact]]
|
75
|
+
facts.name = Puppet[:node_name_value]
|
76
|
+
end
|
77
|
+
|
78
|
+
Puppet::Node::Facts.indirection.terminus_class = :rest
|
79
|
+
server = Puppet::Node::Facts::Rest.server
|
80
|
+
Puppet.notice(_("Uploading facts for '%{node}' to: '%{server}'") % {
|
81
|
+
node: Puppet[:node_name_value],
|
82
|
+
server: server})
|
83
|
+
|
84
|
+
Puppet::Node::Facts.indirection.save(facts)
|
85
|
+
end
|
86
|
+
end
|
38
87
|
end
|
data/lib/puppet/face/help.rb
CHANGED
@@ -26,47 +26,33 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
26
26
|
|
27
27
|
default
|
28
28
|
when_invoked do |*args|
|
29
|
-
# Check our invocation, because we want varargs and can't do defaults
|
30
|
-
# yet. REVISIT: when we do option defaults, and positional options, we
|
31
|
-
# should rewrite this to use those. --daniel 2011-04-04
|
32
29
|
options = args.pop
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
xtuevmh0m7xp6eoswin70khm5nrggkui6z8vdjnrgdqeojq40fya5qexk97g4d8qgw0hvokr
|
42
|
-
pli1biaz503grqf2ycy0ppkhz1hwhl6ifbpet7xd6jjepq4oe0ofl575lxdzjeg25217zyl4
|
43
|
-
nokn6tj5pq7gcdsjre75rqylydh7iia7s3yrko4f5ud9v8hdtqhu60stcitirvfj6zphppmx
|
44
|
-
7wfm7i9641d00bhs44n6vh6qvx39pg3urifgr6ihx3e0j1ychzypunyou7iplevitkyg6gbg
|
45
|
-
wm08oy1rvogcjakkqc1f7y1awdfvlb4ego8wrtgu9vzw4vmj59utwifn2ejcs569dh1oaavi
|
46
|
-
sc581n7jjg1dugzdu094fdobtx6rsvk3sfctvqnr36xctold
|
47
|
-
EOT
|
48
|
-
353.times{i,x=i.divmod(1184);a,b=x.divmod(37);print(c[a]*b)}
|
49
|
-
end
|
50
|
-
raise ArgumentError, _("Puppet help only takes two (optional) arguments: a subcommand and an action")
|
30
|
+
|
31
|
+
if default_case?(args) || help_for_help?(args)
|
32
|
+
return erb('global.erb').result(binding)
|
33
|
+
end
|
34
|
+
|
35
|
+
if args.length > 2
|
36
|
+
#TRANSLATORS 'puppet help' is a command line and should not be translated
|
37
|
+
raise ArgumentError, _("The 'puppet help' command takes two (optional) arguments: a subcommand and an action")
|
51
38
|
end
|
52
39
|
|
53
40
|
version = :current
|
54
|
-
if options.has_key? :version
|
55
|
-
if options[:version].to_s !~ /^current$/i
|
41
|
+
if options.has_key? :version
|
42
|
+
if options[:version].to_s !~ /^current$/i
|
56
43
|
version = options[:version]
|
57
44
|
else
|
58
|
-
if args.length == 0
|
59
|
-
|
45
|
+
if args.length == 0
|
46
|
+
#TRANSLATORS '--version' is a command line option and should not be translated
|
47
|
+
raise ArgumentError, _("Supplying a '--version' only makes sense when a Faces subcommand is given")
|
60
48
|
end
|
61
49
|
end
|
62
50
|
end
|
63
51
|
|
64
|
-
return erb('global.erb').result(binding) if args.empty?
|
65
|
-
|
66
52
|
facename, actionname = args
|
67
|
-
if legacy_applications.include? facename
|
68
|
-
if actionname
|
69
|
-
raise ArgumentError, _("
|
53
|
+
if legacy_applications.include? facename
|
54
|
+
if actionname
|
55
|
+
raise ArgumentError, _("The legacy subcommand '%{sub_command}' does not support supplying an action") % { sub_command: facename }
|
70
56
|
end
|
71
57
|
return render_application_help(facename)
|
72
58
|
else
|
@@ -75,6 +61,14 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
75
61
|
end
|
76
62
|
end
|
77
63
|
|
64
|
+
def default_case?(args)
|
65
|
+
args.empty?
|
66
|
+
end
|
67
|
+
|
68
|
+
def help_for_help?(args)
|
69
|
+
args.length == 1 && args.first == 'help'
|
70
|
+
end
|
71
|
+
|
78
72
|
def render_application_help(applicationname)
|
79
73
|
return Puppet::Application[applicationname].help
|
80
74
|
rescue StandardError, LoadError => detail
|
@@ -102,7 +96,7 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
102
96
|
face = Puppet::Face[facename.to_sym, version]
|
103
97
|
if actionname
|
104
98
|
action = face.get_action(actionname.to_sym)
|
105
|
-
if
|
99
|
+
if ! action
|
106
100
|
fail ArgumentError, _("Unable to load action %{actionname} from %{face}") % { actionname: actionname, face: face }
|
107
101
|
end
|
108
102
|
end
|
@@ -145,10 +139,12 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
145
139
|
begin
|
146
140
|
face = Puppet::Face[appname, :current]
|
147
141
|
# Add deprecation message to summary if the face is deprecated
|
148
|
-
summary = face.deprecated? ? face.summary + _("
|
142
|
+
summary = face.deprecated? ? face.summary + ' ' + _("(Deprecated)") : face.summary
|
149
143
|
result << [appname, summary]
|
150
144
|
rescue StandardError, LoadError
|
151
|
-
|
145
|
+
error_message = _("!%{sub_command}! Subcommand unavailable due to error.") % { sub_command: appname }
|
146
|
+
error_message += ' ' + _("Check error logs.")
|
147
|
+
result << [ error_message ]
|
152
148
|
end
|
153
149
|
else
|
154
150
|
begin
|
@@ -158,7 +154,9 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
158
154
|
end
|
159
155
|
result << [appname, summary]
|
160
156
|
rescue StandardError, LoadError
|
161
|
-
|
157
|
+
error_message = _("!%{sub_command}! Subcommand unavailable due to error.") % { sub_command: appname }
|
158
|
+
error_message += ' ' + _("Check error logs.")
|
159
|
+
result << [ error_message ]
|
162
160
|
end
|
163
161
|
end
|
164
162
|
end
|
@@ -171,7 +169,7 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
171
169
|
# formatted. If we can't match the pattern we expect we return the empty
|
172
170
|
# string to ensure we don't blow up in the summary. --daniel 2011-04-11
|
173
171
|
while line = help.shift do
|
174
|
-
if md = /^puppet-#{appname}\([^\)]+\) -- (.*)$/.match(line)
|
172
|
+
if md = /^puppet-#{appname}\([^\)]+\) -- (.*)$/.match(line)
|
175
173
|
return md[1]
|
176
174
|
end
|
177
175
|
end
|