puppet 6.6.0-x86-mingw32 → 6.7.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +8 -8
- data/ext/solaris/smf/puppet.xml +2 -0
- data/ext/yaml_nodes.rb +7 -7
- data/lib/hiera_puppet.rb +2 -1
- data/lib/puppet/application/apply.rb +2 -3
- data/lib/puppet/application/doc.rb +2 -1
- data/lib/puppet/application/face_base.rb +22 -15
- data/lib/puppet/application/script.rb +4 -6
- data/lib/puppet/configurer.rb +10 -5
- data/lib/puppet/confine_collection.rb +2 -1
- data/lib/puppet/daemon.rb +3 -2
- data/lib/puppet/defaults.rb +8 -0
- data/lib/puppet/environments.rb +9 -7
- data/lib/puppet/etc.rb +1 -1
- data/lib/puppet/external/pson/pure/parser.rb +2 -1
- data/lib/puppet/face/epp.rb +4 -2
- data/lib/puppet/face/help.rb +3 -2
- data/lib/puppet/face/module/changes.rb +2 -1
- data/lib/puppet/file_bucket/dipper.rb +2 -1
- data/lib/puppet/file_serving/configuration.rb +2 -1
- data/lib/puppet/file_serving/fileset.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +4 -2
- data/lib/puppet/file_serving/metadata.rb +2 -1
- data/lib/puppet/file_serving/mount/file.rb +2 -1
- data/lib/puppet/file_serving/mount/locales.rb +2 -1
- data/lib/puppet/file_serving/mount/modules.rb +4 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -1
- data/lib/puppet/file_serving/mount/plugins.rb +2 -1
- data/lib/puppet/file_serving/mount/tasks.rb +4 -2
- data/lib/puppet/file_system/uniquefile.rb +4 -2
- data/lib/puppet/functions/match.rb +2 -3
- data/lib/puppet/generate/type.rb +2 -1
- data/lib/puppet/graph/relationship_graph.rb +2 -1
- data/lib/puppet/graph/simple_graph.rb +3 -2
- data/lib/puppet/indirector/catalog/compiler.rb +16 -8
- data/lib/puppet/indirector/certificate/rest.rb +2 -1
- data/lib/puppet/indirector/face.rb +2 -2
- data/lib/puppet/indirector/file_server.rb +4 -2
- data/lib/puppet/indirector/indirection.rb +12 -6
- data/lib/puppet/indirector/node/exec.rb +2 -1
- data/lib/puppet/indirector/report/processor.rb +2 -1
- data/lib/puppet/indirector/request.rb +9 -5
- data/lib/puppet/indirector/ssl_file.rb +10 -8
- data/lib/puppet/indirector/terminus.rb +6 -3
- data/lib/puppet/info_service.rb +9 -0
- data/lib/puppet/info_service/plan_information_service.rb +36 -0
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/interface/action.rb +10 -5
- data/lib/puppet/interface/action_manager.rb +2 -1
- data/lib/puppet/interface/documentation.rb +10 -7
- data/lib/puppet/interface/face_collection.rb +6 -3
- data/lib/puppet/interface/option.rb +4 -2
- data/lib/puppet/interface/option_manager.rb +4 -2
- data/lib/puppet/module.rb +35 -1
- data/lib/puppet/module/plan.rb +160 -0
- data/lib/puppet/module_tool.rb +2 -1
- data/lib/puppet/module_tool/applications/application.rb +2 -1
- data/lib/puppet/module_tool/applications/installer.rb +4 -2
- data/lib/puppet/module_tool/applications/upgrader.rb +4 -2
- data/lib/puppet/module_tool/contents_description.rb +2 -1
- data/lib/puppet/module_tool/metadata.rb +2 -3
- data/lib/puppet/module_tool/shared_behaviors.rb +2 -1
- data/lib/puppet/network/authconfig.rb +4 -2
- data/lib/puppet/network/authstore.rb +2 -1
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +6 -4
- data/lib/puppet/network/http/handler.rb +2 -1
- data/lib/puppet/network/http/request.rb +2 -1
- data/lib/puppet/network/http/route.rb +2 -1
- data/lib/puppet/network/resolver.rb +3 -2
- data/lib/puppet/network/rights.rb +2 -1
- data/lib/puppet/node.rb +8 -4
- data/lib/puppet/pal/catalog_compiler.rb +8 -1
- data/lib/puppet/pal/compiler.rb +2 -1
- data/lib/puppet/pal/pal_impl.rb +8 -0
- data/lib/puppet/pal/script_compiler.rb +4 -2
- data/lib/puppet/parameter.rb +4 -2
- data/lib/puppet/parameter/value_collection.rb +8 -8
- data/lib/puppet/parser/ast/pops_bridge.rb +2 -1
- data/lib/puppet/parser/compiler.rb +10 -5
- data/lib/puppet/parser/files.rb +2 -1
- data/lib/puppet/parser/functions.rb +2 -1
- data/lib/puppet/parser/relationship.rb +2 -1
- data/lib/puppet/parser/resource.rb +6 -3
- data/lib/puppet/parser/scope.rb +6 -4
- data/lib/puppet/parser/templatewrapper.rb +2 -1
- data/lib/puppet/parser/type_loader.rb +2 -1
- data/lib/puppet/pops/adaptable.rb +2 -5
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +2 -1
- data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +2 -1
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +8 -4
- data/lib/puppet/pops/loader/base_loader.rb +4 -2
- data/lib/puppet/pops/loader/dependency_loader.rb +4 -2
- data/lib/puppet/pops/loader/gem_support.rb +4 -2
- data/lib/puppet/pops/loader/loader.rb +4 -2
- data/lib/puppet/pops/loader/loader_paths.rb +2 -1
- data/lib/puppet/pops/loader/static_loader.rb +1 -1
- data/lib/puppet/pops/lookup/interpolation.rb +2 -1
- data/lib/puppet/pops/model/factory.rb +4 -2
- data/lib/puppet/pops/parser/epp_support.rb +2 -1
- data/lib/puppet/pops/parser/heredoc_support.rb +2 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +10 -5
- data/lib/puppet/pops/parser/lexer2.rb +6 -3
- data/lib/puppet/pops/parser/locator.rb +2 -1
- data/lib/puppet/pops/types/type_calculator.rb +1 -1
- data/lib/puppet/pops/types/type_parser.rb +4 -2
- data/lib/puppet/pops/validation.rb +2 -1
- data/lib/puppet/pops/validation/checker4_0.rb +6 -3
- data/lib/puppet/pops/visitor.rb +12 -6
- data/lib/puppet/property.rb +19 -16
- data/lib/puppet/property/ensure.rb +2 -1
- data/lib/puppet/property/keyvalue.rb +2 -1
- data/lib/puppet/property/list.rb +2 -1
- data/lib/puppet/provider.rb +10 -8
- data/lib/puppet/provider/exec.rb +7 -4
- data/lib/puppet/provider/file/posix.rb +6 -3
- data/lib/puppet/provider/group/groupadd.rb +2 -1
- data/lib/puppet/provider/group/ldap.rb +7 -4
- data/lib/puppet/provider/group/pw.rb +4 -2
- data/lib/puppet/provider/ldap.rb +8 -4
- data/lib/puppet/provider/nameservice.rb +8 -5
- data/lib/puppet/provider/nameservice/directoryservice.rb +8 -4
- data/lib/puppet/provider/network_device.rb +4 -2
- data/lib/puppet/provider/package.rb +2 -1
- data/lib/puppet/provider/package/aix.rb +4 -2
- data/lib/puppet/provider/package/appdmg.rb +4 -2
- data/lib/puppet/provider/package/apple.rb +2 -1
- data/lib/puppet/provider/package/apt.rb +4 -2
- data/lib/puppet/provider/package/blastwave.rb +2 -1
- data/lib/puppet/provider/package/dpkg.rb +6 -3
- data/lib/puppet/provider/package/fink.rb +2 -1
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/macports.rb +6 -3
- data/lib/puppet/provider/package/nim.rb +8 -4
- data/lib/puppet/provider/package/openbsd.rb +14 -8
- data/lib/puppet/provider/package/opkg.rb +2 -1
- data/lib/puppet/provider/package/pacman.rb +2 -1
- data/lib/puppet/provider/package/pip.rb +2 -1
- data/lib/puppet/provider/package/pkgdmg.rb +4 -2
- data/lib/puppet/provider/package/pkgng.rb +4 -2
- data/lib/puppet/provider/package/pkgutil.rb +2 -1
- data/lib/puppet/provider/package/portupgrade.rb +2 -1
- data/lib/puppet/provider/package/rpm.rb +8 -4
- data/lib/puppet/provider/package/windows/package.rb +2 -1
- data/lib/puppet/provider/parsedfile.rb +14 -7
- data/lib/puppet/provider/service/base.rb +7 -4
- data/lib/puppet/provider/service/launchd.rb +4 -2
- data/lib/puppet/provider/service/service.rb +2 -1
- data/lib/puppet/provider/service/upstart.rb +11 -8
- data/lib/puppet/provider/user/directoryservice.rb +2 -1
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/ldap.rb +8 -4
- data/lib/puppet/provider/user/openbsd.rb +2 -1
- data/lib/puppet/provider/user/pw.rb +2 -1
- data/lib/puppet/provider/user/user_role_add.rb +4 -2
- data/lib/puppet/provider/user/useradd.rb +7 -4
- data/lib/puppet/reference/providers.rb +2 -3
- data/lib/puppet/reference/type.rb +4 -2
- data/lib/puppet/relationship.rb +4 -9
- data/lib/puppet/resource.rb +16 -9
- data/lib/puppet/resource/capability_finder.rb +12 -8
- data/lib/puppet/resource/catalog.rb +36 -40
- data/lib/puppet/resource/type.rb +7 -3
- data/lib/puppet/resource/type_collection.rb +4 -2
- data/lib/puppet/settings.rb +36 -19
- data/lib/puppet/settings/base_setting.rb +2 -1
- data/lib/puppet/settings/config_file.rb +2 -1
- data/lib/puppet/settings/file_setting.rb +2 -1
- data/lib/puppet/settings/ini_file.rb +2 -1
- data/lib/puppet/ssl/base.rb +2 -1
- data/lib/puppet/ssl/host.rb +16 -8
- data/lib/puppet/ssl/key.rb +2 -2
- data/lib/puppet/ssl/state_machine.rb +22 -3
- data/lib/puppet/transaction/event.rb +2 -1
- data/lib/puppet/transaction/event_manager.rb +4 -2
- data/lib/puppet/transaction/report.rb +10 -10
- data/lib/puppet/transaction/resource_harness.rb +4 -2
- data/lib/puppet/type.rb +84 -48
- data/lib/puppet/type/component.rb +2 -1
- data/lib/puppet/type/exec.rb +11 -7
- data/lib/puppet/type/file.rb +15 -9
- data/lib/puppet/type/file/content.rb +7 -3
- data/lib/puppet/type/file/ctime.rb +2 -1
- data/lib/puppet/type/file/data_sync.rb +2 -1
- data/lib/puppet/type/file/ensure.rb +10 -7
- data/lib/puppet/type/file/mode.rb +2 -1
- data/lib/puppet/type/file/mtime.rb +2 -1
- data/lib/puppet/type/file/selcontext.rb +2 -1
- data/lib/puppet/type/file/source.rb +6 -7
- data/lib/puppet/type/file/target.rb +2 -1
- data/lib/puppet/type/file/type.rb +2 -1
- data/lib/puppet/type/package.rb +6 -3
- data/lib/puppet/type/resources.rb +2 -1
- data/lib/puppet/type/service.rb +2 -1
- data/lib/puppet/type/tidy.rb +14 -7
- data/lib/puppet/type/user.rb +19 -7
- data/lib/puppet/util.rb +6 -3
- data/lib/puppet/util/checksums.rb +1 -1
- data/lib/puppet/util/classgen.rb +12 -6
- data/lib/puppet/util/command_line.rb +8 -4
- data/lib/puppet/util/connection.rb +4 -2
- data/lib/puppet/util/diff.rb +4 -2
- data/lib/puppet/util/execution.rb +4 -2
- data/lib/puppet/util/feature.rb +7 -4
- data/lib/puppet/util/fileparsing.rb +57 -46
- data/lib/puppet/util/filetype.rb +2 -1
- data/lib/puppet/util/http_proxy.rb +2 -1
- data/lib/puppet/util/instance_loader.rb +2 -1
- data/lib/puppet/util/ldap/connection.rb +4 -2
- data/lib/puppet/util/ldap/manager.rb +6 -3
- data/lib/puppet/util/log.rb +6 -3
- data/lib/puppet/util/metric.rb +2 -1
- data/lib/puppet/util/posix.rb +4 -2
- data/lib/puppet/util/rdoc/code_objects.rb +2 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +4 -2
- data/lib/puppet/util/selinux.rb +2 -1
- data/lib/puppet/version.rb +2 -5
- data/locales/puppet.pot +713 -685
- data/man/man5/puppet.conf.5 +9 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/lib/puppet_spec/modules.rb +16 -2
- data/spec/unit/indirector/request_spec.rb +5 -6
- data/spec/unit/info_service_spec.rb +48 -0
- data/spec/unit/module_spec.rb +73 -0
- data/spec/unit/plan_spec.rb +65 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +12 -0
- data/spec/unit/ssl/state_machine_spec.rb +68 -5
- metadata +6 -2
data/lib/puppet/parser/files.rb
CHANGED
@@ -14,7 +14,8 @@ module Puppet::Parser::Files
|
|
14
14
|
def find_manifests_in_modules(pattern, environment)
|
15
15
|
module_name, file_pattern = split_file_path(pattern)
|
16
16
|
|
17
|
-
|
17
|
+
mod = environment.module(module_name)
|
18
|
+
if mod
|
18
19
|
[mod.name, mod.match_manifests(file_pattern)]
|
19
20
|
else
|
20
21
|
[nil, []]
|
@@ -232,7 +232,8 @@ module Puppet::Parser::Functions
|
|
232
232
|
def self.function(name, environment = Puppet.lookup(:current_environment))
|
233
233
|
name = name.intern
|
234
234
|
|
235
|
-
|
235
|
+
func = get_function(name, environment)
|
236
|
+
unless func
|
236
237
|
autoloader.delegatee.load(name, environment)
|
237
238
|
func = get_function(name, environment)
|
238
239
|
end
|
@@ -36,7 +36,8 @@ class Puppet::Parser::Relationship
|
|
36
36
|
target_ref = canonical_ref(target)
|
37
37
|
rel_param = param_name
|
38
38
|
|
39
|
-
|
39
|
+
source_resource = catalog.resource(*source_ref)
|
40
|
+
unless source_resource
|
40
41
|
raise ArgumentError, _("Could not find resource '%{source}' for relationship on '%{target}'") % { source: source.to_s, target: target.to_s }
|
41
42
|
end
|
42
43
|
unless catalog.resource(*target_ref)
|
@@ -56,7 +56,8 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
56
56
|
def add_edge_to_stage
|
57
57
|
return unless self.class?
|
58
58
|
|
59
|
-
|
59
|
+
stage = catalog.resource(:stage, self[:stage] || (scope && scope.resource && scope.resource[:stage]) || :main)
|
60
|
+
unless stage
|
60
61
|
raise ArgumentError, _("Could not find stage %{stage} specified by %{resource}") % { stage: self[:stage] || :main, resource: self }
|
61
62
|
end
|
62
63
|
|
@@ -298,7 +299,8 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
298
299
|
|
299
300
|
# evaluate mappings in that scope
|
300
301
|
resource_type.arguments.keys.each do |name|
|
301
|
-
|
302
|
+
expr = blueprint[:mappings][name]
|
303
|
+
if expr
|
302
304
|
# Explicit mapping
|
303
305
|
value = expr.safeevaluate(cns_scope)
|
304
306
|
else
|
@@ -348,7 +350,8 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
348
350
|
def override_parameter(param)
|
349
351
|
# This can happen if the override is defining a new parameter, rather
|
350
352
|
# than replacing an existing one.
|
351
|
-
|
353
|
+
current = @parameters[param.name]
|
354
|
+
(set_parameter(param) and return) unless current
|
352
355
|
|
353
356
|
# Parameter is already set - if overriding with a default - simply ignore the setting of the default value
|
354
357
|
return if scope.is_default?(type, param.name, param.value)
|
data/lib/puppet/parser/scope.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
# The scope class, which handles storing and retrieving variables and types and
|
3
2
|
# such.
|
4
3
|
require 'forwardable'
|
@@ -652,8 +651,10 @@ class Puppet::Parser::Scope
|
|
652
651
|
private :has_enclosing_scope?
|
653
652
|
|
654
653
|
def qualified_scope(classname)
|
655
|
-
|
656
|
-
raise _("class %{classname}
|
654
|
+
klass = find_hostclass(classname)
|
655
|
+
raise _("class %{classname} could not be found") % { classname: classname } unless klass
|
656
|
+
kscope = class_scope(klass)
|
657
|
+
raise _("class %{classname} has not been evaluated") % { classname: classname } unless kscope
|
657
658
|
kscope
|
658
659
|
end
|
659
660
|
private :qualified_scope
|
@@ -881,7 +882,8 @@ class Puppet::Parser::Scope
|
|
881
882
|
env_path = nil
|
882
883
|
env_path = environment.configuration.path_to_env unless (environment.nil? || environment.configuration.nil?)
|
883
884
|
# check module paths first since they may be in the environment (i.e. they are longer)
|
884
|
-
|
885
|
+
module_path = environment.full_modulepath.detect {|m_path| path.start_with?(m_path) }
|
886
|
+
if module_path
|
885
887
|
path = "<module>" + path[module_path.length..-1]
|
886
888
|
elsif env_path && path && path.start_with?(env_path)
|
887
889
|
path = "<env>" + path[env_path.length..-1]
|
@@ -61,7 +61,8 @@ class Puppet::Parser::TemplateWrapper
|
|
61
61
|
|
62
62
|
# @api private
|
63
63
|
def file=(filename)
|
64
|
-
|
64
|
+
@__file__ = Puppet::Parser::Files.find_template(filename, scope.compiler.environment)
|
65
|
+
unless @__file__
|
65
66
|
raise Puppet::ParseError, _("Could not find template '%{filename}'") % { filename: filename }
|
66
67
|
end
|
67
68
|
end
|
@@ -66,7 +66,8 @@ class Puppet::Parser::TypeLoader
|
|
66
66
|
files_to_try_for(fqname).each do |filename|
|
67
67
|
begin
|
68
68
|
imported_types = import_from_modules(filename)
|
69
|
-
|
69
|
+
result = imported_types.find { |t| t.type == type and t.name == fqname }
|
70
|
+
if result
|
70
71
|
Puppet.debug {"Automatically imported #{fqname} from #{filename} into #{environment}"}
|
71
72
|
return result
|
72
73
|
end
|
@@ -94,11 +94,8 @@ module Adaptable
|
|
94
94
|
#
|
95
95
|
def self.adapt(o, &block)
|
96
96
|
attr_name = self_attr_name
|
97
|
-
|
98
|
-
|
99
|
-
else
|
100
|
-
associate_adapter(create_adapter(o), o)
|
101
|
-
end
|
97
|
+
value = o.instance_variable_get(attr_name) if o.instance_variable_defined?(attr_name)
|
98
|
+
adapter = value || associate_adapter(create_adapter(o), o)
|
102
99
|
if block_given?
|
103
100
|
case block.arity
|
104
101
|
when 1
|
@@ -44,7 +44,8 @@ class Puppet::Pops::Evaluator::Collectors::ExportedCollector < Puppet::Pops::Eva
|
|
44
44
|
found_resources = found.map {|x| x.is_a?(Puppet::Parser::Resource) ? x : x.to_resource(@scope)}
|
45
45
|
|
46
46
|
found_resources.each do |item|
|
47
|
-
|
47
|
+
existing = @scope.findresource(item.resource_type, item.title)
|
48
|
+
if existing
|
48
49
|
unless existing.collector_id == item.collector_id
|
49
50
|
raise Puppet::ParseError,
|
50
51
|
_("A duplicate resource was found while collecting exported resources, with the type and title %{title}") % { title: item.ref }
|
@@ -16,7 +16,8 @@ class Puppet::Pops::Evaluator::Collectors::FixedSetCollector < Puppet::Pops::Eva
|
|
16
16
|
def collect
|
17
17
|
resolved = []
|
18
18
|
result = @resources.reduce([]) do |memo, ref|
|
19
|
-
|
19
|
+
res = @scope.findresource(ref.to_s)
|
20
|
+
if res
|
20
21
|
res.virtual = false
|
21
22
|
memo << res
|
22
23
|
resolved << ref
|
@@ -97,7 +97,8 @@ module Runtime3ResourceSupport
|
|
97
97
|
end
|
98
98
|
|
99
99
|
loader = scope.compiler.loaders.private_environment_loader
|
100
|
-
|
100
|
+
loaded = loader.load(:resource_type_pp, type_name)
|
101
|
+
if loaded
|
101
102
|
return loaded
|
102
103
|
end
|
103
104
|
|
@@ -252,7 +252,8 @@ module Runtime3Support
|
|
252
252
|
if v.is_a?(Numeric)
|
253
253
|
return v
|
254
254
|
end
|
255
|
-
|
255
|
+
n = Utils.to_n(v)
|
256
|
+
unless n
|
256
257
|
fail(Issues::NOT_NUMERIC, o, {:value => v})
|
257
258
|
end
|
258
259
|
# this point is reached if there was a conversion
|
@@ -276,7 +277,8 @@ module Runtime3Support
|
|
276
277
|
# and it does not defined the visibility of functions from a ruby function's perspective. Instead,
|
277
278
|
# this is done from the perspective of the environment.
|
278
279
|
loader = loaders.private_environment_loader
|
279
|
-
|
280
|
+
func = loader.load(:function, name) if loader
|
281
|
+
if func
|
280
282
|
Puppet::Util::Profiler.profile(name, [:functions, name]) do
|
281
283
|
return func.call(scope, *args, &block)
|
282
284
|
end
|
@@ -299,7 +301,8 @@ module Runtime3Support
|
|
299
301
|
# 'ruby -wc' thinks that _func is unused, because the only reference to it
|
300
302
|
# is inside of the Kernel.eval string below. By prefixing it with the
|
301
303
|
# underscore, we let Ruby know to not worry about whether it's unused or not.
|
302
|
-
|
304
|
+
_func = loader.load(:function, name) if loader
|
305
|
+
if _func
|
303
306
|
Puppet::Util::Profiler.profile(name, [:functions, name]) do
|
304
307
|
# Add stack frame when calling. See Puppet::Pops::PuppetStack
|
305
308
|
return Kernel.eval('_func.call(scope, *args, &block)'.freeze, Kernel.binding, file || '', line)
|
@@ -415,7 +418,8 @@ module Runtime3Support
|
|
415
418
|
# The defaults must be looked up in the scope where the resource was created (not in the given
|
416
419
|
# scope where the lookup takes place.
|
417
420
|
resource_scope = resource.scope
|
418
|
-
|
421
|
+
defaults = resource_scope.lookupdefaults(resource.type) if val.nil? && resource_scope
|
422
|
+
if defaults
|
419
423
|
# NOTE: 3x resource keeps defaults as hash using symbol for name as key to Parameter which (again) holds
|
420
424
|
# name and value.
|
421
425
|
# NOTE: meta parameters that are unset ends up here, and there are no defaults for those encoded
|
@@ -69,7 +69,8 @@ class BaseLoader < Loader
|
|
69
69
|
#
|
70
70
|
def set_entry(typed_name, value, origin = nil)
|
71
71
|
# It is never ok to redefine in the very same loader unless redefining a 'not found'
|
72
|
-
|
72
|
+
entry = @named_values[typed_name]
|
73
|
+
if entry
|
73
74
|
fail_redefine(entry) unless entry.value.nil?
|
74
75
|
end
|
75
76
|
|
@@ -106,7 +107,8 @@ class BaseLoader < Loader
|
|
106
107
|
#
|
107
108
|
def promote_entry(named_entry)
|
108
109
|
typed_name = named_entry.typed_name
|
109
|
-
|
110
|
+
entry = @named_values[typed_name]
|
111
|
+
if entry then fail_redefine(entry); end
|
110
112
|
@named_values[typed_name] = named_entry
|
111
113
|
end
|
112
114
|
|
@@ -34,7 +34,8 @@ class Puppet::Pops::Loader::DependencyLoader < Puppet::Pops::Loader::BaseLoader
|
|
34
34
|
#
|
35
35
|
def find(typed_name)
|
36
36
|
if typed_name.qualified?
|
37
|
-
|
37
|
+
l = index()[typed_name.name_parts[0]]
|
38
|
+
if l
|
38
39
|
l.load_typed(typed_name)
|
39
40
|
else
|
40
41
|
# no module entered as dependency with name matching first segment of wanted name
|
@@ -69,7 +70,8 @@ class Puppet::Pops::Loader::DependencyLoader < Puppet::Pops::Loader::BaseLoader
|
|
69
70
|
|
70
71
|
def loaded_entry_in_dependency(typed_name, check_dependencies)
|
71
72
|
if typed_name.qualified?
|
72
|
-
|
73
|
+
l = index[typed_name.name_parts[0]]
|
74
|
+
if l
|
73
75
|
l.loaded_entry(typed_name)
|
74
76
|
else
|
75
77
|
# no module entered as dependency with name matching first segment of wanted name
|
@@ -26,7 +26,8 @@ module Puppet::Pops::Loader::GemSupport
|
|
26
26
|
# TODO: FIND by name raises exception Gem::LoadError with list of all gems on the path
|
27
27
|
#
|
28
28
|
def gem_dir_from_uri(uri)
|
29
|
-
|
29
|
+
spec = Gem::Specification.find_by_name(uri.hostname)
|
30
|
+
unless spec
|
30
31
|
raise ArgumentError, _("Gem not found %{uri}") % { uri: uri }
|
31
32
|
end
|
32
33
|
# if path given append that, else append given subdir
|
@@ -41,7 +42,8 @@ module Puppet::Pops::Loader::GemSupport
|
|
41
42
|
# TODO: FIND by name raises exception Gem::LoadError with list of all gems on the path
|
42
43
|
#
|
43
44
|
def gem_dir_from_name(gem_name)
|
44
|
-
|
45
|
+
spec = Gem::Specification.find_by_name(gem_name)
|
46
|
+
unless spec
|
45
47
|
raise ArgumentError, _("Gem not found '%{gem_name}'") % { gem_name: gem_name }
|
46
48
|
end
|
47
49
|
spec.full_gem_path
|
@@ -69,7 +69,8 @@ class Loader
|
|
69
69
|
# @api public
|
70
70
|
#
|
71
71
|
def load(type, name)
|
72
|
-
|
72
|
+
result = load_typed(TypedName.new(type, name.to_s))
|
73
|
+
if result
|
73
74
|
result.value
|
74
75
|
end
|
75
76
|
end
|
@@ -108,7 +109,8 @@ class Loader
|
|
108
109
|
# @api private
|
109
110
|
#
|
110
111
|
def [](typed_name)
|
111
|
-
|
112
|
+
found = get_entry(typed_name)
|
113
|
+
if found
|
112
114
|
found.value
|
113
115
|
else
|
114
116
|
nil
|
@@ -397,7 +397,8 @@ module LoaderPaths
|
|
397
397
|
def effective_paths(type)
|
398
398
|
smart_paths = @smart_paths
|
399
399
|
loader = @loader
|
400
|
-
|
400
|
+
effective_paths = smart_paths[type]
|
401
|
+
unless effective_paths
|
401
402
|
# type not yet processed, does the various directories for the type exist ?
|
402
403
|
# Get the relative dirs for the type
|
403
404
|
paths_for_type = LoaderPaths.relative_paths_for_type(type, loader)
|
@@ -44,7 +44,7 @@ class StaticLoader < Loader
|
|
44
44
|
|
45
45
|
def discover(type, error_collector = nil, name_authority = Pcore::RUNTIME_NAME_AUTHORITY)
|
46
46
|
# Static loader only contains runtime types
|
47
|
-
return EMPTY_ARRAY unless type == :type && name_authority == name_authority = Pcore::RUNTIME_NAME_AUTHORITY
|
47
|
+
return EMPTY_ARRAY unless type == :type && name_authority == name_authority = Pcore::RUNTIME_NAME_AUTHORITY #rubocop:disable Lint/AssignmentInCondition
|
48
48
|
|
49
49
|
typed_names = type == :type && name_authority == Pcore::RUNTIME_NAME_AUTHORITY ? @loaded.keys : EMPTY_ARRAY
|
50
50
|
block_given? ? typed_names.select { |tn| yield(tn) } : typed_names
|
@@ -135,7 +135,8 @@ module Interpolation
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def get_method_and_data(data, allow_methods)
|
138
|
-
|
138
|
+
match = data.match(/^(\w+)\((?:["]([^"]+)["]|[']([^']+)['])\)$/)
|
139
|
+
if match
|
139
140
|
fail(Issues::HIERA_INTERPOLATION_METHOD_SYNTAX_NOT_ALLOWED) unless allow_methods
|
140
141
|
key = match[1].to_sym
|
141
142
|
data = match[2] || match[3] # double or single qouted
|
@@ -835,7 +835,8 @@ class Factory
|
|
835
835
|
end
|
836
836
|
|
837
837
|
def self.NUMBER(name_or_numeric)
|
838
|
-
|
838
|
+
n_radix = Utils.to_n_with_radix(name_or_numeric)
|
839
|
+
if n_radix
|
839
840
|
val, radix = n_radix
|
840
841
|
if val.is_a?(Float)
|
841
842
|
new(LiteralFloat, val)
|
@@ -853,7 +854,8 @@ class Factory
|
|
853
854
|
# Convert input string to either a qualified name, a LiteralInteger with radix, or a LiteralFloat
|
854
855
|
#
|
855
856
|
def self.QNAME_OR_NUMBER(name)
|
856
|
-
|
857
|
+
n_radix = Utils.to_n_with_radix(name)
|
858
|
+
if n_radix
|
857
859
|
val, radix = n_radix
|
858
860
|
if val.is_a?(Float)
|
859
861
|
new(LiteralFloat, val)
|
@@ -85,7 +85,8 @@ module HeredocSupport
|
|
85
85
|
while !scn.eos? do
|
86
86
|
one_line = scn.scan_until(/(?:\n|\z)/)
|
87
87
|
raise eof_error unless one_line
|
88
|
-
|
88
|
+
md = one_line.match(endline_pattern)
|
89
|
+
if md
|
89
90
|
leading = md[1]
|
90
91
|
has_margin = md[2] == '|'
|
91
92
|
remove_break = md[3] == '-'
|
@@ -37,7 +37,8 @@ module Puppet::Pops::Parser::InterpolationSupport
|
|
37
37
|
enqueue_until count
|
38
38
|
break
|
39
39
|
when '$'
|
40
|
-
|
40
|
+
varname = scn.scan(PATTERN_VARIABLE)
|
41
|
+
if varname
|
41
42
|
# The $ is counted towards the variable
|
42
43
|
enqueue_completed([:DQPRE, text, after-before-1], before)
|
43
44
|
enqueue_completed([:VARIABLE, varname, scn.pos - after + 1], after - 1)
|
@@ -78,7 +79,8 @@ module Puppet::Pops::Parser::InterpolationSupport
|
|
78
79
|
enqueue_until count
|
79
80
|
break
|
80
81
|
when '$'
|
81
|
-
|
82
|
+
varname = scn.scan(PATTERN_VARIABLE)
|
83
|
+
if varname
|
82
84
|
# The $ is counted towards the variable
|
83
85
|
enqueue_completed([:DQMID, text, after-before-1], before)
|
84
86
|
enqueue_completed([:VARIABLE, varname, scn.pos - after + 1], after - 1)
|
@@ -122,7 +124,8 @@ module Puppet::Pops::Parser::InterpolationSupport
|
|
122
124
|
enqueue_until count
|
123
125
|
break
|
124
126
|
when '$'
|
125
|
-
|
127
|
+
varname = scn.scan(PATTERN_VARIABLE)
|
128
|
+
if varname
|
126
129
|
# The $ is counted towards the variable
|
127
130
|
enqueue_completed([:DQPRE, text, after-before-1], before)
|
128
131
|
enqueue_completed([:VARIABLE, varname, scn.pos - after + 1], after - 1)
|
@@ -162,7 +165,8 @@ module Puppet::Pops::Parser::InterpolationSupport
|
|
162
165
|
enqueue_until count
|
163
166
|
break
|
164
167
|
when '$'
|
165
|
-
|
168
|
+
varname = scn.scan(PATTERN_VARIABLE)
|
169
|
+
if varname
|
166
170
|
# The $ is counted towards the variable
|
167
171
|
enqueue_completed([:DQMID, text, after-before-1], before)
|
168
172
|
enqueue_completed([:VARIABLE, varname, scn.pos - after + 1], after - 1)
|
@@ -190,7 +194,8 @@ module Puppet::Pops::Parser::InterpolationSupport
|
|
190
194
|
scn.skip(self.class::PATTERN_WS)
|
191
195
|
queue_size = queue.size
|
192
196
|
until scn.eos? do
|
193
|
-
|
197
|
+
token = lex_token
|
198
|
+
if token
|
194
199
|
if token.equal?(queue_base)
|
195
200
|
# A nested #interpolate_dq call shifted the queue_base token from the @token_queue. It must
|
196
201
|
# be put back since it is intended for the top level #interpolate_dq call only.
|
@@ -355,7 +355,8 @@ class Lexer2
|
|
355
355
|
else
|
356
356
|
before = scn.pos
|
357
357
|
# regexp position is a regexp, else a div
|
358
|
-
|
358
|
+
value = scn.scan(PATTERN_REGEX) if regexp_acceptable?
|
359
|
+
if value
|
359
360
|
# Ensure an escaped / was not matched
|
360
361
|
while escaped_end(value)
|
361
362
|
more = scn.scan_until(PATTERN_REGEX_END)
|
@@ -452,7 +453,8 @@ class Lexer2
|
|
452
453
|
'$' => lambda do
|
453
454
|
scn = @scanner
|
454
455
|
before = scn.pos
|
455
|
-
|
456
|
+
value = scn.scan(PATTERN_DOLLAR_VAR)
|
457
|
+
if value
|
456
458
|
emit_completed([:VARIABLE, value[1..-1].freeze, scn.pos - before], before)
|
457
459
|
else
|
458
460
|
# consume the $ and let higher layer complain about the error instead of getting a syntax error
|
@@ -703,7 +705,8 @@ class Lexer2
|
|
703
705
|
|
704
706
|
# This is the lexer's main loop
|
705
707
|
until queue.empty? && scn.eos? do
|
706
|
-
|
708
|
+
token = queue.shift || selector[scn.peek(1)].call
|
709
|
+
if token
|
707
710
|
ctx[:after] = token[0]
|
708
711
|
yield token
|
709
712
|
end
|
@@ -464,7 +464,7 @@ class TypeCalculator
|
|
464
464
|
# Produces the superclasses of the given class, including the class
|
465
465
|
def superclasses(c)
|
466
466
|
result = [c]
|
467
|
-
while s = c.superclass
|
467
|
+
while s = c.superclass #rubocop:disable Lint/AssignmentInCondition
|
468
468
|
result << s
|
469
469
|
c = s
|
470
470
|
end
|