puppet 4.1.0-x64-mingw32 → 4.2.0-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.

Files changed (117) hide show
  1. data/ext/osx/puppet.plist +32 -0
  2. data/ext/redhat/client.init +3 -6
  3. data/ext/redhat/client.sysconfig +1 -10
  4. data/ext/suse/client.init +3 -6
  5. data/ext/systemd/puppet.service +2 -1
  6. data/lib/puppet.rb +1 -1
  7. data/lib/puppet/agent.rb +4 -19
  8. data/lib/puppet/application/apply.rb +22 -6
  9. data/lib/puppet/configurer.rb +3 -2
  10. data/lib/puppet/configurer/plugin_handler.rb +6 -2
  11. data/lib/puppet/face/plugin.rb +7 -14
  12. data/lib/puppet/forge/repository.rb +1 -2
  13. data/lib/puppet/indirector/catalog/compiler.rb +4 -3
  14. data/lib/puppet/indirector/facts/facter.rb +8 -0
  15. data/lib/puppet/module.rb +17 -12
  16. data/lib/puppet/network/http/factory.rb +8 -4
  17. data/lib/puppet/node/environment.rb +11 -7
  18. data/lib/puppet/parser/ast/pops_bridge.rb +5 -0
  19. data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
  20. data/lib/puppet/parser/scope.rb +39 -13
  21. data/lib/puppet/pops.rb +1 -0
  22. data/lib/puppet/pops/evaluator/runtime3_converter.rb +1 -1
  23. data/lib/puppet/pops/evaluator/runtime3_support.rb +31 -0
  24. data/lib/puppet/pops/parser/epp_support.rb +4 -2
  25. data/lib/puppet/property/ensure.rb +1 -1
  26. data/lib/puppet/provider.rb +5 -0
  27. data/lib/puppet/provider/augeas/augeas.rb +5 -0
  28. data/lib/puppet/provider/group/pw.rb +1 -0
  29. data/lib/puppet/provider/group/windows_adsi.rb +9 -0
  30. data/lib/puppet/provider/mount/parsed.rb +15 -1
  31. data/lib/puppet/provider/package.rb +6 -2
  32. data/lib/puppet/provider/package/gem.rb +16 -0
  33. data/lib/puppet/provider/package/openbsd.rb +7 -7
  34. data/lib/puppet/provider/package/pacman.rb +9 -8
  35. data/lib/puppet/provider/package/pip.rb +1 -1
  36. data/lib/puppet/provider/package/pip3.rb +18 -0
  37. data/lib/puppet/provider/package/pkgdmg.rb +4 -2
  38. data/lib/puppet/provider/package/pkgin.rb +3 -3
  39. data/lib/puppet/provider/package/rpm.rb +8 -14
  40. data/lib/puppet/provider/package/yum.rb +5 -4
  41. data/lib/puppet/provider/service/base.rb +3 -2
  42. data/lib/puppet/provider/service/bsd.rb +7 -7
  43. data/lib/puppet/provider/service/debian.rb +2 -1
  44. data/lib/puppet/provider/service/freebsd.rb +1 -1
  45. data/lib/puppet/provider/service/systemd.rb +75 -6
  46. data/lib/puppet/provider/service/upstart.rb +1 -1
  47. data/lib/puppet/provider/user/pw.rb +1 -0
  48. data/lib/puppet/resource/catalog.rb +1 -1
  49. data/lib/puppet/resource/status.rb +9 -0
  50. data/lib/puppet/resource/type.rb +4 -2
  51. data/lib/puppet/settings.rb +43 -16
  52. data/lib/puppet/transaction.rb +27 -13
  53. data/lib/puppet/type/augeas.rb +1 -0
  54. data/lib/puppet/type/exec.rb +11 -2
  55. data/lib/puppet/type/group.rb +9 -1
  56. data/lib/puppet/type/mount.rb +2 -0
  57. data/lib/puppet/type/package.rb +13 -2
  58. data/lib/puppet/type/service.rb +9 -0
  59. data/lib/puppet/util.rb +8 -3
  60. data/lib/puppet/util/execution.rb +2 -2
  61. data/lib/puppet/util/http_proxy.rb +60 -0
  62. data/lib/puppet/util/log.rb +1 -1
  63. data/lib/puppet/util/splayer.rb +18 -0
  64. data/lib/puppet/version.rb +1 -1
  65. data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +195 -0
  66. data/spec/integration/application/apply_spec.rb +72 -30
  67. data/spec/integration/indirector/facts/facter_spec.rb +38 -0
  68. data/spec/integration/parser/scope_spec.rb +20 -2
  69. data/spec/integration/provider/mount_spec.rb +23 -36
  70. data/spec/integration/transaction_spec.rb +40 -1
  71. data/spec/integration/type/file_spec.rb +36 -0
  72. data/spec/integration/type/package_spec.rb +65 -0
  73. data/spec/lib/matchers/include_in_order.rb +0 -1
  74. data/spec/lib/puppet_spec/files.rb +14 -0
  75. data/spec/unit/agent_spec.rb +0 -38
  76. data/spec/unit/application/apply_spec.rb +13 -0
  77. data/spec/unit/configurer/plugin_handler_spec.rb +42 -13
  78. data/spec/unit/configurer_spec.rb +5 -0
  79. data/spec/unit/face/plugin_spec.rb +33 -4
  80. data/spec/unit/file_serving/configuration/parser_spec.rb +25 -30
  81. data/spec/unit/indirector/catalog/compiler_spec.rb +16 -0
  82. data/spec/unit/indirector/facts/facter_spec.rb +2 -1
  83. data/spec/unit/module_spec.rb +0 -23
  84. data/spec/unit/network/http/factory_spec.rb +14 -0
  85. data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -2
  86. data/spec/unit/parser/functions/generate_spec.rb +3 -12
  87. data/spec/unit/parser/scope_spec.rb +9 -0
  88. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +19 -0
  89. data/spec/unit/pops/evaluator/variables_spec.rb +1 -1
  90. data/spec/unit/pops/parser/lexer2_spec.rb +35 -3
  91. data/spec/unit/provider/augeas/augeas_spec.rb +9 -0
  92. data/spec/unit/provider/group/windows_adsi_spec.rb +5 -0
  93. data/spec/unit/provider/package/aptrpm_spec.rb +2 -2
  94. data/spec/unit/provider/package/base_spec.rb +18 -0
  95. data/spec/unit/provider/package/gem_spec.rb +70 -0
  96. data/spec/unit/provider/package/pacman_spec.rb +55 -0
  97. data/spec/unit/provider/package/pip3_spec.rb +257 -0
  98. data/spec/unit/provider/package/pip_spec.rb +1 -1
  99. data/spec/unit/provider/package/pkgdmg_spec.rb +18 -0
  100. data/spec/unit/provider/package/pkgin_spec.rb +23 -13
  101. data/spec/unit/provider/package/yum_spec.rb +11 -0
  102. data/spec/unit/provider/service/bsd_spec.rb +130 -0
  103. data/spec/unit/provider/service/debian_spec.rb +12 -1
  104. data/spec/unit/provider/service/freebsd_spec.rb +16 -0
  105. data/spec/unit/provider/service/systemd_spec.rb +84 -7
  106. data/spec/unit/provider/service/upstart_spec.rb +1 -0
  107. data/spec/unit/provider/zone/solaris_spec.rb +45 -12
  108. data/spec/unit/puppet_spec.rb +1 -1
  109. data/spec/unit/resource/catalog_spec.rb +5 -0
  110. data/spec/unit/type/mount_spec.rb +8 -0
  111. data/spec/unit/type/service_spec.rb +5 -0
  112. data/spec/unit/util/http_proxy_spec.rb +87 -0
  113. data/spec/unit/util/log_spec.rb +12 -1
  114. data/spec/unit/util/splayer_spec.rb +45 -0
  115. metadata +3071 -3035
  116. checksums.yaml +0 -7
  117. data/ext/systemd/puppetmaster.service +0 -11
@@ -0,0 +1,32 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>EnvironmentVariables</key>
6
+ <dict>
7
+ <key>PATH</key>
8
+ <string>/opt/puppetlabs/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
9
+ <key>LANG</key>
10
+ <string>en_US.UTF-8</string>
11
+ </dict>
12
+ <key>Label</key>
13
+ <string>puppet</string>
14
+ <key>KeepAlive</key>
15
+ <true/>
16
+ <key>ProgramArguments</key>
17
+ <array>
18
+ <string>/opt/puppetlabs/bin/puppet</string>
19
+ <string>agent</string>
20
+ <string>--verbose</string>
21
+ <string>--no-daemonize</string>
22
+ <string>--logdest</string>
23
+ <string>console</string>
24
+ </array>
25
+ <key>RunAtLoad</key>
26
+ <true/>
27
+ <key>StandardErrorPath</key>
28
+ <string>/var/log/puppetlabs/puppet/puppet.log</string>
29
+ <key>StandardOutPath</key>
30
+ <string>/var/log/puppetlabs/puppet/puppet.log</string>
31
+ </dict>
32
+ </plist>
@@ -17,15 +17,12 @@ PATH=/opt/puppetlabs/puppet/bin:/usr/bin:/sbin:/bin:/usr/sbin
17
17
  export PATH
18
18
 
19
19
  [ -f /etc/sysconfig/puppet ] && . /etc/sysconfig/puppet
20
- lockfile=${LOCKFILE-/var/lock/subsys/puppet}
21
- pidfile=${PIDFILE-/var/run/puppetlabs/agent.pid}
22
- puppetd=${PUPPETD-/opt/puppetlabs/puppet/bin/puppet}
20
+ lockfile=/var/lock/subsys/puppet
21
+ pidfile=/var/run/puppetlabs/agent.pid
22
+ puppetd=/opt/puppetlabs/puppet/bin/puppet
23
23
  RETVAL=0
24
24
 
25
25
  PUPPET_OPTS="agent "
26
- [ -n "${PUPPET_SERVER}" ] && PUPPET_OPTS="${PUPPET_OPTS} --server=${PUPPET_SERVER}"
27
- [ -n "$PUPPET_LOG" ] && PUPPET_OPTS="${PUPPET_OPTS} --logdest=${PUPPET_LOG}"
28
- [ -n "$PUPPET_PORT" ] && PUPPET_OPTS="${PUPPET_OPTS} --masterport=${PUPPET_PORT}"
29
26
 
30
27
  # Determine if we can use the -p option to daemon, killproc, and status.
31
28
  # RHEL < 5 can't.
@@ -1,11 +1,2 @@
1
- # The puppetmaster server
2
- #PUPPET_SERVER=puppet
3
-
4
- # If you wish to specify the port to connect to do so here
5
- #PUPPET_PORT=8140
6
-
7
- # Where to log to. Specify syslog to send log messages to the system log.
8
- #PUPPET_LOG=/var/log/puppetlabs/puppet/puppet.log
9
-
10
- # You may specify other parameters to the puppet client here
1
+ # You may specify parameters to the puppet client here
11
2
  #PUPPET_EXTRA_OPTS=--waitforcert=500
@@ -33,15 +33,12 @@
33
33
  # rc_exit exit appropriate to overall rc status
34
34
  [ -f /etc/rc.status ] && . /etc/rc.status
35
35
  [ -f /etc/sysconfig/puppet ] && . /etc/sysconfig/puppet
36
- lockfile=${LOCKFILE-/var/lock/subsys/puppet}
37
- pidfile=${PIDFILE-/var/run/puppetlabs/agent.pid}
38
- puppetd=${PUPPETD-/usr/bin/puppet}
36
+ lockfile=/var/lock/subsys/puppet
37
+ pidfile=/var/run/puppetlabs/agent.pid
38
+ puppetd=/opt/puppetlabs/puppet/bin/puppet
39
39
  RETVAL=0
40
40
 
41
41
  PUPPET_OPTS="agent"
42
- [ -n "${PUPPET_SERVER}" ] && PUPPET_OPTS="${PUPPET_OPTS} --server=${PUPPET_SERVER}"
43
- [ -n "$PUPPET_LOG" ] && PUPPET_OPTS="${PUPPET_OPTS} --logdest=${PUPPET_LOG}"
44
- [ -n "$PUPPET_PORT" ] && PUPPET_OPTS="${PUPPET_OPTS} --port=${PUPPET_PORT}"
45
42
 
46
43
  # First reset status of this service
47
44
  rc_reset
@@ -1,11 +1,12 @@
1
1
  [Unit]
2
2
  Description=Puppet agent
3
3
  Wants=basic.target
4
- After=basic.target network.target puppetmaster.service
4
+ After=basic.target network.target
5
5
 
6
6
  [Service]
7
7
  EnvironmentFile=-/etc/sysconfig/puppetagent
8
8
  EnvironmentFile=-/etc/sysconfig/puppet
9
+ EnvironmentFile=-/etc/default/puppet
9
10
  ExecStart=/opt/puppetlabs/puppet/bin/puppet agent $PUPPET_EXTRA_OPTS --no-daemonize
10
11
  KillMode=process
11
12
 
@@ -142,7 +142,7 @@ module Puppet
142
142
  # code was deprecated in 2008, but this is still in heavy use. I suppose
143
143
  # this can count as a soft deprecation for the next dev. --daniel 2011-04-12
144
144
  def self.newtype(name, options = {}, &block)
145
- Puppet.deprecation_warning("Puppet.newtype is deprecated and will be removed in a future release. Use Puppet::Type.newtype instead.")
145
+ Puppet.deprecation_warning("Creating #{name} via Puppet.newtype is deprecated and will be removed in a future release. Use Puppet::Type.newtype instead.")
146
146
  Puppet::Type.newtype(name, options, &block)
147
147
  end
148
148
 
@@ -9,11 +9,12 @@ class Puppet::Agent
9
9
  require 'puppet/agent/disabler'
10
10
  include Puppet::Agent::Disabler
11
11
 
12
- attr_reader :client_class, :client, :splayed, :should_fork
12
+ require 'puppet/util/splayer'
13
+ include Puppet::Util::Splayer
13
14
 
14
- def initialize(client_class, should_fork=true)
15
- @splayed = false
15
+ attr_reader :client_class, :client, :should_fork
16
16
 
17
+ def initialize(client_class, should_fork=true)
17
18
  @should_fork = can_fork? && should_fork
18
19
  @client_class = client_class
19
20
  end
@@ -60,22 +61,6 @@ class Puppet::Agent
60
61
  Puppet::Application.stop_requested?
61
62
  end
62
63
 
63
- # Have we splayed already?
64
- def splayed?
65
- splayed
66
- end
67
-
68
- # Sleep when splay is enabled; else just return.
69
- def splay(do_splay = Puppet[:splay])
70
- return unless do_splay
71
- return if splayed?
72
-
73
- time = rand(Puppet[:splaylimit] + 1)
74
- Puppet.info "Sleeping for #{time} seconds (splay is enabled)"
75
- sleep(time)
76
- @splayed = true
77
- end
78
-
79
64
  def run_in_fork(forking = true)
80
65
  return yield unless forking or Puppet.features.windows?
81
66
 
@@ -3,6 +3,8 @@ require 'puppet/configurer'
3
3
  require 'puppet/util/profiler/aggregate'
4
4
 
5
5
  class Puppet::Application::Apply < Puppet::Application
6
+ require 'puppet/util/splayer'
7
+ include Puppet::Util::Splayer
6
8
 
7
9
  option("--debug","-d")
8
10
  option("--execute EXECUTE","-e") do |arg|
@@ -180,6 +182,9 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
180
182
  Puppet.warning("Only one file can be applied per run. Skipping #{command_line.args.join(', ')}") if command_line.args.size > 0
181
183
  end
182
184
 
185
+ # splay if needed
186
+ splay
187
+
183
188
  unless Puppet[:node_name_fact].empty?
184
189
  # Collect our facts.
185
190
  unless facts = Puppet::Node::Facts.indirection.find(Puppet[:node_name_value])
@@ -190,17 +195,25 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
190
195
  facts.name = Puppet[:node_name_value]
191
196
  end
192
197
 
193
- configured_environment = Puppet.lookup(:current_environment)
198
+ # Find our Node
199
+ unless node = Puppet::Node.indirection.find(Puppet[:node_name_value])
200
+ raise "Could not find node #{Puppet[:node_name_value]}"
201
+ end
202
+
203
+ configured_environment = node.environment || Puppet.lookup(:current_environment)
204
+
194
205
  apply_environment = manifest ?
195
206
  configured_environment.override_with(:manifest => manifest) :
196
207
  configured_environment
197
208
 
198
- Puppet.override({:current_environment => apply_environment}, "For puppet apply") do
199
- # Find our Node
200
- unless node = Puppet::Node.indirection.find(Puppet[:node_name_value])
201
- raise "Could not find node #{Puppet[:node_name_value]}"
202
- end
209
+ # Modify the node descriptor to use the special apply_environment.
210
+ # It is based on the actual environment from the node, or the locally
211
+ # configured environment if the node does not specify one.
212
+ # If a manifest file is passed on the command line, it overrides
213
+ # the :manifest setting of the apply_environment.
214
+ node.environment = apply_environment
203
215
 
216
+ Puppet.override({:current_environment => apply_environment}, "For puppet apply") do
204
217
  # Merge in the facts.
205
218
  node.merge(facts.values) if facts
206
219
 
@@ -273,6 +286,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
273
286
 
274
287
  # Enable all of the most common test options.
275
288
  def setup_test
289
+ Puppet.settings.handlearg("--no-splay")
276
290
  Puppet.settings.handlearg("--show_diff")
277
291
  options[:verbose] = true
278
292
  options[:detailed_exitcodes] = true
@@ -290,6 +304,8 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
290
304
  exit(1)
291
305
  end
292
306
 
307
+ Puppet.settings.use :main, :agent, :ssl
308
+
293
309
  # we want the last report to be persisted locally
294
310
  Puppet::Transaction::Report.indirection.cache_class = :yaml
295
311
 
@@ -45,8 +45,6 @@ class Puppet::Configurer
45
45
  end
46
46
 
47
47
  def initialize(factory = Puppet::Configurer::DownloaderFactory.new)
48
- Puppet.settings.use(:main, :ssl, :agent)
49
-
50
48
  @running = false
51
49
  @splayed = false
52
50
  @environment = Puppet[:environment]
@@ -161,6 +159,7 @@ class Puppet::Configurer
161
159
  begin
162
160
  if node = Puppet::Node.indirection.find(Puppet[:node_name_value],
163
161
  :environment => Puppet::Node::Environment.remote(@environment),
162
+ :configured_environment => Puppet[:environment],
164
163
  :ignore_cache => true,
165
164
  :transaction_uuid => @transaction_uuid,
166
165
  :fail_on_404 => true)
@@ -198,6 +197,7 @@ class Puppet::Configurer
198
197
 
199
198
  query_options = get_facts(options) unless query_options
200
199
  query_options[:transaction_uuid] = @transaction_uuid
200
+ query_options[:configured_environment] = Puppet[:environment]
201
201
 
202
202
  unless catalog = prepare_and_retrieve_catalog(options, query_options)
203
203
  return nil
@@ -218,6 +218,7 @@ class Puppet::Configurer
218
218
 
219
219
  query_options = get_facts(options)
220
220
  query_options[:transaction_uuid] = @transaction_uuid
221
+ query_options[:configured_environment] = Puppet[:environment]
221
222
 
222
223
  return nil unless catalog = prepare_and_retrieve_catalog(options, query_options)
223
224
  tries += 1
@@ -12,12 +12,16 @@ class Puppet::Configurer::PluginHandler
12
12
  def download_plugins(environment)
13
13
  plugin_downloader = @factory.create_plugin_downloader(environment)
14
14
 
15
+ result = []
16
+
15
17
  if Puppet.features.external_facts?
16
18
  plugin_fact_downloader = @factory.create_plugin_facts_downloader(environment)
17
- plugin_fact_downloader.evaluate
19
+ result += plugin_fact_downloader.evaluate
18
20
  end
19
21
 
20
- plugin_downloader.evaluate
22
+ result += plugin_downloader.evaluate
21
23
  Puppet::Util::Autoload.reload_changed
24
+
25
+ result
22
26
  end
23
27
  end
@@ -1,4 +1,7 @@
1
1
  require 'puppet/face'
2
+ require 'puppet/configurer/downloader_factory'
3
+ require 'puppet/configurer/plugin_handler'
4
+
2
5
  Puppet::Face.define(:plugin, '0.0.1') do
3
6
  copyright "Puppet Labs", 2011
4
7
  license "Apache 2 license; see COPYING"
@@ -37,21 +40,11 @@ Puppet::Face.define(:plugin, '0.0.1') do
37
40
  EOT
38
41
 
39
42
  when_invoked do |options|
40
- require 'puppet/configurer/downloader'
41
43
  remote_environment_for_plugins = Puppet::Node::Environment.remote(Puppet[:environment])
42
- result = Puppet::Configurer::Downloader.new("plugin",
43
- Puppet[:plugindest],
44
- Puppet[:pluginsource],
45
- Puppet[:pluginsignore],
46
- remote_environment_for_plugins).evaluate
47
- if Puppet.features.external_facts?
48
- result += Puppet::Configurer::Downloader.new("pluginfacts",
49
- Puppet[:pluginfactdest],
50
- Puppet[:pluginfactsource],
51
- Puppet[:pluginsignore],
52
- remote_environment_for_plugins).evaluate
53
- end
54
- result
44
+
45
+ factory = Puppet::Configurer::DownloaderFactory.new
46
+ handler = Puppet::Configurer::PluginHandler.new(factory)
47
+ handler.download_plugins(remote_environment_for_plugins)
55
48
  end
56
49
 
57
50
  when_rendering :console do |value|
@@ -130,8 +130,7 @@ class Puppet::Forge
130
130
  #
131
131
  # @return [Net::HTTP::Proxy] object constructed from repo settings
132
132
  def get_http_object
133
- proxy_class = Net::HTTP::Proxy(Puppet::Util::HttpProxy.http_proxy_host, Puppet::Util::HttpProxy.http_proxy_port, Puppet::Util::HttpProxy.http_proxy_user, Puppet::Util::HttpProxy.http_proxy_password)
134
- proxy = proxy_class.new(@uri.host, @uri.port)
133
+ proxy = Puppet::Util::HttpProxy.proxy(@uri)
135
134
 
136
135
  if @uri.scheme == 'https'
137
136
  cert_store = OpenSSL::X509::Store.new
@@ -102,12 +102,13 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
102
102
  end
103
103
 
104
104
  # Turn our host name into a node object.
105
- def find_node(name, environment, transaction_uuid)
105
+ def find_node(name, environment, transaction_uuid, configured_environment)
106
106
  Puppet::Util::Profiler.profile("Found node information", [:compiler, :find_node]) do
107
107
  node = nil
108
108
  begin
109
109
  node = Puppet::Node.indirection.find(name, :environment => environment,
110
- :transaction_uuid => transaction_uuid)
110
+ :transaction_uuid => transaction_uuid,
111
+ :configured_environment => configured_environment)
111
112
  rescue => detail
112
113
  message = "Failed when searching for node #{name}: #{detail}"
113
114
  Puppet.log_exception(detail, message)
@@ -142,7 +143,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
142
143
  # node's catalog with only one certificate and a modification to auth.conf
143
144
  # If no key is provided we can only compile the currently connected node.
144
145
  name = request.key || request.node
145
- if node = find_node(name, request.environment, request.options[:transaction_uuid])
146
+ if node = find_node(name, request.environment, request.options[:transaction_uuid], request.options[:configured_environment])
146
147
  return node
147
148
  end
148
149
 
@@ -35,6 +35,14 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
35
35
  setcode { Puppet.version.to_s }
36
36
  end
37
37
 
38
+ Facter.add(:agent_specified_environment) do
39
+ setcode do
40
+ if Puppet.settings.set_by_config?(:environment)
41
+ Puppet[:environment]
42
+ end
43
+ end
44
+ end
45
+
38
46
  result = Puppet::Node::Facts.new(request.key, Facter.to_hash)
39
47
  result.add_local_facts
40
48
  result.sanitize
@@ -56,7 +56,7 @@ class Puppet::Module
56
56
  attr_writer :environment
57
57
 
58
58
  attr_accessor :dependencies, :forge_name
59
- attr_accessor :source, :author, :version, :license, :puppetversion, :summary, :description, :project_page
59
+ attr_accessor :source, :author, :version, :license, :summary, :description, :project_page
60
60
 
61
61
  def initialize(name, path, environment)
62
62
  @name = name
@@ -67,11 +67,23 @@ class Puppet::Module
67
67
 
68
68
  load_metadata if has_metadata?
69
69
 
70
- validate_puppet_version
71
-
72
70
  @absolute_path_to_manifests = Puppet::FileSystem::PathPattern.absolute(manifests)
73
71
  end
74
72
 
73
+ # @deprecated The puppetversion module metadata field is no longer used.
74
+ def puppetversion
75
+ nil
76
+ end
77
+
78
+ # @deprecated The puppetversion module metadata field is no longer used.
79
+ def puppetversion=(something)
80
+ end
81
+
82
+ # @deprecated The puppetversion module metadata field is no longer used.
83
+ def validate_puppet_version
84
+ return
85
+ end
86
+
75
87
  def has_metadata?
76
88
  return false unless metadata_file
77
89
 
@@ -136,11 +148,9 @@ class Puppet::Module
136
148
  @metadata = data = JSON.parse(File.read(metadata_file))
137
149
  @forge_name = data['name'].gsub('-', '/') if data['name']
138
150
 
139
- [:source, :author, :version, :license, :puppetversion, :dependencies].each do |attr|
151
+ [:source, :author, :version, :license, :dependencies].each do |attr|
140
152
  unless value = data[attr.to_s]
141
- unless attr == :puppetversion
142
- raise MissingMetadata, "No #{attr} module metadata provided for #{self.name}"
143
- end
153
+ raise MissingMetadata, "No #{attr} module metadata provided for #{self.name}"
144
154
  end
145
155
 
146
156
  if attr == :dependencies
@@ -307,11 +317,6 @@ class Puppet::Module
307
317
  unmet_dependencies
308
318
  end
309
319
 
310
- def validate_puppet_version
311
- return unless puppetversion and puppetversion != Puppet.version
312
- raise IncompatibleModule, "Module #{self.name} is only compatible with Puppet version #{puppetversion}, not #{Puppet.version}"
313
- end
314
-
315
320
  def ==(other)
316
321
  self.name == other.name &&
317
322
  self.version == other.version &&
@@ -1,5 +1,6 @@
1
1
  require 'openssl'
2
2
  require 'net/http'
3
+ require 'puppet/util/http_proxy'
3
4
 
4
5
  # Factory for <tt>Net::HTTP</tt> objects.
5
6
  #
@@ -23,10 +24,13 @@ class Puppet::Network::HTTP::Factory
23
24
  Puppet.debug("Creating new connection for #{site}")
24
25
 
25
26
  args = [site.host, site.port]
26
- if Puppet[:http_proxy_host] == "none"
27
- args << nil << nil
28
- else
29
- args << Puppet[:http_proxy_host] << Puppet[:http_proxy_port]
27
+
28
+ unless Puppet::Util::HttpProxy.no_proxy?(site)
29
+ if Puppet[:http_proxy_host] == "none"
30
+ args << nil << nil
31
+ else
32
+ args << Puppet[:http_proxy_host] << Puppet[:http_proxy_port]
33
+ end
30
34
  end
31
35
 
32
36
  http = Net::HTTP.new(*args)
@@ -179,7 +179,7 @@ class Puppet::Node::Environment
179
179
  # Puppet[:disable_per_environment_manifest] is true, and this environment's
180
180
  # original environment.conf had a manifest setting that is not the
181
181
  # Puppet[:default_manifest].
182
- # @api private
182
+ # @api private
183
183
  def conflicting_manifest_settings?
184
184
  return false if !Puppet[:disable_per_environment_manifest]
185
185
  environment_conf = Puppet.lookup(:environments).get_conf(name)
@@ -318,13 +318,17 @@ class Puppet::Node::Environment
318
318
  def modules_by_path
319
319
  modules_by_path = {}
320
320
  modulepath.each do |path|
321
- Dir.chdir(path) do
322
- module_names = Dir.entries(path).select do |name|
323
- Puppet::Module.is_module_directory?(name, path)
324
- end
325
- modules_by_path[path] = module_names.sort.map do |name|
326
- Puppet::Module.new(name, File.join(path, name), self)
321
+ if Puppet::FileSystem.exist?(path)
322
+ Dir.chdir(path) do
323
+ module_names = Dir.entries(path).select do |name|
324
+ Puppet::Module.is_module_directory?(name, path)
325
+ end
326
+ modules_by_path[path] = module_names.sort.map do |name|
327
+ Puppet::Module.new(name, File.join(path, name), self)
328
+ end
327
329
  end
330
+ else
331
+ modules_by_path[path] = []
328
332
  end
329
333
  end
330
334
  modules_by_path