puppet 7.8.0 → 7.12.0

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 (379) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +5 -5
  3. data/Gemfile +2 -2
  4. data/Gemfile.lock +15 -15
  5. data/README.md +4 -4
  6. data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
  7. data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
  8. data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
  9. data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
  10. data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
  11. data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
  12. data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
  13. data/{ext → examples}/nagios/check_puppet.rb +2 -2
  14. data/ext/README.md +13 -0
  15. data/ext/project_data.yaml +1 -0
  16. data/install.rb +0 -4
  17. data/lib/puppet/application/agent.rb +4 -0
  18. data/lib/puppet/application/apply.rb +20 -2
  19. data/lib/puppet/application/filebucket.rb +1 -0
  20. data/lib/puppet/application/resource.rb +30 -15
  21. data/lib/puppet/application/ssl.rb +1 -0
  22. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  23. data/lib/puppet/configurer.rb +176 -58
  24. data/lib/puppet/confine/variable.rb +1 -1
  25. data/lib/puppet/defaults.rb +67 -29
  26. data/lib/puppet/environments.rb +75 -25
  27. data/lib/puppet/face/help/action.erb +1 -0
  28. data/lib/puppet/face/help/face.erb +1 -0
  29. data/lib/puppet/face/node/clean.rb +1 -1
  30. data/lib/puppet/facter_impl.rb +96 -0
  31. data/lib/puppet/file_serving/configuration/parser.rb +2 -0
  32. data/lib/puppet/file_serving/configuration.rb +2 -0
  33. data/lib/puppet/file_serving/mount/file.rb +4 -4
  34. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  35. data/lib/puppet/file_system/file_impl.rb +3 -1
  36. data/lib/puppet/file_system/windows.rb +2 -2
  37. data/lib/puppet/file_system.rb +2 -1
  38. data/lib/puppet/forge/cache.rb +1 -1
  39. data/lib/puppet/forge.rb +4 -4
  40. data/lib/puppet/functions/empty.rb +8 -0
  41. data/lib/puppet/functions/find_template.rb +2 -2
  42. data/lib/puppet/functions/strftime.rb +1 -0
  43. data/lib/puppet/functions/unwrap.rb +17 -2
  44. data/lib/puppet/http/service/compiler.rb +6 -1
  45. data/lib/puppet/indirector/catalog/compiler.rb +24 -6
  46. data/lib/puppet/indirector/catalog/rest.rb +1 -0
  47. data/lib/puppet/indirector/facts/facter.rb +6 -6
  48. data/lib/puppet/indirector/indirection.rb +1 -1
  49. data/lib/puppet/indirector/resource/ral.rb +6 -1
  50. data/lib/puppet/indirector/terminus.rb +4 -0
  51. data/lib/puppet/interface/documentation.rb +1 -0
  52. data/lib/puppet/module/plan.rb +0 -1
  53. data/lib/puppet/module/task.rb +1 -1
  54. data/lib/puppet/module_tool/applications/installer.rb +12 -4
  55. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  56. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  57. data/lib/puppet/module_tool/errors/shared.rb +17 -0
  58. data/lib/puppet/module_tool/tar/mini.rb +1 -1
  59. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  60. data/lib/puppet/node/environment.rb +10 -11
  61. data/lib/puppet/pal/pal_impl.rb +1 -1
  62. data/lib/puppet/parser/scope.rb +8 -7
  63. data/lib/puppet/parser/templatewrapper.rb +1 -0
  64. data/lib/puppet/pops/evaluator/closure.rb +7 -5
  65. data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
  66. data/lib/puppet/pops/model/ast.rb +1 -0
  67. data/lib/puppet/pops/model/factory.rb +14 -13
  68. data/lib/puppet/pops/parser/egrammar.ra +2 -2
  69. data/lib/puppet/pops/parser/eparser.rb +752 -753
  70. data/lib/puppet/pops/parser/lexer2.rb +69 -68
  71. data/lib/puppet/pops/parser/slurp_support.rb +1 -0
  72. data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
  73. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  74. data/lib/puppet/pops/types/type_formatter.rb +7 -6
  75. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  76. data/lib/puppet/pops/types/types.rb +1 -1
  77. data/lib/puppet/provider/aix_object.rb +1 -1
  78. data/lib/puppet/provider/exec/posix.rb +16 -4
  79. data/lib/puppet/provider/group/groupadd.rb +5 -2
  80. data/lib/puppet/provider/package/pip.rb +15 -3
  81. data/lib/puppet/provider/package/pkg.rb +19 -2
  82. data/lib/puppet/provider/package/puppet_gem.rb +1 -1
  83. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  84. data/lib/puppet/provider/package/windows/exe_package.rb +30 -1
  85. data/lib/puppet/provider/package/windows/package.rb +2 -1
  86. data/lib/puppet/provider/package/windows.rb +14 -1
  87. data/lib/puppet/provider/package/yum.rb +1 -1
  88. data/lib/puppet/provider/parsedfile.rb +3 -0
  89. data/lib/puppet/provider/service/base.rb +1 -1
  90. data/lib/puppet/provider/service/init.rb +5 -5
  91. data/lib/puppet/provider/service/launchd.rb +2 -2
  92. data/lib/puppet/provider/service/redhat.rb +1 -1
  93. data/lib/puppet/provider/service/smf.rb +3 -3
  94. data/lib/puppet/provider/service/systemd.rb +2 -2
  95. data/lib/puppet/provider/service/upstart.rb +5 -5
  96. data/lib/puppet/provider/user/aix.rb +44 -1
  97. data/lib/puppet/provider/user/directoryservice.rb +1 -1
  98. data/lib/puppet/provider/user/useradd.rb +72 -16
  99. data/lib/puppet/provider.rb +1 -1
  100. data/lib/puppet/reference/providers.rb +2 -2
  101. data/lib/puppet/resource/type_collection.rb +4 -1
  102. data/lib/puppet/runtime.rb +11 -1
  103. data/lib/puppet/settings/config_file.rb +1 -8
  104. data/lib/puppet/settings/file_setting.rb +3 -8
  105. data/lib/puppet/settings/value_translator.rb +0 -1
  106. data/lib/puppet/settings.rb +32 -9
  107. data/lib/puppet/test/test_helper.rb +4 -1
  108. data/lib/puppet/transaction/persistence.rb +11 -1
  109. data/lib/puppet/transaction/report.rb +15 -1
  110. data/lib/puppet/type/exec.rb +35 -5
  111. data/lib/puppet/type/file/mode.rb +6 -0
  112. data/lib/puppet/type/file.rb +6 -6
  113. data/lib/puppet/type/filebucket.rb +2 -2
  114. data/lib/puppet/type/group.rb +0 -1
  115. data/lib/puppet/type/resources.rb +1 -1
  116. data/lib/puppet/type/service.rb +8 -3
  117. data/lib/puppet/type/tidy.rb +1 -1
  118. data/lib/puppet/type/user.rb +1 -2
  119. data/lib/puppet/type.rb +1 -1
  120. data/lib/puppet/util/autoload.rb +1 -1
  121. data/lib/puppet/util/command_line.rb +1 -1
  122. data/lib/puppet/util/filetype.rb +2 -2
  123. data/lib/puppet/util/json.rb +3 -0
  124. data/lib/puppet/util/log.rb +1 -2
  125. data/lib/puppet/util/logging.rb +1 -25
  126. data/lib/puppet/util/monkey_patches.rb +2 -17
  127. data/lib/puppet/util/pidlock.rb +1 -1
  128. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  129. data/lib/puppet/util/suidmanager.rb +1 -2
  130. data/lib/puppet/util/symbolic_file_mode.rb +29 -17
  131. data/lib/puppet/util/tagging.rb +1 -0
  132. data/lib/puppet/util/windows/sid.rb +3 -1
  133. data/lib/puppet/util/windows/user.rb +0 -1
  134. data/lib/puppet/util.rb +4 -3
  135. data/lib/puppet/version.rb +1 -1
  136. data/lib/puppet/x509/cert_provider.rb +3 -21
  137. data/lib/puppet.rb +5 -9
  138. data/locales/puppet.pot +409 -329
  139. data/man/man5/puppet.conf.5 +73 -25
  140. data/man/man8/puppet-agent.8 +4 -1
  141. data/man/man8/puppet-apply.8 +1 -1
  142. data/man/man8/puppet-catalog.8 +9 -9
  143. data/man/man8/puppet-config.8 +1 -1
  144. data/man/man8/puppet-describe.8 +1 -1
  145. data/man/man8/puppet-device.8 +1 -1
  146. data/man/man8/puppet-doc.8 +1 -1
  147. data/man/man8/puppet-epp.8 +1 -1
  148. data/man/man8/puppet-facts.8 +7 -7
  149. data/man/man8/puppet-filebucket.8 +1 -1
  150. data/man/man8/puppet-generate.8 +1 -1
  151. data/man/man8/puppet-help.8 +1 -1
  152. data/man/man8/puppet-lookup.8 +1 -1
  153. data/man/man8/puppet-module.8 +3 -3
  154. data/man/man8/puppet-node.8 +5 -5
  155. data/man/man8/puppet-parser.8 +1 -1
  156. data/man/man8/puppet-plugin.8 +1 -1
  157. data/man/man8/puppet-report.8 +5 -5
  158. data/man/man8/puppet-resource.8 +1 -1
  159. data/man/man8/puppet-script.8 +1 -1
  160. data/man/man8/puppet-ssl.8 +1 -1
  161. data/man/man8/puppet.8 +2 -2
  162. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  163. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  164. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  165. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  166. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
  167. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  168. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  169. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  170. data/spec/fixtures/ssl/127.0.0.1-key.pem +106 -106
  171. data/spec/fixtures/ssl/127.0.0.1.pem +48 -48
  172. data/spec/fixtures/ssl/bad-basic-constraints.pem +54 -54
  173. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +51 -51
  174. data/spec/fixtures/ssl/ca.pem +52 -52
  175. data/spec/fixtures/ssl/crl.pem +25 -25
  176. data/spec/fixtures/ssl/ec-key-openssl.pem +8 -0
  177. data/spec/fixtures/ssl/ec-key-pk8.pem +5 -0
  178. data/spec/fixtures/ssl/ec-key.pem +11 -11
  179. data/spec/fixtures/ssl/ec.pem +32 -32
  180. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  181. data/spec/fixtures/ssl/encrypted-key.pem +107 -107
  182. data/spec/fixtures/ssl/intermediate-agent-crl.pem +25 -25
  183. data/spec/fixtures/ssl/intermediate-agent.pem +54 -54
  184. data/spec/fixtures/ssl/intermediate-crl.pem +28 -28
  185. data/spec/fixtures/ssl/intermediate.pem +51 -51
  186. data/spec/fixtures/ssl/oid-key.pem +117 -0
  187. data/spec/fixtures/ssl/oid.pem +69 -0
  188. data/spec/fixtures/ssl/pluto-key.pem +106 -106
  189. data/spec/fixtures/ssl/pluto.pem +50 -50
  190. data/spec/fixtures/ssl/request-key.pem +106 -106
  191. data/spec/fixtures/ssl/request.pem +45 -45
  192. data/spec/fixtures/ssl/revoked-key.pem +106 -106
  193. data/spec/fixtures/ssl/revoked.pem +49 -49
  194. data/spec/fixtures/ssl/signed-key.pem +106 -106
  195. data/spec/fixtures/ssl/signed.pem +47 -47
  196. data/spec/fixtures/ssl/tampered-cert.pem +49 -49
  197. data/spec/fixtures/ssl/tampered-csr.pem +45 -45
  198. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
  199. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +106 -106
  200. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -48
  201. data/spec/fixtures/ssl/unknown-ca-key.pem +106 -106
  202. data/spec/fixtures/ssl/unknown-ca.pem +52 -52
  203. data/spec/integration/application/agent_spec.rb +118 -52
  204. data/spec/integration/application/filebucket_spec.rb +16 -0
  205. data/spec/integration/application/module_spec.rb +21 -0
  206. data/spec/integration/application/resource_spec.rb +35 -1
  207. data/spec/integration/application/ssl_spec.rb +20 -0
  208. data/spec/integration/configurer_spec.rb +18 -2
  209. data/spec/integration/defaults_spec.rb +5 -0
  210. data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
  211. data/spec/integration/indirector/facts/facter_spec.rb +93 -39
  212. data/spec/integration/l10n/compiler_spec.rb +37 -0
  213. data/spec/integration/transaction/report_spec.rb +1 -1
  214. data/spec/integration/type/exec_spec.rb +70 -45
  215. data/spec/integration/type/file_spec.rb +2 -2
  216. data/spec/integration/type/package_spec.rb +6 -6
  217. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  218. data/spec/integration/util/windows/process_spec.rb +1 -9
  219. data/spec/lib/puppet/test_ca.rb +5 -0
  220. data/spec/lib/puppet_spec/modules.rb +13 -2
  221. data/spec/lib/puppet_spec/puppetserver.rb +15 -0
  222. data/spec/lib/puppet_spec/settings.rb +1 -0
  223. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  224. data/spec/shared_contexts/l10n.rb +27 -0
  225. data/spec/spec_helper.rb +1 -10
  226. data/spec/unit/application/apply_spec.rb +76 -56
  227. data/spec/unit/application/resource_spec.rb +29 -0
  228. data/spec/unit/configurer_spec.rb +291 -56
  229. data/spec/unit/environments_spec.rb +184 -0
  230. data/spec/unit/facter_impl_spec.rb +31 -0
  231. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  232. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
  233. data/spec/unit/file_serving/configuration_spec.rb +12 -4
  234. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  235. data/spec/unit/file_system_spec.rb +13 -0
  236. data/spec/unit/functions/assert_type_spec.rb +1 -1
  237. data/spec/unit/functions/empty_spec.rb +10 -0
  238. data/spec/unit/functions/logging_spec.rb +1 -0
  239. data/spec/unit/functions/lookup_spec.rb +87 -0
  240. data/spec/unit/functions/unwrap_spec.rb +8 -0
  241. data/spec/unit/functions4_spec.rb +2 -2
  242. data/spec/unit/http/service/compiler_spec.rb +8 -0
  243. data/spec/unit/indirector/catalog/compiler_spec.rb +87 -0
  244. data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
  245. data/spec/unit/indirector/indirection_spec.rb +10 -3
  246. data/spec/unit/indirector/resource/ral_spec.rb +40 -75
  247. data/spec/unit/interface/action_spec.rb +0 -9
  248. data/spec/unit/module_spec.rb +14 -0
  249. data/spec/unit/module_tool/applications/installer_spec.rb +52 -14
  250. data/spec/unit/network/formats_spec.rb +6 -0
  251. data/spec/unit/parser/compiler_spec.rb +29 -0
  252. data/spec/unit/parser/templatewrapper_spec.rb +12 -2
  253. data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -9
  254. data/spec/unit/pops/parser/lexer2_spec.rb +0 -4
  255. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
  256. data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
  257. data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
  258. data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
  259. data/spec/unit/provider/package/gem_spec.rb +1 -1
  260. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  261. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  262. data/spec/unit/provider/package/pip_spec.rb +38 -1
  263. data/spec/unit/provider/package/pkg_spec.rb +34 -5
  264. data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
  265. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  266. data/spec/unit/provider/package/windows/exe_package_spec.rb +17 -0
  267. data/spec/unit/provider/parsedfile_spec.rb +10 -0
  268. data/spec/unit/provider/service/launchd_spec.rb +11 -0
  269. data/spec/unit/provider/service/systemd_spec.rb +1 -1
  270. data/spec/unit/provider/user/aix_spec.rb +100 -0
  271. data/spec/unit/provider/user/directoryservice_spec.rb +1 -1
  272. data/spec/unit/provider/user/useradd_spec.rb +43 -2
  273. data/spec/unit/provider_spec.rb +4 -4
  274. data/spec/unit/puppet_spec.rb +12 -4
  275. data/spec/unit/resource/type_collection_spec.rb +16 -0
  276. data/spec/unit/resource/type_spec.rb +2 -2
  277. data/spec/unit/settings/config_file_spec.rb +1 -11
  278. data/spec/unit/settings/file_setting_spec.rb +10 -7
  279. data/spec/unit/settings/value_translator_spec.rb +4 -5
  280. data/spec/unit/settings_spec.rb +120 -79
  281. data/spec/unit/ssl/ssl_provider_spec.rb +18 -16
  282. data/spec/unit/type/exec_spec.rb +76 -29
  283. data/spec/unit/type/file/source_spec.rb +4 -4
  284. data/spec/unit/type/service_spec.rb +27 -0
  285. data/spec/unit/type/tidy_spec.rb +7 -0
  286. data/spec/unit/type_spec.rb +2 -2
  287. data/spec/unit/util/autoload_spec.rb +25 -8
  288. data/spec/unit/util/ldap/connection_spec.rb +10 -10
  289. data/spec/unit/util/ldap/manager_spec.rb +2 -2
  290. data/spec/unit/util/logging_spec.rb +2 -0
  291. data/spec/unit/util/windows/sid_spec.rb +39 -4
  292. data/spec/unit/util_spec.rb +1 -3
  293. data/spec/unit/x509/cert_provider_spec.rb +9 -1
  294. data/tasks/generate_cert_fixtures.rake +10 -1
  295. data/tasks/parallel.rake +3 -3
  296. metadata +51 -95
  297. data/ext/README.environment +0 -8
  298. data/ext/dbfix.sql +0 -132
  299. data/ext/debian/README.Debian +0 -8
  300. data/ext/debian/README.source +0 -2
  301. data/ext/debian/TODO.Debian +0 -1
  302. data/ext/debian/changelog.erb +0 -1122
  303. data/ext/debian/compat +0 -1
  304. data/ext/debian/control +0 -144
  305. data/ext/debian/copyright +0 -339
  306. data/ext/debian/docs +0 -1
  307. data/ext/debian/fileserver.conf +0 -41
  308. data/ext/debian/puppet-common.dirs +0 -13
  309. data/ext/debian/puppet-common.install +0 -3
  310. data/ext/debian/puppet-common.lintian-overrides +0 -5
  311. data/ext/debian/puppet-common.manpages +0 -28
  312. data/ext/debian/puppet-common.postinst +0 -35
  313. data/ext/debian/puppet-common.postrm +0 -33
  314. data/ext/debian/puppet-el.dirs +0 -1
  315. data/ext/debian/puppet-el.emacsen-install +0 -25
  316. data/ext/debian/puppet-el.emacsen-remove +0 -11
  317. data/ext/debian/puppet-el.emacsen-startup +0 -9
  318. data/ext/debian/puppet-el.install +0 -1
  319. data/ext/debian/puppet-testsuite.install +0 -2
  320. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  321. data/ext/debian/puppet.lintian-overrides +0 -3
  322. data/ext/debian/puppet.logrotate +0 -20
  323. data/ext/debian/puppet.postinst +0 -20
  324. data/ext/debian/puppet.postrm +0 -20
  325. data/ext/debian/puppet.preinst +0 -20
  326. data/ext/debian/puppetmaster-common.install +0 -2
  327. data/ext/debian/puppetmaster-common.manpages +0 -2
  328. data/ext/debian/puppetmaster-common.postinst +0 -6
  329. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  330. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  331. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  332. data/ext/debian/puppetmaster.README.debian +0 -17
  333. data/ext/debian/puppetmaster.default +0 -14
  334. data/ext/debian/puppetmaster.init +0 -137
  335. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  336. data/ext/debian/puppetmaster.postinst +0 -20
  337. data/ext/debian/puppetmaster.postrm +0 -5
  338. data/ext/debian/puppetmaster.preinst +0 -22
  339. data/ext/debian/rules +0 -132
  340. data/ext/debian/source/format +0 -1
  341. data/ext/debian/source/options +0 -1
  342. data/ext/debian/vim-puppet.README.Debian +0 -13
  343. data/ext/debian/vim-puppet.dirs +0 -5
  344. data/ext/debian/vim-puppet.yaml +0 -7
  345. data/ext/debian/watch +0 -2
  346. data/ext/freebsd/puppetd +0 -26
  347. data/ext/freebsd/puppetmasterd +0 -26
  348. data/ext/gentoo/conf.d/puppet +0 -5
  349. data/ext/gentoo/conf.d/puppetmaster +0 -12
  350. data/ext/gentoo/init.d/puppet +0 -38
  351. data/ext/gentoo/init.d/puppetmaster +0 -51
  352. data/ext/gentoo/puppet/fileserver.conf +0 -41
  353. data/ext/ips/puppet-agent +0 -44
  354. data/ext/ips/puppet-master +0 -44
  355. data/ext/ips/puppet.p5m.erb +0 -12
  356. data/ext/ips/puppetagent.xml +0 -42
  357. data/ext/ips/puppetmaster.xml +0 -42
  358. data/ext/ips/rules +0 -19
  359. data/ext/ips/transforms +0 -34
  360. data/ext/ldap/puppet.schema +0 -24
  361. data/ext/logcheck/puppet +0 -23
  362. data/ext/osx/file_mapping.yaml +0 -28
  363. data/ext/osx/postflight.erb +0 -109
  364. data/ext/osx/preflight.erb +0 -52
  365. data/ext/osx/prototype.plist.erb +0 -38
  366. data/ext/redhat/fileserver.conf +0 -41
  367. data/ext/redhat/logrotate +0 -21
  368. data/ext/redhat/puppet.spec.erb +0 -841
  369. data/ext/redhat/server.init +0 -128
  370. data/ext/redhat/server.sysconfig +0 -13
  371. data/ext/solaris/pkginfo +0 -6
  372. data/ext/solaris/smf/puppetd.xml +0 -77
  373. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  374. data/ext/solaris/smf/svc-puppetd +0 -71
  375. data/ext/solaris/smf/svc-puppetmasterd +0 -67
  376. data/ext/suse/puppet.spec +0 -310
  377. data/ext/suse/server.init +0 -173
  378. data/ext/yaml_nodes.rb +0 -105
  379. data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # The Lexer is responsible for turning source text into tokens.
2
3
  # This version is a performance enhanced lexer (in comparison to the 3.x and earlier "future parser" lexer.
3
4
  #
@@ -30,85 +31,85 @@ class Lexer2
30
31
  # The length is pre-calculated for all singleton tokens. The length is used both to signal the length of
31
32
  # the token, and to advance the scanner position (without having to advance it with a scan(regexp)).
32
33
  #
33
- TOKEN_LBRACK = [:LBRACK, '['.freeze, 1].freeze
34
- TOKEN_LISTSTART = [:LISTSTART, '['.freeze, 1].freeze
35
- TOKEN_RBRACK = [:RBRACK, ']'.freeze, 1].freeze
36
- TOKEN_LBRACE = [:LBRACE, '{'.freeze, 1].freeze
37
- TOKEN_RBRACE = [:RBRACE, '}'.freeze, 1].freeze
38
- TOKEN_SELBRACE = [:SELBRACE, '{'.freeze, 1].freeze
39
- TOKEN_LPAREN = [:LPAREN, '('.freeze, 1].freeze
40
- TOKEN_WSLPAREN = [:WSLPAREN, '('.freeze, 1].freeze
41
- TOKEN_RPAREN = [:RPAREN, ')'.freeze, 1].freeze
42
-
43
- TOKEN_EQUALS = [:EQUALS, '='.freeze, 1].freeze
44
- TOKEN_APPENDS = [:APPENDS, '+='.freeze, 2].freeze
45
- TOKEN_DELETES = [:DELETES, '-='.freeze, 2].freeze
46
-
47
- TOKEN_ISEQUAL = [:ISEQUAL, '=='.freeze, 2].freeze
48
- TOKEN_NOTEQUAL = [:NOTEQUAL, '!='.freeze, 2].freeze
49
- TOKEN_MATCH = [:MATCH, '=~'.freeze, 2].freeze
50
- TOKEN_NOMATCH = [:NOMATCH, '!~'.freeze, 2].freeze
51
- TOKEN_GREATEREQUAL = [:GREATEREQUAL, '>='.freeze, 2].freeze
52
- TOKEN_GREATERTHAN = [:GREATERTHAN, '>'.freeze, 1].freeze
53
- TOKEN_LESSEQUAL = [:LESSEQUAL, '<='.freeze, 2].freeze
54
- TOKEN_LESSTHAN = [:LESSTHAN, '<'.freeze, 1].freeze
55
-
56
- TOKEN_FARROW = [:FARROW, '=>'.freeze, 2].freeze
57
- TOKEN_PARROW = [:PARROW, '+>'.freeze, 2].freeze
58
-
59
- TOKEN_LSHIFT = [:LSHIFT, '<<'.freeze, 2].freeze
60
- TOKEN_LLCOLLECT = [:LLCOLLECT, '<<|'.freeze, 3].freeze
61
- TOKEN_LCOLLECT = [:LCOLLECT, '<|'.freeze, 2].freeze
62
-
63
- TOKEN_RSHIFT = [:RSHIFT, '>>'.freeze, 2].freeze
64
- TOKEN_RRCOLLECT = [:RRCOLLECT, '|>>'.freeze, 3].freeze
65
- TOKEN_RCOLLECT = [:RCOLLECT, '|>'.freeze, 2].freeze
66
-
67
- TOKEN_PLUS = [:PLUS, '+'.freeze, 1].freeze
68
- TOKEN_MINUS = [:MINUS, '-'.freeze, 1].freeze
69
- TOKEN_DIV = [:DIV, '/'.freeze, 1].freeze
70
- TOKEN_TIMES = [:TIMES, '*'.freeze, 1].freeze
71
- TOKEN_MODULO = [:MODULO, '%'.freeze, 1].freeze
72
-
73
- TOKEN_NOT = [:NOT, '!'.freeze, 1].freeze
74
- TOKEN_DOT = [:DOT, '.'.freeze, 1].freeze
75
- TOKEN_PIPE = [:PIPE, '|'.freeze, 1].freeze
76
- TOKEN_AT = [:AT , '@'.freeze, 1].freeze
77
- TOKEN_ATAT = [:ATAT , '@@'.freeze, 2].freeze
78
- TOKEN_COLON = [:COLON, ':'.freeze, 1].freeze
79
- TOKEN_COMMA = [:COMMA, ','.freeze, 1].freeze
80
- TOKEN_SEMIC = [:SEMIC, ';'.freeze, 1].freeze
81
- TOKEN_QMARK = [:QMARK, '?'.freeze, 1].freeze
82
- TOKEN_TILDE = [:TILDE, '~'.freeze, 1].freeze # lexed but not an operator in Puppet
34
+ TOKEN_LBRACK = [:LBRACK, '[', 1].freeze
35
+ TOKEN_LISTSTART = [:LISTSTART, '[', 1].freeze
36
+ TOKEN_RBRACK = [:RBRACK, ']', 1].freeze
37
+ TOKEN_LBRACE = [:LBRACE, '{', 1].freeze
38
+ TOKEN_RBRACE = [:RBRACE, '}', 1].freeze
39
+ TOKEN_SELBRACE = [:SELBRACE, '{', 1].freeze
40
+ TOKEN_LPAREN = [:LPAREN, '(', 1].freeze
41
+ TOKEN_WSLPAREN = [:WSLPAREN, '(', 1].freeze
42
+ TOKEN_RPAREN = [:RPAREN, ')', 1].freeze
43
+
44
+ TOKEN_EQUALS = [:EQUALS, '=', 1].freeze
45
+ TOKEN_APPENDS = [:APPENDS, '+=', 2].freeze
46
+ TOKEN_DELETES = [:DELETES, '-=', 2].freeze
47
+
48
+ TOKEN_ISEQUAL = [:ISEQUAL, '==', 2].freeze
49
+ TOKEN_NOTEQUAL = [:NOTEQUAL, '!=', 2].freeze
50
+ TOKEN_MATCH = [:MATCH, '=~', 2].freeze
51
+ TOKEN_NOMATCH = [:NOMATCH, '!~', 2].freeze
52
+ TOKEN_GREATEREQUAL = [:GREATEREQUAL, '>=', 2].freeze
53
+ TOKEN_GREATERTHAN = [:GREATERTHAN, '>', 1].freeze
54
+ TOKEN_LESSEQUAL = [:LESSEQUAL, '<=', 2].freeze
55
+ TOKEN_LESSTHAN = [:LESSTHAN, '<', 1].freeze
56
+
57
+ TOKEN_FARROW = [:FARROW, '=>', 2].freeze
58
+ TOKEN_PARROW = [:PARROW, '+>', 2].freeze
59
+
60
+ TOKEN_LSHIFT = [:LSHIFT, '<<', 2].freeze
61
+ TOKEN_LLCOLLECT = [:LLCOLLECT, '<<|', 3].freeze
62
+ TOKEN_LCOLLECT = [:LCOLLECT, '<|', 2].freeze
63
+
64
+ TOKEN_RSHIFT = [:RSHIFT, '>>', 2].freeze
65
+ TOKEN_RRCOLLECT = [:RRCOLLECT, '|>>', 3].freeze
66
+ TOKEN_RCOLLECT = [:RCOLLECT, '|>', 2].freeze
67
+
68
+ TOKEN_PLUS = [:PLUS, '+', 1].freeze
69
+ TOKEN_MINUS = [:MINUS, '-', 1].freeze
70
+ TOKEN_DIV = [:DIV, '/', 1].freeze
71
+ TOKEN_TIMES = [:TIMES, '*', 1].freeze
72
+ TOKEN_MODULO = [:MODULO, '%', 1].freeze
73
+
74
+ TOKEN_NOT = [:NOT, '!', 1].freeze
75
+ TOKEN_DOT = [:DOT, '.', 1].freeze
76
+ TOKEN_PIPE = [:PIPE, '|', 1].freeze
77
+ TOKEN_AT = [:AT , '@', 1].freeze
78
+ TOKEN_ATAT = [:ATAT , '@@', 2].freeze
79
+ TOKEN_COLON = [:COLON, ':', 1].freeze
80
+ TOKEN_COMMA = [:COMMA, ',', 1].freeze
81
+ TOKEN_SEMIC = [:SEMIC, ';', 1].freeze
82
+ TOKEN_QMARK = [:QMARK, '?', 1].freeze
83
+ TOKEN_TILDE = [:TILDE, '~', 1].freeze # lexed but not an operator in Puppet
83
84
 
84
85
  TOKEN_REGEXP = [:REGEXP, nil, 0].freeze
85
86
 
86
- TOKEN_IN_EDGE = [:IN_EDGE, '->'.freeze, 2].freeze
87
- TOKEN_IN_EDGE_SUB = [:IN_EDGE_SUB, '~>'.freeze, 2].freeze
88
- TOKEN_OUT_EDGE = [:OUT_EDGE, '<-'.freeze, 2].freeze
89
- TOKEN_OUT_EDGE_SUB = [:OUT_EDGE_SUB, '<~'.freeze, 2].freeze
87
+ TOKEN_IN_EDGE = [:IN_EDGE, '->', 2].freeze
88
+ TOKEN_IN_EDGE_SUB = [:IN_EDGE_SUB, '~>', 2].freeze
89
+ TOKEN_OUT_EDGE = [:OUT_EDGE, '<-', 2].freeze
90
+ TOKEN_OUT_EDGE_SUB = [:OUT_EDGE_SUB, '<~', 2].freeze
90
91
 
91
92
  # Tokens that are always unique to what has been lexed
92
- TOKEN_STRING = [:STRING, nil, 0].freeze
93
- TOKEN_WORD = [:WORD, nil, 0].freeze
94
- TOKEN_DQPRE = [:DQPRE, nil, 0].freeze
95
- TOKEN_DQMID = [:DQPRE, nil, 0].freeze
96
- TOKEN_DQPOS = [:DQPRE, nil, 0].freeze
97
- TOKEN_NUMBER = [:NUMBER, nil, 0].freeze
98
- TOKEN_VARIABLE = [:VARIABLE, nil, 1].freeze
99
- TOKEN_VARIABLE_EMPTY = [:VARIABLE, ''.freeze, 1].freeze
93
+ TOKEN_STRING = [:STRING, nil, 0].freeze
94
+ TOKEN_WORD = [:WORD, nil, 0].freeze
95
+ TOKEN_DQPRE = [:DQPRE, nil, 0].freeze
96
+ TOKEN_DQMID = [:DQPRE, nil, 0].freeze
97
+ TOKEN_DQPOS = [:DQPRE, nil, 0].freeze
98
+ TOKEN_NUMBER = [:NUMBER, nil, 0].freeze
99
+ TOKEN_VARIABLE = [:VARIABLE, nil, 1].freeze
100
+ TOKEN_VARIABLE_EMPTY = [:VARIABLE, '', 1].freeze
100
101
 
101
102
  # HEREDOC has syntax as an argument.
102
- TOKEN_HEREDOC = [:HEREDOC, nil, 0].freeze
103
+ TOKEN_HEREDOC = [:HEREDOC, nil, 0].freeze
103
104
 
104
105
  # EPP_START is currently a marker token, may later get syntax
105
- TOKEN_EPPSTART = [:EPP_START, nil, 0].freeze
106
- TOKEN_EPPEND = [:EPP_END, '%>', 2].freeze
107
- TOKEN_EPPEND_TRIM = [:EPP_END_TRIM, '-%>', 3].freeze
106
+ TOKEN_EPPSTART = [:EPP_START, nil, 0].freeze
107
+ TOKEN_EPPEND = [:EPP_END, '%>', 2].freeze
108
+ TOKEN_EPPEND_TRIM = [:EPP_END_TRIM, '-%>', 3].freeze
108
109
 
109
110
  # This is used for unrecognized tokens, will always be a single character. This particular instance
110
111
  # is not used, but is kept here for documentation purposes.
111
- TOKEN_OTHER = [:OTHER, nil, 0]
112
+ TOKEN_OTHER = [:OTHER, nil, 0]
112
113
 
113
114
  # Keywords are all singleton tokens with pre calculated lengths.
114
115
  # Booleans are pre-calculated (rather than evaluating the strings "false" "true" repeatedly.
@@ -175,7 +176,7 @@ class Lexer2
175
176
  # PERFORMANCE NOTE:
176
177
  # Comparison against a frozen string is faster (than unfrozen).
177
178
  #
178
- STRING_BSLASH_SLASH = '\/'.freeze
179
+ STRING_BSLASH_SLASH = '\/'
179
180
 
180
181
  attr_reader :locator
181
182
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Puppet::Pops
2
3
  module Parser
3
4
  # This module is an integral part of the Lexer.
@@ -14,6 +14,8 @@ module Serialization
14
14
  # @option options [Boolean] :local_reference use local references instead of duplicating complex entries
15
15
  # @option options [Boolean] :type_by_reference `true` if Object types are converted to references rather than embedded.
16
16
  # @option options [Boolean] :symbol_as_string `true` if Symbols should be converted to strings (with type loss)
17
+ # @option options [Boolean] :force_symbol `false` if Symbols should not be converted (rich_data and symbol_as_string must be false)
18
+ # @option options [Boolean] :silence_warnings `false` if warnings should be silenced
17
19
  # @option options [String] :message_prefix String to prepend to in warnings and errors
18
20
  # @return [Data] the processed result. An object assignable to `Data`.
19
21
  #
@@ -41,6 +43,12 @@ module Serialization
41
43
  @symbol_as_string = options[:symbol_as_string]
42
44
  @symbol_as_string = false if @symbol_as_string.nil?
43
45
 
46
+ @force_symbol = options[:force_symbol]
47
+ @force_symbol = false if @force_symbol.nil?
48
+
49
+ @silence_warnings = options[:silence_warnings]
50
+ @silence_warnings = false if @silence_warnings.nil?
51
+
44
52
  @rich_data = options[:rich_data]
45
53
  @rich_data = false if @rich_data.nil?
46
54
 
@@ -92,7 +100,11 @@ module Serialization
92
100
  elsif @rich_data
93
101
  { PCORE_TYPE_KEY => PCORE_TYPE_SYMBOL, PCORE_VALUE_KEY => value.to_s }
94
102
  else
95
- unknown_to_string_with_warning(value)
103
+ if @force_symbol
104
+ value
105
+ else
106
+ @silence_warnings ? unknown_to_string(value) : unknown_to_string_with_warning(value)
107
+ end
96
108
  end
97
109
  elsif value.instance_of?(Array)
98
110
  process(value) do
@@ -117,7 +129,11 @@ module Serialization
117
129
  { PCORE_TYPE_KEY => PCORE_TYPE_SENSITIVE, PCORE_VALUE_KEY => to_data(value.unwrap) }
118
130
  end
119
131
  else
120
- unknown_to_data(value)
132
+ if @rich_data
133
+ value_to_data_hash(value)
134
+ else
135
+ @silence_warnings ? unknown_to_string(value) : unknown_to_string_with_warning(value)
136
+ end
121
137
  end
122
138
  end
123
139
 
@@ -191,10 +207,6 @@ module Serialization
191
207
  v
192
208
  end
193
209
 
194
- def unknown_to_data(value)
195
- @rich_data ? value_to_data_hash(value) : unknown_to_string_with_warning(value)
196
- end
197
-
198
210
  def unknown_key_to_string_with_warning(value)
199
211
  str = unknown_to_string(value)
200
212
  serialization_issue(Issues::SERIALIZATION_UNKNOWN_KEY_CONVERTED_TO_STRING, :path => path_to_s, :klass => value.class, :value => str)
@@ -62,7 +62,7 @@ module Serialization
62
62
  end
63
63
 
64
64
  def to_data(value)
65
- if value.is_a?(String)
65
+ if value.instance_of?(String)
66
66
  to_string_or_binary(value)
67
67
  elsif value.nil? || Types::PScalarDataType::DEFAULT.instance?(value)
68
68
  value
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative '../../../puppet/concurrent/thread_local_singleton'
2
3
 
3
4
  module Puppet::Pops
@@ -22,7 +23,7 @@ class TypeFormatter
22
23
  end
23
24
 
24
25
  def initialize
25
- @string_visitor = Visitor.new(nil, 'string',0,0)
26
+ @string_visitor = Visitor.new(nil, 'string', 0, 0)
26
27
  end
27
28
 
28
29
  def expanded
@@ -49,7 +50,7 @@ class TypeFormatter
49
50
  # @api public
50
51
  #
51
52
  def string(t)
52
- @bld = ''
53
+ @bld = ''.dup
53
54
  append_string(t)
54
55
  @bld
55
56
  end
@@ -63,7 +64,7 @@ class TypeFormatter
63
64
  #
64
65
  # @api public
65
66
  def indented_string(t, indent = 0, indent_width = 2)
66
- @bld = ''
67
+ @bld = ''.dup
67
68
  append_indented_string(t, indent, indent_width)
68
69
  @bld
69
70
  end
@@ -634,7 +635,7 @@ class TypeFormatter
634
635
  '[a TypeFormatter]'
635
636
  end
636
637
 
637
- NAME_SEGMENT_SEPARATOR = '::'.freeze
638
+ NAME_SEGMENT_SEPARATOR = '::'
638
639
  STARTS_WITH_ASCII_CAPITAL = /^[A-Z]/
639
640
 
640
641
  # Capitalizes each segment in a name separated with the {NAME_SEPARATOR} conditionally. The name
@@ -661,9 +662,9 @@ class TypeFormatter
661
662
 
662
663
  private
663
664
 
664
- COMMA_SEP = ', '.freeze
665
+ COMMA_SEP = ', '
665
666
 
666
- HASH_ENTRY_OP = ' => '.freeze
667
+ HASH_ENTRY_OP = ' => '
667
668
 
668
669
  def is_short_array?(t)
669
670
  t.empty? || 100 - @indent * @indent_width > t.inject(0) do |sum, elem|
@@ -640,7 +640,7 @@ module Types
640
640
  result = ["#{label} expects (#{signature_string(sig)})"]
641
641
  result.concat(error_arrays[0].map { |e| " rejected:#{e.chop_path(0).format}" })
642
642
  else
643
- result = ["#{label} expects one of:"]
643
+ result = ["The function #{label} was called with arguments it does not accept. It expects one of:"]
644
644
  signatures.each_with_index do |sg, index|
645
645
  result << " (#{signature_string(sg)})"
646
646
  result.concat(error_arrays[index].map { |e| " rejected:#{e.chop_path(0).format}" })
@@ -735,7 +735,7 @@ class PScalarDataType < PScalarType
735
735
  end
736
736
 
737
737
  def instance?(o, guard = nil)
738
- return o.is_a?(String) || o.is_a?(Integer) || o.is_a?(Float) || o.is_a?(TrueClass) || o.is_a?(FalseClass)
738
+ return o.instance_of?(String) || o.is_a?(Integer) || o.is_a?(Float) || o.is_a?(TrueClass) || o.is_a?(FalseClass)
739
739
  end
740
740
 
741
741
  DEFAULT = PScalarDataType.new
@@ -279,7 +279,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
279
279
  name = object[:name]
280
280
  id = object[:attributes].delete(:id)
281
281
 
282
- Hash[[[:name, name,],[:id, id]]]
282
+ { name: name, id: id }
283
283
  end
284
284
  end
285
285
 
@@ -6,10 +6,22 @@ Puppet::Type.type(:exec).provide :posix, :parent => Puppet::Provider::Exec do
6
6
  defaultfor :feature => :posix
7
7
 
8
8
  desc <<-EOT
9
- Executes external binaries directly, without passing through a shell or
10
- performing any interpolation. This is a safer and more predictable way
11
- to execute most commands, but prevents the use of globbing and shell
12
- built-ins (including control logic like "for" and "if" statements).
9
+ Executes external binaries by invoking Ruby's `Kernel.exec`.
10
+ When the command is a string, it will be executed directly,
11
+ without a shell, if it follows these rules:
12
+ - no meta characters
13
+ - no shell reserved word and no special built-in
14
+
15
+ When the command is an Array of Strings, passed as `[cmdname, arg1, ...]`
16
+ it will be executed directly(the first element is taken as a command name
17
+ and the rest are passed as parameters to command with no shell expansion)
18
+ This is a safer and more predictable way to execute most commands,
19
+ but prevents the use of globbing and shell built-ins (including control
20
+ logic like "for" and "if" statements).
21
+
22
+ If the use of globbing and shell built-ins is desired, please check
23
+ the `shell` provider
24
+
13
25
  EOT
14
26
 
15
27
  # Verify that we have the executable
@@ -2,11 +2,14 @@ require_relative '../../../puppet/provider/nameservice/objectadd'
2
2
  require_relative '../../../puppet/util/libuser'
3
3
 
4
4
  Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameService::ObjectAdd do
5
- desc "Group management via `groupadd` and its ilk. The default for most platforms."
5
+ desc "Group management via `groupadd` and its ilk. The default for most platforms.
6
+
7
+ To use the `forcelocal` parameter, you need to install the `libuser` package (providing
8
+ `/usr/sbin/lgroupadd` and `/usr/sbin/luseradd`)."
6
9
 
7
10
  commands :add => "groupadd", :delete => "groupdel", :modify => "groupmod"
8
11
 
9
- has_feature :system_groups unless %w{HP-UX Solaris}.include? Facter.value(:operatingsystem)
12
+ has_feature :system_groups unless %w{HP-UX Solaris}.include? Puppet.runtime[:facter].value(:operatingsystem)
10
13
 
11
14
  verify :gid, _("GID must be an integer") do |value|
12
15
  value.is_a? Integer
@@ -126,7 +126,7 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
126
126
  if self.class.compare_pip_versions(command_version, '1.5.4') == -1
127
127
  available_versions_with_old_pip.last
128
128
  else
129
- available_versions_with_new_pip.last
129
+ available_versions_with_new_pip(command_version).last
130
130
  end
131
131
  end
132
132
 
@@ -149,15 +149,17 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
149
149
  if self.class.compare_pip_versions(command_version, '1.5.4') == -1
150
150
  available_versions_with_old_pip
151
151
  else
152
- available_versions_with_new_pip
152
+ available_versions_with_new_pip(command_version)
153
153
  end
154
154
  end
155
155
 
156
- def available_versions_with_new_pip
156
+ def available_versions_with_new_pip(command_version)
157
157
  command = resource_or_provider_command
158
158
  self.class.validate_command(command)
159
159
 
160
160
  command_and_options = [self.class.quote(command), 'install', "#{@resource[:name]}==versionplease"]
161
+ extra_arg = list_extra_flags(command_version)
162
+ command_and_options << extra_arg if extra_arg
161
163
  command_and_options << install_options if @resource[:install_options]
162
164
  execpipe command_and_options do |process|
163
165
  process.collect do |line|
@@ -328,4 +330,14 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
328
330
  path
329
331
  end
330
332
  end
333
+
334
+ private
335
+
336
+ def list_extra_flags(command_version)
337
+ klass = self.class
338
+ if klass.compare_pip_versions(command_version, '20.2.4') == 1 &&
339
+ klass.compare_pip_versions(command_version, '21.1') == -1
340
+ '--use-deprecated=legacy-resolver'
341
+ end
342
+ end
331
343
  end
@@ -161,7 +161,14 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
161
161
  command = is == :absent ? 'install' : 'update'
162
162
  options = ['-n']
163
163
  options.concat(join_options(@resource[:install_options])) if @resource[:install_options]
164
- status = exec_cmd(command(:pkg), command, *options, "#{name}@#{p[:ensure]}")[:exit]
164
+
165
+ begin
166
+ unhold if properties[:mark] == :hold
167
+ status = exec_cmd(command(:pkg), command, *options, "#{name}@#{p[:ensure]}")[:exit]
168
+ ensure
169
+ hold if properties[:mark] == :hold
170
+ end
171
+
165
172
  case status
166
173
  when 4
167
174
  # if the first installable match would cause no changes, we're in sync
@@ -221,7 +228,7 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
221
228
  command = 'update'
222
229
  end
223
230
  args = ['--accept']
224
- if Puppet::Util::Package.versioncmp(Facter.value(:operatingsystemrelease), '11.2') >= 0
231
+ if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.2') >= 0
225
232
  args.push('--sync-actuators-timeout', '900')
226
233
  end
227
234
  args.concat(join_options(@resource[:install_options])) if @resource[:install_options]
@@ -230,7 +237,17 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
230
237
  end
231
238
  self.unhold if self.properties[:mark] == :hold
232
239
  begin
240
+ tries = 1
241
+ # pkg install exits with code 7 when the image is currently in use by another process and cannot be modified
233
242
  r = exec_cmd(command(:pkg), command, *args, name)
243
+ while r[:exit] == 7 do
244
+ if tries > 4
245
+ raise Puppet::Error, _("Pkg could not install %{name} after %{tries} tries. Aborting run") % { name: name, tries: tries }
246
+ end
247
+ sleep 2 ** tries
248
+ tries += 1
249
+ r = exec_cmd(command(:pkg), command, *args, name)
250
+ end
234
251
  ensure
235
252
  self.hold if @resource[:mark] == :hold
236
253
  end
@@ -4,7 +4,7 @@ Puppet::Type.type(:package).provide :puppet_gem, :parent => :gem do
4
4
 
5
5
  has_feature :versionable, :install_options, :uninstall_options
6
6
 
7
- confine :true => Facter.value(:aio_agent_version)
7
+ confine :true => Puppet.runtime[:facter].value(:aio_agent_version)
8
8
 
9
9
  def self.windows_gemcmd
10
10
  puppet_dir = Puppet::Util.get_env('PUPPET_DIR')
@@ -145,7 +145,7 @@ Puppet::Type.type(:package).provide :puppetserver_gem, :parent => :gem do
145
145
 
146
146
  pe_puppetserver_conf_file = '/etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf'
147
147
  os_puppetserver_conf_file = '/etc/puppetlabs/puppetserver/puppetserver.conf'
148
- puppetserver_conf_file = Facter.value(:pe_server_version) ? pe_puppetserver_conf_file : os_puppetserver_conf_file
148
+ puppetserver_conf_file = Puppet.runtime[:facter].value(:pe_server_version) ? pe_puppetserver_conf_file : os_puppetserver_conf_file
149
149
  puppetserver_conf = Hocon.load(puppetserver_conf_file)
150
150
 
151
151
  gem_env = {}
@@ -17,6 +17,11 @@ class Puppet::Provider::Package::Windows
17
17
  'WindowsInstaller',
18
18
  ]
19
19
 
20
+ def self.register(path)
21
+ Puppet::Type::Package::ProviderWindows.paths ||= []
22
+ Puppet::Type::Package::ProviderWindows.paths << path
23
+ end
24
+
20
25
  # Return an instance of the package from the registry, or nil
21
26
  def self.from_registry(name, values)
22
27
  if valid?(name, values)
@@ -55,7 +60,31 @@ class Puppet::Provider::Package::Windows
55
60
  end
56
61
 
57
62
  def self.install_command(resource)
58
- munge(resource[:source])
63
+ file_location = resource[:source]
64
+ if file_location.start_with?('http://', 'https://')
65
+ tempfile = Tempfile.new(['','.exe'])
66
+ begin
67
+ uri = URI(Puppet::Util.uri_encode(file_location))
68
+ client = Puppet.runtime[:http]
69
+ client.get(uri, options: { include_system_store: true }) do |response|
70
+ raise Puppet::HTTP::ResponseError.new(response) unless response.success?
71
+
72
+ File.open(tempfile.path, 'wb') do |file|
73
+ response.read_body do |data|
74
+ file.write(data)
75
+ end
76
+ end
77
+ end
78
+ rescue => detail
79
+ raise Puppet::Error.new(_("Error when installing %{package}: %{detail}") % { package: resource[:name] ,detail: detail.message}, detail)
80
+ ensure
81
+ self.register(tempfile.path)
82
+ tempfile.close()
83
+ file_location = tempfile.path
84
+ end
85
+ end
86
+
87
+ munge(file_location)
59
88
  end
60
89
 
61
90
  def uninstall_command
@@ -67,7 +67,8 @@ class Puppet::Provider::Package::Windows
67
67
  # REMIND: what about msp, etc
68
68
  MsiPackage
69
69
  when /\.exe"?\Z/i
70
- fail(_("The source does not exist: '%{source}'") % { source: resource[:source] }) unless Puppet::FileSystem.exist?(resource[:source])
70
+ fail(_("The source does not exist: '%{source}'") % { source: resource[:source] }) unless
71
+ Puppet::FileSystem.exist?(resource[:source]) || resource[:source].start_with?('http://', 'https://')
71
72
  ExePackage
72
73
  else
73
74
  fail(_("Don't know how to install '%{source}'") % { source: resource[:source] })
@@ -30,6 +30,19 @@ Puppet::Type.type(:package).provide(:windows, :parent => Puppet::Provider::Packa
30
30
  has_feature :versionable
31
31
 
32
32
  attr_accessor :package
33
+ class << self
34
+ attr_accessor :paths
35
+ end
36
+
37
+ def self.post_resource_eval
38
+ @paths.each do |path|
39
+ begin
40
+ Puppet::FileSystem.unlink(path)
41
+ rescue => detail
42
+ raise Puppet::Error.new(_("Error when unlinking %{path}: %{detail}") % { path: path ,detail: detail.message}, detail)
43
+ end
44
+ end if @paths
45
+ end
33
46
 
34
47
  # Return an array of provider instances
35
48
  def self.instances
@@ -64,7 +77,7 @@ Puppet::Type.type(:package).provide(:windows, :parent => Puppet::Provider::Packa
64
77
 
65
78
  command = [installer.install_command(resource), install_options].flatten.compact.join(' ')
66
79
  working_dir = File.dirname(resource[:source])
67
- if !Puppet::FileSystem.exist?(working_dir) && resource[:source] =~ /\.msi"?\Z/i
80
+ unless Puppet::FileSystem.exist?(working_dir)
68
81
  working_dir = nil
69
82
  end
70
83
  output = execute(command, :failonfail => false, :combine => true, :cwd => working_dir, :suppress_window => true)
@@ -298,7 +298,7 @@ defaultfor :osfamily => :redhat, :operatingsystemmajrelease => (4..7).to_a
298
298
 
299
299
  # Yum on el-4 and el-5 returns exit status 0 when trying to install a package it doesn't recognize;
300
300
  # ensure we capture output to check for errors.
301
- no_debug = if Facter.value(:operatingsystemmajrelease).to_i > 5 then ["-d", "0"] else [] end
301
+ no_debug = if Puppet.runtime[:facter].value(:operatingsystemmajrelease).to_i > 5 then ["-d", "0"] else [] end
302
302
  command = [command(:cmd)] + no_debug + ["-e", error_level, "-y", install_options, operation, wanted].compact
303
303
  output = execute(command)
304
304
 
@@ -280,6 +280,9 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
280
280
  def self.prefetch_target(target)
281
281
  begin
282
282
  target_records = retrieve(target)
283
+ unless target_records
284
+ raise Puppet::DevError, _("Prefetching %{target} for provider %{name} returned nil") % { target: target, name: self.name }
285
+ end
283
286
  rescue Puppet::Util::FileType::FileReadError => detail
284
287
  if @raise_prefetch_errors
285
288
  # We will raise an error later in flush_target. This way,
@@ -15,7 +15,7 @@ Puppet::Type.type(:service).provide :base, :parent => :service do
15
15
  # ported from the facter 2.x implementation, since facter 3.x
16
16
  # is dropping the fact (for which this was the only use)
17
17
  def getps
18
- case Facter.value(:operatingsystem)
18
+ case Puppet.runtime[:facter].value(:operatingsystem)
19
19
  when 'OpenWrt'
20
20
  'ps www'
21
21
  when 'FreeBSD', 'NetBSD', 'OpenBSD', 'Darwin', 'DragonFly'
@@ -4,7 +4,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
4
4
  desc "Standard `init`-style service management."
5
5
 
6
6
  def self.defpath
7
- case Facter.value(:operatingsystem)
7
+ case Puppet.runtime[:facter].value(:operatingsystem)
8
8
  when "FreeBSD", "DragonFly"
9
9
  ["/etc/rc.d", "/usr/local/etc/rc.d"]
10
10
  when "HP-UX"
@@ -21,8 +21,8 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
21
21
  # Debian and Ubuntu should use the Debian provider.
22
22
  # RedHat systems should use the RedHat provider.
23
23
  confine :true => begin
24
- os = Facter.value(:operatingsystem).downcase
25
- family = Facter.value(:osfamily).downcase
24
+ os = Puppet.runtime[:facter].value(:operatingsystem).downcase
25
+ family = Puppet.runtime[:facter].value(:osfamily).downcase
26
26
  !(os == 'debian' || os == 'ubuntu' || family == 'redhat')
27
27
  end
28
28
 
@@ -54,7 +54,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
54
54
  # these excludes were found with grep -r -L start /etc/init.d
55
55
  excludes += %w{rcS module-init-tools}
56
56
  # Prevent puppet failing on unsafe scripts from Yocto Linux
57
- if Facter.value(:osfamily) == "cisco-wrlinux"
57
+ if Puppet.runtime[:facter].value(:osfamily) == "cisco-wrlinux"
58
58
  excludes += %w{banner.sh bootmisc.sh checkroot.sh devpts.sh dmesg.sh
59
59
  hostname.sh mountall.sh mountnfs.sh populate-volatile.sh
60
60
  rmnologin.sh save-rtc.sh sendsigs sysfs.sh umountfs
@@ -171,7 +171,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
171
171
  end
172
172
 
173
173
  def service_execute(type, command, fof = true, squelch = false, combine = true)
174
- if type == :start && Facter.value(:osfamily) == "Solaris"
174
+ if type == :start && Puppet.runtime[:facter].value(:osfamily) == "Solaris"
175
175
  command = ["/usr/bin/ctrun -l child", command].flatten.join(" ")
176
176
  end
177
177
  super(type, command, fof, squelch, combine)