puppet 5.4.0-x64-mingw32 → 5.5.0-x64-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
@@ -1,5 +1,68 @@
1
- # (Documented in 3.x stub)
2
- # @since 4.5.0
1
+ # Calls a [lambda](https://docs.puppet.com/puppet/latest/reference/lang_lambdas.html)
2
+ # with the given argument unless the argument is `undef`.
3
+ # Returns `undef` if the argument is `undef`, and otherwise the result of giving the
4
+ # argument to the lambda.
5
+ #
6
+ # This is useful to process a sequence of operations where an intermediate
7
+ # result may be `undef` (which makes the entire sequence `undef`).
8
+ # The `then` function is especially useful with the function `dig` which
9
+ # performs in a similar way "digging out" a value in a complex structure.
10
+ #
11
+ # @example Using `dig` and `then`
12
+ #
13
+ # ```puppet
14
+ # $data = {a => { b => [{x => 10, y => 20}, {x => 100, y => 200}]}}
15
+ # notice $data.dig(a, b, 1, x).then |$x| { $x * 2 }
16
+ # ```
17
+ #
18
+ # Would notice the value 200
19
+ #
20
+ # Contrast this with:
21
+ #
22
+ # ```puppet
23
+ # $data = {a => { b => [{x => 10, y => 20}, {not_x => 100, why => 200}]}}
24
+ # notice $data.dig(a, b, 1, x).then |$x| { $x * 2 }
25
+ # ```
26
+ #
27
+ # Which would notice `undef` since the last lookup of 'x' results in `undef` which
28
+ # is returned (without calling the lambda given to the `then` function).
29
+ #
30
+ # As a result there is no need for conditional logic or a temporary (non local)
31
+ # variable as the result is now either the wanted value (`x`) multiplied
32
+ # by 2 or `undef`.
33
+ #
34
+ # Calls to `then` can be chained. In the next example, a structure is using an offset based on
35
+ # using 1 as the index to the first element (instead of 0 which is used in the language).
36
+ # We are not sure if user input actually contains an index at all, or if it is
37
+ # outside the range of available names.args.
38
+ #
39
+ # @example Chaining calls to the `then` function
40
+ #
41
+ # ```puppet
42
+ # # Names to choose from
43
+ # $names = ['Ringo', 'Paul', 'George', 'John']
44
+ #
45
+ # # Structure where 'beatle 2' is wanted (but where the number refers
46
+ # # to 'Paul' because input comes from a source using 1 for the first
47
+ # # element).
48
+ #
49
+ # $data = ['singer', { beatle => 2 }]
50
+ # $picked = assert_type(String,
51
+ # # the data we are interested in is the second in the array,
52
+ # # a hash, where we want the value of the key 'beatle'
53
+ # $data.dig(1, 'beatle')
54
+ # # and we want the index in $names before the given index
55
+ # .then |$x| { $names[$x-1] }
56
+ # # so we can construct a string with that beatle's name
57
+ # .then |$x| { "Picked Beatle '${x}'" }
58
+ # )
59
+ # notice $picked
60
+ # ```
61
+ #
62
+ # Would notice "Picked Beatle 'Paul'", and would raise an error if the result
63
+ # was not a String.
64
+ #
65
+ # * Since 4.5.0
3
66
  #
4
67
  Puppet::Functions.create_function(:then) do
5
68
  dispatch :then do
@@ -42,12 +42,12 @@
42
42
  #
43
43
  # @example depth- or breadth-first order
44
44
  #
45
- # ~~~ puppet
45
+ # ```puppet
46
46
  # [1, [2, 3], 4]
47
- # ~~~
48
- #
47
+ # ```
48
+ #
49
49
  # Results in:
50
- #
50
+ #
51
51
  # If containers are skipped:
52
52
  #
53
53
  # * `depth_first` order `1`, `2`, `3`, `4`
@@ -67,33 +67,33 @@
67
67
  #
68
68
  # @example A flattened iteration over a tree excluding Collections
69
69
  #
70
- # ~~~ puppet
70
+ # ```puppet
71
71
  # $data = [1, 2, [3, [4, 5]]]
72
72
  # $data.tree_each({include_containers => false}) |$v| { notice "$v" }
73
- # ~~~
73
+ # ```
74
74
  #
75
75
  # This would call the lambda 5 times with with the following values in sequence: `1`, `2`, `3`, `4`, `5`
76
76
  #
77
77
  # @example A flattened iteration over a tree (including containers by default)
78
78
  #
79
- # ~~~ puppet
79
+ # ```puppet
80
80
  # $data = [1, 2, [3, [4, 5]]]
81
81
  # $data.tree_each |$v| { notice "$v" }
82
- # ~~~
82
+ # ```
83
83
  #
84
84
  # This would call the lambda 7 times with the following values in sequence:
85
85
  # `1`, `2`, `[3, [4, 5]]`, `3`, `[4, 5]`, `4`, `5`
86
86
  #
87
87
  # @example A flattened iteration over a tree (including only non root containers)
88
88
  #
89
- # ~~~ puppet
89
+ # ```puppet
90
90
  # $data = [1, 2, [3, [4, 5]]]
91
91
  # $data.tree_each({include_values => false, include_root => false}) |$v| { notice "$v" }
92
- # ~~~
92
+ # ```
93
93
  #
94
94
  # This would call the lambda 2 times with the following values in sequence:
95
95
  # `[3, [4, 5]]`, `[4, 5]`
96
-
96
+ #
97
97
  # Any Puppet Type system data type can be used to filter what is
98
98
  # considered to be a container, but it must be a narrower type than one of
99
99
  # the default Array, Hash, Object types - for example it is not possible to make a
@@ -101,16 +101,16 @@
101
101
  #
102
102
  # @example Only `Array` as container type
103
103
  #
104
- # ~~~ puppet
104
+ # ```puppet
105
105
  # $data = [1, {a => 'hello', b => [100, 200]}, [3, [4, 5]]]
106
106
  # $data.tree_each({container_type => Array, include_containers => false} |$v| { notice "$v" }
107
- # ~~~
108
- #
107
+ # ```
108
+ #
109
109
  # Would call the lambda 5 times with `1`, `{a => 'hello', b => [100, 200]}`, `3`, `4`, `5`
110
110
  #
111
111
  # **Chaining** When calling `tree_each` without a lambda the function produces an `Iterator`
112
112
  # that can be chained into another iteration. Thus it is easy to use one of:
113
- #
113
+ #
114
114
  # * `reverse_each` - get "leaves before root"
115
115
  # * `filter` - prune the tree
116
116
  # * `map` - transform each element
@@ -118,9 +118,9 @@
118
118
  #
119
119
  # Note than when chaining, the value passed on is a `Tuple` with `[path, value]`.
120
120
  #
121
- # @example pruning a tree
122
- #
123
- # ~~~ puppet
121
+ # @example Pruning a tree
122
+ #
123
+ # ```puppet
124
124
  # # A tree of some complexity (here very simple for readability)
125
125
  # $tree = [
126
126
  # { name => 'user1', status => 'inactive', id => '10'},
@@ -130,7 +130,7 @@
130
130
  # $value = $v[1]
131
131
  # $value =~ Hash and $value[status] == active
132
132
  # }
133
- # ~~~
133
+ # ```
134
134
  #
135
135
  # Would notice `[[[1], {name => user2, status => active, id => 20}]]`, which can then be processed
136
136
  # further as each filtered result appears as a `Tuple` with `[path, value]`.
@@ -1,4 +1,45 @@
1
- # (Documentation in 3.x stub)
1
+ # Returns the data type of a given value with a given degree of generality.
2
+ #
3
+ # ```puppet
4
+ # type InferenceFidelity = Enum[generalized, reduced, detailed]
5
+ #
6
+ # function type(Any $value, InferenceFidelity $fidelity = 'detailed') # returns Type
7
+ # ```
8
+ #
9
+ # @example Using `type`
10
+ #
11
+ # ``` puppet
12
+ # notice type(42) =~ Type[Integer]
13
+ # ```
14
+ #
15
+ # Would notice `true`.
16
+ #
17
+ # By default, the best possible inference is made where all details are retained.
18
+ # This is good when the type is used for further type calculations but is overwhelmingly
19
+ # rich in information if it is used in a error message.
20
+ #
21
+ # The optional argument `$fidelity` may be given as (from lowest to highest fidelity):
22
+ #
23
+ # * `generalized` - reduces to common type and drops size constraints
24
+ # * `reduced` - reduces to common type in collections
25
+ # * `detailed` - (default) all details about inferred types is retained
26
+ #
27
+ # @example Using `type()` with different inference fidelity:
28
+ #
29
+ # ``` puppet
30
+ # notice type([3.14, 42], 'generalized')
31
+ # notice type([3.14, 42], 'reduced'')
32
+ # notice type([3.14, 42], 'detailed')
33
+ # notice type([3.14, 42])
34
+ # ```
35
+ #
36
+ # Would notice the four values:
37
+ #
38
+ # 1. 'Array[Numeric]'
39
+ # 2. 'Array[Numeric, 2, 2]'
40
+ # 3. 'Tuple[Float[3.14], Integer[42,42]]]'
41
+ # 4. 'Tuple[Float[3.14], Integer[42,42]]]'
42
+ #
2
43
  # @since 4.4.0
3
44
  #
4
45
  Puppet::Functions.create_function(:type) do
@@ -1,4 +1,4 @@
1
- # The `unique` function returns a unique set of values from an `Iterable` argument.
1
+ # Produces a unique set of values from an `Iterable` argument.
2
2
  #
3
3
  # * If the argument is a `String`, the unique set of characters are returned as a new `String`.
4
4
  # * If the argument is a `Hash`, the resulting hash associates a set of keys with a set of unique values.
@@ -11,21 +11,21 @@
11
11
  #
12
12
  # @example Using unique with a String
13
13
  #
14
- # ~~~puppet
14
+ # ```puppet
15
15
  # # will produce 'abc'
16
16
  # "abcaabb".unique
17
- # ~~~
17
+ # ```
18
18
  #
19
19
  # @example Using unique with an Array
20
20
  #
21
- # ~~~puppet
21
+ # ```puppet
22
22
  # # will produce ['a', 'b', 'c']
23
23
  # ['a', 'b', 'c', 'a', 'a', 'b'].unique
24
- # ~~~
24
+ # ```
25
25
  #
26
26
  # @example Using unique with a Hash
27
27
  #
28
- # ~~~puppet
28
+ # ```puppet
29
29
  # # will produce { ['a', 'b'] => [10], ['c'] => [20]}
30
30
  # {'a' => 10, 'b' => 10, 'c' => 20}.unique
31
31
  #
@@ -34,18 +34,18 @@
34
34
  #
35
35
  # # will produce { 'b' => 10, 'c' => 20 } (use last key with first value)
36
36
  # Hash.new({'a' => 10, 'b' => 10, 'c' => 20}.unique.map |$k, $v| { [ $k[-1] , $v[0]] })
37
- # ~~~
37
+ # ```
38
38
  #
39
39
  # @example Using unique with an Iterable
40
40
  #
41
- # ~~~
41
+ # ```
42
42
  # # will produce [3, 2, 1]
43
43
  # [1,2,2,3,3].reverse_each.unique
44
- # ~~~
44
+ # ```
45
45
  #
46
46
  # @example Using unique with a lambda
47
47
  #
48
- # ~~~puppet
48
+ # ```puppet
49
49
  # # will produce [['sam', 'smith'], ['sue', 'smith']]
50
50
  # [['sam', 'smith'], ['sam', 'brown'], ['sue', 'smith']].unique |$x| { $x[0] }
51
51
  #
@@ -57,7 +57,7 @@
57
57
  #
58
58
  # # will produce {[a] => [10], [b, c, d, e] => [11, 12, 100]}
59
59
  # {a => 10, b => 11, c => 12, d => 100, e => 11}.unique |$v| { if $v > 10 { big } else { $v } }
60
- # ~~~
60
+ # ```
61
61
  #
62
62
  # Note that for `Hash` the result is slightly different than for the other data types. For those the result contains the
63
63
  # *first-found* unique value, but for `Hash` it contains associations from a set of keys to the set of values clustered by the
@@ -70,7 +70,7 @@
70
70
  #
71
71
  # @example turning a string or array into a hash with index keys
72
72
  #
73
- # ~~~puppet
73
+ # ```puppet
74
74
  # # Array ['a', 'b', 'c'] to Hash with index results in
75
75
  # # {0 => 'a', 1 => 'b', 2 => 'c'}
76
76
  # Hash(['a', 'b', 'c'].map |$i, $v| { [$i, $v]})
@@ -79,7 +79,7 @@
79
79
  # # {0 => 'a', 1 => 'b', 2 => 'c'}
80
80
  # Hash(Array("abc").map |$i,$v| { [$i, $v]})
81
81
  # "abc".to(Array).map |$i,$v| { [$i, $v]}.to(Hash)
82
- # ~~~
82
+ # ```
83
83
  #
84
84
  # @since Puppet 5.0.0
85
85
  #
@@ -1,17 +1,21 @@
1
1
  # Unwraps a Sensitive value and returns the wrapped object.
2
2
  #
3
- # ~~~puppet
3
+ # @example Usage of unwrap
4
+ #
5
+ # ```puppet
4
6
  # $plaintext = 'hunter2'
5
7
  # $pw = Sensitive.new($plaintext)
6
8
  # notice("Wrapped object is $pw") #=> Prints "Wrapped object is Sensitive [value redacted]"
7
9
  # $unwrapped = $pw.unwrap
8
10
  # notice("Unwrapped object is $unwrapped") #=> Prints "Unwrapped object is hunter2"
9
- # ~~~
11
+ # ```
10
12
  #
11
13
  # You can optionally pass a block to unwrap in order to limit the scope where the
12
14
  # unwrapped value is visible.
13
15
  #
14
- # ~~~puppet
16
+ # @example Unwrapping with a block of code
17
+ #
18
+ # ```puppet
15
19
  # $pw = Sensitive.new('hunter2')
16
20
  # notice("Wrapped object is $pw") #=> Prints "Wrapped object is Sensitive [value redacted]"
17
21
  # $pw.unwrap |$unwrapped| {
@@ -19,7 +23,7 @@
19
23
  # Sensitive.new($conf)
20
24
  # } #=> Returns a new Sensitive object containing an interpolated config file
21
25
  # # $unwrapped is now out of scope
22
- # ~~~
26
+ # ```
23
27
  #
24
28
  # @since 4.0.0
25
29
  #
@@ -0,0 +1,25 @@
1
+ # Returns the values of a hash as an Array
2
+ #
3
+ # @example Using `values`
4
+ #
5
+ # ```puppet
6
+ # $hsh = {"apples" => 3, "oranges" => 4 }
7
+ # $hsh.values()
8
+ # values($hsh)
9
+ # # both results in the array [3, 4]
10
+ # ```
11
+ #
12
+ # * Note that a hash in the puppet language accepts any data value (including `undef`) unless
13
+ # it is constrained with a `Hash` data type that narrows the allowed data types.
14
+ # * For an empty hash, an empty array is returned.
15
+ # * The order of the values is the same as the order in the hash (typically the order in which they were added).
16
+ #
17
+ Puppet::Functions.create_function(:values) do
18
+ dispatch :values do
19
+ param 'Hash', :hsh
20
+ end
21
+
22
+ def values(hsh)
23
+ hsh.values
24
+ end
25
+ end
@@ -14,7 +14,7 @@ require 'puppet/util/package'
14
14
  # * `0` if the versions are equal
15
15
  # * `-1` if version a is less than version b
16
16
  #
17
- # @example
17
+ # @example Using versioncmp
18
18
  #
19
19
  # if versioncmp('2.6-1', '2.4.5') > 0 {
20
20
  # notice('2.6-1 is > than 2.4.5')
@@ -1,4 +1,4 @@
1
- # Log a message on the server at level notice.
1
+ # Logs a message on the server at level `notice`.
2
2
  Puppet::Functions.create_function(:warning, Puppet::Functions::InternalFunction) do
3
3
  # @param values The values to log.
4
4
  # @return [Undef]
@@ -1,12 +1,14 @@
1
- # Call a [lambda](https://docs.puppet.com/puppet/latest/reference/lang_lambdas.html)
2
- # with the given arguments and return the result. Since a lambda's scope is
1
+ # Calls a [lambda](https://docs.puppet.com/puppet/latest/reference/lang_lambdas.html)
2
+ # with the given arguments and returns the result.
3
+ #
4
+ # Since a lambda's scope is
3
5
  # [local](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html#lambda-scope)
4
6
  # to the lambda, you can use the `with` function to create private blocks of code within a
5
7
  # class using variables whose values cannot be accessed outside of the lambda.
6
8
  #
7
9
  # @example Using `with`
8
10
  #
9
- # ~~~ puppet
11
+ # ```puppet
10
12
  # # Concatenate three strings into a single string formatted as a list.
11
13
  # $fruit = with("apples", "oranges", "bananas") |$x, $y, $z| {
12
14
  # "${x}, ${y}, and ${z}"
@@ -14,7 +16,7 @@
14
16
  # $check_var = $x
15
17
  # # $fruit contains "apples, oranges, and bananas"
16
18
  # # $check_var is undefined, as the value of $x is local to the lambda.
17
- # ~~~
19
+ # ```
18
20
  #
19
21
  # @since 4.0.0
20
22
  #
@@ -25,7 +25,9 @@ Puppet::Functions.create_function(:yaml_data) do
25
25
  if data.is_a?(Hash)
26
26
  Puppet::Pops::Lookup::HieraConfig.symkeys_to_string(data)
27
27
  else
28
- Puppet.warning(_("%{path}: file does not contain a valid yaml hash" % { path: path }))
28
+ msg = _("%{path}: file does not contain a valid yaml hash" % { path: path })
29
+ raise Puppet::DataBinding::LookupError, msg if Puppet[:strict] == :error && data != false
30
+ Puppet.warning(msg)
29
31
  {}
30
32
  end
31
33
  rescue YAML::SyntaxError => ex
@@ -70,7 +70,7 @@ class Puppet::Indirector::CertificateStatus::File < Puppet::Indirector::Code
70
70
  klass.indirection.search(request.key, request.options)
71
71
  end.flatten.collect do |result|
72
72
  result.name
73
- end.uniq.collect &Puppet::SSL::Host.method(:new)
73
+ end.uniq.collect(&Puppet::SSL::Host.method(:new))
74
74
  end
75
75
 
76
76
  def find(request)
@@ -38,8 +38,6 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
38
38
  result
39
39
  end
40
40
 
41
- private
42
-
43
41
  def self.setup_search_paths(request)
44
42
  # Add any per-module fact directories to facter's search path
45
43
  dirs = request.environment.modulepath.collect do |dir|
@@ -64,7 +62,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
64
62
  true
65
63
  end
66
64
 
67
- Facter.search *dirs
65
+ Facter.search(*dirs)
68
66
  end
69
67
 
70
68
  def self.setup_external_search_paths(request)
@@ -0,0 +1,21 @@
1
+ require 'puppet/node/facts'
2
+ require 'puppet/indirector/rest'
3
+
4
+ class Puppet::Node::Facts::Rest < Puppet::Indirector::REST
5
+ desc "Find and save facts about nodes over HTTP via REST."
6
+
7
+ def save(request)
8
+ raise ArgumentError, _("PUT does not accept options") unless request.options.empty?
9
+
10
+ response = do_request(request) do |req|
11
+ http_put(req, IndirectedRoutes.request_to_uri(req), req.instance.render, headers.merge({ "Content-Type" => req.instance.mime }))
12
+ end
13
+
14
+ if is_http_200?(response)
15
+ content_type, body = parse_response(response)
16
+ deserialize_save(content_type, body)
17
+ else
18
+ raise convert_to_http_error(response)
19
+ end
20
+ end
21
+ end