puppet 5.5.17-x64-mingw32 → 5.5.22-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +1 -1
- data/Gemfile +4 -5
- data/Gemfile.lock +59 -55
- data/ext/build_defaults.yaml +1 -0
- data/ext/cert_inspector +3 -3
- data/ext/puppet-test +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +4 -4
- data/ext/windows/service/daemon.rb +54 -8
- data/install.rb +6 -6
- data/lib/puppet.rb +5 -2
- data/lib/puppet/agent.rb +5 -13
- data/lib/puppet/application.rb +1 -1
- data/lib/puppet/application/agent.rb +3 -1
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +3 -9
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +13 -0
- data/lib/puppet/application/lookup.rb +1 -1
- data/lib/puppet/application/script.rb +2 -2
- data/lib/puppet/configurer.rb +106 -31
- data/lib/puppet/configurer/downloader.rb +33 -16
- data/lib/puppet/daemon.rb +1 -1
- data/lib/puppet/defaults.rb +86 -40
- data/lib/puppet/error.rb +9 -1
- data/lib/puppet/external/nagios/base.rb +1 -1
- data/lib/puppet/face/ca.rb +1 -1
- data/lib/puppet/face/module/list.rb +5 -5
- data/lib/puppet/face/module/search.rb +1 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/module/upgrade.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_system.rb +0 -8
- data/lib/puppet/file_system/memory_file.rb +1 -1
- data/lib/puppet/file_system/posix.rb +3 -2
- data/lib/puppet/file_system/uniquefile.rb +4 -0
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph/rb_tree_map.rb +2 -2
- data/lib/puppet/graph/simple_graph.rb +6 -5
- data/lib/puppet/indirector/catalog/compiler.rb +8 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +6 -0
- data/lib/puppet/indirector/resource/ral.rb +1 -3
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/loaders.rb +0 -1
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/module_tool/applications/builder.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
- data/lib/puppet/module_tool/tar/mini.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +13 -12
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/connection.rb +14 -12
- data/lib/puppet/network/http/pool.rb +7 -1
- data/lib/puppet/network/http/rack/rest.rb +2 -2
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +2 -2
- data/lib/puppet/node/environment.rb +11 -3
- data/lib/puppet/parser/ast.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -10
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loaders.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +22 -18
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/pn_parser.rb +17 -16
- data/lib/puppet/pops/puppet_stack.rb +51 -48
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/types/string_converter.rb +10 -10
- data/lib/puppet/pops/types/type_calculator.rb +24 -0
- data/lib/puppet/pops/types/types.rb +3 -3
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +19 -19
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mount.rb +1 -1
- data/lib/puppet/provider/mount/parsed.rb +8 -8
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +14 -3
- data/lib/puppet/provider/package/dnfmodule.rb +141 -0
- data/lib/puppet/provider/package/dpkg.rb +16 -18
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/openbsd.rb +14 -2
- data/lib/puppet/provider/package/pip.rb +37 -10
- data/lib/puppet/provider/package/pkg.rb +18 -5
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +4 -4
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/rpm.rb +6 -6
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +28 -20
- data/lib/puppet/provider/package/zypper.rb +1 -0
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
- data/lib/puppet/provider/selmodule/semodule.rb +43 -26
- data/lib/puppet/provider/service/daemontools.rb +9 -9
- data/lib/puppet/provider/service/openbsd.rb +1 -1
- data/lib/puppet/provider/service/rcng.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +2 -8
- data/lib/puppet/provider/service/systemd.rb +31 -13
- data/lib/puppet/provider/user/directoryservice.rb +31 -6
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +39 -20
- data/lib/puppet/provider/user/windows_adsi.rb +4 -5
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +1 -3
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/reference/type.rb +3 -9
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type.rb +10 -1
- data/lib/puppet/settings.rb +3 -3
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- data/lib/puppet/ssl/certificate_authority.rb +6 -5
- data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/test/test_helper.rb +20 -12
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +8 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +7 -3
- data/lib/puppet/type/file.rb +14 -2
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/group.rb +4 -2
- data/lib/puppet/type/interface.rb +1 -1
- data/lib/puppet/type/notify.rb +3 -2
- data/lib/puppet/type/package.rb +97 -8
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/selboolean.rb +17 -3
- data/lib/puppet/type/service.rb +2 -8
- data/lib/puppet/type/user.rb +5 -9
- data/lib/puppet/util.rb +35 -12
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +8 -14
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/log.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +3 -12
- data/lib/puppet/util/logging.rb +30 -18
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/nagios_maker.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +1 -1
- data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
- data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
- data/lib/puppet/util/pidlock.rb +12 -6
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/provider_features.rb +2 -4
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +3 -1
- data/lib/puppet/util/windows/adsi.rb +60 -30
- data/lib/puppet/util/windows/api_types.rb +45 -32
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +16 -15
- data/lib/puppet/util/windows/registry.rb +17 -15
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +2 -2
- data/locales/puppet.pot +362 -318
- data/man/man5/puppet.conf.5 +39 -9
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +1 -1
- 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 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +16 -1
- 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 +1 -1
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/integration/configurer_spec.rb +66 -0
- data/spec/integration/data_binding_spec.rb +1 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/faces/plugin_spec.rb +29 -47
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/notify_spec.rb +46 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +34 -26
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer_spec.rb +430 -415
- data/spec/unit/daemon_spec.rb +0 -1
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/forge/forge_spec.rb +1 -3
- data/spec/unit/forge/repository_spec.rb +1 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
- data/spec/unit/indirector/resource/ral_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +43 -1
- data/spec/unit/network/http/pool_spec.rb +32 -0
- data/spec/unit/node_spec.rb +7 -4
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/provider/exec_spec.rb +209 -0
- data/spec/unit/provider/group/groupadd_spec.rb +30 -1
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +13 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
- data/spec/unit/provider/package/dpkg_spec.rb +35 -7
- data/spec/unit/provider/package/openbsd_spec.rb +17 -0
- data/spec/unit/provider/package/pip_spec.rb +93 -22
- data/spec/unit/provider/package/pkg_spec.rb +13 -1
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +36 -0
- data/spec/unit/provider/package/portage_spec.rb +4 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/yum_spec.rb +90 -0
- data/spec/unit/provider/package/zypper_spec.rb +13 -0
- data/spec/unit/provider/package_targetable_spec.rb +60 -0
- data/spec/unit/provider/selmodule_spec.rb +118 -47
- data/spec/unit/provider/service/daemontools_spec.rb +24 -0
- data/spec/unit/provider/service/runit_spec.rb +24 -0
- data/spec/unit/provider/service/systemd_spec.rb +109 -36
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +81 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +3 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/ssl/host_spec.rb +2 -0
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/type/exec_spec.rb +6 -12
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file_spec.rb +9 -4
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/selboolean_spec.rb +4 -6
- data/spec/unit/type/service_spec.rb +9 -8
- data/spec/unit/type/user_spec.rb +19 -13
- data/spec/unit/util/execution_spec.rb +16 -0
- data/spec/unit/util/http_proxy_spec.rb +97 -0
- data/spec/unit/util/log/destinations_spec.rb +2 -26
- data/spec/unit/util/log_spec.rb +0 -138
- data/spec/unit/util/logging_spec.rb +200 -0
- data/spec/unit/util/pidlock_spec.rb +67 -40
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/windows/adsi_spec.rb +55 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/tasks/manpages.rake +1 -0
- metadata +16 -7
- data/lib/puppet/pops/loader/null_loader.rb +0 -60
- data/locales/ja/puppet.po +0 -12114
- data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -337,10 +337,11 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
337
337
|
end
|
338
338
|
|
339
339
|
def replace_sensitive_data
|
340
|
-
parameters.
|
340
|
+
parameters.keys.each do |name|
|
341
|
+
param = parameters[name]
|
341
342
|
if param.value.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive)
|
342
343
|
@sensitive_parameters << name
|
343
|
-
|
344
|
+
parameters[name] = Puppet::Parser::Resource::Param.from_param(param, param.value.unwrap)
|
344
345
|
end
|
345
346
|
end
|
346
347
|
end
|
@@ -69,11 +69,7 @@ module Adaptable
|
|
69
69
|
#
|
70
70
|
def self.get(o)
|
71
71
|
attr_name = self_attr_name
|
72
|
-
|
73
|
-
o.instance_variable_get(attr_name)
|
74
|
-
else
|
75
|
-
nil
|
76
|
-
end
|
72
|
+
o.instance_variable_get(attr_name)
|
77
73
|
end
|
78
74
|
|
79
75
|
# Returns an existing adapter for the given object, or creates a new adapter if the
|
@@ -94,17 +90,16 @@ module Adaptable
|
|
94
90
|
#
|
95
91
|
def self.adapt(o, &block)
|
96
92
|
attr_name = self_attr_name
|
97
|
-
adapter = if
|
93
|
+
adapter = if value = o.instance_variable_get(attr_name)
|
98
94
|
value
|
99
95
|
else
|
100
96
|
associate_adapter(create_adapter(o), o)
|
101
97
|
end
|
102
98
|
if block_given?
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
block.call(adapter, o)
|
99
|
+
if block.arity == 1
|
100
|
+
block.call(adapter)
|
101
|
+
else
|
102
|
+
block.call(adapter, o)
|
108
103
|
end
|
109
104
|
end
|
110
105
|
adapter
|
@@ -130,8 +125,7 @@ module Adaptable
|
|
130
125
|
def self.adapt_new(o, &block)
|
131
126
|
adapter = associate_adapter(create_adapter(o), o)
|
132
127
|
if block_given?
|
133
|
-
|
134
|
-
when 1
|
128
|
+
if block.arity == 1
|
135
129
|
block.call(adapter)
|
136
130
|
else
|
137
131
|
block.call(adapter, o)
|
data/lib/puppet/pops/adapters.rb
CHANGED
@@ -85,6 +85,13 @@ module Adapters
|
|
85
85
|
|
86
86
|
class PathsAndNameCacheAdapter < Puppet::Pops::Adaptable::Adapter
|
87
87
|
attr_accessor :cache, :paths
|
88
|
+
|
89
|
+
def self.create_adapter(env)
|
90
|
+
adapter = super(env)
|
91
|
+
adapter.paths = env.modulepath.map { |p| Pathname.new(p) }
|
92
|
+
adapter.cache = {}
|
93
|
+
adapter
|
94
|
+
end
|
88
95
|
end
|
89
96
|
|
90
97
|
# Attempts to find the module that `instance` originates from by looking at it's {SourcePosAdapter} and
|
@@ -103,10 +110,7 @@ module Adapters
|
|
103
110
|
def self.loader_name_by_source(environment, instance, file)
|
104
111
|
file = instance.file if file.nil?
|
105
112
|
return nil if file.nil? || EMPTY_STRING == file
|
106
|
-
pn_adapter = PathsAndNameCacheAdapter.adapt(environment)
|
107
|
-
a.paths ||= environment.modulepath.map { |p| Pathname.new(p) }
|
108
|
-
a.cache ||= {}
|
109
|
-
end
|
113
|
+
pn_adapter = PathsAndNameCacheAdapter.adapt(environment)
|
110
114
|
dir = File.dirname(file)
|
111
115
|
pn_adapter.cache.fetch(dir) do |key|
|
112
116
|
mod = find_module_for_dir(environment, pn_adapter.paths, dir)
|
@@ -20,14 +20,14 @@ class AccessOperator
|
|
20
20
|
@semantic = access_expression
|
21
21
|
end
|
22
22
|
|
23
|
-
def access
|
23
|
+
def access(o, scope, *keys)
|
24
24
|
@@access_visitor.visit_this_2(self, o, scope, keys)
|
25
25
|
end
|
26
26
|
|
27
27
|
protected
|
28
28
|
|
29
29
|
def access_Object(o, scope, keys)
|
30
|
-
type = Puppet::Pops::Types::TypeCalculator.
|
30
|
+
type = Puppet::Pops::Types::TypeCalculator.infer_callable_methods_t(o)
|
31
31
|
if type.is_a?(Puppet::Pops::Types::TypeWithMembers)
|
32
32
|
access_func = type['[]']
|
33
33
|
return access_func.invoke(o, scope, keys) unless access_func.nil?
|
@@ -45,9 +45,7 @@ class Puppet::Pops::Evaluator::Collectors::AbstractCollector
|
|
45
45
|
return false if objects.empty?
|
46
46
|
|
47
47
|
if @overrides and !objects.empty?
|
48
|
-
overrides[:source].
|
49
|
-
true
|
50
|
-
end
|
48
|
+
overrides[:source].override = true
|
51
49
|
|
52
50
|
objects.each do |res|
|
53
51
|
unless @collected.include?(res.ref)
|
@@ -947,7 +947,7 @@ class EvaluatorImpl
|
|
947
947
|
name = name.value # the string function name
|
948
948
|
|
949
949
|
obj = receiver[0]
|
950
|
-
receiver_type = Types::TypeCalculator.
|
950
|
+
receiver_type = Types::TypeCalculator.infer_callable_methods_t(obj)
|
951
951
|
if receiver_type.is_a?(Types::TypeWithMembers)
|
952
952
|
member = receiver_type[name]
|
953
953
|
unless member.nil?
|
@@ -35,10 +35,11 @@ module Puppet::Pops::Evaluator::ExternalSyntaxSupport
|
|
35
35
|
def lookup_keys_for_syntax(syntax)
|
36
36
|
segments = syntax.split(/\+/)
|
37
37
|
result = []
|
38
|
-
|
38
|
+
loop do
|
39
39
|
result << segments.join("+")
|
40
40
|
segments.shift
|
41
|
-
|
41
|
+
break if segments.empty?
|
42
|
+
end
|
42
43
|
result
|
43
44
|
end
|
44
45
|
|
@@ -33,7 +33,7 @@ module Runtime3Support
|
|
33
33
|
# @raise [Puppet::ParseError] an evaluation error initialized from the arguments (TODO: Change to EvaluationError?)
|
34
34
|
#
|
35
35
|
def optionally_fail(issue, semantic, options={}, except=nil)
|
36
|
-
if except.nil?
|
36
|
+
if except.nil? && diagnostic_producer.severity_producer[issue] == :error
|
37
37
|
# Want a stacktrace, and it must be passed as an exception
|
38
38
|
begin
|
39
39
|
raise EvaluationError.new()
|
@@ -299,10 +299,10 @@ module Runtime3Support
|
|
299
299
|
# 'ruby -wc' thinks that _func is unused, because the only reference to it
|
300
300
|
# is inside of the Kernel.eval string below. By prefixing it with the
|
301
301
|
# underscore, we let Ruby know to not worry about whether it's unused or not.
|
302
|
-
if loader &&
|
302
|
+
if loader && func = loader.load(:function, name)
|
303
303
|
Puppet::Util::Profiler.profile(name, [:functions, name]) do
|
304
|
-
# Add stack frame when calling.
|
305
|
-
return
|
304
|
+
# Add stack frame when calling.
|
305
|
+
return Puppet::Pops::PuppetStack.stack(file || '', line, func, :call, [scope, *args], &block)
|
306
306
|
end
|
307
307
|
end
|
308
308
|
# Call via 3x API if function exists there
|
data/lib/puppet/pops/issues.rb
CHANGED
@@ -913,5 +913,10 @@ module Issues
|
|
913
913
|
LOADER_FAILURE = issue :LOADER_FAILURE, :type do
|
914
914
|
_('Failed to load: %{type_name}') % { type: type }
|
915
915
|
end
|
916
|
+
|
917
|
+
DEPRECATED_APP_ORCHESTRATION = issue :DEPRECATED_APP_ORCHESTRATION, :klass do
|
918
|
+
_("Use of the application-orchestration %{expr} is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html" % { expr: label(klass) })
|
919
|
+
end
|
920
|
+
|
916
921
|
end
|
917
922
|
end
|
data/lib/puppet/pops/loaders.rb
CHANGED
@@ -283,7 +283,7 @@ class Loaders
|
|
283
283
|
nil
|
284
284
|
elsif File.directory?(file)
|
285
285
|
raise Puppet::Error, "manifest of environment '#{@environment.name}' appoints directory '#{file}'. It must be a file"
|
286
|
-
elsif File.
|
286
|
+
elsif File.exist?(file)
|
287
287
|
parser.parse_file(file)
|
288
288
|
else
|
289
289
|
raise Puppet::Error, "manifest of environment '#{@environment.name}' appoints '#{file}'. It does not exist"
|
@@ -339,6 +339,7 @@ class HieraConfig
|
|
339
339
|
def self.not_implemented(impl, method_name)
|
340
340
|
raise NotImplementedError, "The class #{impl.class.name} should have implemented the method #{method_name}()"
|
341
341
|
end
|
342
|
+
private_class_method :not_implemented
|
342
343
|
end
|
343
344
|
|
344
345
|
# @api private
|
@@ -30,7 +30,7 @@ module SubLookup
|
|
30
30
|
raise yield('Syntax error') unless segments.size * 2 == count + 1
|
31
31
|
segments.map! do |segment|
|
32
32
|
segment.strip!
|
33
|
-
if segment.start_with?('"'
|
33
|
+
if segment.start_with?('"', "'")
|
34
34
|
segment[1..-2]
|
35
35
|
elsif segment =~ /^(:?[+-]?[0-9]+)$/
|
36
36
|
segment.to_i
|
@@ -173,12 +173,14 @@ module Puppet::Pops
|
|
173
173
|
|
174
174
|
protected
|
175
175
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
176
|
+
class << self
|
177
|
+
# Returns the type used to validate the options hash
|
178
|
+
#
|
179
|
+
# @return [Types::PStructType] the puppet type
|
180
|
+
#
|
181
|
+
def options_t
|
182
|
+
@options_t ||=Types::TypeParser.singleton.parse("Struct[{strategy=>Optional[Pattern[/#{key}/]]}]")
|
183
|
+
end
|
182
184
|
end
|
183
185
|
|
184
186
|
# Returns the type used to validate the options hash
|
@@ -383,18 +385,20 @@ module Puppet::Pops
|
|
383
385
|
|
384
386
|
protected
|
385
387
|
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
388
|
+
class << self
|
389
|
+
# Returns a type that allows all deep_merge options except 'preserve_unmergeables' since we force
|
390
|
+
# the setting of that option to false
|
391
|
+
#
|
392
|
+
# @return [Types::PAnyType] the puppet type used when validating the options hash
|
393
|
+
def options_t
|
394
|
+
@options_t ||= Types::TypeParser.singleton.parse('Struct[{'\
|
395
|
+
"strategy=>Optional[Pattern[#{key}]],"\
|
396
|
+
'knockout_prefix=>Optional[String],'\
|
397
|
+
'merge_debug=>Optional[Boolean],'\
|
398
|
+
'merge_hash_arrays=>Optional[Boolean],'\
|
399
|
+
'sort_merged_arrays=>Optional[Boolean],'\
|
400
|
+
'}]')
|
401
|
+
end
|
398
402
|
end
|
399
403
|
|
400
404
|
def value_t
|
@@ -136,7 +136,7 @@ module HeredocSupport
|
|
136
136
|
# simply leaves lines that have text in the margin untouched.
|
137
137
|
#
|
138
138
|
processed_lines = lines.collect {|s| s.gsub(leading_pattern, '') }
|
139
|
-
margin_per_line = processed_lines.length
|
139
|
+
margin_per_line = Array.new(processed_lines.length) {|x| lines[x].length - processed_lines[x].length }
|
140
140
|
lines = processed_lines
|
141
141
|
else
|
142
142
|
# Array with a 0 per line
|
@@ -23,7 +23,7 @@ module Puppet::Pops::Parser::InterpolationSupport
|
|
23
23
|
value,terminator = slurp_dqstring()
|
24
24
|
text = value
|
25
25
|
after = scn.pos
|
26
|
-
|
26
|
+
loop do
|
27
27
|
case terminator
|
28
28
|
when '"'
|
29
29
|
# simple case, there was no interpolation, return directly
|
@@ -63,7 +63,7 @@ module Puppet::Pops::Parser::InterpolationSupport
|
|
63
63
|
value,terminator = slurp_dqstring
|
64
64
|
text = value
|
65
65
|
after = scn.pos
|
66
|
-
|
66
|
+
loop do
|
67
67
|
case terminator
|
68
68
|
when '"'
|
69
69
|
# simple case, there was no further interpolation, return directly
|
@@ -107,7 +107,7 @@ module Puppet::Pops::Parser::InterpolationSupport
|
|
107
107
|
value,terminator = slurp_uqstring()
|
108
108
|
text = value
|
109
109
|
after = scn.pos
|
110
|
-
|
110
|
+
loop do
|
111
111
|
case terminator
|
112
112
|
when ''
|
113
113
|
# simple case, there was no interpolation, return directly
|
@@ -147,7 +147,7 @@ module Puppet::Pops::Parser::InterpolationSupport
|
|
147
147
|
value,terminator = slurp_uqstring
|
148
148
|
text = value
|
149
149
|
after = scn.pos
|
150
|
-
|
150
|
+
loop do
|
151
151
|
case terminator
|
152
152
|
when ''
|
153
153
|
# simple case, there was no further interpolation, return directly
|
@@ -90,7 +90,7 @@ class Locator
|
|
90
90
|
f = Puppet::Util.path_to_uri(f).to_s
|
91
91
|
end
|
92
92
|
offset = ast.offset
|
93
|
-
URI("#{f}?line=#{line_for_offset(offset)
|
93
|
+
URI("#{f}?line=#{line_for_offset(offset)}&pos=#{pos_on_line(offset)}")
|
94
94
|
end
|
95
95
|
|
96
96
|
class AbstractLocator < Locator
|
@@ -48,6 +48,23 @@ class PNParser
|
|
48
48
|
parse_next
|
49
49
|
end
|
50
50
|
|
51
|
+
def self.char_types
|
52
|
+
unless instance_variable_defined?(:@char_types)
|
53
|
+
@char_types = Array.new(0x80, TYPE_IDENTIFIER)
|
54
|
+
@char_types[0] = TYPE_END
|
55
|
+
[0x09, 0x0d, 0x0a, 0x20].each { |n| @char_types[n] = TYPE_WS }
|
56
|
+
[TOKEN_LP, TOKEN_RP, TOKEN_LB, TOKEN_RB, TOKEN_LC, TOKEN_RC].each { |n| @char_types[n] = TYPE_DELIM }
|
57
|
+
@char_types[0x2d] = TYPE_MINUS
|
58
|
+
(0x30..0x39).each { |n| @char_types[n] = TYPE_DIGIT }
|
59
|
+
(0x41..0x5a).each { |n| @char_types[n] = TYPE_ALPHA }
|
60
|
+
(0x61..0x7a).each { |n| @char_types[n] = TYPE_ALPHA }
|
61
|
+
@char_types[TOKEN_KEY] = TYPE_KEY_START
|
62
|
+
@char_types[TOKEN_STRING] = TYPE_STRING_START
|
63
|
+
@char_types.freeze
|
64
|
+
end
|
65
|
+
@char_types
|
66
|
+
end
|
67
|
+
|
51
68
|
private
|
52
69
|
|
53
70
|
def parse_next
|
@@ -128,22 +145,6 @@ class PNParser
|
|
128
145
|
end
|
129
146
|
|
130
147
|
# All methods below belong to the PN lexer
|
131
|
-
def self.char_types
|
132
|
-
unless instance_variable_defined?(:@char_types)
|
133
|
-
@char_types = Array.new(0x80, TYPE_IDENTIFIER)
|
134
|
-
@char_types[0] = TYPE_END
|
135
|
-
[0x09, 0x0d, 0x0a, 0x20].each { |n| @char_types[n] = TYPE_WS }
|
136
|
-
[TOKEN_LP, TOKEN_RP, TOKEN_LB, TOKEN_RB, TOKEN_LC, TOKEN_RC].each { |n| @char_types[n] = TYPE_DELIM }
|
137
|
-
@char_types[0x2d] = TYPE_MINUS
|
138
|
-
(0x30..0x39).each { |n| @char_types[n] = TYPE_DIGIT }
|
139
|
-
(0x41..0x5a).each { |n| @char_types[n] = TYPE_ALPHA }
|
140
|
-
(0x61..0x7a).each { |n| @char_types[n] = TYPE_ALPHA }
|
141
|
-
@char_types[TOKEN_KEY] = TYPE_KEY_START
|
142
|
-
@char_types[TOKEN_STRING] = TYPE_STRING_START
|
143
|
-
@char_types.freeze
|
144
|
-
end
|
145
|
-
@char_types
|
146
|
-
end
|
147
148
|
|
148
149
|
def next_token
|
149
150
|
skip_white
|
@@ -1,57 +1,60 @@
|
|
1
|
-
module Puppet::Pops
|
2
|
-
# Module for making a call such that there is an identifiable entry on
|
3
|
-
# the ruby call stack enabling getting a puppet call stack
|
4
|
-
# To use this make a call with:
|
5
|
-
# ```
|
6
|
-
# Puppet::Pops::PuppetStack.stack(file, line, receiver, message, args)
|
7
|
-
# ```
|
8
|
-
# To get the stack call:
|
9
|
-
# ```
|
10
|
-
# Puppet::Pops::PuppetStack.stacktrace
|
11
|
-
#
|
12
|
-
# When getting a backtrace in Ruby, the puppet stack frames are
|
13
|
-
# identified as coming from "in 'stack'" and having a ".pp" file
|
14
|
-
# name.
|
15
|
-
# To support testing, a given file that is an empty string, or nil
|
16
|
-
# as well as a nil line number are supported. Such stack frames
|
17
|
-
# will be represented with the text `unknown` and `0´ respectively.
|
18
|
-
#
|
19
|
-
module PuppetStack
|
20
|
-
# Pattern matching an entry in the ruby stack that is a puppet entry
|
21
|
-
PP_ENTRY_PATTERN = /^(.*\.pp)?:([0-9]+):in (`stack'|`block in call_function')/
|
22
1
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
2
|
+
module Puppet
|
3
|
+
module Pops
|
4
|
+
# Utility class for keeping track of the "Puppet stack", ie the file
|
5
|
+
# and line numbers of Puppet Code that created the current context.
|
6
|
+
#
|
7
|
+
# To use this make a call with:
|
8
|
+
#
|
9
|
+
# ```rb
|
10
|
+
# Puppet::Pops::PuppetStack.stack(file, line, receiver, message, args)
|
11
|
+
# ```
|
12
|
+
#
|
13
|
+
# To get the stack call:
|
14
|
+
#
|
15
|
+
# ```rb
|
16
|
+
# Puppet::Pops::PuppetStack.stacktrace
|
17
|
+
# ```
|
18
|
+
#
|
19
|
+
# or
|
20
|
+
#
|
21
|
+
# ```rb
|
22
|
+
# Puppet::Pops::PuppetStack.top_of_stack
|
23
|
+
# ```
|
24
|
+
#
|
25
|
+
# To support testing, a given file that is an empty string, or nil
|
26
|
+
# as well as a nil line number are supported. Such stack frames
|
27
|
+
# will be represented with the text `unknown` and `0´ respectively.
|
28
|
+
module PuppetStack
|
29
|
+
@stack = Array.new
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
Kernel.eval("obj.send(message, *args)", Kernel.binding(), file, line)
|
34
|
-
end
|
35
|
-
end
|
31
|
+
def self.stack(file, line, obj, message, args, &block)
|
32
|
+
file = 'unknown' if (file.nil? || file == '')
|
33
|
+
line = 0 if line.nil?
|
36
34
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
result = nil
|
36
|
+
@stack.unshift([file, line])
|
37
|
+
begin
|
38
|
+
if block_given?
|
39
|
+
result = obj.send(message, *args, &block)
|
40
|
+
else
|
41
|
+
result = obj.send(message, *args)
|
42
|
+
end
|
43
|
+
ensure
|
44
|
+
@stack.shift()
|
45
|
+
end
|
46
|
+
result
|
41
47
|
end
|
42
|
-
memo
|
43
|
-
end
|
44
|
-
end
|
45
48
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
49
|
+
def self.stacktrace
|
50
|
+
@stack.dup
|
51
|
+
end
|
52
|
+
|
53
|
+
# Returns an Array with the top of the puppet stack, or an empty
|
54
|
+
# Array if there was no such entry.
|
55
|
+
def self.top_of_stack
|
56
|
+
@stack.first || []
|
52
57
|
end
|
53
58
|
end
|
54
|
-
[]
|
55
59
|
end
|
56
60
|
end
|
57
|
-
end
|