puppet 7.7.0 → 7.11.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 (386) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +7 -7
  3. data/Gemfile +4 -3
  4. data/Gemfile.lock +18 -18
  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/install.rb +0 -4
  18. data/lib/puppet/application/agent.rb +4 -0
  19. data/lib/puppet/application/apply.rb +20 -2
  20. data/lib/puppet/application/filebucket.rb +1 -0
  21. data/lib/puppet/application/resource.rb +30 -15
  22. data/lib/puppet/application/ssl.rb +1 -0
  23. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  24. data/lib/puppet/configurer.rb +169 -50
  25. data/lib/puppet/confine/variable.rb +1 -1
  26. data/lib/puppet/defaults.rb +70 -30
  27. data/lib/puppet/environments.rb +75 -25
  28. data/lib/puppet/face/help/action.erb +1 -0
  29. data/lib/puppet/face/help/face.erb +1 -0
  30. data/lib/puppet/face/node/clean.rb +1 -1
  31. data/lib/puppet/facter_impl.rb +96 -0
  32. data/lib/puppet/file_serving/configuration/parser.rb +2 -0
  33. data/lib/puppet/file_serving/configuration.rb +2 -0
  34. data/lib/puppet/file_serving/mount/file.rb +4 -4
  35. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  36. data/lib/puppet/file_system/file_impl.rb +3 -1
  37. data/lib/puppet/file_system/windows.rb +2 -2
  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/lookup/lookup_adapter.rb +3 -2
  65. data/lib/puppet/pops/model/ast.rb +1 -0
  66. data/lib/puppet/pops/model/factory.rb +14 -13
  67. data/lib/puppet/pops/parser/egrammar.ra +2 -2
  68. data/lib/puppet/pops/parser/eparser.rb +752 -753
  69. data/lib/puppet/pops/parser/lexer2.rb +69 -68
  70. data/lib/puppet/pops/parser/slurp_support.rb +1 -0
  71. data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
  72. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  73. data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
  74. data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
  75. data/lib/puppet/pops/types/type_formatter.rb +7 -6
  76. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  77. data/lib/puppet/pops/types/types.rb +1 -1
  78. data/lib/puppet/provider/aix_object.rb +1 -1
  79. data/lib/puppet/provider/exec/posix.rb +16 -4
  80. data/lib/puppet/provider/group/groupadd.rb +5 -2
  81. data/lib/puppet/provider/package/apt.rb +3 -3
  82. data/lib/puppet/provider/package/nim.rb +11 -6
  83. data/lib/puppet/provider/package/pip.rb +15 -3
  84. data/lib/puppet/provider/package/pkg.rb +9 -2
  85. data/lib/puppet/provider/package/puppet_gem.rb +1 -1
  86. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  87. data/lib/puppet/provider/package/windows/exe_package.rb +30 -1
  88. data/lib/puppet/provider/package/windows/package.rb +2 -1
  89. data/lib/puppet/provider/package/windows.rb +14 -1
  90. data/lib/puppet/provider/package/yum.rb +4 -4
  91. data/lib/puppet/provider/package/zypper.rb +3 -3
  92. data/lib/puppet/provider/parsedfile.rb +3 -0
  93. data/lib/puppet/provider/service/base.rb +1 -1
  94. data/lib/puppet/provider/service/freebsd.rb +1 -1
  95. data/lib/puppet/provider/service/init.rb +5 -5
  96. data/lib/puppet/provider/service/launchd.rb +2 -2
  97. data/lib/puppet/provider/service/redhat.rb +1 -1
  98. data/lib/puppet/provider/service/smf.rb +3 -3
  99. data/lib/puppet/provider/service/systemd.rb +8 -3
  100. data/lib/puppet/provider/service/upstart.rb +5 -5
  101. data/lib/puppet/provider/user/aix.rb +44 -1
  102. data/lib/puppet/provider/user/directoryservice.rb +25 -12
  103. data/lib/puppet/provider/user/useradd.rb +52 -16
  104. data/lib/puppet/provider.rb +1 -1
  105. data/lib/puppet/reference/providers.rb +2 -2
  106. data/lib/puppet/resource/type_collection.rb +4 -1
  107. data/lib/puppet/runtime.rb +11 -1
  108. data/lib/puppet/settings/config_file.rb +1 -8
  109. data/lib/puppet/settings/file_setting.rb +3 -8
  110. data/lib/puppet/settings/value_translator.rb +0 -1
  111. data/lib/puppet/settings.rb +32 -9
  112. data/lib/puppet/test/test_helper.rb +4 -1
  113. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  114. data/lib/puppet/transaction/persistence.rb +11 -1
  115. data/lib/puppet/transaction/report.rb +15 -1
  116. data/lib/puppet/type/exec.rb +35 -5
  117. data/lib/puppet/type/file/mode.rb +6 -0
  118. data/lib/puppet/type/file.rb +6 -6
  119. data/lib/puppet/type/filebucket.rb +2 -2
  120. data/lib/puppet/type/group.rb +0 -1
  121. data/lib/puppet/type/resources.rb +1 -1
  122. data/lib/puppet/type/service.rb +8 -9
  123. data/lib/puppet/type/tidy.rb +1 -1
  124. data/lib/puppet/type/user.rb +39 -22
  125. data/lib/puppet/type.rb +1 -1
  126. data/lib/puppet/util/command_line.rb +1 -1
  127. data/lib/puppet/util/filetype.rb +2 -2
  128. data/lib/puppet/util/log.rb +1 -2
  129. data/lib/puppet/util/logging.rb +1 -25
  130. data/lib/puppet/util/monkey_patches.rb +2 -17
  131. data/lib/puppet/util/pidlock.rb +1 -1
  132. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  133. data/lib/puppet/util/suidmanager.rb +1 -2
  134. data/lib/puppet/util/symbolic_file_mode.rb +29 -17
  135. data/lib/puppet/util/tagging.rb +1 -0
  136. data/lib/puppet/util/windows/sid.rb +3 -1
  137. data/lib/puppet/util/windows/user.rb +0 -1
  138. data/lib/puppet/util.rb +4 -3
  139. data/lib/puppet/version.rb +1 -1
  140. data/lib/puppet/x509/cert_provider.rb +3 -21
  141. data/lib/puppet.rb +5 -9
  142. data/locales/puppet.pot +346 -274
  143. data/man/man5/puppet.conf.5 +76 -25
  144. data/man/man8/puppet-agent.8 +4 -1
  145. data/man/man8/puppet-apply.8 +1 -1
  146. data/man/man8/puppet-catalog.8 +9 -9
  147. data/man/man8/puppet-config.8 +1 -1
  148. data/man/man8/puppet-describe.8 +1 -1
  149. data/man/man8/puppet-device.8 +1 -1
  150. data/man/man8/puppet-doc.8 +1 -1
  151. data/man/man8/puppet-epp.8 +1 -1
  152. data/man/man8/puppet-facts.8 +7 -7
  153. data/man/man8/puppet-filebucket.8 +1 -1
  154. data/man/man8/puppet-generate.8 +1 -1
  155. data/man/man8/puppet-help.8 +1 -1
  156. data/man/man8/puppet-lookup.8 +1 -1
  157. data/man/man8/puppet-module.8 +3 -3
  158. data/man/man8/puppet-node.8 +5 -5
  159. data/man/man8/puppet-parser.8 +1 -1
  160. data/man/man8/puppet-plugin.8 +1 -1
  161. data/man/man8/puppet-report.8 +5 -5
  162. data/man/man8/puppet-resource.8 +1 -1
  163. data/man/man8/puppet-script.8 +1 -1
  164. data/man/man8/puppet-ssl.8 +1 -1
  165. data/man/man8/puppet.8 +2 -2
  166. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  167. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  168. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  169. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  170. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
  171. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  172. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  173. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  174. data/spec/fixtures/ssl/127.0.0.1-key.pem +106 -106
  175. data/spec/fixtures/ssl/127.0.0.1.pem +48 -48
  176. data/spec/fixtures/ssl/bad-basic-constraints.pem +54 -54
  177. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +51 -51
  178. data/spec/fixtures/ssl/ca.pem +52 -52
  179. data/spec/fixtures/ssl/crl.pem +25 -25
  180. data/spec/fixtures/ssl/ec-key-openssl.pem +8 -0
  181. data/spec/fixtures/ssl/ec-key-pk8.pem +5 -0
  182. data/spec/fixtures/ssl/ec-key.pem +11 -11
  183. data/spec/fixtures/ssl/ec.pem +32 -32
  184. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  185. data/spec/fixtures/ssl/encrypted-key.pem +107 -107
  186. data/spec/fixtures/ssl/intermediate-agent-crl.pem +25 -25
  187. data/spec/fixtures/ssl/intermediate-agent.pem +54 -54
  188. data/spec/fixtures/ssl/intermediate-crl.pem +28 -28
  189. data/spec/fixtures/ssl/intermediate.pem +51 -51
  190. data/spec/fixtures/ssl/oid-key.pem +117 -0
  191. data/spec/fixtures/ssl/oid.pem +69 -0
  192. data/spec/fixtures/ssl/pluto-key.pem +106 -106
  193. data/spec/fixtures/ssl/pluto.pem +50 -50
  194. data/spec/fixtures/ssl/request-key.pem +106 -106
  195. data/spec/fixtures/ssl/request.pem +45 -45
  196. data/spec/fixtures/ssl/revoked-key.pem +106 -106
  197. data/spec/fixtures/ssl/revoked.pem +49 -49
  198. data/spec/fixtures/ssl/signed-key.pem +106 -106
  199. data/spec/fixtures/ssl/signed.pem +47 -47
  200. data/spec/fixtures/ssl/tampered-cert.pem +49 -49
  201. data/spec/fixtures/ssl/tampered-csr.pem +45 -45
  202. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
  203. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +106 -106
  204. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -48
  205. data/spec/fixtures/ssl/unknown-ca-key.pem +106 -106
  206. data/spec/fixtures/ssl/unknown-ca.pem +52 -52
  207. data/spec/integration/application/agent_spec.rb +118 -52
  208. data/spec/integration/application/filebucket_spec.rb +16 -0
  209. data/spec/integration/application/module_spec.rb +21 -0
  210. data/spec/integration/application/resource_spec.rb +64 -0
  211. data/spec/integration/application/ssl_spec.rb +20 -0
  212. data/spec/integration/configurer_spec.rb +18 -2
  213. data/spec/integration/defaults_spec.rb +5 -0
  214. data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
  215. data/spec/integration/indirector/facts/facter_spec.rb +93 -39
  216. data/spec/integration/l10n/compiler_spec.rb +37 -0
  217. data/spec/integration/transaction/report_spec.rb +1 -1
  218. data/spec/integration/type/exec_spec.rb +70 -45
  219. data/spec/integration/type/file_spec.rb +2 -2
  220. data/spec/integration/type/package_spec.rb +6 -6
  221. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  222. data/spec/integration/util/windows/process_spec.rb +1 -9
  223. data/spec/lib/puppet/test_ca.rb +5 -0
  224. data/spec/lib/puppet_spec/modules.rb +13 -2
  225. data/spec/lib/puppet_spec/puppetserver.rb +15 -0
  226. data/spec/lib/puppet_spec/settings.rb +1 -0
  227. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  228. data/spec/shared_contexts/l10n.rb +27 -0
  229. data/spec/spec_helper.rb +1 -10
  230. data/spec/unit/application/apply_spec.rb +76 -56
  231. data/spec/unit/application/resource_spec.rb +29 -0
  232. data/spec/unit/configurer_spec.rb +277 -56
  233. data/spec/unit/environments_spec.rb +184 -0
  234. data/spec/unit/facter_impl_spec.rb +31 -0
  235. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  236. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
  237. data/spec/unit/file_serving/configuration_spec.rb +12 -4
  238. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  239. data/spec/unit/file_system_spec.rb +13 -0
  240. data/spec/unit/functions/assert_type_spec.rb +1 -1
  241. data/spec/unit/functions/empty_spec.rb +10 -0
  242. data/spec/unit/functions/logging_spec.rb +1 -0
  243. data/spec/unit/functions/lookup_spec.rb +87 -0
  244. data/spec/unit/functions/unwrap_spec.rb +8 -0
  245. data/spec/unit/functions4_spec.rb +19 -10
  246. data/spec/unit/http/service/compiler_spec.rb +8 -0
  247. data/spec/unit/indirector/catalog/compiler_spec.rb +87 -0
  248. data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
  249. data/spec/unit/indirector/indirection_spec.rb +10 -3
  250. data/spec/unit/indirector/resource/ral_spec.rb +40 -75
  251. data/spec/unit/interface/action_spec.rb +0 -9
  252. data/spec/unit/module_spec.rb +14 -0
  253. data/spec/unit/module_tool/applications/installer_spec.rb +52 -14
  254. data/spec/unit/parser/compiler_spec.rb +29 -0
  255. data/spec/unit/parser/templatewrapper_spec.rb +12 -2
  256. data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -9
  257. data/spec/unit/pops/parser/lexer2_spec.rb +0 -4
  258. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
  259. data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
  260. data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
  261. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
  262. data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
  263. data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
  264. data/spec/unit/provider/package/gem_spec.rb +1 -1
  265. data/spec/unit/provider/package/nim_spec.rb +42 -0
  266. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  267. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  268. data/spec/unit/provider/package/pip_spec.rb +38 -1
  269. data/spec/unit/provider/package/pkg_spec.rb +19 -5
  270. data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
  271. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  272. data/spec/unit/provider/package/windows/exe_package_spec.rb +17 -0
  273. data/spec/unit/provider/parsedfile_spec.rb +10 -0
  274. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  275. data/spec/unit/provider/service/launchd_spec.rb +11 -0
  276. data/spec/unit/provider/service/systemd_spec.rb +13 -1
  277. data/spec/unit/provider/user/aix_spec.rb +100 -0
  278. data/spec/unit/provider/user/directoryservice_spec.rb +68 -36
  279. data/spec/unit/provider/user/useradd_spec.rb +3 -2
  280. data/spec/unit/provider_spec.rb +4 -4
  281. data/spec/unit/puppet_spec.rb +12 -4
  282. data/spec/unit/resource/type_collection_spec.rb +16 -0
  283. data/spec/unit/resource/type_spec.rb +2 -2
  284. data/spec/unit/settings/config_file_spec.rb +1 -11
  285. data/spec/unit/settings/file_setting_spec.rb +10 -7
  286. data/spec/unit/settings/value_translator_spec.rb +4 -5
  287. data/spec/unit/settings_spec.rb +120 -79
  288. data/spec/unit/ssl/ssl_provider_spec.rb +18 -16
  289. data/spec/unit/type/exec_spec.rb +76 -29
  290. data/spec/unit/type/file/source_spec.rb +4 -4
  291. data/spec/unit/type/service_spec.rb +49 -34
  292. data/spec/unit/type/tidy_spec.rb +7 -0
  293. data/spec/unit/type/user_spec.rb +45 -0
  294. data/spec/unit/type_spec.rb +2 -2
  295. data/spec/unit/util/ldap/connection_spec.rb +10 -10
  296. data/spec/unit/util/ldap/manager_spec.rb +2 -2
  297. data/spec/unit/util/logging_spec.rb +2 -0
  298. data/spec/unit/util/windows/sid_spec.rb +39 -4
  299. data/spec/unit/util_spec.rb +1 -3
  300. data/spec/unit/x509/cert_provider_spec.rb +9 -1
  301. data/tasks/generate_cert_fixtures.rake +10 -1
  302. data/tasks/parallel.rake +3 -3
  303. metadata +53 -95
  304. data/ext/README.environment +0 -8
  305. data/ext/dbfix.sql +0 -132
  306. data/ext/debian/README.Debian +0 -8
  307. data/ext/debian/README.source +0 -2
  308. data/ext/debian/TODO.Debian +0 -1
  309. data/ext/debian/changelog.erb +0 -1122
  310. data/ext/debian/compat +0 -1
  311. data/ext/debian/control +0 -144
  312. data/ext/debian/copyright +0 -339
  313. data/ext/debian/docs +0 -1
  314. data/ext/debian/fileserver.conf +0 -41
  315. data/ext/debian/puppet-common.dirs +0 -13
  316. data/ext/debian/puppet-common.install +0 -3
  317. data/ext/debian/puppet-common.lintian-overrides +0 -5
  318. data/ext/debian/puppet-common.manpages +0 -28
  319. data/ext/debian/puppet-common.postinst +0 -35
  320. data/ext/debian/puppet-common.postrm +0 -33
  321. data/ext/debian/puppet-el.dirs +0 -1
  322. data/ext/debian/puppet-el.emacsen-install +0 -25
  323. data/ext/debian/puppet-el.emacsen-remove +0 -11
  324. data/ext/debian/puppet-el.emacsen-startup +0 -9
  325. data/ext/debian/puppet-el.install +0 -1
  326. data/ext/debian/puppet-testsuite.install +0 -2
  327. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  328. data/ext/debian/puppet.lintian-overrides +0 -3
  329. data/ext/debian/puppet.logrotate +0 -20
  330. data/ext/debian/puppet.postinst +0 -20
  331. data/ext/debian/puppet.postrm +0 -20
  332. data/ext/debian/puppet.preinst +0 -20
  333. data/ext/debian/puppetmaster-common.install +0 -2
  334. data/ext/debian/puppetmaster-common.manpages +0 -2
  335. data/ext/debian/puppetmaster-common.postinst +0 -6
  336. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  337. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  338. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  339. data/ext/debian/puppetmaster.README.debian +0 -17
  340. data/ext/debian/puppetmaster.default +0 -14
  341. data/ext/debian/puppetmaster.init +0 -137
  342. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  343. data/ext/debian/puppetmaster.postinst +0 -20
  344. data/ext/debian/puppetmaster.postrm +0 -5
  345. data/ext/debian/puppetmaster.preinst +0 -22
  346. data/ext/debian/rules +0 -132
  347. data/ext/debian/source/format +0 -1
  348. data/ext/debian/source/options +0 -1
  349. data/ext/debian/vim-puppet.README.Debian +0 -13
  350. data/ext/debian/vim-puppet.dirs +0 -5
  351. data/ext/debian/vim-puppet.yaml +0 -7
  352. data/ext/debian/watch +0 -2
  353. data/ext/freebsd/puppetd +0 -26
  354. data/ext/freebsd/puppetmasterd +0 -26
  355. data/ext/gentoo/conf.d/puppet +0 -5
  356. data/ext/gentoo/conf.d/puppetmaster +0 -12
  357. data/ext/gentoo/init.d/puppet +0 -38
  358. data/ext/gentoo/init.d/puppetmaster +0 -51
  359. data/ext/gentoo/puppet/fileserver.conf +0 -41
  360. data/ext/ips/puppet-agent +0 -44
  361. data/ext/ips/puppet-master +0 -44
  362. data/ext/ips/puppet.p5m.erb +0 -12
  363. data/ext/ips/puppetagent.xml +0 -42
  364. data/ext/ips/puppetmaster.xml +0 -42
  365. data/ext/ips/rules +0 -19
  366. data/ext/ips/transforms +0 -34
  367. data/ext/ldap/puppet.schema +0 -24
  368. data/ext/logcheck/puppet +0 -23
  369. data/ext/osx/file_mapping.yaml +0 -28
  370. data/ext/osx/postflight.erb +0 -109
  371. data/ext/osx/preflight.erb +0 -52
  372. data/ext/osx/prototype.plist.erb +0 -38
  373. data/ext/redhat/fileserver.conf +0 -41
  374. data/ext/redhat/logrotate +0 -21
  375. data/ext/redhat/puppet.spec.erb +0 -841
  376. data/ext/redhat/server.init +0 -128
  377. data/ext/redhat/server.sysconfig +0 -13
  378. data/ext/solaris/pkginfo +0 -6
  379. data/ext/solaris/smf/puppetd.xml +0 -77
  380. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  381. data/ext/solaris/smf/svc-puppetd +0 -71
  382. data/ext/solaris/smf/svc-puppetmasterd +0 -67
  383. data/ext/suse/puppet.spec +0 -310
  384. data/ext/suse/server.init +0 -173
  385. data/ext/yaml_nodes.rb +0 -105
  386. 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
@@ -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_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
@@ -91,20 +91,20 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
91
91
  end
92
92
 
93
93
  def best_version(should_range)
94
- available_versions = SortedSet.new
94
+ versions = []
95
95
 
96
96
  output = aptcache :madison, @resource[:name]
97
97
  output.each_line do |line|
98
98
  is = line.split('|')[1].strip
99
99
  begin
100
100
  is_version = DebianVersion.parse(is)
101
- available_versions << is_version if should_range.include?(is_version)
101
+ versions << is_version if should_range.include?(is_version)
102
102
  rescue DebianVersion::ValidationFailure
103
103
  Puppet.debug("Cannot parse #{is} as a debian version")
104
104
  end
105
105
  end
106
106
 
107
- return available_versions.to_a.last unless available_versions.empty?
107
+ return versions.sort.last if versions.any?
108
108
 
109
109
  Puppet.debug("No available version for package #{@resource[:name]} is included in range #{should_range}")
110
110
  should_range
@@ -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)