puppet 6.22.1-x64-mingw32 → 6.25.1-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (415) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +5 -5
  3. data/Gemfile +2 -2
  4. data/Gemfile.lock +20 -20
  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/osx/puppet.plist +2 -0
  16. data/ext/project_data.yaml +1 -0
  17. data/lib/puppet/application/agent.rb +16 -5
  18. data/lib/puppet/application/apply.rb +22 -3
  19. data/lib/puppet/application/device.rb +2 -1
  20. data/lib/puppet/application/filebucket.rb +1 -0
  21. data/lib/puppet/application/resource.rb +32 -16
  22. data/lib/puppet/application/script.rb +2 -1
  23. data/lib/puppet/application/ssl.rb +1 -0
  24. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  25. data/lib/puppet/configurer/downloader.rb +2 -1
  26. data/lib/puppet/configurer.rb +144 -56
  27. data/lib/puppet/confine/variable.rb +1 -1
  28. data/lib/puppet/defaults.rb +47 -33
  29. data/lib/puppet/environments.rb +75 -25
  30. data/lib/puppet/face/facts.rb +1 -1
  31. data/lib/puppet/face/help/action.erb +1 -0
  32. data/lib/puppet/face/help/face.erb +1 -0
  33. data/lib/puppet/face/node/clean.rb +11 -0
  34. data/lib/puppet/facter_impl.rb +96 -0
  35. data/lib/puppet/file_serving/configuration/parser.rb +2 -0
  36. data/lib/puppet/file_serving/configuration.rb +3 -0
  37. data/lib/puppet/file_serving/fileset.rb +14 -2
  38. data/lib/puppet/file_serving/mount/file.rb +4 -4
  39. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  40. data/lib/puppet/file_system/file_impl.rb +3 -1
  41. data/lib/puppet/file_system/windows.rb +2 -2
  42. data/lib/puppet/forge.rb +4 -4
  43. data/lib/puppet/functions/all.rb +1 -1
  44. data/lib/puppet/functions/camelcase.rb +1 -1
  45. data/lib/puppet/functions/capitalize.rb +2 -2
  46. data/lib/puppet/functions/downcase.rb +2 -2
  47. data/lib/puppet/functions/empty.rb +8 -0
  48. data/lib/puppet/functions/find_template.rb +2 -2
  49. data/lib/puppet/functions/get.rb +5 -5
  50. data/lib/puppet/functions/group_by.rb +13 -5
  51. data/lib/puppet/functions/lest.rb +1 -1
  52. data/lib/puppet/functions/new.rb +100 -100
  53. data/lib/puppet/functions/partition.rb +4 -4
  54. data/lib/puppet/functions/require.rb +5 -5
  55. data/lib/puppet/functions/sort.rb +3 -3
  56. data/lib/puppet/functions/strftime.rb +1 -0
  57. data/lib/puppet/functions/tree_each.rb +7 -9
  58. data/lib/puppet/functions/type.rb +4 -4
  59. data/lib/puppet/functions/unwrap.rb +17 -2
  60. data/lib/puppet/functions/upcase.rb +2 -2
  61. data/lib/puppet/http/client.rb +1 -1
  62. data/lib/puppet/http/redirector.rb +5 -0
  63. data/lib/puppet/http/resolver/server_list.rb +15 -4
  64. data/lib/puppet/http/service/compiler.rb +75 -1
  65. data/lib/puppet/http/service/file_server.rb +2 -1
  66. data/lib/puppet/indirector/catalog/compiler.rb +25 -6
  67. data/lib/puppet/indirector/catalog/rest.rb +1 -0
  68. data/lib/puppet/indirector/facts/facter.rb +6 -6
  69. data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
  70. data/lib/puppet/indirector/indirection.rb +1 -1
  71. data/lib/puppet/indirector/resource/ral.rb +6 -1
  72. data/lib/puppet/indirector/terminus.rb +4 -0
  73. data/lib/puppet/interface/documentation.rb +1 -0
  74. data/lib/puppet/module/plan.rb +0 -1
  75. data/lib/puppet/module/task.rb +1 -1
  76. data/lib/puppet/module.rb +1 -0
  77. data/lib/puppet/module_tool/applications/installer.rb +12 -4
  78. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  79. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  80. data/lib/puppet/module_tool/errors/shared.rb +17 -0
  81. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  82. data/lib/puppet/node/environment.rb +10 -11
  83. data/lib/puppet/pal/pal_impl.rb +1 -1
  84. data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
  85. data/lib/puppet/parser/resource.rb +1 -1
  86. data/lib/puppet/parser/scope.rb +1 -0
  87. data/lib/puppet/parser/templatewrapper.rb +1 -0
  88. data/lib/puppet/pops/evaluator/closure.rb +7 -5
  89. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -0
  90. data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
  91. data/lib/puppet/pops/model/ast.rb +1 -0
  92. data/lib/puppet/pops/model/factory.rb +2 -1
  93. data/lib/puppet/pops/parser/eparser.rb +201 -201
  94. data/lib/puppet/pops/parser/lexer2.rb +92 -91
  95. data/lib/puppet/pops/parser/slurp_support.rb +1 -0
  96. data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
  97. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  98. data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
  99. data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
  100. data/lib/puppet/pops/types/type_formatter.rb +4 -3
  101. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  102. data/lib/puppet/pops/types/types.rb +1 -1
  103. data/lib/puppet/provider/aix_object.rb +1 -1
  104. data/lib/puppet/provider/exec/posix.rb +16 -4
  105. data/lib/puppet/provider/group/groupadd.rb +5 -2
  106. data/lib/puppet/provider/package/nim.rb +11 -6
  107. data/lib/puppet/provider/package/pip.rb +15 -3
  108. data/lib/puppet/provider/package/pkg.rb +19 -2
  109. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  110. data/lib/puppet/provider/package/yum.rb +1 -1
  111. data/lib/puppet/provider/parsedfile.rb +3 -0
  112. data/lib/puppet/provider/service/base.rb +1 -1
  113. data/lib/puppet/provider/service/init.rb +5 -5
  114. data/lib/puppet/provider/service/launchd.rb +2 -2
  115. data/lib/puppet/provider/service/redhat.rb +1 -1
  116. data/lib/puppet/provider/service/smf.rb +3 -3
  117. data/lib/puppet/provider/service/systemd.rb +15 -5
  118. data/lib/puppet/provider/service/upstart.rb +5 -5
  119. data/lib/puppet/provider/service/windows.rb +38 -0
  120. data/lib/puppet/provider/user/aix.rb +44 -1
  121. data/lib/puppet/provider/user/directoryservice.rb +26 -13
  122. data/lib/puppet/provider/user/useradd.rb +72 -16
  123. data/lib/puppet/provider.rb +1 -1
  124. data/lib/puppet/reference/configuration.rb +1 -1
  125. data/lib/puppet/reference/providers.rb +2 -2
  126. data/lib/puppet/resource/catalog.rb +1 -1
  127. data/lib/puppet/resource/type_collection.rb +1 -0
  128. data/lib/puppet/resource.rb +38 -5
  129. data/lib/puppet/runtime.rb +11 -1
  130. data/lib/puppet/settings.rb +32 -9
  131. data/lib/puppet/test/test_helper.rb +4 -1
  132. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  133. data/lib/puppet/transaction/persistence.rb +11 -1
  134. data/lib/puppet/transaction/report.rb +15 -1
  135. data/lib/puppet/type/exec.rb +35 -5
  136. data/lib/puppet/type/file/mode.rb +6 -0
  137. data/lib/puppet/type/file/selcontext.rb +1 -1
  138. data/lib/puppet/type/file.rb +25 -7
  139. data/lib/puppet/type/filebucket.rb +3 -3
  140. data/lib/puppet/type/group.rb +0 -1
  141. data/lib/puppet/type/resources.rb +1 -1
  142. data/lib/puppet/type/service.rb +26 -41
  143. data/lib/puppet/type/tidy.rb +22 -3
  144. data/lib/puppet/type/user.rb +38 -21
  145. data/lib/puppet/type.rb +1 -1
  146. data/lib/puppet/util/command_line.rb +1 -1
  147. data/lib/puppet/util/filetype.rb +2 -2
  148. data/lib/puppet/util/json.rb +3 -0
  149. data/lib/puppet/util/log.rb +1 -2
  150. data/lib/puppet/util/logging.rb +1 -25
  151. data/lib/puppet/util/pidlock.rb +1 -1
  152. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  153. data/lib/puppet/util/selinux.rb +30 -4
  154. data/lib/puppet/util/suidmanager.rb +1 -2
  155. data/lib/puppet/util/symbolic_file_mode.rb +29 -17
  156. data/lib/puppet/util/tagging.rb +1 -0
  157. data/lib/puppet/util/windows/service.rb +0 -5
  158. data/lib/puppet/util/windows/sid.rb +3 -1
  159. data/lib/puppet/util/windows/user.rb +0 -2
  160. data/lib/puppet/util/windows.rb +3 -0
  161. data/lib/puppet/util.rb +4 -3
  162. data/lib/puppet/version.rb +1 -1
  163. data/lib/puppet.rb +5 -9
  164. data/locales/puppet.pot +408 -364
  165. data/man/man5/puppet.conf.5 +303 -275
  166. data/man/man8/puppet-agent.8 +4 -1
  167. data/man/man8/puppet-apply.8 +1 -1
  168. data/man/man8/puppet-catalog.8 +9 -9
  169. data/man/man8/puppet-config.8 +1 -1
  170. data/man/man8/puppet-describe.8 +1 -1
  171. data/man/man8/puppet-device.8 +1 -1
  172. data/man/man8/puppet-doc.8 +1 -1
  173. data/man/man8/puppet-epp.8 +1 -1
  174. data/man/man8/puppet-facts.8 +8 -8
  175. data/man/man8/puppet-filebucket.8 +1 -1
  176. data/man/man8/puppet-generate.8 +1 -1
  177. data/man/man8/puppet-help.8 +1 -1
  178. data/man/man8/puppet-key.8 +7 -7
  179. data/man/man8/puppet-lookup.8 +1 -1
  180. data/man/man8/puppet-man.8 +1 -1
  181. data/man/man8/puppet-module.8 +3 -3
  182. data/man/man8/puppet-node.8 +5 -5
  183. data/man/man8/puppet-parser.8 +1 -1
  184. data/man/man8/puppet-plugin.8 +1 -1
  185. data/man/man8/puppet-report.8 +5 -5
  186. data/man/man8/puppet-resource.8 +1 -1
  187. data/man/man8/puppet-script.8 +1 -1
  188. data/man/man8/puppet-ssl.8 +1 -1
  189. data/man/man8/puppet-status.8 +4 -4
  190. data/man/man8/puppet.8 +2 -2
  191. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +2 -1
  192. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  193. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  194. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  195. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  196. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
  197. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  198. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  199. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  200. data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
  201. data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
  202. data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
  203. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
  204. data/spec/fixtures/ssl/ca.pem +57 -35
  205. data/spec/fixtures/ssl/crl.pem +28 -18
  206. data/spec/fixtures/ssl/ec-key.pem +11 -11
  207. data/spec/fixtures/ssl/ec.pem +33 -24
  208. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  209. data/spec/fixtures/ssl/encrypted-key.pem +108 -58
  210. data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
  211. data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
  212. data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
  213. data/spec/fixtures/ssl/intermediate.pem +57 -36
  214. data/spec/fixtures/ssl/oid-key.pem +117 -0
  215. data/spec/fixtures/ssl/oid.pem +69 -0
  216. data/spec/fixtures/ssl/pluto-key.pem +107 -57
  217. data/spec/fixtures/ssl/pluto.pem +52 -30
  218. data/spec/fixtures/ssl/request-key.pem +107 -57
  219. data/spec/fixtures/ssl/request.pem +47 -26
  220. data/spec/fixtures/ssl/revoked-key.pem +107 -57
  221. data/spec/fixtures/ssl/revoked.pem +52 -30
  222. data/spec/fixtures/ssl/signed-key.pem +107 -57
  223. data/spec/fixtures/ssl/signed.pem +52 -30
  224. data/spec/fixtures/ssl/tampered-cert.pem +52 -30
  225. data/spec/fixtures/ssl/tampered-csr.pem +47 -26
  226. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
  227. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
  228. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
  229. data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
  230. data/spec/fixtures/ssl/unknown-ca.pem +55 -33
  231. data/spec/integration/application/agent_spec.rb +141 -37
  232. data/spec/integration/application/filebucket_spec.rb +16 -0
  233. data/spec/integration/application/module_spec.rb +21 -0
  234. data/spec/integration/application/resource_spec.rb +64 -0
  235. data/spec/integration/application/ssl_spec.rb +20 -0
  236. data/spec/integration/configurer_spec.rb +18 -2
  237. data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
  238. data/spec/integration/indirector/facts/facter_spec.rb +93 -39
  239. data/spec/integration/l10n/compiler_spec.rb +37 -0
  240. data/spec/integration/parser/pcore_resource_spec.rb +10 -0
  241. data/spec/integration/transaction/report_spec.rb +1 -1
  242. data/spec/integration/type/exec_spec.rb +70 -45
  243. data/spec/integration/type/file_spec.rb +2 -2
  244. data/spec/integration/type/package_spec.rb +6 -6
  245. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  246. data/spec/integration/util/windows/process_spec.rb +1 -9
  247. data/spec/lib/puppet/test_ca.rb +7 -2
  248. data/spec/lib/puppet_spec/modules.rb +13 -2
  249. data/spec/lib/puppet_spec/puppetserver.rb +15 -0
  250. data/spec/lib/puppet_spec/settings.rb +1 -0
  251. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  252. data/spec/shared_contexts/l10n.rb +27 -0
  253. data/spec/spec_helper.rb +1 -10
  254. data/spec/unit/application/agent_spec.rb +7 -2
  255. data/spec/unit/application/apply_spec.rb +76 -56
  256. data/spec/unit/application/resource_spec.rb +29 -0
  257. data/spec/unit/configurer/downloader_spec.rb +6 -0
  258. data/spec/unit/configurer_spec.rb +256 -57
  259. data/spec/unit/defaults_spec.rb +1 -0
  260. data/spec/unit/environments_spec.rb +184 -0
  261. data/spec/unit/facter_impl_spec.rb +31 -0
  262. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  263. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
  264. data/spec/unit/file_serving/configuration_spec.rb +14 -4
  265. data/spec/unit/file_serving/fileset_spec.rb +60 -0
  266. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  267. data/spec/unit/file_system_spec.rb +13 -0
  268. data/spec/unit/functions/assert_type_spec.rb +1 -1
  269. data/spec/unit/functions/empty_spec.rb +10 -0
  270. data/spec/unit/functions/logging_spec.rb +1 -0
  271. data/spec/unit/functions/lookup_spec.rb +64 -0
  272. data/spec/unit/functions/unwrap_spec.rb +8 -0
  273. data/spec/unit/functions4_spec.rb +2 -2
  274. data/spec/unit/gettext/config_spec.rb +12 -0
  275. data/spec/unit/http/client_spec.rb +58 -1
  276. data/spec/unit/http/service/compiler_spec.rb +131 -0
  277. data/spec/unit/indirector/catalog/compiler_spec.rb +101 -10
  278. data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
  279. data/spec/unit/indirector/indirection_spec.rb +10 -3
  280. data/spec/unit/indirector/resource/ral_spec.rb +40 -75
  281. data/spec/unit/interface/action_spec.rb +0 -9
  282. data/spec/unit/module_spec.rb +15 -1
  283. data/spec/unit/module_tool/applications/installer_spec.rb +51 -12
  284. data/spec/unit/network/authstore_spec.rb +0 -15
  285. data/spec/unit/network/formats_spec.rb +6 -0
  286. data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
  287. data/spec/unit/parser/templatewrapper_spec.rb +12 -2
  288. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
  289. data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
  290. data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
  291. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
  292. data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
  293. data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
  294. data/spec/unit/provider/package/gem_spec.rb +1 -1
  295. data/spec/unit/provider/package/nim_spec.rb +42 -0
  296. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  297. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  298. data/spec/unit/provider/package/pip_spec.rb +38 -1
  299. data/spec/unit/provider/package/pkg_spec.rb +29 -4
  300. data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
  301. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  302. data/spec/unit/provider/parsedfile_spec.rb +10 -0
  303. data/spec/unit/provider/service/init_spec.rb +1 -0
  304. data/spec/unit/provider/service/launchd_spec.rb +11 -0
  305. data/spec/unit/provider/service/openwrt_spec.rb +3 -1
  306. data/spec/unit/provider/service/systemd_spec.rb +43 -9
  307. data/spec/unit/provider/service/windows_spec.rb +202 -0
  308. data/spec/unit/provider/user/aix_spec.rb +100 -0
  309. data/spec/unit/provider/user/directoryservice_spec.rb +68 -36
  310. data/spec/unit/provider/user/useradd_spec.rb +43 -2
  311. data/spec/unit/provider_spec.rb +4 -4
  312. data/spec/unit/puppet_spec.rb +12 -4
  313. data/spec/unit/resource/catalog_spec.rb +14 -1
  314. data/spec/unit/resource_spec.rb +58 -2
  315. data/spec/unit/settings_spec.rb +97 -56
  316. data/spec/unit/ssl/certificate_request_spec.rb +8 -14
  317. data/spec/unit/ssl/state_machine_spec.rb +19 -5
  318. data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
  319. data/spec/unit/transaction_spec.rb +18 -20
  320. data/spec/unit/type/exec_spec.rb +76 -29
  321. data/spec/unit/type/file/selinux_spec.rb +3 -3
  322. data/spec/unit/type/file/source_spec.rb +4 -4
  323. data/spec/unit/type/service_spec.rb +86 -188
  324. data/spec/unit/type/tidy_spec.rb +24 -7
  325. data/spec/unit/type/user_spec.rb +45 -0
  326. data/spec/unit/type_spec.rb +2 -2
  327. data/spec/unit/util/logging_spec.rb +2 -0
  328. data/spec/unit/util/selinux_spec.rb +87 -16
  329. data/spec/unit/util/windows/sid_spec.rb +39 -4
  330. data/tasks/generate_cert_fixtures.rake +12 -3
  331. data/tasks/parallel.rake +3 -3
  332. metadata +49 -95
  333. data/ext/README.environment +0 -8
  334. data/ext/dbfix.sql +0 -132
  335. data/ext/debian/README.Debian +0 -8
  336. data/ext/debian/README.source +0 -2
  337. data/ext/debian/TODO.Debian +0 -1
  338. data/ext/debian/changelog.erb +0 -1122
  339. data/ext/debian/compat +0 -1
  340. data/ext/debian/control +0 -144
  341. data/ext/debian/copyright +0 -339
  342. data/ext/debian/docs +0 -1
  343. data/ext/debian/fileserver.conf +0 -41
  344. data/ext/debian/puppet-common.dirs +0 -13
  345. data/ext/debian/puppet-common.install +0 -3
  346. data/ext/debian/puppet-common.lintian-overrides +0 -5
  347. data/ext/debian/puppet-common.manpages +0 -28
  348. data/ext/debian/puppet-common.postinst +0 -35
  349. data/ext/debian/puppet-common.postrm +0 -33
  350. data/ext/debian/puppet-el.dirs +0 -1
  351. data/ext/debian/puppet-el.emacsen-install +0 -25
  352. data/ext/debian/puppet-el.emacsen-remove +0 -11
  353. data/ext/debian/puppet-el.emacsen-startup +0 -9
  354. data/ext/debian/puppet-el.install +0 -1
  355. data/ext/debian/puppet-testsuite.install +0 -2
  356. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  357. data/ext/debian/puppet.lintian-overrides +0 -3
  358. data/ext/debian/puppet.logrotate +0 -20
  359. data/ext/debian/puppet.postinst +0 -20
  360. data/ext/debian/puppet.postrm +0 -20
  361. data/ext/debian/puppet.preinst +0 -20
  362. data/ext/debian/puppetmaster-common.install +0 -2
  363. data/ext/debian/puppetmaster-common.manpages +0 -2
  364. data/ext/debian/puppetmaster-common.postinst +0 -6
  365. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  366. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  367. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  368. data/ext/debian/puppetmaster.README.debian +0 -17
  369. data/ext/debian/puppetmaster.default +0 -14
  370. data/ext/debian/puppetmaster.init +0 -137
  371. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  372. data/ext/debian/puppetmaster.postinst +0 -20
  373. data/ext/debian/puppetmaster.postrm +0 -5
  374. data/ext/debian/puppetmaster.preinst +0 -22
  375. data/ext/debian/rules +0 -132
  376. data/ext/debian/source/format +0 -1
  377. data/ext/debian/source/options +0 -1
  378. data/ext/debian/vim-puppet.README.Debian +0 -13
  379. data/ext/debian/vim-puppet.dirs +0 -5
  380. data/ext/debian/vim-puppet.yaml +0 -7
  381. data/ext/debian/watch +0 -2
  382. data/ext/freebsd/puppetd +0 -26
  383. data/ext/freebsd/puppetmasterd +0 -26
  384. data/ext/gentoo/conf.d/puppet +0 -5
  385. data/ext/gentoo/conf.d/puppetmaster +0 -12
  386. data/ext/gentoo/init.d/puppet +0 -38
  387. data/ext/gentoo/init.d/puppetmaster +0 -51
  388. data/ext/gentoo/puppet/fileserver.conf +0 -41
  389. data/ext/ips/puppet-agent +0 -44
  390. data/ext/ips/puppet-master +0 -44
  391. data/ext/ips/puppet.p5m.erb +0 -12
  392. data/ext/ips/puppetagent.xml +0 -42
  393. data/ext/ips/puppetmaster.xml +0 -42
  394. data/ext/ips/rules +0 -19
  395. data/ext/ips/transforms +0 -34
  396. data/ext/ldap/puppet.schema +0 -24
  397. data/ext/logcheck/puppet +0 -23
  398. data/ext/osx/file_mapping.yaml +0 -33
  399. data/ext/osx/postflight.erb +0 -109
  400. data/ext/osx/preflight.erb +0 -52
  401. data/ext/osx/prototype.plist.erb +0 -38
  402. data/ext/redhat/fileserver.conf +0 -41
  403. data/ext/redhat/logrotate +0 -21
  404. data/ext/redhat/puppet.spec.erb +0 -842
  405. data/ext/redhat/server.init +0 -128
  406. data/ext/redhat/server.sysconfig +0 -13
  407. data/ext/solaris/pkginfo +0 -6
  408. data/ext/solaris/smf/puppetd.xml +0 -77
  409. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  410. data/ext/solaris/smf/svc-puppetd +0 -71
  411. data/ext/solaris/smf/svc-puppetmasterd +0 -67
  412. data/ext/suse/puppet.spec +0 -310
  413. data/ext/suse/server.init +0 -173
  414. data/ext/yaml_nodes.rb +0 -105
  415. 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,114 +31,114 @@ 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.
115
116
  #
116
117
  KEYWORDS = {
117
- 'case' => [:CASE, 'case', 4],
118
- 'class' => [:CLASS, 'class', 5],
119
- 'default' => [:DEFAULT, 'default', 7],
120
- 'define' => [:DEFINE, 'define', 6],
121
- 'if' => [:IF, 'if', 2],
122
- 'elsif' => [:ELSIF, 'elsif', 5],
123
- 'else' => [:ELSE, 'else', 4],
124
- 'inherits' => [:INHERITS, 'inherits', 8],
125
- 'node' => [:NODE, 'node', 4],
126
- 'and' => [:AND, 'and', 3],
127
- 'or' => [:OR, 'or', 2],
128
- 'undef' => [:UNDEF, 'undef', 5],
129
- 'false' => [:BOOLEAN, false, 5],
130
- 'true' => [:BOOLEAN, true, 4],
131
- 'in' => [:IN, 'in', 2],
132
- 'unless' => [:UNLESS, 'unless', 6],
133
- 'function' => [:FUNCTION, 'function', 8],
134
- 'type' => [:TYPE, 'type', 4],
135
- 'attr' => [:ATTR, 'attr', 4],
136
- 'private' => [:PRIVATE, 'private', 7],
137
- 'application' => [:APPLICATION, 'application', 11],
138
- 'consumes' => [:CONSUMES, 'consumes', 8],
139
- 'produces' => [:PRODUCES, 'produces', 8],
140
- 'site' => [:SITE, 'site', 4],
118
+ 'case' => [:CASE, 'case', 4],
119
+ 'class' => [:CLASS, 'class', 5],
120
+ 'default' => [:DEFAULT, 'default', 7],
121
+ 'define' => [:DEFINE, 'define', 6],
122
+ 'if' => [:IF, 'if', 2],
123
+ 'elsif' => [:ELSIF, 'elsif', 5],
124
+ 'else' => [:ELSE, 'else', 4],
125
+ 'inherits' => [:INHERITS, 'inherits', 8],
126
+ 'node' => [:NODE, 'node', 4],
127
+ 'and' => [:AND, 'and', 3],
128
+ 'or' => [:OR, 'or', 2],
129
+ 'undef' => [:UNDEF, 'undef', 5],
130
+ 'false' => [:BOOLEAN, false, 5],
131
+ 'true' => [:BOOLEAN, true, 4],
132
+ 'in' => [:IN, 'in', 2],
133
+ 'unless' => [:UNLESS, 'unless', 6],
134
+ 'function' => [:FUNCTION, 'function', 8],
135
+ 'type' => [:TYPE, 'type', 4],
136
+ 'attr' => [:ATTR, 'attr', 4],
137
+ 'private' => [:PRIVATE, 'private', 7],
138
+ 'application' => [:APPLICATION, 'application', 11],
139
+ 'consumes' => [:CONSUMES, 'consumes', 8],
140
+ 'produces' => [:PRODUCES, 'produces', 8],
141
+ 'site' => [:SITE, 'site', 4],
141
142
  }
142
143
 
143
144
  KEYWORDS.each {|k,v| v[1].freeze; v.freeze }
@@ -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
@@ -95,16 +95,22 @@ class PSemVerType < PScalarType
95
95
  end
96
96
 
97
97
  def from_args(major, minor, patch, prerelease = nil, build = nil)
98
- SemanticPuppet::Version.new(major, minor, patch, prerelease, build)
98
+ SemanticPuppet::Version.new(major, minor, patch, to_array(prerelease), to_array(build))
99
99
  end
100
100
 
101
101
  def from_hash(hash)
102
- SemanticPuppet::Version.new(hash['major'], hash['minor'], hash['patch'], hash['prerelease'], hash['build'])
102
+ SemanticPuppet::Version.new(hash['major'], hash['minor'], hash['patch'], to_array(hash['prerelease']), to_array(hash['build']))
103
103
  end
104
104
 
105
105
  def on_error(str)
106
106
  _("The string '%{str}' cannot be converted to a SemVer") % { str: str }
107
107
  end
108
+
109
+ private
110
+
111
+ def to_array(component)
112
+ component ? [component] : nil
113
+ end
108
114
  end
109
115
  end
110
116
 
@@ -24,6 +24,16 @@ class PSensitiveType < PTypeWithContainedType
24
24
  def inspect
25
25
  "#<#{self}>"
26
26
  end
27
+
28
+ def hash
29
+ @value.hash
30
+ end
31
+
32
+ def ==(other)
33
+ other.is_a?(Sensitive) &&
34
+ other.hash == hash
35
+ end
36
+ alias eql? ==
27
37
  end
28
38
 
29
39
  def self.register_ptype(loader, ir)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require '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
@@ -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}" })
@@ -736,7 +736,7 @@ class PScalarDataType < PScalarType
736
736
  end
737
737
 
738
738
  def instance?(o, guard = nil)
739
- return o.is_a?(String) || o.is_a?(Integer) || o.is_a?(Float) || o.is_a?(TrueClass) || o.is_a?(FalseClass)
739
+ return o.instance_of?(String) || o.is_a?(Integer) || o.is_a?(Float) || o.is_a?(TrueClass) || o.is_a?(FalseClass)
740
740
  end
741
741
 
742
742
  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 'puppet/provider/nameservice/objectadd'
2
2
  require '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
@@ -154,20 +154,25 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do
154
154
  # I spent a lot of time trying to figure out a solution that didn't
155
155
  # require parsing the `nimclient -o showres` output and was unable to
156
156
  # do so.
157
- self::HEADER_LINE_REGEX = /^([^\s]+)\s+[^@]+@@(I|R):(\1)\s+[^\s]+$/
158
- self::PACKAGE_LINE_REGEX = /^.*@@(I|R):(.*)$/
159
- self::RPM_PACKAGE_REGEX = /^(.*)-(.*-\d+) \2$/
157
+ self::HEADER_LINE_REGEX = /^([^\s]+)\s+[^@]+@@(I|R|S):(\1)\s+[^\s]+$/
158
+ self::PACKAGE_LINE_REGEX = /^.*@@(I|R|S):(.*)$/
159
+ self::RPM_PACKAGE_REGEX = /^(.*)-(.*-\d+\w*) \2$/
160
160
  self::INSTALLP_PACKAGE_REGEX = /^(.*) (.*)$/
161
161
 
162
162
  # Here is some sample output that shows what the above regexes will be up
163
163
  # against:
164
- # FOR AN INSTALLP PACKAGE:
164
+ # FOR AN INSTALLP(bff) PACKAGE:
165
165
  #
166
166
  # mypackage.foo ALL @@I:mypackage.foo _all_filesets
167
- # @ 1.2.3.1 MyPackage Runtime Environment @@I:mypackage.foo 1.2.3.1
168
167
  # + 1.2.3.4 MyPackage Runtime Environment @@I:mypackage.foo 1.2.3.4
169
168
  # + 1.2.3.8 MyPackage Runtime Environment @@I:mypackage.foo 1.2.3.8
170
169
  #
170
+ # FOR AN INSTALLP(bff) PACKAGE with security update:
171
+ #
172
+ # bos.net ALL @@S:bos.net _all_filesets
173
+ # + 7.2.0.1 TCP/IP ntp Applications @@S:bos.net.tcp.ntp 7.2.0.1
174
+ # + 7.2.0.2 TCP/IP ntp Applications @@S:bos.net.tcp.ntp 7.2.0.2
175
+ #
171
176
  # FOR AN RPM PACKAGE:
172
177
  #
173
178
  # mypackage.foo ALL @@R:mypackage.foo _all_filesets
@@ -243,7 +248,7 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do
243
248
  package_string = match.captures[1]
244
249
 
245
250
  case package_type_flag
246
- when "I"
251
+ when "I","S"
247
252
  parse_installp_package_string(package_string)
248
253
  when "R"
249
254
  parse_rpm_package_string(package_string)
@@ -127,7 +127,7 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
127
127
  if self.class.compare_pip_versions(command_version, '1.5.4') == -1
128
128
  available_versions_with_old_pip.last
129
129
  else
130
- available_versions_with_new_pip.last
130
+ available_versions_with_new_pip(command_version).last
131
131
  end
132
132
  end
133
133
 
@@ -150,15 +150,17 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
150
150
  if self.class.compare_pip_versions(command_version, '1.5.4') == -1
151
151
  available_versions_with_old_pip
152
152
  else
153
- available_versions_with_new_pip
153
+ available_versions_with_new_pip(command_version)
154
154
  end
155
155
  end
156
156
 
157
- def available_versions_with_new_pip
157
+ def available_versions_with_new_pip(command_version)
158
158
  command = resource_or_provider_command
159
159
  self.class.validate_command(command)
160
160
 
161
161
  command_and_options = [self.class.quote(command), 'install', "#{@resource[:name]}==versionplease"]
162
+ extra_arg = list_extra_flags(command_version)
163
+ command_and_options << extra_arg if extra_arg
162
164
  command_and_options << install_options if @resource[:install_options]
163
165
  execpipe command_and_options do |process|
164
166
  process.collect do |line|
@@ -329,4 +331,14 @@ Puppet::Type.type(:package).provide :pip, :parent => ::Puppet::Provider::Package
329
331
  path
330
332
  end
331
333
  end
334
+
335
+ private
336
+
337
+ def list_extra_flags(command_version)
338
+ klass = self.class
339
+ if klass.compare_pip_versions(command_version, '20.2.4') == 1 &&
340
+ klass.compare_pip_versions(command_version, '21.1') == -1
341
+ '--use-deprecated=legacy-resolver'
342
+ end
343
+ end
332
344
  end
@@ -165,7 +165,14 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
165
165
  command = is == :absent ? 'install' : 'update'
166
166
  options = ['-n']
167
167
  options.concat(join_options(@resource[:install_options])) if @resource[:install_options]
168
- status = exec_cmd(command(:pkg), command, *options, "#{name}@#{p[:ensure]}")[:exit]
168
+
169
+ begin
170
+ unhold if properties[:mark] == :hold
171
+ status = exec_cmd(command(:pkg), command, *options, "#{name}@#{p[:ensure]}")[:exit]
172
+ ensure
173
+ hold if properties[:mark] == :hold
174
+ end
175
+
169
176
  case status
170
177
  when 4
171
178
  # if the first installable match would cause no changes, we're in sync
@@ -225,7 +232,7 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
225
232
  command = 'update'
226
233
  end
227
234
  args = ['--accept']
228
- if Puppet::Util::Package.versioncmp(Facter.value(:operatingsystemrelease), '11.2') >= 0
235
+ if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.2') >= 0
229
236
  args.push('--sync-actuators-timeout', '900')
230
237
  end
231
238
  args.concat(join_options(@resource[:install_options])) if @resource[:install_options]
@@ -234,7 +241,17 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
234
241
  end
235
242
  self.unhold if self.properties[:mark] == :hold
236
243
  begin
244
+ tries = 1
245
+ # pkg install exits with code 7 when the image is currently in use by another process and cannot be modified
237
246
  r = exec_cmd(command(:pkg), command, *args, name)
247
+ while r[:exit] == 7 do
248
+ if tries > 4
249
+ raise Puppet::Error, _("Pkg could not install %{name} after %{tries} tries. Aborting run") % { name: name, tries: tries }
250
+ end
251
+ sleep 2 ** tries
252
+ tries += 1
253
+ r = exec_cmd(command(:pkg), command, *args, name)
254
+ end
238
255
  ensure
239
256
  self.hold if @resource[:mark] == :hold
240
257
  end
@@ -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 = {}
@@ -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'