puppet 5.4.0-x86-mingw32 → 5.5.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (441) hide show
  1. data/Gemfile +3 -3
  2. data/MAINTAINERS +0 -19
  3. data/README.md +5 -5
  4. data/Rakefile +26 -0
  5. data/conf/auth.conf +5 -0
  6. data/ext/project_data.yaml +1 -0
  7. data/ext/regexp_nodes/regexp_nodes.rb +3 -4
  8. data/lib/puppet/application/apply.rb +1 -1
  9. data/lib/puppet/application/cert.rb +3 -1
  10. data/lib/puppet/application/device.rb +100 -13
  11. data/lib/puppet/application/facts.rb +5 -0
  12. data/lib/puppet/application/lookup.rb +12 -2
  13. data/lib/puppet/configurer.rb +37 -17
  14. data/lib/puppet/confine.rb +4 -1
  15. data/lib/puppet/datatypes.rb +1 -1
  16. data/lib/puppet/environments.rb +1 -1
  17. data/lib/puppet/error.rb +6 -3
  18. data/lib/puppet/external/dot.rb +0 -7
  19. data/lib/puppet/external/nagios/parser.rb +1 -1
  20. data/lib/puppet/face/config.rb +92 -10
  21. data/lib/puppet/face/epp.rb +31 -6
  22. data/lib/puppet/face/facts.rb +49 -0
  23. data/lib/puppet/face/help.rb +33 -35
  24. data/lib/puppet/face/help/action.erb +1 -1
  25. data/lib/puppet/face/help/face.erb +1 -1
  26. data/lib/puppet/face/man.rb +55 -12
  27. data/lib/puppet/face/parser.rb +30 -3
  28. data/lib/puppet/file_bucket/file.rb +0 -2
  29. data/lib/puppet/file_serving/base.rb +10 -10
  30. data/lib/puppet/forge.rb +3 -3
  31. data/lib/puppet/forge/errors.rb +3 -3
  32. data/lib/puppet/functions.rb +1 -3
  33. data/lib/puppet/functions/alert.rb +1 -1
  34. data/lib/puppet/functions/all.rb +6 -6
  35. data/lib/puppet/functions/annotate.rb +10 -10
  36. data/lib/puppet/functions/any.rb +6 -6
  37. data/lib/puppet/functions/assert_type.rb +4 -4
  38. data/lib/puppet/functions/binary_file.rb +14 -2
  39. data/lib/puppet/functions/break.rb +31 -2
  40. data/lib/puppet/functions/call.rb +4 -4
  41. data/lib/puppet/functions/contain.rb +19 -3
  42. data/lib/puppet/functions/convert_to.rb +6 -5
  43. data/lib/puppet/functions/crit.rb +1 -1
  44. data/lib/puppet/functions/debug.rb +1 -1
  45. data/lib/puppet/functions/defined.rb +11 -9
  46. data/lib/puppet/functions/dig.rb +26 -2
  47. data/lib/puppet/functions/each.rb +8 -8
  48. data/lib/puppet/functions/emerg.rb +1 -1
  49. data/lib/puppet/functions/empty.rb +79 -0
  50. data/lib/puppet/functions/err.rb +1 -1
  51. data/lib/puppet/functions/eyaml_lookup_key.rb +3 -1
  52. data/lib/puppet/functions/filter.rb +7 -7
  53. data/lib/puppet/functions/find_file.rb +15 -1
  54. data/lib/puppet/functions/flatten.rb +64 -0
  55. data/lib/puppet/functions/hiera.rb +6 -6
  56. data/lib/puppet/functions/hiera_array.rb +6 -6
  57. data/lib/puppet/functions/hiera_hash.rb +6 -6
  58. data/lib/puppet/functions/hiera_include.rb +8 -8
  59. data/lib/puppet/functions/include.rb +28 -2
  60. data/lib/puppet/functions/info.rb +1 -1
  61. data/lib/puppet/functions/inline_epp.rb +2 -2
  62. data/lib/puppet/functions/join.rb +56 -0
  63. data/lib/puppet/functions/json_data.rb +2 -2
  64. data/lib/puppet/functions/keys.rb +25 -0
  65. data/lib/puppet/functions/length.rb +44 -0
  66. data/lib/puppet/functions/lest.rb +39 -1
  67. data/lib/puppet/functions/lookup.rb +2 -1
  68. data/lib/puppet/functions/map.rb +10 -9
  69. data/lib/puppet/functions/match.rb +6 -6
  70. data/lib/puppet/functions/new.rb +995 -2
  71. data/lib/puppet/functions/next.rb +1 -1
  72. data/lib/puppet/functions/notice.rb +1 -1
  73. data/lib/puppet/functions/reduce.rb +6 -6
  74. data/lib/puppet/functions/regsubst.rb +9 -3
  75. data/lib/puppet/functions/require.rb +36 -2
  76. data/lib/puppet/functions/return.rb +1 -1
  77. data/lib/puppet/functions/reverse_each.rb +71 -2
  78. data/lib/puppet/functions/slice.rb +23 -9
  79. data/lib/puppet/functions/split.rb +12 -10
  80. data/lib/puppet/functions/step.rb +73 -1
  81. data/lib/puppet/functions/strftime.rb +176 -2
  82. data/lib/puppet/functions/then.rb +65 -2
  83. data/lib/puppet/functions/tree_each.rb +19 -19
  84. data/lib/puppet/functions/type.rb +42 -1
  85. data/lib/puppet/functions/unique.rb +13 -13
  86. data/lib/puppet/functions/unwrap.rb +8 -4
  87. data/lib/puppet/functions/values.rb +25 -0
  88. data/lib/puppet/functions/versioncmp.rb +1 -1
  89. data/lib/puppet/functions/warning.rb +1 -1
  90. data/lib/puppet/functions/with.rb +6 -4
  91. data/lib/puppet/functions/yaml_data.rb +3 -1
  92. data/lib/puppet/indirector/certificate_status/file.rb +1 -1
  93. data/lib/puppet/indirector/facts/facter.rb +1 -3
  94. data/lib/puppet/indirector/facts/rest.rb +21 -0
  95. data/lib/puppet/indirector/facts/yaml.rb +0 -4
  96. data/lib/puppet/indirector/rest.rb +2 -2
  97. data/lib/puppet/module.rb +3 -3
  98. data/lib/puppet/module/task.rb +2 -3
  99. data/lib/puppet/module_tool/applications/application.rb +4 -4
  100. data/lib/puppet/module_tool/applications/builder.rb +2 -2
  101. data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
  102. data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
  103. data/lib/puppet/module_tool/metadata.rb +3 -3
  104. data/lib/puppet/network/authconfig.rb +1 -1
  105. data/lib/puppet/network/format_support.rb +1 -1
  106. data/lib/puppet/network/formats.rb +5 -7
  107. data/lib/puppet/network/http/api/indirected_routes.rb +1 -0
  108. data/lib/puppet/network/http/api/master/v3/environment.rb +2 -2
  109. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
  110. data/lib/puppet/network/http/error.rb +3 -3
  111. data/lib/puppet/network/resolver.rb +1 -2
  112. data/lib/puppet/parser/compiler.rb +12 -5
  113. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
  114. data/lib/puppet/parser/functions/fqdn_rand.rb +15 -4
  115. data/lib/puppet/parser/functions/new.rb +31 -46
  116. data/lib/puppet/parser/parser_factory.rb +1 -1
  117. data/lib/puppet/parser/resource.rb +1 -1
  118. data/lib/puppet/parser/type_loader.rb +11 -11
  119. data/lib/puppet/pops/evaluator/closure.rb +1 -1
  120. data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
  121. data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
  122. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -2
  123. data/lib/puppet/pops/evaluator/runtime3_support.rb +5 -2
  124. data/lib/puppet/pops/functions/dispatch.rb +1 -1
  125. data/lib/puppet/pops/issue_reporter.rb +18 -1
  126. data/lib/puppet/pops/issues.rb +6 -3
  127. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -2
  128. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
  129. data/lib/puppet/pops/loader/task_instantiator.rb +5 -5
  130. data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -1
  131. data/lib/puppet/pops/loaders.rb +18 -7
  132. data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
  133. data/lib/puppet/pops/lookup/lookup_adapter.rb +55 -6
  134. data/lib/puppet/pops/model/factory.rb +6 -3
  135. data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
  136. data/lib/puppet/pops/model/pn_transformer.rb +400 -0
  137. data/lib/puppet/pops/parser/egrammar.ra +1 -1
  138. data/lib/puppet/pops/parser/eparser.rb +1 -1
  139. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  140. data/lib/puppet/pops/parser/lexer_support.rb +3 -2
  141. data/lib/puppet/pops/parser/locator.rb +0 -2
  142. data/lib/puppet/pops/parser/pn_parser.rb +316 -0
  143. data/lib/puppet/pops/pcore.rb +17 -17
  144. data/lib/puppet/pops/pn.rb +236 -0
  145. data/lib/puppet/pops/serialization/json.rb +7 -7
  146. data/lib/puppet/pops/types/class_loader.rb +6 -3
  147. data/lib/puppet/pops/types/implementation_registry.rb +28 -35
  148. data/lib/puppet/pops/types/p_object_type.rb +3 -3
  149. data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
  150. data/lib/puppet/pops/types/p_type_set_type.rb +24 -1
  151. data/lib/puppet/pops/types/ruby_generator.rb +3 -4
  152. data/lib/puppet/pops/types/type_calculator.rb +1 -1
  153. data/lib/puppet/pops/types/type_factory.rb +0 -4
  154. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  155. data/lib/puppet/pops/types/type_parser.rb +14 -7
  156. data/lib/puppet/pops/types/types.rb +1 -1
  157. data/lib/puppet/pops/utils.rb +2 -2
  158. data/lib/puppet/pops/validation/checker4_0.rb +6 -2
  159. data/lib/puppet/provider/group/groupadd.rb +3 -1
  160. data/lib/puppet/provider/group/windows_adsi.rb +4 -7
  161. data/lib/puppet/provider/nameservice.rb +3 -3
  162. data/lib/puppet/provider/package/pacman.rb +4 -4
  163. data/lib/puppet/provider/package/pip.rb +3 -3
  164. data/lib/puppet/provider/package/pkgdmg.rb +3 -3
  165. data/lib/puppet/provider/package/pkgutil.rb +2 -2
  166. data/lib/puppet/provider/package/portage.rb +9 -9
  167. data/lib/puppet/provider/package/zypper.rb +2 -2
  168. data/lib/puppet/provider/service/base.rb +1 -1
  169. data/lib/puppet/provider/service/smf.rb +3 -2
  170. data/lib/puppet/provider/service/systemd.rb +1 -1
  171. data/lib/puppet/provider/user/useradd.rb +6 -2
  172. data/lib/puppet/provider/user/windows_adsi.rb +1 -1
  173. data/lib/puppet/provider/yumrepo/inifile.rb +20 -9
  174. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  175. data/lib/puppet/reference/configuration.rb +2 -0
  176. data/lib/puppet/reference/type.rb +11 -11
  177. data/lib/puppet/resource.rb +1 -1
  178. data/lib/puppet/resource/capability_finder.rb +5 -5
  179. data/lib/puppet/resource/catalog.rb +6 -3
  180. data/lib/puppet/resource/status.rb +9 -2
  181. data/lib/puppet/resource/type.rb +1 -1
  182. data/lib/puppet/settings.rb +31 -19
  183. data/lib/puppet/settings/base_setting.rb +5 -0
  184. data/lib/puppet/settings/config_file.rb +1 -1
  185. data/lib/puppet/settings/ttl_setting.rb +5 -0
  186. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  187. data/lib/puppet/ssl/certificate_request.rb +0 -2
  188. data/lib/puppet/syntax_checkers/json.rb +1 -1
  189. data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
  190. data/lib/puppet/transaction/event.rb +1 -1
  191. data/lib/puppet/transaction/report.rb +18 -12
  192. data/lib/puppet/type.rb +9 -13
  193. data/lib/puppet/type/augeas.rb +2 -2
  194. data/lib/puppet/type/cron.rb +11 -6
  195. data/lib/puppet/type/exec.rb +1 -1
  196. data/lib/puppet/type/file.rb +4 -5
  197. data/lib/puppet/type/host.rb +1 -1
  198. data/lib/puppet/type/k5login.rb +30 -54
  199. data/lib/puppet/type/package.rb +3 -3
  200. data/lib/puppet/type/schedule.rb +12 -12
  201. data/lib/puppet/type/scheduled_task.rb +2 -2
  202. data/lib/puppet/type/ssh_authorized_key.rb +5 -5
  203. data/lib/puppet/type/sshkey.rb +2 -2
  204. data/lib/puppet/type/tidy.rb +1 -1
  205. data/lib/puppet/type/user.rb +1 -1
  206. data/lib/puppet/type/yumrepo.rb +26 -5
  207. data/lib/puppet/util.rb +0 -4
  208. data/lib/puppet/util/backups.rb +1 -1
  209. data/lib/puppet/util/inifile.rb +3 -4
  210. data/lib/puppet/util/json.rb +68 -0
  211. data/lib/puppet/util/json_lockfile.rb +3 -3
  212. data/lib/puppet/util/log.rb +2 -5
  213. data/lib/puppet/util/log/destinations.rb +2 -2
  214. data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
  215. data/lib/puppet/util/plist.rb +1 -1
  216. data/lib/puppet/util/reference.rb +1 -8
  217. data/lib/puppet/util/tagging.rb +1 -1
  218. data/lib/puppet/util/warnings.rb +0 -2
  219. data/lib/puppet/util/windows/adsi.rb +15 -18
  220. data/lib/puppet/util/windows/com.rb +2 -1
  221. data/lib/puppet/util/windows/file.rb +2 -2
  222. data/lib/puppet/util/windows/principal.rb +7 -6
  223. data/lib/puppet/util/windows/sid.rb +60 -7
  224. data/lib/puppet/util/windows/taskscheduler.rb +0 -9
  225. data/lib/puppet/version.rb +1 -1
  226. data/lib/puppet_pal.rb +53 -48
  227. data/locales/ja/puppet.po +1357 -912
  228. data/locales/puppet.pot +549 -466
  229. data/man/man5/puppet.conf.5 +103 -20
  230. data/man/man8/puppet-agent.8 +6 -2
  231. data/man/man8/puppet-apply.8 +2 -2
  232. data/man/man8/puppet-ca.8 +1 -1
  233. data/man/man8/puppet-catalog.8 +1 -1
  234. data/man/man8/puppet-cert.8 +1 -1
  235. data/man/man8/puppet-certificate.8 +1 -1
  236. data/man/man8/puppet-certificate_request.8 +1 -1
  237. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  238. data/man/man8/puppet-config.8 +35 -1
  239. data/man/man8/puppet-describe.8 +1 -1
  240. data/man/man8/puppet-device.8 +33 -11
  241. data/man/man8/puppet-doc.8 +1 -1
  242. data/man/man8/puppet-epp.8 +34 -12
  243. data/man/man8/puppet-facts.8 +50 -1
  244. data/man/man8/puppet-filebucket.8 +38 -11
  245. data/man/man8/puppet-generate.8 +1 -1
  246. data/man/man8/puppet-help.8 +1 -1
  247. data/man/man8/puppet-key.8 +1 -1
  248. data/man/man8/puppet-lookup.8 +1 -1
  249. data/man/man8/puppet-man.8 +10 -4
  250. data/man/man8/puppet-master.8 +1 -1
  251. data/man/man8/puppet-module.8 +15 -6
  252. data/man/man8/puppet-node.8 +1 -1
  253. data/man/man8/puppet-parser.8 +31 -8
  254. data/man/man8/puppet-plugin.8 +1 -1
  255. data/man/man8/puppet-report.8 +1 -1
  256. data/man/man8/puppet-resource.8 +1 -1
  257. data/man/man8/puppet-script.8 +67 -0
  258. data/man/man8/puppet-status.8 +1 -1
  259. data/man/man8/puppet.8 +3 -3
  260. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
  261. data/spec/integration/application/apply_spec.rb +15 -15
  262. data/spec/integration/application/lookup_spec.rb +21 -0
  263. data/spec/integration/faces/config_spec.rb +16 -4
  264. data/spec/integration/network/http/api/indirected_routes_spec.rb +5 -5
  265. data/spec/integration/parser/catalog_spec.rb +1 -1
  266. data/spec/integration/parser/collection_spec.rb +2 -2
  267. data/spec/integration/parser/compiler_spec.rb +17 -18
  268. data/spec/integration/parser/pcore_resource_spec.rb +2 -2
  269. data/spec/integration/parser/scope_spec.rb +2 -2
  270. data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
  271. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  272. data/spec/integration/ssl/key_spec.rb +1 -1
  273. data/spec/integration/transaction/report_spec.rb +3 -3
  274. data/spec/integration/transaction_spec.rb +0 -1
  275. data/spec/integration/type/file_spec.rb +10 -11
  276. data/spec/integration/type_spec.rb +1 -2
  277. data/spec/integration/util/windows/adsi_spec.rb +86 -1
  278. data/spec/integration/util/windows/principal_spec.rb +11 -2
  279. data/spec/integration/util/windows/security_spec.rb +2 -2
  280. data/spec/lib/matchers/json.rb +4 -4
  281. data/spec/lib/puppet_spec/language.rb +34 -35
  282. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  283. data/spec/shared_behaviours/file_server_terminus.rb +0 -2
  284. data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
  285. data/spec/spec_helper.rb +1 -1
  286. data/spec/unit/application/cert_spec.rb +21 -9
  287. data/spec/unit/application/device_spec.rb +96 -2
  288. data/spec/unit/application/face_base_spec.rb +2 -2
  289. data/spec/unit/application/lookup_spec.rb +0 -1
  290. data/spec/unit/configurer_spec.rb +14 -0
  291. data/spec/unit/confine_spec.rb +16 -0
  292. data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
  293. data/spec/unit/datatypes_spec.rb +49 -0
  294. data/spec/unit/environments_spec.rb +7 -0
  295. data/spec/unit/face/config_spec.rb +116 -12
  296. data/spec/unit/face/epp_face_spec.rb +53 -2
  297. data/spec/unit/face/facts_spec.rb +53 -0
  298. data/spec/unit/face/help_spec.rb +62 -69
  299. data/spec/unit/face/man_spec.rb +26 -0
  300. data/spec/unit/face/module/list_spec.rb +0 -1
  301. data/spec/unit/face/parser_spec.rb +78 -0
  302. data/spec/unit/file_bucket/dipper_spec.rb +0 -4
  303. data/spec/unit/file_serving/content_spec.rb +0 -1
  304. data/spec/unit/file_serving/fileset_spec.rb +0 -1
  305. data/spec/unit/file_serving/metadata_spec.rb +0 -1
  306. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
  307. data/spec/unit/forge_spec.rb +1 -2
  308. data/spec/unit/functions/assert_type_spec.rb +1 -1
  309. data/spec/unit/functions/empty_spec.rb +77 -0
  310. data/spec/unit/functions/epp_spec.rb +1 -1
  311. data/spec/unit/functions/flatten_spec.rb +31 -0
  312. data/spec/unit/functions/include_spec.rb +2 -2
  313. data/spec/unit/functions/inline_epp_spec.rb +1 -1
  314. data/spec/unit/functions/join_spec.rb +33 -0
  315. data/spec/unit/functions/keys_spec.rb +31 -0
  316. data/spec/unit/functions/length_spec.rb +50 -0
  317. data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
  318. data/spec/unit/functions/lookup_spec.rb +52 -0
  319. data/spec/unit/functions/shared.rb +1 -1
  320. data/spec/unit/functions/values_spec.rb +30 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +30 -32
  323. data/spec/unit/graph/title_hash_prioritizer_spec.rb +2 -1
  324. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -15
  325. data/spec/unit/indirector/facts/rest_spec.rb +45 -0
  326. data/spec/unit/indirector/facts/yaml_spec.rb +6 -0
  327. data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
  328. data/spec/unit/indirector/indirection_spec.rb +1 -1
  329. data/spec/unit/indirector/node/ldap_spec.rb +2 -2
  330. data/spec/unit/indirector/request_spec.rb +0 -2
  331. data/spec/unit/indirector/rest_spec.rb +2 -2
  332. data/spec/unit/indirector_spec.rb +0 -1
  333. data/spec/unit/info_service_spec.rb +1 -1
  334. data/spec/unit/interface/action_manager_spec.rb +1 -1
  335. data/spec/unit/interface/action_spec.rb +1 -1
  336. data/spec/unit/module_spec.rb +0 -5
  337. data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
  338. data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
  339. data/spec/unit/network/formats_spec.rb +5 -13
  340. data/spec/unit/network/http/api/indirected_routes_spec.rb +6 -2
  341. data/spec/unit/network/http/connection_spec.rb +1 -1
  342. data/spec/unit/network/http/handler_spec.rb +3 -2
  343. data/spec/unit/node/environment_spec.rb +1 -1
  344. data/spec/unit/node_spec.rb +3 -3
  345. data/spec/unit/parser/compiler_spec.rb +9 -2
  346. data/spec/unit/parser/environment_compiler_spec.rb +8 -8
  347. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  348. data/spec/unit/parser/functions/fail_spec.rb +1 -1
  349. data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
  350. data/spec/unit/parser/functions/realize_spec.rb +1 -1
  351. data/spec/unit/parser/resource_spec.rb +0 -1
  352. data/spec/unit/parser/scope_spec.rb +3 -3
  353. data/spec/unit/parser/type_loader_spec.rb +1 -1
  354. data/spec/unit/pops/adaptable_spec.rb +0 -1
  355. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -3
  356. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -4
  357. data/spec/unit/pops/factory_rspec_helper.rb +1 -1
  358. data/spec/unit/pops/factory_spec.rb +5 -5
  359. data/spec/unit/pops/issues_spec.rb +23 -8
  360. data/spec/unit/pops/loaders/loaders_spec.rb +24 -2
  361. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  362. data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
  363. data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
  364. data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
  365. data/spec/unit/pops/parser/lexer2_spec.rb +14 -5
  366. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +9 -9
  367. data/spec/unit/pops/parser/parse_calls_spec.rb +1 -1
  368. data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
  369. data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
  370. data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
  371. data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
  372. data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
  373. data/spec/unit/pops/pn_spec.rb +148 -0
  374. data/spec/unit/pops/types/iterable_spec.rb +1 -1
  375. data/spec/unit/pops/types/p_object_type_spec.rb +5 -5
  376. data/spec/unit/pops/types/p_timespan_type_spec.rb +11 -4
  377. data/spec/unit/pops/types/p_timestamp_type_spec.rb +9 -2
  378. data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
  379. data/spec/unit/pops/types/ruby_generator_spec.rb +3 -8
  380. data/spec/unit/pops/types/string_converter_spec.rb +3 -3
  381. data/spec/unit/pops/types/type_calculator_spec.rb +1 -1
  382. data/spec/unit/pops/validator/validator_spec.rb +3 -1
  383. data/spec/unit/property_spec.rb +2 -2
  384. data/spec/unit/provider/aixobject_spec.rb +1 -1
  385. data/spec/unit/provider/cron/crontab_spec.rb +3 -3
  386. data/spec/unit/provider/exec/posix_spec.rb +6 -6
  387. data/spec/unit/provider/group/groupadd_spec.rb +4 -4
  388. data/spec/unit/provider/group/windows_adsi_spec.rb +79 -22
  389. data/spec/unit/provider/ldap_spec.rb +0 -1
  390. data/spec/unit/provider/nameservice_spec.rb +5 -5
  391. data/spec/unit/provider/package/rpm_spec.rb +3 -4
  392. data/spec/unit/provider/package/yum_spec.rb +6 -2
  393. data/spec/unit/provider/parsedfile_spec.rb +1 -1
  394. data/spec/unit/provider/service/base_spec.rb +2 -4
  395. data/spec/unit/provider/service/init_spec.rb +2 -2
  396. data/spec/unit/provider/service/openrc_spec.rb +2 -2
  397. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  398. data/spec/unit/provider/service/smf_spec.rb +2 -0
  399. data/spec/unit/provider/service/systemd_spec.rb +3 -3
  400. data/spec/unit/provider/service/upstart_spec.rb +7 -7
  401. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -4
  402. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -2
  403. data/spec/unit/provider/user/useradd_spec.rb +15 -9
  404. data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
  405. data/spec/unit/provider/yumrepo/inifile_spec.rb +76 -0
  406. data/spec/unit/puppet_pal_2pec.rb +4 -5
  407. data/spec/unit/resource/catalog_spec.rb +8 -3
  408. data/spec/unit/resource/status_spec.rb +15 -4
  409. data/spec/unit/resource/type_spec.rb +2 -3
  410. data/spec/unit/settings_spec.rb +9 -4
  411. data/spec/unit/ssl/certificate_authority_spec.rb +1 -9
  412. data/spec/unit/ssl/certificate_request_spec.rb +1 -2
  413. data/spec/unit/transaction/report_spec.rb +41 -0
  414. data/spec/unit/transaction_spec.rb +1 -1
  415. data/spec/unit/type/exec_spec.rb +7 -9
  416. data/spec/unit/type/file/selinux_spec.rb +0 -1
  417. data/spec/unit/type/file_spec.rb +4 -3
  418. data/spec/unit/type/k5login_spec.rb +79 -10
  419. data/spec/unit/type/mount_spec.rb +1 -1
  420. data/spec/unit/type/nagios_spec.rb +6 -6
  421. data/spec/unit/type/user_spec.rb +1 -1
  422. data/spec/unit/type/yumrepo_spec.rb +18 -0
  423. data/spec/unit/type/zfs_spec.rb +1 -1
  424. data/spec/unit/type_spec.rb +14 -15
  425. data/spec/unit/util/docs_spec.rb +1 -1
  426. data/spec/unit/util/execution_spec.rb +0 -1
  427. data/spec/unit/util/inifile_spec.rb +35 -4
  428. data/spec/unit/util/log/destinations_spec.rb +2 -2
  429. data/spec/unit/util/log_spec.rb +6 -5
  430. data/spec/unit/util/network_device/cisco/device_spec.rb +2 -2
  431. data/spec/unit/util/plist_spec.rb +3 -3
  432. data/spec/unit/util/selinux_spec.rb +2 -2
  433. data/spec/unit/util/tagging_spec.rb +1 -7
  434. data/spec/unit/util/windows/adsi_spec.rb +31 -27
  435. data/spec/unit/util/windows/sid_spec.rb +86 -15
  436. data/spec/unit/util_spec.rb +2 -2
  437. data/spec/watchr.rb +0 -1
  438. data/tasks/benchmark.rake +37 -0
  439. data/tasks/manpages.rake +1 -1
  440. metadata +83 -11
  441. checksums.yaml +0 -7
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # @example Using `assert_type`
12
12
  #
13
- # ~~~ puppet
13
+ # ```puppet
14
14
  # $raw_username = 'Amy Berry'
15
15
  #
16
16
  # # Assert that $raw_username is a non-empty string and assign it to $valid_username.
@@ -19,7 +19,7 @@
19
19
  # # $valid_username contains "Amy Berry".
20
20
  # # If $raw_username was an empty string or a different data type, the Puppet run would
21
21
  # # fail with an "Expected type does not match actual" error.
22
- # ~~~
22
+ # ```
23
23
  #
24
24
  # You can use an optional lambda to provide enhanced feedback. The lambda takes two
25
25
  # mandatory parameters, in this order:
@@ -29,7 +29,7 @@
29
29
  #
30
30
  # @example Using `assert_type` with a warning and default value
31
31
  #
32
- # ~~~ puppet
32
+ # ```puppet
33
33
  # $raw_username = 'Amy Berry'
34
34
  #
35
35
  # # Assert that $raw_username is a non-empty string and assign it to $valid_username.
@@ -43,7 +43,7 @@
43
43
  # # If $raw_username was an empty string, the Puppet run would set $valid_username to
44
44
  # # "anonymous" and output a warning: "The username should be 'String[1, default]', not
45
45
  # # 'String[0, 0]'. Using 'anonymous'."
46
- # ~~~
46
+ # ```
47
47
  #
48
48
  # For more information about data types, see the
49
49
  # [documentation](https://docs.puppetlabs.com/puppet/latest/reference/lang_data.html).
@@ -1,5 +1,17 @@
1
- # Loads a binary file from a module or file system and returns its contents as a Binary.
2
- # (Documented in 3.x stub)
1
+ # Loads a binary file from a module or file system and returns its contents as a `Binary`.
2
+ # The argument to this function should be a `<MODULE NAME>/<FILE>`
3
+ # reference, which will load `<FILE>` from a module's `files`
4
+ # directory. (For example, the reference `mysql/mysqltuner.pl` will load the
5
+ # file `<MODULES DIRECTORY>/mysql/files/mysqltuner.pl`.)
6
+ #
7
+ # This function also accepts an absolute file path that allows reading
8
+ # binary file content from anywhere on disk.
9
+ #
10
+ # An error is raised if the given file does not exists.
11
+ #
12
+ # To search for the existence of files, use the `find_file()` function.
13
+ #
14
+ # - since 4.8.0
3
15
  #
4
16
  # @since 4.8.0
5
17
  #
@@ -1,6 +1,35 @@
1
- # Make iteration break as if there were no more values to process
1
+ # Breaks an innermost iteration as if it encountered an end of input.
2
+ # This function does not return to the caller.
2
3
  #
3
- # @since 4.7.0
4
+ # The signal produced to stop the iteration bubbles up through
5
+ # the call stack until either terminating the innermost iteration or
6
+ # raising an error if the end of the call stack is reached.
7
+ #
8
+ # The break() function does not accept an argument.
9
+ #
10
+ # @example Using `break`
11
+ #
12
+ # ```puppet
13
+ # $data = [1,2,3]
14
+ # notice $data.map |$x| { if $x == 3 { break() } $x*10 }
15
+ # ```
16
+ #
17
+ # Would notice the value `[10, 20]`
18
+ #
19
+ # @example Using a nested `break`
20
+ #
21
+ # ```puppet
22
+ # function break_if_even($x) {
23
+ # if $x % 2 == 0 { break() }
24
+ # }
25
+ # $data = [1,2,3]
26
+ # notice $data.map |$x| { break_if_even($x); $x*10 }
27
+ #```
28
+ # Would notice the value `[10]`
29
+ #
30
+ # * Also see functions `next` and `return`
31
+ #
32
+ # @since 4.8.0
4
33
  #
5
34
  Puppet::Functions.create_function(:break) do
6
35
  dispatch :break_impl do
@@ -8,20 +8,20 @@
8
8
  #
9
9
  # @example Using the `call` function
10
10
  #
11
- # ~~~ puppet
11
+ # ```puppet
12
12
  # $a = 'notice'
13
13
  # call($a, 'message')
14
- # ~~~
14
+ # ```
15
15
  #
16
16
  # @example Using the `call` function with a lambda
17
17
  #
18
- # ~~~ puppet
18
+ # ```puppet
19
19
  # $a = 'each'
20
20
  # $b = [1,2,3]
21
21
  # call($a, $b) |$item| {
22
22
  # notify { $item: }
23
23
  # }
24
- # ~~~
24
+ # ```
25
25
  #
26
26
  # The `call` function can be used to call either Ruby functions or Puppet language
27
27
  # functions.
@@ -1,6 +1,22 @@
1
- # Called within a class definition, establishes a containment
2
- # relationship with another class
3
- # For documentation, see the 3.x stub
1
+ # Makes one or more classes be contained inside the current class.
2
+ # If any of these classes are undeclared, they will be declared as if
3
+ # there were declared with the `include` function.
4
+ # Accepts a class name, an array of class names, or a comma-separated
5
+ # list of class names.
6
+ #
7
+ # A contained class will not be applied before the containing class is
8
+ # begun, and will be finished before the containing class is finished.
9
+ #
10
+ # You must use the class's full name;
11
+ # relative names are not allowed. In addition to names in string form,
12
+ # you may also directly use `Class` and `Resource` `Type`-values that are produced by
13
+ # evaluating resource and relationship expressions.
14
+ #
15
+ # The function returns an array of references to the classes that were contained thus
16
+ # allowing the function call to `contain` to directly continue.
17
+ #
18
+ # - Since 4.0.0 support for `Class` and `Resource` `Type`-values, absolute names
19
+ # - Since 4.7.0 a value of type `Array[Type[Class[n]]]` is returned with all the contained classes
4
20
  #
5
21
  Puppet::Functions.create_function(:contain, Puppet::Functions::InternalFunction) do
6
22
  dispatch :contain do
@@ -1,4 +1,4 @@
1
- # The `convert_to(value, type)` is a convenience function does the same as `new(type, value)`.
1
+ # The `convert_to(value, type)` is a convenience function that does the same as `new(type, value)`.
2
2
  # The difference in the argument ordering allows it to be used in chained style for
3
3
  # improved readability "left to right".
4
4
  #
@@ -7,14 +7,15 @@
7
7
  #
8
8
  # @example 'convert_to' instead of 'new'
9
9
  #
10
- # ~~~ puppet
11
- # # using new operator - that is "calling the type" with operator ()
10
+ # ```puppet
11
+ # # The harder to read variant:
12
+ # # Using new operator - that is "calling the type" with operator ()
12
13
  # Hash(Array("abc").map |$i,$v| { [$i, $v] })
13
14
  #
15
+ # # The easier to read variant:
14
16
  # # using 'convert_to'
15
17
  # "abc".convert_to(Array).map |$i,$v| { [$i, $v] }.convert_to(Hash)
16
- #
17
- # ~~~
18
+ # ```
18
19
  #
19
20
  # @since 5.4.0
20
21
  #
@@ -1,4 +1,4 @@
1
- # Log a message on the server at level crit.
1
+ # Logs a message on the server at level `crit`.
2
2
  Puppet::Functions.create_function(:crit, Puppet::Functions::InternalFunction) do
3
3
  # @param values The values to log.
4
4
  # @return [Undef]
@@ -1,4 +1,4 @@
1
- # Log a message on the server at level debug.
1
+ # Logs a message on the server at level `debug`.
2
2
  Puppet::Functions.create_function(:debug, Puppet::Functions::InternalFunction) do
3
3
  # @param values The values to log.
4
4
  # @return [Undef]
@@ -4,15 +4,17 @@
4
4
  # being declared or assigned).
5
5
  #
6
6
  # This function takes at least one string argument, which can be a class name, type name,
7
- # resource reference, or variable reference of the form `'$name'`.
7
+ # resource reference, or variable reference of the form `'$name'`. (Note that the `$` sign
8
+ # is included in the string which must be in single quotes to prevent the `$` character
9
+ # to be interpreted as interpolation.
8
10
  #
9
11
  # The `defined` function checks both native and defined types, including types
10
12
  # provided by modules. Types and classes are matched by their names. The function matches
11
13
  # resource declarations by using resource references.
12
14
  #
13
- # **Examples**: Different types of `defined` function matches
15
+ # @example Different types of `defined` function matches
14
16
  #
15
- # ~~~ puppet
17
+ # ```puppet
16
18
  # # Matching resource types
17
19
  # defined("file")
18
20
  # defined("customtype")
@@ -21,19 +23,19 @@
21
23
  # defined("foo")
22
24
  # defined("foo::bar")
23
25
  #
24
- # # Matching variables
26
+ # # Matching variables (note the single quotes)
25
27
  # defined('$name')
26
28
  #
27
29
  # # Matching declared resources
28
30
  # defined(File['/tmp/file'])
29
- # ~~~
31
+ # ```
30
32
  #
31
33
  # Puppet depends on the configuration's evaluation order when checking whether a resource
32
34
  # is declared.
33
35
  #
34
36
  # @example Importance of evaluation order when using `defined`
35
37
  #
36
- # ~~~ puppet
38
+ # ```puppet
37
39
  # # Assign values to $is_defined_before and $is_defined_after using identical `defined`
38
40
  # # functions.
39
41
  #
@@ -46,7 +48,7 @@
46
48
  # $is_defined_after = defined(File['/tmp/file'])
47
49
  #
48
50
  # # $is_defined_before returns false, but $is_defined_after returns true.
49
- # ~~~
51
+ # ```
50
52
  #
51
53
  # This order requirement only refers to evaluation order. The order of resources in the
52
54
  # configuration graph (e.g. with `before` or `require`) does not affect the `defined`
@@ -64,7 +66,7 @@
64
66
  #
65
67
  # @example Matching multiple resources and resources by different types with `defined`
66
68
  #
67
- # ~~~ puppet
69
+ # ```puppet
68
70
  # file { "/tmp/file1":
69
71
  # ensure => file,
70
72
  # }
@@ -90,7 +92,7 @@
90
92
  # defined(Resource['exec','/tmp/file2'])
91
93
  # defined(File['/tmp/file3'])
92
94
  # defined('$tmp_file2')
93
- # ~~~
95
+ # ```
94
96
  #
95
97
  # @since 2.7.0
96
98
  # @since 3.6.0 variable reference and future parser types
@@ -1,5 +1,29 @@
1
- # Digs into a data structure.
2
- # (Documented in 3.x stub)
1
+ # Returns a value for a sequence of given keys/indexes into a structure, such as
2
+ # an array or hash.
3
+ #
4
+ # This function is used to "dig into" a complex data structure by
5
+ # using a sequence of keys / indexes to access a value from which
6
+ # the next key/index is accessed recursively.
7
+ #
8
+ # The first encountered `undef` value or key stops the "dig" and `undef` is returned.
9
+ #
10
+ # An error is raised if an attempt is made to "dig" into
11
+ # something other than an `undef` (which immediately returns `undef`), an `Array` or a `Hash`.
12
+ #
13
+ # @example Using `dig`
14
+ #
15
+ # ```puppet
16
+ # $data = {a => { b => [{x => 10, y => 20}, {x => 100, y => 200}]}}
17
+ # notice $data.dig('a', 'b', 1, 'x')
18
+ # ```
19
+ #
20
+ # Would notice the value 100.
21
+ #
22
+ # This is roughly equivalent to `$data['a']['b'][1]['x']`. However, a standard
23
+ # index will return an error and cause catalog compilation failure if any parent
24
+ # of the final key (`'x'`) is `undef`. The `dig` function will return `undef`,
25
+ # rather than failing catalog compilation. This allows you to check if data
26
+ # exists in a structure without mandating that it always exists.
3
27
  #
4
28
  # @since 4.5.0
5
29
  #
@@ -20,7 +20,7 @@
20
20
  #
21
21
  # @example Using the `each` function with an array and a one-parameter lambda
22
22
  #
23
- # ~~~ puppet
23
+ # ```puppet
24
24
  # # For the array $data, run a lambda that creates a resource for each item.
25
25
  # $data = ["routers", "servers", "workstations"]
26
26
  # $data.each |$item| {
@@ -30,14 +30,14 @@
30
30
  # }
31
31
  # # Puppet creates one resource for each of the three items in $data. Each resource is
32
32
  # # named after the item's value and uses the item's value in a parameter.
33
- # ~~~
33
+ # ```
34
34
  #
35
35
  # When the first argument is a hash, Puppet passes each key and value pair to the lambda
36
36
  # as an array in the form `[key, value]` and returns the original hash.
37
37
  #
38
38
  # @example Using the `each` function with a hash and a one-parameter lambda
39
39
  #
40
- # ~~~ puppet
40
+ # ```puppet
41
41
  # # For the hash $data, run a lambda using each item as a key-value array that creates a
42
42
  # # resource for each item.
43
43
  # $data = {"rtr" => "Router", "svr" => "Server", "wks" => "Workstation"}
@@ -48,7 +48,7 @@
48
48
  # }
49
49
  # # Puppet creates one resource for each of the three items in $data, each named after the
50
50
  # # item's key and containing a parameter using the item's value.
51
- # ~~~
51
+ # ```
52
52
  #
53
53
  # When the first argument is an array and the lambda has two parameters, Puppet passes the
54
54
  # array's indexes (enumerated from 0) in the first parameter and its values in the second
@@ -56,7 +56,7 @@
56
56
  #
57
57
  # @example Using the `each` function with an array and a two-parameter lambda
58
58
  #
59
- # ~~~ puppet
59
+ # ```puppet
60
60
  # # For the array $data, run a lambda using each item's index and value that creates a
61
61
  # # resource for each item.
62
62
  # $data = ["routers", "servers", "workstations"]
@@ -67,14 +67,14 @@
67
67
  # }
68
68
  # # Puppet creates one resource for each of the three items in $data, each named after the
69
69
  # # item's value and containing a parameter using the item's index.
70
- # ~~~
70
+ # ```
71
71
  #
72
72
  # When the first argument is a hash, Puppet passes its keys to the first parameter and its
73
73
  # values to the second parameter.
74
74
  #
75
75
  # @example Using the `each` function with a hash and a two-parameter lambda
76
76
  #
77
- # ~~~ puppet
77
+ # ```puppet
78
78
  # # For the hash $data, run a lambda using each item's key and value to create a resource
79
79
  # # for each item.
80
80
  # $data = {"rtr" => "Router", "svr" => "Server", "wks" => "Workstation"}
@@ -85,7 +85,7 @@
85
85
  # }
86
86
  # # Puppet creates one resource for each of the three items in $data, each named after the
87
87
  # # item's key and containing a parameter using the item's value.
88
- # ~~~
88
+ # ```
89
89
  #
90
90
  # For an example that demonstrates how to create multiple `file` resources using `each`,
91
91
  # see the Puppet
@@ -1,4 +1,4 @@
1
- # Log a message on the server at level emerg.
1
+ # Logs a message on the server at level `emerg`.
2
2
  Puppet::Functions.create_function(:emerg, Puppet::Functions::InternalFunction) do
3
3
  # @param values The values to log.
4
4
  # @return [Undef]
@@ -0,0 +1,79 @@
1
+ # Returns `true` if the given argument is an empty collection of values.
2
+ #
3
+ # This function can answer if one of the following is empty:
4
+ # * `Array`, `Hash` - having zero entries
5
+ # * `String`, `Binary` - having zero length
6
+ #
7
+ # For backwards compatibility with the stdlib function with the same name the
8
+ # following data types are also accepted by the function instead of raising an error.
9
+ # Using these is deprecated and will raise a warning:
10
+ #
11
+ # * `Numeric` - `false` is returned for all `Numeric` values.
12
+ # * `Undef` - `true` is returned for all `Undef` values.
13
+ #
14
+ # @example Using `empty`
15
+ #
16
+ # ```puppet
17
+ # notice([].empty)
18
+ # notice(empty([]))
19
+ # # would both notice 'true'
20
+ # ```
21
+ #
22
+ # @since Puppet 5.5.0 - support for Binary
23
+ #
24
+ Puppet::Functions.create_function(:empty) do
25
+ dispatch :collection_empty do
26
+ param 'Collection', :coll
27
+ end
28
+
29
+ dispatch :string_empty do
30
+ param 'String', :str
31
+ end
32
+
33
+ dispatch :numeric_empty do
34
+ param 'Numeric', :num
35
+ end
36
+
37
+ dispatch :binary_empty do
38
+ param 'Binary', :bin
39
+ end
40
+
41
+ dispatch :undef_empty do
42
+ param 'Undef', :x
43
+ end
44
+
45
+ def collection_empty(coll)
46
+ coll.empty?
47
+ end
48
+
49
+ def string_empty(str)
50
+ str.empty?
51
+ end
52
+
53
+ # For compatibility reasons - return false rather than error on floats and integers
54
+ # (Yes, it is strange)
55
+ #
56
+ def numeric_empty(num)
57
+ deprecation_warning_for('Numeric')
58
+ false
59
+ end
60
+
61
+ def binary_empty(bin)
62
+ bin.length == 0
63
+ end
64
+
65
+ # For compatibility reasons - return true rather than error on undef
66
+ # (Yes, it is strange, but undef was passed as empty string in 3.x API)
67
+ #
68
+ def undef_empty(x)
69
+ deprecation_warning_for('Undef')
70
+ true
71
+ end
72
+
73
+ def deprecation_warning_for(arg_type)
74
+ stacktrace = Puppet::Pops::PuppetStack.stacktrace()
75
+ file, line = stacktrace[0] # defaults to nil
76
+ msg = _("Calling function empty() with %{arg_type} value is deprecated.") % { arg_type: arg_type }
77
+ Puppet.warn_once('deprecations', "empty-from-#{file}-#{line}", msg, file, line)
78
+ end
79
+ end