puppet 5.5.17-x86-mingw32 → 5.5.18-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.

Files changed (225) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +1 -1
  3. data/Gemfile +2 -3
  4. data/Gemfile.lock +35 -31
  5. data/ext/build_defaults.yaml +1 -0
  6. data/ext/cert_inspector +3 -3
  7. data/ext/puppet-test +2 -2
  8. data/ext/regexp_nodes/regexp_nodes.rb +4 -4
  9. data/ext/windows/service/daemon.rb +54 -8
  10. data/install.rb +6 -6
  11. data/lib/puppet/application.rb +1 -1
  12. data/lib/puppet/application/apply.rb +2 -2
  13. data/lib/puppet/application/describe.rb +3 -9
  14. data/lib/puppet/application/doc.rb +1 -1
  15. data/lib/puppet/application/lookup.rb +1 -1
  16. data/lib/puppet/application/script.rb +2 -2
  17. data/lib/puppet/configurer.rb +86 -28
  18. data/lib/puppet/configurer/downloader.rb +2 -6
  19. data/lib/puppet/defaults.rb +17 -4
  20. data/lib/puppet/error.rb +9 -1
  21. data/lib/puppet/external/nagios/base.rb +1 -1
  22. data/lib/puppet/face/ca.rb +1 -1
  23. data/lib/puppet/face/module/list.rb +5 -5
  24. data/lib/puppet/face/module/search.rb +1 -1
  25. data/lib/puppet/face/module/uninstall.rb +1 -1
  26. data/lib/puppet/face/module/upgrade.rb +1 -1
  27. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  28. data/lib/puppet/file_system.rb +0 -8
  29. data/lib/puppet/file_system/memory_file.rb +1 -1
  30. data/lib/puppet/file_system/posix.rb +3 -2
  31. data/lib/puppet/forge.rb +3 -3
  32. data/lib/puppet/functions/epp.rb +4 -4
  33. data/lib/puppet/functions/inline_epp.rb +5 -5
  34. data/lib/puppet/gettext/module_translations.rb +1 -1
  35. data/lib/puppet/graph/rb_tree_map.rb +2 -2
  36. data/lib/puppet/graph/simple_graph.rb +6 -5
  37. data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
  38. data/lib/puppet/indirector/hiera.rb +2 -0
  39. data/lib/puppet/indirector/resource/ral.rb +1 -3
  40. data/lib/puppet/indirector/resource/validator.rb +1 -1
  41. data/lib/puppet/interface.rb +2 -1
  42. data/lib/puppet/loaders.rb +0 -1
  43. data/lib/puppet/metatype/manager.rb +1 -1
  44. data/lib/puppet/module.rb +1 -1
  45. data/lib/puppet/module_tool/applications/builder.rb +1 -1
  46. data/lib/puppet/module_tool/applications/installer.rb +1 -1
  47. data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
  48. data/lib/puppet/module_tool/metadata.rb +1 -1
  49. data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
  50. data/lib/puppet/module_tool/tar/mini.rb +1 -1
  51. data/lib/puppet/network/http/api/indirected_routes.rb +12 -11
  52. data/lib/puppet/network/http/connection.rb +10 -12
  53. data/lib/puppet/network/http/pool.rb +2 -0
  54. data/lib/puppet/network/http/rack/rest.rb +2 -2
  55. data/lib/puppet/network/http/site.rb +1 -1
  56. data/lib/puppet/network/resolver.rb +2 -2
  57. data/lib/puppet/node/environment.rb +4 -2
  58. data/lib/puppet/parser/ast.rb +1 -1
  59. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  60. data/lib/puppet/parser/functions.rb +1 -1
  61. data/lib/puppet/parser/functions/epp.rb +3 -3
  62. data/lib/puppet/parser/functions/inline_epp.rb +5 -5
  63. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  64. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
  65. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
  66. data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
  67. data/lib/puppet/pops/loaders.rb +1 -1
  68. data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
  69. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  70. data/lib/puppet/pops/merge_strategy.rb +22 -18
  71. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  72. data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
  73. data/lib/puppet/pops/parser/locator.rb +1 -1
  74. data/lib/puppet/pops/parser/pn_parser.rb +17 -16
  75. data/lib/puppet/pops/puppet_stack.rb +51 -48
  76. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
  77. data/lib/puppet/pops/types/string_converter.rb +10 -10
  78. data/lib/puppet/pops/types/types.rb +3 -3
  79. data/lib/puppet/property.rb +1 -1
  80. data/lib/puppet/property/ensure.rb +1 -1
  81. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  82. data/lib/puppet/provider/cron/crontab.rb +1 -1
  83. data/lib/puppet/provider/exec.rb +6 -2
  84. data/lib/puppet/provider/mount.rb +1 -1
  85. data/lib/puppet/provider/mount/parsed.rb +8 -8
  86. data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
  87. data/lib/puppet/provider/nameservice/pw.rb +2 -2
  88. data/lib/puppet/provider/package/dnfmodule.rb +87 -0
  89. data/lib/puppet/provider/package/dpkg.rb +3 -12
  90. data/lib/puppet/provider/package/openbsd.rb +1 -1
  91. data/lib/puppet/provider/package/pip.rb +34 -9
  92. data/lib/puppet/provider/package/portage.rb +4 -4
  93. data/lib/puppet/provider/package/rpm.rb +6 -6
  94. data/lib/puppet/provider/package/windows/package.rb +1 -1
  95. data/lib/puppet/provider/package/yum.rb +1 -1
  96. data/lib/puppet/provider/package_targetable.rb +5 -4
  97. data/lib/puppet/provider/parsedfile.rb +1 -1
  98. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
  99. data/lib/puppet/provider/service/daemontools.rb +9 -9
  100. data/lib/puppet/provider/service/openbsd.rb +1 -1
  101. data/lib/puppet/provider/service/rcng.rb +2 -2
  102. data/lib/puppet/provider/service/runit.rb +2 -8
  103. data/lib/puppet/provider/service/systemd.rb +8 -8
  104. data/lib/puppet/provider/user/directoryservice.rb +1 -1
  105. data/lib/puppet/provider/user/hpux.rb +1 -1
  106. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  107. data/lib/puppet/provider/user/useradd.rb +22 -13
  108. data/lib/puppet/provider/user/windows_adsi.rb +4 -5
  109. data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
  110. data/lib/puppet/reference/indirection.rb +2 -2
  111. data/lib/puppet/reference/metaparameter.rb +1 -3
  112. data/lib/puppet/reference/providers.rb +1 -1
  113. data/lib/puppet/reference/type.rb +3 -9
  114. data/lib/puppet/reports.rb +1 -1
  115. data/lib/puppet/resource.rb +1 -1
  116. data/lib/puppet/resource/catalog.rb +1 -1
  117. data/lib/puppet/settings.rb +3 -3
  118. data/lib/puppet/settings/environment_conf.rb +1 -0
  119. data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
  120. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  121. data/lib/puppet/ssl/host.rb +3 -3
  122. data/lib/puppet/ssl/oids.rb +1 -1
  123. data/lib/puppet/transaction/report.rb +1 -1
  124. data/lib/puppet/type.rb +2 -4
  125. data/lib/puppet/type/cron.rb +1 -1
  126. data/lib/puppet/type/exec.rb +7 -3
  127. data/lib/puppet/type/file.rb +1 -2
  128. data/lib/puppet/type/file/data_sync.rb +5 -1
  129. data/lib/puppet/type/group.rb +4 -2
  130. data/lib/puppet/type/interface.rb +1 -1
  131. data/lib/puppet/type/notify.rb +3 -2
  132. data/lib/puppet/type/package.rb +2 -2
  133. data/lib/puppet/type/schedule.rb +1 -1
  134. data/lib/puppet/type/selboolean.rb +17 -3
  135. data/lib/puppet/type/service.rb +1 -1
  136. data/lib/puppet/type/user.rb +4 -2
  137. data/lib/puppet/util.rb +35 -12
  138. data/lib/puppet/util/command_line/trollop.rb +1 -1
  139. data/lib/puppet/util/http_proxy.rb +8 -14
  140. data/lib/puppet/util/instance_loader.rb +1 -1
  141. data/lib/puppet/util/log.rb +1 -1
  142. data/lib/puppet/util/log/destinations.rb +2 -2
  143. data/lib/puppet/util/logging.rb +30 -18
  144. data/lib/puppet/util/metric.rb +2 -2
  145. data/lib/puppet/util/monkey_patches.rb +1 -1
  146. data/lib/puppet/util/nagios_maker.rb +2 -2
  147. data/lib/puppet/util/network_device/cisco/device.rb +1 -1
  148. data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
  149. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  150. data/lib/puppet/util/provider_features.rb +2 -4
  151. data/lib/puppet/util/rdoc.rb +1 -1
  152. data/lib/puppet/util/reference.rb +1 -1
  153. data/lib/puppet/util/resource_template.rb +1 -1
  154. data/lib/puppet/util/selinux.rb +3 -1
  155. data/lib/puppet/util/windows/adsi.rb +58 -28
  156. data/lib/puppet/util/windows/registry.rb +7 -5
  157. data/lib/puppet/vendor.rb +1 -1
  158. data/lib/puppet/version.rb +1 -1
  159. data/lib/puppet_pal.rb +2 -2
  160. data/locales/puppet.pot +115 -95
  161. data/man/man5/puppet.conf.5 +21 -5
  162. data/man/man8/puppet-agent.8 +1 -1
  163. data/man/man8/puppet-apply.8 +1 -1
  164. data/man/man8/puppet-ca.8 +1 -1
  165. data/man/man8/puppet-catalog.8 +1 -1
  166. data/man/man8/puppet-cert.8 +1 -1
  167. data/man/man8/puppet-certificate.8 +1 -1
  168. data/man/man8/puppet-certificate_request.8 +1 -1
  169. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  170. data/man/man8/puppet-config.8 +1 -1
  171. data/man/man8/puppet-describe.8 +1 -1
  172. data/man/man8/puppet-device.8 +1 -1
  173. data/man/man8/puppet-doc.8 +1 -1
  174. data/man/man8/puppet-epp.8 +1 -1
  175. data/man/man8/puppet-facts.8 +1 -1
  176. data/man/man8/puppet-filebucket.8 +1 -1
  177. data/man/man8/puppet-generate.8 +1 -1
  178. data/man/man8/puppet-help.8 +1 -1
  179. data/man/man8/puppet-key.8 +1 -1
  180. data/man/man8/puppet-lookup.8 +1 -1
  181. data/man/man8/puppet-man.8 +1 -1
  182. data/man/man8/puppet-master.8 +1 -1
  183. data/man/man8/puppet-module.8 +1 -1
  184. data/man/man8/puppet-node.8 +1 -1
  185. data/man/man8/puppet-parser.8 +1 -1
  186. data/man/man8/puppet-plugin.8 +1 -1
  187. data/man/man8/puppet-report.8 +1 -1
  188. data/man/man8/puppet-resource.8 +1 -1
  189. data/man/man8/puppet-script.8 +1 -1
  190. data/man/man8/puppet-status.8 +1 -1
  191. data/man/man8/puppet.8 +2 -2
  192. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list-installed.txt +11 -0
  193. data/spec/integration/configurer_spec.rb +52 -0
  194. data/spec/integration/type/notify_spec.rb +46 -0
  195. data/spec/unit/configurer_spec.rb +380 -397
  196. data/spec/unit/forge/forge_spec.rb +1 -3
  197. data/spec/unit/forge/repository_spec.rb +1 -3
  198. data/spec/unit/indirector/resource/ral_spec.rb +4 -4
  199. data/spec/unit/network/http/connection_spec.rb +26 -0
  200. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
  201. data/spec/unit/provider/exec_spec.rb +209 -0
  202. data/spec/unit/provider/package/dnfmodule_spec.rb +186 -0
  203. data/spec/unit/provider/package/dpkg_spec.rb +15 -3
  204. data/spec/unit/provider/package/pip_spec.rb +51 -6
  205. data/spec/unit/provider/package/portage_spec.rb +4 -4
  206. data/spec/unit/provider/package_targetable_spec.rb +60 -0
  207. data/spec/unit/provider/service/daemontools_spec.rb +24 -0
  208. data/spec/unit/provider/service/runit_spec.rb +24 -0
  209. data/spec/unit/provider/service/systemd_spec.rb +22 -22
  210. data/spec/unit/provider/user/hpux_spec.rb +2 -2
  211. data/spec/unit/provider/user/useradd_spec.rb +46 -0
  212. data/spec/unit/type/exec_spec.rb +6 -12
  213. data/spec/unit/type/file/content_spec.rb +9 -3
  214. data/spec/unit/type/file_spec.rb +9 -4
  215. data/spec/unit/type/selboolean_spec.rb +4 -6
  216. data/spec/unit/util/execution_spec.rb +16 -0
  217. data/spec/unit/util/http_proxy_spec.rb +97 -0
  218. data/spec/unit/util/log/destinations_spec.rb +7 -3
  219. data/spec/unit/util/log_spec.rb +0 -138
  220. data/spec/unit/util/logging_spec.rb +200 -0
  221. data/spec/unit/util/windows/adsi_spec.rb +51 -0
  222. data/tasks/manpages.rake +1 -0
  223. metadata +12 -5
  224. data/lib/puppet/pops/loader/null_loader.rb +0 -60
  225. data/locales/ja/puppet.po +0 -12114
@@ -79,7 +79,7 @@ class Puppet::Provider::Package::Windows
79
79
 
80
80
  def self.replace_forward_slashes(value)
81
81
  if value.include?('/')
82
- value.gsub!('/', "\\")
82
+ value.tr!('/', "\\")
83
83
  Puppet.debug('Package source parameter contained /s - replaced with \\s')
84
84
  end
85
85
  value
@@ -92,7 +92,7 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
92
92
  updates = Hash.new { |h, k| h[k] = [] }
93
93
  body.split.each_slice(3) do |tuple|
94
94
  break if tuple[0] =~ /^(Obsoleting|Security:|Update)/
95
- break unless tuple[1].match(/^(?:(\d+):)?(\S+)-(\S+)$/)
95
+ break unless tuple[1] =~ /^(?:(\d+):)?(\S+)-(\S+)$/
96
96
  hash = update_to_hash(*tuple[0..1])
97
97
  # Create entries for both the package name without a version and a
98
98
  # version since yum considers those as mostly interchangeable.
@@ -25,24 +25,25 @@ require 'puppet/provider/package'
25
25
  class Puppet::Provider::Package::Targetable < Puppet::Provider::Package
26
26
  # Prefetch our package list, yo.
27
27
  def self.prefetch(packages)
28
- catalog_packages = packages.first[1]::catalog::resources.select{ |p| p.provider.class == self }
28
+ catalog_packages = packages.values.first.catalog.resources.select{ |p| p.provider.class == self }
29
29
  package_commands = catalog_packages.map { |catalog_package| catalog_package::original_parameters[:command] }.uniq
30
30
  package_commands.each do |command|
31
31
  instances(command).each do |instance|
32
32
  catalog_packages.each do |catalog_package|
33
- if catalog_package[:name] == instance.name && catalog_package::original_parameters[:command] == command
33
+ if catalog_package[:name] == instance.name && catalog_package.original_parameters[:command] == command
34
34
  catalog_package.provider = instance
35
- self.debug "Prefetched instance: %{name} via command: %{command}" % { name: instance.name, cmd: (command || :default)}
35
+ self.debug "Prefetched instance: %{name} via command: %{cmd}" % { name: instance.name, cmd: (command || :default) }
36
36
  end
37
37
  end
38
38
  end
39
39
  end
40
+ package_commands
40
41
  end
41
42
 
42
43
  # Returns the resource command or provider command.
43
44
 
44
45
  def resource_or_provider_command
45
- resource::original_parameters[:command] || self.class.provider_command
46
+ resource.original_parameters[:command] || self.class.provider_command
46
47
  end
47
48
 
48
49
  # Targetable providers use has_command/is_optional to defer validation of provider suitability.
@@ -71,7 +71,7 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
71
71
 
72
72
  flushed = []
73
73
  begin
74
- @modified.sort { |a,b| a.to_s <=> b.to_s }.uniq.each do |target|
74
+ @modified.sort_by(&:to_s).uniq.each do |target|
75
75
  Puppet.debug "Flushing #{@resource_type.name} provider target #{target}"
76
76
  flushed << target
77
77
  flush_target(target)
@@ -200,12 +200,12 @@ Puppet::Type.type(:scheduled_task).provide(:win32_taskscheduler) do
200
200
  def user=(value)
201
201
  self.fail("Invalid user: #{value}") unless Puppet::Util::Windows::SID.name_to_sid(value)
202
202
 
203
- if value.to_s.downcase != 'system'
204
- task.set_account_information(value, resource[:password])
205
- else
203
+ if value.to_s.casecmp('system').zero?
206
204
  # Win32::TaskScheduler treats a nil/empty username & password as
207
205
  # requesting the SYSTEM account.
208
206
  task.set_account_information(nil, nil)
207
+ else
208
+ task.set_account_information(value, resource[:password])
209
209
  end
210
210
  end
211
211
 
@@ -46,14 +46,8 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
46
46
 
47
47
  # Determine the daemon path.
48
48
  def defpath
49
- unless @defpath
50
- ["/var/lib/service", "/etc"].each do |path|
51
- if Puppet::FileSystem.exist?(path)
52
- @defpath = path
53
- break
54
- end
55
- end
56
- raise "Could not find the daemon directory (tested [/var/lib/service,/etc])" unless @defpath
49
+ @defpath ||= ["/var/lib/service", "/etc"].find do |path|
50
+ Puppet::FileSystem.exist?(path) && FileTest.directory?(path)
57
51
  end
58
52
  @defpath
59
53
  end
@@ -65,6 +59,10 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
65
59
  # ie enabled or not
66
60
  def self.instances
67
61
  path = self.defpath
62
+ unless path
63
+ Puppet.info("#{self.name} is unsuitable because service directory is nil")
64
+ return
65
+ end
68
66
  unless FileTest.directory?(path)
69
67
  Puppet.notice "Service path #{path} does not exist"
70
68
  return
@@ -109,7 +107,9 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
109
107
  # note that this path can be overridden in the resource
110
108
  # definition
111
109
  def daemon
112
- File.join(resource[:path], resource[:name])
110
+ path = resource[:path]
111
+ raise Puppet::Error.new("#{self.class.name} must specify a path for daemon directory") unless path
112
+ File.join(path, resource[:name])
113
113
  end
114
114
 
115
115
  def status
@@ -79,7 +79,7 @@ Puppet::Type.type(:service).provide :openbsd, :parent => :init do
79
79
  def running?
80
80
  output = execute([command(:rcctl), "check", @resource[:name]],
81
81
  :failonfail => false, :combine => false, :squelch => false).chomp
82
- return true if output.match(/\(ok\)/)
82
+ return true if output =~ /\(ok\)/
83
83
  end
84
84
 
85
85
  # Uses the wrapper to prevent failure when the service is not running;
@@ -17,7 +17,7 @@ Puppet::Type.type(:service).provide :rcng, :parent => :bsd do
17
17
  if Puppet::FileSystem.exist?(rcfile)
18
18
  File.open(rcfile).readlines.each do |line|
19
19
  # Now look for something that looks like "service=${service:=YES}" or "service=YES"
20
- if line.match(/^\s*#{@resource[:name]}=(?:YES|\${#{@resource[:name]}:=YES})/)
20
+ if line =~ /^\s*#{@resource[:name]}=(?:YES|\${#{@resource[:name]}:=YES})/
21
21
  return :true
22
22
  end
23
23
  end
@@ -34,7 +34,7 @@ Puppet::Type.type(:service).provide :rcng, :parent => :bsd do
34
34
  if Puppet::FileSystem.exist?(rcfile)
35
35
  newcontents = []
36
36
  File.open(rcfile).readlines.each do |line|
37
- if line.match(/^\s*#{@resource[:name]}=(NO|\$\{#{@resource[:name]}:NO\})/)
37
+ if line =~ /^\s*#{@resource[:name]}=(NO|\$\{#{@resource[:name]}:NO\})/
38
38
  line = "#{@resource[:name]}=${#{@resource[:name]}:=YES}"
39
39
  end
40
40
  newcontents.push(line)
@@ -40,14 +40,8 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
40
40
  # this is necessary to autodetect a valid resource
41
41
  # default path, since there is no standard for such directory.
42
42
  def defpath
43
- unless @defpath
44
- ["/etc/sv", "/var/lib/service"].each do |path|
45
- if Puppet::FileSystem.exist?(path)
46
- @defpath = path
47
- break
48
- end
49
- end
50
- raise "Could not find the daemon directory (tested [/etc/sv,/var/lib/service])" unless @defpath
43
+ @defpath ||= ["/var/lib/service", "/etc/sv"].find do |path|
44
+ Puppet::FileSystem.exist?(path) && FileTest.directory?(path)
51
45
  end
52
46
  @defpath
53
47
  end
@@ -40,7 +40,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
40
40
  # in the provider's believed state of the service and the actual state.
41
41
  # @param action [String,Symbol] One of 'enable', 'disable', 'mask' or 'unmask'
42
42
  def systemctl_change_enable(action)
43
- output = systemctl(action, @resource[:name])
43
+ output = systemctl(action, '--', @resource[:name])
44
44
  rescue
45
45
  raise Puppet::Error, "Could not #{action} #{self.name}: #{output}", $!.backtrace
46
46
  ensure
@@ -53,7 +53,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
53
53
 
54
54
  def get_start_link_count
55
55
  # Start links don't include '.service'. Just search for the service name.
56
- if @resource[:name].match(/\.service/)
56
+ if @resource[:name] =~ /\.service/
57
57
  link_name = @resource[:name].split('.')[0]
58
58
  else
59
59
  link_name = @resource[:name]
@@ -64,7 +64,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
64
64
 
65
65
  def cached_enabled?
66
66
  return @cached_enabled if @cached_enabled
67
- cmd = [command(:systemctl), 'is-enabled', @resource[:name]]
67
+ cmd = [command(:systemctl), 'is-enabled', '--', @resource[:name]]
68
68
  @cached_enabled = execute(cmd, :failonfail => false).strip
69
69
  end
70
70
 
@@ -83,7 +83,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
83
83
  # The indirect state indicates that the unit is not enabled.
84
84
  return :false if output == 'indirect'
85
85
  return :true if (code == 0)
86
- if (output.empty?) && (code > 0) && (Facter.value(:osfamily).downcase == 'debian')
86
+ if (output.empty?) && (code > 0) && (Facter.value(:osfamily).casecmp('debian').zero?)
87
87
  ret = debian_enabled?
88
88
  return ret if ret
89
89
  end
@@ -131,20 +131,20 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
131
131
  end
132
132
 
133
133
  def restartcmd
134
- [command(:systemctl), "restart", @resource[:name]]
134
+ [command(:systemctl), "restart", '--', @resource[:name]]
135
135
  end
136
136
 
137
137
  def startcmd
138
138
  self.unmask
139
- [command(:systemctl), "start", @resource[:name]]
139
+ [command(:systemctl), "start", '--', @resource[:name]]
140
140
  end
141
141
 
142
142
  def stopcmd
143
- [command(:systemctl), "stop", @resource[:name]]
143
+ [command(:systemctl), "stop", '--', @resource[:name]]
144
144
  end
145
145
 
146
146
  def statuscmd
147
- [command(:systemctl), "is-active", @resource[:name]]
147
+ [command(:systemctl), "is-active", '--', @resource[:name]]
148
148
  end
149
149
 
150
150
  def restart
@@ -503,7 +503,7 @@ Puppet::Type.type(:user).provide :directoryservice do
503
503
  def next_system_id(min_id=20)
504
504
  dscl_output = dscl '.', '-list', '/Users', 'uid'
505
505
  # We're ok with throwing away negative uids here. Also, remove nil values.
506
- user_ids = dscl_output.split.compact.collect { |l| l.to_i if l.match(/^\d+$/) }
506
+ user_ids = dscl_output.split.compact.collect { |l| l.to_i if l =~ /^\d+$/ }
507
507
  ids = user_ids.compact!.sort! { |a,b| a.to_f <=> b.to_f }
508
508
  # We're just looking for an unused id in our sorted array.
509
509
  ids.each_index do |i|
@@ -29,7 +29,7 @@ Puppet::Type.type(:user).provide :hpuxuseradd, :parent => :useradd do
29
29
 
30
30
  def modifycmd(param,value)
31
31
  cmd = super(param, value)
32
- cmd << "-F"
32
+ cmd.insert(1,"-F")
33
33
  if trusted then
34
34
  # Append an additional command to reset the password age to 0
35
35
  # until a workaround with expiry module can be found for trusted
@@ -36,7 +36,7 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source =>
36
36
  has_features :manages_homedir, :allows_duplicates, :manages_solaris_rbac, :manages_passwords, :manages_password_age, :manages_shell
37
37
 
38
38
  def check_valid_shell
39
- unless File.exists?(@resource.should(:shell))
39
+ unless File.exist?(@resource.should(:shell))
40
40
  raise(Puppet::Error, "Shell #{@resource.should(:shell)} must exist")
41
41
  end
42
42
  unless File.executable?(@resource.should(:shell).to_s)
@@ -55,35 +55,44 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
55
55
  get(:uid)
56
56
  end
57
57
 
58
+ def comment
59
+ return localcomment if @resource.forcelocal?
60
+ get(:comment)
61
+ end
62
+
58
63
  def finduser(key, value)
59
64
  passwd_file = "/etc/passwd"
60
- passwd_keys = ['account', 'password', 'uid', 'gid', 'gecos', 'directory', 'shell']
65
+ passwd_keys = [:account, :password, :uid, :gid, :gecos, :directory, :shell]
61
66
  index = passwd_keys.index(key)
62
67
  File.open(passwd_file) do |f|
63
68
  f.each_line do |line|
64
- user = line.split(":")
65
- if user[index] == value
66
- f.close
67
- return user
68
- end
69
+ user = line.split(":")
70
+ if user[index] == value
71
+ return Hash[passwd_keys.zip(user)]
72
+ end
69
73
  end
70
74
  end
71
75
  false
72
76
  end
73
77
 
74
78
  def local_username
75
- finduser('uid', @resource.uid)
79
+ finduser(:uid, @resource.uid)
76
80
  end
77
81
 
78
82
  def localuid
79
- user = finduser('account', resource[:name])
80
- return user[2] if user
83
+ user = finduser(:account, resource[:name])
84
+ return user[:uid] if user
81
85
  false
82
86
  end
83
87
 
88
+ def localcomment
89
+ user = finduser(:account, resource[:name])
90
+ user[:gecos]
91
+ end
92
+
84
93
  def shell=(value)
85
94
  check_valid_shell
86
- set("shell", value)
95
+ set(:shell, value)
87
96
  end
88
97
 
89
98
  verify :gid, "GID must be an integer" do |value|
@@ -106,8 +115,8 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
106
115
  # to ensure consistent behaviour of the useradd provider when
107
116
  # using both useradd and luseradd
108
117
  if (!@resource.allowdupe?) && @resource.forcelocal?
109
- if @resource.should(:uid) && finduser('uid', @resource.should(:uid).to_s)
110
- raise(Puppet::Error, "UID #{@resource.should(:uid).to_s} already exists, use allowdupe to force user creation")
118
+ if @resource.should(:uid) && finduser(:uid, @resource.should(:uid).to_s)
119
+ raise(Puppet::Error, "UID #{@resource.should(:uid)} already exists, use allowdupe to force user creation")
111
120
  end
112
121
  elsif @resource.allowdupe? && (!@resource.forcelocal?)
113
122
  return ["-o"]
@@ -116,7 +125,7 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
116
125
  end
117
126
 
118
127
  def check_valid_shell
119
- unless File.exists?(@resource.should(:shell))
128
+ unless File.exist?(@resource.should(:shell))
120
129
  raise(Puppet::Error, "Shell #{@resource.should(:shell)} must exist")
121
130
  end
122
131
  unless File.executable?(@resource.should(:shell).to_s)
@@ -125,14 +125,13 @@ Puppet::Type.type(:user).provide :windows_adsi do
125
125
 
126
126
  def password=(value)
127
127
  if user.disabled?
128
- warning _("The user account '%s' is disabled; puppet will not reset the password" % @resource[:name])
128
+ info _("The user account '%s' is disabled; The password will still be changed" % @resource[:name])
129
129
  elsif user.locked_out?
130
- warning _("The user account '%s' is locked out; puppet will not reset the password" % @resource[:name])
130
+ info _("The user account '%s' is locked out; The password will still be changed" % @resource[:name])
131
131
  elsif user.expired?
132
- warning _("The user account '%s' is expired; puppet will not reset the password" % @resource[:name])
133
- else
134
- user.password = value
132
+ info _("The user account '%s' is expired; The password will still be changed" % @resource[:name])
135
133
  end
134
+ user.password = value
136
135
  end
137
136
 
138
137
  def uid
@@ -76,8 +76,8 @@ Puppet::Type.type(:yumrepo).provide(:inifile) do
76
76
  # Use directories in reposdir if they are set instead of default
77
77
  if reposdir
78
78
  # Follow the code from the yum/config.py
79
- reposdir.gsub!("\n", ' ')
80
- reposdir.gsub!(',', ' ')
79
+ reposdir.tr!("\n", ' ')
80
+ reposdir.tr!(',', ' ')
81
81
  dirs = reposdir.split
82
82
  end
83
83
  dirs.select! { |dir| Puppet::FileSystem.exist?(dir) }
@@ -5,14 +5,14 @@ require 'puppet/file_serving/metadata'
5
5
 
6
6
  reference = Puppet::Util::Reference.newreference :indirection, :doc => "Indirection types and their terminus classes" do
7
7
  text = ""
8
- Puppet::Indirector::Indirection.instances.sort { |a,b| a.to_s <=> b.to_s }.each do |indirection|
8
+ Puppet::Indirector::Indirection.instances.sort_by(&:to_s).each do |indirection|
9
9
  ind = Puppet::Indirector::Indirection.instance(indirection)
10
10
  name = indirection.to_s.capitalize
11
11
  text << "## " + indirection.to_s + "\n\n"
12
12
 
13
13
  text << Puppet::Util::Docs.scrub(ind.doc) + "\n\n"
14
14
 
15
- Puppet::Indirector::Terminus.terminus_classes(ind.name).sort { |a,b| a.to_s <=> b.to_s }.each do |terminus|
15
+ Puppet::Indirector::Terminus.terminus_classes(ind.name).sort_by(&:to_s).each do |terminus|
16
16
  terminus_name = terminus.to_s
17
17
  term_class = Puppet::Indirector::Terminus.terminus_class(ind.name, terminus)
18
18
  if term_class
@@ -19,9 +19,7 @@ etc.), prevent Puppet from making changes (`noop`), and change logging verbosity
19
19
  params << param
20
20
  }
21
21
 
22
- params.sort { |a,b|
23
- a.to_s <=> b.to_s
24
- }.each { |param|
22
+ params.sort_by(&:to_s).each { |param|
25
23
  str << markdown_header(param.to_s, 3)
26
24
  str << scrub(Puppet::Type.metaparamdoc(param))
27
25
  str << "\n\n"
@@ -35,7 +35,7 @@ providers = Puppet::Util::Reference.newreference :providers, :title => "Provider
35
35
  functional = false
36
36
  notes = []
37
37
  default = type.defaultprovider ? type.defaultprovider.name : 'none'
38
- type.providers.sort { |a,b| a.to_s <=> b.to_s }.each do |pname|
38
+ type.providers.sort_by(&:to_s).each do |pname|
39
39
  data = []
40
40
  table_data[pname] = data
41
41
  provider = type.provider(pname)
@@ -49,9 +49,7 @@ Puppet::Util::Reference.newreference :type, :doc => "All Puppet resource types a
49
49
 
50
50
  }
51
51
 
52
- types.sort { |a,b|
53
- a.to_s <=> b.to_s
54
- }.each { |name,type|
52
+ types.sort_by(&:to_s).each { |name,type|
55
53
 
56
54
  str << "
57
55
 
@@ -69,9 +67,7 @@ Puppet::Util::Reference.newreference :type, :doc => "All Puppet resource types a
69
67
  end
70
68
 
71
69
  docs = {}
72
- type.validproperties.sort { |a,b|
73
- a.to_s <=> b.to_s
74
- }.reject { |sname|
70
+ type.validproperties.sort_by(&:to_s).reject { |sname|
75
71
  property = type.propertybyname(sname)
76
72
  property.nodoc
77
73
  }.each { |sname|
@@ -91,9 +87,7 @@ Puppet::Util::Reference.newreference :type, :doc => "All Puppet resource types a
91
87
  }
92
88
 
93
89
  str << markdown_header("Parameters", 4) + "\n"
94
- type.parameters.sort { |a,b|
95
- a.to_s <=> b.to_s
96
- }.each { |type_name, param|
90
+ type.parameters.sort_by(&:to_s).each { |type_name, param|
97
91
  docs[type_name] = scrub(type.paramdoc(type_name))
98
92
  }
99
93
 
@@ -74,7 +74,7 @@ class Puppet::Reports
74
74
 
75
75
  # Use this method so they all get loaded
76
76
  instance_loader(:report).loadall
77
- loaded_instances(:report).sort { |a,b| a.to_s <=> b.to_s }.each do |name|
77
+ loaded_instances(:report).sort_by(&:to_s).each do |name|
78
78
  mod = self.report(name)
79
79
  docs << "#{name}\n#{"-" * name.to_s.length}\n"
80
80
 
@@ -192,7 +192,7 @@ class Puppet::Resource
192
192
  end
193
193
 
194
194
  def stage?
195
- @is_stage ||= @type.to_s.downcase == "stage"
195
+ @is_stage ||= @type.to_s.casecmp("stage").zero?
196
196
  end
197
197
 
198
198
  # Construct a resource from data.