puppet 6.0.5-x64-mingw32 → 8.8.1-x64-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2449) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +11 -0
  3. data/CODE_OF_CONDUCT.md +70 -0
  4. data/Gemfile +31 -21
  5. data/Gemfile.lock +232 -105
  6. data/Guardfile.example +76 -0
  7. data/LICENSE +189 -4
  8. data/README.md +24 -32
  9. data/Rakefile +47 -59
  10. data/bin/puppet +1 -0
  11. data/conf/fileserver.conf +5 -10
  12. data/examples/enc/regexp_nodes/regexp_nodes.rb +270 -0
  13. data/examples/hiera/README.md +68 -57
  14. data/examples/hiera/data/common.yaml +12 -0
  15. data/examples/hiera/data/dc1.yaml +6 -0
  16. data/examples/hiera/hiera.yaml +15 -0
  17. data/examples/hiera/modules/ntp/data/common.yaml +4 -0
  18. data/examples/hiera/modules/ntp/hiera.yaml +9 -0
  19. data/examples/hiera/modules/ntp/manifests/config.pp +16 -4
  20. data/examples/hiera/modules/ntp/templates/ntp.conf.epp +3 -0
  21. data/examples/hiera/modules/users/manifests/common.pp +7 -2
  22. data/examples/hiera/modules/users/manifests/dc1.pp +7 -2
  23. data/examples/hiera/site.pp +1 -1
  24. data/examples/nagios/check_puppet.rb +123 -0
  25. data/ext/README.md +13 -0
  26. data/ext/build_defaults.yaml +1 -1
  27. data/ext/osx/puppet.plist +2 -0
  28. data/ext/project_data.yaml +0 -55
  29. data/ext/solaris/smf/puppet.xml +2 -0
  30. data/ext/systemd/puppet.service +2 -1
  31. data/ext/windows/service/daemon.rb +85 -53
  32. data/install.rb +54 -72
  33. data/lib/hiera/puppet_function.rb +8 -6
  34. data/lib/hiera/scope.rb +21 -12
  35. data/lib/hiera_puppet.rb +7 -8
  36. data/lib/puppet/agent/disabler.rb +6 -4
  37. data/lib/puppet/agent/locker.rb +4 -11
  38. data/lib/puppet/agent.rb +77 -33
  39. data/lib/puppet/application/agent.rb +348 -290
  40. data/lib/puppet/application/apply.rb +164 -139
  41. data/lib/puppet/application/catalog.rb +3 -1
  42. data/lib/puppet/application/config.rb +3 -1
  43. data/lib/puppet/application/describe.rb +57 -62
  44. data/lib/puppet/application/device.rb +242 -205
  45. data/lib/puppet/application/doc.rb +66 -67
  46. data/lib/puppet/application/epp.rb +4 -2
  47. data/lib/puppet/application/face_base.rb +41 -32
  48. data/lib/puppet/application/facts.rb +3 -1
  49. data/lib/puppet/application/filebucket.rb +188 -167
  50. data/lib/puppet/application/generate.rb +4 -2
  51. data/lib/puppet/application/help.rb +3 -1
  52. data/lib/puppet/application/indirection_base.rb +3 -1
  53. data/lib/puppet/application/lookup.rb +258 -196
  54. data/lib/puppet/application/module.rb +3 -1
  55. data/lib/puppet/application/node.rb +3 -1
  56. data/lib/puppet/application/parser.rb +4 -2
  57. data/lib/puppet/application/plugin.rb +4 -1
  58. data/lib/puppet/application/report.rb +3 -1
  59. data/lib/puppet/application/resource.rb +131 -104
  60. data/lib/puppet/application/script.rb +85 -82
  61. data/lib/puppet/application/ssl.rb +236 -128
  62. data/lib/puppet/application.rb +217 -135
  63. data/lib/puppet/application_support.rb +15 -7
  64. data/lib/puppet/coercion.rb +5 -3
  65. data/lib/puppet/compilable_resource_type.rb +5 -3
  66. data/lib/puppet/concurrent/lock.rb +15 -0
  67. data/lib/puppet/concurrent/synchronized.rb +15 -0
  68. data/lib/puppet/concurrent/thread_local_singleton.rb +18 -0
  69. data/lib/puppet/concurrent.rb +4 -0
  70. data/lib/puppet/configurer/downloader.rb +46 -22
  71. data/lib/puppet/configurer/fact_handler.rb +20 -19
  72. data/lib/puppet/configurer/plugin_handler.rb +24 -11
  73. data/lib/puppet/configurer.rb +427 -152
  74. data/lib/puppet/confine/any.rb +4 -2
  75. data/lib/puppet/confine/boolean.rb +47 -0
  76. data/lib/puppet/confine/exists.rb +4 -2
  77. data/lib/puppet/confine/false.rb +10 -2
  78. data/lib/puppet/confine/feature.rb +4 -3
  79. data/lib/puppet/confine/true.rb +10 -2
  80. data/lib/puppet/confine/variable.rb +6 -4
  81. data/lib/puppet/confine.rb +8 -5
  82. data/lib/puppet/confine_collection.rb +9 -5
  83. data/lib/puppet/confiner.rb +6 -4
  84. data/lib/puppet/context/trusted_information.rb +57 -11
  85. data/lib/puppet/context.rb +123 -49
  86. data/lib/puppet/daemon.rb +30 -39
  87. data/lib/puppet/data_binding.rb +4 -2
  88. data/lib/puppet/datatypes/error.rb +4 -2
  89. data/lib/puppet/datatypes/impl/error.rb +2 -0
  90. data/lib/puppet/datatypes.rb +12 -7
  91. data/lib/puppet/defaults.rb +584 -267
  92. data/lib/puppet/environments.rb +206 -112
  93. data/lib/puppet/error.rb +41 -16
  94. data/lib/puppet/etc.rb +11 -6
  95. data/lib/puppet/external/dot.rb +65 -75
  96. data/lib/puppet/face/catalog/select.rb +4 -2
  97. data/lib/puppet/face/catalog.rb +25 -4
  98. data/lib/puppet/face/config.rb +88 -87
  99. data/lib/puppet/face/epp.rb +46 -35
  100. data/lib/puppet/face/facts.rb +104 -15
  101. data/lib/puppet/face/generate.rb +8 -3
  102. data/lib/puppet/face/help.rb +61 -36
  103. data/lib/puppet/face/module/changes.rb +6 -4
  104. data/lib/puppet/face/module/install.rb +9 -6
  105. data/lib/puppet/face/module/list.rb +65 -57
  106. data/lib/puppet/face/module/uninstall.rb +3 -1
  107. data/lib/puppet/face/module/upgrade.rb +6 -4
  108. data/lib/puppet/face/module.rb +5 -3
  109. data/lib/puppet/face/node/clean.rb +14 -4
  110. data/lib/puppet/face/node.rb +7 -5
  111. data/lib/puppet/face/parser.rb +64 -25
  112. data/lib/puppet/face/plugin.rb +11 -5
  113. data/lib/puppet/face/report.rb +9 -9
  114. data/lib/puppet/face/resource.rb +3 -1
  115. data/lib/puppet/face.rb +3 -1
  116. data/lib/puppet/facter_impl.rb +96 -0
  117. data/lib/puppet/feature/base.rb +15 -15
  118. data/lib/puppet/feature/bolt.rb +3 -1
  119. data/lib/puppet/feature/cfpropertylist.rb +3 -1
  120. data/lib/puppet/feature/eventlog.rb +3 -1
  121. data/lib/puppet/feature/hiera_eyaml.rb +3 -1
  122. data/lib/puppet/feature/hocon.rb +3 -1
  123. data/lib/puppet/feature/libuser.rb +7 -5
  124. data/lib/puppet/feature/msgpack.rb +3 -1
  125. data/lib/puppet/feature/pe_license.rb +5 -3
  126. data/lib/puppet/feature/pson.rb +6 -0
  127. data/lib/puppet/feature/selinux.rb +3 -1
  128. data/lib/puppet/feature/ssh.rb +4 -2
  129. data/lib/puppet/feature/telnet.rb +6 -6
  130. data/lib/puppet/feature/zlib.rb +4 -2
  131. data/lib/puppet/ffi/posix/constants.rb +16 -0
  132. data/lib/puppet/ffi/posix/functions.rb +25 -0
  133. data/lib/puppet/ffi/posix.rb +12 -0
  134. data/lib/puppet/ffi/windows/api_types.rb +313 -0
  135. data/lib/puppet/ffi/windows/constants.rb +406 -0
  136. data/lib/puppet/ffi/windows/functions.rb +629 -0
  137. data/lib/puppet/ffi/windows/structs.rb +339 -0
  138. data/lib/puppet/ffi/windows.rb +14 -0
  139. data/lib/puppet/file_bucket/dipper.rb +27 -17
  140. data/lib/puppet/file_bucket/file.rb +11 -9
  141. data/lib/puppet/file_bucket.rb +2 -0
  142. data/lib/puppet/file_serving/base.rb +19 -11
  143. data/lib/puppet/file_serving/configuration/parser.rb +23 -44
  144. data/lib/puppet/file_serving/configuration.rb +24 -23
  145. data/lib/puppet/file_serving/content.rb +5 -3
  146. data/lib/puppet/file_serving/fileset.rb +38 -22
  147. data/lib/puppet/file_serving/http_metadata.rb +24 -9
  148. data/lib/puppet/file_serving/metadata.rb +40 -30
  149. data/lib/puppet/file_serving/mount/file.rb +18 -13
  150. data/lib/puppet/file_serving/mount/locales.rb +8 -8
  151. data/lib/puppet/file_serving/mount/modules.rb +8 -3
  152. data/lib/puppet/file_serving/mount/pluginfacts.rb +8 -8
  153. data/lib/puppet/file_serving/mount/plugins.rb +8 -8
  154. data/lib/puppet/file_serving/mount/scripts.rb +27 -0
  155. data/lib/puppet/file_serving/mount/tasks.rb +8 -3
  156. data/lib/puppet/file_serving/mount.rb +9 -7
  157. data/lib/puppet/file_serving/terminus_helper.rb +4 -2
  158. data/lib/puppet/file_serving/terminus_selector.rb +10 -9
  159. data/lib/puppet/file_serving.rb +2 -0
  160. data/lib/puppet/file_system/file_impl.rb +50 -15
  161. data/lib/puppet/file_system/jruby.rb +25 -0
  162. data/lib/puppet/file_system/memory_file.rb +18 -2
  163. data/lib/puppet/file_system/memory_impl.rb +18 -1
  164. data/lib/puppet/file_system/path_pattern.rb +14 -17
  165. data/lib/puppet/file_system/posix.rb +11 -5
  166. data/lib/puppet/file_system/uniquefile.rb +41 -41
  167. data/lib/puppet/file_system/windows.rb +113 -19
  168. data/lib/puppet/file_system.rb +42 -25
  169. data/lib/puppet/forge/cache.rb +7 -6
  170. data/lib/puppet/forge/errors.rb +8 -9
  171. data/lib/puppet/forge/repository.rb +36 -93
  172. data/lib/puppet/forge.rb +53 -40
  173. data/lib/puppet/functions/abs.rb +8 -5
  174. data/lib/puppet/functions/alert.rb +2 -0
  175. data/lib/puppet/functions/all.rb +4 -2
  176. data/lib/puppet/functions/annotate.rb +2 -0
  177. data/lib/puppet/functions/any.rb +3 -1
  178. data/lib/puppet/functions/assert_type.rb +5 -2
  179. data/lib/puppet/functions/binary_file.rb +4 -1
  180. data/lib/puppet/functions/break.rb +4 -2
  181. data/lib/puppet/functions/call.rb +5 -3
  182. data/lib/puppet/functions/camelcase.rb +7 -6
  183. data/lib/puppet/functions/capitalize.rb +7 -6
  184. data/lib/puppet/functions/ceiling.rb +3 -2
  185. data/lib/puppet/functions/chomp.rb +3 -2
  186. data/lib/puppet/functions/chop.rb +3 -2
  187. data/lib/puppet/functions/compare.rb +5 -3
  188. data/lib/puppet/functions/contain.rb +7 -4
  189. data/lib/puppet/functions/convert_to.rb +2 -0
  190. data/lib/puppet/functions/crit.rb +2 -0
  191. data/lib/puppet/functions/debug.rb +2 -0
  192. data/lib/puppet/functions/defined.rb +10 -6
  193. data/lib/puppet/functions/dig.rb +13 -10
  194. data/lib/puppet/functions/downcase.rb +6 -4
  195. data/lib/puppet/functions/each.rb +13 -13
  196. data/lib/puppet/functions/emerg.rb +2 -0
  197. data/lib/puppet/functions/empty.rb +10 -0
  198. data/lib/puppet/functions/epp.rb +7 -5
  199. data/lib/puppet/functions/err.rb +2 -0
  200. data/lib/puppet/functions/eyaml_lookup_key.rb +29 -23
  201. data/lib/puppet/functions/filter.rb +12 -18
  202. data/lib/puppet/functions/find_file.rb +11 -9
  203. data/lib/puppet/functions/find_template.rb +65 -0
  204. data/lib/puppet/functions/flatten.rb +2 -0
  205. data/lib/puppet/functions/floor.rb +3 -2
  206. data/lib/puppet/functions/get.rb +9 -7
  207. data/lib/puppet/functions/getvar.rb +7 -5
  208. data/lib/puppet/functions/group_by.rb +62 -0
  209. data/lib/puppet/functions/hiera.rb +2 -0
  210. data/lib/puppet/functions/hiera_array.rb +2 -0
  211. data/lib/puppet/functions/hiera_hash.rb +2 -0
  212. data/lib/puppet/functions/hiera_include.rb +3 -0
  213. data/lib/puppet/functions/hocon_data.rb +5 -5
  214. data/lib/puppet/functions/import.rb +3 -1
  215. data/lib/puppet/functions/include.rb +5 -2
  216. data/lib/puppet/functions/index.rb +168 -0
  217. data/lib/puppet/functions/info.rb +2 -0
  218. data/lib/puppet/functions/inline_epp.rb +8 -6
  219. data/lib/puppet/functions/join.rb +4 -2
  220. data/lib/puppet/functions/json_data.rb +6 -6
  221. data/lib/puppet/functions/keys.rb +2 -0
  222. data/lib/puppet/functions/length.rb +2 -1
  223. data/lib/puppet/functions/lest.rb +3 -1
  224. data/lib/puppet/functions/lookup.rb +11 -11
  225. data/lib/puppet/functions/lstrip.rb +7 -6
  226. data/lib/puppet/functions/map.rb +9 -8
  227. data/lib/puppet/functions/match.rb +10 -8
  228. data/lib/puppet/functions/max.rb +75 -8
  229. data/lib/puppet/functions/min.rb +75 -8
  230. data/lib/puppet/functions/module_directory.rb +2 -0
  231. data/lib/puppet/functions/new.rb +113 -106
  232. data/lib/puppet/functions/next.rb +20 -1
  233. data/lib/puppet/functions/notice.rb +2 -0
  234. data/lib/puppet/functions/partition.rb +62 -0
  235. data/lib/puppet/functions/reduce.rb +10 -15
  236. data/lib/puppet/functions/regsubst.rb +60 -42
  237. data/lib/puppet/functions/require.rb +12 -8
  238. data/lib/puppet/functions/return.rb +2 -0
  239. data/lib/puppet/functions/reverse_each.rb +3 -1
  240. data/lib/puppet/functions/round.rb +2 -0
  241. data/lib/puppet/functions/rstrip.rb +7 -6
  242. data/lib/puppet/functions/scanf.rb +2 -0
  243. data/lib/puppet/functions/size.rb +2 -2
  244. data/lib/puppet/functions/slice.rb +4 -1
  245. data/lib/puppet/functions/sort.rb +5 -3
  246. data/lib/puppet/functions/split.rb +30 -1
  247. data/lib/puppet/functions/step.rb +3 -1
  248. data/lib/puppet/functions/strftime.rb +6 -3
  249. data/lib/puppet/functions/strip.rb +7 -6
  250. data/lib/puppet/functions/then.rb +3 -0
  251. data/lib/puppet/functions/tree_each.rb +11 -13
  252. data/lib/puppet/functions/type.rb +6 -4
  253. data/lib/puppet/functions/unique.rb +10 -8
  254. data/lib/puppet/functions/unwrap.rb +19 -2
  255. data/lib/puppet/functions/upcase.rb +6 -4
  256. data/lib/puppet/functions/values.rb +2 -0
  257. data/lib/puppet/functions/versioncmp.rb +10 -5
  258. data/lib/puppet/functions/warning.rb +2 -0
  259. data/lib/puppet/functions/with.rb +2 -0
  260. data/lib/puppet/functions/yaml_data.rb +16 -15
  261. data/lib/puppet/functions.rb +59 -64
  262. data/lib/puppet/generate/models/type/property.rb +4 -1
  263. data/lib/puppet/generate/models/type/type.rb +10 -4
  264. data/lib/puppet/generate/type.rb +25 -9
  265. data/lib/puppet/gettext/config.rb +24 -17
  266. data/lib/puppet/gettext/module_translations.rb +8 -7
  267. data/lib/puppet/gettext/stubs.rb +2 -0
  268. data/lib/puppet/graph/key.rb +2 -0
  269. data/lib/puppet/graph/prioritizer.rb +2 -0
  270. data/lib/puppet/graph/rb_tree_map.rb +45 -26
  271. data/lib/puppet/graph/relationship_graph.rb +34 -31
  272. data/lib/puppet/graph/sequential_prioritizer.rb +2 -0
  273. data/lib/puppet/graph/simple_graph.rb +72 -63
  274. data/lib/puppet/graph.rb +8 -6
  275. data/lib/puppet/http/client.rb +529 -0
  276. data/lib/puppet/http/dns.rb +159 -0
  277. data/lib/puppet/http/errors.rb +50 -0
  278. data/lib/puppet/http/external_client.rb +89 -0
  279. data/lib/puppet/http/factory.rb +53 -0
  280. data/lib/puppet/http/pool.rb +174 -0
  281. data/lib/puppet/http/pool_entry.rb +19 -0
  282. data/lib/puppet/http/proxy.rb +139 -0
  283. data/lib/puppet/http/redirector.rb +87 -0
  284. data/lib/puppet/http/resolver/server_list.rb +88 -0
  285. data/lib/puppet/http/resolver/settings.rb +24 -0
  286. data/lib/puppet/http/resolver/srv.rb +42 -0
  287. data/lib/puppet/http/resolver.rb +50 -0
  288. data/lib/puppet/http/response.rb +104 -0
  289. data/lib/puppet/http/response_converter.rb +25 -0
  290. data/lib/puppet/http/response_net_http.rb +43 -0
  291. data/lib/puppet/http/retry_after_handler.rb +78 -0
  292. data/lib/puppet/http/service/ca.rb +133 -0
  293. data/lib/puppet/http/service/compiler.rb +356 -0
  294. data/lib/puppet/http/service/file_server.rb +200 -0
  295. data/lib/puppet/http/service/puppetserver.rb +54 -0
  296. data/lib/puppet/http/service/report.rb +62 -0
  297. data/lib/puppet/http/service.rb +177 -0
  298. data/lib/puppet/http/session.rb +124 -0
  299. data/lib/puppet/http/site.rb +44 -0
  300. data/lib/puppet/http.rb +48 -0
  301. data/lib/puppet/indirector/catalog/compiler.rb +129 -113
  302. data/lib/puppet/indirector/catalog/json.rb +12 -5
  303. data/lib/puppet/indirector/catalog/msgpack.rb +4 -2
  304. data/lib/puppet/indirector/catalog/rest.rb +47 -2
  305. data/lib/puppet/indirector/catalog/store_configs.rb +5 -5
  306. data/lib/puppet/indirector/catalog/yaml.rb +4 -2
  307. data/lib/puppet/indirector/code.rb +3 -1
  308. data/lib/puppet/indirector/data_binding/hiera.rb +3 -2
  309. data/lib/puppet/indirector/data_binding/none.rb +3 -1
  310. data/lib/puppet/indirector/direct_file_server.rb +6 -3
  311. data/lib/puppet/indirector/envelope.rb +3 -1
  312. data/lib/puppet/indirector/errors.rb +3 -1
  313. data/lib/puppet/indirector/exec.rb +8 -6
  314. data/lib/puppet/indirector/face.rb +20 -31
  315. data/lib/puppet/indirector/fact_search.rb +62 -0
  316. data/lib/puppet/indirector/facts/facter.rb +49 -17
  317. data/lib/puppet/indirector/facts/json.rb +29 -0
  318. data/lib/puppet/indirector/facts/memory.rb +4 -2
  319. data/lib/puppet/indirector/facts/network_device.rb +4 -2
  320. data/lib/puppet/indirector/facts/rest.rb +36 -11
  321. data/lib/puppet/indirector/facts/store_configs.rb +5 -4
  322. data/lib/puppet/indirector/facts/yaml.rb +8 -61
  323. data/lib/puppet/indirector/file_bucket_file/file.rb +38 -32
  324. data/lib/puppet/indirector/file_bucket_file/rest.rb +47 -2
  325. data/lib/puppet/indirector/file_bucket_file/selector.rb +3 -2
  326. data/lib/puppet/indirector/file_content/file.rb +5 -3
  327. data/lib/puppet/indirector/file_content/file_server.rb +5 -3
  328. data/lib/puppet/indirector/file_content/rest.rb +32 -4
  329. data/lib/puppet/indirector/file_content/selector.rb +6 -4
  330. data/lib/puppet/indirector/file_content.rb +3 -1
  331. data/lib/puppet/indirector/file_metadata/file.rb +5 -3
  332. data/lib/puppet/indirector/file_metadata/file_server.rb +5 -3
  333. data/lib/puppet/indirector/file_metadata/http.rb +33 -11
  334. data/lib/puppet/indirector/file_metadata/rest.rb +53 -4
  335. data/lib/puppet/indirector/file_metadata/selector.rb +6 -4
  336. data/lib/puppet/indirector/file_metadata.rb +3 -1
  337. data/lib/puppet/indirector/file_server.rb +12 -14
  338. data/lib/puppet/indirector/generic_http.rb +3 -12
  339. data/lib/puppet/indirector/hiera.rb +15 -8
  340. data/lib/puppet/indirector/indirection.rb +98 -57
  341. data/lib/puppet/indirector/json.rb +15 -8
  342. data/lib/puppet/indirector/memory.rb +6 -3
  343. data/lib/puppet/indirector/msgpack.rb +14 -10
  344. data/lib/puppet/indirector/node/exec.rb +10 -9
  345. data/lib/puppet/indirector/node/json.rb +9 -0
  346. data/lib/puppet/indirector/node/memory.rb +4 -2
  347. data/lib/puppet/indirector/node/msgpack.rb +4 -2
  348. data/lib/puppet/indirector/node/plain.rb +4 -2
  349. data/lib/puppet/indirector/node/rest.rb +26 -2
  350. data/lib/puppet/indirector/node/store_configs.rb +5 -5
  351. data/lib/puppet/indirector/node/yaml.rb +4 -2
  352. data/lib/puppet/indirector/none.rb +4 -3
  353. data/lib/puppet/indirector/plain.rb +3 -1
  354. data/lib/puppet/indirector/report/json.rb +36 -0
  355. data/lib/puppet/indirector/report/msgpack.rb +5 -3
  356. data/lib/puppet/indirector/report/processor.rb +10 -6
  357. data/lib/puppet/indirector/report/rest.rb +17 -14
  358. data/lib/puppet/indirector/report/yaml.rb +28 -3
  359. data/lib/puppet/indirector/request.rb +26 -107
  360. data/lib/puppet/indirector/resource/ral.rb +18 -15
  361. data/lib/puppet/indirector/resource/store_configs.rb +5 -3
  362. data/lib/puppet/indirector/resource/validator.rb +3 -1
  363. data/lib/puppet/indirector/rest.rb +13 -248
  364. data/lib/puppet/indirector/store_configs.rb +2 -0
  365. data/lib/puppet/indirector/terminus.rb +23 -12
  366. data/lib/puppet/indirector/yaml.rb +10 -8
  367. data/lib/puppet/indirector.rb +11 -8
  368. data/lib/puppet/info_service/class_information_service.rb +21 -23
  369. data/lib/puppet/info_service/plan_information_service.rb +38 -0
  370. data/lib/puppet/info_service/task_information_service.rb +14 -5
  371. data/lib/puppet/info_service.rb +12 -2
  372. data/lib/puppet/interface/action.rb +62 -51
  373. data/lib/puppet/interface/action_builder.rb +16 -15
  374. data/lib/puppet/interface/action_manager.rb +11 -7
  375. data/lib/puppet/interface/documentation.rb +51 -41
  376. data/lib/puppet/interface/face_collection.rb +24 -17
  377. data/lib/puppet/interface/option.rb +30 -17
  378. data/lib/puppet/interface/option_builder.rb +14 -9
  379. data/lib/puppet/interface/option_manager.rb +16 -12
  380. data/lib/puppet/interface.rb +23 -20
  381. data/lib/puppet/loaders.rb +24 -21
  382. data/lib/puppet/metatype/manager.rb +91 -90
  383. data/lib/puppet/module/plan.rb +166 -0
  384. data/lib/puppet/module/task.rb +59 -29
  385. data/lib/puppet/module.rb +98 -52
  386. data/lib/puppet/module_tool/applications/application.rb +21 -15
  387. data/lib/puppet/module_tool/applications/checksummer.rb +5 -5
  388. data/lib/puppet/module_tool/applications/installer.rb +146 -98
  389. data/lib/puppet/module_tool/applications/uninstaller.rb +27 -26
  390. data/lib/puppet/module_tool/applications/unpacker.rb +13 -11
  391. data/lib/puppet/module_tool/applications/upgrader.rb +75 -67
  392. data/lib/puppet/module_tool/applications.rb +9 -8
  393. data/lib/puppet/module_tool/checksums.rb +5 -4
  394. data/lib/puppet/module_tool/contents_description.rb +8 -7
  395. data/lib/puppet/module_tool/dependency.rb +7 -6
  396. data/lib/puppet/module_tool/errors/base.rb +3 -1
  397. data/lib/puppet/module_tool/errors/installer.rb +6 -5
  398. data/lib/puppet/module_tool/errors/shared.rb +50 -17
  399. data/lib/puppet/module_tool/errors/uninstaller.rb +3 -2
  400. data/lib/puppet/module_tool/errors/upgrader.rb +4 -3
  401. data/lib/puppet/module_tool/errors.rb +8 -6
  402. data/lib/puppet/module_tool/install_directory.rb +10 -7
  403. data/lib/puppet/module_tool/installed_modules.rb +7 -4
  404. data/lib/puppet/module_tool/local_tarball.rb +12 -10
  405. data/lib/puppet/module_tool/metadata.rb +42 -37
  406. data/lib/puppet/module_tool/shared_behaviors.rb +67 -48
  407. data/lib/puppet/module_tool/tar/gnu.rb +12 -8
  408. data/lib/puppet/module_tool/tar/mini.rb +18 -6
  409. data/lib/puppet/module_tool/tar.rb +8 -6
  410. data/lib/puppet/module_tool.rb +23 -21
  411. data/lib/puppet/network/authconfig.rb +3 -93
  412. data/lib/puppet/network/authorization.rb +14 -34
  413. data/lib/puppet/network/client_request.rb +7 -4
  414. data/lib/puppet/network/format.rb +10 -4
  415. data/lib/puppet/network/format_handler.rb +12 -10
  416. data/lib/puppet/network/format_support.rb +11 -10
  417. data/lib/puppet/network/formats.rb +97 -19
  418. data/lib/puppet/network/http/api/indirected_routes.rb +47 -63
  419. data/lib/puppet/network/http/api/indirection_type.rb +2 -1
  420. data/lib/puppet/network/http/api/master/v3/environments.rb +3 -34
  421. data/lib/puppet/network/http/api/master/v3.rb +3 -27
  422. data/lib/puppet/network/http/api/master.rb +5 -2
  423. data/lib/puppet/network/http/api/server/v3/environments.rb +54 -0
  424. data/lib/puppet/network/http/api/server/v3.rb +40 -0
  425. data/lib/puppet/network/http/api/server.rb +12 -0
  426. data/lib/puppet/network/http/api.rb +26 -20
  427. data/lib/puppet/network/http/connection.rb +250 -281
  428. data/lib/puppet/network/http/error.rb +6 -4
  429. data/lib/puppet/network/http/handler.rb +16 -18
  430. data/lib/puppet/network/http/issues.rb +2 -0
  431. data/lib/puppet/network/http/memory_response.rb +3 -1
  432. data/lib/puppet/network/http/request.rb +24 -11
  433. data/lib/puppet/network/http/response.rb +2 -0
  434. data/lib/puppet/network/http/route.rb +17 -13
  435. data/lib/puppet/network/http.rb +21 -19
  436. data/lib/puppet/network/http_pool.rb +42 -25
  437. data/lib/puppet/network/uri.rb +20 -0
  438. data/lib/puppet/network.rb +2 -0
  439. data/lib/puppet/node/environment.rb +140 -77
  440. data/lib/puppet/node/facts.rb +30 -13
  441. data/lib/puppet/node/server_facts.rb +43 -0
  442. data/lib/puppet/node.rb +25 -50
  443. data/lib/puppet/pal/catalog_compiler.rb +107 -0
  444. data/lib/puppet/pal/compiler.rb +227 -0
  445. data/lib/puppet/pal/function_signature.rb +54 -0
  446. data/lib/puppet/pal/json_catalog_encoder.rb +76 -0
  447. data/lib/puppet/pal/pal_api.rb +17 -0
  448. data/lib/puppet/pal/pal_impl.rb +585 -0
  449. data/lib/puppet/pal/plan_signature.rb +73 -0
  450. data/lib/puppet/pal/script_compiler.rb +75 -0
  451. data/lib/puppet/pal/task_signature.rb +64 -0
  452. data/lib/puppet/parameter/boolean.rb +3 -1
  453. data/lib/puppet/parameter/package_options.rb +4 -2
  454. data/lib/puppet/parameter/path.rb +8 -4
  455. data/lib/puppet/parameter/value.rb +6 -4
  456. data/lib/puppet/parameter/value_collection.rb +25 -24
  457. data/lib/puppet/parameter.rb +44 -26
  458. data/lib/puppet/parser/abstract_compiler.rb +2 -3
  459. data/lib/puppet/parser/ast/block_expression.rb +4 -2
  460. data/lib/puppet/parser/ast/branch.rb +2 -0
  461. data/lib/puppet/parser/ast/hostclass.rb +5 -3
  462. data/lib/puppet/parser/ast/leaf.rb +10 -6
  463. data/lib/puppet/parser/ast/node.rb +2 -0
  464. data/lib/puppet/parser/ast/pops_bridge.rb +23 -69
  465. data/lib/puppet/parser/ast/resource.rb +8 -8
  466. data/lib/puppet/parser/ast/resource_instance.rb +3 -0
  467. data/lib/puppet/parser/ast/resourceparam.rb +10 -8
  468. data/lib/puppet/parser/ast/top_level_construct.rb +2 -0
  469. data/lib/puppet/parser/ast.rb +25 -24
  470. data/lib/puppet/parser/catalog_compiler.rb +5 -5
  471. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +18 -41
  472. data/lib/puppet/parser/compiler/catalog_validator.rb +2 -0
  473. data/lib/puppet/parser/compiler.rb +88 -270
  474. data/lib/puppet/parser/e4_parser_adapter.rb +18 -17
  475. data/lib/puppet/parser/files.rb +10 -7
  476. data/lib/puppet/parser/functions/assert_type.rb +43 -41
  477. data/lib/puppet/parser/functions/binary_file.rb +16 -14
  478. data/lib/puppet/parser/functions/break.rb +29 -27
  479. data/lib/puppet/parser/functions/contain.rb +3 -1
  480. data/lib/puppet/parser/functions/create_resources.rb +28 -20
  481. data/lib/puppet/parser/functions/defined.rb +104 -102
  482. data/lib/puppet/parser/functions/dig.rb +26 -24
  483. data/lib/puppet/parser/functions/digest.rb +4 -2
  484. data/lib/puppet/parser/functions/each.rb +101 -99
  485. data/lib/puppet/parser/functions/epp.rb +7 -6
  486. data/lib/puppet/parser/functions/fail.rb +12 -3
  487. data/lib/puppet/parser/functions/file.rb +17 -15
  488. data/lib/puppet/parser/functions/filter.rb +57 -54
  489. data/lib/puppet/parser/functions/find_file.rb +19 -18
  490. data/lib/puppet/parser/functions/fqdn_rand.rb +31 -21
  491. data/lib/puppet/parser/functions/generate.rb +30 -27
  492. data/lib/puppet/parser/functions/hiera.rb +95 -93
  493. data/lib/puppet/parser/functions/hiera_array.rb +83 -82
  494. data/lib/puppet/parser/functions/hiera_hash.rb +93 -92
  495. data/lib/puppet/parser/functions/hiera_include.rb +93 -92
  496. data/lib/puppet/parser/functions/include.rb +5 -3
  497. data/lib/puppet/parser/functions/inline_epp.rb +8 -7
  498. data/lib/puppet/parser/functions/inline_template.rb +15 -13
  499. data/lib/puppet/parser/functions/lest.rb +36 -34
  500. data/lib/puppet/parser/functions/lookup.rb +132 -130
  501. data/lib/puppet/parser/functions/map.rb +54 -52
  502. data/lib/puppet/parser/functions/match.rb +31 -29
  503. data/lib/puppet/parser/functions/md5.rb +4 -2
  504. data/lib/puppet/parser/functions/new.rb +916 -915
  505. data/lib/puppet/parser/functions/next.rb +36 -34
  506. data/lib/puppet/parser/functions/realize.rb +13 -11
  507. data/lib/puppet/parser/functions/reduce.rb +134 -132
  508. data/lib/puppet/parser/functions/regsubst.rb +8 -5
  509. data/lib/puppet/parser/functions/require.rb +8 -5
  510. data/lib/puppet/parser/functions/return.rb +90 -88
  511. data/lib/puppet/parser/functions/reverse_each.rb +59 -57
  512. data/lib/puppet/parser/functions/scanf.rb +25 -23
  513. data/lib/puppet/parser/functions/sha1.rb +4 -2
  514. data/lib/puppet/parser/functions/sha256.rb +3 -1
  515. data/lib/puppet/parser/functions/shellquote.rb +2 -0
  516. data/lib/puppet/parser/functions/slice.rb +27 -25
  517. data/lib/puppet/parser/functions/split.rb +7 -6
  518. data/lib/puppet/parser/functions/sprintf.rb +8 -7
  519. data/lib/puppet/parser/functions/step.rb +62 -60
  520. data/lib/puppet/parser/functions/strftime.rb +175 -173
  521. data/lib/puppet/parser/functions/tag.rb +10 -7
  522. data/lib/puppet/parser/functions/tagged.rb +16 -13
  523. data/lib/puppet/parser/functions/template.rb +27 -24
  524. data/lib/puppet/parser/functions/then.rb +54 -52
  525. data/lib/puppet/parser/functions/type.rb +36 -34
  526. data/lib/puppet/parser/functions/versioncmp.rb +4 -3
  527. data/lib/puppet/parser/functions/with.rb +22 -20
  528. data/lib/puppet/parser/functions.rb +36 -23
  529. data/lib/puppet/parser/parser_factory.rb +4 -2
  530. data/lib/puppet/parser/relationship.rb +11 -4
  531. data/lib/puppet/parser/resource/param.rb +9 -1
  532. data/lib/puppet/parser/resource.rb +53 -116
  533. data/lib/puppet/parser/scope.rb +105 -87
  534. data/lib/puppet/parser/script_compiler.rb +14 -14
  535. data/lib/puppet/parser/templatewrapper.rb +10 -7
  536. data/lib/puppet/parser/type_loader.rb +33 -31
  537. data/lib/puppet/parser.rb +12 -10
  538. data/lib/puppet/plugins/configuration.rb +10 -4
  539. data/lib/puppet/plugins/syntax_checkers.rb +2 -1
  540. data/lib/puppet/plugins.rb +3 -1
  541. data/lib/puppet/pops/adaptable.rb +13 -20
  542. data/lib/puppet/pops/adapters.rb +12 -5
  543. data/lib/puppet/pops/evaluator/access_operator.rb +135 -122
  544. data/lib/puppet/pops/evaluator/callable_signature.rb +6 -5
  545. data/lib/puppet/pops/evaluator/closure.rb +272 -275
  546. data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -15
  547. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +11 -11
  548. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +5 -4
  549. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +9 -7
  550. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +11 -10
  551. data/lib/puppet/pops/evaluator/compare_operator.rb +36 -21
  552. data/lib/puppet/pops/evaluator/deferred_resolver.rb +120 -23
  553. data/lib/puppet/pops/evaluator/epp_evaluator.rb +19 -18
  554. data/lib/puppet/pops/evaluator/evaluator_impl.rb +285 -267
  555. data/lib/puppet/pops/evaluator/external_syntax_support.rb +10 -8
  556. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +6 -5
  557. data/lib/puppet/pops/evaluator/literal_evaluator.rb +21 -8
  558. data/lib/puppet/pops/evaluator/puppet_proc.rb +6 -3
  559. data/lib/puppet/pops/evaluator/relationship_operator.rb +15 -12
  560. data/lib/puppet/pops/evaluator/runtime3_converter.rb +36 -32
  561. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +40 -38
  562. data/lib/puppet/pops/evaluator/runtime3_support.rb +44 -50
  563. data/lib/puppet/pops/functions/dispatch.rb +7 -7
  564. data/lib/puppet/pops/functions/dispatcher.rb +17 -12
  565. data/lib/puppet/pops/functions/function.rb +19 -23
  566. data/lib/puppet/pops/issue_reporter.rb +25 -22
  567. data/lib/puppet/pops/issues.rb +21 -9
  568. data/lib/puppet/pops/label_provider.rb +6 -4
  569. data/lib/puppet/pops/loader/base_loader.rb +45 -33
  570. data/lib/puppet/pops/loader/dependency_loader.rb +15 -12
  571. data/lib/puppet/pops/loader/gem_support.rb +9 -4
  572. data/lib/puppet/pops/loader/generic_plan_instantiator.rb +30 -0
  573. data/lib/puppet/pops/loader/loader.rb +25 -13
  574. data/lib/puppet/pops/loader/loader_paths.rb +87 -51
  575. data/lib/puppet/pops/loader/module_loaders.rb +57 -54
  576. data/lib/puppet/pops/loader/predefined_loader.rb +7 -3
  577. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +6 -2
  578. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +18 -5
  579. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +6 -5
  580. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +6 -2
  581. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +6 -2
  582. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +74 -7
  583. data/lib/puppet/pops/loader/runtime3_type_loader.rb +9 -6
  584. data/lib/puppet/pops/loader/simple_environment_loader.rb +3 -3
  585. data/lib/puppet/pops/loader/static_loader.rb +33 -27
  586. data/lib/puppet/pops/loader/task_instantiator.rb +9 -3
  587. data/lib/puppet/pops/loader/type_definition_instantiator.rb +9 -5
  588. data/lib/puppet/pops/loader/typed_name.rb +4 -2
  589. data/lib/puppet/pops/loader/uri_helper.rb +3 -1
  590. data/lib/puppet/pops/loaders.rb +60 -43
  591. data/lib/puppet/pops/lookup/configured_data_provider.rb +2 -0
  592. data/lib/puppet/pops/lookup/context.rb +36 -28
  593. data/lib/puppet/pops/lookup/data_adapter.rb +2 -0
  594. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +8 -7
  595. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +5 -3
  596. data/lib/puppet/pops/lookup/data_provider.rb +2 -0
  597. data/lib/puppet/pops/lookup/environment_data_provider.rb +2 -0
  598. data/lib/puppet/pops/lookup/explainer.rb +47 -45
  599. data/lib/puppet/pops/lookup/function_provider.rb +8 -6
  600. data/lib/puppet/pops/lookup/global_data_provider.rb +4 -3
  601. data/lib/puppet/pops/lookup/hiera_config.rb +216 -154
  602. data/lib/puppet/pops/lookup/interpolation.rb +22 -10
  603. data/lib/puppet/pops/lookup/invocation.rb +14 -3
  604. data/lib/puppet/pops/lookup/key_recorder.rb +21 -0
  605. data/lib/puppet/pops/lookup/location_resolver.rb +4 -2
  606. data/lib/puppet/pops/lookup/lookup_adapter.rb +47 -34
  607. data/lib/puppet/pops/lookup/lookup_key.rb +3 -1
  608. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +4 -2
  609. data/lib/puppet/pops/lookup/module_data_provider.rb +12 -9
  610. data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
  611. data/lib/puppet/pops/lookup.rb +17 -11
  612. data/lib/puppet/pops/merge_strategy.rb +43 -33
  613. data/lib/puppet/pops/migration/migration_checker.rb +8 -5
  614. data/lib/puppet/pops/model/ast.pp +0 -42
  615. data/lib/puppet/pops/model/ast.rb +787 -975
  616. data/lib/puppet/pops/model/ast_transformer.rb +20 -20
  617. data/lib/puppet/pops/model/factory.rb +88 -94
  618. data/lib/puppet/pops/model/model_label_provider.rb +5 -7
  619. data/lib/puppet/pops/model/model_tree_dumper.rb +32 -52
  620. data/lib/puppet/pops/model/pn_transformer.rb +10 -31
  621. data/lib/puppet/pops/model/tree_dumper.rb +7 -4
  622. data/lib/puppet/pops/parser/code_merger.rb +5 -5
  623. data/lib/puppet/pops/parser/egrammar.ra +6 -60
  624. data/lib/puppet/pops/parser/eparser.rb +1699 -1876
  625. data/lib/puppet/pops/parser/epp_parser.rb +6 -5
  626. data/lib/puppet/pops/parser/epp_support.rb +12 -10
  627. data/lib/puppet/pops/parser/evaluating_parser.rb +21 -20
  628. data/lib/puppet/pops/parser/heredoc_support.rb +31 -20
  629. data/lib/puppet/pops/parser/interpolation_support.rb +39 -34
  630. data/lib/puppet/pops/parser/lexer2.rb +160 -143
  631. data/lib/puppet/pops/parser/lexer_support.rb +58 -58
  632. data/lib/puppet/pops/parser/locatable.rb +2 -2
  633. data/lib/puppet/pops/parser/locator.rb +149 -124
  634. data/lib/puppet/pops/parser/parser_support.rb +37 -32
  635. data/lib/puppet/pops/parser/pn_parser.rb +27 -25
  636. data/lib/puppet/pops/parser/slurp_support.rb +42 -40
  637. data/lib/puppet/pops/patterns.rb +14 -14
  638. data/lib/puppet/pops/pcore.rb +7 -6
  639. data/lib/puppet/pops/pn.rb +8 -5
  640. data/lib/puppet/pops/puppet_stack.rb +54 -48
  641. data/lib/puppet/pops/resource/param.rb +13 -12
  642. data/lib/puppet/pops/resource/resource_type_impl.rb +49 -67
  643. data/lib/puppet/pops/semantic_error.rb +3 -1
  644. data/lib/puppet/pops/serialization/abstract_reader.rb +6 -4
  645. data/lib/puppet/pops/serialization/abstract_writer.rb +11 -9
  646. data/lib/puppet/pops/serialization/deserializer.rb +3 -0
  647. data/lib/puppet/pops/serialization/extension.rb +8 -0
  648. data/lib/puppet/pops/serialization/from_data_converter.rb +16 -9
  649. data/lib/puppet/pops/serialization/instance_reader.rb +2 -0
  650. data/lib/puppet/pops/serialization/instance_writer.rb +2 -0
  651. data/lib/puppet/pops/serialization/json.rb +10 -6
  652. data/lib/puppet/pops/serialization/json_path.rb +6 -4
  653. data/lib/puppet/pops/serialization/object.rb +6 -3
  654. data/lib/puppet/pops/serialization/serializer.rb +20 -16
  655. data/lib/puppet/pops/serialization/time_factory.rb +2 -1
  656. data/lib/puppet/pops/serialization/to_data_converter.rb +9 -6
  657. data/lib/puppet/pops/serialization/to_stringified_converter.rb +9 -8
  658. data/lib/puppet/pops/serialization.rb +10 -8
  659. data/lib/puppet/pops/time/timespan.rb +37 -27
  660. data/lib/puppet/pops/time/timestamp.rb +12 -5
  661. data/lib/puppet/pops/types/annotatable.rb +3 -2
  662. data/lib/puppet/pops/types/annotation.rb +6 -4
  663. data/lib/puppet/pops/types/class_loader.rb +17 -15
  664. data/lib/puppet/pops/types/implementation_registry.rb +4 -1
  665. data/lib/puppet/pops/types/iterable.rb +57 -21
  666. data/lib/puppet/pops/types/p_binary_type.rb +6 -6
  667. data/lib/puppet/pops/types/p_init_type.rb +15 -12
  668. data/lib/puppet/pops/types/p_meta_type.rb +7 -6
  669. data/lib/puppet/pops/types/p_object_type.rb +104 -79
  670. data/lib/puppet/pops/types/p_object_type_extension.rb +25 -14
  671. data/lib/puppet/pops/types/p_runtime_type.rb +12 -10
  672. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +3 -2
  673. data/lib/puppet/pops/types/p_sem_ver_type.rb +16 -10
  674. data/lib/puppet/pops/types/p_sensitive_type.rb +14 -6
  675. data/lib/puppet/pops/types/p_timespan_type.rb +7 -5
  676. data/lib/puppet/pops/types/p_timestamp_type.rb +4 -3
  677. data/lib/puppet/pops/types/p_type_set_type.rb +56 -45
  678. data/lib/puppet/pops/types/p_uri_type.rb +42 -34
  679. data/lib/puppet/pops/types/puppet_object.rb +2 -1
  680. data/lib/puppet/pops/types/recursion_guard.rb +12 -6
  681. data/lib/puppet/pops/types/ruby_generator.rb +19 -14
  682. data/lib/puppet/pops/types/ruby_method.rb +8 -7
  683. data/lib/puppet/pops/types/string_converter.rb +130 -118
  684. data/lib/puppet/pops/types/tree_iterators.rb +16 -20
  685. data/lib/puppet/pops/types/type_acceptor.rb +2 -0
  686. data/lib/puppet/pops/types/type_asserter.rb +5 -3
  687. data/lib/puppet/pops/types/type_assertion_error.rb +1 -1
  688. data/lib/puppet/pops/types/type_calculator.rb +75 -55
  689. data/lib/puppet/pops/types/type_conversion_error.rb +2 -10
  690. data/lib/puppet/pops/types/type_factory.rb +25 -16
  691. data/lib/puppet/pops/types/type_formatter.rb +75 -81
  692. data/lib/puppet/pops/types/type_mismatch_describer.rb +83 -53
  693. data/lib/puppet/pops/types/type_parser.rb +131 -126
  694. data/lib/puppet/pops/types/type_set_reference.rb +3 -0
  695. data/lib/puppet/pops/types/type_with_members.rb +2 -2
  696. data/lib/puppet/pops/types/types.rb +274 -254
  697. data/lib/puppet/pops/utils.rb +43 -45
  698. data/lib/puppet/pops/validation/checker4_0.rb +126 -100
  699. data/lib/puppet/pops/validation/tasks_checker.rb +12 -18
  700. data/lib/puppet/pops/validation/validator_factory_4_0.rb +5 -3
  701. data/lib/puppet/pops/validation.rb +38 -42
  702. data/lib/puppet/pops/visitable.rb +2 -0
  703. data/lib/puppet/pops/visitor.rb +30 -10
  704. data/lib/puppet/pops.rb +63 -60
  705. data/lib/puppet/property/boolean.rb +3 -1
  706. data/lib/puppet/property/ensure.rb +20 -18
  707. data/lib/puppet/property/keyvalue.rb +18 -16
  708. data/lib/puppet/property/list.rb +13 -11
  709. data/lib/puppet/property/ordered_list.rb +7 -6
  710. data/lib/puppet/property.rb +65 -63
  711. data/lib/puppet/provider/aix_object.rb +21 -13
  712. data/lib/puppet/provider/command.rb +2 -0
  713. data/lib/puppet/provider/confine.rb +4 -2
  714. data/lib/puppet/provider/exec/posix.rb +21 -6
  715. data/lib/puppet/provider/exec/shell.rb +2 -0
  716. data/lib/puppet/provider/exec/windows.rb +7 -5
  717. data/lib/puppet/provider/exec.rb +26 -12
  718. data/lib/puppet/provider/file/posix.rb +46 -20
  719. data/lib/puppet/provider/file/windows.rb +68 -21
  720. data/lib/puppet/provider/group/aix.rb +6 -3
  721. data/lib/puppet/provider/group/directoryservice.rb +8 -6
  722. data/lib/puppet/provider/group/groupadd.rb +103 -34
  723. data/lib/puppet/provider/group/ldap.rb +11 -5
  724. data/lib/puppet/provider/group/pw.rb +9 -6
  725. data/lib/puppet/provider/group/windows_adsi.rb +18 -12
  726. data/lib/puppet/provider/ldap.rb +15 -9
  727. data/lib/puppet/provider/nameservice/directoryservice.rb +83 -69
  728. data/lib/puppet/provider/nameservice/objectadd.rb +5 -5
  729. data/lib/puppet/provider/nameservice/pw.rb +10 -10
  730. data/lib/puppet/provider/nameservice.rb +36 -40
  731. data/lib/puppet/provider/network_device.rb +6 -4
  732. data/lib/puppet/provider/package/aix.rb +51 -32
  733. data/lib/puppet/provider/package/appdmg.rb +31 -27
  734. data/lib/puppet/provider/package/apple.rb +10 -7
  735. data/lib/puppet/provider/package/apt.rb +174 -23
  736. data/lib/puppet/provider/package/aptitude.rb +10 -4
  737. data/lib/puppet/provider/package/aptrpm.rb +18 -14
  738. data/lib/puppet/provider/package/blastwave.rb +20 -22
  739. data/lib/puppet/provider/package/dnf.rb +15 -7
  740. data/lib/puppet/provider/package/dnfmodule.rb +143 -0
  741. data/lib/puppet/provider/package/dpkg.rb +55 -29
  742. data/lib/puppet/provider/package/fink.rb +33 -13
  743. data/lib/puppet/provider/package/freebsd.rb +6 -4
  744. data/lib/puppet/provider/package/gem.rb +181 -60
  745. data/lib/puppet/provider/package/hpux.rb +10 -8
  746. data/lib/puppet/provider/package/macports.rb +14 -9
  747. data/lib/puppet/provider/package/nim.rb +47 -39
  748. data/lib/puppet/provider/package/openbsd.rb +66 -45
  749. data/lib/puppet/provider/package/opkg.rb +20 -16
  750. data/lib/puppet/provider/package/pacman.rb +55 -51
  751. data/lib/puppet/provider/package/pip.rb +276 -117
  752. data/lib/puppet/provider/package/pip2.rb +18 -0
  753. data/lib/puppet/provider/package/pip3.rb +5 -7
  754. data/lib/puppet/provider/package/pkg.rb +86 -41
  755. data/lib/puppet/provider/package/pkgdmg.rb +31 -23
  756. data/lib/puppet/provider/package/pkgin.rb +15 -14
  757. data/lib/puppet/provider/package/pkgng.rb +69 -34
  758. data/lib/puppet/provider/package/pkgutil.rb +41 -41
  759. data/lib/puppet/provider/package/portage.rb +87 -73
  760. data/lib/puppet/provider/package/ports.rb +19 -16
  761. data/lib/puppet/provider/package/portupgrade.rb +51 -57
  762. data/lib/puppet/provider/package/puppet_gem.rb +16 -8
  763. data/lib/puppet/provider/package/puppetserver_gem.rb +174 -0
  764. data/lib/puppet/provider/package/rpm.rb +104 -254
  765. data/lib/puppet/provider/package/rug.rb +11 -11
  766. data/lib/puppet/provider/package/sun.rb +31 -27
  767. data/lib/puppet/provider/package/sunfreeware.rb +3 -1
  768. data/lib/puppet/provider/package/tdnf.rb +8 -1
  769. data/lib/puppet/provider/package/up2date.rb +10 -10
  770. data/lib/puppet/provider/package/urpmi.rb +9 -7
  771. data/lib/puppet/provider/package/windows/exe_package.rb +38 -7
  772. data/lib/puppet/provider/package/windows/msi_package.rb +6 -4
  773. data/lib/puppet/provider/package/windows/package.rb +19 -14
  774. data/lib/puppet/provider/package/windows.rb +28 -10
  775. data/lib/puppet/provider/package/xbps.rb +127 -0
  776. data/lib/puppet/provider/package/yum.rb +165 -60
  777. data/lib/puppet/provider/package/zypper.rb +90 -29
  778. data/lib/puppet/provider/package.rb +13 -8
  779. data/lib/puppet/provider/package_targetable.rb +71 -0
  780. data/lib/puppet/provider/parsedfile.rb +41 -27
  781. data/lib/puppet/provider/service/base.rb +29 -28
  782. data/lib/puppet/provider/service/bsd.rb +7 -5
  783. data/lib/puppet/provider/service/daemontools.rb +49 -47
  784. data/lib/puppet/provider/service/debian.rb +17 -15
  785. data/lib/puppet/provider/service/freebsd.rb +50 -52
  786. data/lib/puppet/provider/service/gentoo.rb +11 -9
  787. data/lib/puppet/provider/service/init.rb +39 -39
  788. data/lib/puppet/provider/service/launchd.rb +72 -42
  789. data/lib/puppet/provider/service/openbsd.rb +17 -16
  790. data/lib/puppet/provider/service/openrc.rb +6 -5
  791. data/lib/puppet/provider/service/openwrt.rb +7 -6
  792. data/lib/puppet/provider/service/rcng.rb +9 -7
  793. data/lib/puppet/provider/service/redhat.rb +10 -7
  794. data/lib/puppet/provider/service/runit.rb +18 -23
  795. data/lib/puppet/provider/service/service.rb +32 -7
  796. data/lib/puppet/provider/service/smf.rb +189 -90
  797. data/lib/puppet/provider/service/src.rb +30 -30
  798. data/lib/puppet/provider/service/systemd.rb +107 -67
  799. data/lib/puppet/provider/service/upstart.rb +62 -47
  800. data/lib/puppet/provider/service/windows.rb +103 -39
  801. data/lib/puppet/provider/user/aix.rb +74 -26
  802. data/lib/puppet/provider/user/directoryservice.rb +170 -115
  803. data/lib/puppet/provider/user/hpux.rb +33 -35
  804. data/lib/puppet/provider/user/ldap.rb +22 -15
  805. data/lib/puppet/provider/user/openbsd.rb +27 -24
  806. data/lib/puppet/provider/user/pw.rb +22 -11
  807. data/lib/puppet/provider/user/user_role_add.rb +52 -42
  808. data/lib/puppet/provider/user/useradd.rb +236 -76
  809. data/lib/puppet/provider/user/windows_adsi.rb +34 -14
  810. data/lib/puppet/provider.rb +32 -43
  811. data/lib/puppet/reference/configuration.rb +55 -47
  812. data/lib/puppet/reference/function.rb +2 -0
  813. data/lib/puppet/reference/indirection.rb +39 -34
  814. data/lib/puppet/reference/metaparameter.rb +4 -4
  815. data/lib/puppet/reference/providers.rb +16 -15
  816. data/lib/puppet/reference/report.rb +3 -1
  817. data/lib/puppet/reference/type.rb +12 -14
  818. data/lib/puppet/relationship.rb +14 -18
  819. data/lib/puppet/reports/http.rb +19 -11
  820. data/lib/puppet/reports/log.rb +5 -4
  821. data/lib/puppet/reports/store.rb +11 -8
  822. data/lib/puppet/reports.rb +10 -8
  823. data/lib/puppet/resource/catalog.rb +96 -112
  824. data/lib/puppet/resource/status.rb +11 -9
  825. data/lib/puppet/resource/type.rb +64 -157
  826. data/lib/puppet/resource/type_collection.rb +45 -73
  827. data/lib/puppet/resource.rb +162 -172
  828. data/lib/puppet/runtime.rb +67 -0
  829. data/lib/puppet/scheduler/job.rb +2 -0
  830. data/lib/puppet/scheduler/scheduler.rb +4 -2
  831. data/lib/puppet/scheduler/splay_job.rb +2 -0
  832. data/lib/puppet/scheduler/timer.rb +2 -0
  833. data/lib/puppet/scheduler.rb +7 -5
  834. data/lib/puppet/settings/alias_setting.rb +37 -0
  835. data/lib/puppet/settings/array_setting.rb +2 -1
  836. data/lib/puppet/settings/autosign_setting.rb +3 -2
  837. data/lib/puppet/settings/base_setting.rb +56 -25
  838. data/lib/puppet/settings/boolean_setting.rb +5 -3
  839. data/lib/puppet/settings/certificate_revocation_setting.rb +3 -2
  840. data/lib/puppet/settings/config_file.rb +15 -19
  841. data/lib/puppet/settings/directory_setting.rb +2 -0
  842. data/lib/puppet/settings/duration_setting.rb +5 -4
  843. data/lib/puppet/settings/enum_setting.rb +3 -1
  844. data/lib/puppet/settings/environment_conf.rb +21 -15
  845. data/lib/puppet/settings/errors.rb +7 -4
  846. data/lib/puppet/settings/file_or_directory_setting.rb +4 -7
  847. data/lib/puppet/settings/file_setting.rb +19 -32
  848. data/lib/puppet/settings/http_extra_headers_setting.rb +26 -0
  849. data/lib/puppet/settings/ini_file.rb +7 -4
  850. data/lib/puppet/settings/integer_setting.rb +19 -0
  851. data/lib/puppet/settings/path_setting.rb +2 -0
  852. data/lib/puppet/settings/port_setting.rb +17 -0
  853. data/lib/puppet/settings/priority_setting.rb +16 -14
  854. data/lib/puppet/settings/server_list_setting.rb +13 -3
  855. data/lib/puppet/settings/string_setting.rb +2 -0
  856. data/lib/puppet/settings/symbolic_enum_setting.rb +3 -1
  857. data/lib/puppet/settings/terminus_setting.rb +2 -0
  858. data/lib/puppet/settings/ttl_setting.rb +7 -5
  859. data/lib/puppet/settings/value_translator.rb +9 -8
  860. data/lib/puppet/settings.rb +397 -232
  861. data/lib/puppet/ssl/base.rb +17 -15
  862. data/lib/puppet/ssl/certificate.rb +12 -13
  863. data/lib/puppet/ssl/certificate_request.rb +45 -50
  864. data/lib/puppet/ssl/certificate_request_attributes.rb +9 -6
  865. data/lib/puppet/ssl/certificate_signer.rb +9 -3
  866. data/lib/puppet/ssl/digest.rb +2 -0
  867. data/lib/puppet/ssl/error.rb +29 -0
  868. data/lib/puppet/ssl/oids.rb +17 -11
  869. data/lib/puppet/ssl/openssl_loader.rb +26 -0
  870. data/lib/puppet/ssl/ssl_context.rb +27 -0
  871. data/lib/puppet/ssl/ssl_provider.rb +354 -0
  872. data/lib/puppet/ssl/state_machine.rb +605 -0
  873. data/lib/puppet/ssl/verifier.rb +143 -0
  874. data/lib/puppet/ssl.rb +21 -8
  875. data/lib/puppet/syntax_checkers/base64.rb +8 -6
  876. data/lib/puppet/syntax_checkers/epp.rb +35 -0
  877. data/lib/puppet/syntax_checkers/json.rb +8 -8
  878. data/lib/puppet/syntax_checkers/pp.rb +35 -0
  879. data/lib/puppet/syntax_checkers.rb +3 -1
  880. data/lib/puppet/test/test_helper.rb +50 -50
  881. data/lib/puppet/thread_local.rb +6 -0
  882. data/lib/puppet/transaction/additional_resource_generator.rb +13 -8
  883. data/lib/puppet/transaction/event.rb +14 -10
  884. data/lib/puppet/transaction/event_manager.rb +18 -19
  885. data/lib/puppet/transaction/persistence.rb +35 -15
  886. data/lib/puppet/transaction/report.rb +88 -48
  887. data/lib/puppet/transaction/resource_harness.rb +17 -10
  888. data/lib/puppet/transaction.rb +105 -59
  889. data/lib/puppet/trusted_external.rb +46 -0
  890. data/lib/puppet/type/component.rb +19 -11
  891. data/lib/puppet/type/exec.rb +196 -90
  892. data/lib/puppet/type/file/checksum.rb +8 -6
  893. data/lib/puppet/type/file/checksum_value.rb +8 -6
  894. data/lib/puppet/type/file/content.rb +31 -23
  895. data/lib/puppet/type/file/ctime.rb +8 -6
  896. data/lib/puppet/type/file/data_sync.rb +18 -10
  897. data/lib/puppet/type/file/ensure.rb +35 -33
  898. data/lib/puppet/type/file/group.rb +12 -3
  899. data/lib/puppet/type/file/mode.rb +28 -13
  900. data/lib/puppet/type/file/mtime.rb +8 -5
  901. data/lib/puppet/type/file/owner.rb +11 -3
  902. data/lib/puppet/type/file/selcontext.rb +25 -23
  903. data/lib/puppet/type/file/source.rb +110 -99
  904. data/lib/puppet/type/file/target.rb +25 -26
  905. data/lib/puppet/type/file/type.rb +5 -3
  906. data/lib/puppet/type/file.rb +206 -109
  907. data/lib/puppet/type/filebucket.rb +24 -18
  908. data/lib/puppet/type/group.rb +22 -19
  909. data/lib/puppet/type/notify.rb +8 -6
  910. data/lib/puppet/type/package.rb +206 -60
  911. data/lib/puppet/type/resources.rb +44 -42
  912. data/lib/puppet/type/schedule.rb +25 -21
  913. data/lib/puppet/type/service.rb +79 -24
  914. data/lib/puppet/type/stage.rb +2 -0
  915. data/lib/puppet/type/tidy.rb +79 -48
  916. data/lib/puppet/type/user.rb +146 -102
  917. data/lib/puppet/type/whit.rb +2 -1
  918. data/lib/puppet/type.rb +315 -359
  919. data/lib/puppet/util/at_fork/noop.rb +2 -0
  920. data/lib/puppet/util/at_fork/solaris.rb +38 -40
  921. data/lib/puppet/util/at_fork.rb +7 -5
  922. data/lib/puppet/util/autoload.rb +28 -41
  923. data/lib/puppet/util/backups.rb +13 -11
  924. data/lib/puppet/util/character_encoding.rb +18 -11
  925. data/lib/puppet/util/checksums.rb +37 -19
  926. data/lib/puppet/util/classgen.rb +29 -28
  927. data/lib/puppet/util/colors.rb +68 -66
  928. data/lib/puppet/util/command_line/puppet_option_parser.rb +20 -18
  929. data/lib/puppet/util/command_line/trollop.rb +695 -673
  930. data/lib/puppet/util/command_line.rb +25 -15
  931. data/lib/puppet/util/constant_inflector.rb +4 -3
  932. data/lib/puppet/util/diff.rb +21 -20
  933. data/lib/puppet/util/docs.rb +8 -4
  934. data/lib/puppet/util/errors.rb +13 -11
  935. data/lib/puppet/util/execution.rb +75 -55
  936. data/lib/puppet/util/execution_stub.rb +2 -0
  937. data/lib/puppet/util/feature.rb +26 -14
  938. data/lib/puppet/util/file_watcher.rb +3 -0
  939. data/lib/puppet/util/fileparsing.rb +71 -64
  940. data/lib/puppet/util/filetype.rb +46 -45
  941. data/lib/puppet/util/http_proxy.rb +4 -205
  942. data/lib/puppet/util/inifile.rb +15 -20
  943. data/lib/puppet/util/instance_loader.rb +19 -11
  944. data/lib/puppet/util/json.rb +27 -2
  945. data/lib/puppet/util/json_lockfile.rb +5 -2
  946. data/lib/puppet/util/ldap/connection.rb +26 -22
  947. data/lib/puppet/util/ldap/generator.rb +3 -1
  948. data/lib/puppet/util/ldap/manager.rb +29 -27
  949. data/lib/puppet/util/ldap.rb +2 -0
  950. data/lib/puppet/util/libuser.rb +3 -2
  951. data/lib/puppet/util/limits.rb +3 -1
  952. data/lib/puppet/util/lockfile.rb +8 -8
  953. data/lib/puppet/util/log/destination.rb +4 -3
  954. data/lib/puppet/util/log/destinations.rb +27 -33
  955. data/lib/puppet/util/log.rb +71 -50
  956. data/lib/puppet/util/logging.rb +69 -77
  957. data/lib/puppet/util/metaid.rb +2 -1
  958. data/lib/puppet/util/metric.rb +15 -11
  959. data/lib/puppet/util/monkey_patches.rb +58 -52
  960. data/lib/puppet/util/multi_match.rb +9 -5
  961. data/lib/puppet/util/network_device/base.rb +6 -5
  962. data/lib/puppet/util/network_device/config.rb +11 -11
  963. data/lib/puppet/util/network_device/transport/base.rb +3 -3
  964. data/lib/puppet/util/network_device/transport.rb +3 -1
  965. data/lib/puppet/util/network_device.rb +2 -0
  966. data/lib/puppet/util/package/version/debian.rb +177 -0
  967. data/lib/puppet/util/package/version/gem.rb +18 -0
  968. data/lib/puppet/util/package/version/pip.rb +173 -0
  969. data/lib/puppet/util/package/version/range/eq.rb +17 -0
  970. data/lib/puppet/util/package/version/range/gt.rb +17 -0
  971. data/lib/puppet/util/package/version/range/gt_eq.rb +17 -0
  972. data/lib/puppet/util/package/version/range/lt.rb +17 -0
  973. data/lib/puppet/util/package/version/range/lt_eq.rb +17 -0
  974. data/lib/puppet/util/package/version/range/min_max.rb +26 -0
  975. data/lib/puppet/util/package/version/range/simple.rb +13 -0
  976. data/lib/puppet/util/package/version/range.rb +57 -0
  977. data/lib/puppet/util/package/version/rpm.rb +75 -0
  978. data/lib/puppet/util/package.rb +29 -17
  979. data/lib/puppet/util/pidlock.rb +49 -8
  980. data/lib/puppet/util/platform.rb +40 -6
  981. data/lib/puppet/util/plist.rb +23 -17
  982. data/lib/puppet/util/posix.rb +81 -27
  983. data/lib/puppet/util/profiler/aggregate.rb +7 -10
  984. data/lib/puppet/util/profiler/around_profiler.rb +2 -1
  985. data/lib/puppet/util/profiler/logging.rb +3 -1
  986. data/lib/puppet/util/profiler/object_counts.rb +3 -1
  987. data/lib/puppet/util/profiler/wall_clock.rb +5 -4
  988. data/lib/puppet/util/profiler.rb +5 -3
  989. data/lib/puppet/util/provider_features.rb +15 -13
  990. data/lib/puppet/util/psych_support.rb +2 -0
  991. data/lib/puppet/util/rdoc/code_objects.rb +20 -21
  992. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +120 -128
  993. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +62 -79
  994. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +32 -29
  995. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +3 -1
  996. data/lib/puppet/util/rdoc/parser.rb +8 -6
  997. data/lib/puppet/util/rdoc.rb +12 -18
  998. data/lib/puppet/util/reference.rb +9 -33
  999. data/lib/puppet/util/resource_template.rb +7 -5
  1000. data/lib/puppet/util/retry_action.rb +7 -6
  1001. data/lib/puppet/util/rpm_compare.rb +196 -0
  1002. data/lib/puppet/util/rubygems.rb +9 -5
  1003. data/lib/puppet/util/run_mode.rb +59 -5
  1004. data/lib/puppet/util/selinux.rb +82 -27
  1005. data/lib/puppet/util/skip_tags.rb +7 -1
  1006. data/lib/puppet/util/splayer.rb +2 -0
  1007. data/lib/puppet/util/storage.rb +14 -15
  1008. data/lib/puppet/util/suidmanager.rb +40 -40
  1009. data/lib/puppet/util/symbolic_file_mode.rb +96 -84
  1010. data/lib/puppet/util/tag_set.rb +5 -3
  1011. data/lib/puppet/util/tagging.rb +14 -14
  1012. data/lib/puppet/util/terminal.rb +6 -4
  1013. data/lib/puppet/util/user_attr.rb +9 -7
  1014. data/lib/puppet/util/warnings.rb +4 -0
  1015. data/lib/puppet/util/watched_file.rb +5 -2
  1016. data/lib/puppet/util/watcher/change_watcher.rb +2 -0
  1017. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -1
  1018. data/lib/puppet/util/watcher/timer.rb +2 -0
  1019. data/lib/puppet/util/watcher.rb +8 -8
  1020. data/lib/puppet/util/windows/access_control_entry.rb +4 -2
  1021. data/lib/puppet/util/windows/access_control_list.rb +10 -7
  1022. data/lib/puppet/util/windows/adsi.rb +168 -77
  1023. data/lib/puppet/util/windows/com.rb +10 -7
  1024. data/lib/puppet/util/windows/daemon.rb +340 -0
  1025. data/lib/puppet/util/windows/error.rb +9 -6
  1026. data/lib/puppet/util/windows/eventlog.rb +18 -24
  1027. data/lib/puppet/util/windows/file.rb +57 -287
  1028. data/lib/puppet/util/windows/monkey_patches/process.rb +413 -0
  1029. data/lib/puppet/util/windows/principal.rb +55 -43
  1030. data/lib/puppet/util/windows/process.rb +87 -244
  1031. data/lib/puppet/util/windows/registry.rb +117 -72
  1032. data/lib/puppet/util/windows/root_certs.rb +7 -5
  1033. data/lib/puppet/util/windows/security.rb +118 -92
  1034. data/lib/puppet/util/windows/security_descriptor.rb +3 -1
  1035. data/lib/puppet/util/windows/service.rb +190 -466
  1036. data/lib/puppet/util/windows/sid.rb +37 -28
  1037. data/lib/puppet/util/windows/string.rb +14 -13
  1038. data/lib/puppet/util/windows/user.rb +277 -33
  1039. data/lib/puppet/util/windows.rb +32 -26
  1040. data/lib/puppet/util/yaml.rb +17 -22
  1041. data/lib/puppet/util.rb +230 -182
  1042. data/lib/puppet/vendor/require_vendored.rb +0 -2
  1043. data/lib/puppet/vendor.rb +5 -3
  1044. data/lib/puppet/version.rb +6 -6
  1045. data/lib/puppet/x509/cert_provider.rb +405 -0
  1046. data/lib/puppet/x509/pem_store.rb +57 -0
  1047. data/lib/puppet/x509.rb +13 -0
  1048. data/lib/puppet.rb +124 -79
  1049. data/lib/puppet_pal.rb +7 -1132
  1050. data/lib/puppet_x.rb +2 -0
  1051. data/locales/puppet.pot +3096 -3030
  1052. data/man/man5/puppet.conf.5 +637 -299
  1053. data/man/man8/puppet-agent.8 +86 -69
  1054. data/man/man8/puppet-apply.8 +7 -4
  1055. data/man/man8/puppet-catalog.8 +38 -14
  1056. data/man/man8/puppet-config.8 +6 -6
  1057. data/man/man8/puppet-describe.8 +1 -1
  1058. data/man/man8/puppet-device.8 +6 -3
  1059. data/man/man8/puppet-doc.8 +1 -1
  1060. data/man/man8/puppet-epp.8 +1 -1
  1061. data/man/man8/puppet-facts.8 +65 -17
  1062. data/man/man8/puppet-filebucket.8 +26 -7
  1063. data/man/man8/puppet-generate.8 +1 -1
  1064. data/man/man8/puppet-help.8 +6 -3
  1065. data/man/man8/puppet-lookup.8 +9 -6
  1066. data/man/man8/puppet-module.8 +3 -57
  1067. data/man/man8/puppet-node.8 +11 -12
  1068. data/man/man8/puppet-parser.8 +1 -1
  1069. data/man/man8/puppet-plugin.8 +1 -1
  1070. data/man/man8/puppet-report.8 +8 -9
  1071. data/man/man8/puppet-resource.8 +5 -1
  1072. data/man/man8/puppet-script.8 +5 -2
  1073. data/man/man8/puppet-ssl.8 +14 -2
  1074. data/man/man8/puppet.8 +3 -3
  1075. metadata +209 -2622
  1076. data/COMMITTERS.md +0 -244
  1077. data/CONTRIBUTING.md +0 -167
  1078. data/MAINTAINERS +0 -47
  1079. data/conf/auth.conf +0 -150
  1080. data/examples/hiera/etc/hiera.yaml +0 -15
  1081. data/examples/hiera/etc/hieradb/common.yaml +0 -3
  1082. data/examples/hiera/etc/hieradb/dc1.yaml +0 -6
  1083. data/examples/hiera/etc/hieradb/development.yaml +0 -2
  1084. data/examples/hiera/etc/puppet.conf +0 -3
  1085. data/examples/hiera/modules/data/manifests/common.pp +0 -4
  1086. data/examples/hiera/modules/ntp/manifests/data.pp +0 -4
  1087. data/examples/hiera/modules/ntp/templates/ntp.conf.erb +0 -3
  1088. data/examples/hiera/modules/users/manifests/development.pp +0 -4
  1089. data/ext/README.environment +0 -8
  1090. data/ext/autotest/Rakefile +0 -8
  1091. data/ext/autotest/config +0 -43
  1092. data/ext/autotest/readme.rst +0 -16
  1093. data/ext/cert_inspector +0 -140
  1094. data/ext/dbfix.sql +0 -132
  1095. data/ext/debian/README.Debian +0 -8
  1096. data/ext/debian/README.source +0 -2
  1097. data/ext/debian/TODO.Debian +0 -1
  1098. data/ext/debian/changelog.erb +0 -1122
  1099. data/ext/debian/compat +0 -1
  1100. data/ext/debian/control +0 -144
  1101. data/ext/debian/copyright +0 -339
  1102. data/ext/debian/docs +0 -1
  1103. data/ext/debian/fileserver.conf +0 -41
  1104. data/ext/debian/puppet-common.dirs +0 -13
  1105. data/ext/debian/puppet-common.install +0 -3
  1106. data/ext/debian/puppet-common.lintian-overrides +0 -5
  1107. data/ext/debian/puppet-common.manpages +0 -28
  1108. data/ext/debian/puppet-common.postinst +0 -35
  1109. data/ext/debian/puppet-common.postrm +0 -33
  1110. data/ext/debian/puppet-el.dirs +0 -1
  1111. data/ext/debian/puppet-el.emacsen-install +0 -25
  1112. data/ext/debian/puppet-el.emacsen-remove +0 -11
  1113. data/ext/debian/puppet-el.emacsen-startup +0 -9
  1114. data/ext/debian/puppet-el.install +0 -1
  1115. data/ext/debian/puppet-testsuite.install +0 -2
  1116. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  1117. data/ext/debian/puppet.lintian-overrides +0 -3
  1118. data/ext/debian/puppet.logrotate +0 -20
  1119. data/ext/debian/puppet.postinst +0 -20
  1120. data/ext/debian/puppet.postrm +0 -20
  1121. data/ext/debian/puppet.preinst +0 -20
  1122. data/ext/debian/puppetmaster-common.install +0 -2
  1123. data/ext/debian/puppetmaster-common.manpages +0 -2
  1124. data/ext/debian/puppetmaster-common.postinst +0 -6
  1125. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  1126. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  1127. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  1128. data/ext/debian/puppetmaster.README.debian +0 -17
  1129. data/ext/debian/puppetmaster.default +0 -14
  1130. data/ext/debian/puppetmaster.init +0 -137
  1131. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  1132. data/ext/debian/puppetmaster.postinst +0 -20
  1133. data/ext/debian/puppetmaster.postrm +0 -5
  1134. data/ext/debian/puppetmaster.preinst +0 -22
  1135. data/ext/debian/rules +0 -132
  1136. data/ext/debian/source/format +0 -1
  1137. data/ext/debian/source/options +0 -1
  1138. data/ext/debian/vim-puppet.README.Debian +0 -13
  1139. data/ext/debian/vim-puppet.dirs +0 -5
  1140. data/ext/debian/vim-puppet.yaml +0 -7
  1141. data/ext/debian/watch +0 -2
  1142. data/ext/envpuppet +0 -139
  1143. data/ext/envpuppet.bat +0 -14
  1144. data/ext/freebsd/puppetd +0 -26
  1145. data/ext/freebsd/puppetmasterd +0 -26
  1146. data/ext/gentoo/conf.d/puppet +0 -5
  1147. data/ext/gentoo/conf.d/puppetmaster +0 -12
  1148. data/ext/gentoo/init.d/puppet +0 -38
  1149. data/ext/gentoo/init.d/puppetmaster +0 -51
  1150. data/ext/gentoo/puppet/fileserver.conf +0 -41
  1151. data/ext/ips/puppet-agent +0 -44
  1152. data/ext/ips/puppet-master +0 -44
  1153. data/ext/ips/puppet.p5m.erb +0 -12
  1154. data/ext/ips/puppetagent.xml +0 -42
  1155. data/ext/ips/puppetmaster.xml +0 -42
  1156. data/ext/ips/rules +0 -19
  1157. data/ext/ips/transforms +0 -34
  1158. data/ext/ldap/puppet.schema +0 -24
  1159. data/ext/logcheck/puppet +0 -23
  1160. data/ext/nagios/check_puppet.rb +0 -123
  1161. data/ext/osx/file_mapping.yaml +0 -33
  1162. data/ext/osx/postflight.erb +0 -109
  1163. data/ext/osx/preflight.erb +0 -52
  1164. data/ext/osx/prototype.plist.erb +0 -38
  1165. data/ext/puppet-test +0 -476
  1166. data/ext/pure_ruby_dsl/dsl_test.rb +0 -7
  1167. data/ext/redhat/fileserver.conf +0 -41
  1168. data/ext/redhat/logrotate +0 -21
  1169. data/ext/redhat/puppet.spec.erb +0 -842
  1170. data/ext/redhat/server.init +0 -128
  1171. data/ext/redhat/server.sysconfig +0 -13
  1172. data/ext/regexp_nodes/regexp_nodes.rb +0 -270
  1173. data/ext/solaris/pkginfo +0 -6
  1174. data/ext/solaris/smf/puppetd.xml +0 -77
  1175. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  1176. data/ext/solaris/smf/svc-puppetd +0 -71
  1177. data/ext/solaris/smf/svc-puppetmasterd +0 -67
  1178. data/ext/suse/puppet.spec +0 -310
  1179. data/ext/suse/server.init +0 -173
  1180. data/ext/upload_facts.rb +0 -119
  1181. data/ext/windows/eventlog/Rakefile +0 -32
  1182. data/ext/windows/eventlog/puppetres.dll +0 -0
  1183. data/ext/windows/eventlog/puppetres.mc +0 -18
  1184. data/ext/yaml_nodes.rb +0 -105
  1185. data/lib/puppet/application/cert.rb +0 -76
  1186. data/lib/puppet/application/key.rb +0 -4
  1187. data/lib/puppet/application/man.rb +0 -4
  1188. data/lib/puppet/application/status.rb +0 -4
  1189. data/lib/puppet/external/pson/common.rb +0 -374
  1190. data/lib/puppet/external/pson/pure/generator.rb +0 -395
  1191. data/lib/puppet/external/pson/pure/parser.rb +0 -307
  1192. data/lib/puppet/external/pson/pure.rb +0 -15
  1193. data/lib/puppet/external/pson/version.rb +0 -8
  1194. data/lib/puppet/face/key.rb +0 -16
  1195. data/lib/puppet/face/man.rb +0 -145
  1196. data/lib/puppet/face/module/build.rb +0 -14
  1197. data/lib/puppet/face/module/generate.rb +0 -14
  1198. data/lib/puppet/face/module/search.rb +0 -98
  1199. data/lib/puppet/face/status.rb +0 -51
  1200. data/lib/puppet/indirector/certificate/file.rb +0 -8
  1201. data/lib/puppet/indirector/certificate/rest.rb +0 -16
  1202. data/lib/puppet/indirector/certificate_request/file.rb +0 -8
  1203. data/lib/puppet/indirector/certificate_request/memory.rb +0 -6
  1204. data/lib/puppet/indirector/certificate_request/rest.rb +0 -10
  1205. data/lib/puppet/indirector/file_content/http.rb +0 -17
  1206. data/lib/puppet/indirector/key/file.rb +0 -45
  1207. data/lib/puppet/indirector/key/memory.rb +0 -6
  1208. data/lib/puppet/indirector/ssl_file.rb +0 -160
  1209. data/lib/puppet/indirector/status/local.rb +0 -12
  1210. data/lib/puppet/indirector/status/rest.rb +0 -9
  1211. data/lib/puppet/indirector/status.rb +0 -3
  1212. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  1213. data/lib/puppet/network/auth_config_parser.rb +0 -90
  1214. data/lib/puppet/network/authstore.rb +0 -282
  1215. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  1216. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -85
  1217. data/lib/puppet/network/http/compression.rb +0 -120
  1218. data/lib/puppet/network/http/factory.rb +0 -55
  1219. data/lib/puppet/network/http/nocache_pool.rb +0 -21
  1220. data/lib/puppet/network/http/pool.rb +0 -129
  1221. data/lib/puppet/network/http/session.rb +0 -17
  1222. data/lib/puppet/network/http/site.rb +0 -39
  1223. data/lib/puppet/network/resolver.rb +0 -158
  1224. data/lib/puppet/network/rest_controller.rb +0 -2
  1225. data/lib/puppet/network/rights.rb +0 -209
  1226. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -64
  1227. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -20
  1228. data/lib/puppet/parser/environment_compiler.rb +0 -199
  1229. data/lib/puppet/pops/loader/null_loader.rb +0 -60
  1230. data/lib/puppet/pops/types/enumeration.rb +0 -16
  1231. data/lib/puppet/resource/capability_finder.rb +0 -150
  1232. data/lib/puppet/rest/client.rb +0 -83
  1233. data/lib/puppet/rest/errors.rb +0 -14
  1234. data/lib/puppet/rest/response.rb +0 -34
  1235. data/lib/puppet/rest/route.rb +0 -84
  1236. data/lib/puppet/rest/routes.rb +0 -154
  1237. data/lib/puppet/rest/ssl_context.rb +0 -13
  1238. data/lib/puppet/ssl/host.rb +0 -636
  1239. data/lib/puppet/ssl/key.rb +0 -59
  1240. data/lib/puppet/ssl/validator/default_validator.rb +0 -187
  1241. data/lib/puppet/ssl/validator/no_validator.rb +0 -20
  1242. data/lib/puppet/ssl/validator.rb +0 -60
  1243. data/lib/puppet/status.rb +0 -40
  1244. data/lib/puppet/util/connection.rb +0 -74
  1245. data/lib/puppet/util/ssl.rb +0 -92
  1246. data/lib/puppet/util/windows/api_types.rb +0 -282
  1247. data/lib/puppet/vendor/deep_merge/CHANGELOG +0 -45
  1248. data/lib/puppet/vendor/deep_merge/Gemfile +0 -3
  1249. data/lib/puppet/vendor/deep_merge/LICENSE +0 -21
  1250. data/lib/puppet/vendor/deep_merge/PUPPET_README.md +0 -6
  1251. data/lib/puppet/vendor/deep_merge/README.md +0 -113
  1252. data/lib/puppet/vendor/deep_merge/Rakefile +0 -19
  1253. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +0 -35
  1254. data/lib/puppet/vendor/deep_merge/lib/deep_merge/core.rb +0 -210
  1255. data/lib/puppet/vendor/deep_merge/lib/deep_merge/deep_merge_hash.rb +0 -28
  1256. data/lib/puppet/vendor/deep_merge/lib/deep_merge/rails_compat.rb +0 -27
  1257. data/lib/puppet/vendor/deep_merge/lib/deep_merge.rb +0 -2
  1258. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +0 -608
  1259. data/lib/puppet/vendor/load_deep_merge.rb +0 -1
  1260. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  1261. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  1262. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  1263. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  1264. data/lib/puppet/vendor/pathspec/README.md +0 -53
  1265. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  1266. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  1267. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  1268. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  1269. data/locales/ja/puppet.po +0 -11143
  1270. data/man/man8/puppet-key.8 +0 -126
  1271. data/man/man8/puppet-man.8 +0 -76
  1272. data/man/man8/puppet-status.8 +0 -108
  1273. data/spec/fixtures/faulty_face/puppet/face/syntax.rb +0 -8
  1274. data/spec/fixtures/hiera.yaml +0 -9
  1275. data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +0 -2
  1276. data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +0 -6
  1277. data/spec/fixtures/integration/node/environment/sitedir/03_empty.pp +0 -0
  1278. data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +0 -2
  1279. data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +0 -2
  1280. data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +0 -6
  1281. data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +0 -1
  1282. data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +0 -2
  1283. data/spec/fixtures/java.tgz +0 -0
  1284. data/spec/fixtures/manifests/site.pp +0 -0
  1285. data/spec/fixtures/module.tar.gz +0 -0
  1286. data/spec/fixtures/releases/jamtur01-apache/Modulefile +0 -2
  1287. data/spec/fixtures/releases/jamtur01-apache/files/httpd +0 -24
  1288. data/spec/fixtures/releases/jamtur01-apache/files/test.vhost +0 -18
  1289. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +0 -21
  1290. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/type/a2mod.rb +0 -12
  1291. data/spec/fixtures/releases/jamtur01-apache/manifests/dev.pp +0 -5
  1292. data/spec/fixtures/releases/jamtur01-apache/manifests/init.pp +0 -34
  1293. data/spec/fixtures/releases/jamtur01-apache/manifests/params.pp +0 -17
  1294. data/spec/fixtures/releases/jamtur01-apache/manifests/php.pp +0 -5
  1295. data/spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp +0 -15
  1296. data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +0 -15
  1297. data/spec/fixtures/releases/jamtur01-apache/metadata.json +0 -1
  1298. data/spec/fixtures/releases/jamtur01-apache/templates/vhost-default.conf.erb +0 -20
  1299. data/spec/fixtures/releases/jamtur01-apache/tests/apache.pp +0 -1
  1300. data/spec/fixtures/releases/jamtur01-apache/tests/dev.pp +0 -1
  1301. data/spec/fixtures/releases/jamtur01-apache/tests/init.pp +0 -1
  1302. data/spec/fixtures/releases/jamtur01-apache/tests/php.pp +0 -1
  1303. data/spec/fixtures/releases/jamtur01-apache/tests/ssl.pp +0 -1
  1304. data/spec/fixtures/releases/jamtur01-apache/tests/vhost.pp +0 -2
  1305. data/spec/fixtures/stdlib.tgz +0 -0
  1306. data/spec/fixtures/unit/application/environments/production/data/common.yaml +0 -24
  1307. data/spec/fixtures/unit/application/environments/production/environment.conf +0 -1
  1308. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +0 -1
  1309. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +0 -1
  1310. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/environment/data.pp +0 -10
  1311. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +0 -1
  1312. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +0 -3
  1313. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +0 -2
  1314. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +0 -5
  1315. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +0 -5
  1316. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +0 -3
  1317. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +0 -2
  1318. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +0 -5
  1319. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +0 -5
  1320. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +0 -2
  1321. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +0 -2
  1322. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +0 -1
  1323. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +0 -2
  1324. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +0 -5
  1325. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +0 -9
  1326. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +0 -3
  1327. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +0 -2
  1328. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +0 -3
  1329. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +0 -2
  1330. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +0 -3
  1331. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +0 -3
  1332. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +0 -2
  1333. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +0 -2
  1334. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +0 -22
  1335. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +0 -5
  1336. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +0 -48
  1337. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +0 -2
  1338. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +0 -1
  1339. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +0 -30
  1340. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +0 -13
  1341. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +0 -9
  1342. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +0 -4
  1343. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +0 -4
  1344. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +0 -2
  1345. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +0 -7
  1346. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +0 -1
  1347. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +0 -3
  1348. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +0 -2
  1349. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +0 -3
  1350. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server1.yaml +0 -1
  1351. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server2.yaml +0 -1
  1352. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +0 -2
  1353. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +0 -2
  1354. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +0 -20
  1355. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +0 -5
  1356. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +0 -9
  1357. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +0 -4
  1358. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +0 -4
  1359. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +0 -2
  1360. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +0 -7
  1361. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +0 -1
  1362. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +0 -6
  1363. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +0 -5
  1364. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +0 -2
  1365. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +0 -9
  1366. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +0 -4
  1367. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +0 -5
  1368. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +0 -3
  1369. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +0 -9
  1370. data/spec/fixtures/unit/data_providers/environments/production/environment.conf +0 -2
  1371. data/spec/fixtures/unit/data_providers/environments/production/lib/puppet/functions/environment/data.rb +0 -9
  1372. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
  1373. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +0 -10
  1374. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +0 -9
  1375. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/functions/data.pp +0 -6
  1376. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/manifests/init.pp +0 -9
  1377. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +0 -9
  1378. data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +0 -22
  1379. data/spec/fixtures/unit/functions/lookup/data/common.yaml +0 -19
  1380. data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +0 -18
  1381. data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +0 -7
  1382. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +0 -19
  1383. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/environment.conf +0 -2
  1384. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/lib/puppet/functions/environment/data.rb +0 -13
  1385. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
  1386. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/manifests/init.pp +0 -8
  1387. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +0 -9
  1388. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -7
  1389. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/manifests/init.pp +0 -2
  1390. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +0 -9
  1391. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -9
  1392. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/manifests/init.pp +0 -2
  1393. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +0 -9
  1394. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json +0 -0
  1395. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/hiera.yaml +0 -5
  1396. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/manifests/init.pp +0 -2
  1397. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/metadata.json +0 -9
  1398. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/data/empty_key.json +0 -1
  1399. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/hiera.yaml +0 -5
  1400. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/manifests/init.pp +0 -2
  1401. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/metadata.json +0 -9
  1402. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -1
  1403. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/hiera.yaml +0 -5
  1404. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -2
  1405. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/metadata.json +0 -9
  1406. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/data/empty.yaml +0 -2
  1407. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/hiera.yaml +0 -5
  1408. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/manifests/init.pp +0 -2
  1409. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/metadata.json +0 -9
  1410. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/data/first.json +0 -4
  1411. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/hiera.yaml +0 -8
  1412. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/manifests/init.pp +0 -5
  1413. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/metadata.json +0 -9
  1414. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -9
  1415. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/manifests/init.pp +0 -3
  1416. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/metadata.json +0 -9
  1417. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/no_provider/manifests/init.pp +0 -2
  1418. data/spec/fixtures/unit/indirector/data_binding/hiera/global.yaml +0 -10
  1419. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +0 -1
  1420. data/spec/fixtures/unit/indirector/hiera/global.yaml +0 -10
  1421. data/spec/fixtures/unit/indirector/hiera/invalid.yaml +0 -1
  1422. data/spec/fixtures/unit/module/trailing-comma.json +0 -24
  1423. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +0 -3
  1424. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +0 -3
  1425. data/spec/fixtures/unit/parser/lexer/aliastest.pp +0 -16
  1426. data/spec/fixtures/unit/parser/lexer/append.pp +0 -11
  1427. data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +0 -14
  1428. data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +0 -8
  1429. data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +0 -3
  1430. data/spec/fixtures/unit/parser/lexer/casestatement.pp +0 -65
  1431. data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +0 -15
  1432. data/spec/fixtures/unit/parser/lexer/classincludes.pp +0 -17
  1433. data/spec/fixtures/unit/parser/lexer/classpathtest.pp +0 -11
  1434. data/spec/fixtures/unit/parser/lexer/collection.pp +0 -10
  1435. data/spec/fixtures/unit/parser/lexer/collection_override.pp +0 -8
  1436. data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +0 -20
  1437. data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +0 -11
  1438. data/spec/fixtures/unit/parser/lexer/componentrequire.pp +0 -8
  1439. data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +0 -23
  1440. data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +0 -17
  1441. data/spec/fixtures/unit/parser/lexer/emptyclass.pp +0 -9
  1442. data/spec/fixtures/unit/parser/lexer/emptyexec.pp +0 -3
  1443. data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +0 -9
  1444. data/spec/fixtures/unit/parser/lexer/falsevalues.pp +0 -3
  1445. data/spec/fixtures/unit/parser/lexer/filecreate.pp +0 -11
  1446. data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +0 -5
  1447. data/spec/fixtures/unit/parser/lexer/fqparents.pp +0 -11
  1448. data/spec/fixtures/unit/parser/lexer/funccomma.pp +0 -5
  1449. data/spec/fixtures/unit/parser/lexer/hash.pp +0 -33
  1450. data/spec/fixtures/unit/parser/lexer/ifexpression.pp +0 -12
  1451. data/spec/fixtures/unit/parser/lexer/implicititeration.pp +0 -15
  1452. data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +0 -10
  1453. data/spec/fixtures/unit/parser/lexer/multipleclass.pp +0 -9
  1454. data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +0 -7
  1455. data/spec/fixtures/unit/parser/lexer/multisubs.pp +0 -13
  1456. data/spec/fixtures/unit/parser/lexer/namevartest.pp +0 -9
  1457. data/spec/fixtures/unit/parser/lexer/scopetest.pp +0 -13
  1458. data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +0 -49
  1459. data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +0 -5
  1460. data/spec/fixtures/unit/parser/lexer/simpleselector.pp +0 -38
  1461. data/spec/fixtures/unit/parser/lexer/singleary.pp +0 -19
  1462. data/spec/fixtures/unit/parser/lexer/singlequote.pp +0 -11
  1463. data/spec/fixtures/unit/parser/lexer/singleselector.pp +0 -22
  1464. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -11
  1465. data/spec/fixtures/unit/parser/lexer/tag.pp +0 -9
  1466. data/spec/fixtures/unit/parser/lexer/tagged.pp +0 -35
  1467. data/spec/fixtures/unit/parser/lexer/virtualresources.pp +0 -14
  1468. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +0 -10
  1469. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +0 -10
  1470. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +0 -20
  1471. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +0 -18
  1472. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +0 -5
  1473. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +0 -6
  1474. data/spec/fixtures/unit/pops/binder/config/binder_config/nolayer/binder_config.yaml +0 -6
  1475. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +0 -9
  1476. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +0 -3
  1477. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/callee.rb +0 -5
  1478. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +0 -6
  1479. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +0 -5
  1480. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +0 -8
  1481. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +0 -1
  1482. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +0 -5
  1483. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +0 -5
  1484. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +0 -5
  1485. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +0 -5
  1486. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller.rb +0 -5
  1487. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +0 -5
  1488. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +0 -5
  1489. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +0 -5
  1490. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +0 -5
  1491. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +0 -87
  1492. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/metadata.json +0 -10
  1493. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +0 -1
  1494. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +0 -1
  1495. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +0 -11
  1496. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee.rb +0 -8
  1497. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee_ws.rb +0 -8
  1498. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/metadata.json +0 -9
  1499. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcalled.pp +0 -3
  1500. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller.pp +0 -3
  1501. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller4.pp +0 -3
  1502. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller.rb +0 -5
  1503. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller_ws.rb +0 -12
  1504. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/callingpuppet.rb +0 -5
  1505. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/metadata.json +0 -9
  1506. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/functions/hello.pp +0 -3
  1507. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/manifests/init.pp +0 -3
  1508. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/metadata.json +0 -10
  1509. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +0 -10
  1510. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/hello.pp +0 -3
  1511. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/subspace/hello.pp +0 -3
  1512. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb +0 -5
  1513. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb +0 -5
  1514. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp +0 -3
  1515. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +0 -10
  1516. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb +0 -6
  1517. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp +0 -3
  1518. data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +0 -16
  1519. data/spec/fixtures/unit/pops/parser/lexer/append.pp +0 -11
  1520. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +0 -14
  1521. data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +0 -8
  1522. data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +0 -3
  1523. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +0 -65
  1524. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +0 -15
  1525. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +0 -17
  1526. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +0 -11
  1527. data/spec/fixtures/unit/pops/parser/lexer/collection.pp +0 -10
  1528. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +0 -8
  1529. data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +0 -20
  1530. data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +0 -11
  1531. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +0 -8
  1532. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +0 -23
  1533. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +0 -17
  1534. data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +0 -9
  1535. data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +0 -3
  1536. data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +0 -9
  1537. data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +0 -3
  1538. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +0 -11
  1539. data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +0 -5
  1540. data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +0 -11
  1541. data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +0 -5
  1542. data/spec/fixtures/unit/pops/parser/lexer/hash.pp +0 -33
  1543. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +0 -12
  1544. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +0 -15
  1545. data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +0 -10
  1546. data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +0 -9
  1547. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +0 -7
  1548. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +0 -13
  1549. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +0 -9
  1550. data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +0 -13
  1551. data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +0 -49
  1552. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +0 -5
  1553. data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +0 -38
  1554. data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +0 -19
  1555. data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +0 -11
  1556. data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +0 -22
  1557. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -11
  1558. data/spec/fixtures/unit/pops/parser/lexer/tag.pp +0 -9
  1559. data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +0 -35
  1560. data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +0 -14
  1561. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_input.out +0 -1
  1562. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_output.out +0 -1
  1563. data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +0 -272
  1564. data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +0 -3
  1565. data/spec/fixtures/unit/provider/cron/parsed/managed +0 -6
  1566. data/spec/fixtures/unit/provider/cron/parsed/simple +0 -9
  1567. data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +0 -4
  1568. data/spec/fixtures/unit/provider/package/gem/line-with-1.8.5-warning +0 -14
  1569. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.detail +0 -19
  1570. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.list +0 -10
  1571. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.query +0 -1
  1572. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +0 -2
  1573. data/spec/fixtures/unit/provider/package/pkg/dummy_implicit_version +0 -3
  1574. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris10 +0 -1
  1575. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.certificate_warning +0 -2
  1576. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.installed +0 -1
  1577. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known +0 -1
  1578. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed +0 -1
  1579. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known +0 -1
  1580. data/spec/fixtures/unit/provider/package/pkg/incomplete +0 -1
  1581. data/spec/fixtures/unit/provider/package/pkg/solaris11 +0 -2
  1582. data/spec/fixtures/unit/provider/package/pkg/unknown_status +0 -12
  1583. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -7
  1584. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +0 -1
  1585. data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
  1586. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +0 -3
  1587. data/spec/fixtures/unit/provider/package/sun/dummy.server +0 -12
  1588. data/spec/fixtures/unit/provider/package/sun/simple +0 -24
  1589. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +0 -187
  1590. data/spec/fixtures/unit/provider/package/yum/yum-check-update-multiline.txt +0 -201
  1591. data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +0 -195
  1592. data/spec/fixtures/unit/provider/package/yum/yum-check-update-plugin-output.txt +0 -36
  1593. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +0 -184
  1594. data/spec/fixtures/unit/provider/package/yum/yum-check-update-simple.txt +0 -13
  1595. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-SLES11sp1.out +0 -369
  1596. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-empty.out +0 -3
  1597. data/spec/fixtures/unit/provider/parsedfile/simple.txt +0 -7
  1598. data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +0 -3
  1599. data/spec/fixtures/unit/provider/service/gentoo/rc_update_show +0 -30
  1600. data/spec/fixtures/unit/provider/service/openbsd/rcctl_getall +0 -6
  1601. data/spec/fixtures/unit/provider/service/openrc/rcservice_list +0 -8
  1602. data/spec/fixtures/unit/provider/service/openrc/rcstatus +0 -43
  1603. data/spec/fixtures/unit/provider/service/smf/svcs.out +0 -4
  1604. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +0 -6
  1605. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +0 -13
  1606. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +0 -7
  1607. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -32
  1608. data/spec/fixtures/unit/reports/tagmail/tagmail_email.conf +0 -2
  1609. data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +0 -3
  1610. data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +0 -30
  1611. data/spec/fixtures/unit/ssl/certificate/old-style-cert-exts.pem +0 -33
  1612. data/spec/fixtures/unit/ssl/certificate_request/old-style-cert-request.pem +0 -28
  1613. data/spec/fixtures/unit/type/user/authorized_keys +0 -6
  1614. data/spec/fixtures/unit/util/filetype/aixtab_output +0 -44
  1615. data/spec/fixtures/unit/util/filetype/suntab_output +0 -9
  1616. data/spec/fixtures/unit/util/monkey_patches/x509.pem +0 -32
  1617. data/spec/fixtures/unit/util/rdoc/basic.pp +0 -16
  1618. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +0 -24
  1619. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +0 -24
  1620. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +0 -24
  1621. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +0 -205
  1622. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +0 -213
  1623. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +0 -213
  1624. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +0 -205
  1625. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +0 -197
  1626. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +0 -205
  1627. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +0 -205
  1628. data/spec/fixtures/yaml/report2.6.x.yaml +0 -190
  1629. data/spec/fixtures/yaml/test.local.yaml +0 -16
  1630. data/spec/integration/agent/logging_spec.rb +0 -181
  1631. data/spec/integration/application/apply_spec.rb +0 -535
  1632. data/spec/integration/application/doc_spec.rb +0 -15
  1633. data/spec/integration/application/lookup_spec.rb +0 -176
  1634. data/spec/integration/configurer_spec.rb +0 -64
  1635. data/spec/integration/data_binding_spec.rb +0 -196
  1636. data/spec/integration/defaults_spec.rb +0 -254
  1637. data/spec/integration/directory_environments_spec.rb +0 -67
  1638. data/spec/integration/environments/default_manifest_spec.rb +0 -215
  1639. data/spec/integration/environments/setting_hooks_spec.rb +0 -27
  1640. data/spec/integration/environments/settings_interpolation_spec.rb +0 -110
  1641. data/spec/integration/environments/settings_spec.rb +0 -128
  1642. data/spec/integration/faces/config_spec.rb +0 -92
  1643. data/spec/integration/faces/documentation_spec.rb +0 -58
  1644. data/spec/integration/faces/plugin_spec.rb +0 -61
  1645. data/spec/integration/file_bucket/file_spec.rb +0 -52
  1646. data/spec/integration/file_serving/content_spec.rb +0 -8
  1647. data/spec/integration/file_serving/fileset_spec.rb +0 -13
  1648. data/spec/integration/file_serving/metadata_spec.rb +0 -9
  1649. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -21
  1650. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  1651. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -76
  1652. data/spec/integration/indirector/direct_file_server_spec.rb +0 -92
  1653. data/spec/integration/indirector/facts/facter_spec.rb +0 -109
  1654. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -109
  1655. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -78
  1656. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  1657. data/spec/integration/network/authconfig_spec.rb +0 -257
  1658. data/spec/integration/network/formats_spec.rb +0 -91
  1659. data/spec/integration/network/http/api/indirected_routes_spec.rb +0 -60
  1660. data/spec/integration/node/environment_spec.rb +0 -156
  1661. data/spec/integration/node/facts_spec.rb +0 -41
  1662. data/spec/integration/node_spec.rb +0 -78
  1663. data/spec/integration/parser/catalog_spec.rb +0 -110
  1664. data/spec/integration/parser/class_spec.rb +0 -33
  1665. data/spec/integration/parser/collection_spec.rb +0 -353
  1666. data/spec/integration/parser/compiler_spec.rb +0 -1199
  1667. data/spec/integration/parser/conditionals_spec.rb +0 -92
  1668. data/spec/integration/parser/dynamic_scoping_spec.rb +0 -66
  1669. data/spec/integration/parser/environment_spec.rb +0 -47
  1670. data/spec/integration/parser/node_spec.rb +0 -172
  1671. data/spec/integration/parser/parameter_defaults_spec.rb +0 -358
  1672. data/spec/integration/parser/pcore_resource_spec.rb +0 -260
  1673. data/spec/integration/parser/resource_expressions_spec.rb +0 -222
  1674. data/spec/integration/parser/scope_spec.rb +0 -728
  1675. data/spec/integration/parser/script_compiler_spec.rb +0 -113
  1676. data/spec/integration/parser/undef_param_spec.rb +0 -95
  1677. data/spec/integration/provider/service/init_spec.rb +0 -48
  1678. data/spec/integration/provider/service/systemd_spec.rb +0 -24
  1679. data/spec/integration/provider/service/windows_spec.rb +0 -51
  1680. data/spec/integration/reference/providers_spec.rb +0 -22
  1681. data/spec/integration/reports_spec.rb +0 -14
  1682. data/spec/integration/resource/catalog_spec.rb +0 -50
  1683. data/spec/integration/resource/type_collection_spec.rb +0 -93
  1684. data/spec/integration/ssl/certificate_request_spec.rb +0 -45
  1685. data/spec/integration/ssl/host_spec.rb +0 -73
  1686. data/spec/integration/ssl/key_spec.rb +0 -100
  1687. data/spec/integration/test/test_helper_spec.rb +0 -32
  1688. data/spec/integration/transaction/report_spec.rb +0 -711
  1689. data/spec/integration/transaction_spec.rb +0 -559
  1690. data/spec/integration/type/exec_spec.rb +0 -77
  1691. data/spec/integration/type/file_spec.rb +0 -1965
  1692. data/spec/integration/type/package_spec.rb +0 -204
  1693. data/spec/integration/type/tidy_spec.rb +0 -46
  1694. data/spec/integration/type_spec.rb +0 -31
  1695. data/spec/integration/util/autoload_spec.rb +0 -105
  1696. data/spec/integration/util/execution_spec.rb +0 -55
  1697. data/spec/integration/util/rdoc/parser_spec.rb +0 -172
  1698. data/spec/integration/util/settings_spec.rb +0 -116
  1699. data/spec/integration/util/windows/adsi_spec.rb +0 -184
  1700. data/spec/integration/util/windows/principal_spec.rb +0 -259
  1701. data/spec/integration/util/windows/process_spec.rb +0 -112
  1702. data/spec/integration/util/windows/registry_spec.rb +0 -296
  1703. data/spec/integration/util/windows/security_spec.rb +0 -1012
  1704. data/spec/integration/util/windows/user_spec.rb +0 -167
  1705. data/spec/integration/util_spec.rb +0 -133
  1706. data/spec/lib/matchers/containment_matchers.rb +0 -52
  1707. data/spec/lib/matchers/include.rb +0 -27
  1708. data/spec/lib/matchers/include_in_order.rb +0 -20
  1709. data/spec/lib/matchers/include_in_order_spec.rb +0 -30
  1710. data/spec/lib/matchers/include_spec.rb +0 -32
  1711. data/spec/lib/matchers/json.rb +0 -132
  1712. data/spec/lib/matchers/match_tokens2.rb +0 -74
  1713. data/spec/lib/matchers/relationship_graph_matchers.rb +0 -48
  1714. data/spec/lib/matchers/resource.rb +0 -74
  1715. data/spec/lib/puppet/certificate_factory.rb +0 -218
  1716. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -8
  1717. data/spec/lib/puppet/face/basetest.rb +0 -51
  1718. data/spec/lib/puppet/face/huzzah/obsolete.rb +0 -6
  1719. data/spec/lib/puppet/face/huzzah.rb +0 -8
  1720. data/spec/lib/puppet/face/version_matching.rb +0 -12
  1721. data/spec/lib/puppet/indirector/indirector_testing/json.rb +0 -6
  1722. data/spec/lib/puppet/indirector/indirector_testing/memory.rb +0 -7
  1723. data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +0 -6
  1724. data/spec/lib/puppet/indirector_proxy.rb +0 -34
  1725. data/spec/lib/puppet/indirector_testing.rb +0 -31
  1726. data/spec/lib/puppet/test_ca.rb +0 -109
  1727. data/spec/lib/puppet_spec/character_encoding.rb +0 -12
  1728. data/spec/lib/puppet_spec/compiler.rb +0 -112
  1729. data/spec/lib/puppet_spec/files.rb +0 -108
  1730. data/spec/lib/puppet_spec/fixtures.rb +0 -28
  1731. data/spec/lib/puppet_spec/handler.rb +0 -53
  1732. data/spec/lib/puppet_spec/language.rb +0 -75
  1733. data/spec/lib/puppet_spec/matchers.rb +0 -161
  1734. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +0 -56
  1735. data/spec/lib/puppet_spec/module_tool/stub_source.rb +0 -136
  1736. data/spec/lib/puppet_spec/modules.rb +0 -57
  1737. data/spec/lib/puppet_spec/network.rb +0 -109
  1738. data/spec/lib/puppet_spec/pops.rb +0 -29
  1739. data/spec/lib/puppet_spec/scope.rb +0 -14
  1740. data/spec/lib/puppet_spec/settings.rb +0 -32
  1741. data/spec/lib/puppet_spec/ssl.rb +0 -265
  1742. data/spec/lib/puppet_spec/unindent.rb +0 -5
  1743. data/spec/lib/puppet_spec/validators.rb +0 -37
  1744. data/spec/lib/puppet_spec/verbose.rb +0 -9
  1745. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -21
  1746. data/spec/shared_behaviours/an_indirector_face.rb +0 -6
  1747. data/spec/shared_behaviours/documentation_on_faces.rb +0 -263
  1748. data/spec/shared_behaviours/file_server_terminus.rb +0 -39
  1749. data/spec/shared_behaviours/file_serving.rb +0 -75
  1750. data/spec/shared_behaviours/file_serving_model.rb +0 -53
  1751. data/spec/shared_behaviours/hiera_indirections.rb +0 -99
  1752. data/spec/shared_behaviours/iterative_functions.rb +0 -69
  1753. data/spec/shared_behaviours/memory_terminus.rb +0 -28
  1754. data/spec/shared_behaviours/path_parameters.rb +0 -160
  1755. data/spec/shared_behaviours/store_configs_terminus.rb +0 -21
  1756. data/spec/shared_behaviours/things_that_declare_options.rb +0 -262
  1757. data/spec/shared_contexts/checksum.rb +0 -65
  1758. data/spec/shared_contexts/digests.rb +0 -100
  1759. data/spec/shared_contexts/types_setup.rb +0 -202
  1760. data/spec/shared_examples/rhel_package_provider.rb +0 -356
  1761. data/spec/spec_helper.rb +0 -205
  1762. data/spec/unit/agent/disabler_spec.rb +0 -64
  1763. data/spec/unit/agent/locker_spec.rb +0 -100
  1764. data/spec/unit/agent_spec.rb +0 -348
  1765. data/spec/unit/application/agent_spec.rb +0 -596
  1766. data/spec/unit/application/apply_spec.rb +0 -550
  1767. data/spec/unit/application/config_spec.rb +0 -13
  1768. data/spec/unit/application/describe_spec.rb +0 -98
  1769. data/spec/unit/application/device_spec.rb +0 -626
  1770. data/spec/unit/application/doc_spec.rb +0 -335
  1771. data/spec/unit/application/face_base_spec.rb +0 -453
  1772. data/spec/unit/application/facts_spec.rb +0 -23
  1773. data/spec/unit/application/filebucket_spec.rb +0 -307
  1774. data/spec/unit/application/indirection_base_spec.rb +0 -48
  1775. data/spec/unit/application/lookup_spec.rb +0 -570
  1776. data/spec/unit/application/resource_spec.rb +0 -195
  1777. data/spec/unit/application/ssl_spec.rb +0 -391
  1778. data/spec/unit/application_spec.rb +0 -695
  1779. data/spec/unit/capability_spec.rb +0 -414
  1780. data/spec/unit/certificate_factory_spec.rb +0 -172
  1781. data/spec/unit/configurer/downloader_spec.rb +0 -233
  1782. data/spec/unit/configurer/fact_handler_spec.rb +0 -152
  1783. data/spec/unit/configurer/plugin_handler_spec.rb +0 -64
  1784. data/spec/unit/configurer_spec.rb +0 -1062
  1785. data/spec/unit/confine/exists_spec.rb +0 -80
  1786. data/spec/unit/confine/false_spec.rb +0 -52
  1787. data/spec/unit/confine/feature_spec.rb +0 -57
  1788. data/spec/unit/confine/true_spec.rb +0 -52
  1789. data/spec/unit/confine/variable_spec.rb +0 -106
  1790. data/spec/unit/confine_collection_spec.rb +0 -133
  1791. data/spec/unit/confine_spec.rb +0 -93
  1792. data/spec/unit/confiner_spec.rb +0 -62
  1793. data/spec/unit/context/trusted_information_spec.rb +0 -155
  1794. data/spec/unit/context_spec.rb +0 -136
  1795. data/spec/unit/daemon_spec.rb +0 -262
  1796. data/spec/unit/data_binding_spec.rb +0 -11
  1797. data/spec/unit/data_providers/function_data_provider_spec.rb +0 -123
  1798. data/spec/unit/data_providers/hiera_data_provider_spec.rb +0 -361
  1799. data/spec/unit/datatypes_spec.rb +0 -353
  1800. data/spec/unit/defaults_spec.rb +0 -193
  1801. data/spec/unit/environments_spec.rb +0 -739
  1802. data/spec/unit/etc_spec.rb +0 -467
  1803. data/spec/unit/external/pson_spec.rb +0 -61
  1804. data/spec/unit/face/catalog_spec.rb +0 -7
  1805. data/spec/unit/face/config_spec.rb +0 -353
  1806. data/spec/unit/face/epp_face_spec.rb +0 -386
  1807. data/spec/unit/face/facts_spec.rb +0 -62
  1808. data/spec/unit/face/generate_spec.rb +0 -230
  1809. data/spec/unit/face/help_spec.rb +0 -209
  1810. data/spec/unit/face/key_spec.rb +0 -10
  1811. data/spec/unit/face/man_spec.rb +0 -26
  1812. data/spec/unit/face/module/install_spec.rb +0 -42
  1813. data/spec/unit/face/module/list_spec.rb +0 -240
  1814. data/spec/unit/face/module/search_spec.rb +0 -212
  1815. data/spec/unit/face/module/uninstall_spec.rb +0 -49
  1816. data/spec/unit/face/module/upgrade_spec.rb +0 -26
  1817. data/spec/unit/face/module_spec.rb +0 -3
  1818. data/spec/unit/face/node_spec.rb +0 -129
  1819. data/spec/unit/face/parser_spec.rb +0 -236
  1820. data/spec/unit/face/plugin_spec.rb +0 -81
  1821. data/spec/unit/face/status_spec.rb +0 -10
  1822. data/spec/unit/face_spec.rb +0 -1
  1823. data/spec/unit/file_bucket/dipper_spec.rb +0 -401
  1824. data/spec/unit/file_bucket/file_spec.rb +0 -60
  1825. data/spec/unit/file_serving/base_spec.rb +0 -165
  1826. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -181
  1827. data/spec/unit/file_serving/configuration_spec.rb +0 -241
  1828. data/spec/unit/file_serving/content_spec.rb +0 -99
  1829. data/spec/unit/file_serving/fileset_spec.rb +0 -352
  1830. data/spec/unit/file_serving/http_metadata_spec.rb +0 -85
  1831. data/spec/unit/file_serving/metadata_spec.rb +0 -551
  1832. data/spec/unit/file_serving/mount/file_spec.rb +0 -189
  1833. data/spec/unit/file_serving/mount/locales_spec.rb +0 -73
  1834. data/spec/unit/file_serving/mount/modules_spec.rb +0 -70
  1835. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -73
  1836. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -73
  1837. data/spec/unit/file_serving/mount/tasks_spec.rb +0 -72
  1838. data/spec/unit/file_serving/mount_spec.rb +0 -31
  1839. data/spec/unit/file_serving/terminus_helper_spec.rb +0 -112
  1840. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -66
  1841. data/spec/unit/file_system/path_pattern_spec.rb +0 -138
  1842. data/spec/unit/file_system/uniquefile_spec.rb +0 -204
  1843. data/spec/unit/file_system_spec.rb +0 -878
  1844. data/spec/unit/forge/errors_spec.rb +0 -80
  1845. data/spec/unit/forge/forge_spec.rb +0 -114
  1846. data/spec/unit/forge/module_release_spec.rb +0 -288
  1847. data/spec/unit/forge/repository_spec.rb +0 -251
  1848. data/spec/unit/forge_spec.rb +0 -276
  1849. data/spec/unit/functions/abs_spec.rb +0 -70
  1850. data/spec/unit/functions/all_spec.rb +0 -97
  1851. data/spec/unit/functions/annotate_spec.rb +0 -175
  1852. data/spec/unit/functions/any_spec.rb +0 -109
  1853. data/spec/unit/functions/assert_type_spec.rb +0 -97
  1854. data/spec/unit/functions/binary_file_spec.rb +0 -46
  1855. data/spec/unit/functions/break_spec.rb +0 -207
  1856. data/spec/unit/functions/call_spec.rb +0 -131
  1857. data/spec/unit/functions/camelcase_spec.rb +0 -34
  1858. data/spec/unit/functions/capitalize_spec.rb +0 -34
  1859. data/spec/unit/functions/ceiling_spec.rb +0 -65
  1860. data/spec/unit/functions/chomp_spec.rb +0 -46
  1861. data/spec/unit/functions/chop_spec.rb +0 -38
  1862. data/spec/unit/functions/compare_spec.rb +0 -147
  1863. data/spec/unit/functions/contain_spec.rb +0 -299
  1864. data/spec/unit/functions/convert_to_spec.rb +0 -25
  1865. data/spec/unit/functions/defined_spec.rb +0 -289
  1866. data/spec/unit/functions/dig_spec.rb +0 -58
  1867. data/spec/unit/functions/downcase_spec.rb +0 -34
  1868. data/spec/unit/functions/each_spec.rb +0 -107
  1869. data/spec/unit/functions/empty_spec.rb +0 -77
  1870. data/spec/unit/functions/epp_spec.rb +0 -172
  1871. data/spec/unit/functions/filter_spec.rb +0 -145
  1872. data/spec/unit/functions/find_file_spec.rb +0 -69
  1873. data/spec/unit/functions/flatten_spec.rb +0 -31
  1874. data/spec/unit/functions/floor_spec.rb +0 -65
  1875. data/spec/unit/functions/get_spec.rb +0 -135
  1876. data/spec/unit/functions/getvar_spec.rb +0 -121
  1877. data/spec/unit/functions/hiera_spec.rb +0 -495
  1878. data/spec/unit/functions/include_spec.rb +0 -190
  1879. data/spec/unit/functions/inline_epp_spec.rb +0 -89
  1880. data/spec/unit/functions/join_spec.rb +0 -33
  1881. data/spec/unit/functions/keys_spec.rb +0 -31
  1882. data/spec/unit/functions/length_spec.rb +0 -50
  1883. data/spec/unit/functions/lest_spec.rb +0 -34
  1884. data/spec/unit/functions/logging_spec.rb +0 -61
  1885. data/spec/unit/functions/lookup_fixture_spec.rb +0 -688
  1886. data/spec/unit/functions/lookup_spec.rb +0 -3326
  1887. data/spec/unit/functions/lstrip_spec.rb +0 -30
  1888. data/spec/unit/functions/map_spec.rb +0 -163
  1889. data/spec/unit/functions/match_spec.rb +0 -74
  1890. data/spec/unit/functions/max_spec.rb +0 -129
  1891. data/spec/unit/functions/min_spec.rb +0 -129
  1892. data/spec/unit/functions/module_directory_spec.rb +0 -43
  1893. data/spec/unit/functions/new_spec.rb +0 -761
  1894. data/spec/unit/functions/next_spec.rb +0 -93
  1895. data/spec/unit/functions/reduce_spec.rb +0 -85
  1896. data/spec/unit/functions/regsubst_spec.rb +0 -114
  1897. data/spec/unit/functions/require_spec.rb +0 -85
  1898. data/spec/unit/functions/return_spec.rb +0 -105
  1899. data/spec/unit/functions/reverse_each_spec.rb +0 -108
  1900. data/spec/unit/functions/round_spec.rb +0 -41
  1901. data/spec/unit/functions/rstrip_spec.rb +0 -30
  1902. data/spec/unit/functions/scanf_spec.rb +0 -32
  1903. data/spec/unit/functions/shared.rb +0 -97
  1904. data/spec/unit/functions/size_spec.rb +0 -50
  1905. data/spec/unit/functions/slice_spec.rb +0 -136
  1906. data/spec/unit/functions/sort_spec.rb +0 -79
  1907. data/spec/unit/functions/split_spec.rb +0 -53
  1908. data/spec/unit/functions/step_spec.rb +0 -113
  1909. data/spec/unit/functions/strftime_spec.rb +0 -152
  1910. data/spec/unit/functions/strip_spec.rb +0 -30
  1911. data/spec/unit/functions/then_spec.rb +0 -40
  1912. data/spec/unit/functions/tree_each_spec.rb +0 -493
  1913. data/spec/unit/functions/type_spec.rb +0 -35
  1914. data/spec/unit/functions/unique_spec.rb +0 -111
  1915. data/spec/unit/functions/unwrap_spec.rb +0 -29
  1916. data/spec/unit/functions/upcase_spec.rb +0 -34
  1917. data/spec/unit/functions/values_spec.rb +0 -30
  1918. data/spec/unit/functions/versioncmp_spec.rb +0 -35
  1919. data/spec/unit/functions/with_spec.rb +0 -31
  1920. data/spec/unit/functions4_spec.rb +0 -1038
  1921. data/spec/unit/gettext/config_spec.rb +0 -144
  1922. data/spec/unit/gettext/module_loading_spec.rb +0 -53
  1923. data/spec/unit/graph/key_spec.rb +0 -41
  1924. data/spec/unit/graph/rb_tree_map_spec.rb +0 -572
  1925. data/spec/unit/graph/relationship_graph_spec.rb +0 -402
  1926. data/spec/unit/graph/sequential_prioritizer_spec.rb +0 -32
  1927. data/spec/unit/graph/simple_graph_spec.rb +0 -760
  1928. data/spec/unit/hiera/scope_spec.rb +0 -93
  1929. data/spec/unit/hiera_puppet_spec.rb +0 -159
  1930. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -1056
  1931. data/spec/unit/indirector/catalog/json_spec.rb +0 -67
  1932. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -12
  1933. data/spec/unit/indirector/catalog/rest_spec.rb +0 -10
  1934. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -17
  1935. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -24
  1936. data/spec/unit/indirector/certificate/file_spec.rb +0 -15
  1937. data/spec/unit/indirector/certificate/rest_spec.rb +0 -63
  1938. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -15
  1939. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -26
  1940. data/spec/unit/indirector/data_binding/hiera_spec.rb +0 -19
  1941. data/spec/unit/indirector/data_binding/none_spec.rb +0 -28
  1942. data/spec/unit/indirector/direct_file_server_spec.rb +0 -88
  1943. data/spec/unit/indirector/envelope_spec.rb +0 -33
  1944. data/spec/unit/indirector/exec_spec.rb +0 -64
  1945. data/spec/unit/indirector/face_spec.rb +0 -83
  1946. data/spec/unit/indirector/facts/facter_spec.rb +0 -159
  1947. data/spec/unit/indirector/facts/network_device_spec.rb +0 -78
  1948. data/spec/unit/indirector/facts/rest_spec.rb +0 -45
  1949. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -17
  1950. data/spec/unit/indirector/facts/yaml_spec.rb +0 -256
  1951. data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -425
  1952. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -10
  1953. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +0 -29
  1954. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -14
  1955. data/spec/unit/indirector/file_content/file_spec.rb +0 -14
  1956. data/spec/unit/indirector/file_content/rest_spec.rb +0 -14
  1957. data/spec/unit/indirector/file_content/selector_spec.rb +0 -10
  1958. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -14
  1959. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -58
  1960. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -13
  1961. data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -11
  1962. data/spec/unit/indirector/file_server_spec.rb +0 -302
  1963. data/spec/unit/indirector/hiera_spec.rb +0 -17
  1964. data/spec/unit/indirector/indirection_spec.rb +0 -866
  1965. data/spec/unit/indirector/json_spec.rb +0 -202
  1966. data/spec/unit/indirector/key/file_spec.rb +0 -80
  1967. data/spec/unit/indirector/memory_spec.rb +0 -27
  1968. data/spec/unit/indirector/msgpack_spec.rb +0 -201
  1969. data/spec/unit/indirector/node/exec_spec.rb +0 -108
  1970. data/spec/unit/indirector/node/memory_spec.rb +0 -18
  1971. data/spec/unit/indirector/node/msgpack_spec.rb +0 -24
  1972. data/spec/unit/indirector/node/plain_spec.rb +0 -36
  1973. data/spec/unit/indirector/node/rest_spec.rb +0 -12
  1974. data/spec/unit/indirector/node/store_configs_spec.rb +0 -17
  1975. data/spec/unit/indirector/node/yaml_spec.rb +0 -24
  1976. data/spec/unit/indirector/none_spec.rb +0 -33
  1977. data/spec/unit/indirector/plain_spec.rb +0 -27
  1978. data/spec/unit/indirector/report/msgpack_spec.rb +0 -28
  1979. data/spec/unit/indirector/report/processor_spec.rb +0 -100
  1980. data/spec/unit/indirector/report/rest_spec.rb +0 -93
  1981. data/spec/unit/indirector/report/yaml_spec.rb +0 -28
  1982. data/spec/unit/indirector/request_spec.rb +0 -561
  1983. data/spec/unit/indirector/resource/ral_spec.rb +0 -132
  1984. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -21
  1985. data/spec/unit/indirector/rest_spec.rb +0 -787
  1986. data/spec/unit/indirector/ssl_file_spec.rb +0 -306
  1987. data/spec/unit/indirector/status/local_spec.rb +0 -11
  1988. data/spec/unit/indirector/status/rest_spec.rb +0 -10
  1989. data/spec/unit/indirector/store_configs_spec.rb +0 -8
  1990. data/spec/unit/indirector/terminus_spec.rb +0 -264
  1991. data/spec/unit/indirector/yaml_spec.rb +0 -189
  1992. data/spec/unit/indirector_spec.rb +0 -149
  1993. data/spec/unit/info_service_spec.rb +0 -498
  1994. data/spec/unit/interface/action_builder_spec.rb +0 -217
  1995. data/spec/unit/interface/action_manager_spec.rb +0 -255
  1996. data/spec/unit/interface/action_spec.rb +0 -680
  1997. data/spec/unit/interface/documentation_spec.rb +0 -33
  1998. data/spec/unit/interface/face_collection_spec.rb +0 -212
  1999. data/spec/unit/interface/option_builder_spec.rb +0 -86
  2000. data/spec/unit/interface/option_spec.rb +0 -156
  2001. data/spec/unit/interface_spec.rb +0 -305
  2002. data/spec/unit/man_spec.rb +0 -32
  2003. data/spec/unit/module_spec.rb +0 -907
  2004. data/spec/unit/module_tool/application_spec.rb +0 -25
  2005. data/spec/unit/module_tool/applications/checksummer_spec.rb +0 -115
  2006. data/spec/unit/module_tool/applications/installer_spec.rb +0 -379
  2007. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  2008. data/spec/unit/module_tool/applications/uninstaller_spec.rb +0 -173
  2009. data/spec/unit/module_tool/applications/unpacker_spec.rb +0 -75
  2010. data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -337
  2011. data/spec/unit/module_tool/install_directory_spec.rb +0 -70
  2012. data/spec/unit/module_tool/installed_modules_spec.rb +0 -49
  2013. data/spec/unit/module_tool/metadata_spec.rb +0 -330
  2014. data/spec/unit/module_tool/tar/gnu_spec.rb +0 -23
  2015. data/spec/unit/module_tool/tar/mini_spec.rb +0 -89
  2016. data/spec/unit/module_tool/tar_spec.rb +0 -37
  2017. data/spec/unit/module_tool_spec.rb +0 -309
  2018. data/spec/unit/network/auth_config_parser_spec.rb +0 -117
  2019. data/spec/unit/network/authconfig_spec.rb +0 -139
  2020. data/spec/unit/network/authorization_spec.rb +0 -62
  2021. data/spec/unit/network/authstore_spec.rb +0 -423
  2022. data/spec/unit/network/format_handler_spec.rb +0 -94
  2023. data/spec/unit/network/format_spec.rb +0 -206
  2024. data/spec/unit/network/format_support_spec.rb +0 -199
  2025. data/spec/unit/network/formats_spec.rb +0 -538
  2026. data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -486
  2027. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  2028. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  2029. data/spec/unit/network/http/api/master/v3/environments_spec.rb +0 -63
  2030. data/spec/unit/network/http/api/master/v3_spec.rb +0 -57
  2031. data/spec/unit/network/http/api_spec.rb +0 -101
  2032. data/spec/unit/network/http/compression_spec.rb +0 -241
  2033. data/spec/unit/network/http/connection_spec.rb +0 -361
  2034. data/spec/unit/network/http/error_spec.rb +0 -30
  2035. data/spec/unit/network/http/factory_spec.rb +0 -119
  2036. data/spec/unit/network/http/handler_spec.rb +0 -179
  2037. data/spec/unit/network/http/nocache_pool_spec.rb +0 -43
  2038. data/spec/unit/network/http/pool_spec.rb +0 -299
  2039. data/spec/unit/network/http/request_spec.rb +0 -110
  2040. data/spec/unit/network/http/response_spec.rb +0 -108
  2041. data/spec/unit/network/http/route_spec.rb +0 -91
  2042. data/spec/unit/network/http/session_spec.rb +0 -43
  2043. data/spec/unit/network/http/site_spec.rb +0 -90
  2044. data/spec/unit/network/http_pool_spec.rb +0 -98
  2045. data/spec/unit/network/http_spec.rb +0 -10
  2046. data/spec/unit/network/resolver_spec.rb +0 -282
  2047. data/spec/unit/network/rights_spec.rb +0 -440
  2048. data/spec/unit/node/environment_spec.rb +0 -527
  2049. data/spec/unit/node/facts_spec.rb +0 -226
  2050. data/spec/unit/node_spec.rb +0 -483
  2051. data/spec/unit/other/selinux_spec.rb +0 -28
  2052. data/spec/unit/parameter/boolean_spec.rb +0 -36
  2053. data/spec/unit/parameter/package_options_spec.rb +0 -44
  2054. data/spec/unit/parameter/path_spec.rb +0 -24
  2055. data/spec/unit/parameter/value_collection_spec.rb +0 -161
  2056. data/spec/unit/parameter/value_spec.rb +0 -83
  2057. data/spec/unit/parameter_spec.rb +0 -272
  2058. data/spec/unit/parser/ast/block_expression_spec.rb +0 -68
  2059. data/spec/unit/parser/ast/leaf_spec.rb +0 -137
  2060. data/spec/unit/parser/compiler_spec.rb +0 -1019
  2061. data/spec/unit/parser/environment_compiler_spec.rb +0 -724
  2062. data/spec/unit/parser/files_spec.rb +0 -102
  2063. data/spec/unit/parser/functions/create_resources_spec.rb +0 -344
  2064. data/spec/unit/parser/functions/digest_spec.rb +0 -27
  2065. data/spec/unit/parser/functions/fail_spec.rb +0 -24
  2066. data/spec/unit/parser/functions/file_spec.rb +0 -100
  2067. data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -74
  2068. data/spec/unit/parser/functions/generate_spec.rb +0 -125
  2069. data/spec/unit/parser/functions/hiera_array_spec.rb +0 -12
  2070. data/spec/unit/parser/functions/hiera_hash_spec.rb +0 -12
  2071. data/spec/unit/parser/functions/hiera_include_spec.rb +0 -12
  2072. data/spec/unit/parser/functions/hiera_spec.rb +0 -12
  2073. data/spec/unit/parser/functions/inline_template_spec.rb +0 -37
  2074. data/spec/unit/parser/functions/lookup_spec.rb +0 -14
  2075. data/spec/unit/parser/functions/realize_spec.rb +0 -70
  2076. data/spec/unit/parser/functions/regsubst_spec.rb +0 -20
  2077. data/spec/unit/parser/functions/scanf_spec.rb +0 -26
  2078. data/spec/unit/parser/functions/shellquote_spec.rb +0 -67
  2079. data/spec/unit/parser/functions/split_spec.rb +0 -14
  2080. data/spec/unit/parser/functions/sprintf_spec.rb +0 -69
  2081. data/spec/unit/parser/functions/tag_spec.rb +0 -31
  2082. data/spec/unit/parser/functions/tagged_spec.rb +0 -37
  2083. data/spec/unit/parser/functions/template_spec.rb +0 -93
  2084. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -29
  2085. data/spec/unit/parser/functions_spec.rb +0 -157
  2086. data/spec/unit/parser/relationship_spec.rb +0 -75
  2087. data/spec/unit/parser/resource/param_spec.rb +0 -32
  2088. data/spec/unit/parser/resource_spec.rb +0 -642
  2089. data/spec/unit/parser/scope_spec.rb +0 -680
  2090. data/spec/unit/parser/templatewrapper_spec.rb +0 -101
  2091. data/spec/unit/parser/type_loader_spec.rb +0 -204
  2092. data/spec/unit/pops/adaptable_spec.rb +0 -140
  2093. data/spec/unit/pops/benchmark_spec.rb +0 -124
  2094. data/spec/unit/pops/containment_spec.rb +0 -0
  2095. data/spec/unit/pops/evaluator/access_ops_spec.rb +0 -561
  2096. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +0 -310
  2097. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +0 -102
  2098. data/spec/unit/pops/evaluator/collections_ops_spec.rb +0 -109
  2099. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +0 -268
  2100. data/spec/unit/pops/evaluator/conditionals_spec.rb +0 -190
  2101. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -1583
  2102. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +0 -75
  2103. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +0 -63
  2104. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +0 -43
  2105. data/spec/unit/pops/evaluator/logical_ops_spec.rb +0 -90
  2106. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -182
  2107. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +0 -44
  2108. data/spec/unit/pops/evaluator/variables_spec.rb +0 -89
  2109. data/spec/unit/pops/factory_rspec_helper.rb +0 -65
  2110. data/spec/unit/pops/factory_spec.rb +0 -310
  2111. data/spec/unit/pops/issues_spec.rb +0 -211
  2112. data/spec/unit/pops/label_provider_spec.rb +0 -46
  2113. data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -131
  2114. data/spec/unit/pops/loaders/environment_loader_spec.rb +0 -172
  2115. data/spec/unit/pops/loaders/loader_paths_spec.rb +0 -43
  2116. data/spec/unit/pops/loaders/loader_spec.rb +0 -487
  2117. data/spec/unit/pops/loaders/loaders_spec.rb +0 -723
  2118. data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -231
  2119. data/spec/unit/pops/loaders/static_loader_spec.rb +0 -85
  2120. data/spec/unit/pops/lookup/context_spec.rb +0 -334
  2121. data/spec/unit/pops/lookup/interpolation_spec.rb +0 -378
  2122. data/spec/unit/pops/lookup/lookup_spec.rb +0 -350
  2123. data/spec/unit/pops/merge_strategy_spec.rb +0 -18
  2124. data/spec/unit/pops/migration_spec.rb +0 -53
  2125. data/spec/unit/pops/model/model_spec.rb +0 -42
  2126. data/spec/unit/pops/model/pn_transformer_spec.rb +0 -57
  2127. data/spec/unit/pops/parser/epp_parser_spec.rb +0 -115
  2128. data/spec/unit/pops/parser/evaluating_parser_spec.rb +0 -89
  2129. data/spec/unit/pops/parser/lexer2_spec.rb +0 -950
  2130. data/spec/unit/pops/parser/locator_spec.rb +0 -44
  2131. data/spec/unit/pops/parser/parse_application_spec.rb +0 -32
  2132. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -382
  2133. data/spec/unit/pops/parser/parse_calls_spec.rb +0 -172
  2134. data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -37
  2135. data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -185
  2136. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -259
  2137. data/spec/unit/pops/parser/parse_functions_spec.rb +0 -19
  2138. data/spec/unit/pops/parser/parse_heredoc_spec.rb +0 -180
  2139. data/spec/unit/pops/parser/parse_lambda_spec.rb +0 -19
  2140. data/spec/unit/pops/parser/parse_plan_spec.rb +0 -48
  2141. data/spec/unit/pops/parser/parse_resource_spec.rb +0 -329
  2142. data/spec/unit/pops/parser/parse_site_spec.rb +0 -48
  2143. data/spec/unit/pops/parser/parser_rspec_helper.rb +0 -17
  2144. data/spec/unit/pops/parser/parser_spec.rb +0 -211
  2145. data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +0 -65
  2146. data/spec/unit/pops/parser/pn_parser_spec.rb +0 -101
  2147. data/spec/unit/pops/pn_spec.rb +0 -148
  2148. data/spec/unit/pops/puppet_stack_spec.rb +0 -108
  2149. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -109
  2150. data/spec/unit/pops/serialization/packer_spec.rb +0 -162
  2151. data/spec/unit/pops/serialization/serialization_spec.rb +0 -458
  2152. data/spec/unit/pops/serialization/to_from_hr_spec.rb +0 -632
  2153. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -157
  2154. data/spec/unit/pops/time/timespan_spec.rb +0 -121
  2155. data/spec/unit/pops/time/timestamp_spec.rb +0 -13
  2156. data/spec/unit/pops/types/class_loader_spec.rb +0 -10
  2157. data/spec/unit/pops/types/deferred_spec.rb +0 -87
  2158. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  2159. data/spec/unit/pops/types/error_spec.rb +0 -207
  2160. data/spec/unit/pops/types/iterable_spec.rb +0 -262
  2161. data/spec/unit/pops/types/p_binary_type_spec.rb +0 -243
  2162. data/spec/unit/pops/types/p_init_type_spec.rb +0 -383
  2163. data/spec/unit/pops/types/p_object_type_spec.rb +0 -1730
  2164. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -322
  2165. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -173
  2166. data/spec/unit/pops/types/p_timespan_type_spec.rb +0 -323
  2167. data/spec/unit/pops/types/p_timestamp_type_spec.rb +0 -391
  2168. data/spec/unit/pops/types/p_type_set_type_spec.rb +0 -549
  2169. data/spec/unit/pops/types/p_uri_type_spec.rb +0 -191
  2170. data/spec/unit/pops/types/recursion_guard_spec.rb +0 -93
  2171. data/spec/unit/pops/types/ruby_generator_spec.rb +0 -874
  2172. data/spec/unit/pops/types/string_converter_spec.rb +0 -1198
  2173. data/spec/unit/pops/types/task_spec.rb +0 -411
  2174. data/spec/unit/pops/types/type_acceptor_spec.rb +0 -106
  2175. data/spec/unit/pops/types/type_asserter_spec.rb +0 -43
  2176. data/spec/unit/pops/types/type_calculator_spec.rb +0 -2508
  2177. data/spec/unit/pops/types/type_factory_spec.rb +0 -322
  2178. data/spec/unit/pops/types/type_formatter_spec.rb +0 -427
  2179. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -249
  2180. data/spec/unit/pops/types/type_parser_spec.rb +0 -444
  2181. data/spec/unit/pops/types/types_spec.rb +0 -728
  2182. data/spec/unit/pops/utils_spec.rb +0 -70
  2183. data/spec/unit/pops/validation_spec.rb +0 -66
  2184. data/spec/unit/pops/validator/validator_spec.rb +0 -1022
  2185. data/spec/unit/pops/visitor_spec.rb +0 -94
  2186. data/spec/unit/property/boolean_spec.rb +0 -24
  2187. data/spec/unit/property/ensure_spec.rb +0 -12
  2188. data/spec/unit/property/keyvalue_spec.rb +0 -261
  2189. data/spec/unit/property/list_spec.rb +0 -173
  2190. data/spec/unit/property/ordered_list_spec.rb +0 -63
  2191. data/spec/unit/property_spec.rb +0 -563
  2192. data/spec/unit/provider/README.markdown +0 -4
  2193. data/spec/unit/provider/aix_object_spec.rb +0 -805
  2194. data/spec/unit/provider/command_spec.rb +0 -62
  2195. data/spec/unit/provider/exec/posix_spec.rb +0 -209
  2196. data/spec/unit/provider/exec/shell_spec.rb +0 -54
  2197. data/spec/unit/provider/exec/windows_spec.rb +0 -107
  2198. data/spec/unit/provider/exec_spec.rb +0 -35
  2199. data/spec/unit/provider/file/posix_spec.rb +0 -232
  2200. data/spec/unit/provider/file/windows_spec.rb +0 -154
  2201. data/spec/unit/provider/group/aix_spec.rb +0 -90
  2202. data/spec/unit/provider/group/directoryservice_spec.rb +0 -33
  2203. data/spec/unit/provider/group/groupadd_spec.rb +0 -152
  2204. data/spec/unit/provider/group/ldap_spec.rb +0 -98
  2205. data/spec/unit/provider/group/pw_spec.rb +0 -78
  2206. data/spec/unit/provider/group/windows_adsi_spec.rb +0 -359
  2207. data/spec/unit/provider/ldap_spec.rb +0 -243
  2208. data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -158
  2209. data/spec/unit/provider/nameservice_spec.rb +0 -456
  2210. data/spec/unit/provider/package/aix_spec.rb +0 -129
  2211. data/spec/unit/provider/package/appdmg_spec.rb +0 -42
  2212. data/spec/unit/provider/package/apt_spec.rb +0 -162
  2213. data/spec/unit/provider/package/aptitude_spec.rb +0 -45
  2214. data/spec/unit/provider/package/aptrpm_spec.rb +0 -47
  2215. data/spec/unit/provider/package/base_spec.rb +0 -18
  2216. data/spec/unit/provider/package/dnf_spec.rb +0 -50
  2217. data/spec/unit/provider/package/dpkg_spec.rb +0 -278
  2218. data/spec/unit/provider/package/freebsd_spec.rb +0 -51
  2219. data/spec/unit/provider/package/gem_spec.rb +0 -336
  2220. data/spec/unit/provider/package/hpux_spec.rb +0 -48
  2221. data/spec/unit/provider/package/macports_spec.rb +0 -138
  2222. data/spec/unit/provider/package/nim_spec.rb +0 -234
  2223. data/spec/unit/provider/package/openbsd_spec.rb +0 -401
  2224. data/spec/unit/provider/package/opkg_spec.rb +0 -183
  2225. data/spec/unit/provider/package/pacman_spec.rb +0 -468
  2226. data/spec/unit/provider/package/pip3_spec.rb +0 -19
  2227. data/spec/unit/provider/package/pip_spec.rb +0 -379
  2228. data/spec/unit/provider/package/pkg_spec.rb +0 -413
  2229. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -168
  2230. data/spec/unit/provider/package/pkgin_spec.rb +0 -183
  2231. data/spec/unit/provider/package/pkgng_spec.rb +0 -183
  2232. data/spec/unit/provider/package/pkgutil_spec.rb +0 -235
  2233. data/spec/unit/provider/package/portage_spec.rb +0 -211
  2234. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -64
  2235. data/spec/unit/provider/package/rpm_spec.rb +0 -674
  2236. data/spec/unit/provider/package/sun_spec.rb +0 -114
  2237. data/spec/unit/provider/package/tdnf_spec.rb +0 -15
  2238. data/spec/unit/provider/package/up2date_spec.rb +0 -24
  2239. data/spec/unit/provider/package/urpmi_spec.rb +0 -86
  2240. data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -100
  2241. data/spec/unit/provider/package/windows/msi_package_spec.rb +0 -114
  2242. data/spec/unit/provider/package/windows/package_spec.rb +0 -185
  2243. data/spec/unit/provider/package/windows_spec.rb +0 -257
  2244. data/spec/unit/provider/package/yum_spec.rb +0 -148
  2245. data/spec/unit/provider/package/zypper_spec.rb +0 -229
  2246. data/spec/unit/provider/parsedfile_spec.rb +0 -228
  2247. data/spec/unit/provider/service/base_spec.rb +0 -112
  2248. data/spec/unit/provider/service/bsd_spec.rb +0 -129
  2249. data/spec/unit/provider/service/daemontools_spec.rb +0 -166
  2250. data/spec/unit/provider/service/debian_spec.rb +0 -162
  2251. data/spec/unit/provider/service/freebsd_spec.rb +0 -92
  2252. data/spec/unit/provider/service/gentoo_spec.rb +0 -250
  2253. data/spec/unit/provider/service/init_spec.rb +0 -259
  2254. data/spec/unit/provider/service/launchd_spec.rb +0 -367
  2255. data/spec/unit/provider/service/openbsd_spec.rb +0 -201
  2256. data/spec/unit/provider/service/openrc_spec.rb +0 -233
  2257. data/spec/unit/provider/service/openwrt_spec.rb +0 -111
  2258. data/spec/unit/provider/service/rcng_spec.rb +0 -40
  2259. data/spec/unit/provider/service/redhat_spec.rb +0 -177
  2260. data/spec/unit/provider/service/runit_spec.rb +0 -137
  2261. data/spec/unit/provider/service/smf_spec.rb +0 -281
  2262. data/spec/unit/provider/service/src_spec.rb +0 -194
  2263. data/spec/unit/provider/service/systemd_spec.rb +0 -421
  2264. data/spec/unit/provider/service/upstart_spec.rb +0 -693
  2265. data/spec/unit/provider/service/windows_spec.rb +0 -226
  2266. data/spec/unit/provider/user/aix_spec.rb +0 -215
  2267. data/spec/unit/provider/user/directoryservice_spec.rb +0 -1151
  2268. data/spec/unit/provider/user/hpux_spec.rb +0 -72
  2269. data/spec/unit/provider/user/ldap_spec.rb +0 -286
  2270. data/spec/unit/provider/user/openbsd_spec.rb +0 -77
  2271. data/spec/unit/provider/user/pw_spec.rb +0 -211
  2272. data/spec/unit/provider/user/user_role_add_spec.rb +0 -374
  2273. data/spec/unit/provider/user/useradd_spec.rb +0 -632
  2274. data/spec/unit/provider/user/windows_adsi_spec.rb +0 -326
  2275. data/spec/unit/provider_spec.rb +0 -918
  2276. data/spec/unit/puppet_pal_2pec.rb +0 -1020
  2277. data/spec/unit/puppet_pal_catalog_spec.rb +0 -859
  2278. data/spec/unit/puppet_pal_spec.rb +0 -4
  2279. data/spec/unit/puppet_spec.rb +0 -73
  2280. data/spec/unit/relationship_spec.rb +0 -203
  2281. data/spec/unit/reports/http_spec.rb +0 -103
  2282. data/spec/unit/reports/store_spec.rb +0 -60
  2283. data/spec/unit/reports_spec.rb +0 -70
  2284. data/spec/unit/resource/capability_finder_spec.rb +0 -145
  2285. data/spec/unit/resource/catalog_spec.rb +0 -1134
  2286. data/spec/unit/resource/status_spec.rb +0 -218
  2287. data/spec/unit/resource/type_collection_spec.rb +0 -337
  2288. data/spec/unit/resource/type_spec.rb +0 -877
  2289. data/spec/unit/resource_spec.rb +0 -1128
  2290. data/spec/unit/rest/client_spec.rb +0 -135
  2291. data/spec/unit/rest/route_spec.rb +0 -132
  2292. data/spec/unit/scheduler/job_spec.rb +0 -79
  2293. data/spec/unit/scheduler/scheduler_spec.rb +0 -116
  2294. data/spec/unit/scheduler/splay_job_spec.rb +0 -35
  2295. data/spec/unit/settings/array_setting_spec.rb +0 -39
  2296. data/spec/unit/settings/autosign_setting_spec.rb +0 -104
  2297. data/spec/unit/settings/certificate_revocation_setting_spec.rb +0 -37
  2298. data/spec/unit/settings/config_file_spec.rb +0 -158
  2299. data/spec/unit/settings/directory_setting_spec.rb +0 -32
  2300. data/spec/unit/settings/duration_setting_spec.rb +0 -49
  2301. data/spec/unit/settings/enum_setting_spec.rb +0 -27
  2302. data/spec/unit/settings/environment_conf_spec.rb +0 -135
  2303. data/spec/unit/settings/file_setting_spec.rb +0 -343
  2304. data/spec/unit/settings/ini_file_spec.rb +0 -550
  2305. data/spec/unit/settings/path_setting_spec.rb +0 -30
  2306. data/spec/unit/settings/priority_setting_spec.rb +0 -66
  2307. data/spec/unit/settings/string_setting_spec.rb +0 -75
  2308. data/spec/unit/settings/terminus_setting_spec.rb +0 -28
  2309. data/spec/unit/settings/value_translator_spec.rb +0 -77
  2310. data/spec/unit/settings_spec.rb +0 -1919
  2311. data/spec/unit/ssl/base_spec.rb +0 -94
  2312. data/spec/unit/ssl/certificate_request_attributes_spec.rb +0 -80
  2313. data/spec/unit/ssl/certificate_request_spec.rb +0 -401
  2314. data/spec/unit/ssl/certificate_spec.rb +0 -187
  2315. data/spec/unit/ssl/digest_spec.rb +0 -35
  2316. data/spec/unit/ssl/host_spec.rb +0 -630
  2317. data/spec/unit/ssl/key_spec.rb +0 -174
  2318. data/spec/unit/ssl/oids_spec.rb +0 -72
  2319. data/spec/unit/ssl/validator_spec.rb +0 -287
  2320. data/spec/unit/status_spec.rb +0 -45
  2321. data/spec/unit/task_spec.rb +0 -292
  2322. data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -542
  2323. data/spec/unit/transaction/event_manager_spec.rb +0 -363
  2324. data/spec/unit/transaction/event_spec.rb +0 -197
  2325. data/spec/unit/transaction/persistence_spec.rb +0 -220
  2326. data/spec/unit/transaction/report_spec.rb +0 -700
  2327. data/spec/unit/transaction/resource_harness_spec.rb +0 -604
  2328. data/spec/unit/transaction_spec.rb +0 -974
  2329. data/spec/unit/type/README.markdown +0 -4
  2330. data/spec/unit/type/component_spec.rb +0 -53
  2331. data/spec/unit/type/exec_spec.rb +0 -815
  2332. data/spec/unit/type/file/checksum_spec.rb +0 -105
  2333. data/spec/unit/type/file/checksum_value_spec.rb +0 -286
  2334. data/spec/unit/type/file/content_spec.rb +0 -438
  2335. data/spec/unit/type/file/ctime_spec.rb +0 -34
  2336. data/spec/unit/type/file/ensure_spec.rb +0 -123
  2337. data/spec/unit/type/file/group_spec.rb +0 -60
  2338. data/spec/unit/type/file/mode_spec.rb +0 -222
  2339. data/spec/unit/type/file/mtime_spec.rb +0 -34
  2340. data/spec/unit/type/file/owner_spec.rb +0 -58
  2341. data/spec/unit/type/file/selinux_spec.rb +0 -90
  2342. data/spec/unit/type/file/source_spec.rb +0 -677
  2343. data/spec/unit/type/file/type_spec.rb +0 -19
  2344. data/spec/unit/type/file_spec.rb +0 -1696
  2345. data/spec/unit/type/filebucket_spec.rb +0 -103
  2346. data/spec/unit/type/group_spec.rb +0 -100
  2347. data/spec/unit/type/noop_metaparam_spec.rb +0 -38
  2348. data/spec/unit/type/package/package_settings_spec.rb +0 -135
  2349. data/spec/unit/type/package_spec.rb +0 -384
  2350. data/spec/unit/type/resources_spec.rb +0 -350
  2351. data/spec/unit/type/schedule_spec.rb +0 -621
  2352. data/spec/unit/type/service_spec.rb +0 -308
  2353. data/spec/unit/type/stage_spec.rb +0 -8
  2354. data/spec/unit/type/tidy_spec.rb +0 -468
  2355. data/spec/unit/type/user_spec.rb +0 -459
  2356. data/spec/unit/type/whit_spec.rb +0 -10
  2357. data/spec/unit/type_spec.rb +0 -1384
  2358. data/spec/unit/util/at_fork_spec.rb +0 -150
  2359. data/spec/unit/util/autoload_spec.rb +0 -309
  2360. data/spec/unit/util/backups_spec.rb +0 -134
  2361. data/spec/unit/util/character_encoding_spec.rb +0 -186
  2362. data/spec/unit/util/checksums_spec.rb +0 -208
  2363. data/spec/unit/util/colors_spec.rb +0 -45
  2364. data/spec/unit/util/command_line_spec.rb +0 -175
  2365. data/spec/unit/util/command_line_utils/puppet_option_parser_spec.rb +0 -129
  2366. data/spec/unit/util/constant_inflector_spec.rb +0 -56
  2367. data/spec/unit/util/diff_spec.rb +0 -47
  2368. data/spec/unit/util/docs_spec.rb +0 -100
  2369. data/spec/unit/util/errors_spec.rb +0 -37
  2370. data/spec/unit/util/execution_spec.rb +0 -927
  2371. data/spec/unit/util/execution_stub_spec.rb +0 -39
  2372. data/spec/unit/util/feature_spec.rb +0 -120
  2373. data/spec/unit/util/filetype_spec.rb +0 -223
  2374. data/spec/unit/util/http_proxy_spec.rb +0 -273
  2375. data/spec/unit/util/inifile_spec.rb +0 -523
  2376. data/spec/unit/util/json_lockfile_spec.rb +0 -50
  2377. data/spec/unit/util/ldap/connection_spec.rb +0 -161
  2378. data/spec/unit/util/ldap/generator_spec.rb +0 -50
  2379. data/spec/unit/util/ldap/manager_spec.rb +0 -626
  2380. data/spec/unit/util/lockfile_spec.rb +0 -118
  2381. data/spec/unit/util/log/destinations_spec.rb +0 -267
  2382. data/spec/unit/util/log_spec.rb +0 -576
  2383. data/spec/unit/util/logging_spec.rb +0 -430
  2384. data/spec/unit/util/metric_spec.rb +0 -90
  2385. data/spec/unit/util/monkey_patches_spec.rb +0 -145
  2386. data/spec/unit/util/multi_match_spec.rb +0 -39
  2387. data/spec/unit/util/network_device/config_spec.rb +0 -92
  2388. data/spec/unit/util/network_device/transport/base_spec.rb +0 -41
  2389. data/spec/unit/util/network_device_spec.rb +0 -50
  2390. data/spec/unit/util/package_spec.rb +0 -20
  2391. data/spec/unit/util/pidlock_spec.rb +0 -218
  2392. data/spec/unit/util/plist_spec.rb +0 -141
  2393. data/spec/unit/util/posix_spec.rb +0 -279
  2394. data/spec/unit/util/profiler/aggregate_spec.rb +0 -55
  2395. data/spec/unit/util/profiler/around_profiler_spec.rb +0 -61
  2396. data/spec/unit/util/profiler/logging_spec.rb +0 -70
  2397. data/spec/unit/util/profiler/object_counts_spec.rb +0 -13
  2398. data/spec/unit/util/profiler/wall_clock_spec.rb +0 -13
  2399. data/spec/unit/util/profiler_spec.rb +0 -47
  2400. data/spec/unit/util/rdoc_spec.rb +0 -56
  2401. data/spec/unit/util/reference_spec.rb +0 -39
  2402. data/spec/unit/util/resource_template_spec.rb +0 -57
  2403. data/spec/unit/util/retry_action_spec.rb +0 -85
  2404. data/spec/unit/util/rubygems_spec.rb +0 -48
  2405. data/spec/unit/util/run_mode_spec.rb +0 -318
  2406. data/spec/unit/util/selinux_spec.rb +0 -315
  2407. data/spec/unit/util/splayer_spec.rb +0 -45
  2408. data/spec/unit/util/ssl_spec.rb +0 -92
  2409. data/spec/unit/util/storage_spec.rb +0 -336
  2410. data/spec/unit/util/suidmanager_spec.rb +0 -284
  2411. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -181
  2412. data/spec/unit/util/tag_set_spec.rb +0 -53
  2413. data/spec/unit/util/tagging_spec.rb +0 -247
  2414. data/spec/unit/util/terminal_spec.rb +0 -42
  2415. data/spec/unit/util/user_attr_spec.rb +0 -46
  2416. data/spec/unit/util/warnings_spec.rb +0 -46
  2417. data/spec/unit/util/watched_file_spec.rb +0 -52
  2418. data/spec/unit/util/watcher/periodic_watcher_spec.rb +0 -52
  2419. data/spec/unit/util/watcher_spec.rb +0 -56
  2420. data/spec/unit/util/windows/access_control_entry_spec.rb +0 -67
  2421. data/spec/unit/util/windows/access_control_list_spec.rb +0 -133
  2422. data/spec/unit/util/windows/adsi_spec.rb +0 -630
  2423. data/spec/unit/util/windows/api_types_spec.rb +0 -121
  2424. data/spec/unit/util/windows/eventlog_spec.rb +0 -123
  2425. data/spec/unit/util/windows/file_spec.rb +0 -89
  2426. data/spec/unit/util/windows/root_certs_spec.rb +0 -17
  2427. data/spec/unit/util/windows/security_descriptor_spec.rb +0 -117
  2428. data/spec/unit/util/windows/service_spec.rb +0 -669
  2429. data/spec/unit/util/windows/sid_spec.rb +0 -299
  2430. data/spec/unit/util/windows/string_spec.rb +0 -58
  2431. data/spec/unit/util/yaml_spec.rb +0 -201
  2432. data/spec/unit/util_spec.rb +0 -949
  2433. data/spec/unit/version_spec.rb +0 -61
  2434. data/spec/watchr.rb +0 -137
  2435. data/tasks/benchmark.rake +0 -180
  2436. data/tasks/cfpropertylist.rake +0 -15
  2437. data/tasks/ci.rake +0 -24
  2438. data/tasks/generate_ast_model.rake +0 -90
  2439. data/tasks/manpages.rake +0 -91
  2440. data/tasks/memwalk.rake +0 -195
  2441. data/tasks/parallel.rake +0 -410
  2442. data/tasks/parser.rake +0 -22
  2443. data/tasks/yard.rake +0 -59
  2444. /data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
  2445. /data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
  2446. /data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
  2447. /data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
  2448. /data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
  2449. /data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
@@ -1,3326 +0,0 @@
1
- #! /usr/bin/env ruby
2
- require 'spec_helper'
3
- require 'puppet_spec/compiler'
4
- require 'puppet_spec/files'
5
- require 'puppet/pops'
6
- require 'deep_merge/core'
7
- require 'hiera'
8
-
9
- describe "The lookup function" do
10
- include PuppetSpec::Compiler
11
- include PuppetSpec::Files
12
-
13
- let(:env_name) { 'spec' }
14
- let(:code_dir_files) { {} }
15
- let(:code_dir) { tmpdir('code') }
16
- let(:ruby_dir) { tmpdir('ruby') }
17
- let(:env_modules) { {} }
18
- let(:env_hiera_yaml) do
19
- <<-YAML.unindent
20
- ---
21
- version: 5
22
- hierarchy:
23
- - name: "Common"
24
- data_hash: yaml_data
25
- path: "common.yaml"
26
- YAML
27
- end
28
-
29
- let(:env_data) { {} }
30
-
31
- let(:environment_files) do
32
- {
33
- env_name => {
34
- 'modules' => env_modules,
35
- 'hiera.yaml' => env_hiera_yaml,
36
- 'data' => env_data
37
- }
38
- }
39
- end
40
-
41
- let(:logs) { [] }
42
- let(:scope_additions ) { {} }
43
- let(:notices) { logs.select { |log| log.level == :notice }.map { |log| log.message } }
44
- let(:warnings) { logs.select { |log| log.level == :warning }.map { |log| log.message } }
45
- let(:debugs) { logs.select { |log| log.level == :debug }.map { |log| log.message } }
46
- let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
47
- let(:environments) { Puppet::Environments::Directories.new(populated_env_dir, []) }
48
- let(:node) { Puppet::Node.new('test_lookup', :environment => env) }
49
- let(:compiler) { Puppet::Parser::Compiler.new(node) }
50
- let(:lookup_func) { Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'lookup') }
51
- let(:invocation_with_explain) { Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, true) }
52
- let(:explanation) { invocation_with_explain.explainer.explain }
53
-
54
- let(:populated_code_dir) do
55
- dir_contained_in(code_dir, code_dir_files)
56
- code_dir
57
- end
58
-
59
- let(:env_dir) do
60
- d = File.join(populated_code_dir, 'environments')
61
- Dir.mkdir(d)
62
- d
63
- end
64
-
65
- let(:populated_env_dir) do
66
- dir_contained_in(env_dir, environment_files)
67
- env_dir
68
- end
69
-
70
- before(:each) do
71
- Puppet.settings[:codedir] = code_dir
72
- Puppet.push_context(:environments => environments, :current_environment => env)
73
- end
74
-
75
- after(:each) do
76
- Puppet.pop_context
77
- if Object.const_defined?(:Hiera)
78
- Hiera.send(:remove_instance_variable, :@config) if Hiera.instance_variable_defined?(:@config)
79
- Hiera.send(:remove_instance_variable, :@logger) if Hiera.instance_variable_defined?(:@logger)
80
- if Hiera.const_defined?(:Config)
81
- Hiera::Config.send(:remove_instance_variable, :@config) if Hiera::Config.instance_variable_defined?(:@config)
82
- end
83
- if Hiera.const_defined?(:Backend) && Hiera::Backend.respond_to?(:clear!)
84
- Hiera::Backend.clear!
85
- end
86
- end
87
- end
88
-
89
- def collect_notices(code, explain = false, &block)
90
- Puppet[:code] = code
91
- Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
92
- scope = compiler.topscope
93
- scope['domain'] = 'example.com'
94
- scope_additions.each_pair { |k, v| scope[k] = v }
95
- if explain
96
- begin
97
- invocation_with_explain.lookup('dummy', nil) do
98
- if block_given?
99
- compiler.compile { |catalog| block.call(compiler.topscope); catalog }
100
- else
101
- compiler.compile
102
- end
103
- end
104
- rescue RuntimeError => e
105
- invocation_with_explain.report_text { e.message }
106
- end
107
- else
108
- if block_given?
109
- compiler.compile { |catalog| block.call(compiler.topscope); catalog }
110
- else
111
- compiler.compile
112
- end
113
- end
114
- end
115
- nil
116
- end
117
-
118
- def lookup(key, options = {}, explain = false, type = nil)
119
- value_type = type ? ", #{type}" : ''
120
- nc_opts = options.empty? ? '' : ", #{Puppet::Pops::Types::TypeFormatter.string(options)}"
121
- keys = key.is_a?(Array) ? key : [key]
122
- collect_notices(keys.map { |k| "notice(String(lookup('#{k}'#{value_type}#{nc_opts}), '%p'))" }.join("\n"), explain)
123
- if explain
124
- explanation
125
- else
126
- result = notices.map { |n| Puppet::Pops::Types::TypeParser.singleton.parse_literal(n) }
127
- key.is_a?(Array) ? result : result[0]
128
- end
129
- end
130
-
131
- def explain(key, options = {})
132
- lookup(key, options, true)[1]
133
- explanation
134
- end
135
-
136
- context 'with faulty hiera.yaml configuration' do
137
- context 'in global layer' do
138
- let(:global_data) do
139
- {
140
- 'common.yaml' => <<-YAML.unindent
141
- a: value a (from global)
142
- YAML
143
- }
144
- end
145
-
146
- let(:code_dir_files) do
147
- {
148
- 'hiera.yaml' => hiera_yaml,
149
- 'data' => global_data
150
- }
151
- end
152
-
153
- before(:each) do
154
- # Need to set here since spec_helper defines these settings in its "before each"
155
- Puppet.settings[:codedir] = populated_code_dir
156
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
157
- end
158
-
159
- context 'using a not yet supported hiera version' do
160
- let(:hiera_yaml) { <<-YAML.unindent }
161
- version: 6
162
- YAML
163
-
164
- it 'fails and reports error' do
165
- expect { lookup('a') }.to raise_error("This runtime does not support hiera.yaml version 6 (file: #{code_dir}/hiera.yaml)")
166
- end
167
- end
168
-
169
- context 'with multiply defined backend using hiera version 3' do
170
- let(:hiera_yaml) { <<-YAML.unindent }
171
- :version: 3
172
- :backends:
173
- - yaml
174
- - json
175
- - yaml
176
- YAML
177
-
178
- it 'fails and reports error' do
179
- expect { lookup('a') }.to raise_error(
180
- "Backend 'yaml' is defined more than once. First defined at (line: 3) (file: #{code_dir}/hiera.yaml, line: 5)")
181
- end
182
- end
183
-
184
- context 'using hiera version 4' do
185
- let(:hiera_yaml) { <<-YAML.unindent }
186
- version: 4
187
- YAML
188
-
189
- it 'fails and reports error' do
190
- expect { lookup('a') }.to raise_error(
191
- "hiera.yaml version 4 cannot be used in the global layer (file: #{code_dir}/hiera.yaml)")
192
- end
193
- end
194
-
195
- context 'using hiera version 5' do
196
- context 'with multiply defined hierarchy' do
197
- let(:hiera_yaml) { <<-YAML.unindent }
198
- version: 5
199
- hierarchy:
200
- - name: Common
201
- path: common.yaml
202
- - name: Other
203
- path: other.yaml
204
- - name: Common
205
- path: common.yaml
206
- YAML
207
-
208
- it 'fails and reports error' do
209
- expect { lookup('a') }.to raise_error(
210
- "Hierarchy name 'Common' defined more than once. First defined at (line: 3) (file: #{code_dir}/hiera.yaml, line: 7)")
211
- end
212
- end
213
-
214
- context 'with hiera3_backend that is provided as data_hash function' do
215
- let(:hiera_yaml) { <<-YAML.unindent }
216
- version: 5
217
- hierarchy:
218
- - name: Common
219
- hiera3_backend: hocon
220
- path: common.conf
221
- YAML
222
-
223
- it 'fails and reports error' do
224
- expect { lookup('a') }.to raise_error(
225
- "Use \"data_hash: hocon_data\" instead of \"hiera3_backend: hocon\" (file: #{code_dir}/hiera.yaml, line: 4)")
226
- end
227
- end
228
-
229
- context 'with no data provider function defined' do
230
- let(:hiera_yaml) { <<-YAML.unindent }
231
- version: 5
232
- defaults:
233
- datadir: data
234
- hierarchy:
235
- - name: Common
236
- path: common.txt
237
- YAML
238
-
239
- it 'fails and reports error' do
240
- expect { lookup('a') }.to raise_error(
241
- "One of data_hash, lookup_key, data_dig, or hiera3_backend must be defined in hierarchy 'Common' (file: #{code_dir}/hiera.yaml)")
242
- end
243
- end
244
-
245
- context 'with multiple data providers in defaults' do
246
- let(:hiera_yaml) { <<-YAML.unindent }
247
- version: 5
248
- defaults:
249
- data_hash: yaml_data
250
- lookup_key: eyaml_lookup_key
251
- datadir: data
252
- hierarchy:
253
- - name: Common
254
- path: common.txt
255
- YAML
256
-
257
- it 'fails and reports error' do
258
- expect { lookup('a') }.to raise_error(
259
- "Only one of data_hash, lookup_key, data_dig, or hiera3_backend can be defined in defaults (file: #{code_dir}/hiera.yaml)")
260
- end
261
- end
262
-
263
- context 'with non existing data provider function' do
264
- let(:hiera_yaml) { <<-YAML.unindent }
265
- version: 5
266
- hierarchy:
267
- - name: Common
268
- data_hash: nonesuch_txt_data
269
- path: common.yaml
270
- YAML
271
-
272
- it 'fails and reports error' do
273
- Puppet[:strict] = :error
274
- expect { lookup('a') }.to raise_error(
275
- "Unable to find 'data_hash' function named 'nonesuch_txt_data' (file: #{code_dir}/hiera.yaml)")
276
- end
277
- end
278
-
279
- context 'with a declared default_hierarchy' do
280
- let(:hiera_yaml) { <<-YAML.unindent }
281
- version: 5
282
- hierarchy:
283
- - name: Common
284
- path: common.yaml
285
- default_hierarchy:
286
- - name: Defaults
287
- path: defaults.yaml
288
- YAML
289
-
290
- it 'fails and reports error' do
291
- Puppet[:strict] = :error
292
- expect { lookup('a') }.to raise_error(
293
- "'default_hierarchy' is only allowed in the module layer (file: #{code_dir}/hiera.yaml, line: 5)")
294
- end
295
- end
296
-
297
- context 'with missing variables' do
298
- let(:scope_additions) { { 'fqdn' => 'test.example.com' } }
299
- let(:hiera_yaml) { <<-YAML.unindent }
300
- version: 5
301
- hierarchy:
302
- - name: Common # don't report this line %{::nonesuch}
303
- path: "%{::fqdn}/%{::nonesuch}/data.yaml"
304
- YAML
305
-
306
- it 'fails and reports errors when strict == error' do
307
- Puppet[:strict] = :error
308
- expect { lookup('a') }.to raise_error("Undefined variable '::nonesuch' (file: #{code_dir}/hiera.yaml, line: 4)")
309
- end
310
- end
311
-
312
- context 'using interpolation functions' do
313
- let(:hiera_yaml) { <<-YAML.unindent }
314
- version: 5
315
- hierarchy:
316
- - name: Common # don't report this line %{::nonesuch}
317
- path: "%{lookup('fqdn')}/data.yaml"
318
- YAML
319
-
320
- it 'fails and reports errors when strict == error' do
321
- Puppet[:strict] = :error
322
- expect { lookup('a') }.to raise_error("Interpolation using method syntax is not allowed in this context (file: #{code_dir}/hiera.yaml)")
323
- end
324
- end
325
- end
326
- end
327
-
328
- context 'in environment layer' do
329
- context 'using hiera version 4' do
330
- context 'with an unknown backend' do
331
- let(:env_hiera_yaml) { <<-YAML.unindent }
332
- version: 4
333
- hierarchy:
334
- - name: Common
335
- backend: nonesuch
336
- path: common.yaml
337
- YAML
338
-
339
- it 'fails and reports error' do
340
- expect { lookup('a') }.to raise_error(
341
- "No data provider is registered for backend 'nonesuch' (file: #{env_dir}/spec/hiera.yaml, line: 4)")
342
- end
343
- end
344
-
345
- context 'with multiply defined hierarchy' do
346
- let(:env_hiera_yaml) { <<-YAML.unindent }
347
- version: 4
348
- hierarchy:
349
- - name: Common
350
- backend: yaml
351
- path: common.yaml
352
- - name: Other
353
- backend: yaml
354
- path: other.yaml
355
- - name: Common
356
- backend: yaml
357
- path: common.yaml
358
- YAML
359
-
360
- it 'fails and reports error' do
361
- expect { lookup('a') }.to raise_error(
362
- "Hierarchy name 'Common' defined more than once. First defined at (line: 3) (file: #{env_dir}/spec/hiera.yaml, line: 9)")
363
- end
364
- end
365
- end
366
-
367
- context 'using hiera version 5' do
368
- context 'with a hiera3_backend declaration' do
369
- let(:env_hiera_yaml) { <<-YAML.unindent }
370
- version: 5
371
- hierarchy:
372
- - name: Common
373
- hiera3_backend: something
374
- YAML
375
-
376
- it 'fails and reports error' do
377
- expect { lookup('a') }.to raise_error(
378
- "'hiera3_backend' is only allowed in the global layer (file: #{env_dir}/spec/hiera.yaml, line: 4)")
379
- end
380
- end
381
-
382
- context 'with a declared default_hierarchy' do
383
- let(:env_hiera_yaml) { <<-YAML.unindent }
384
- version: 5
385
- hierarchy:
386
- - name: Common
387
- path: common.yaml
388
- default_hierarchy:
389
- - name: Defaults
390
- path: defaults.yaml
391
- YAML
392
-
393
- it 'fails and reports error' do
394
- Puppet[:strict] = :error
395
- expect { lookup('a') }.to raise_error(
396
- "'default_hierarchy' is only allowed in the module layer (file: #{env_dir}/spec/hiera.yaml, line: 5)")
397
- end
398
- end
399
- end
400
- end
401
- end
402
-
403
- context 'with an environment' do
404
- let(:env_data) do
405
- {
406
- 'common.yaml' => <<-YAML.unindent
407
- ---
408
- a: value a (from environment)
409
- c:
410
- c_b: value c_b (from environment)
411
- mod_a::a: value mod_a::a (from environment)
412
- mod_a::hash_a:
413
- a: value mod_a::hash_a.a (from environment)
414
- mod_a::hash_b:
415
- a: value mod_a::hash_b.a (from environment)
416
- hash_b:
417
- hash_ba:
418
- bab: value hash_b.hash_ba.bab (from environment)
419
- hash_c:
420
- hash_ca:
421
- caa: value hash_c.hash_ca.caa (from environment)
422
- lookup_options:
423
- mod_a::hash_b:
424
- merge: hash
425
- hash_c:
426
- merge: hash
427
- YAML
428
- }
429
- end
430
-
431
- it 'finds data in the environment' do
432
- expect(lookup('a')).to eql('value a (from environment)')
433
- end
434
-
435
- context 'with log-level debug' do
436
- before(:each) { Puppet[:log_level] = 'debug' }
437
-
438
- it 'does not report a regular lookup as APL' do
439
- expect(lookup('a')).to eql('value a (from environment)')
440
- expect(debugs.count { |dbg| dbg =~ /\A\s*Automatic Parameter Lookup of/ }).to eql(0)
441
- end
442
-
443
- it 'reports regular lookup as lookup' do
444
- expect(lookup('a')).to eql('value a (from environment)')
445
- expect(debugs.count { |dbg| dbg =~ /\A\s*Lookup of/ }).to eql(1)
446
- end
447
-
448
- it 'does not report APL as lookup' do
449
- collect_notices("class mod_a($a) { notice($a) }; include mod_a")
450
- expect(debugs.count { |dbg| dbg =~ /\A\s*Lookup of/ }).to eql(0)
451
- end
452
-
453
- it 'reports APL as APL' do
454
- collect_notices("class mod_a($a) { notice($a) }; include mod_a")
455
- expect(debugs.count { |dbg| dbg =~ /\A\s*Automatic Parameter Lookup of/ }).to eql(1)
456
- end
457
- end
458
-
459
- context 'that has no lookup configured' do
460
- let(:environment_files) do
461
- {
462
- env_name => {
463
- 'data' => env_data
464
- }
465
- }
466
- end
467
-
468
- it 'does not find data in the environment' do
469
- expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'a'/)
470
- end
471
-
472
- context "but an environment.conf with 'environment_data_provider=hiera'" do
473
- let(:environment_files) do
474
- {
475
- env_name => {
476
- 'environment.conf' => "environment_data_provider=hiera\n",
477
- 'data' => env_data
478
- }
479
- }
480
- end
481
-
482
- it 'finds data in the environment and reports deprecation warning for environment.conf' do
483
- expect(lookup('a')).to eql('value a (from environment)')
484
- expect(warnings).to include(/Defining environment_data_provider='hiera' in environment.conf is deprecated. A 'hiera.yaml' file should be used instead/)
485
- end
486
-
487
- context 'and a hiera.yaml file' do
488
- let(:env_hiera_yaml) do
489
- <<-YAML.unindent
490
- ---
491
- version: 4
492
- hierarchy:
493
- - name: common
494
- backend: yaml
495
- YAML
496
- end
497
-
498
- let(:environment_files) do
499
- {
500
- env_name => {
501
- 'hiera.yaml' => env_hiera_yaml,
502
- 'environment.conf' => "environment_data_provider=hiera\n",
503
- 'data' => env_data
504
- }
505
- }
506
- end
507
-
508
- it 'finds data in the environment and reports deprecation warnings for both environment.conf and hiera.yaml' do
509
- expect(lookup('a')).to eql('value a (from environment)')
510
- expect(warnings).to include(/Defining environment_data_provider='hiera' in environment.conf is deprecated/)
511
- expect(warnings).to include(/Use of 'hiera.yaml' version 4 is deprecated. It should be converted to version 5/)
512
- end
513
- end
514
- end
515
-
516
- context "but an environment.conf with 'environment_data_provider=function'" do
517
- let(:environment_files) do
518
- {
519
- env_name => {
520
- 'environment.conf' => "environment_data_provider=function\n",
521
- 'functions' => {
522
- 'environment' => { 'data.pp' => <<-PUPPET.unindent }
523
- function environment::data() {
524
- { 'a' => 'value a' }
525
- }
526
- PUPPET
527
- }
528
- }
529
- }
530
- end
531
-
532
- it 'finds data in the environment and reports deprecation warning for environment.conf' do
533
- expect(lookup('a')).to eql('value a')
534
- expect(warnings).to include(/Defining environment_data_provider='function' in environment.conf is deprecated. A 'hiera.yaml' file should be used instead/)
535
- expect(warnings).to include(/Using of legacy data provider function 'environment::data'. Please convert to a 'data_hash' function/)
536
- end
537
- end
538
- end
539
-
540
- context 'that has interpolated paths configured' do
541
- let(:env_hiera_yaml) do
542
- <<-YAML.unindent
543
- ---
544
- version: 5
545
- hierarchy:
546
- - name: "Varying"
547
- data_hash: yaml_data
548
- path: "#{data_path}"
549
- YAML
550
- end
551
-
552
- let(:environment_files) do
553
- {
554
- env_name => {
555
- 'hiera.yaml' => env_hiera_yaml,
556
- 'modules' => {},
557
- 'data' => {
558
- 'x.yaml' => <<-YAML.unindent,
559
- y: value y from x
560
- YAML
561
- 'x_d.yaml' => <<-YAML.unindent,
562
- y: value y from x_d
563
- YAML
564
- 'x_e.yaml' => <<-YAML.unindent,
565
- y: value y from x_e
566
- YAML
567
- }
568
- }
569
- }
570
- end
571
-
572
- context 'using local variable reference' do
573
- let(:data_path) { 'x%{var.sub}.yaml' }
574
-
575
- it 'reloads the configuration if interpolated values change' do
576
- Puppet[:log_level] = 'debug'
577
- collect_notices("notice('success')") do |scope|
578
- expect(lookup_func.call(scope, 'y')).to eql('value y from x')
579
- scope['var'] = { 'sub' => '_d' }
580
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
581
- nested_scope = scope.compiler.newscope(scope)
582
- nested_scope['var'] = { 'sub' => '_e' }
583
- expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_e')
584
- end
585
- expect(notices).to eql(['success'])
586
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
587
- end
588
-
589
- it 'does not include the lookups performed during stability check in explain output' do
590
- Puppet[:log_level] = 'debug'
591
- collect_notices("notice('success')") do |scope|
592
- var = { 'sub' => '_d' }
593
- scope['var'] = var
594
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
595
-
596
- # Second call triggers the check
597
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
598
- end
599
- expect(notices).to eql(['success'])
600
- expect(debugs.any? { |m| m =~ /Sub key: "sub"/ }).to be_falsey
601
- end
602
- end
603
-
604
- context 'using global variable reference' do
605
- let(:data_path) { 'x%{::var.sub}.yaml' }
606
-
607
- it 'reloads the configuration if interpolated that was previously undefined, gets defined' do
608
- Puppet[:log_level] = 'debug'
609
- collect_notices("notice('success')") do |scope|
610
- expect(lookup_func.call(scope, 'y')).to eql('value y from x')
611
- scope['var'] = { 'sub' => '_d' }
612
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
613
- end
614
- expect(notices).to eql(['success'])
615
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
616
- end
617
-
618
- it 'does not reload the configuration if value changes locally' do
619
- Puppet[:log_level] = 'debug'
620
- collect_notices("notice('success')") do |scope|
621
- scope['var'] = { 'sub' => '_d' }
622
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
623
- nested_scope = scope.compiler.newscope(scope)
624
- nested_scope['var'] = { 'sub' => '_e' }
625
- expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_d')
626
- end
627
- expect(notices).to eql(['success'])
628
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_falsey
629
- end
630
- end
631
- end
632
-
633
- context 'that uses reserved' do
634
- let(:environment_files) do
635
- { env_name => { 'hiera.yaml' => hiera_yaml } }
636
- end
637
-
638
- context 'option' do
639
- let(:hiera_yaml) { <<-YAML.unindent }
640
- version: 5
641
- hierarchy:
642
- - name: "Illegal"
643
- options:
644
- #{opt_spec}
645
- data_hash: yaml_data
646
- YAML
647
-
648
- context 'path' do
649
- let(:opt_spec) { 'path: data/foo.yaml' }
650
-
651
- it 'fails and reports the reserved option key' do
652
- expect { lookup('a') }.to raise_error do |e|
653
- expect(e.message).to match(/Option key 'path' used in hierarchy 'Illegal' is reserved by Puppet/)
654
- end
655
- end
656
- end
657
-
658
- context 'uri' do
659
- let(:opt_spec) { 'uri: file:///data/foo.yaml' }
660
-
661
- it 'fails and reports the reserved option key' do
662
- expect { lookup('a') }.to raise_error do |e|
663
- expect(e.message).to match(/Option key 'uri' used in hierarchy 'Illegal' is reserved by Puppet/)
664
- end
665
- end
666
- end
667
- end
668
-
669
- context 'default option' do
670
- let(:hiera_yaml) { <<-YAML.unindent }
671
- ---
672
- version: 5
673
- defaults:
674
- options:
675
- #{opt_spec}
676
- hierarchy:
677
- - name: "Illegal"
678
- data_hash: yaml_data
679
- YAML
680
-
681
- context 'path' do
682
- let(:opt_spec) { 'path: data/foo.yaml' }
683
-
684
- it 'fails and reports the reserved option key' do
685
- expect { lookup('a') }.to raise_error do |e|
686
- expect(e.message).to match(/Option key 'path' used in defaults is reserved by Puppet/)
687
- end
688
- end
689
- end
690
-
691
- context 'uri' do
692
- let(:opt_spec) { 'uri: file:///data/foo.yaml' }
693
-
694
- it 'fails and reports the reserved option key' do
695
- expect { lookup('a') }.to raise_error do |e|
696
- expect(e.message).to match(/Option key 'uri' used in defaults is reserved by Puppet/)
697
- end
698
- end
699
- end
700
- end
701
- end
702
-
703
- context 'with yaml data file' do
704
- let(:environment_files) do
705
- {
706
- env_name => {
707
- 'hiera.yaml' => <<-YAML.unindent,
708
- ---
709
- version: 5
710
- YAML
711
- 'data' => {
712
- 'common.yaml' => common_yaml
713
- }
714
- }
715
- }
716
- end
717
-
718
- context 'that contains hash values with interpolated keys' do
719
- let(:common_yaml) do
720
- <<-YAML.unindent
721
- ---
722
- a:
723
- "%{key}": "the %{value}"
724
- b: "Detail in %{lookup('a.a_key')}"
725
- YAML
726
- end
727
-
728
- it 'interpolates both key and value"' do
729
- Puppet[:log_level] = 'debug'
730
- collect_notices("notice('success')") do |scope|
731
- expect(lookup_func.call(scope, 'a')).to eql({'' => 'the '})
732
- scope['key'] = 'a_key'
733
- scope['value'] = 'interpolated value'
734
- expect(lookup_func.call(scope, 'a')).to eql({'a_key' => 'the interpolated value'})
735
- end
736
- expect(notices).to eql(['success'])
737
- end
738
-
739
- it 'navigates to a value behind an interpolated key"' do
740
- Puppet[:log_level] = 'debug'
741
- collect_notices("notice('success')") do |scope|
742
- scope['key'] = 'a_key'
743
- scope['value'] = 'interpolated value'
744
- expect(lookup_func.call(scope, 'a.a_key')).to eql('the interpolated value')
745
- end
746
- expect(notices).to eql(['success'])
747
- end
748
-
749
- it 'navigates to a value behind an interpolated key using an interpolated value"' do
750
- Puppet[:log_level] = 'debug'
751
- collect_notices("notice('success')") do |scope|
752
- scope['key'] = 'a_key'
753
- scope['value'] = 'interpolated value'
754
- expect(lookup_func.call(scope, 'b')).to eql('Detail in the interpolated value')
755
- end
756
- expect(notices).to eql(['success'])
757
- end
758
- end
759
-
760
- context 'that is empty' do
761
- let(:common_yaml) { '' }
762
-
763
- it 'fails with a "did not find"' do
764
- expect { lookup('a') }.to raise_error do |e|
765
- expect(e.message).to match(/did not find a value for the name 'a'/)
766
- end
767
- end
768
-
769
- it 'logs a warning that the file does not contain a hash' do
770
- expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError)
771
- expect(warnings).to include(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
772
- end
773
- end
774
-
775
- context 'that contains illegal yaml' do
776
- let(:common_yaml) { "@!#%**&:\n" }
777
-
778
- it 'fails lookup and that the key is not found' do
779
- expect { lookup('a') }.to raise_error do |e|
780
- expect(e.message).to match(/Unable to parse/)
781
- end
782
- end
783
- end
784
-
785
- context 'that contains a legal yaml that is not a hash' do
786
- let(:common_yaml) { "- A list\n- of things" }
787
-
788
- it 'fails with a "did not find"' do
789
- expect { lookup('a') }.to raise_error do |e|
790
- expect(e.message).to match(/did not find a value for the name 'a'/)
791
- end
792
- end
793
-
794
- it 'logs a warning that the file does not contain a hash' do
795
- expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError)
796
- expect(warnings).to include(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
797
- end
798
- end
799
-
800
- context 'that contains a legal yaml hash with illegal types' do
801
- let(:common_yaml) do
802
- <<-YAML.unindent
803
- ---
804
- a: !ruby/object:Puppet::Graph::Key
805
- value: x
806
- YAML
807
- end
808
-
809
- it 'fails lookup and reports parsing failed' do
810
- expect { lookup('a') }.to raise_error do |e|
811
- expect(e.message).to match(/Unable to parse .*: Tried to load unspecified class: Puppet::Graph::Key/)
812
- end
813
- end
814
- end
815
-
816
- context 'that contains a legal yaml hash with unexpected types' do
817
- let(:common_yaml) do
818
- <<-YAML.unindent
819
- ---
820
- a: 123
821
- YAML
822
- end
823
-
824
- it 'fails lookup and reports a type mismatch' do
825
- expect { lookup('a', {}, false, String) }.to raise_error do |e|
826
- expect(e.message).to match(/Found value has wrong type, expects a String value, got Integer \(line: 1, column: \d+\)/)
827
- end
828
- end
829
- end
830
-
831
- context 'that contains illegal interpolations' do
832
- context 'in the form of an alias that is not the entire string' do
833
- let(:common_yaml) { <<-YAML.unindent }
834
- a: "%{alias('x')} and then some"
835
- x: value x
836
- YAML
837
-
838
- it 'fails lookup and reports a type mismatch' do
839
- expect { lookup('a') }.to raise_error("'alias' interpolation is only permitted if the expression is equal to the entire string")
840
- end
841
- end
842
-
843
- context 'in the form of an unknown function name' do
844
- let(:common_yaml) { <<-YAML.unindent }
845
- a: "%{what('x')}"
846
- x: value x
847
- YAML
848
-
849
- it 'fails lookup and reports a type mismatch' do
850
- expect { lookup('a') }.to raise_error("Unknown interpolation method 'what'")
851
- end
852
- end
853
- end
854
-
855
- context 'that contains an array with duplicates' do
856
- let(:common_yaml) { <<-YAML.unindent }
857
- a:
858
- - alpha
859
- - bravo
860
- - charlie
861
- - bravo
862
- YAML
863
-
864
- it 'retains the duplicates when using default merge strategy' do
865
- expect(lookup('a')).to eql(%w(alpha bravo charlie bravo))
866
- end
867
-
868
- it 'does deduplification when using merge strategy "unique"' do
869
- expect(lookup('a', :merge => 'unique')).to eql(%w(alpha bravo charlie))
870
- end
871
- end
872
- end
873
-
874
- context 'with lookup_options configured using patterns' do
875
- let(:mod_common) {
876
- <<-YAML.unindent
877
- mod::hash_a:
878
- aa:
879
- aaa: aaa (from module)
880
- ab:
881
- aba: aba (from module)
882
- mod::hash_b:
883
- ba:
884
- baa: baa (from module)
885
- bb:
886
- bba: bba (from module)
887
- lookup_options:
888
- '^mod::ha.*_a':
889
- merge: deep
890
- '^mod::ha.*_b':
891
- merge: deep
892
- YAML
893
- }
894
-
895
- let(:mod_base) do
896
- {
897
- 'hiera.yaml' => <<-YAML.unindent,
898
- version: 5
899
- YAML
900
- 'data' => {
901
- 'common.yaml' => mod_common
902
- }
903
- }
904
- end
905
-
906
- let(:env_modules) do
907
- {
908
- 'mod' => mod_base
909
- }
910
- end
911
-
912
- let(:env_hiera_yaml) do
913
- <<-YAML.unindent
914
- ---
915
- version: 5
916
- hierarchy:
917
- - name: X
918
- paths:
919
- - first.yaml
920
- - second.yaml
921
- YAML
922
- end
923
-
924
- let(:env_lookup_options) { <<-YAML.unindent }
925
- lookup_options:
926
- b:
927
- merge: hash
928
- '^[^b]$':
929
- merge: deep
930
- '^c':
931
- merge: first
932
- '^b':
933
- merge: first
934
- '^mod::ha.*_b':
935
- merge: hash
936
- YAML
937
-
938
- let(:env_data) do
939
- {
940
- 'first.yaml' => <<-YAML.unindent + env_lookup_options,
941
- a:
942
- aa:
943
- aaa: a.aa.aaa
944
- b:
945
- ba:
946
- baa: b.ba.baa
947
- bb:
948
- bba: b.bb.bba
949
- c:
950
- ca:
951
- caa: c.ca.caa
952
- mod::hash_a:
953
- aa:
954
- aab: aab (from environment)
955
- ab:
956
- aba: aba (from environment)
957
- abb: abb (from environment)
958
- mod::hash_b:
959
- ba:
960
- bab: bab (from environment)
961
- bc:
962
- bca: bca (from environment)
963
- sa:
964
- sa1: ['e', 'd', '--f']
965
- YAML
966
- 'second.yaml' => <<-YAML.unindent,
967
- a:
968
- aa:
969
- aab: a.aa.aab
970
- b:
971
- ba:
972
- bab: b.ba.bab
973
- bb:
974
- bbb: b.bb.bbb
975
- c:
976
- ca:
977
- cab: c.ca.cab
978
- sa:
979
- sa1: ['b', 'a', 'f', 'c']
980
- YAML
981
- }
982
- end
983
-
984
- it 'finds lookup_options that matches a pattern' do
985
- expect(lookup('a')).to eql({'aa' => { 'aaa' => 'a.aa.aaa', 'aab' => 'a.aa.aab' }})
986
- end
987
-
988
- it 'gives a direct key match higher priority than a matching pattern' do
989
- expect(lookup('b')).to eql({'ba' => { 'baa' => 'b.ba.baa' }, 'bb' => { 'bba'=>'b.bb.bba' }})
990
- end
991
-
992
- it 'uses the first matching pattern' do
993
- expect(lookup('c')).to eql({'ca' => { 'caa' => 'c.ca.caa', 'cab' => 'c.ca.cab' }})
994
- end
995
-
996
- it 'uses lookup_option found by pattern from module' do
997
- expect(lookup('mod::hash_a')).to eql({
998
- 'aa' => {
999
- 'aaa' => 'aaa (from module)',
1000
- 'aab' => 'aab (from environment)'
1001
- },
1002
- 'ab' => {
1003
- 'aba' => 'aba (from environment)',
1004
- 'abb' => 'abb (from environment)'
1005
- }
1006
- })
1007
- end
1008
-
1009
- it 'merges lookup_options found by pattern in environment and module (environment wins)' do
1010
- expect(lookup('mod::hash_b')).to eql({
1011
- 'ba' => {
1012
- 'bab' => 'bab (from environment)'
1013
- },
1014
- 'bb' => {
1015
- 'bba' => 'bba (from module)'
1016
- },
1017
- 'bc' => {
1018
- 'bca' => 'bca (from environment)'
1019
- }
1020
- })
1021
- end
1022
-
1023
- context 'and patterns in module are not limited to module keys' do
1024
- let(:mod_common) {
1025
- <<-YAML.unindent
1026
- mod::hash_a:
1027
- aa:
1028
- aaa: aaa (from module)
1029
- ab:
1030
- aba: aba (from module)
1031
- lookup_options:
1032
- '^.*_a':
1033
- merge: deep
1034
- YAML
1035
- }
1036
-
1037
- it 'fails with error' do
1038
- expect { lookup('mod::a') }.to raise_error(Puppet::DataBinding::LookupError, /all lookup_options patterns must match a key starting with module name/)
1039
- end
1040
- end
1041
-
1042
- context 'and there are no lookup options that do not use patterns' do
1043
-
1044
- let(:env_lookup_options) { <<-YAML.unindent }
1045
- lookup_options:
1046
- '^[^b]$':
1047
- merge: deep
1048
- '^c':
1049
- merge: first
1050
- '^b':
1051
- merge: first
1052
- '^mod::ha.*_b':
1053
- merge: hash
1054
- YAML
1055
-
1056
- it 'finds lookup_options that matches a pattern' do
1057
- expect(lookup('a')).to eql({'aa' => { 'aaa' => 'a.aa.aaa', 'aab' => 'a.aa.aab' }})
1058
- end
1059
- end
1060
-
1061
- context 'and lookup options use a hash' do
1062
-
1063
- let(:env_lookup_options) { <<-YAML.unindent }
1064
- lookup_options:
1065
- 'sa':
1066
- merge:
1067
- strategy: deep
1068
- knockout_prefix: --
1069
- sort_merged_arrays: true
1070
- YAML
1071
-
1072
- it 'applies knockout_prefix and sort_merged_arrays' do
1073
- expect(lookup('sa')).to eql({ 'sa1' => %w(a b c d e) })
1074
- end
1075
-
1076
- it 'overrides knockout_prefix and sort_merged_arrays with explicitly given values' do
1077
- expect(
1078
- lookup('sa', 'merge' => { 'strategy' => 'deep', 'knockout_prefix' => '##', 'sort_merged_arrays' => false })).to(
1079
- eql({ 'sa1' => %w(b a f c e d --f) }))
1080
- end
1081
- end
1082
- end
1083
-
1084
- context 'and an environment Hiera v5 configuration using globs' do
1085
- let(:env_hiera_yaml) do
1086
- <<-YAML.unindent
1087
- ---
1088
- version: 5
1089
- hierarchy:
1090
- - name: Globs
1091
- globs:
1092
- - "globs/*.yaml"
1093
- - "globs_%{domain}/*.yaml"
1094
- YAML
1095
- end
1096
-
1097
- let(:env_data) do
1098
- {
1099
- 'globs' => {
1100
- 'a.yaml' => <<-YAML.unindent,
1101
- glob_a: value glob_a
1102
- YAML
1103
- 'b.yaml' => <<-YAML.unindent
1104
- glob_b:
1105
- a: value glob_b.a
1106
- b: value glob_b.b
1107
- YAML
1108
- },
1109
- 'globs_example.com' => {
1110
- 'a.yaml' => <<-YAML.unindent,
1111
- glob_c: value glob_a
1112
- YAML
1113
- 'b.yaml' => <<-YAML.unindent
1114
- glob_d:
1115
- a: value glob_d.a
1116
- b: value glob_d.b
1117
- YAML
1118
-
1119
- }
1120
- }
1121
- end
1122
-
1123
- it 'finds environment data using globs' do
1124
- expect(lookup('glob_a')).to eql('value glob_a')
1125
- expect(warnings).to be_empty
1126
- end
1127
-
1128
- it 'finds environment data using interpolated globs' do
1129
- expect(lookup('glob_d.a')).to eql('value glob_d.a')
1130
- expect(warnings).to be_empty
1131
- end
1132
- end
1133
-
1134
- context 'and an environment Hiera v5 configuration using uris' do
1135
- let(:env_hiera_yaml) do
1136
- <<-YAML.unindent
1137
- ---
1138
- version: 5
1139
- hierarchy:
1140
- - name: Uris
1141
- uris:
1142
- - "http://test.example.com"
1143
- - "/some/arbitrary/path"
1144
- - "urn:with:opaque:path"
1145
- - "dothis%20-f%20bar"
1146
- data_hash: mod::uri_test_func
1147
- YAML
1148
- end
1149
-
1150
- let(:env_modules) do
1151
- {
1152
- 'mod' => { 'lib' => { 'puppet' => { 'functions' => { 'mod' => { 'uri_test_func.rb' => <<-RUBY } } } } }
1153
- Puppet::Functions.create_function(:'mod::uri_test_func') do
1154
- dispatch :uri_test_func do
1155
- param 'Hash', :options
1156
- param 'Puppet::LookupContext', :context
1157
- end
1158
-
1159
- def uri_test_func(options, context)
1160
- { 'uri' => [ options['uri'] ] }
1161
- end
1162
- end
1163
- RUBY
1164
- }
1165
- end
1166
-
1167
- it 'The uris are propagated in the options hash' do
1168
- expect(lookup('uri', 'merge' => 'unique')).to eql(
1169
- %w(http://test.example.com /some/arbitrary/path urn:with:opaque:path dothis%20-f%20bar))
1170
- expect(warnings).to be_empty
1171
- end
1172
-
1173
- context 'and a uri uses bad syntax' do
1174
- let(:env_hiera_yaml) do
1175
- <<-YAML.unindent
1176
- ---
1177
- version: 5
1178
- hierarchy:
1179
- - name: Uris
1180
- uri: "dothis -f bar"
1181
- data_hash: mod::uri_test_func
1182
- YAML
1183
- end
1184
-
1185
- it 'an attempt to lookup raises InvalidURIError' do
1186
- expect{ lookup('uri', 'merge' => 'unique') }.to raise_error(/bad URI/)
1187
- end
1188
- end
1189
- end
1190
-
1191
- context 'and an environment Hiera v5 configuration using mapped_paths' do
1192
- let(:scope_additions) do
1193
- {
1194
- 'mapped' => {
1195
- 'array_var' => ['a', 'b', 'c'],
1196
- 'hash_var' => { 'x' => 'a', 'y' => 'b', 'z' => 'c' },
1197
- 'string_var' => 's' },
1198
- 'var' => 'global_var' # overridden by mapped path variable
1199
- }
1200
- end
1201
-
1202
- let(:env_hiera_yaml) do
1203
- <<-YAML.unindent
1204
- ---
1205
- version: 5
1206
- hierarchy:
1207
- - name: Mapped Paths
1208
- mapped_paths: #{mapped_paths}
1209
- - name: Global Path
1210
- path: "%{var}.yaml"
1211
- YAML
1212
- end
1213
-
1214
- let(:environment_files) do
1215
- {
1216
- env_name => {
1217
- 'hiera.yaml' => env_hiera_yaml,
1218
- 'data' => env_data
1219
- }
1220
- }
1221
- end
1222
-
1223
- context 'that originates from an array' do
1224
- let (:mapped_paths) { '[mapped.array_var, var, "paths/%{var}.yaml"]' }
1225
-
1226
- let(:env_data) do
1227
- {
1228
- 'paths' => {
1229
- 'a.yaml' => <<-YAML.unindent,
1230
- path_a: value path_a
1231
- path_h:
1232
- a: value path_h.a
1233
- c: value path_h.c
1234
- YAML
1235
- 'b.yaml' => <<-YAML.unindent,
1236
- path_h:
1237
- b: value path_h.b
1238
- d: value path_h.d
1239
- YAML
1240
- 'd.yaml' => <<-YAML.unindent
1241
- path_h:
1242
- b: value path_h.b (from d.yaml)
1243
- d: value path_h.d (from d.yaml)
1244
- YAML
1245
- },
1246
- 'global_var.yaml' => <<-YAML.unindent,
1247
- path_h:
1248
- e: value path_h.e
1249
- YAML
1250
- 'other_var.yaml' => <<-YAML.unindent
1251
- path_h:
1252
- e: value path_h.e (from other_var.yaml)
1253
- YAML
1254
- }
1255
- end
1256
-
1257
- it 'finds environment data using mapped_paths' do
1258
- expect(lookup('path_a')).to eql('value path_a')
1259
- expect(warnings).to be_empty
1260
- end
1261
-
1262
- it 'includes mapped path in explain output' do
1263
- explanation = explain('path_h', 'merge' => 'deep')
1264
- ['a', 'b', 'c'].each do |var|
1265
- expect(explanation).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/#{var}\.yaml"\n\s+Original path: "paths\/%\{var\}\.yaml"/)
1266
- end
1267
- expect(warnings).to be_empty
1268
- end
1269
-
1270
- it 'performs merges between mapped paths and global path interpolated using same key' do
1271
- expect(lookup('path_h', 'merge' => 'hash')).to eql(
1272
- {
1273
- 'a' => 'value path_h.a',
1274
- 'b' => 'value path_h.b',
1275
- 'c' => 'value path_h.c',
1276
- 'd' => 'value path_h.d',
1277
- 'e' => 'value path_h.e'
1278
- })
1279
- expect(warnings).to be_empty
1280
- end
1281
-
1282
- it 'keeps track of changes in key overridden by interpolated key' do
1283
- Puppet[:log_level] = 'debug'
1284
- collect_notices("notice('success')") do |scope|
1285
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1286
- {
1287
- 'a' => 'value path_h.a',
1288
- 'b' => 'value path_h.b',
1289
- 'c' => 'value path_h.c',
1290
- 'd' => 'value path_h.d',
1291
- 'e' => 'value path_h.e'
1292
- })
1293
- scope.with_local_scope('var' => 'other_var') do
1294
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1295
- {
1296
- 'a' => 'value path_h.a',
1297
- 'b' => 'value path_h.b',
1298
- 'c' => 'value path_h.c',
1299
- 'd' => 'value path_h.d',
1300
- 'e' => 'value path_h.e (from other_var.yaml)'
1301
- })
1302
- end
1303
- end
1304
- expect(notices).to eql(['success'])
1305
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
1306
- end
1307
-
1308
- it 'keeps track of changes in elements of mapped key' do
1309
- Puppet[:log_level] = 'debug'
1310
- collect_notices("notice('success')") do |scope|
1311
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1312
- {
1313
- 'a' => 'value path_h.a',
1314
- 'b' => 'value path_h.b',
1315
- 'c' => 'value path_h.c',
1316
- 'd' => 'value path_h.d',
1317
- 'e' => 'value path_h.e'
1318
- })
1319
- scope['mapped']['array_var'] = ['a', 'c', 'd']
1320
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1321
- {
1322
- 'a' => 'value path_h.a',
1323
- 'b' => 'value path_h.b (from d.yaml)',
1324
- 'c' => 'value path_h.c',
1325
- 'd' => 'value path_h.d (from d.yaml)',
1326
- 'e' => 'value path_h.e'
1327
- })
1328
- end
1329
- expect(notices).to eql(['success'])
1330
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
1331
- end
1332
- end
1333
-
1334
- context 'that originates from a hash' do
1335
- let (:mapped_paths) { '[mapped.hash_var, var, "paths/%{var.0}.%{var.1}.yaml"]' }
1336
-
1337
- let(:env_data) do
1338
- {
1339
- 'paths' => {
1340
- 'x.a.yaml' => <<-YAML.unindent,
1341
- path_xa: value path_xa
1342
- path_m:
1343
- a: value path_m.a
1344
- c: value path_m.c
1345
- YAML
1346
- 'y.b.yaml' => <<-YAML.unindent
1347
- path_m:
1348
- b: value path_m.b
1349
- d: value path_m.d
1350
- YAML
1351
- },
1352
- 'global_var.yaml' => <<-YAML.unindent
1353
- path_m:
1354
- e: value path_m.e
1355
- YAML
1356
- }
1357
- end
1358
-
1359
- it 'finds environment data using mapped_paths' do
1360
- expect(lookup('path_xa')).to eql('value path_xa')
1361
- expect(warnings).to be_empty
1362
- end
1363
-
1364
- it 'includes mapped path in explain output' do
1365
- explanation = explain('path_h', 'merge' => 'deep')
1366
- ['x\.a', 'y\.b', 'z\.c'].each do |var|
1367
- expect(explanation).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/#{var}\.yaml"\n\s+Original path: "paths\/%\{var\.0\}\.%\{var\.1\}\.yaml"/)
1368
- end
1369
- expect(warnings).to be_empty
1370
- end
1371
-
1372
- it 'performs merges between mapped paths' do
1373
- expect(lookup('path_m', 'merge' => 'hash')).to eql(
1374
- {
1375
- 'a' => 'value path_m.a',
1376
- 'b' => 'value path_m.b',
1377
- 'c' => 'value path_m.c',
1378
- 'd' => 'value path_m.d',
1379
- 'e' => 'value path_m.e'
1380
- })
1381
- expect(warnings).to be_empty
1382
- end
1383
- end
1384
-
1385
- context 'that originates from a string' do
1386
- let (:mapped_paths) { '[mapped.string_var, var, "paths/%{var}.yaml"]' }
1387
-
1388
- let(:env_data) do
1389
- {
1390
- 'paths' => {
1391
- 's.yaml' => <<-YAML.unindent,
1392
- path_s: value path_s
1393
- YAML
1394
- }
1395
- }
1396
- end
1397
-
1398
- it 'includes mapped path in explain output' do
1399
- expect(explain('path_s')).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/s\.yaml"\n\s+Original path: "paths\/%\{var\}\.yaml"/)
1400
- expect(warnings).to be_empty
1401
- end
1402
-
1403
- it 'finds environment data using mapped_paths' do
1404
- expect(lookup('path_s')).to eql('value path_s')
1405
- expect(warnings).to be_empty
1406
- end
1407
- end
1408
-
1409
- context 'where the enty does not exist' do
1410
- let (:mapped_paths) { '[mapped.nosuch_var, var, "paths/%{var}.yaml"]' }
1411
-
1412
- it 'finds environment data using mapped_paths' do
1413
- expect(explain('hello')).to match(/No such key: "hello"/)
1414
- expect(warnings).to be_empty
1415
- end
1416
- end
1417
- end
1418
-
1419
- context 'and an environment Hiera v3 configuration' do
1420
- let(:env_hiera_yaml) do
1421
- <<-YAML.unindent
1422
- ---
1423
- :backends: yaml
1424
- :yaml:
1425
- :datadir: #{env_dir}/#{env_name}/hieradata
1426
- YAML
1427
- end
1428
-
1429
- let(:environment_files) do
1430
- {
1431
- env_name => {
1432
- 'hiera.yaml' => env_hiera_yaml,
1433
- 'hieradata' => {
1434
- 'common.yaml' => <<-YAML.unindent,
1435
- g: Value g
1436
- YAML
1437
- }
1438
- }
1439
- }
1440
- end
1441
-
1442
- it 'will raise an error if --strict is set to error' do
1443
- Puppet[:strict] = :error
1444
- expect { lookup('g') }.to raise_error(Puppet::Error, /hiera.yaml version 3 cannot be used in an environment/)
1445
- end
1446
-
1447
- it 'will log a warning and ignore the file if --strict is set to warning' do
1448
- Puppet[:strict] = :warning
1449
- expect { lookup('g') }.to raise_error(Puppet::Error, /did not find a value for the name 'g'/)
1450
- end
1451
-
1452
- it 'will not log a warning and ignore the file if --strict is set to off' do
1453
- Puppet[:strict] = :off
1454
- expect { lookup('g') }.to raise_error(Puppet::Error, /did not find a value for the name 'g'/)
1455
- expect(warnings).to include(/hiera.yaml version 3 found at the environment root was ignored/)
1456
- end
1457
-
1458
- it 'will use the configuration if appointed by global setting but still warn when encountered by environment data provider' do
1459
- Puppet[:strict] = :warning
1460
- Puppet.settings[:hiera_config] = File.join(env_dir, env_name, 'hiera.yaml')
1461
- expect(lookup('g')).to eql('Value g')
1462
- expect(warnings).to include(/hiera.yaml version 3 found at the environment root was ignored/)
1463
- end
1464
- end
1465
-
1466
- context 'and a global empty Hiera configuration' do
1467
- let(:hiera_yaml_path) { File.join(code_dir, 'hiera.yaml') }
1468
- let(:code_dir_files) do
1469
- {
1470
- 'hiera.yaml' => '',
1471
- }
1472
- end
1473
-
1474
- let(:environment_files) do
1475
- {
1476
- env_name => {
1477
- 'hieradata' => {
1478
- 'common.yaml' => <<-YAML.unindent,
1479
- x: value x (from environment)
1480
- YAML
1481
- }
1482
- }
1483
- }
1484
- end
1485
-
1486
- before(:each) do
1487
- # Need to set here since spec_helper defines these settings in its "before each"
1488
- Puppet.settings[:hiera_config] = hiera_yaml_path
1489
- end
1490
-
1491
- it 'uses a Hiera version 3 defaults' do
1492
- expect(lookup('x')).to eql('value x (from environment)')
1493
- end
1494
-
1495
- context 'obtained using /dev/null', :unless => Puppet::Util::Platform.windows? do
1496
- let(:code_dir_files) { {} }
1497
-
1498
- it 'uses a Hiera version 3 defaults' do
1499
- Puppet[:hiera_config] = '/dev/null'
1500
- expect(lookup('x')).to eql('value x (from environment)')
1501
- end
1502
- end
1503
- end
1504
-
1505
- context 'and a global configuration' do
1506
- let(:hiera_yaml) do
1507
- <<-YAML.unindent
1508
- ---
1509
- :backends:
1510
- - yaml
1511
- - json
1512
- - custom
1513
- - hocon
1514
- :yaml:
1515
- :datadir: #{code_dir}/hieradata
1516
- :json:
1517
- :datadir: #{code_dir}/hieradata
1518
- :hocon:
1519
- :datadir: #{code_dir}/hieradata
1520
- :hierarchy:
1521
- - common
1522
- - "%{domain}"
1523
- :merge_behavior: deeper
1524
- YAML
1525
- end
1526
-
1527
- let(:code_dir_files) do
1528
- {
1529
- 'hiera.yaml' => hiera_yaml,
1530
- 'hieradata' => {
1531
- 'common.yaml' => <<-YAML.unindent,
1532
- a: value a (from global)
1533
- hash_b:
1534
- hash_ba:
1535
- bab: value hash_b.hash_ba.bab (from global)
1536
- hash_c:
1537
- hash_ca:
1538
- cab: value hash_c.hash_ca.cab (from global)
1539
- ipl_hiera_env: "environment value '%{hiera('mod_a::hash_a.a')}'"
1540
- ipl_hiera_mod: "module value '%{hiera('mod_a::abc')}'"
1541
- ipl_hiera_modc: "module value '%{hiera('mod_a::caller')}'"
1542
- YAML
1543
- 'example.com.yaml' => <<-YAML.unindent,
1544
- x: value x (from global example.com.yaml)
1545
- YAML
1546
- 'common.json' => <<-JSON.unindent,
1547
- {
1548
- "hash_b": {
1549
- "hash_ba": {
1550
- "bac": "value hash_b.hash_ba.bac (from global json)"
1551
- }
1552
- },
1553
- "hash_c": {
1554
- "hash_ca": {
1555
- "cac": "value hash_c.hash_ca.cac (from global json)"
1556
- }
1557
- }
1558
- }
1559
- JSON
1560
- 'common.conf' => <<-HOCON.unindent,
1561
- // The 'xs' is a value used for testing
1562
- xs = { subkey = value xs.subkey (from global hocon) }
1563
- HOCON
1564
- }
1565
- }
1566
- end
1567
-
1568
- before(:all) do
1569
- $LOAD_PATH.unshift(my_fixture_dir)
1570
- end
1571
-
1572
- after(:all) do
1573
- if Kernel.const_defined?(:Hiera) && Hiera.const_defined?(:Backend)
1574
- Hiera::Backend.send(:remove_const, :Custom_backend) if Hiera::Backend.const_defined?(:Custom_backend)
1575
- Hiera::Backend.send(:remove_const, :Other_backend) if Hiera::Backend.const_defined?(:Other_backend)
1576
- end
1577
- $LOAD_PATH.shift
1578
- end
1579
-
1580
- before(:each) do
1581
- # Need to set here since spec_helper defines these settings in its "before each"
1582
- Puppet.settings[:codedir] = populated_code_dir
1583
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
1584
- end
1585
-
1586
- around(:each) do |example|
1587
- Puppet.override(:environments => environments, :current_environment => env) do
1588
- example.run
1589
- end
1590
- end
1591
-
1592
- context 'version 3' do
1593
- it 'finds data in in global layer and reports deprecation warnings for hiera.yaml' do
1594
- expect(lookup('a')).to eql('value a (from global)')
1595
- expect(warnings).to include(/Use of 'hiera.yaml' version 3 is deprecated. It should be converted to version 5/)
1596
- end
1597
-
1598
- it 'explain contains output from global layer' do
1599
- explanation = explain('a')
1600
- expect(explanation).to include('Global Data Provider (hiera configuration version 3)')
1601
- expect(explanation).to include('Hierarchy entry "yaml"')
1602
- expect(explanation).to include('Hierarchy entry "json"')
1603
- expect(explanation).to include('Found key: "a" value: "value a (from global)"')
1604
- end
1605
-
1606
- it 'ignores merge behavior specified in global hiera.yaml' do
1607
- expect(lookup('hash_b')).to eql(
1608
- { 'hash_ba' => { 'bab' => 'value hash_b.hash_ba.bab (from global)'} })
1609
- end
1610
-
1611
- it 'uses the merge from lookup options to merge all layers' do
1612
- expect(lookup('hash_c')).to eql(
1613
- { 'hash_ca' => { 'cab' => 'value hash_c.hash_ca.cab (from global)' } })
1614
- end
1615
-
1616
- it 'uses the explicitly given merge to override lookup options and to merge all layers' do
1617
- expect(lookup('hash_c', 'merge' => 'deep')).to eql(
1618
- {
1619
- 'hash_ca' =>
1620
- {
1621
- 'caa' => 'value hash_c.hash_ca.caa (from environment)',
1622
- 'cab' => 'value hash_c.hash_ca.cab (from global)',
1623
- 'cac' => 'value hash_c.hash_ca.cac (from global json)',
1624
- 'cad' => 'value hash_c.hash_ca.cad (from global custom)'
1625
- }
1626
- })
1627
- end
1628
-
1629
- it 'paths are interpolated' do
1630
- expect(lookup('x')).to eql('value x (from global example.com.yaml)')
1631
- end
1632
-
1633
- it 'backend data sources are propagated to custom backend' do
1634
- expect(lookup('datasources')).to eql(['common', 'example.com'])
1635
- end
1636
-
1637
- it 'delegates configured hocon backend to hocon_data function' do
1638
- expect(explain('xs')).to match(/Hierarchy entry "hocon"\n.*\n.*\n.*"common"\n\s*Found key: "xs"/m)
1639
- end
1640
-
1641
- it 'can dig down into subkeys provided by hocon_data function' do
1642
- expect(lookup('xs.subkey')).to eql('value xs.subkey (from global hocon)')
1643
- end
1644
-
1645
- context 'with a module data provider' do
1646
- let(:module_files) do
1647
- {
1648
- 'mod_a' => {
1649
- 'hiera.yaml' => <<-YAML.unindent,
1650
- version: 5
1651
- hierarchy:
1652
- - name: Common
1653
- path: common.yaml
1654
- YAML
1655
- 'data' => {
1656
- 'common.yaml' => <<-YAML.unindent
1657
- mod_a::abc: value mod_a::abc (from module)
1658
- mod_a::caller: "calling module is %{calling_module}"
1659
- YAML
1660
- }
1661
- }
1662
- }
1663
- end
1664
-
1665
- let(:environment_files) do
1666
- {
1667
- env_name => {
1668
- 'hiera.yaml' => env_hiera_yaml,
1669
- 'data' => env_data,
1670
- 'modules' => module_files
1671
- }
1672
- }
1673
- end
1674
-
1675
- it "interpolation function 'hiera' finds values in environment" do
1676
- expect(lookup('ipl_hiera_env')).to eql("environment value 'value mod_a::hash_a.a (from environment)'")
1677
- end
1678
-
1679
- it "interpolation function 'hiera' finds values in module" do
1680
- expect(lookup('ipl_hiera_mod')).to eql("module value 'value mod_a::abc (from module)'")
1681
- end
1682
-
1683
- it "interpolation function 'hiera' finds values in module and that module does not find %{calling_module}" do
1684
- expect(lookup('ipl_hiera_modc')).to eql("module value 'calling module is '")
1685
- end
1686
-
1687
- context 'but no environment data provider' do
1688
- let(:environment_files) do
1689
- {
1690
- env_name => {
1691
- 'modules' => module_files
1692
- }
1693
- }
1694
- end
1695
-
1696
- it "interpolation function 'hiera' does not find values in a module" do
1697
- expect(lookup('ipl_hiera_mod')).to eql("module value ''")
1698
- end
1699
- end
1700
- end
1701
-
1702
-
1703
- context 'using an eyaml backend' do
1704
- let(:private_key_name) { 'private_key.pkcs7.pem' }
1705
- let(:public_key_name) { 'public_key.pkcs7.pem' }
1706
-
1707
- let(:private_key) do
1708
- <<-PKCS7.unindent
1709
- -----BEGIN RSA PRIVATE KEY-----
1710
- MIIEogIBAAKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6f
1711
- CR7tyOpYV6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC
1712
- 2LUuqj1IAErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQ
1713
- NlgZwm2/aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2
1714
- tPtLsHyRN39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1o
1715
- EfQFDQRKaIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABAoIBAE98pNXOe8ab93oI
1716
- mtNZYmjCbGAqprTjEoFb71A3SfYbmK2Gf65GxjUdBwx/tBYTiuekSOk+yzKcDoZk
1717
- sZnmwKpqDByzaiSmAkxunANFxdZtZvpcX9UfUX0j/t+QCROUa5gF8j6HrUiZ5nkx
1718
- sxr1PcuItekaGLJ1nDLz5JsWTQ+H4M+GXQw7/t96x8v8g9el4exTiAHGk6Fv16kD
1719
- 017T02M9qTTmV3Ab/enDIBmKVD42Ta36K/wc4l1aoUQNiRbIGVh96Cgd1CFXLF3x
1720
- CsaNbYT4SmRXaYqoj6MKq+QFEGxadFmJy48NoSd4joirIn2lUjHxJebw3lLbNLDR
1721
- uvQnQ2ECgYEA/nD94wEMr6078uMv6nKxPpNGq7fihwSKf0G/PQDqrRmjUCewuW+k
1722
- /iXMe1Y/y0PjFeNlSbUsUvKQ5xF7F/1AnpuPHIrn3cjGVLb71W+zen1m8SnhsW/f
1723
- 7dPgtcb4SCvfhmLgoov+P34YcNfGi6qgPUu6319IqoB3BIi7PvfEomkCgYEAwZ4+
1724
- V0bMjFdDn2hnYzjTNcF2aUQ1jPvtuETizGwyCbbMLl9522lrjC2DrH41vvqX35ct
1725
- CBJkhQFbtHM8Gnmozv0vxhI2jP+u14mzfePZsaXuYrEgWRj+BCsYUHodXryxnEWj
1726
- yVrTNskab1B5jFm2SCJDmKcycBOYpRBLCMx6W7MCgYBA99z7/6KboOIzzKrJdGup
1727
- jLV410UyMIikoccQ7pD9jhRTPS80yjsY4dHqlEVJw5XSWvPb9DTTITi6p44EvBep
1728
- 6BKMuTMnQELUEr0O7KypVCfa4FTOl8BX28f+4kU3OGykxc6R8qkC0VGwTohV1UWB
1729
- ITsgGhZV4uOA9uDI3T8KMQKBgEnQY2HwmuDSD/TA39GDA3qV8+ez2lqSXRGIKZLX
1730
- mMf9SaBQQ+uzKA4799wWDbVuYeIbB07xfCL83pJP8FUDlqi6+7Celu9wNp7zX1ua
1731
- Nw8z/ErhzjxJe+Xo7A8aTwIkG+5A2m1UU/up9YsEeiJYvVaIwY58B42U2vfq20BS
1732
- fD9jAoGAX2MscBzIsmN+U9R0ptL4SXcPiVnOl8mqvQWr1B4OLgxX7ghht5Fs956W
1733
- bHipxOWMFCPJA/AhNB8q1DvYiD1viZbIALSCJVUkzs4AEFIjiPsCBKxerl7jF6Xp
1734
- 1WYSaCmfvoCVEpFNt8cKp4Gq+zEBYAV4Q6TkcD2lDtEW49MuN8A=
1735
- -----END RSA PRIVATE KEY-----
1736
- PKCS7
1737
- end
1738
-
1739
- let(:public_key) do
1740
- <<-PKCS7.unindent
1741
- -----BEGIN CERTIFICATE-----
1742
- MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDExMzA5MTY1
1743
- MloYDzIwNjcwMTAxMDkxNjUyWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
1744
- CgKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6fCR7tyOpY
1745
- V6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC2LUuqj1I
1746
- AErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQNlgZwm2/
1747
- aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2tPtLsHyR
1748
- N39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1oEfQFDQRK
1749
- aIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
1750
- MB0GA1UdDgQWBBSejWrVnw7QaBjNFCHMNFi+doSOcTAoBgNVHSMEITAfgBSejWrV
1751
- nw7QaBjNFCHMNFi+doSOcaEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAAe85
1752
- BQ1ydAHFqo0ib38VRPOwf5xPHGbYGhvQi4/sU6aTuR7pxaOJPYz05jLhS+utEmy1
1753
- sknBq60G67yhQE7IHcfwrl1arirG2WmKGvAbjeYL2K1UiU0pVD3D+Klkv/pK6jIQ
1754
- eOJRGb3qNUn0Sq9EoYIOXiGXQ641F0bZZ0+5H92kT1lmnF5oLfCb84ImD9T3snH6
1755
- pIr5RKRx/0YmJIcv3WdpoPT903rOJiRIEgIj/hDk9QZTBpm222Ul5yQQ5pBywpSp
1756
- xh0bmJKAQWhQm7QlybKfyaQmg5ot1jEzWAvD2I5FjHQxmAlchjb6RreaRhExj+JE
1757
- 5O117dMBdzDBjcNMOA==
1758
- -----END CERTIFICATE-----
1759
- PKCS7
1760
- end
1761
-
1762
- let(:keys_dir) do
1763
- keys = tmpdir('keys')
1764
- dir_contained_in(keys, {
1765
- private_key_name => private_key,
1766
- public_key_name => public_key
1767
- })
1768
- keys
1769
- end
1770
-
1771
- let(:private_key_path) { File.join(keys_dir, private_key_name) }
1772
- let(:public_key_path) { File.join(keys_dir, public_key_name) }
1773
- let(:hiera_yaml) do
1774
- <<-YAML.unindent
1775
- :backends:
1776
- - eyaml
1777
- - yaml
1778
- :eyaml:
1779
- :datadir: #{code_dir}/hieradata
1780
- :pkcs7_private_key: #{private_key_path}
1781
- :pkcs7_public_key: #{public_key_path}
1782
- :yaml:
1783
- :datadir: #{code_dir}/hieradata
1784
- :hierarchy:
1785
- - common
1786
- YAML
1787
- end
1788
-
1789
- let(:data_files) do
1790
- {
1791
- 'common.yaml' => <<-YAML.unindent,
1792
- b: value 'b' (from global)
1793
- c:
1794
- c_a: value c_a (from global)
1795
- YAML
1796
- 'common.eyaml' => <<-YAML.unindent
1797
- a: >
1798
- ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
1799
- DQYJKoZIhvcNAQEBBQAEggEAH457bsfL8kYw9O50roE3dcE21nCnmPnQ2XSX
1800
- LYRJ2C78LarbfFonKz0gvDW7tyhsLWASFCFaiU8T1QPBd2b3hoQK8E4B2Ual
1801
- xga/K7r9y3OSgRomTm9tpTltC6re0Ubh3Dy71H61obwxEdNVTqjPe95+m2b8
1802
- 6zWZVnzZzXXsTG1S17yJn1zaB/LXHbWNy4KyLLKCGAml+Gfl6ZMjmaplTmUA
1803
- QIC5rI8abzbPP3TDMmbLOGNkrmLqI+3uS8tSueTMoJmWaMF6c+H/cA7oRxmV
1804
- QCeEUVXjyFvCHcmbA+keS/RK9XF+vc07/XS4XkYSPs/I5hLQji1y9bkkGAs0
1805
- tehxQjBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDHpA6Fcl/R16aIYcow
1806
- oiO4gDAvfFH6jLUwXkcYtagnwdmhkd9TQJtxNWcIwMpvmk036MqIoGwwhQdg
1807
- gV4beiCFtLU=]
1808
- a_ref: "A reference to %{hiera('a')}"
1809
- b_ref: "A reference to %{hiera('b')}"
1810
- c_ref: "%{alias('c')}"
1811
- :symbol: "A symbol"
1812
- YAML
1813
- }
1814
- end
1815
-
1816
- let(:code_dir_files) do
1817
- {
1818
- 'hiera.yaml' => hiera_yaml,
1819
- 'hieradata' => data_files
1820
- }
1821
- end
1822
-
1823
- before(:each) do
1824
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
1825
- end
1826
-
1827
- it 'finds data in the global layer' do
1828
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
1829
- end
1830
-
1831
- it 'can use a hiera interpolation' do
1832
- expect(lookup('a_ref')).to eql("A reference to Encrypted value 'a' (from global)")
1833
- end
1834
-
1835
- it 'can use a hiera interpolation that refers back to yaml' do
1836
- expect(lookup('b_ref')).to eql("A reference to value 'b' (from global)")
1837
- end
1838
-
1839
- it 'can use a hiera interpolation that refers back to yaml, but only in global layer' do
1840
- expect(lookup(['c', 'c_ref'], 'merge' => 'deep')).to eql([{'c_a' => 'value c_a (from global)', 'c_b' => 'value c_b (from environment)'}, { 'c_a' => 'value c_a (from global)' }])
1841
- end
1842
-
1843
- it 'delegates configured eyaml backend to eyaml_lookup_key function' do
1844
- expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
1845
- end
1846
- end
1847
-
1848
- context 'using deep_merge_options' do
1849
- let(:hiera_yaml) do
1850
- <<-YAML.unindent
1851
- ---
1852
- :backends:
1853
- - yaml
1854
- :yaml:
1855
- :datadir: #{code_dir}/hieradata
1856
- :hierarchy:
1857
- - common
1858
- - other
1859
- :merge_behavior: deeper
1860
- :deep_merge_options:
1861
- :unpack_arrays: ','
1862
- YAML
1863
- end
1864
-
1865
- let(:code_dir_files) do
1866
- {
1867
- 'hiera.yaml' => hiera_yaml,
1868
- 'hieradata' => {
1869
- 'common.yaml' => <<-YAML.unindent,
1870
- hash:
1871
- array:
1872
- - x1,x2
1873
- array:
1874
- - x1,x2
1875
- str: a string
1876
- mixed:
1877
- x: hx
1878
- y: hy
1879
- YAML
1880
- 'other.yaml' => <<-YAML.unindent,
1881
- hash:
1882
- array:
1883
- - x3
1884
- - x4
1885
- array:
1886
- - x3
1887
- - x4
1888
- str: another string
1889
- mixed:
1890
- - h1
1891
- - h2
1892
- YAML
1893
- }
1894
- }
1895
- end
1896
-
1897
- it 'ignores configured merge_behavior when looking up arrays' do
1898
- expect(lookup('array')).to eql(['x1,x2'])
1899
- end
1900
-
1901
- it 'ignores configured merge_behavior when merging arrays' do
1902
- expect(lookup('array', 'merge' => 'unique')).to eql(['x1,x2', 'x3', 'x4'])
1903
- end
1904
-
1905
- it 'ignores configured merge_behavior when looking up hashes' do
1906
- expect(lookup('hash')).to eql({'array' => ['x1,x2']})
1907
- end
1908
-
1909
- it 'ignores configured merge_behavior when merging hashes' do
1910
- expect(lookup('hash', 'merge' => 'hash')).to eql({'array' => ['x1,x2']})
1911
- end
1912
- end
1913
-
1914
- context 'using relative datadir paths' do
1915
- let(:hiera_yaml) do
1916
- <<-YAML.unindent
1917
- ---
1918
- :backends:
1919
- - yaml
1920
- :yaml:
1921
- :datadir: relative_data
1922
- :hierarchy:
1923
- - common
1924
- YAML
1925
- end
1926
-
1927
- let(:populated_code_dir) do
1928
- dir_contained_in(code_dir, code_dir_files.merge({
1929
- 'fake_cwd' => {
1930
- 'relative_data' => {
1931
- 'common.yaml' => <<-YAML.unindent
1932
- a: value a (from fake_cwd/relative_data/common.yaml)
1933
- YAML
1934
- }
1935
- }
1936
- }))
1937
- code_dir
1938
- end
1939
-
1940
- around(:each) do |example|
1941
- cwd = Dir.pwd
1942
- Dir.chdir(File.join(code_dir, 'fake_cwd'))
1943
- begin
1944
- example.run
1945
- ensure
1946
- Dir.chdir(cwd)
1947
- end
1948
- end
1949
-
1950
- it 'finds data from data file beneath relative datadir' do
1951
- expect(lookup('a')).to eql('value a (from fake_cwd/relative_data/common.yaml)')
1952
- end
1953
- end
1954
- end
1955
-
1956
- context 'version 5' do
1957
- let(:scope_additions) { { 'ipl_datadir' => 'hieradata' } }
1958
- let(:hiera_yaml) do
1959
- <<-YAML.unindent
1960
- ---
1961
- version: 5
1962
- defaults:
1963
- datadir: "%{ipl_datadir}"
1964
-
1965
- hierarchy:
1966
- - name: Yaml
1967
- data_hash: yaml_data
1968
- paths:
1969
- - common.yaml
1970
- - "%{domain}.yaml"
1971
- - name: Json
1972
- data_hash: json_data
1973
- paths:
1974
- - common.json
1975
- - "%{domain}.json"
1976
- - name: Hocon
1977
- data_hash: hocon_data
1978
- paths:
1979
- - common.conf
1980
- - "%{domain}.conf"
1981
- - name: Custom
1982
- hiera3_backend: custom
1983
- paths:
1984
- - common.custom
1985
- - "%{domain}.custom"
1986
- - name: Other
1987
- hiera3_backend: other
1988
- options:
1989
- other_option: value of other_option
1990
- paths:
1991
- - common.other
1992
- - "%{domain}.other"
1993
- YAML
1994
- end
1995
-
1996
- it 'finds global data and reports no deprecation warnings' do
1997
- expect(lookup('a')).to eql('value a (from global)')
1998
- expect(warnings).to be_empty
1999
- end
2000
-
2001
- it 'explain contains output from global layer' do
2002
- explanation = explain('a')
2003
- expect(explanation).to include('Global Data Provider (hiera configuration version 5)')
2004
- expect(explanation).to include('Hierarchy entry "Yaml"')
2005
- expect(explanation).to include('Hierarchy entry "Json"')
2006
- expect(explanation).to include('Hierarchy entry "Hocon"')
2007
- expect(explanation).to include('Hierarchy entry "Custom"')
2008
- expect(explanation).to include('Found key: "a" value: "value a (from global)"')
2009
- end
2010
-
2011
- it 'uses the explicitly given merge to override lookup options and to merge all layers' do
2012
- expect(lookup('hash_c', 'merge' => 'deep')).to eql(
2013
- {
2014
- 'hash_ca' =>
2015
- {
2016
- 'caa' => 'value hash_c.hash_ca.caa (from environment)',
2017
- 'cab' => 'value hash_c.hash_ca.cab (from global)',
2018
- 'cac' => 'value hash_c.hash_ca.cac (from global json)',
2019
- 'cad' => 'value hash_c.hash_ca.cad (from global custom)'
2020
- }
2021
- })
2022
- end
2023
-
2024
- it 'backend data sources are propagated to custom backend' do
2025
- expect(lookup('datasources')).to eql(['common', 'example.com'])
2026
- end
2027
-
2028
- it 'backend specific options are propagated to custom backend' do
2029
- expect(lookup('other_option')).to eql('value of other_option')
2030
- end
2031
-
2032
- it 'dotted keys are passed down to custom backend' do
2033
- expect(lookup('dotted.key')).to eql('custom backend received request for dotted.key value')
2034
- end
2035
-
2036
- it 'multiple hiera3_backend declarations can be used and are merged into the generated config' do
2037
- expect(lookup(['datasources', 'other_option'])).to eql([['common', 'example.com'], 'value of other_option'])
2038
- expect(Hiera::Config.instance_variable_get(:@config)).to eql(
2039
- {
2040
- :backends => ['custom', 'other'],
2041
- :hierarchy => ['common', '%{domain}'],
2042
- :custom => { :datadir => "#{code_dir}/hieradata" },
2043
- :other => { :other_option => 'value of other_option', :datadir=>"#{code_dir}/hieradata" },
2044
- :logger => 'puppet'
2045
- })
2046
- end
2047
-
2048
- it 'provides a sensible error message when the hocon library is not loaded' do
2049
- Puppet.features.stubs(:hocon?).returns(false)
2050
-
2051
- expect { lookup('a') }.to raise_error do |e|
2052
- expect(e.message).to match(/Lookup using Hocon data_hash function is not supported without hocon library/)
2053
- end
2054
- end
2055
-
2056
- context 'with missing path declaraion' do
2057
- context 'and yaml_data function' do
2058
- let(:hiera_yaml) { <<-YAML.unindent }
2059
- version: 5
2060
- hierarchy:
2061
- - name: Yaml
2062
- data_hash: yaml_data
2063
- YAML
2064
-
2065
- it 'fails and reports the missing path' do
2066
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
2067
- end
2068
- end
2069
-
2070
- context 'and json_data function' do
2071
- let(:hiera_yaml) { <<-YAML.unindent }
2072
- version: 5
2073
- hierarchy:
2074
- - name: Json
2075
- data_hash: json_data
2076
- YAML
2077
-
2078
- it 'fails and reports the missing path' do
2079
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
2080
- end
2081
- end
2082
-
2083
- context 'and hocon_data function' do
2084
- let(:hiera_yaml) { <<-YAML.unindent }
2085
- version: 5
2086
- hierarchy:
2087
- - name: Hocon
2088
- data_hash: hocon_data
2089
- YAML
2090
-
2091
- it 'fails and reports the missing path' do
2092
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
2093
- end
2094
- end
2095
-
2096
- context 'and eyaml_lookup_key function' do
2097
- let(:hiera_yaml) { <<-YAML.unindent }
2098
- version: 5
2099
- hierarchy:
2100
- - name: Yaml
2101
- lookup_key: eyaml_lookup_key
2102
- YAML
2103
-
2104
- it 'fails and reports the missing path' do
2105
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this lookup_key function/)
2106
- end
2107
- end
2108
- end
2109
- end
2110
-
2111
- context 'with a hiera3_backend that has no paths' do
2112
- let(:hiera_yaml) do
2113
- <<-YAML.unindent
2114
- ---
2115
- version: 5
2116
- hierarchy:
2117
- - name: Custom
2118
- hiera3_backend: custom
2119
- YAML
2120
- end
2121
-
2122
- it 'calls the backend' do
2123
- expect(lookup('hash_c')).to eql(
2124
- { 'hash_ca' => { 'cad' => 'value hash_c.hash_ca.cad (from global custom)' }})
2125
- end
2126
- end
2127
- end
2128
-
2129
- context 'and a module' do
2130
- let(:mod_a_files) { {} }
2131
-
2132
- let(:populated_env_dir) do
2133
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
2134
- env_dir
2135
- end
2136
-
2137
- context 'that has no lookup configured' do
2138
- let(:mod_a_files) do
2139
- {
2140
- 'mod_a' => {
2141
- 'data' => {
2142
- 'common.yaml' => <<-YAML.unindent
2143
- ---
2144
- mod_a::b: value mod_a::b (from mod_a)
2145
- YAML
2146
- }
2147
- }
2148
- }
2149
- end
2150
-
2151
- it 'does not find data in the module' do
2152
- expect { lookup('mod_a::b') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'mod_a::b'/)
2153
- end
2154
-
2155
- context 'with a Hiera v3 configuration' do
2156
- let(:mod_a_files) do
2157
- {
2158
- 'mod_a' => {
2159
- 'hiera.yaml' => <<-YAML.unindent
2160
- ---
2161
- :backends: yaml
2162
- YAML
2163
- }
2164
- }
2165
- end
2166
-
2167
- it 'raises a warning' do
2168
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2169
- expect(warnings).to include(/hiera.yaml version 3 found at module root was ignored/)
2170
- end
2171
- end
2172
-
2173
- context "but a metadata.json with 'module_data_provider=hiera'" do
2174
- let(:mod_a_files_1) { DeepMerge.deep_merge!(mod_a_files, 'mod_a' => { 'metadata.json' => <<-JSON.unindent }) }
2175
- {
2176
- "name": "example/mod_a",
2177
- "version": "0.0.2",
2178
- "source": "git@github.com/example/mod_a.git",
2179
- "dependencies": [],
2180
- "author": "Bob the Builder",
2181
- "license": "Apache-2.0",
2182
- "data_provider": "hiera"
2183
- }
2184
- JSON
2185
-
2186
- let(:populated_env_dir) do
2187
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files_1 }))
2188
- env_dir
2189
- end
2190
-
2191
- it 'finds data in the module and reports deprecation warning for metadata.json' do
2192
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2193
- expect(warnings).to include(/Defining "data_provider": "hiera" in metadata.json is deprecated. A 'hiera.yaml' file should be used instead/)
2194
- end
2195
-
2196
- context 'and a hiera.yaml file' do
2197
- let(:mod_a_files_2) { DeepMerge.deep_merge!(mod_a_files_1, 'mod_a' => { 'hiera.yaml' => <<-YAML.unindent }) }
2198
- ---
2199
- version: 4
2200
- hierarchy:
2201
- - name: common
2202
- backend: yaml
2203
- YAML
2204
-
2205
- let(:populated_env_dir) do
2206
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files_2 }))
2207
- env_dir
2208
- end
2209
-
2210
- it 'finds data in the module and reports deprecation warnings for both metadata.json and hiera.yaml' do
2211
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2212
- expect(warnings).to include(/Defining "data_provider": "hiera" in metadata.json is deprecated/)
2213
- expect(warnings).to include(/Use of 'hiera.yaml' version 4 is deprecated. It should be converted to version 5/)
2214
- end
2215
- end
2216
- end
2217
- end
2218
-
2219
- context 'using deep merge and module values that aliases environment values' do
2220
- let(:mod_a_files) do
2221
- {
2222
- 'mod_a' => {
2223
- 'data' => {
2224
- 'common.yaml' => <<-YAML.unindent,
2225
- ---
2226
- mod_a::hash:
2227
- b: value b (from module)
2228
- lookup_options:
2229
- mod_a::hash:
2230
- merge: deep
2231
- YAML
2232
- },
2233
- 'hiera.yaml' => <<-YAML.unindent,
2234
- ---
2235
- version: 5
2236
- hierarchy:
2237
- - name: "Common"
2238
- path: "common.yaml"
2239
- - name: "Other"
2240
- path: "other.yaml"
2241
- YAML
2242
- }
2243
- }
2244
- end
2245
- let(:env_data) do
2246
- {
2247
- 'common.yaml' => <<-YAML.unindent
2248
- a: value a (from environment)
2249
- mod_a::hash:
2250
- a: value mod_a::hash.a (from environment)
2251
- c: '%{alias("a")}'
2252
- YAML
2253
- }
2254
- end
2255
-
2256
- it 'continues with module lookup after alias is resolved in environment' do
2257
- expect(lookup('mod_a::hash')).to eql(
2258
- {
2259
- 'a' => 'value mod_a::hash.a (from environment)',
2260
- 'b' => 'value b (from module)',
2261
- 'c' => 'value a (from environment)'
2262
- })
2263
- end
2264
- end
2265
-
2266
- context 'using a data_hash that reads a yaml file' do
2267
- let(:defaults) {
2268
- {
2269
- 'mod_a::xd' => 'value mod_a::xd (from default)',
2270
- 'mod_a::xd_found' => 'value mod_a::xd_found (from default)',
2271
- 'scope_xd' => 'value scope_xd (from default)'
2272
- }}
2273
- let(:overrides) {
2274
- {
2275
- 'mod_a::xo' => 'value mod_a::xo (from override)',
2276
- 'scope_xo' => 'value scope_xo (from override)'
2277
- }}
2278
-
2279
- let(:scope_additions) do
2280
- {
2281
- 'scope_scalar' => 'scope scalar value',
2282
- 'scope_hash' => { 'a' => 'scope hash a', 'b' => 'scope hash b' }
2283
- }
2284
- end
2285
- let(:mod_a_files) do
2286
- {
2287
- 'mod_a' => {
2288
- 'data' => {
2289
- 'common.yaml' => <<-YAML.unindent
2290
- ---
2291
- mod_a::a: value mod_a::a (from mod_a)
2292
- mod_a::b: value mod_a::b (from mod_a)
2293
- mod_a::xo: value mod_a::xo (from mod_a)
2294
- mod_a::xd_found: value mod_a::xd_found (from mod_a)
2295
- mod_a::interpolate_xo: "-- %{lookup('mod_a::xo')} --"
2296
- mod_a::interpolate_xd: "-- %{lookup('mod_a::xd')} --"
2297
- mod_a::interpolate_scope_xo: "-- %{scope_xo} --"
2298
- mod_a::interpolate_scope_xd: "-- %{scope_xd} --"
2299
- mod_a::hash_a:
2300
- a: value mod_a::hash_a.a (from mod_a)
2301
- b: value mod_a::hash_a.b (from mod_a)
2302
- mod_a::hash_b:
2303
- a: value mod_a::hash_b.a (from mod_a)
2304
- b: value mod_a::hash_b.b (from mod_a)
2305
- mod_a::interpolated: "-- %{lookup('mod_a::a')} --"
2306
- mod_a::a_a: "-- %{lookup('mod_a::hash_a.a')} --"
2307
- mod_a::a_b: "-- %{lookup('mod_a::hash_a.b')} --"
2308
- mod_a::b_a: "-- %{lookup('mod_a::hash_b.a')} --"
2309
- mod_a::b_b: "-- %{lookup('mod_a::hash_b.b')} --"
2310
- mod_a::interpolate_array:
2311
- - "-- %{lookup('mod_a::a')} --"
2312
- - "-- %{lookup('mod_a::b')} --"
2313
- mod_a::interpolate_literal: "-- %{literal('hello')} --"
2314
- mod_a::interpolate_scope: "-- %{scope_scalar} --"
2315
- mod_a::interpolate_scope_not_found: "-- %{scope_nope} --"
2316
- mod_a::interpolate_scope_dig: "-- %{scope_hash.a} --"
2317
- mod_a::interpolate_scope_dig_not_found: "-- %{scope_hash.nope} --"
2318
- mod_a::quoted_interpolation: '-- %{lookup(''"mod_a::a.quoted.key"'')} --'
2319
- "mod_a::a.quoted.key": "value mod_a::a.quoted.key (from mod_a)"
2320
- YAML
2321
- },
2322
- 'hiera.yaml' => <<-YAML.unindent,
2323
- ---
2324
- version: 5
2325
- hierarchy:
2326
- - name: "Common"
2327
- data_hash: yaml_data
2328
- path: "common.yaml"
2329
- YAML
2330
- }
2331
- }
2332
- end
2333
-
2334
- it 'finds data in the module' do
2335
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2336
- end
2337
-
2338
- it 'environment data has higher priority than module data' do
2339
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2340
- end
2341
-
2342
- it 'environment data has higher priority than module data in interpolated module data' do
2343
- expect(lookup('mod_a::interpolated')).to eql('-- value mod_a::a (from environment) --')
2344
- end
2345
-
2346
- it 'overrides have higher priority than found data' do
2347
- expect(lookup('mod_a::xo', { 'override' => overrides })).to eql('value mod_a::xo (from override)')
2348
- end
2349
-
2350
- it 'overrides have higher priority than found data in lookup interpolations' do
2351
- expect(lookup('mod_a::interpolate_xo', { 'override' => overrides })).to eql('-- value mod_a::xo (from override) --')
2352
- end
2353
-
2354
- it 'overrides have higher priority than found data in scope interpolations' do
2355
- expect(lookup('mod_a::interpolate_scope_xo', { 'override' => overrides })).to eql('-- value scope_xo (from override) --')
2356
- end
2357
-
2358
- it 'defaults have lower priority than found data' do
2359
- expect(lookup('mod_a::xd_found', { 'default_values_hash' => defaults })).to eql('value mod_a::xd_found (from mod_a)')
2360
- end
2361
-
2362
- it 'defaults are used when data is not found' do
2363
- expect(lookup('mod_a::xd', { 'default_values_hash' => defaults })).to eql('value mod_a::xd (from default)')
2364
- end
2365
-
2366
- it 'defaults are used when data is not found in lookup interpolations' do
2367
- expect(lookup('mod_a::interpolate_xd', { 'default_values_hash' => defaults })).to eql('-- value mod_a::xd (from default) --')
2368
- end
2369
-
2370
- it 'defaults are used when data is not found in scope interpolations' do
2371
- expect(lookup('mod_a::interpolate_scope_xd', { 'default_values_hash' => defaults })).to eql('-- value scope_xd (from default) --')
2372
- end
2373
-
2374
- it 'merges hashes from environment and module unless strategy hash is used' do
2375
- expect(lookup('mod_a::hash_a')).to eql({'a' => 'value mod_a::hash_a.a (from environment)'})
2376
- end
2377
-
2378
- it 'merges hashes from environment and module when merge strategy hash is used' do
2379
- expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql(
2380
- {'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
2381
- end
2382
-
2383
- it 'will not merge hashes from environment and module in interpolated expressions' do
2384
- expect(lookup(['mod_a::a_a', 'mod_a::a_b'])).to eql(
2385
- ['-- value mod_a::hash_a.a (from environment) --', '-- --']) # root key found in environment, no hash merge is performed
2386
- end
2387
-
2388
- it 'interpolates arrays' do
2389
- expect(lookup('mod_a::interpolate_array')).to eql(['-- value mod_a::a (from environment) --', '-- value mod_a::b (from mod_a) --'])
2390
- end
2391
-
2392
- it 'can dig into arrays using subkeys' do
2393
- expect(lookup('mod_a::interpolate_array.1')).to eql('-- value mod_a::b (from mod_a) --')
2394
- end
2395
-
2396
- it 'treats an out of range subkey as not found' do
2397
- expect(explain('mod_a::interpolate_array.2')).to match(/No such key: "2"/)
2398
- end
2399
-
2400
- it 'interpolates a literal' do
2401
- expect(lookup('mod_a::interpolate_literal')).to eql('-- hello --')
2402
- end
2403
-
2404
- it 'interpolates scalar from scope' do
2405
- expect(lookup('mod_a::interpolate_scope')).to eql('-- scope scalar value --')
2406
- end
2407
-
2408
- it 'interpolates not found in scope as empty string' do
2409
- expect(lookup('mod_a::interpolate_scope_not_found')).to eql('-- --')
2410
- end
2411
-
2412
- it 'interpolates dotted key from scope' do
2413
- expect(lookup('mod_a::interpolate_scope_dig')).to eql('-- scope hash a --')
2414
- end
2415
-
2416
- it 'treates interpolated dotted key but not found in scope as empty string' do
2417
- expect(lookup('mod_a::interpolate_scope_dig_not_found')).to eql('-- --')
2418
- end
2419
-
2420
- it 'can use quoted keys in interpolation' do
2421
- expect(lookup('mod_a::quoted_interpolation')).to eql('-- value mod_a::a.quoted.key (from mod_a) --') # root key found in environment, no hash merge is performed
2422
- end
2423
-
2424
- it 'merges hashes from environment and module in interpolated expressions if hash merge is specified in lookup options' do
2425
- expect(lookup(['mod_a::b_a', 'mod_a::b_b'])).to eql(
2426
- ['-- value mod_a::hash_b.a (from environment) --', '-- value mod_a::hash_b.b (from mod_a) --'])
2427
- end
2428
- end
2429
-
2430
- context 'using a lookup_key that uses a path' do
2431
- let(:mod_a_files) do
2432
- {
2433
- 'mod_a' => {
2434
- 'functions' => {
2435
- 'pp_lookup_key.pp' => <<-PUPPET.unindent
2436
- function mod_a::pp_lookup_key($key, $options, $context) {
2437
- if !$context.cache_has_key(undef) {
2438
- $context.cache_all(yaml_data($options, $context))
2439
- $context.cache(undef, true)
2440
- }
2441
- if $context.cache_has_key($key) { $context.cached_value($key) } else { $context.not_found }
2442
- }
2443
- PUPPET
2444
- },
2445
- 'hiera.yaml' => <<-YAML.unindent,
2446
- ---
2447
- version: 5
2448
- hierarchy:
2449
- - name: "Common"
2450
- lookup_key: mod_a::pp_lookup_key
2451
- path: common.yaml
2452
- YAML
2453
- 'data' => {
2454
- 'common.yaml' => <<-YAML.unindent
2455
- mod_a::b: value mod_a::b (from mod_a)
2456
- YAML
2457
- }
2458
- }
2459
- }
2460
- end
2461
-
2462
- it 'finds data in the module' do
2463
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2464
- end
2465
- end
2466
-
2467
- context 'using a lookup_key that is a puppet function' do
2468
- let(:puppet_function) { <<-PUPPET.unindent }
2469
- function mod_a::pp_lookup_key(Puppet::LookupKey $key, Hash[String,String] $options, Puppet::LookupContext $context) >> Puppet::LookupValue {
2470
- case $key {
2471
- 'mod_a::really_interpolated': { $context.interpolate("-- %{lookup('mod_a::a')} --") }
2472
- 'mod_a::recursive': { lookup($key) }
2473
- default: {
2474
- if $context.cache_has_key(mod_a::a) {
2475
- $context.explain || { 'reusing cache' }
2476
- } else {
2477
- $context.explain || { 'initializing cache' }
2478
- $context.cache_all({
2479
- mod_a::a => 'value mod_a::a (from mod_a)',
2480
- mod_a::b => 'value mod_a::b (from mod_a)',
2481
- mod_a::c => 'value mod_a::c (from mod_a)',
2482
- mod_a::hash_a => {
2483
- a => 'value mod_a::hash_a.a (from mod_a)',
2484
- b => 'value mod_a::hash_a.b (from mod_a)'
2485
- },
2486
- mod_a::hash_b => {
2487
- a => 'value mod_a::hash_b.a (from mod_a)',
2488
- b => 'value mod_a::hash_b.b (from mod_a)'
2489
- },
2490
- mod_a::interpolated => "-- %{lookup('mod_a::a')} --",
2491
- mod_a::a_a => "-- %{lookup('mod_a::hash_a.a')} --",
2492
- mod_a::a_b => "-- %{lookup('mod_a::hash_a.b')} --",
2493
- mod_a::b_a => "-- %{lookup('mod_a::hash_b.a')} --",
2494
- mod_a::b_b => "-- %{lookup('mod_a::hash_b.b')} --",
2495
- 'mod_a::a.quoted.key' => 'value mod_a::a.quoted.key (from mod_a)',
2496
- mod_a::sensitive => Sensitive('reduct me please'),
2497
- mod_a::type => Object[{name => 'FindMe', 'attributes' => {'x' => String}}],
2498
- mod_a::version => SemVer('3.4.1'),
2499
- mod_a::version_range => SemVerRange('>=3.4.1'),
2500
- mod_a::timestamp => Timestamp("1994-03-25T19:30:00"),
2501
- mod_a::timespan => Timespan("3-10:00:00")
2502
- })
2503
- }
2504
- if !$context.cache_has_key($key) {
2505
- $context.not_found
2506
- }
2507
- $context.explain || { "returning value for $key" }
2508
- $context.cached_value($key)
2509
- }
2510
- }
2511
- }
2512
- PUPPET
2513
-
2514
- let(:mod_a_files) do
2515
- {
2516
- 'mod_a' => {
2517
- 'functions' => {
2518
- 'pp_lookup_key.pp' => puppet_function
2519
- },
2520
- 'hiera.yaml' => <<-YAML.unindent,
2521
- ---
2522
- version: 5
2523
- hierarchy:
2524
- - name: "Common"
2525
- lookup_key: mod_a::pp_lookup_key
2526
- YAML
2527
- }
2528
- }
2529
- end
2530
-
2531
- it 'finds data in the module' do
2532
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2533
- end
2534
-
2535
- it 'environment data has higher priority than module data' do
2536
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2537
- end
2538
-
2539
- it 'finds quoted keys in the module' do
2540
- expect(lookup('"mod_a::a.quoted.key"')).to eql('value mod_a::a.quoted.key (from mod_a)')
2541
- end
2542
-
2543
- it 'will not resolve interpolated expressions' do
2544
- expect(lookup('mod_a::interpolated')).to eql("-- %{lookup('mod_a::a')} --")
2545
- end
2546
-
2547
- it 'resolves interpolated expressions using Context#interpolate' do
2548
- expect(lookup('mod_a::really_interpolated')).to eql("-- value mod_a::a (from environment) --")
2549
- end
2550
-
2551
- it 'will not merge hashes from environment and module unless strategy hash is used' do
2552
- expect(lookup('mod_a::hash_a')).to eql({ 'a' => 'value mod_a::hash_a.a (from environment)' })
2553
- end
2554
-
2555
- it 'merges hashes from environment and module when merge strategy hash is used' do
2556
- expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({ 'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)' })
2557
- end
2558
-
2559
- it 'traps recursive lookup trapped' do
2560
- expect(explain('mod_a::recursive')).to include('Recursive lookup detected')
2561
- end
2562
-
2563
- it 'private cache is persisted over multiple calls' do
2564
- collect_notices("notice(lookup('mod_a::b')) notice(lookup('mod_a::c'))", true)
2565
- expect(notices).to eql(['value mod_a::b (from mod_a)', 'value mod_a::c (from mod_a)'])
2566
- expect(explanation).to match(/initializing cache.*reusing cache/m)
2567
- expect(explanation).not_to match(/initializing cache.*initializing cache/m)
2568
- end
2569
-
2570
- it 'the same key is requested only once' do
2571
- collect_notices("notice(lookup('mod_a::b')) notice(lookup('mod_a::b'))", true)
2572
- expect(notices).to eql(['value mod_a::b (from mod_a)', 'value mod_a::b (from mod_a)'])
2573
- expect(explanation).to match(/Found key: "mod_a::b".*Found key: "mod_a::b"/m)
2574
- expect(explanation).to match(/returning value for mod_a::b/m)
2575
- expect(explanation).not_to match(/returning value for mod_a::b.*returning value for mod_a::b/m)
2576
- end
2577
-
2578
- context 'and calling function via API' do
2579
- it 'finds and delivers rich data' do
2580
- collect_notices("notice('success')") do |scope|
2581
- expect(lookup_func.call(scope, 'mod_a::sensitive')).to be_a(Puppet::Pops::Types::PSensitiveType::Sensitive)
2582
- expect(lookup_func.call(scope, 'mod_a::type')).to be_a(Puppet::Pops::Types::PObjectType)
2583
- expect(lookup_func.call(scope, 'mod_a::version')).to eql(SemanticPuppet::Version.parse('3.4.1'))
2584
- expect(lookup_func.call(scope, 'mod_a::version_range')).to eql(SemanticPuppet::VersionRange.parse('>=3.4.1'))
2585
- expect(lookup_func.call(scope, 'mod_a::timestamp')).to eql(Puppet::Pops::Time::Timestamp.parse('1994-03-25T19:30:00'))
2586
- expect(lookup_func.call(scope, 'mod_a::timespan')).to eql(Puppet::Pops::Time::Timespan.parse('3-10:00:00'))
2587
- end
2588
- expect(notices).to eql(['success'])
2589
- end
2590
- end
2591
-
2592
- context 'with declared but incompatible return_type' do
2593
- let(:puppet_function) { <<-PUPPET.unindent }
2594
- function mod_a::pp_lookup_key(Puppet::LookupKey $key, Hash[String,String] $options, Puppet::LookupContext $context) >> Runtime['ruby','Symbol'] {
2595
- undef
2596
- }
2597
- PUPPET
2598
-
2599
- it 'fails and reports error' do
2600
- expect{lookup('mod_a::a')}.to raise_error(
2601
- "Return type of 'lookup_key' function named 'mod_a::pp_lookup_key' is incorrect, expects a RichData value, got Runtime")
2602
- end
2603
- end
2604
- end
2605
-
2606
- context 'using a data_dig that is a ruby function' do
2607
- let(:mod_a_files) do
2608
- {
2609
- 'mod_a' => {
2610
- 'lib' => {
2611
- 'puppet' => {
2612
- 'functions' => {
2613
- 'mod_a' => {
2614
- 'ruby_dig.rb' => <<-RUBY.unindent
2615
- Puppet::Functions.create_function(:'mod_a::ruby_dig') do
2616
- dispatch :ruby_dig do
2617
- param 'Array[String[1]]', :segments
2618
- param 'Hash[String,Any]', :options
2619
- param 'Puppet::LookupContext', :context
2620
- return_type 'Puppet::LookupValue'
2621
- end
2622
-
2623
- def ruby_dig(segments, options, context)
2624
- sub_segments = segments.dup
2625
- root_key = sub_segments.shift
2626
- case root_key
2627
- when 'mod_a::options'
2628
- hash = { 'mod_a::options' => options }
2629
- when 'mod_a::lookup'
2630
- return call_function('lookup', segments.join('.'))
2631
- else
2632
- hash = {
2633
- 'mod_a::a' => 'value mod_a::a (from mod_a)',
2634
- 'mod_a::b' => 'value mod_a::b (from mod_a)',
2635
- 'mod_a::hash_a' => {
2636
- 'a' => 'value mod_a::hash_a.a (from mod_a)',
2637
- 'b' => 'value mod_a::hash_a.b (from mod_a)'
2638
- },
2639
- 'mod_a::hash_b' => {
2640
- 'a' => 'value mod_a::hash_b.a (from mod_a)',
2641
- 'b' => 'value mod_a::hash_b.b (from mod_a)'
2642
- },
2643
- 'mod_a::interpolated' => "-- %{lookup('mod_a::a')} --",
2644
- 'mod_a::really_interpolated' => "-- %{lookup('mod_a::a')} --",
2645
- 'mod_a::a_a' => "-- %{lookup('mod_a::hash_a.a')} --",
2646
- 'mod_a::a_b' => "-- %{lookup('mod_a::hash_a.b')} --",
2647
- 'mod_a::b_a' => "-- %{lookup('mod_a::hash_b.a')} --",
2648
- 'mod_a::b_b' => "-- %{lookup('mod_a::hash_b.b')} --",
2649
- 'mod_a::bad_type' => :oops,
2650
- 'mod_a::bad_type_in_hash' => { 'a' => :oops },
2651
- }
2652
- end
2653
- context.not_found unless hash.include?(root_key)
2654
- value = sub_segments.reduce(hash[root_key]) do |memo, segment|
2655
- context.not_found unless memo.is_a?(Hash) && memo.include?(segment)
2656
- memo[segment]
2657
- end
2658
- root_key == 'mod_a::really_interpolated' ? context.interpolate(value) : value
2659
- end
2660
- end
2661
- RUBY
2662
- }
2663
- }
2664
- }
2665
- },
2666
- 'hiera.yaml' => <<-YAML.unindent,
2667
- ---
2668
- version: 5
2669
- defaults:
2670
- options:
2671
- option_b:
2672
- z: Default option value b.z
2673
-
2674
- hierarchy:
2675
- - name: "Common"
2676
- data_dig: mod_a::ruby_dig
2677
- uri: "http://www.example.com/passed/as/option"
2678
- options:
2679
- option_a: Option value a
2680
- option_b:
2681
- x: Option value b.x
2682
- y: Option value b.y
2683
- - name: "Extra"
2684
- data_dig: mod_a::ruby_dig
2685
- YAML
2686
- }
2687
- }
2688
- end
2689
-
2690
- it 'finds data in the module' do
2691
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2692
- end
2693
-
2694
- it 'environment data has higher priority than module data' do
2695
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2696
- end
2697
-
2698
- it 'will not resolve interpolated expressions' do
2699
- expect(lookup('mod_a::interpolated')).to eql("-- %{lookup('mod_a::a')} --")
2700
- end
2701
-
2702
- it 'resolves interpolated expressions using Context#interpolate' do
2703
- expect(lookup('mod_a::really_interpolated')).to eql("-- value mod_a::a (from environment) --")
2704
- end
2705
-
2706
- it 'does not accept return of runtime type from function' do
2707
- # Message is produced by the called function, not by the lookup framework
2708
- expect(explain('mod_a::bad_type')).to include("value returned from function 'ruby_dig' has wrong type")
2709
- end
2710
-
2711
- it 'does not accept return of runtime type embedded in hash from function' do
2712
- # Message is produced by the called function, not by the lookup framework
2713
- expect(explain('mod_a::bad_type_in_hash')).to include("value returned from function 'ruby_dig' has wrong type")
2714
- end
2715
-
2716
- it 'will not merge hashes from environment and module unless strategy hash is used' do
2717
- expect(lookup('mod_a::hash_a')).to eql({'a' => 'value mod_a::hash_a.a (from environment)'})
2718
- end
2719
-
2720
- it 'hierarchy entry options are passed to the function' do
2721
- expect(lookup('mod_a::options.option_b.x')).to eql('Option value b.x')
2722
- end
2723
-
2724
- it 'default options are passed to the function' do
2725
- expect(lookup('mod_a::options.option_b.z')).to eql('Default option value b.z')
2726
- end
2727
-
2728
- it 'default options are not merged with hierarchy options' do
2729
- expect(lookup('mod_a::options')).to eql(
2730
- {
2731
- 'option_a' => 'Option value a',
2732
- 'option_b' => {
2733
- 'y' => 'Option value b.y',
2734
- 'x' => 'Option value b.x'
2735
- },
2736
- 'uri' => 'http://www.example.com/passed/as/option'
2737
- })
2738
- end
2739
-
2740
- it 'hierarchy entry "uri" is passed as location option to the function' do
2741
- expect(lookup('mod_a::options.uri')).to eql('http://www.example.com/passed/as/option')
2742
- end
2743
-
2744
- it 'recursive lookup is trapped' do
2745
- expect(explain('mod_a::lookup.mod_a::lookup')).to include('Recursive lookup detected')
2746
- end
2747
-
2748
- context 'with merge strategy hash' do
2749
- it 'merges hashes from environment and module' do
2750
- expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
2751
- end
2752
-
2753
- it 'will "undig" value from data_dig function, merge root hashes, and then dig to get values by subkey' do
2754
- expect(lookup(['mod_a::hash_a.a', 'mod_a::hash_a.b'], :merge => 'hash')).to eql(
2755
- ['value mod_a::hash_a.a (from environment)', 'value mod_a::hash_a.b (from mod_a)'])
2756
- end
2757
- end
2758
- end
2759
-
2760
- context 'that has a default_hierarchy' do
2761
- let(:mod_a_hiera_yaml) { <<-YAML.unindent }
2762
- version: 5
2763
- hierarchy:
2764
- - name: "Common"
2765
- path: common.yaml
2766
- - name: "Common 2"
2767
- path: common2.yaml
2768
-
2769
- default_hierarchy:
2770
- - name: "Default"
2771
- path: defaults.yaml
2772
- - name: "Default 2"
2773
- path: defaults2.yaml
2774
- YAML
2775
-
2776
- let(:mod_a_common) { <<-YAML.unindent }
2777
- mod_a::a: value mod_a::a (from module)
2778
- mod_a::d:
2779
- a: value mod_a::d.a (from module)
2780
- mod_a::f:
2781
- a:
2782
- a: value mod_a::f.a.a (from module)
2783
- mod_a::to_array1: 'hello'
2784
- mod_a::to_array2: 'hello'
2785
- mod_a::to_int: 'bananas'
2786
- mod_a::to_bad_type: 'pyjamas'
2787
- mod_a::undef_value: null
2788
- lookup_options:
2789
- mod_a::e:
2790
- merge: deep
2791
- mod_a::to_array1:
2792
- merge: deep
2793
- convert_to: "Array"
2794
- mod_a::to_array2:
2795
- convert_to:
2796
- - "Array"
2797
- - true
2798
- mod_a::to_int:
2799
- convert_to: "Integer"
2800
- mod_a::to_bad_type:
2801
- convert_to: "ComicSans"
2802
- mod_a::undef_value:
2803
- convert_to:
2804
- - "Array"
2805
- - true
2806
- YAML
2807
-
2808
-
2809
- let(:mod_a_common2) { <<-YAML.unindent }
2810
- mod_a::b: value mod_a::b (from module)
2811
- mod_a::d:
2812
- c: value mod_a::d.c (from module)
2813
- mod_a::f:
2814
- a:
2815
- b: value mod_a::f.a.b (from module)
2816
- YAML
2817
-
2818
- let(:mod_a_defaults) { <<-YAML.unindent }
2819
- mod_a::a: value mod_a::a (from module defaults)
2820
- mod_a::b: value mod_a::b (from module defaults)
2821
- mod_a::c: value mod_a::c (from module defaults)
2822
- mod_a::d:
2823
- b: value mod_a::d.b (from module defaults)
2824
- mod_a::e:
2825
- a:
2826
- a: value mod_a::e.a.a (from module defaults)
2827
- mod_a::g:
2828
- a:
2829
- a: value mod_a::g.a.a (from module defaults)
2830
- lookup_options:
2831
- mod_a::d:
2832
- merge: hash
2833
- mod_a::g:
2834
- merge: deep
2835
- YAML
2836
-
2837
- let(:mod_a_defaults2) { <<-YAML.unindent }
2838
- mod_a::e:
2839
- a:
2840
- b: value mod_a::e.a.b (from module defaults)
2841
- mod_a::g:
2842
- a:
2843
- b: value mod_a::g.a.b (from module defaults)
2844
- YAML
2845
-
2846
- let(:mod_a_files) do
2847
- {
2848
- 'mod_a' => {
2849
- 'data' => {
2850
- 'common.yaml' => mod_a_common,
2851
- 'common2.yaml' => mod_a_common2,
2852
- 'defaults.yaml' => mod_a_defaults,
2853
- 'defaults2.yaml' => mod_a_defaults2
2854
- },
2855
- 'hiera.yaml' => mod_a_hiera_yaml
2856
- }
2857
- }
2858
- end
2859
-
2860
- it 'the default hierarchy does not interfere with environment hierarchy' do
2861
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2862
- end
2863
-
2864
- it 'the default hierarchy does not interfere with regular hierarchy in module' do
2865
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from module)')
2866
- end
2867
-
2868
- it 'the default hierarchy is consulted when no value is found elsewhere' do
2869
- expect(lookup('mod_a::c')).to eql('value mod_a::c (from module defaults)')
2870
- end
2871
-
2872
- it 'the default hierarchy does not participate in a merge' do
2873
- expect(lookup('mod_a::d', 'merge' => 'hash')).to eql('a' => 'value mod_a::d.a (from module)', 'c' => 'value mod_a::d.c (from module)')
2874
- end
2875
-
2876
- it 'lookup_options from regular hierarchy does not effect values found in the default hierarchy' do
2877
- expect(lookup('mod_a::e')).to eql('a' => { 'a' => 'value mod_a::e.a.a (from module defaults)' })
2878
- end
2879
-
2880
- it 'lookup_options from default hierarchy affects values found in the default hierarchy' do
2881
- expect(lookup('mod_a::g')).to eql('a' => { 'a' => 'value mod_a::g.a.a (from module defaults)', 'b' => 'value mod_a::g.a.b (from module defaults)'})
2882
- end
2883
-
2884
- it 'merge parameter does not override lookup_options defined in the default hierarchy' do
2885
- expect(lookup('mod_a::g', 'merge' => 'hash')).to eql(
2886
- 'a' => { 'a' => 'value mod_a::g.a.a (from module defaults)', 'b' => 'value mod_a::g.a.b (from module defaults)'})
2887
- end
2888
-
2889
- it 'lookup_options from default hierarchy does not effect values found in the regular hierarchy' do
2890
- expect(lookup('mod_a::d')).to eql('a' => 'value mod_a::d.a (from module)')
2891
- end
2892
-
2893
- context "and conversion via convert_to" do
2894
- it 'converts with a single data type value' do
2895
- expect(lookup('mod_a::to_array1')).to eql(['h', 'e', 'l', 'l', 'o'])
2896
- end
2897
-
2898
- it 'converts with an array of arguments to the convert_to call' do
2899
- expect(lookup('mod_a::to_array2')).to eql(['hello'])
2900
- end
2901
-
2902
- it 'converts an undef/nil value that has convert_to option' do
2903
- expect(lookup('mod_a::undef_value')).to eql([nil])
2904
- end
2905
-
2906
- it 'errors if a convert_to lookup_option cannot be performed because value does not match type' do
2907
- expect{lookup('mod_a::to_int')}.to raise_error(/The convert_to lookup_option for key 'mod_a::to_int' raised error.*The string 'bananas' cannot be converted to Integer/)
2908
- end
2909
-
2910
- it 'errors if a convert_to lookup_option cannot be performed because type does not exist' do
2911
- expect{lookup('mod_a::to_bad_type')}.to raise_error(/The convert_to lookup_option for key 'mod_a::to_bad_type' raised error.*Creation of new instance of type 'TypeReference\['ComicSans'\]' is not supported/)
2912
- end
2913
-
2914
- it 'adds explanation that conversion took place with a type' do
2915
- explanation = explain('mod_a::to_array1')
2916
- expect(explanation).to include('Applying convert_to lookup_option with arguments [Array]')
2917
- end
2918
-
2919
- it 'adds explanation that conversion took place with a type and arguments' do
2920
- explanation = explain('mod_a::to_array2')
2921
- expect(explanation).to include('Applying convert_to lookup_option with arguments [Array, true]')
2922
- end
2923
- end
2924
-
2925
- it 'the default hierarchy lookup is included in the explain output' do
2926
- explanation = explain('mod_a::c')
2927
- expect(explanation).to match(/Searching default_hierarchy of module "mod_a".+Original path: "defaults.yaml"/m)
2928
- end
2929
- end
2930
- end
2931
-
2932
- context 'and an eyaml lookup_key function' do
2933
- let(:private_key_name) { 'private_key.pkcs7.pem' }
2934
- let(:public_key_name) { 'public_key.pkcs7.pem' }
2935
-
2936
- let(:private_key) do
2937
- <<-PKCS7.unindent
2938
- -----BEGIN RSA PRIVATE KEY-----
2939
- MIIEogIBAAKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6f
2940
- CR7tyOpYV6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC
2941
- 2LUuqj1IAErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQ
2942
- NlgZwm2/aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2
2943
- tPtLsHyRN39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1o
2944
- EfQFDQRKaIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABAoIBAE98pNXOe8ab93oI
2945
- mtNZYmjCbGAqprTjEoFb71A3SfYbmK2Gf65GxjUdBwx/tBYTiuekSOk+yzKcDoZk
2946
- sZnmwKpqDByzaiSmAkxunANFxdZtZvpcX9UfUX0j/t+QCROUa5gF8j6HrUiZ5nkx
2947
- sxr1PcuItekaGLJ1nDLz5JsWTQ+H4M+GXQw7/t96x8v8g9el4exTiAHGk6Fv16kD
2948
- 017T02M9qTTmV3Ab/enDIBmKVD42Ta36K/wc4l1aoUQNiRbIGVh96Cgd1CFXLF3x
2949
- CsaNbYT4SmRXaYqoj6MKq+QFEGxadFmJy48NoSd4joirIn2lUjHxJebw3lLbNLDR
2950
- uvQnQ2ECgYEA/nD94wEMr6078uMv6nKxPpNGq7fihwSKf0G/PQDqrRmjUCewuW+k
2951
- /iXMe1Y/y0PjFeNlSbUsUvKQ5xF7F/1AnpuPHIrn3cjGVLb71W+zen1m8SnhsW/f
2952
- 7dPgtcb4SCvfhmLgoov+P34YcNfGi6qgPUu6319IqoB3BIi7PvfEomkCgYEAwZ4+
2953
- V0bMjFdDn2hnYzjTNcF2aUQ1jPvtuETizGwyCbbMLl9522lrjC2DrH41vvqX35ct
2954
- CBJkhQFbtHM8Gnmozv0vxhI2jP+u14mzfePZsaXuYrEgWRj+BCsYUHodXryxnEWj
2955
- yVrTNskab1B5jFm2SCJDmKcycBOYpRBLCMx6W7MCgYBA99z7/6KboOIzzKrJdGup
2956
- jLV410UyMIikoccQ7pD9jhRTPS80yjsY4dHqlEVJw5XSWvPb9DTTITi6p44EvBep
2957
- 6BKMuTMnQELUEr0O7KypVCfa4FTOl8BX28f+4kU3OGykxc6R8qkC0VGwTohV1UWB
2958
- ITsgGhZV4uOA9uDI3T8KMQKBgEnQY2HwmuDSD/TA39GDA3qV8+ez2lqSXRGIKZLX
2959
- mMf9SaBQQ+uzKA4799wWDbVuYeIbB07xfCL83pJP8FUDlqi6+7Celu9wNp7zX1ua
2960
- Nw8z/ErhzjxJe+Xo7A8aTwIkG+5A2m1UU/up9YsEeiJYvVaIwY58B42U2vfq20BS
2961
- fD9jAoGAX2MscBzIsmN+U9R0ptL4SXcPiVnOl8mqvQWr1B4OLgxX7ghht5Fs956W
2962
- bHipxOWMFCPJA/AhNB8q1DvYiD1viZbIALSCJVUkzs4AEFIjiPsCBKxerl7jF6Xp
2963
- 1WYSaCmfvoCVEpFNt8cKp4Gq+zEBYAV4Q6TkcD2lDtEW49MuN8A=
2964
- -----END RSA PRIVATE KEY-----
2965
- PKCS7
2966
- end
2967
-
2968
- let(:public_key) do
2969
- <<-PKCS7.unindent
2970
- -----BEGIN CERTIFICATE-----
2971
- MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDExMzA5MTY1
2972
- MloYDzIwNjcwMTAxMDkxNjUyWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
2973
- CgKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6fCR7tyOpY
2974
- V6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC2LUuqj1I
2975
- AErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQNlgZwm2/
2976
- aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2tPtLsHyR
2977
- N39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1oEfQFDQRK
2978
- aIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
2979
- MB0GA1UdDgQWBBSejWrVnw7QaBjNFCHMNFi+doSOcTAoBgNVHSMEITAfgBSejWrV
2980
- nw7QaBjNFCHMNFi+doSOcaEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAAe85
2981
- BQ1ydAHFqo0ib38VRPOwf5xPHGbYGhvQi4/sU6aTuR7pxaOJPYz05jLhS+utEmy1
2982
- sknBq60G67yhQE7IHcfwrl1arirG2WmKGvAbjeYL2K1UiU0pVD3D+Klkv/pK6jIQ
2983
- eOJRGb3qNUn0Sq9EoYIOXiGXQ641F0bZZ0+5H92kT1lmnF5oLfCb84ImD9T3snH6
2984
- pIr5RKRx/0YmJIcv3WdpoPT903rOJiRIEgIj/hDk9QZTBpm222Ul5yQQ5pBywpSp
2985
- xh0bmJKAQWhQm7QlybKfyaQmg5ot1jEzWAvD2I5FjHQxmAlchjb6RreaRhExj+JE
2986
- 5O117dMBdzDBjcNMOA==
2987
- -----END CERTIFICATE-----
2988
- PKCS7
2989
- end
2990
-
2991
- let(:keys_dir) do
2992
- keys = tmpdir('keys')
2993
- dir_contained_in(keys, {
2994
- private_key_name => private_key,
2995
- public_key_name => public_key
2996
- })
2997
- keys
2998
- end
2999
-
3000
- let(:private_key_path) { File.join(keys_dir, private_key_name) }
3001
- let(:public_key_path) { File.join(keys_dir, public_key_name) }
3002
-
3003
- let(:env_hiera_yaml) do
3004
- <<-YAML.unindent
3005
- version: 5
3006
- hierarchy:
3007
- - name: EYaml
3008
- path: common.eyaml
3009
- lookup_key: eyaml_lookup_key
3010
- options:
3011
- pkcs7_private_key: #{private_key_path}
3012
- pkcs7_public_key: #{public_key_path}
3013
- YAML
3014
- end
3015
-
3016
- let(:scope_additions) { { 'ipl_suffix' => 'aa' } }
3017
- let(:data_files) do
3018
- {
3019
- 'common.eyaml' => <<-YAML.unindent
3020
- # a: Encrypted value 'a' (from environment)
3021
- a: >
3022
- ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
3023
- DQYJKoZIhvcNAQEBBQAEggEAUwwNRA5ZKM87SLnjnJfzDFRQbeheSYMTOhcr
3024
- sgTPCGtzEAzvRBrkdIRAvDZVRfadV9OB+bJsYrhWIkU1bYiOn1m78ginh96M
3025
- 44RuspnIZYnL9Dhs+JyC8VvB5nlvlEph2RGt+KYg9iU4JYhwZ2+8+yxB6/UK
3026
- H5HGKDCjBbEc8o9MbCckLsciIh11hKKgT6K0yhKB/nBxxM78nrX0BxmAHX2u
3027
- bejKDRa9S/0uS7Y91nvnbIkaQpZ4KteSQ+J4/lQBMlMAeE+2F9ncM8jFKnQC
3028
- rzzdbn1O/zwsEt5J5CRP1Sc+8hM644+IqkLs+17segxArHVGOsEqyDcHbXEK
3029
- 9jspfzBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCIq/L5HeJgA9XQm67j
3030
- JHUngDDS5s52FsuSIMin7Z/pV+XuaJGFkL80ia4bXnCWilmtM8oUa/DZuBje
3031
- dCILO7I8QqU=]
3032
- hash_a:
3033
- "hash_%{ipl_suffix}":
3034
- # aaa: Encrypted value hash_a.hash_aa.aaa (from environment)
3035
- aaa: >
3036
- ENC[PKCS7,MIIBqQYJKoZIhvcNAQcDoIIBmjCCAZYCAQAxggEhMIIBHQIBADAFMAACAQEw
3037
- DQYJKoZIhvcNAQEBBQAEggEAhvGXL5RxVUs9wdqJvpCyXtfCHrm2HbG/u30L
3038
- n8EuRD9ravlsgIISAnd27JPtrxA+0rZq4EQRGz6OcovnH9vTg86/lVBhhPnz
3039
- b83ArptGJhRvTYUJ19GZI3AYjJbhWj/Jo5NL56oQJaPBccqHxMApm/U0wlus
3040
- QtASL94cLuh4toVIBQCQzD5/Bx51p2wQobm9p4WKSl1zJhDceurmoLZXqhuN
3041
- JwwEBwXopJvgid3ZDPbdX8nI6vHhb/8wDq9yb5DOsrkgqDqQgwPU9sUUioQj
3042
- Hr1pGyeOWnbEe99iEb2+m7TWsC0NN7OBo06mAgFNbBLjvn2k4PiCxrOOgJ8S
3043
- LI5eXjBsBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCWNS6j3m/Xvrp5RFaN
3044
- ovm/gEB4oPlYJswoXuWqcEBfwZzbpy96x3b2Le/yoa72ylbPAUc5GfLENvFQ
3045
- zXpTtSmQE0fixY4JMaBTke65ZRvoiOQO]
3046
- array_a:
3047
- # - "array_a[0]"
3048
- - >
3049
- ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
3050
- DQYJKoZIhvcNAQEBBQAEggEAmXZfyfU77vVCZqHpR10qhD0Jy9DpMGBgal97
3051
- vUO2VHX7KlCgagK0kz8/uLRIthkYzcpn8ISmw/+CIAny3jOjxOsylJiujqyu
3052
- hx/JEFl8bOKOg40Bd0UuBaw/qZ+CoAtOorhiIW7x6t7DpknItC6gkH/cSJ4/
3053
- p3MdhoARRuwj2fvuaChVsD39l2rXjgJj0OJOaDXdbuisG75VRZf5l8IH6+44
3054
- Q7m6W7BU69LX+ozn+W3filQoiJ5MPf8w/KXAObMSbKYIDsrZUyIWyyNUbpW0
3055
- MieIkHj93bX3gIEcenECLdWaEzcPa7MHgl6zevQKg4H0JVmcvKYyfHYqcrVE
3056
- PqizKDA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDf259KZEay1widVSFy
3057
- I9zGgBAICjm0x2GeqoCnHdiAA+jt]
3058
- # - "array_a[1]"
3059
- - >
3060
- ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
3061
- DQYJKoZIhvcNAQEBBQAEggEATVy4hHG356INFKOswAhoravh66iJljp+Vn3o
3062
- UVD1kyRiqY5tz3UVSptzUmzD+YssX/f73AKCjUI3HrPNL7kAxsk6fWS7nDEj
3063
- AuxtCqGYeBha6oYJYziSGIHfAdY3MiJUI1C9g/OQB4TTvKdrlDArPiY8THJi
3064
- bzLLMbVQYJ6ixSldwkdKD75vtikyamx+1LSyVBSg8maVyPvLHtLZJuT71rln
3065
- WON3Ious9PIbd+izbcCzaoqh5UnTfDCjOuAYliXalBxamIIwNzSV1sdR8/qf
3066
- t22zpYK4J8lgCBV2gKfrOWSi9MAs6JhCeOb8wNLMmAUTbc0WrFJxoCwAPX0z
3067
- MAjsNjA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBC4v4bNE4gFlbLmVY+9
3068
- BtSLgBBm7U0wu6d6s9wF9Ek9IHPe]
3069
- # ref_a: "A resolved = '%{hiera('a')}'"
3070
- ref_a: >
3071
- ENC[PKCS7,MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFMAACAQEw
3072
- DQYJKoZIhvcNAQEBBQAEggEAFSuUp+yk+oaA7b5ekT0u360CQ9Q2sIQ/bTcM
3073
- jT3XLjm8HIGYPcysOEnuo8WcAxJFY5iya4yQ7Y/UhMWXaTi7Vzv/6BmyPDwz
3074
- +7Z2Mf0r0PvS5+ylue6aem/3bXPOmXTKTf68OCehTRXlDUs8/av9gnsDzojp
3075
- yiUTBZvKxhIP2n//GyoHgyATveHT0lxPVpdMycB347DtWS7IduCxx0+KiOOw
3076
- DXYFlYbIVxVInwgERxtsfYSr+Fu0/mkjtRsQm+dPzMQOATE9Val2gGKsV6bi
3077
- kdm1OM9HrwVsFj6Lma6FYmr89Bcm/1uEc8fiOMtNK3z2+nwunWBMNCGneMYD
3078
- C5IJejBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAeiZDGQyXHkZlV5ceT
3079
- iCxpgCDDatuVvbPEEi8rKOC7xhPHZ22zLEEV//l7C9jxq+DZcA==]
3080
- YAML
3081
- }
3082
- end
3083
-
3084
- let(:env_data) { data_files }
3085
-
3086
- context 'and a module using eyaml with different options' do
3087
-
3088
- let(:private_module_key) do
3089
- <<-PKCS7.unindent
3090
- -----BEGIN RSA PRIVATE KEY-----
3091
- MIIEogIBAAKCAQEAuqVpctipK4OMWM+RwKcd/mR4pg6qE3+ItPVC9TlvBrmDaN/y
3092
- YZRjQR+XovXSGuy/CneSQ9Qss0Ff3FKAmEeH0qN0V47a81hgLpjhLCX1n+Ov7r1Q
3093
- DC1ciTpVzHE4krN3rJ/RmDohitIqT1IYYhdcEdaMG9E26HIzn1QIwaDiYU3mfqWM
3094
- 8CZExa0CeIsEzHRLSxuMi/xX0ENImCRUzY9GH88Cu2gUhpKlbVzJmVqGPgp94pJY
3095
- YM+SUb0XP1yRySpJMnVg98oCUrQO2OoE/Gax/djAi6hrJUzejPsEKdZ1yxM6OyJW
3096
- NjWZYs8izAxBqm7pv1hx5+X7AIPqwZTMVrB7TQIDAQABAoIBAHIex13QOYeAlGSM
3097
- 7bpUtBMiTV6DItxvIyA5wen8ZvU+oqmSHDorp5BfB7E9Cm0qChkVSRot9fLYawtk
3098
- anoxakuRY4ZRs3AMvipfkXYT854CckTP/cykQ6soPuOU6plQIEEtKtMf3/hoTjRX
3099
- ps77J3FEtEAh6Kexg/zMPdpeS2xgULhk0P9ZQEg+JhLA5dq0p0nz3SBkuzcxei79
3100
- +Za/Tg1osD0AINOajdvPnKxvlmWJN0+LpGwVjFNhkoUXPeDyvq0z2V/Uqwz4HP2I
3101
- UGv4tz3SbzFc3Ie4lzgUZzCQgUK3u60pq1uyA6BRtxwdEmpn5v++jGXBGJZpWwcW
3102
- UNblESUCgYEA4aTH9+LHsNjLPs2FmSc7hNjwHG1rAHcDXTX2ccySjRcQvH4Z7xBL
3103
- di+SzZ2Tf8gSLycPRgRVCbrgCODpjoV2D5wWnyUHfWm4+GQxHURYa4UDx69tsSKE
3104
- OTRASJo7/Mz0M1a6YzgCzVRM/TO676ucmawzKUY5OUm1oehtODAiZOcCgYEA08GM
3105
- AMBOznys02xREJI5nLR6AveuTbIjF2efEidoxoW+1RrMOkcqaDTrJQ5PLM+oDDwD
3106
- iPzVjnroSbwJzFB71atIg7b7TwltgkXy7wNTedO2cm5u/I0q8tY2Jaa4Mz8JUnbe
3107
- yafvtS0/mY6A5k+8/2UIMFin2rqU9NC9EUPIo6sCgYBhOvAwELibq89osIbxB8bN
3108
- 5+0PUtbYzG/WqnoXb193DIlZr7zdFththPJtR4lXdo7fYqViNluuZahEKyZ5E2lc
3109
- MJZO3VXs5LGf1wyS3/B55EdMtHs/6O+w9qL8pflTZb2UobqPJoOOltTWBoR24iwI
3110
- y/r/vhLKbMini9AEdjlb4QKBgGdYsax4Lr4GCQ8ScSnmQ6ngRyAFo5MV2pyEnRTu
3111
- GOuywKUe9AeJTgAXu5+VMT0Mh9aYv5zu0Ic+IvpBhIKr0RRCCR0Hg/VaA5Et9FeE
3112
- RwxRMFz+2rn1Z72moDyV9pZEMJeHnknK5WmGEOEvtGczCWmX9Hwr+Jf+sc4dxfiU
3113
- HWsLAoGAXWSX73p/6R4eRfF5zU2UFJPvDzhmwObAuvU4zKs9x7PMxZfvyt/eBCO1
3114
- fj2+hIR72RxVuHbLApF1BT6gPVLtNdvaNuCs8YlHcnx/Oi088F0ni7fL/xYBUvaB
3115
- 7wTf188UJxP1ofVMZW00P4I9mR6BrOulv455gCwsmg2X7WtJU48=
3116
- -----END RSA PRIVATE KEY-----
3117
- PKCS7
3118
- end
3119
-
3120
- let(:public_module_key) do
3121
- <<-PKCS7.unindent
3122
- -----BEGIN CERTIFICATE-----
3123
- MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDUzMTE2Mjc0
3124
- M1oYDzIwNjcwNTE5MTYyNzQzWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
3125
- CgKCAQEAuqVpctipK4OMWM+RwKcd/mR4pg6qE3+ItPVC9TlvBrmDaN/yYZRjQR+X
3126
- ovXSGuy/CneSQ9Qss0Ff3FKAmEeH0qN0V47a81hgLpjhLCX1n+Ov7r1QDC1ciTpV
3127
- zHE4krN3rJ/RmDohitIqT1IYYhdcEdaMG9E26HIzn1QIwaDiYU3mfqWM8CZExa0C
3128
- eIsEzHRLSxuMi/xX0ENImCRUzY9GH88Cu2gUhpKlbVzJmVqGPgp94pJYYM+SUb0X
3129
- P1yRySpJMnVg98oCUrQO2OoE/Gax/djAi6hrJUzejPsEKdZ1yxM6OyJWNjWZYs8i
3130
- zAxBqm7pv1hx5+X7AIPqwZTMVrB7TQIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
3131
- MB0GA1UdDgQWBBQkhoMgOyPzEe7tOOimNH2//PYF2TAoBgNVHSMEITAfgBQkhoMg
3132
- OyPzEe7tOOimNH2//PYF2aEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAhRWc
3133
- Nz3PcUJllao5G/v4AyvjLgwB2JgjJgh6D3ILoOe9TrDSXD7ZV3F30vFae+Eztk86
3134
- pmM8x57E0HsuuY+Owf6/hvELtwbzf9N/lc9ySZSogGFoQeJ8rnCJAQ0FaPjqb7AN
3135
- xTaY9HTzr4dZG1f+sw32RUu2fDe7Deqgf85uMSZ1mtRTt9zvo8lMQxVA2nVOfwz2
3136
- Nxf+qSNYSCtf0/6iwfzHy0qPjaJnywgBCi3Lg2IMSqGUatxzH+9HWrBgD+ZYxmDz
3137
- 2gW+EIU1Y/We/tbjIWaR1PD+IzeRJi5fHq60RKHPSdp7TGtV48bQRvyZXC7sVCRa
3138
- yxfX1IGYhCDzbFRQNg==
3139
- -----END CERTIFICATE-----
3140
- PKCS7
3141
- end
3142
-
3143
- let(:module_keys_dir) do
3144
- keys = tmpdir('keys')
3145
- dir_contained_in(keys, {
3146
- private_key_name => private_module_key,
3147
- public_key_name => public_module_key
3148
- })
3149
- keys
3150
- end
3151
-
3152
- let(:private_module_key_path) { File.join(module_keys_dir, private_key_name) }
3153
- let(:public_module_key_path) { File.join(module_keys_dir, public_key_name) }
3154
-
3155
- let(:mod_a_files) do
3156
- {
3157
- 'mod_a' => {
3158
- 'hiera.yaml' => <<-YAML.unindent,
3159
- version: 5
3160
- hierarchy:
3161
- - name: EYaml
3162
- path: common.eyaml
3163
- lookup_key: eyaml_lookup_key
3164
- options:
3165
- pkcs7_private_key: #{private_module_key_path}
3166
- pkcs7_public_key: #{public_module_key_path}
3167
- YAML
3168
- 'data' => {
3169
- 'common.eyaml' => <<-YAML.unindent
3170
- ---
3171
- # "%{lookup('a')} (from module)"
3172
- mod_a::a: >
3173
- ENC[PKCS7,MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFMAACAQEw
3174
- DQYJKoZIhvcNAQEBBQAEggEAC+lvda8mX6XkgCBstNw4IQUDyFcS6M0mS9gZ
3175
- ev4VBDeUK4AUNVnzzdbW0Mnj9LbqlpzFx96VGqSxsRBpe7BVD0kVo5jQsEMn
3176
- nbrWOD1lvXYrXZMXBeD9xJbMbH5EiiFhbaXcEKRAVGaLVQKjXDENDQ/On+it
3177
- 1+wmmVwJynDJR0lsCz6dcSKvw6wnxBcv32qFyePvJuIf04CHMhaS4ykedYHK
3178
- vagUn5uVXOv/8G0JPlZnQLyxjE0v0heb0Zj0mvcP2+Y5BSW50AQVrMWJNtdW
3179
- aFEg6H5hpjduQfQh3iWVuDLnWhbP0sY2Grn5dTOxQP8aTDSsiTUcSeIAmjr/
3180
- K8YRCjBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAjL7InlBjRuohLLcBx
3181
- 686ogCDkhCan8bCE7aX2nr75QtLF3q89pFIR4/NGl5+oGEO+qQ==]
3182
- YAML
3183
- }
3184
- }
3185
- }
3186
- end
3187
-
3188
- let(:populated_env_dir) do
3189
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
3190
- env_dir
3191
- end
3192
-
3193
- it 'repeatedly finds data in environment and module' do
3194
- expect(lookup(['array_a', 'mod_a::a', 'hash_a'])).to eql([
3195
- ['array_a[0]', 'array_a[1]'],
3196
- "Encrypted value 'a' (from environment) (from module)",
3197
- {'hash_aa'=>{'aaa'=>'Encrypted value hash_a.hash_aa.aaa (from environment)'}}])
3198
- end
3199
- end
3200
-
3201
- it 'finds data in the environment' do
3202
- expect(lookup('a')).to eql("Encrypted value 'a' (from environment)")
3203
- end
3204
-
3205
- it 'evaluates interpolated keys' do
3206
- expect(lookup('hash_a')).to include('hash_aa')
3207
- end
3208
-
3209
- it 'evaluates interpolations in encrypted values' do
3210
- expect(lookup('ref_a')).to eql("A resolved = 'Encrypted value 'a' (from environment)'")
3211
- end
3212
-
3213
- it 'can read encrypted values inside a hash' do
3214
- expect(lookup('hash_a.hash_aa.aaa')).to eql('Encrypted value hash_a.hash_aa.aaa (from environment)')
3215
- end
3216
-
3217
- it 'can read encrypted values inside an array' do
3218
- expect(lookup('array_a')).to eql(['array_a[0]', 'array_a[1]'])
3219
- end
3220
-
3221
- context 'declared in global scope as a Hiera v3 backend' do
3222
- let(:environment_files) { {} }
3223
- let(:data_file_content) { <<-YAML.unindent }
3224
- a: >
3225
- ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
3226
- DQYJKoZIhvcNAQEBBQAEggEAH457bsfL8kYw9O50roE3dcE21nCnmPnQ2XSX
3227
- LYRJ2C78LarbfFonKz0gvDW7tyhsLWASFCFaiU8T1QPBd2b3hoQK8E4B2Ual
3228
- xga/K7r9y3OSgRomTm9tpTltC6re0Ubh3Dy71H61obwxEdNVTqjPe95+m2b8
3229
- 6zWZVnzZzXXsTG1S17yJn1zaB/LXHbWNy4KyLLKCGAml+Gfl6ZMjmaplTmUA
3230
- QIC5rI8abzbPP3TDMmbLOGNkrmLqI+3uS8tSueTMoJmWaMF6c+H/cA7oRxmV
3231
- QCeEUVXjyFvCHcmbA+keS/RK9XF+vc07/XS4XkYSPs/I5hLQji1y9bkkGAs0
3232
- tehxQjBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDHpA6Fcl/R16aIYcow
3233
- oiO4gDAvfFH6jLUwXkcYtagnwdmhkd9TQJtxNWcIwMpvmk036MqIoGwwhQdg
3234
- gV4beiCFtLU=]
3235
- YAML
3236
-
3237
- let(:hiera_yaml) do
3238
- <<-YAML.unindent
3239
- :backends: eyaml
3240
- :eyaml:
3241
- :datadir: #{code_dir}/hieradata
3242
- :pkcs7_private_key: #{private_key_path}
3243
- :pkcs7_public_key: #{public_key_path}
3244
- :hierarchy:
3245
- - common
3246
- YAML
3247
- end
3248
-
3249
- let(:data_files) do
3250
- {
3251
- 'common.eyaml' => data_file_content
3252
- }
3253
- end
3254
-
3255
- let(:code_dir_files) do
3256
- {
3257
- 'hiera.yaml' => hiera_yaml,
3258
- 'hieradata' => data_files
3259
- }
3260
- end
3261
-
3262
- before(:each) do
3263
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
3264
- end
3265
-
3266
- it 'finds data in the global layer' do
3267
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3268
- end
3269
-
3270
- it 'delegates configured eyaml backend to eyaml_lookup_key function' do
3271
- expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
3272
- end
3273
-
3274
- context 'using intepolated paths to the key pair' do
3275
- let(:scope_additions) { { 'priv_path' => private_key_path, 'pub_path' => public_key_path } }
3276
-
3277
- let(:hiera_yaml) do
3278
- <<-YAML.unindent
3279
- :backends: eyaml
3280
- :eyaml:
3281
- :datadir: #{code_dir}/hieradata
3282
- :pkcs7_private_key: "%{priv_path}"
3283
- :pkcs7_public_key: "%{pub_path}"
3284
- :hierarchy:
3285
- - common
3286
- YAML
3287
- end
3288
-
3289
- it 'finds data in the global layer' do
3290
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3291
- end
3292
- end
3293
-
3294
- context 'with special extension declared in options' do
3295
- let(:environment_files) { {} }
3296
- let(:hiera_yaml) do
3297
- <<-YAML.unindent
3298
- :backends: eyaml
3299
- :eyaml:
3300
- :extension: xyaml
3301
- :datadir: #{code_dir}/hieradata
3302
- :pkcs7_private_key: #{private_key_path}
3303
- :pkcs7_public_key: #{public_key_path}
3304
- :hierarchy:
3305
- - common
3306
- YAML
3307
- end
3308
-
3309
- let(:data_files) do
3310
- {
3311
- 'common.xyaml' => data_file_content
3312
- }
3313
- end
3314
-
3315
- it 'finds data in the global layer' do
3316
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3317
- end
3318
-
3319
- it 'delegates configured eyaml backend to eyaml_lookup_key function' do
3320
- expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
3321
- end
3322
- end
3323
- end
3324
- end
3325
- end
3326
- end