puppet 6.24.0-x86-mingw32 → 6.25.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 +2 -2
- data/Gemfile.lock +12 -12
- data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
- data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
- data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
- data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
- data/{ext → examples}/nagios/check_puppet.rb +2 -2
- data/ext/README.md +13 -0
- data/lib/puppet/application/agent.rb +4 -0
- data/lib/puppet/application/apply.rb +20 -2
- data/lib/puppet/application/resource.rb +15 -13
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/configurer.rb +85 -57
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +36 -30
- data/lib/puppet/environments.rb +66 -26
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/facter_impl.rb +96 -0
- data/lib/puppet/file_serving/configuration/parser.rb +2 -0
- data/lib/puppet/file_serving/configuration.rb +3 -0
- data/lib/puppet/file_serving/mount/file.rb +4 -4
- data/lib/puppet/file_serving/mount/scripts.rb +24 -0
- data/lib/puppet/file_system/file_impl.rb +3 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/functions/find_template.rb +2 -2
- data/lib/puppet/http/service/compiler.rb +6 -1
- data/lib/puppet/indirector/catalog/compiler.rb +24 -6
- data/lib/puppet/indirector/catalog/rest.rb +1 -0
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/terminus.rb +4 -0
- data/lib/puppet/module/plan.rb +0 -1
- data/lib/puppet/module/task.rb +1 -1
- data/lib/puppet/module.rb +1 -0
- data/lib/puppet/module_tool/applications/installer.rb +8 -4
- data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/node/environment.rb +10 -11
- data/lib/puppet/pal/pal_impl.rb +1 -1
- data/lib/puppet/parser/scope.rb +1 -0
- data/lib/puppet/parser/templatewrapper.rb +1 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
- data/lib/puppet/pops/model/ast.rb +1 -0
- data/lib/puppet/pops/model/factory.rb +2 -1
- data/lib/puppet/pops/parser/eparser.rb +201 -201
- data/lib/puppet/pops/parser/lexer2.rb +92 -91
- data/lib/puppet/pops/parser/slurp_support.rb +1 -0
- data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
- data/lib/puppet/pops/types/type_formatter.rb +4 -3
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/package/pkg.rb +19 -2
- data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +5 -5
- data/lib/puppet/provider/service/launchd.rb +2 -2
- data/lib/puppet/provider/service/redhat.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +2 -2
- data/lib/puppet/provider/service/upstart.rb +5 -5
- data/lib/puppet/provider/user/aix.rb +44 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +72 -16
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/resource/type_collection.rb +1 -0
- data/lib/puppet/runtime.rb +11 -1
- data/lib/puppet/settings.rb +2 -2
- data/lib/puppet/test/test_helper.rb +4 -1
- data/lib/puppet/transaction/persistence.rb +11 -1
- data/lib/puppet/transaction/report.rb +15 -1
- data/lib/puppet/type/exec.rb +19 -2
- data/lib/puppet/type/file.rb +6 -6
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/service.rb +8 -3
- data/lib/puppet/type/user.rb +0 -1
- data/lib/puppet/type.rb +1 -1
- data/lib/puppet/util/command_line.rb +1 -1
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/json.rb +3 -0
- data/lib/puppet/util/log.rb +1 -2
- data/lib/puppet/util/logging.rb +1 -25
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +1 -2
- data/lib/puppet/util/tagging.rb +1 -0
- data/lib/puppet/util/windows/user.rb +0 -2
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +2 -6
- data/locales/puppet.pot +246 -230
- data/man/man5/puppet.conf.5 +33 -25
- data/man/man8/puppet-agent.8 +4 -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 +3 -3
- 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/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
- data/spec/integration/application/agent_spec.rb +113 -37
- data/spec/integration/application/filebucket_spec.rb +5 -0
- data/spec/integration/configurer_spec.rb +18 -2
- data/spec/integration/indirector/facts/facter_spec.rb +3 -3
- data/spec/integration/l10n/compiler_spec.rb +37 -0
- data/spec/integration/transaction/report_spec.rb +1 -1
- data/spec/integration/type/file_spec.rb +2 -2
- data/spec/integration/type/package_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- data/spec/integration/util/windows/process_spec.rb +1 -9
- data/spec/lib/puppet_spec/modules.rb +13 -2
- data/spec/lib/puppet_spec/puppetserver.rb +15 -0
- data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
- data/spec/shared_contexts/l10n.rb +27 -0
- data/spec/spec_helper.rb +1 -10
- data/spec/unit/application/apply_spec.rb +76 -56
- data/spec/unit/application/resource_spec.rb +29 -0
- data/spec/unit/configurer_spec.rb +171 -56
- data/spec/unit/defaults_spec.rb +1 -0
- data/spec/unit/environments_spec.rb +150 -1
- data/spec/unit/facter_impl_spec.rb +31 -0
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
- data/spec/unit/file_serving/configuration_spec.rb +14 -4
- data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
- data/spec/unit/file_system_spec.rb +7 -0
- data/spec/unit/functions/logging_spec.rb +1 -0
- data/spec/unit/functions/lookup_spec.rb +64 -0
- data/spec/unit/http/service/compiler_spec.rb +8 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +87 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
- data/spec/unit/indirector/indirection_spec.rb +10 -3
- data/spec/unit/interface/action_spec.rb +0 -9
- data/spec/unit/module_spec.rb +15 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +39 -12
- data/spec/unit/network/authstore_spec.rb +0 -15
- data/spec/unit/network/formats_spec.rb +6 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
- data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/pip2_spec.rb +1 -1
- data/spec/unit/provider/package/pip3_spec.rb +1 -1
- data/spec/unit/provider/package/pip_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +29 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
- data/spec/unit/provider/service/launchd_spec.rb +11 -0
- data/spec/unit/provider/service/systemd_spec.rb +1 -1
- data/spec/unit/provider/user/aix_spec.rb +100 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1 -1
- data/spec/unit/provider/user/useradd_spec.rb +43 -2
- data/spec/unit/provider_spec.rb +4 -4
- data/spec/unit/puppet_spec.rb +12 -4
- data/spec/unit/ssl/certificate_request_spec.rb +8 -14
- data/spec/unit/type/service_spec.rb +27 -0
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/logging_spec.rb +2 -0
- data/tasks/parallel.rake +3 -3
- metadata +37 -94
- data/ext/README.environment +0 -8
- data/ext/dbfix.sql +0 -132
- data/ext/debian/README.Debian +0 -8
- data/ext/debian/README.source +0 -2
- data/ext/debian/TODO.Debian +0 -1
- data/ext/debian/changelog.erb +0 -1122
- data/ext/debian/compat +0 -1
- data/ext/debian/control +0 -144
- data/ext/debian/copyright +0 -339
- data/ext/debian/docs +0 -1
- data/ext/debian/fileserver.conf +0 -41
- data/ext/debian/puppet-common.dirs +0 -13
- data/ext/debian/puppet-common.install +0 -3
- data/ext/debian/puppet-common.lintian-overrides +0 -5
- data/ext/debian/puppet-common.manpages +0 -28
- data/ext/debian/puppet-common.postinst +0 -35
- data/ext/debian/puppet-common.postrm +0 -33
- data/ext/debian/puppet-el.dirs +0 -1
- data/ext/debian/puppet-el.emacsen-install +0 -25
- data/ext/debian/puppet-el.emacsen-remove +0 -11
- data/ext/debian/puppet-el.emacsen-startup +0 -9
- data/ext/debian/puppet-el.install +0 -1
- data/ext/debian/puppet-testsuite.install +0 -2
- data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
- data/ext/debian/puppet.lintian-overrides +0 -3
- data/ext/debian/puppet.logrotate +0 -20
- data/ext/debian/puppet.postinst +0 -20
- data/ext/debian/puppet.postrm +0 -20
- data/ext/debian/puppet.preinst +0 -20
- data/ext/debian/puppetmaster-common.install +0 -2
- data/ext/debian/puppetmaster-common.manpages +0 -2
- data/ext/debian/puppetmaster-common.postinst +0 -6
- data/ext/debian/puppetmaster-passenger.dirs +0 -4
- data/ext/debian/puppetmaster-passenger.postinst +0 -162
- data/ext/debian/puppetmaster-passenger.postrm +0 -61
- data/ext/debian/puppetmaster.README.debian +0 -17
- data/ext/debian/puppetmaster.default +0 -14
- data/ext/debian/puppetmaster.init +0 -137
- data/ext/debian/puppetmaster.lintian-overrides +0 -3
- data/ext/debian/puppetmaster.postinst +0 -20
- data/ext/debian/puppetmaster.postrm +0 -5
- data/ext/debian/puppetmaster.preinst +0 -22
- data/ext/debian/rules +0 -132
- data/ext/debian/source/format +0 -1
- data/ext/debian/source/options +0 -1
- data/ext/debian/vim-puppet.README.Debian +0 -13
- data/ext/debian/vim-puppet.dirs +0 -5
- data/ext/debian/vim-puppet.yaml +0 -7
- data/ext/debian/watch +0 -2
- data/ext/freebsd/puppetd +0 -26
- data/ext/freebsd/puppetmasterd +0 -26
- data/ext/gentoo/conf.d/puppet +0 -5
- data/ext/gentoo/conf.d/puppetmaster +0 -12
- data/ext/gentoo/init.d/puppet +0 -38
- data/ext/gentoo/init.d/puppetmaster +0 -51
- data/ext/gentoo/puppet/fileserver.conf +0 -41
- data/ext/ips/puppet-agent +0 -44
- data/ext/ips/puppet-master +0 -44
- data/ext/ips/puppet.p5m.erb +0 -12
- data/ext/ips/puppetagent.xml +0 -42
- data/ext/ips/puppetmaster.xml +0 -42
- data/ext/ips/rules +0 -19
- data/ext/ips/transforms +0 -34
- data/ext/ldap/puppet.schema +0 -24
- data/ext/logcheck/puppet +0 -23
- data/ext/osx/file_mapping.yaml +0 -33
- data/ext/osx/postflight.erb +0 -109
- data/ext/osx/preflight.erb +0 -52
- data/ext/osx/prototype.plist.erb +0 -38
- data/ext/redhat/fileserver.conf +0 -41
- data/ext/redhat/logrotate +0 -21
- data/ext/redhat/puppet.spec.erb +0 -842
- data/ext/redhat/server.init +0 -128
- data/ext/redhat/server.sysconfig +0 -13
- data/ext/solaris/pkginfo +0 -6
- data/ext/solaris/smf/puppetd.xml +0 -77
- data/ext/solaris/smf/puppetmasterd.xml +0 -77
- data/ext/solaris/smf/svc-puppetd +0 -71
- data/ext/solaris/smf/svc-puppetmasterd +0 -67
- data/ext/suse/puppet.spec +0 -310
- data/ext/suse/server.init +0 -173
- data/ext/yaml_nodes.rb +0 -105
- data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -69,6 +69,10 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
69
69
|
# @param [String] environment The name of the environment we are operating in
|
70
70
|
# @param [String] configured_environment Optional, the name of the configured
|
71
71
|
# environment. If unset, `environment` is used.
|
72
|
+
# @param [Boolean] check_environment If true, request that the server check if
|
73
|
+
# our `environment` matches the server-specified environment. If they do not
|
74
|
+
# match, then the server may return an empty catalog in the server-specified
|
75
|
+
# environment.
|
72
76
|
# @param [String] transaction_uuid An agent generated transaction uuid, used
|
73
77
|
# for connecting catalogs and reports.
|
74
78
|
# @param [String] job_uuid A unique job identifier defined when the orchestrator
|
@@ -85,7 +89,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
85
89
|
# containing the request response and the deserialized catalog returned by
|
86
90
|
# the server
|
87
91
|
#
|
88
|
-
def post_catalog(name, facts:, environment:, configured_environment: nil, transaction_uuid: nil, job_uuid: nil, static_catalog: true, checksum_type: Puppet[:supported_checksum_types])
|
92
|
+
def post_catalog(name, facts:, environment:, configured_environment: nil, check_environment: false, transaction_uuid: nil, job_uuid: nil, static_catalog: true, checksum_type: Puppet[:supported_checksum_types])
|
89
93
|
if Puppet[:preferred_serialization_format] == "pson"
|
90
94
|
formatter = Puppet::Network::FormatHandler.format_for(:pson)
|
91
95
|
# must use 'pson' instead of 'text/pson'
|
@@ -103,6 +107,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
103
107
|
facts: Puppet::Util.uri_query_encode(facts_as_string),
|
104
108
|
environment: environment,
|
105
109
|
configured_environment: configured_environment || environment,
|
110
|
+
check_environment: !!check_environment,
|
106
111
|
transaction_uuid: transaction_uuid,
|
107
112
|
job_uuid: job_uuid,
|
108
113
|
static_catalog: static_catalog,
|
@@ -53,8 +53,22 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
53
53
|
node.trusted_data = Puppet.lookup(:trusted_information) { Puppet::Context::TrustedInformation.local(node) }.to_h
|
54
54
|
|
55
55
|
if node.environment
|
56
|
+
# If the requested environment doesn't match the server specified environment,
|
57
|
+
# as determined by the node terminus, and the request wants us to check for an
|
58
|
+
# environment mismatch, then return an empty catalog with the server-specified
|
59
|
+
# enviroment.
|
60
|
+
if request.remote? && request.options[:check_environment] && node.environment != request.environment
|
61
|
+
return Puppet::Resource::Catalog.new(node.name, node.environment)
|
62
|
+
end
|
63
|
+
|
56
64
|
node.environment.with_text_domain do
|
57
|
-
|
65
|
+
envs = Puppet.lookup(:environments)
|
66
|
+
envs.guard(node.environment.name)
|
67
|
+
begin
|
68
|
+
compile(node, request.options)
|
69
|
+
ensure
|
70
|
+
envs.unguard(node.environment.name)
|
71
|
+
end
|
58
72
|
end
|
59
73
|
else
|
60
74
|
compile(node, request.options)
|
@@ -78,6 +92,10 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
78
92
|
Puppet.run_mode.server?
|
79
93
|
end
|
80
94
|
|
95
|
+
def require_environment?
|
96
|
+
false
|
97
|
+
end
|
98
|
+
|
81
99
|
private
|
82
100
|
|
83
101
|
# @param facts [String] facts in a wire format for decoding
|
@@ -154,7 +172,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
154
172
|
location = Puppet::Module::FILETYPES['files']
|
155
173
|
|
156
174
|
!!(source_as_uri.path =~ /^\/modules\// &&
|
157
|
-
metadata.full_path =~ /#{environment_path}[^\/]+\/[^\/]+\/#{location}\/.+/)
|
175
|
+
metadata.full_path =~ /#{environment_path}\/[^\/]+\/[^\/]+\/#{location}\/.+/)
|
158
176
|
end
|
159
177
|
|
160
178
|
# Helper method to log file resources that could not be inlined because they
|
@@ -173,7 +191,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
173
191
|
# Inline file metadata for static catalogs
|
174
192
|
# Initially restricted to files sourced from codedir via puppet:/// uri.
|
175
193
|
def inline_metadata(catalog, checksum_type)
|
176
|
-
environment_path = Pathname.new File.join(Puppet[:environmentpath], catalog.environment
|
194
|
+
environment_path = Pathname.new File.join(Puppet[:environmentpath], catalog.environment)
|
177
195
|
environment_path = Puppet::Environments::Directories.real_path(environment_path)
|
178
196
|
list_of_resources = catalog.resources.find_all { |res| res.type == "File" }
|
179
197
|
|
@@ -415,17 +433,17 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
415
433
|
"serverip" => "ipaddress",
|
416
434
|
"serverip6" => "ipaddress6"
|
417
435
|
}.each do |var, fact|
|
418
|
-
value =
|
436
|
+
value = Puppet.runtime[:facter].value(fact)
|
419
437
|
if !value.nil?
|
420
438
|
@server_facts[var] = value
|
421
439
|
end
|
422
440
|
end
|
423
441
|
|
424
442
|
if @server_facts["servername"].nil?
|
425
|
-
host =
|
443
|
+
host = Puppet.runtime[:facter].value(:hostname)
|
426
444
|
if host.nil?
|
427
445
|
Puppet.warning _("Could not retrieve fact servername")
|
428
|
-
elsif domain =
|
446
|
+
elsif domain = Puppet.runtime[:facter].value(:domain) #rubocop:disable Lint/AssignmentInCondition
|
429
447
|
@server_facts["servername"] = [host, domain].join(".")
|
430
448
|
else
|
431
449
|
@server_facts["servername"] = host
|
@@ -20,6 +20,7 @@ class Puppet::Resource::Catalog::Rest < Puppet::Indirector::REST
|
|
20
20
|
facts: request.options[:facts_for_catalog],
|
21
21
|
environment: request.environment.to_s,
|
22
22
|
configured_environment: request.options[:configured_environment],
|
23
|
+
check_environment: request.options[:check_environment],
|
23
24
|
transaction_uuid: request.options[:transaction_uuid],
|
24
25
|
job_uuid: request.options[:job_id],
|
25
26
|
static_catalog: request.options[:static_catalog],
|
@@ -20,10 +20,10 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
20
20
|
|
21
21
|
# Lookup a host's facts up in Facter.
|
22
22
|
def find(request)
|
23
|
-
|
23
|
+
Puppet.runtime[:facter].reset
|
24
24
|
|
25
25
|
# Note: we need to setup puppet's external search paths before adding the puppetversion
|
26
|
-
# fact. This is because in Facter 2.x, the first `
|
26
|
+
# fact. This is because in Facter 2.x, the first `Puppet.runtime[:facter].add` causes Facter to create
|
27
27
|
# its directory loaders which cannot be changed, meaning other external facts won't
|
28
28
|
# be resolved. (PUP-4607)
|
29
29
|
self.class.setup_external_search_paths(request)
|
@@ -36,7 +36,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
36
36
|
raise(Puppet::Error, _("puppet facts show requires version 4.0.40 or greater of Facter.")) unless Facter.respond_to?(:resolve)
|
37
37
|
find_with_options(request)
|
38
38
|
else
|
39
|
-
Puppet::Node::Facts.new(request.key,
|
39
|
+
Puppet::Node::Facts.new(request.key, Puppet.runtime[:facter].to_hash)
|
40
40
|
end
|
41
41
|
|
42
42
|
result.add_local_facts unless request.options[:resolve_options]
|
@@ -68,7 +68,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
68
68
|
true
|
69
69
|
end
|
70
70
|
dirs << request.options[:custom_dir] if request.options[:custom_dir]
|
71
|
-
|
71
|
+
Puppet.runtime[:facter].search(*dirs)
|
72
72
|
end
|
73
73
|
|
74
74
|
def self.setup_external_search_paths(request)
|
@@ -90,7 +90,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
90
90
|
end
|
91
91
|
|
92
92
|
dirs << request.options[:external_dir] if request.options[:external_dir]
|
93
|
-
|
93
|
+
Puppet.runtime[:facter].search_external dirs
|
94
94
|
end
|
95
95
|
|
96
96
|
private
|
@@ -104,6 +104,6 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
104
104
|
options_for_facter += " --no-block" if options[:no_block] == false
|
105
105
|
options_for_facter += " --no-cache" if options[:no_cache] == false
|
106
106
|
|
107
|
-
Puppet::Node::Facts.new(request.key,
|
107
|
+
Puppet::Node::Facts.new(request.key, Puppet.runtime[:facter].resolve(options_for_facter))
|
108
108
|
end
|
109
109
|
end
|
@@ -313,7 +313,7 @@ class Puppet::Indirector::Indirection
|
|
313
313
|
request = request(:save, key, instance, options)
|
314
314
|
terminus = prepare(request)
|
315
315
|
|
316
|
-
result = terminus.save(request)
|
316
|
+
result = terminus.save(request) if !request.ignore_terminus?
|
317
317
|
|
318
318
|
# If caching is enabled, save our document there
|
319
319
|
cache.save(request) if cache? && !request.ignore_cache_save?
|
data/lib/puppet/module/plan.rb
CHANGED
@@ -50,7 +50,6 @@ class Puppet::Module
|
|
50
50
|
RESERVED_DATA_TYPES = %w{any array boolean catalogentry class collection
|
51
51
|
callable data default enum float hash integer numeric optional pattern
|
52
52
|
resource runtime scalar string struct tuple type undef variant}
|
53
|
-
MOUNTS = %w[lib files plans]
|
54
53
|
|
55
54
|
def self.is_plan_name?(name)
|
56
55
|
return true if name =~ /^[a-z][a-z0-9_]*$/
|
data/lib/puppet/module/task.rb
CHANGED
data/lib/puppet/module.rb
CHANGED
@@ -138,7 +138,7 @@ module Puppet::ModuleTool
|
|
138
138
|
rescue SemanticPuppet::Dependency::UnsatisfiableGraph => e
|
139
139
|
unsatisfied = nil
|
140
140
|
|
141
|
-
if e.respond_to?(:unsatisfied)
|
141
|
+
if e.respond_to?(:unsatisfied) && e.unsatisfied
|
142
142
|
constraints = {}
|
143
143
|
# If the module we're installing satisfies all its
|
144
144
|
# dependencies, but would break an already installed
|
@@ -164,8 +164,12 @@ module Puppet::ModuleTool
|
|
164
164
|
# If the module fails to satisfy one of its
|
165
165
|
# dependencies, show the unsatisfiable module
|
166
166
|
else
|
167
|
-
|
168
|
-
|
167
|
+
dep_constraints = graph.dependencies[name].max.constraints
|
168
|
+
|
169
|
+
if dep_constraints.key?(e.unsatisfied)
|
170
|
+
unsatisfied_range = dep_constraints[e.unsatisfied].first[1]
|
171
|
+
constraints[e.unsatisfied] = unsatisfied_range
|
172
|
+
end
|
169
173
|
end
|
170
174
|
|
171
175
|
installed_module = @environment.module_by_forge_name(e.unsatisfied.tr('-', '/'))
|
@@ -175,7 +179,7 @@ module Puppet::ModuleTool
|
|
175
179
|
:name => e.unsatisfied,
|
176
180
|
:constraints => constraints,
|
177
181
|
:current_version => current_version
|
178
|
-
}
|
182
|
+
} if constraints.any?
|
179
183
|
end
|
180
184
|
|
181
185
|
raise NoVersionsSatisfyError, results.merge(
|
@@ -89,7 +89,7 @@ module Puppet::ModuleTool
|
|
89
89
|
mod = @installed.first
|
90
90
|
|
91
91
|
unless @ignore_changes
|
92
|
-
raise _("Either the `--ignore_changes` or `--force` argument must be specified to uninstall modules when running in FIPS mode.") if
|
92
|
+
raise _("Either the `--ignore_changes` or `--force` argument must be specified to uninstall modules when running in FIPS mode.") if Puppet.runtime[:facter].value(:fips_enabled)
|
93
93
|
|
94
94
|
changes = begin
|
95
95
|
Puppet::ModuleTool::Applications::Checksummer.run(mod.path)
|
@@ -27,7 +27,7 @@ module Puppet::ModuleTool
|
|
27
27
|
|
28
28
|
def run
|
29
29
|
# Disallow anything that invokes md5 to avoid un-friendly termination due to FIPS
|
30
|
-
raise _("Module upgrade is prohibited in FIPS mode.") if
|
30
|
+
raise _("Module upgrade is prohibited in FIPS mode.") if Puppet.runtime[:facter].value(:fips_enabled)
|
31
31
|
|
32
32
|
name = @name.tr('/', '-')
|
33
33
|
version = options[:version] || '>= 0.0.0'
|
@@ -105,7 +105,7 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
|
|
105
105
|
raise Puppet::Network::HTTP::Error::HTTPNotAuthorizedError.new(e.message)
|
106
106
|
end
|
107
107
|
|
108
|
-
if configured_environment.nil?
|
108
|
+
if configured_environment.nil? && indirection.terminus.require_environment?
|
109
109
|
raise Puppet::Network::HTTP::Error::HTTPNotFoundError.new(
|
110
110
|
_("Could not find environment '%{environment}'") % { environment: environment })
|
111
111
|
end
|
@@ -305,7 +305,9 @@ class Puppet::Node::Environment
|
|
305
305
|
{}
|
306
306
|
end
|
307
307
|
modulepath.each do |path|
|
308
|
-
|
308
|
+
Puppet::FileSystem.children(path).map do |p|
|
309
|
+
Puppet::FileSystem.basename_string(p)
|
310
|
+
end.each do |name|
|
309
311
|
next unless Puppet::Module.is_module_directory?(name, path)
|
310
312
|
warn_about_mistaken_path(path, name)
|
311
313
|
if not seen_modules[name]
|
@@ -350,9 +352,6 @@ class Puppet::Node::Environment
|
|
350
352
|
|
351
353
|
# Modules broken out by directory in the modulepath
|
352
354
|
#
|
353
|
-
# @note This method _changes_ the current working directory while enumerating
|
354
|
-
# the modules. This seems rather dangerous.
|
355
|
-
#
|
356
355
|
# @api public
|
357
356
|
#
|
358
357
|
# @return [Hash<String, Array<Puppet::Module>>] A hash whose keys are file
|
@@ -361,13 +360,13 @@ class Puppet::Node::Environment
|
|
361
360
|
modules_by_path = {}
|
362
361
|
modulepath.each do |path|
|
363
362
|
if Puppet::FileSystem.exist?(path)
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
363
|
+
module_names = Puppet::FileSystem.children(path).map do |p|
|
364
|
+
Puppet::FileSystem.basename_string(p)
|
365
|
+
end.select do |name|
|
366
|
+
Puppet::Module.is_module_directory?(name, path)
|
367
|
+
end
|
368
|
+
modules_by_path[path] = module_names.sort.map do |name|
|
369
|
+
Puppet::Module.new(name, File.join(path, name), self)
|
371
370
|
end
|
372
371
|
else
|
373
372
|
modules_by_path[path] = []
|
data/lib/puppet/pal/pal_impl.rb
CHANGED
@@ -413,7 +413,7 @@ module Pal
|
|
413
413
|
|
414
414
|
# Puppet requires Facter, which initializes its lookup paths. Reset Facter to
|
415
415
|
# pickup the new $LOAD_PATH.
|
416
|
-
|
416
|
+
Puppet.runtime[:facter].reset
|
417
417
|
|
418
418
|
node = Puppet.lookup(:pal_current_node)
|
419
419
|
pal_facts = Puppet.lookup(:pal_facts)
|
data/lib/puppet/parser/scope.rb
CHANGED
@@ -292,7 +292,8 @@ class LookupAdapter < DataAdapter
|
|
292
292
|
PROVIDER_STACK = [:lookup_global, :lookup_in_environment, :lookup_in_module].freeze
|
293
293
|
|
294
294
|
def validate_lookup_options(options, module_name)
|
295
|
-
|
295
|
+
return nil if options.nil?
|
296
|
+
raise Puppet::DataBinding::LookupError.new(_("value of %{opts} must be a hash") % { opts: LOOKUP_OPTIONS }) unless options.is_a?(Hash)
|
296
297
|
return options if module_name.nil?
|
297
298
|
|
298
299
|
pfx = "#{module_name}::"
|
@@ -352,7 +353,7 @@ class LookupAdapter < DataAdapter
|
|
352
353
|
module_opts = validate_lookup_options(lookup_in_module(LookupKey::LOOKUP_OPTIONS, meta_invocation, merge_strategy), module_name)
|
353
354
|
opts = if opts.nil?
|
354
355
|
module_opts
|
355
|
-
|
356
|
+
elsif module_opts
|
356
357
|
merge_strategy.lookup([GLOBAL_ENV_MERGE, "Module #{lookup_invocation.module_name}"], meta_invocation) do |n|
|
357
358
|
meta_invocation.with(:scope, n) { meta_invocation.report_found(LOOKUP_OPTIONS, n == GLOBAL_ENV_MERGE ? opts : module_opts) }
|
358
359
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Factory is a helper class that makes construction of a Pops Model
|
2
3
|
# much more convenient. It can be viewed as a small internal DSL for model
|
3
4
|
# constructions.
|
@@ -1156,7 +1157,7 @@ class Factory
|
|
1156
1157
|
end
|
1157
1158
|
|
1158
1159
|
def self.concat(*args)
|
1159
|
-
result = ''
|
1160
|
+
result = ''.dup
|
1160
1161
|
args.each do |e|
|
1161
1162
|
if e.instance_of?(Factory) && e.model_class <= LiteralString
|
1162
1163
|
result << e[KEY_VALUE]
|