puppet 5.5.17-universal-darwin → 5.5.22-universal-darwin

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 (340) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +1 -1
  3. data/Gemfile +4 -5
  4. data/Gemfile.lock +59 -55
  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.rb +5 -2
  12. data/lib/puppet/agent.rb +5 -13
  13. data/lib/puppet/application.rb +1 -1
  14. data/lib/puppet/application/agent.rb +3 -1
  15. data/lib/puppet/application/apply.rb +2 -2
  16. data/lib/puppet/application/describe.rb +3 -9
  17. data/lib/puppet/application/doc.rb +1 -1
  18. data/lib/puppet/application/filebucket.rb +13 -0
  19. data/lib/puppet/application/lookup.rb +1 -1
  20. data/lib/puppet/application/script.rb +2 -2
  21. data/lib/puppet/configurer.rb +106 -31
  22. data/lib/puppet/configurer/downloader.rb +33 -16
  23. data/lib/puppet/daemon.rb +1 -1
  24. data/lib/puppet/defaults.rb +86 -40
  25. data/lib/puppet/error.rb +9 -1
  26. data/lib/puppet/external/nagios/base.rb +1 -1
  27. data/lib/puppet/face/ca.rb +1 -1
  28. data/lib/puppet/face/module/list.rb +5 -5
  29. data/lib/puppet/face/module/search.rb +1 -1
  30. data/lib/puppet/face/module/uninstall.rb +1 -1
  31. data/lib/puppet/face/module/upgrade.rb +1 -1
  32. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  33. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  34. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  35. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  36. data/lib/puppet/file_system.rb +0 -8
  37. data/lib/puppet/file_system/memory_file.rb +1 -1
  38. data/lib/puppet/file_system/posix.rb +3 -2
  39. data/lib/puppet/file_system/uniquefile.rb +4 -0
  40. data/lib/puppet/forge.rb +3 -3
  41. data/lib/puppet/functions/epp.rb +4 -4
  42. data/lib/puppet/functions/inline_epp.rb +5 -5
  43. data/lib/puppet/functions/new.rb +8 -3
  44. data/lib/puppet/functions/reduce.rb +2 -4
  45. data/lib/puppet/functions/reverse_each.rb +1 -1
  46. data/lib/puppet/functions/step.rb +1 -1
  47. data/lib/puppet/gettext/module_translations.rb +1 -1
  48. data/lib/puppet/graph/rb_tree_map.rb +2 -2
  49. data/lib/puppet/graph/simple_graph.rb +6 -5
  50. data/lib/puppet/indirector/catalog/compiler.rb +8 -0
  51. data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
  52. data/lib/puppet/indirector/hiera.rb +6 -0
  53. data/lib/puppet/indirector/resource/ral.rb +1 -3
  54. data/lib/puppet/indirector/resource/validator.rb +1 -1
  55. data/lib/puppet/interface.rb +2 -1
  56. data/lib/puppet/loaders.rb +0 -1
  57. data/lib/puppet/metatype/manager.rb +1 -1
  58. data/lib/puppet/module.rb +1 -1
  59. data/lib/puppet/module_tool/applications/builder.rb +1 -1
  60. data/lib/puppet/module_tool/applications/installer.rb +1 -1
  61. data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
  62. data/lib/puppet/module_tool/metadata.rb +1 -1
  63. data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
  64. data/lib/puppet/module_tool/tar/mini.rb +1 -1
  65. data/lib/puppet/network/http/api/indirected_routes.rb +13 -12
  66. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  67. data/lib/puppet/network/http/connection.rb +14 -12
  68. data/lib/puppet/network/http/pool.rb +7 -1
  69. data/lib/puppet/network/http/rack/rest.rb +2 -2
  70. data/lib/puppet/network/http/site.rb +1 -1
  71. data/lib/puppet/network/resolver.rb +2 -2
  72. data/lib/puppet/node/environment.rb +11 -3
  73. data/lib/puppet/parser/ast.rb +1 -1
  74. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  75. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  76. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  77. data/lib/puppet/parser/environment_compiler.rb +3 -0
  78. data/lib/puppet/parser/functions.rb +14 -10
  79. data/lib/puppet/parser/functions/epp.rb +3 -3
  80. data/lib/puppet/parser/functions/inline_epp.rb +5 -5
  81. data/lib/puppet/parser/resource.rb +3 -2
  82. data/lib/puppet/parser/resource/param.rb +6 -0
  83. data/lib/puppet/pops/adaptable.rb +7 -13
  84. data/lib/puppet/pops/adapters.rb +8 -4
  85. data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
  86. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  87. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  88. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
  89. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
  90. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
  91. data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
  92. data/lib/puppet/pops/issues.rb +5 -0
  93. data/lib/puppet/pops/loaders.rb +1 -1
  94. data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
  95. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  96. data/lib/puppet/pops/merge_strategy.rb +22 -18
  97. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  98. data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
  99. data/lib/puppet/pops/parser/locator.rb +1 -1
  100. data/lib/puppet/pops/parser/pn_parser.rb +17 -16
  101. data/lib/puppet/pops/puppet_stack.rb +51 -48
  102. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  103. data/lib/puppet/pops/types/iterable.rb +34 -8
  104. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  105. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
  106. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  107. data/lib/puppet/pops/types/string_converter.rb +10 -10
  108. data/lib/puppet/pops/types/type_calculator.rb +24 -0
  109. data/lib/puppet/pops/types/types.rb +3 -3
  110. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  111. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  112. data/lib/puppet/property.rb +1 -1
  113. data/lib/puppet/property/ensure.rb +1 -1
  114. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  115. data/lib/puppet/provider/cron/crontab.rb +1 -1
  116. data/lib/puppet/provider/exec.rb +6 -2
  117. data/lib/puppet/provider/group/groupadd.rb +19 -19
  118. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  119. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  120. data/lib/puppet/provider/mount.rb +1 -1
  121. data/lib/puppet/provider/mount/parsed.rb +8 -8
  122. data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
  123. data/lib/puppet/provider/nameservice/pw.rb +2 -2
  124. data/lib/puppet/provider/package/aix.rb +17 -2
  125. data/lib/puppet/provider/package/apt.rb +14 -3
  126. data/lib/puppet/provider/package/dnfmodule.rb +141 -0
  127. data/lib/puppet/provider/package/dpkg.rb +16 -18
  128. data/lib/puppet/provider/package/fink.rb +20 -3
  129. data/lib/puppet/provider/package/gem.rb +4 -2
  130. data/lib/puppet/provider/package/openbsd.rb +14 -2
  131. data/lib/puppet/provider/package/pip.rb +37 -10
  132. data/lib/puppet/provider/package/pkg.rb +18 -5
  133. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  134. data/lib/puppet/provider/package/pkgng.rb +16 -4
  135. data/lib/puppet/provider/package/portage.rb +4 -4
  136. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  137. data/lib/puppet/provider/package/rpm.rb +6 -6
  138. data/lib/puppet/provider/package/windows/package.rb +1 -1
  139. data/lib/puppet/provider/package/yum.rb +28 -20
  140. data/lib/puppet/provider/package/zypper.rb +1 -0
  141. data/lib/puppet/provider/package_targetable.rb +5 -4
  142. data/lib/puppet/provider/parsedfile.rb +1 -1
  143. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
  144. data/lib/puppet/provider/selmodule/semodule.rb +43 -26
  145. data/lib/puppet/provider/service/daemontools.rb +9 -9
  146. data/lib/puppet/provider/service/openbsd.rb +1 -1
  147. data/lib/puppet/provider/service/rcng.rb +2 -2
  148. data/lib/puppet/provider/service/runit.rb +2 -8
  149. data/lib/puppet/provider/service/systemd.rb +31 -13
  150. data/lib/puppet/provider/user/directoryservice.rb +31 -6
  151. data/lib/puppet/provider/user/hpux.rb +1 -1
  152. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  153. data/lib/puppet/provider/user/useradd.rb +39 -20
  154. data/lib/puppet/provider/user/windows_adsi.rb +4 -5
  155. data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
  156. data/lib/puppet/reference/indirection.rb +2 -2
  157. data/lib/puppet/reference/metaparameter.rb +1 -3
  158. data/lib/puppet/reference/providers.rb +1 -1
  159. data/lib/puppet/reference/type.rb +3 -9
  160. data/lib/puppet/reports.rb +1 -1
  161. data/lib/puppet/resource.rb +1 -1
  162. data/lib/puppet/resource/catalog.rb +1 -1
  163. data/lib/puppet/resource/type.rb +10 -1
  164. data/lib/puppet/settings.rb +3 -3
  165. data/lib/puppet/settings/environment_conf.rb +1 -0
  166. data/lib/puppet/ssl/certificate.rb +2 -1
  167. data/lib/puppet/ssl/certificate_authority.rb +6 -5
  168. data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
  169. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  170. data/lib/puppet/ssl/host.rb +3 -3
  171. data/lib/puppet/ssl/oids.rb +1 -1
  172. data/lib/puppet/test/test_helper.rb +20 -12
  173. data/lib/puppet/transaction/report.rb +1 -1
  174. data/lib/puppet/transaction/resource_harness.rb +1 -1
  175. data/lib/puppet/type.rb +8 -4
  176. data/lib/puppet/type/cron.rb +1 -1
  177. data/lib/puppet/type/exec.rb +7 -3
  178. data/lib/puppet/type/file.rb +14 -2
  179. data/lib/puppet/type/file/data_sync.rb +5 -1
  180. data/lib/puppet/type/group.rb +4 -2
  181. data/lib/puppet/type/interface.rb +1 -1
  182. data/lib/puppet/type/notify.rb +3 -2
  183. data/lib/puppet/type/package.rb +97 -8
  184. data/lib/puppet/type/schedule.rb +1 -1
  185. data/lib/puppet/type/selboolean.rb +17 -3
  186. data/lib/puppet/type/service.rb +2 -8
  187. data/lib/puppet/type/user.rb +5 -9
  188. data/lib/puppet/util.rb +35 -12
  189. data/lib/puppet/util/autoload.rb +9 -7
  190. data/lib/puppet/util/command_line/trollop.rb +1 -1
  191. data/lib/puppet/util/http_proxy.rb +8 -14
  192. data/lib/puppet/util/instance_loader.rb +1 -1
  193. data/lib/puppet/util/log.rb +1 -1
  194. data/lib/puppet/util/log/destinations.rb +3 -12
  195. data/lib/puppet/util/logging.rb +30 -18
  196. data/lib/puppet/util/metric.rb +2 -2
  197. data/lib/puppet/util/monkey_patches.rb +1 -1
  198. data/lib/puppet/util/nagios_maker.rb +2 -2
  199. data/lib/puppet/util/network_device/cisco/device.rb +1 -1
  200. data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
  201. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  202. data/lib/puppet/util/pidlock.rb +12 -6
  203. data/lib/puppet/util/plist.rb +6 -0
  204. data/lib/puppet/util/provider_features.rb +2 -4
  205. data/lib/puppet/util/rdoc.rb +1 -1
  206. data/lib/puppet/util/reference.rb +1 -1
  207. data/lib/puppet/util/resource_template.rb +1 -1
  208. data/lib/puppet/util/selinux.rb +3 -1
  209. data/lib/puppet/util/windows/adsi.rb +60 -30
  210. data/lib/puppet/util/windows/api_types.rb +45 -32
  211. data/lib/puppet/util/windows/eventlog.rb +1 -6
  212. data/lib/puppet/util/windows/principal.rb +8 -6
  213. data/lib/puppet/util/windows/process.rb +16 -15
  214. data/lib/puppet/util/windows/registry.rb +17 -15
  215. data/lib/puppet/util/windows/security.rb +1 -0
  216. data/lib/puppet/util/windows/sid.rb +3 -3
  217. data/lib/puppet/vendor.rb +1 -1
  218. data/lib/puppet/version.rb +1 -1
  219. data/lib/puppet_pal.rb +2 -2
  220. data/locales/puppet.pot +362 -318
  221. data/man/man5/puppet.conf.5 +39 -9
  222. data/man/man8/puppet-agent.8 +2 -2
  223. data/man/man8/puppet-apply.8 +1 -1
  224. data/man/man8/puppet-ca.8 +1 -1
  225. data/man/man8/puppet-catalog.8 +1 -1
  226. data/man/man8/puppet-cert.8 +1 -1
  227. data/man/man8/puppet-certificate.8 +1 -1
  228. data/man/man8/puppet-certificate_request.8 +1 -1
  229. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  230. data/man/man8/puppet-config.8 +1 -1
  231. data/man/man8/puppet-describe.8 +1 -1
  232. data/man/man8/puppet-device.8 +1 -1
  233. data/man/man8/puppet-doc.8 +1 -1
  234. data/man/man8/puppet-epp.8 +1 -1
  235. data/man/man8/puppet-facts.8 +1 -1
  236. data/man/man8/puppet-filebucket.8 +16 -1
  237. data/man/man8/puppet-generate.8 +1 -1
  238. data/man/man8/puppet-help.8 +1 -1
  239. data/man/man8/puppet-key.8 +1 -1
  240. data/man/man8/puppet-lookup.8 +1 -1
  241. data/man/man8/puppet-man.8 +1 -1
  242. data/man/man8/puppet-master.8 +1 -1
  243. data/man/man8/puppet-module.8 +1 -1
  244. data/man/man8/puppet-node.8 +1 -1
  245. data/man/man8/puppet-parser.8 +1 -1
  246. data/man/man8/puppet-plugin.8 +1 -1
  247. data/man/man8/puppet-report.8 +1 -1
  248. data/man/man8/puppet-resource.8 +1 -1
  249. data/man/man8/puppet-script.8 +1 -1
  250. data/man/man8/puppet-status.8 +1 -1
  251. data/man/man8/puppet.8 +2 -2
  252. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
  253. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
  254. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  255. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  256. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  257. data/spec/integration/configurer_spec.rb +66 -0
  258. data/spec/integration/data_binding_spec.rb +1 -0
  259. data/spec/integration/defaults_spec.rb +1 -2
  260. data/spec/integration/faces/plugin_spec.rb +29 -47
  261. data/spec/integration/indirector/facts/facter_spec.rb +4 -0
  262. data/spec/integration/parser/compiler_spec.rb +11 -0
  263. data/spec/integration/type/notify_spec.rb +46 -0
  264. data/spec/integration/util/windows/adsi_spec.rb +6 -1
  265. data/spec/integration/util/windows/registry_spec.rb +7 -7
  266. data/spec/shared_contexts/types_setup.rb +2 -0
  267. data/spec/unit/agent_spec.rb +34 -26
  268. data/spec/unit/application/apply_spec.rb +2 -12
  269. data/spec/unit/configurer/downloader_spec.rb +10 -0
  270. data/spec/unit/configurer/fact_handler_spec.rb +0 -4
  271. data/spec/unit/configurer_spec.rb +430 -415
  272. data/spec/unit/daemon_spec.rb +0 -1
  273. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  274. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  275. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  276. data/spec/unit/file_system/uniquefile_spec.rb +11 -0
  277. data/spec/unit/forge/forge_spec.rb +1 -3
  278. data/spec/unit/forge/repository_spec.rb +1 -3
  279. data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
  280. data/spec/unit/indirector/resource/ral_spec.rb +4 -4
  281. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  282. data/spec/unit/network/http/connection_spec.rb +43 -1
  283. data/spec/unit/network/http/pool_spec.rb +32 -0
  284. data/spec/unit/node_spec.rb +7 -4
  285. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  286. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
  287. data/spec/unit/provider/exec_spec.rb +209 -0
  288. data/spec/unit/provider/group/groupadd_spec.rb +30 -1
  289. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  290. data/spec/unit/provider/package/aix_spec.rb +29 -0
  291. data/spec/unit/provider/package/apt_spec.rb +13 -2
  292. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  293. data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
  294. data/spec/unit/provider/package/dpkg_spec.rb +35 -7
  295. data/spec/unit/provider/package/openbsd_spec.rb +17 -0
  296. data/spec/unit/provider/package/pip_spec.rb +93 -22
  297. data/spec/unit/provider/package/pkg_spec.rb +13 -1
  298. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  299. data/spec/unit/provider/package/pkgng_spec.rb +36 -0
  300. data/spec/unit/provider/package/portage_spec.rb +4 -4
  301. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  302. data/spec/unit/provider/package/yum_spec.rb +90 -0
  303. data/spec/unit/provider/package/zypper_spec.rb +13 -0
  304. data/spec/unit/provider/package_targetable_spec.rb +60 -0
  305. data/spec/unit/provider/selmodule_spec.rb +118 -47
  306. data/spec/unit/provider/service/daemontools_spec.rb +24 -0
  307. data/spec/unit/provider/service/runit_spec.rb +24 -0
  308. data/spec/unit/provider/service/systemd_spec.rb +109 -36
  309. data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
  310. data/spec/unit/provider/user/hpux_spec.rb +2 -2
  311. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  312. data/spec/unit/provider/user/useradd_spec.rb +81 -16
  313. data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
  314. data/spec/unit/puppet_pal_2pec.rb +3 -0
  315. data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
  316. data/spec/unit/ssl/certificate_spec.rb +7 -0
  317. data/spec/unit/ssl/host_spec.rb +2 -0
  318. data/spec/unit/test/test_helper_spec.rb +17 -0
  319. data/spec/unit/type/exec_spec.rb +6 -12
  320. data/spec/unit/type/file/content_spec.rb +9 -3
  321. data/spec/unit/type/file_spec.rb +9 -4
  322. data/spec/unit/type/package_spec.rb +8 -0
  323. data/spec/unit/type/selboolean_spec.rb +4 -6
  324. data/spec/unit/type/service_spec.rb +9 -8
  325. data/spec/unit/type/user_spec.rb +19 -13
  326. data/spec/unit/util/execution_spec.rb +16 -0
  327. data/spec/unit/util/http_proxy_spec.rb +97 -0
  328. data/spec/unit/util/log/destinations_spec.rb +2 -26
  329. data/spec/unit/util/log_spec.rb +0 -138
  330. data/spec/unit/util/logging_spec.rb +200 -0
  331. data/spec/unit/util/pidlock_spec.rb +67 -40
  332. data/spec/unit/util/plist_spec.rb +20 -0
  333. data/spec/unit/util/windows/adsi_spec.rb +55 -4
  334. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  335. data/spec/unit/util/windows/sid_spec.rb +2 -2
  336. data/tasks/manpages.rake +1 -0
  337. metadata +16 -7
  338. data/lib/puppet/pops/loader/null_loader.rb +0 -60
  339. data/locales/ja/puppet.po +0 -12114
  340. data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -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)
@@ -21,7 +21,11 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
21
21
  options :expiry, :method => :sp_expire,
22
22
  :munge => proc { |value|
23
23
  if value == :absent
24
- ''
24
+ if Facter.value(:operatingsystem)=='SLES' && Facter.value(:operatingsystemmajrelease) == "11"
25
+ -1
26
+ else
27
+ ''
28
+ end
25
29
  else
26
30
  case Facter.value(:operatingsystem)
27
31
  when 'Solaris'
@@ -55,35 +59,43 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
55
59
  get(:uid)
56
60
  end
57
61
 
62
+ def comment
63
+ return localcomment if @resource.forcelocal?
64
+ get(:comment)
65
+ end
66
+
58
67
  def finduser(key, value)
59
68
  passwd_file = "/etc/passwd"
60
- passwd_keys = ['account', 'password', 'uid', 'gid', 'gecos', 'directory', 'shell']
69
+ passwd_keys = [:account, :password, :uid, :gid, :gecos, :directory, :shell]
61
70
  index = passwd_keys.index(key)
62
- File.open(passwd_file) do |f|
63
- f.each_line do |line|
64
- user = line.split(":")
65
- if user[index] == value
66
- f.close
67
- return user
68
- end
71
+ @passwd_content ||= File.read(passwd_file)
72
+ @passwd_content.each_line do |line|
73
+ user = line.split(":")
74
+ if user[index] == value
75
+ return Hash[passwd_keys.zip(user)]
69
76
  end
70
77
  end
71
78
  false
72
79
  end
73
80
 
74
81
  def local_username
75
- finduser('uid', @resource.uid)
82
+ finduser(:uid, @resource.uid)
76
83
  end
77
84
 
78
85
  def localuid
79
- user = finduser('account', resource[:name])
80
- return user[2] if user
86
+ user = finduser(:account, resource[:name])
87
+ return user[:uid] if user
81
88
  false
82
89
  end
83
90
 
91
+ def localcomment
92
+ user = finduser(:account, resource[:name])
93
+ user[:gecos]
94
+ end
95
+
84
96
  def shell=(value)
85
97
  check_valid_shell
86
- set("shell", value)
98
+ set(:shell, value)
87
99
  end
88
100
 
89
101
  verify :gid, "GID must be an integer" do |value|
@@ -106,8 +118,8 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
106
118
  # to ensure consistent behaviour of the useradd provider when
107
119
  # using both useradd and luseradd
108
120
  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")
121
+ if @resource.should(:uid) && finduser(:uid, @resource.should(:uid).to_s)
122
+ raise(Puppet::Error, "UID #{@resource.should(:uid)} already exists, use allowdupe to force user creation")
111
123
  end
112
124
  elsif @resource.allowdupe? && (!@resource.forcelocal?)
113
125
  return ["-o"]
@@ -116,7 +128,7 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
116
128
  end
117
129
 
118
130
  def check_valid_shell
119
- unless File.exists?(@resource.should(:shell))
131
+ unless File.exist?(@resource.should(:shell))
120
132
  raise(Puppet::Error, "Shell #{@resource.should(:shell)} must exist")
121
133
  end
122
134
  unless File.executable?(@resource.should(:shell).to_s)
@@ -126,10 +138,17 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
126
138
 
127
139
  def check_manage_home
128
140
  cmd = []
129
- if @resource.managehome? && (!@resource.forcelocal?)
130
- cmd << "-m"
131
- elsif (!@resource.managehome?) && Facter.value(:osfamily) == 'RedHat'
132
- cmd << "-M"
141
+ if @resource.managehome?
142
+ # libuser does not implement the -m flag
143
+ cmd << "-m" unless @resource.forcelocal?
144
+ else
145
+ osfamily = Facter.value(:osfamily)
146
+ osversion = Facter.value(:operatingsystemmajrelease).to_i
147
+ # SLES 11 uses pwdutils instead of shadow, which does not have -M
148
+ # Solaris and OpenBSD use different useradd flavors
149
+ unless osfamily =~ /Solaris|OpenBSD/ || osfamily == 'Suse' && osversion <= 11
150
+ cmd << "-M"
151
+ end
133
152
  end
134
153
  cmd
135
154
  end
@@ -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.
@@ -647,7 +647,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
647
647
  result.add_resource newres
648
648
  end
649
649
 
650
- message = convert.to_s.gsub "_", " "
650
+ message = convert.to_s.tr "_", " "
651
651
  edges.each do |edge|
652
652
  # Skip edges between virtual resources.
653
653
  next if virtual_not_exported?(edge.source)
@@ -11,6 +11,7 @@ class Puppet::Resource::Type
11
11
  include Puppet::Util::Warnings
12
12
  include Puppet::Util::Errors
13
13
 
14
+ # @deprecated application orchestration will be removed in puppet 7 (capability_mapping, application, site)
14
15
  RESOURCE_KINDS = [:hostclass, :node, :definition, :capability_mapping, :application, :site]
15
16
 
16
17
  # Map the names used in our documentation to the names used internally
@@ -33,7 +34,7 @@ class Puppet::Resource::Type
33
34
  DOUBLE_COLON = '::'.freeze
34
35
  EMPTY_ARRAY = [].freeze
35
36
 
36
- attr_accessor :file, :line, :doc, :code, :parent, :resource_type_collection
37
+ attr_accessor :file, :line, :doc, :code, :parent, :resource_type_collection, :override
37
38
  attr_reader :namespace, :arguments, :behaves_like, :module_name
38
39
 
39
40
  # The attributes 'produces' and 'consumes' are arrays of the blueprints
@@ -62,6 +63,7 @@ class Puppet::Resource::Type
62
63
  # Are we a child of the passed class? Do a recursive search up our
63
64
  # parentage tree to figure it out.
64
65
  def child_of?(klass)
66
+ return true if override
65
67
  return false unless parent
66
68
 
67
69
  return(klass == parent_type ? true : parent_type.child_of?(klass))
@@ -69,6 +71,8 @@ class Puppet::Resource::Type
69
71
 
70
72
  # Evaluate the resources produced by the given resource. These resources are
71
73
  # evaluated in a separate but identical scope from the rest of the resource.
74
+ #
75
+ # @deprecated application orchestration will be removed in puppet 7
72
76
  def evaluate_produces(resource, scope)
73
77
  # Only defined types and classes can produce capabilities
74
78
  return unless definition? || hostclass?
@@ -159,19 +163,23 @@ class Puppet::Resource::Type
159
163
  @module_name = options[:module_name]
160
164
  end
161
165
 
166
+ # @deprecated application orchestration will be removed in puppet 7
162
167
  def produces
163
168
  @produces || EMPTY_ARRAY
164
169
  end
165
170
 
171
+ # @deprecated application orchestration will be removed in puppet 7
166
172
  def consumes
167
173
  @consumes || EMPTY_ARRAY
168
174
  end
169
175
 
176
+ # @deprecated application orchestration will be removed in puppet 7
170
177
  def add_produces(blueprint)
171
178
  @produces ||= []
172
179
  @produces << blueprint
173
180
  end
174
181
 
182
+ # @deprecated application orchestration will be removed in puppet 7
175
183
  def add_consumes(blueprint)
176
184
  @consumes ||= []
177
185
  @consumes << blueprint
@@ -233,6 +241,7 @@ class Puppet::Resource::Type
233
241
  when :node
234
242
  :node
235
243
  when :site
244
+ # @deprecated application orchestration will be removed in puppet 7
236
245
  :site
237
246
  end
238
247
 
@@ -1229,10 +1229,10 @@ Generated on #{Time.now}.
1229
1229
  if !Puppet::FileSystem.symlink?(configured_environment_path)
1230
1230
  parameters = { :ensure => 'directory' }
1231
1231
  unless Puppet::FileSystem.exist?(configured_environment_path)
1232
- parameters.merge!(:mode => '0750')
1232
+ parameters[:mode] = '0750'
1233
1233
  if Puppet.features.root?
1234
- parameters.merge!(:owner => Puppet[:user]) if service_user_available?
1235
- parameters.merge!(:group => Puppet[:group]) if service_group_available?
1234
+ parameters[:owner] = Puppet[:user] if service_user_available?
1235
+ parameters[:group] = Puppet[:group] if service_group_available?
1236
1236
  end
1237
1237
  end
1238
1238
  catalog.add_resource(Puppet::Resource.new(:file, configured_environment_path, :parameters => parameters))
@@ -159,6 +159,7 @@ class Puppet::Settings::EnvironmentConf
159
159
 
160
160
  return valid
161
161
  end
162
+ private_class_method :validate
162
163
 
163
164
  def get_setting(setting_name, default = nil)
164
165
  value = raw_setting(setting_name)
@@ -50,7 +50,8 @@ DOC
50
50
  def custom_extensions
51
51
  custom_exts = content.extensions.select do |ext|
52
52
  Puppet::SSL::Oids.subtree_of?('ppRegCertExt', ext.oid) or
53
- Puppet::SSL::Oids.subtree_of?('ppPrivCertExt', ext.oid)
53
+ Puppet::SSL::Oids.subtree_of?('ppPrivCertExt', ext.oid) or
54
+ Puppet::SSL::Oids.subtree_of?('ppAuthCertExt', ext.oid)
54
55
  end
55
56
 
56
57
  custom_exts.map do |ext|
@@ -441,11 +441,11 @@ class Puppet::SSL::CertificateAuthority
441
441
  # Certificate Revocation List and flags
442
442
  #
443
443
  # @return [OpenSSL::X509::Store]
444
- def create_x509_store
445
- store = OpenSSL::X509::Store.new()
444
+ def create_x509_store(purpose = OpenSSL::X509::PURPOSE_ANY)
445
+ store = OpenSSL::X509::Store.new
446
446
  store.add_file(Puppet[:cacert])
447
447
  store.add_crl(crl.content) if self.crl
448
- store.purpose = OpenSSL::X509::PURPOSE_SSL_CLIENT
448
+ store.purpose = purpose
449
449
  if Puppet.lookup(:certificate_revocation)
450
450
  store.flags = OpenSSL::X509::V_FLAG_CRL_CHECK_ALL | OpenSSL::X509::V_FLAG_CRL_CHECK
451
451
  end
@@ -486,17 +486,18 @@ class Puppet::SSL::CertificateAuthority
486
486
  # certificate with that name.
487
487
  #
488
488
  # @param name [String] certificate name to verify
489
+ # @param purpose [Integer] bitwise combination of X509::PURPOSE_*
489
490
  #
490
491
  # @raise [ArgumentError] if the certificate name cannot be found
491
492
  # (i.e. doesn't exist or is unsigned)
492
493
  # @raise [CertificateVerficationError] if the certificate has been revoked
493
494
  #
494
495
  # @return [Boolean] true if signed, there are no cases where false is returned
495
- def verify(name)
496
+ def verify(name, purpose = OpenSSL::X509::PURPOSE_ANY)
496
497
  unless cert = Puppet::SSL::Certificate.indirection.find(name)
497
498
  raise ArgumentError, _("Could not find a certificate for %{name}") % { name: name }
498
499
  end
499
- store = create_x509_store
500
+ store = create_x509_store(purpose)
500
501
 
501
502
  raise CertificateVerificationError.new(store.error), store.error_string unless store.verify(cert.content)
502
503
  end
@@ -79,7 +79,7 @@ module Puppet
79
79
  begin
80
80
  ca.verify(host) unless requests.include?(host)
81
81
  rescue Puppet::SSL::CertificateAuthority::CertificateVerificationError => details
82
- verify_error = "(#{details.to_s})"
82
+ verify_error = "(#{details})"
83
83
  end
84
84
 
85
85
  if verify_error
@@ -26,9 +26,9 @@ module Puppet::SSL::CertificateFactory
26
26
  # @return [OpenSSL::X509::Certificate]
27
27
  def self.build(cert_type, csr, issuer, serial, ttl = nil)
28
28
  # Work out if we can even build the requested type of certificate.
29
- build_extensions = "build_#{cert_type.to_s}_extensions"
29
+ build_extensions = "build_#{cert_type}_extensions"
30
30
  respond_to?(build_extensions) or
31
- raise ArgumentError, _("%{cert_type} is an invalid certificate type!") % { cert_type: cert_type.to_s }
31
+ raise ArgumentError, _("%{cert_type} is an invalid certificate type!") % { cert_type: cert_type }
32
32
 
33
33
  raise ArgumentError, _("Certificate TTL must be an integer") unless ttl.nil? || ttl.is_a?(Integer)
34
34
 
@@ -210,7 +210,7 @@ DOC
210
210
  raise Puppet::Error, _("No certificate to validate.") unless certificate
211
211
  raise Puppet::Error, _("No private key with which to validate certificate with fingerprint: %{fingerprint}") % { fingerprint: certificate.fingerprint } unless key
212
212
  unless certificate.content.check_private_key(key.content)
213
- raise Puppet::Error, _(<<ERROR_STRING) % { fingerprint: certificate.fingerprint, cert_name: Puppet[:certname], ssl_dir: Puppet[:ssldir], cert_dir: Puppet[:certdir].gsub('/', '\\') }
213
+ raise Puppet::Error, _(<<ERROR_STRING) % { fingerprint: certificate.fingerprint, cert_name: Puppet[:certname], ssl_dir: Puppet[:ssldir], cert_dir: Puppet[:certdir].tr('/', '\\') }
214
214
  The certificate retrieved from the master does not match the agent's private key. Did you forget to run as root?
215
215
  Certificate fingerprint: %{fingerprint}
216
216
  To fix this, remove the certificate from both the master and the agent and then start a puppet run, which will automatically regenerate a certificate.
@@ -235,7 +235,7 @@ ERROR_STRING
235
235
  if !existing_request.nil? &&
236
236
  (key.content.public_key.to_s != existing_request.content.public_key.to_s)
237
237
 
238
- raise Puppet::Error, _(<<ERROR_STRING) % { fingerprint: existing_request.fingerprint, csr_public_key: existing_request.content.public_key.to_text, agent_public_key: key.content.public_key.to_text, cert_name: Puppet[:certname], ssl_dir: Puppet[:ssldir], cert_dir: Puppet[:certdir].gsub('/', '\\') }
238
+ raise Puppet::Error, _(<<ERROR_STRING) % { fingerprint: existing_request.fingerprint, csr_public_key: existing_request.content.public_key.to_text, agent_public_key: key.content.public_key.to_text, cert_name: Puppet[:certname], ssl_dir: Puppet[:ssldir], cert_dir: Puppet[:certdir].tr('/', '\\') }
239
239
  The CSR retrieved from the master does not match the agent's public key.
240
240
  CSR fingerprint: %{fingerprint}
241
241
  CSR public key: %{csr_public_key}
@@ -345,7 +345,7 @@ ERROR_STRING
345
345
  exit(1)
346
346
  end
347
347
 
348
- while true
348
+ loop do
349
349
  sleep time
350
350
  begin
351
351
  break if certificate
@@ -101,7 +101,7 @@ module Puppet::SSL::Oids
101
101
  # shortname: 'myothershortname'
102
102
  # longname: 'Other Long name'
103
103
  def self.parse_custom_oid_file(custom_oid_file, map_key='oid_mapping')
104
- if File.exists?(custom_oid_file) && File.readable?(custom_oid_file)
104
+ if File.exist?(custom_oid_file) && File.readable?(custom_oid_file)
105
105
  mapping = nil
106
106
  begin
107
107
  mapping = YAML.load_file(custom_oid_file)
@@ -68,7 +68,14 @@ module Puppet::Test
68
68
  # any individual tests.
69
69
  # @return nil
70
70
  def self.before_all_tests()
71
- # Make sure that all of the setup is also done for any before(:all) blocks
71
+ # The process environment is a shared, persistent resource.
72
+ # Can't use Puppet.features.microsoft_windows? as it may be mocked out in a test. This can cause test recurring test failures
73
+ if (!!File::ALT_SEPARATOR)
74
+ mode = :windows
75
+ else
76
+ mode = :posix
77
+ end
78
+ $old_env = Puppet::Util.get_environment(mode)
72
79
  end
73
80
 
74
81
  # Call this method once, at the end of a test run, when no more tests
@@ -113,20 +120,14 @@ module Puppet::Test
113
120
  indirections = Puppet::Indirector::Indirection.send(:class_variable_get, :@@indirections)
114
121
  indirections.each do |indirector|
115
122
  $saved_indirection_state[indirector.name] = {
116
- :@terminus_class => indirector.instance_variable_get(:@terminus_class),
117
- :@cache_class => indirector.instance_variable_get(:@cache_class)
123
+ :@terminus_class => indirector.instance_variable_get(:@terminus_class),
124
+ :@cache_class => indirector.instance_variable_get(:@cache_class),
125
+ # dup the termini hash so termini created and registered during
126
+ # the test aren't stored in our saved_indirection_state
127
+ :@termini => indirector.instance_variable_get(:@termini).dup
118
128
  }
119
129
  end
120
130
 
121
- # The process environment is a shared, persistent resource.
122
- # Can't use Puppet.features.microsoft_windows? as it may be mocked out in a test. This can cause test recurring test failures
123
- if (!!File::ALT_SEPARATOR)
124
- mode = :windows
125
- else
126
- mode = :posix
127
- end
128
- $old_env = Puppet::Util.get_environment(mode)
129
-
130
131
  # So is the load_path
131
132
  $old_load_path = $LOAD_PATH.dup
132
133
 
@@ -143,6 +144,13 @@ module Puppet::Test
143
144
  Puppet::Application.clear!
144
145
  Puppet::Util::Profiler.clear
145
146
 
147
+ Puppet::SSL::Host.reset
148
+ Puppet::SSL::Host.ca_location = :none
149
+
150
+ Puppet::Node::Facts.indirection.terminus_class = :memory
151
+ facts = Puppet::Node::Facts.new(Puppet[:node_name_value])
152
+ Puppet::Node::Facts.indirection.save(facts)
153
+
146
154
  Puppet.clear_deprecation_warnings
147
155
  end
148
156