puppet 3.4.3 → 3.5.0.rc1

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

Potentially problematic release.


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

Files changed (811) hide show
  1. data/CONTRIBUTING.md +6 -6
  2. data/Gemfile +22 -16
  3. data/LICENSE +1 -1
  4. data/README.md +33 -11
  5. data/Rakefile +1 -1
  6. data/conf/auth.conf +4 -0
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/debian/control +6 -6
  9. data/ext/ips/transforms +1 -1
  10. data/ext/nagios/naggen +1 -1
  11. data/ext/project_data.yaml +21 -1
  12. data/ext/puppet-test +3 -3
  13. data/ext/redhat/puppet.spec.erb +28 -2
  14. data/ext/suse/puppet.spec +1 -1
  15. data/ext/upload_facts.rb +1 -1
  16. data/ext/windows/service/daemon.rb +99 -20
  17. data/lib/hiera_puppet.rb +2 -2
  18. data/lib/puppet.rb +68 -5
  19. data/lib/puppet/agent.rb +5 -1
  20. data/lib/puppet/application.rb +20 -11
  21. data/lib/puppet/application/agent.rb +1 -1
  22. data/lib/puppet/application/apply.rb +61 -41
  23. data/lib/puppet/application/cert.rb +3 -3
  24. data/lib/puppet/application/device.rb +7 -8
  25. data/lib/puppet/application/doc.rb +1 -1
  26. data/lib/puppet/application/filebucket.rb +3 -3
  27. data/lib/puppet/application/kick.rb +2 -2
  28. data/lib/puppet/application/master.rb +1 -1
  29. data/lib/puppet/application/queue.rb +9 -9
  30. data/lib/puppet/application/resource.rb +2 -2
  31. data/lib/puppet/bindings.rb +6 -6
  32. data/lib/puppet/configurer.rb +17 -14
  33. data/lib/puppet/configurer/fact_handler.rb +1 -1
  34. data/lib/puppet/confine/any.rb +26 -0
  35. data/lib/puppet/confine/exists.rb +1 -1
  36. data/lib/puppet/confiner.rb +1 -0
  37. data/lib/puppet/context.rb +55 -0
  38. data/lib/puppet/context/trusted_information.rb +56 -0
  39. data/lib/puppet/defaults.rb +97 -26
  40. data/lib/puppet/environments.rb +187 -0
  41. data/lib/puppet/error.rb +2 -1
  42. data/lib/puppet/external/pson/common.rb +1 -1
  43. data/lib/puppet/external/pson/pure/generator.rb +1 -1
  44. data/lib/puppet/external/pson/pure/parser.rb +1 -1
  45. data/lib/puppet/face/config.rb +73 -15
  46. data/lib/puppet/face/file/store.rb +1 -1
  47. data/lib/puppet/face/help.rb +2 -1
  48. data/lib/puppet/face/help/action.erb +1 -0
  49. data/lib/puppet/face/help/face.erb +1 -0
  50. data/lib/puppet/face/help/global.erb +1 -0
  51. data/lib/puppet/face/help/man.erb +9 -8
  52. data/lib/puppet/face/module/list.rb +13 -7
  53. data/lib/puppet/face/node/clean.rb +2 -2
  54. data/lib/puppet/face/parser.rb +11 -5
  55. data/lib/puppet/face/status.rb +1 -1
  56. data/lib/puppet/feature/external_facts.rb +2 -2
  57. data/lib/puppet/feature/libuser.rb +1 -1
  58. data/lib/puppet/feature/msgpack.rb +2 -0
  59. data/lib/puppet/feature/rails.rb +2 -2
  60. data/lib/puppet/file_bucket/dipper.rb +9 -9
  61. data/lib/puppet/file_bucket/file.rb +9 -5
  62. data/lib/puppet/file_serving/base.rb +1 -1
  63. data/lib/puppet/file_serving/configuration.rb +1 -1
  64. data/lib/puppet/file_serving/configuration/parser.rb +3 -3
  65. data/lib/puppet/file_serving/content.rb +2 -2
  66. data/lib/puppet/file_serving/fileset.rb +4 -4
  67. data/lib/puppet/file_serving/metadata.rb +69 -15
  68. data/lib/puppet/file_serving/mount/file.rb +1 -1
  69. data/lib/puppet/file_system.rb +361 -1
  70. data/lib/puppet/file_system/file18.rb +3 -3
  71. data/lib/puppet/file_system/file19.rb +3 -3
  72. data/lib/puppet/file_system/file19windows.rb +18 -23
  73. data/lib/puppet/file_system/file_impl.rb +145 -0
  74. data/lib/puppet/file_system/memory_file.rb +23 -9
  75. data/lib/puppet/file_system/memory_impl.rb +64 -0
  76. data/lib/puppet/forge.rb +4 -3
  77. data/lib/puppet/forge/repository.rb +0 -1
  78. data/lib/puppet/graph/relationship_graph.rb +7 -7
  79. data/lib/puppet/indirector.rb +1 -0
  80. data/lib/puppet/indirector/catalog/compiler.rb +3 -30
  81. data/lib/puppet/indirector/catalog/msgpack.rb +6 -0
  82. data/lib/puppet/indirector/catalog/static_compiler.rb +3 -7
  83. data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
  84. data/lib/puppet/indirector/direct_file_server.rb +2 -2
  85. data/lib/puppet/indirector/exec.rb +1 -1
  86. data/lib/puppet/indirector/face.rb +3 -2
  87. data/lib/puppet/indirector/facts/facter.rb +1 -1
  88. data/lib/puppet/indirector/file_bucket_file/file.rb +25 -15
  89. data/lib/puppet/indirector/file_metadata/file.rb +1 -1
  90. data/lib/puppet/indirector/file_server.rb +1 -1
  91. data/lib/puppet/indirector/indirection.rb +1 -1
  92. data/lib/puppet/indirector/json.rb +4 -4
  93. data/lib/puppet/indirector/key/file.rb +8 -5
  94. data/lib/puppet/indirector/ldap.rb +1 -1
  95. data/lib/puppet/indirector/memory.rb +4 -0
  96. data/lib/puppet/indirector/msgpack.rb +82 -0
  97. data/lib/puppet/indirector/node/exec.rb +1 -1
  98. data/lib/puppet/indirector/node/ldap.rb +3 -3
  99. data/lib/puppet/indirector/node/msgpack.rb +7 -0
  100. data/lib/puppet/indirector/node/yaml.rb +15 -0
  101. data/lib/puppet/indirector/queue.rb +3 -2
  102. data/lib/puppet/indirector/report/msgpack.rb +11 -0
  103. data/lib/puppet/indirector/request.rb +17 -20
  104. data/lib/puppet/indirector/resource/rest.rb +1 -1
  105. data/lib/puppet/indirector/resource_type/parser.rb +3 -13
  106. data/lib/puppet/indirector/rest.rb +6 -7
  107. data/lib/puppet/indirector/ssl_file.rb +7 -7
  108. data/lib/puppet/indirector/yaml.rb +9 -13
  109. data/lib/puppet/metatype/manager.rb +12 -7
  110. data/lib/puppet/module.rb +14 -9
  111. data/lib/puppet/module_tool.rb +21 -26
  112. data/lib/puppet/module_tool/applications/application.rb +1 -1
  113. data/lib/puppet/module_tool/applications/generator.rb +2 -1
  114. data/lib/puppet/module_tool/applications/installer.rb +9 -4
  115. data/lib/puppet/module_tool/applications/uninstaller.rb +10 -7
  116. data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
  117. data/lib/puppet/module_tool/applications/upgrader.rb +11 -8
  118. data/lib/puppet/module_tool/checksums.rb +1 -1
  119. data/lib/puppet/module_tool/contents_description.rb +2 -0
  120. data/lib/puppet/module_tool/dependency.rb +4 -5
  121. data/lib/puppet/module_tool/errors.rb +2 -0
  122. data/lib/puppet/module_tool/install_directory.rb +3 -0
  123. data/lib/puppet/module_tool/metadata.rb +3 -5
  124. data/lib/puppet/module_tool/modulefile.rb +3 -0
  125. data/lib/puppet/module_tool/shared_behaviors.rb +6 -1
  126. data/lib/puppet/module_tool/skeleton.rb +3 -0
  127. data/lib/puppet/module_tool/tar.rb +3 -0
  128. data/lib/puppet/network/auth_config_parser.rb +1 -1
  129. data/lib/puppet/network/authconfig.rb +5 -2
  130. data/lib/puppet/network/authentication.rb +7 -2
  131. data/lib/puppet/network/authorization.rb +2 -2
  132. data/lib/puppet/network/format_support.rb +4 -0
  133. data/lib/puppet/network/formats.rb +9 -14
  134. data/lib/puppet/network/http.rb +11 -0
  135. data/lib/puppet/network/http/api.rb +0 -2
  136. data/lib/puppet/network/http/api/v1.rb +146 -11
  137. data/lib/puppet/network/http/api/v2.rb +32 -0
  138. data/lib/puppet/network/http/api/v2/authorization.rb +13 -0
  139. data/lib/puppet/network/http/api/v2/environments.rb +21 -0
  140. data/lib/puppet/network/http/connection.rb +94 -37
  141. data/lib/puppet/network/http/error.rb +69 -0
  142. data/lib/puppet/network/http/handler.rb +28 -196
  143. data/lib/puppet/network/http/issues.rb +9 -0
  144. data/lib/puppet/network/http/memory_response.rb +13 -0
  145. data/lib/puppet/network/http/rack/rest.rb +10 -18
  146. data/lib/puppet/network/http/request.rb +56 -0
  147. data/lib/puppet/network/http/response.rb +11 -0
  148. data/lib/puppet/network/http/route.rb +91 -0
  149. data/lib/puppet/network/http/webrick.rb +1 -1
  150. data/lib/puppet/network/http/webrick/rest.rb +7 -12
  151. data/lib/puppet/network/http_pool.rb +3 -3
  152. data/lib/puppet/network/rights.rb +4 -4
  153. data/lib/puppet/node.rb +23 -14
  154. data/lib/puppet/node/environment.rb +149 -125
  155. data/lib/puppet/node/facts.rb +6 -5
  156. data/lib/puppet/parameter.rb +1 -1
  157. data/lib/puppet/parser/ast.rb +1 -1
  158. data/lib/puppet/parser/ast/block_expression.rb +1 -6
  159. data/lib/puppet/parser/ast/collexpr.rb +54 -2
  160. data/lib/puppet/parser/ast/lambda.rb +9 -0
  161. data/lib/puppet/parser/ast/leaf.rb +15 -0
  162. data/lib/puppet/parser/ast/pops_bridge.rb +168 -0
  163. data/lib/puppet/parser/code_merger.rb +13 -0
  164. data/lib/puppet/parser/collector.rb +1 -1
  165. data/lib/puppet/parser/compiler.rb +28 -30
  166. data/lib/puppet/parser/e4_parser_adapter.rb +81 -0
  167. data/lib/puppet/parser/e_parser_adapter.rb +0 -1
  168. data/lib/puppet/parser/files.rb +12 -7
  169. data/lib/puppet/parser/functions.rb +36 -29
  170. data/lib/puppet/parser/functions/collect.rb +1 -1
  171. data/lib/puppet/parser/functions/defined.rb +40 -16
  172. data/lib/puppet/parser/functions/each.rb +55 -41
  173. data/lib/puppet/parser/functions/epp.rb +41 -0
  174. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  175. data/lib/puppet/parser/functions/file.rb +1 -1
  176. data/lib/puppet/parser/functions/filter.rb +68 -16
  177. data/lib/puppet/parser/functions/generate.rb +1 -1
  178. data/lib/puppet/parser/functions/include.rb +3 -2
  179. data/lib/puppet/parser/functions/inline_epp.rb +79 -0
  180. data/lib/puppet/parser/functions/inline_template.rb +1 -1
  181. data/lib/puppet/parser/functions/lookup.rb +127 -27
  182. data/lib/puppet/parser/functions/map.rb +64 -12
  183. data/lib/puppet/parser/functions/reduce.rb +40 -16
  184. data/lib/puppet/parser/functions/select.rb +1 -1
  185. data/lib/puppet/parser/functions/slice.rb +42 -23
  186. data/lib/puppet/parser/grammar.ra +3 -0
  187. data/lib/puppet/parser/lexer.rb +10 -9
  188. data/lib/puppet/parser/parser.rb +15 -12
  189. data/lib/puppet/parser/parser_factory.rb +26 -1
  190. data/lib/puppet/parser/parser_support.rb +13 -4
  191. data/lib/puppet/parser/resource.rb +1 -1
  192. data/lib/puppet/parser/scope.rb +246 -97
  193. data/lib/puppet/parser/templatewrapper.rb +1 -1
  194. data/lib/puppet/parser/type_loader.rb +13 -2
  195. data/lib/puppet/pops.rb +15 -1
  196. data/lib/puppet/pops/adapters.rb +64 -32
  197. data/lib/puppet/pops/binder/binder.rb +122 -150
  198. data/lib/puppet/pops/binder/binder_issues.rb +1 -21
  199. data/lib/puppet/pops/binder/bindings_checker.rb +0 -20
  200. data/lib/puppet/pops/binder/bindings_composer.rb +4 -70
  201. data/lib/puppet/pops/binder/bindings_factory.rb +16 -58
  202. data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -3
  203. data/lib/puppet/pops/binder/bindings_loader.rb +13 -4
  204. data/lib/puppet/pops/binder/bindings_model.rb +17 -31
  205. data/lib/puppet/pops/binder/bindings_model_dumper.rb +2 -20
  206. data/lib/puppet/pops/binder/config/binder_config.rb +8 -40
  207. data/lib/puppet/pops/binder/config/binder_config_checker.rb +2 -43
  208. data/lib/puppet/pops/binder/config/issues.rb +1 -21
  209. data/lib/puppet/pops/binder/injector.rb +86 -7
  210. data/lib/puppet/pops/binder/injector_entry.rb +6 -2
  211. data/lib/puppet/pops/binder/key_factory.rb +7 -1
  212. data/lib/puppet/pops/binder/lookup.rb +191 -0
  213. data/lib/puppet/pops/binder/producers.rb +5 -5
  214. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +2 -3
  215. data/lib/puppet/pops/binder/system_bindings.rb +4 -16
  216. data/lib/puppet/pops/containment.rb +72 -5
  217. data/lib/puppet/pops/evaluator/access_operator.rb +548 -0
  218. data/lib/puppet/pops/evaluator/closure.rb +57 -0
  219. data/lib/puppet/pops/evaluator/compare_operator.rb +168 -0
  220. data/lib/puppet/pops/evaluator/epp_evaluator.rb +87 -0
  221. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1069 -0
  222. data/lib/puppet/pops/evaluator/external_syntax_support.rb +49 -0
  223. data/lib/puppet/pops/evaluator/relationship_operator.rb +156 -0
  224. data/lib/puppet/pops/evaluator/runtime3_support.rb +489 -0
  225. data/lib/puppet/pops/issue_reporter.rb +8 -4
  226. data/lib/puppet/pops/issues.rb +199 -4
  227. data/lib/puppet/pops/label_provider.rb +5 -0
  228. data/lib/puppet/pops/model/ast_transformer.rb +55 -31
  229. data/lib/puppet/pops/model/ast_tree_dumper.rb +9 -1
  230. data/lib/puppet/pops/model/factory.rb +265 -111
  231. data/lib/puppet/pops/model/model.rb +179 -140
  232. data/lib/puppet/pops/model/model_label_provider.rb +38 -9
  233. data/lib/puppet/pops/model/model_tree_dumper.rb +38 -13
  234. data/lib/puppet/pops/parser/code_merger.rb +17 -0
  235. data/lib/puppet/pops/parser/egrammar.ra +110 -61
  236. data/lib/puppet/pops/parser/eparser.rb +1415 -1092
  237. data/lib/puppet/pops/parser/epp_parser.rb +51 -0
  238. data/lib/puppet/pops/parser/epp_support.rb +247 -0
  239. data/lib/puppet/pops/parser/evaluating_parser.rb +53 -15
  240. data/lib/puppet/pops/parser/heredoc_support.rb +139 -0
  241. data/lib/puppet/pops/parser/interpolation_support.rb +227 -0
  242. data/lib/puppet/pops/parser/lexer.rb +83 -192
  243. data/lib/puppet/pops/parser/lexer2.rb +684 -0
  244. data/lib/puppet/pops/parser/lexer_support.rb +107 -0
  245. data/lib/puppet/pops/parser/locatable.rb +23 -0
  246. data/lib/puppet/pops/parser/locator.rb +291 -0
  247. data/lib/puppet/pops/parser/makefile +1 -8
  248. data/lib/puppet/pops/parser/parser_support.rb +76 -48
  249. data/lib/puppet/pops/parser/slurp_support.rb +95 -0
  250. data/lib/puppet/pops/patterns.rb +13 -4
  251. data/lib/puppet/pops/types/class_loader.rb +2 -2
  252. data/lib/puppet/pops/types/enumeration.rb +34 -0
  253. data/lib/puppet/pops/types/type_calculator.rb +983 -58
  254. data/lib/puppet/pops/types/type_factory.rb +203 -15
  255. data/lib/puppet/pops/types/type_parser.rb +355 -12
  256. data/lib/puppet/pops/types/types.rb +314 -24
  257. data/lib/puppet/pops/utils.rb +23 -7
  258. data/lib/puppet/pops/validation.rb +14 -8
  259. data/lib/puppet/pops/validation/checker3_1.rb +17 -12
  260. data/lib/puppet/pops/validation/checker4_0.rb +514 -0
  261. data/lib/puppet/pops/validation/validator_factory_4_0.rb +31 -0
  262. data/lib/puppet/pops/visitor.rb +146 -4
  263. data/lib/puppet/property.rb +1 -1
  264. data/lib/puppet/property/ensure.rb +1 -1
  265. data/lib/puppet/provider.rb +47 -26
  266. data/lib/puppet/provider/aixobject.rb +3 -3
  267. data/lib/puppet/provider/augeas/augeas.rb +11 -11
  268. data/lib/puppet/provider/cron/crontab.rb +10 -1
  269. data/lib/puppet/provider/exec.rb +1 -1
  270. data/lib/puppet/provider/exec/posix.rb +1 -1
  271. data/lib/puppet/provider/exec/windows.rb +1 -1
  272. data/lib/puppet/provider/file/posix.rb +2 -2
  273. data/lib/puppet/provider/file/windows.rb +15 -9
  274. data/lib/puppet/provider/group/aix.rb +2 -2
  275. data/lib/puppet/provider/macauthorization/macauthorization.rb +3 -3
  276. data/lib/puppet/provider/mount.rb +7 -0
  277. data/lib/puppet/provider/mount/parsed.rb +0 -1
  278. data/lib/puppet/provider/naginator.rb +1 -1
  279. data/lib/puppet/provider/nameservice.rb +3 -3
  280. data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
  281. data/lib/puppet/provider/package/aix.rb +1 -1
  282. data/lib/puppet/provider/package/appdmg.rb +1 -4
  283. data/lib/puppet/provider/package/apple.rb +1 -1
  284. data/lib/puppet/provider/package/apt.rb +1 -1
  285. data/lib/puppet/provider/package/blastwave.rb +1 -1
  286. data/lib/puppet/provider/package/fink.rb +1 -1
  287. data/lib/puppet/provider/package/gem.rb +3 -3
  288. data/lib/puppet/provider/package/openbsd.rb +6 -4
  289. data/lib/puppet/provider/package/pacman.rb +58 -5
  290. data/lib/puppet/provider/package/pip.rb +2 -2
  291. data/lib/puppet/provider/package/pkgdmg.rb +25 -10
  292. data/lib/puppet/provider/package/pkgin.rb +48 -23
  293. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  294. data/lib/puppet/provider/package/ports.rb +1 -1
  295. data/lib/puppet/provider/package/portupgrade.rb +7 -7
  296. data/lib/puppet/provider/package/rpm.rb +16 -8
  297. data/lib/puppet/provider/package/windows.rb +1 -1
  298. data/lib/puppet/provider/package/windows/package.rb +1 -1
  299. data/lib/puppet/provider/parsedfile.rb +1 -1
  300. data/lib/puppet/provider/selboolean/getsetsebool.rb +1 -1
  301. data/lib/puppet/provider/selmodule/semodule.rb +5 -5
  302. data/lib/puppet/provider/service/base.rb +1 -1
  303. data/lib/puppet/provider/service/bsd.rb +3 -3
  304. data/lib/puppet/provider/service/daemontools.rb +20 -20
  305. data/lib/puppet/provider/service/debian.rb +1 -1
  306. data/lib/puppet/provider/service/freebsd.rb +3 -3
  307. data/lib/puppet/provider/service/gentoo.rb +2 -2
  308. data/lib/puppet/provider/service/init.rb +5 -5
  309. data/lib/puppet/provider/service/launchd.rb +4 -4
  310. data/lib/puppet/provider/service/redhat.rb +2 -2
  311. data/lib/puppet/provider/service/runit.rb +4 -4
  312. data/lib/puppet/provider/service/service.rb +3 -4
  313. data/lib/puppet/provider/service/smf.rb +1 -1
  314. data/lib/puppet/provider/service/src.rb +3 -3
  315. data/lib/puppet/provider/service/systemd.rb +4 -4
  316. data/lib/puppet/provider/service/upstart.rb +22 -7
  317. data/lib/puppet/provider/service/windows.rb +7 -7
  318. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +3 -3
  319. data/lib/puppet/provider/user/aix.rb +5 -5
  320. data/lib/puppet/provider/user/directoryservice.rb +8 -5
  321. data/lib/puppet/provider/user/ldap.rb +1 -1
  322. data/lib/puppet/provider/user/pw.rb +1 -1
  323. data/lib/puppet/provider/user/user_role_add.rb +2 -2
  324. data/lib/puppet/provider/user/useradd.rb +19 -5
  325. data/lib/puppet/provider/yumrepo/inifile.rb +187 -0
  326. data/lib/puppet/provider/zone/solaris.rb +4 -4
  327. data/lib/puppet/rails.rb +16 -11
  328. data/lib/puppet/rails/benchmark.rb +1 -1
  329. data/lib/puppet/rails/resource.rb +5 -1
  330. data/lib/puppet/reference/configuration.rb +1 -1
  331. data/lib/puppet/reference/report.rb +1 -1
  332. data/lib/puppet/relationship.rb +10 -5
  333. data/lib/puppet/reports/http.rb +8 -2
  334. data/lib/puppet/reports/rrdgraph.rb +1 -1
  335. data/lib/puppet/reports/store.rb +3 -3
  336. data/lib/puppet/reports/tagmail.rb +4 -4
  337. data/lib/puppet/resource.rb +37 -44
  338. data/lib/puppet/resource/catalog.rb +18 -20
  339. data/lib/puppet/resource/status.rb +7 -6
  340. data/lib/puppet/resource/type.rb +6 -5
  341. data/lib/puppet/resource/type_collection.rb +2 -2
  342. data/lib/puppet/run.rb +9 -8
  343. data/lib/puppet/settings.rb +395 -244
  344. data/lib/puppet/settings/base_setting.rb +10 -4
  345. data/lib/puppet/settings/config_file.rb +81 -44
  346. data/lib/puppet/settings/directory_setting.rb +1 -2
  347. data/lib/puppet/settings/file_setting.rb +12 -5
  348. data/lib/puppet/settings/ini_file.rb +171 -0
  349. data/lib/puppet/ssl/base.rb +4 -0
  350. data/lib/puppet/ssl/certificate_authority.rb +16 -11
  351. data/lib/puppet/ssl/certificate_authority/interface.rb +3 -2
  352. data/lib/puppet/ssl/certificate_factory.rb +50 -5
  353. data/lib/puppet/ssl/certificate_request.rb +2 -2
  354. data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
  355. data/lib/puppet/ssl/certificate_revocation_list.rb +3 -1
  356. data/lib/puppet/ssl/host.rb +9 -8
  357. data/lib/puppet/ssl/inventory.rb +1 -1
  358. data/lib/puppet/ssl/key.rb +1 -1
  359. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  360. data/lib/puppet/status.rb +8 -7
  361. data/lib/puppet/test/test_helper.rb +35 -4
  362. data/lib/puppet/transaction/event.rb +6 -5
  363. data/lib/puppet/transaction/report.rb +10 -10
  364. data/lib/puppet/type.rb +1 -3
  365. data/lib/puppet/type/augeas.rb +2 -1
  366. data/lib/puppet/type/cron.rb +41 -11
  367. data/lib/puppet/type/exec.rb +5 -5
  368. data/lib/puppet/type/file.rb +42 -4
  369. data/lib/puppet/type/file/content.rb +5 -6
  370. data/lib/puppet/type/file/ensure.rb +3 -3
  371. data/lib/puppet/type/file/source.rb +12 -6
  372. data/lib/puppet/type/file/target.rb +5 -5
  373. data/lib/puppet/type/k5login.rb +4 -4
  374. data/lib/puppet/type/mount.rb +1 -1
  375. data/lib/puppet/type/package.rb +79 -3
  376. data/lib/puppet/type/resources.rb +34 -5
  377. data/lib/puppet/type/selboolean.rb +1 -1
  378. data/lib/puppet/type/selmodule.rb +1 -1
  379. data/lib/puppet/type/ssh_authorized_key.rb +2 -1
  380. data/lib/puppet/type/sshkey.rb +2 -1
  381. data/lib/puppet/type/tidy.rb +1 -1
  382. data/lib/puppet/type/user.rb +4 -1
  383. data/lib/puppet/type/yumrepo.rb +219 -344
  384. data/lib/puppet/type/zone.rb +15 -5
  385. data/lib/puppet/util.rb +14 -13
  386. data/lib/puppet/util/adsi.rb +19 -3
  387. data/lib/puppet/util/autoload.rb +27 -24
  388. data/lib/puppet/util/backups.rb +6 -6
  389. data/lib/puppet/util/checksums.rb +2 -2
  390. data/lib/puppet/util/classgen.rb +1 -1
  391. data/lib/puppet/util/colors.rb +4 -12
  392. data/lib/puppet/util/command_line.rb +2 -2
  393. data/lib/puppet/util/command_line/trollop.rb +3 -3
  394. data/lib/puppet/util/docs.rb +2 -2
  395. data/lib/puppet/util/errors.rb +8 -1
  396. data/lib/puppet/util/execution.rb +12 -5
  397. data/lib/puppet/util/filetype.rb +5 -5
  398. data/lib/puppet/util/inifile.rb +19 -4
  399. data/lib/puppet/util/instrumentation/data.rb +5 -0
  400. data/lib/puppet/util/instrumentation/indirection_probe.rb +6 -1
  401. data/lib/puppet/util/instrumentation/listener.rb +6 -1
  402. data/lib/puppet/util/json_lockfile.rb +4 -1
  403. data/lib/puppet/util/ldap/connection.rb +1 -1
  404. data/lib/puppet/util/lockfile.rb +10 -6
  405. data/lib/puppet/util/log.rb +6 -1
  406. data/lib/puppet/util/log/destinations.rb +2 -2
  407. data/lib/puppet/util/metric.rb +9 -4
  408. data/lib/puppet/util/nagios_maker.rb +26 -1
  409. data/lib/puppet/util/network_device.rb +1 -1
  410. data/lib/puppet/util/network_device/config.rb +1 -1
  411. data/lib/puppet/util/network_device/transport/ssh.rb +3 -3
  412. data/lib/puppet/util/plugins.rb +1 -1
  413. data/lib/puppet/util/profiler.rb +13 -1
  414. data/lib/puppet/util/pson.rb +1 -1
  415. data/lib/puppet/util/queue/stomp.rb +2 -2
  416. data/lib/puppet/util/rdoc.rb +1 -1
  417. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  418. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +19 -19
  419. data/lib/puppet/util/reference.rb +1 -1
  420. data/lib/puppet/util/resource_template.rb +1 -1
  421. data/lib/puppet/util/retryaction.rb +1 -1
  422. data/lib/puppet/util/selinux.rb +2 -2
  423. data/lib/puppet/util/storage.rb +3 -3
  424. data/lib/puppet/util/symbolic_file_mode.rb +1 -1
  425. data/lib/puppet/util/tag_set.rb +15 -3
  426. data/lib/puppet/util/tagging.rb +12 -17
  427. data/lib/puppet/util/watched_file.rb +1 -1
  428. data/lib/puppet/util/watcher.rb +1 -1
  429. data/lib/puppet/util/windows/error.rb +2 -2
  430. data/lib/puppet/util/windows/file.rb +20 -4
  431. data/lib/puppet/util/windows/registry.rb +2 -2
  432. data/lib/puppet/vendor/safe_yaml/CHANGES.md +1 -1
  433. data/lib/puppet/version.rb +1 -1
  434. data/lib/puppetx.rb +1 -21
  435. data/lib/puppetx/puppet/syntax_checker.rb +1 -1
  436. data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +9 -11
  437. data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +2 -0
  438. data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +6 -0
  439. data/spec/fixtures/{unit/pops/binder/hiera2/yaml_backend/empty/common.yaml → integration/node/environment/sitedir/03_empty.pp} +0 -0
  440. data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +2 -0
  441. data/spec/fixtures/integration/provider/cron/crontab/purged +8 -0
  442. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
  443. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +3 -12
  444. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +10 -0
  445. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +20 -0
  446. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/{awesome/lib/puppetx/awesome → awesome2/lib/puppetx/awesome2}/echo_scheme_handler.rb +2 -2
  447. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +5 -0
  448. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +6 -0
  449. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +2 -2
  450. data/spec/fixtures/unit/provider/service/systemd/{list_units → list_units_services} +0 -1
  451. data/spec/integration/agent/logging_spec.rb +1 -1
  452. data/spec/integration/application/apply_spec.rb +78 -3
  453. data/spec/integration/application/doc_spec.rb +3 -2
  454. data/spec/integration/configurer_spec.rb +5 -3
  455. data/spec/integration/directory_environments_spec.rb +50 -0
  456. data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
  457. data/spec/integration/indirector/file_content/file_server_spec.rb +4 -5
  458. data/spec/integration/network/authconfig_spec.rb +4 -4
  459. data/spec/integration/network/formats_spec.rb +1 -1
  460. data/spec/integration/node/environment_spec.rb +67 -15
  461. data/spec/integration/node/facts_spec.rb +1 -1
  462. data/spec/integration/node_spec.rb +1 -1
  463. data/spec/integration/parser/catalog_spec.rb +100 -60
  464. data/spec/integration/parser/compiler_spec.rb +102 -13
  465. data/spec/integration/parser/future_compiler_spec.rb +416 -0
  466. data/spec/integration/parser/parser_spec.rb +44 -105
  467. data/spec/integration/parser/scope_spec.rb +614 -528
  468. data/spec/integration/provider/cron/crontab_spec.rb +21 -0
  469. data/spec/integration/provider/mount_spec.rb +15 -2
  470. data/spec/integration/resource/catalog_spec.rb +1 -1
  471. data/spec/integration/resource/type_collection_spec.rb +3 -4
  472. data/spec/integration/ssl/autosign_spec.rb +1 -1
  473. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  474. data/spec/integration/ssl/host_spec.rb +1 -1
  475. data/spec/integration/transaction_spec.rb +13 -13
  476. data/spec/integration/type/exec_spec.rb +2 -2
  477. data/spec/integration/type/file_spec.rb +114 -41
  478. data/spec/integration/type/nagios_spec.rb +80 -0
  479. data/spec/integration/type/tidy_spec.rb +2 -2
  480. data/spec/integration/util/execution_spec.rb +17 -0
  481. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  482. data/spec/integration/util/settings_spec.rb +1 -1
  483. data/spec/integration/util/windows/security_spec.rb +27 -2
  484. data/spec/lib/matchers/include.rb +27 -0
  485. data/spec/lib/matchers/include_spec.rb +32 -0
  486. data/spec/lib/matchers/json.rb +135 -79
  487. data/spec/lib/matchers/match_tokens2.rb +74 -0
  488. data/spec/lib/matchers/resource.rb +35 -0
  489. data/spec/lib/puppet/indirector/indirector_testing/memory.rb +7 -0
  490. data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +6 -0
  491. data/spec/lib/puppet/indirector_testing.rb +12 -2
  492. data/spec/lib/puppet_spec/files.rb +1 -0
  493. data/spec/lib/puppet_spec/matchers.rb +5 -0
  494. data/spec/lib/puppet_spec/modules.rb +1 -1
  495. data/spec/lib/puppet_spec/scope.rb +14 -0
  496. data/spec/shared_behaviours/file_server_terminus.rb +2 -2
  497. data/spec/spec_helper.rb +47 -17
  498. data/spec/unit/agent_spec.rb +8 -1
  499. data/spec/unit/application/agent_spec.rb +5 -4
  500. data/spec/unit/application/apply_spec.rb +34 -15
  501. data/spec/unit/application/device_spec.rb +27 -32
  502. data/spec/unit/application/doc_spec.rb +4 -4
  503. data/spec/unit/application/filebucket_spec.rb +1 -1
  504. data/spec/unit/application/master_spec.rb +2 -2
  505. data/spec/unit/application_spec.rb +1 -1
  506. data/spec/unit/configurer/downloader_spec.rb +1 -1
  507. data/spec/unit/configurer/fact_handler_spec.rb +5 -16
  508. data/spec/unit/configurer_spec.rb +2 -2
  509. data/spec/unit/confine/exists_spec.rb +5 -5
  510. data/spec/unit/context/trusted_information_spec.rb +124 -0
  511. data/spec/unit/context_spec.rb +74 -0
  512. data/spec/unit/environments_spec.rb +126 -0
  513. data/spec/unit/face/config_spec.rb +31 -16
  514. data/spec/unit/face/module/build_spec.rb +1 -0
  515. data/spec/unit/face/module/install_spec.rb +21 -104
  516. data/spec/unit/face/module/list_spec.rb +52 -36
  517. data/spec/unit/face/module/uninstall_spec.rb +18 -25
  518. data/spec/unit/face/parser_spec.rb +39 -23
  519. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  520. data/spec/unit/file_serving/base_spec.rb +9 -13
  521. data/spec/unit/file_serving/configuration/parser_spec.rb +8 -2
  522. data/spec/unit/file_serving/configuration_spec.rb +7 -7
  523. data/spec/unit/file_serving/content_spec.rb +7 -12
  524. data/spec/unit/file_serving/fileset_spec.rb +49 -53
  525. data/spec/unit/file_serving/metadata_spec.rb +83 -32
  526. data/spec/unit/file_serving/mount/file_spec.rb +10 -10
  527. data/spec/unit/file_system/tempfile_spec.rb +3 -3
  528. data/spec/unit/file_system_spec.rb +508 -0
  529. data/spec/unit/forge/errors_spec.rb +1 -1
  530. data/spec/unit/forge/repository_spec.rb +1 -3
  531. data/spec/unit/hiera/scope_spec.rb +6 -2
  532. data/spec/unit/hiera_puppet_spec.rb +13 -6
  533. data/spec/unit/indirector/catalog/msgpack_spec.rb +12 -0
  534. data/spec/unit/indirector/catalog/static_compiler_spec.rb +42 -11
  535. data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
  536. data/spec/unit/indirector/facts/facter_spec.rb +5 -5
  537. data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -4
  538. data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
  539. data/spec/unit/indirector/file_server_spec.rb +4 -4
  540. data/spec/unit/indirector/json_spec.rb +6 -6
  541. data/spec/unit/indirector/key/file_spec.rb +8 -8
  542. data/spec/unit/indirector/msgpack_spec.rb +191 -0
  543. data/spec/unit/indirector/node/active_record_spec.rb +1 -1
  544. data/spec/unit/indirector/node/ldap_spec.rb +16 -7
  545. data/spec/unit/indirector/node/msgpack_spec.rb +24 -0
  546. data/spec/unit/indirector/node/plain_spec.rb +1 -1
  547. data/spec/unit/indirector/queue_spec.rb +1 -1
  548. data/spec/unit/indirector/report/msgpack_spec.rb +28 -0
  549. data/spec/unit/indirector/request_spec.rb +16 -8
  550. data/spec/unit/indirector/rest_spec.rb +0 -4
  551. data/spec/unit/indirector/ssl_file_spec.rb +12 -11
  552. data/spec/unit/indirector/yaml_spec.rb +4 -4
  553. data/spec/unit/man_spec.rb +32 -0
  554. data/spec/unit/module_spec.rb +60 -46
  555. data/spec/unit/module_tool/applications/checksummer_spec.rb +1 -1
  556. data/spec/unit/module_tool/applications/installer_spec.rb +53 -16
  557. data/spec/unit/module_tool/applications/uninstaller_spec.rb +26 -25
  558. data/spec/unit/module_tool/tar_spec.rb +1 -1
  559. data/spec/unit/module_tool_spec.rb +17 -90
  560. data/spec/unit/network/authconfig_spec.rb +3 -4
  561. data/spec/unit/network/authentication_spec.rb +20 -6
  562. data/spec/unit/network/authorization_spec.rb +11 -1
  563. data/spec/unit/network/formats_spec.rb +32 -9
  564. data/spec/unit/network/http/api/v1_spec.rb +365 -62
  565. data/spec/unit/network/http/api/v2/authorization_spec.rb +57 -0
  566. data/spec/unit/network/http/api/v2/environments_spec.rb +42 -0
  567. data/spec/unit/network/http/api/v2_spec.rb +14 -0
  568. data/spec/unit/network/http/connection_spec.rb +39 -5
  569. data/spec/unit/network/http/error_spec.rb +30 -0
  570. data/spec/unit/network/http/handler_spec.rb +69 -419
  571. data/spec/unit/network/http/rack/rest_spec.rb +20 -28
  572. data/spec/unit/network/http/route_spec.rb +75 -0
  573. data/spec/unit/network/http/webrick/rest_spec.rb +21 -58
  574. data/spec/unit/network/http_pool_spec.rb +3 -3
  575. data/spec/unit/network/rights_spec.rb +2 -2
  576. data/spec/unit/node/environment_spec.rb +108 -89
  577. data/spec/unit/node/facts_spec.rb +5 -12
  578. data/spec/unit/node_spec.rb +22 -22
  579. data/spec/unit/parser/ast/collection_spec.rb +1 -1
  580. data/spec/unit/parser/ast/leaf_spec.rb +2 -0
  581. data/spec/unit/parser/ast/resource_spec.rb +1 -1
  582. data/spec/unit/parser/compiler_spec.rb +5 -3
  583. data/spec/unit/parser/files_spec.rb +40 -50
  584. data/spec/unit/parser/functions/defined_spec.rb +80 -18
  585. data/spec/unit/parser/functions/epp_spec.rb +88 -0
  586. data/spec/unit/parser/functions/fqdn_rand_spec.rb +4 -1
  587. data/spec/unit/parser/functions/generate_spec.rb +6 -2
  588. data/spec/unit/parser/functions/hiera_array_spec.rb +5 -2
  589. data/spec/unit/parser/functions/hiera_hash_spec.rb +4 -1
  590. data/spec/unit/parser/functions/hiera_include_spec.rb +6 -3
  591. data/spec/unit/parser/functions/hiera_spec.rb +5 -2
  592. data/spec/unit/parser/functions/include_spec.rb +0 -1
  593. data/spec/unit/parser/functions/inline_epp_spec.rb +82 -0
  594. data/spec/unit/parser/functions/lookup_spec.rb +66 -16
  595. data/spec/unit/parser/functions_spec.rb +25 -91
  596. data/spec/unit/parser/lexer_spec.rb +1 -1
  597. data/spec/unit/parser/methods/filter_spec.rb +56 -0
  598. data/spec/unit/parser/methods/map_spec.rb +94 -5
  599. data/spec/unit/parser/methods/reduce_spec.rb +10 -0
  600. data/spec/unit/parser/methods/shared.rb +2 -18
  601. data/spec/unit/parser/methods/slice_spec.rb +39 -1
  602. data/spec/unit/parser/parser_spec.rb +14 -10
  603. data/spec/unit/parser/resource_spec.rb +3 -9
  604. data/spec/unit/parser/scope_spec.rb +81 -78
  605. data/spec/unit/parser/type_loader_spec.rb +0 -4
  606. data/spec/unit/pops/benchmark_spec.rb +142 -0
  607. data/spec/unit/pops/binder/binder_spec.rb +15 -34
  608. data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -41
  609. data/spec/unit/pops/binder/bindings_composer_spec.rb +6 -31
  610. data/spec/unit/pops/binder/config/binder_config_spec.rb +5 -18
  611. data/spec/unit/pops/binder/injector_spec.rb +76 -81
  612. data/spec/unit/pops/evaluator/access_ops_spec.rb +376 -0
  613. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +77 -0
  614. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +103 -0
  615. data/spec/unit/pops/evaluator/collections_ops_spec.rb +111 -0
  616. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +256 -0
  617. data/spec/unit/pops/evaluator/conditionals_spec.rb +190 -0
  618. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1045 -0
  619. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +75 -0
  620. data/spec/unit/pops/evaluator/logical_ops_spec.rb +90 -0
  621. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +44 -0
  622. data/spec/unit/pops/evaluator/variables_spec.rb +194 -0
  623. data/spec/unit/pops/factory_spec.rb +6 -29
  624. data/spec/unit/pops/issues_spec.rb +1 -1
  625. data/spec/unit/pops/model/ast_transformer_spec.rb +6 -9
  626. data/spec/unit/pops/model/model_spec.rb +2 -2
  627. data/spec/unit/pops/parser/epp_parser_spec.rb +86 -0
  628. data/spec/unit/pops/parser/evaluating_parser_spec.rb +4 -2
  629. data/spec/unit/pops/parser/lexer2_spec.rb +428 -0
  630. data/spec/unit/pops/parser/lexer_spec.rb +25 -86
  631. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +29 -4
  632. data/spec/unit/pops/parser/parse_calls_spec.rb +10 -6
  633. data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -9
  634. data/spec/unit/pops/parser/parse_containers_spec.rb +43 -12
  635. data/spec/unit/pops/parser/parse_heredoc_spec.rb +73 -0
  636. data/spec/unit/pops/parser/parse_resource_spec.rb +14 -0
  637. data/spec/unit/pops/parser/parser_spec.rb +3 -1
  638. data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +4 -4
  639. data/spec/unit/pops/transformer/transform_calls_spec.rb +41 -6
  640. data/spec/unit/pops/transformer/transform_conditionals_spec.rb +0 -9
  641. data/spec/unit/pops/transformer/transform_containers_spec.rb +12 -4
  642. data/spec/unit/pops/types/enumeration_spec.rb +50 -0
  643. data/spec/unit/pops/types/type_calculator_spec.rb +1171 -196
  644. data/spec/unit/pops/types/type_factory_spec.rb +108 -4
  645. data/spec/unit/pops/types/type_parser_spec.rb +114 -10
  646. data/spec/unit/pops/validator/validator_spec.rb +36 -1
  647. data/spec/unit/provider/augeas/augeas_spec.rb +39 -16
  648. data/spec/unit/provider/cron/parsed_spec.rb +27 -31
  649. data/spec/unit/provider/file/posix_spec.rb +2 -2
  650. data/spec/unit/provider/group/windows_adsi_spec.rb +1 -0
  651. data/spec/unit/provider/mount_spec.rb +12 -1
  652. data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
  653. data/spec/unit/provider/package/apt_spec.rb +1 -1
  654. data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
  655. data/spec/unit/provider/package/gem_spec.rb +12 -0
  656. data/spec/unit/provider/package/msi_spec.rb +4 -0
  657. data/spec/unit/provider/package/openbsd_spec.rb +10 -10
  658. data/spec/unit/provider/package/pacman_spec.rb +36 -7
  659. data/spec/unit/provider/package/pkgin_spec.rb +57 -55
  660. data/spec/unit/provider/package/rpm_spec.rb +51 -6
  661. data/spec/unit/provider/service/base_spec.rb +4 -4
  662. data/spec/unit/provider/service/daemontools_spec.rb +8 -13
  663. data/spec/unit/provider/service/freebsd_spec.rb +3 -3
  664. data/spec/unit/provider/service/gentoo_spec.rb +24 -24
  665. data/spec/unit/provider/service/init_spec.rb +15 -15
  666. data/spec/unit/provider/service/openbsd_spec.rb +16 -16
  667. data/spec/unit/provider/service/openrc_spec.rb +20 -20
  668. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  669. data/spec/unit/provider/service/runit_spec.rb +5 -8
  670. data/spec/unit/provider/service/src_spec.rb +4 -4
  671. data/spec/unit/provider/service/systemd_spec.rb +24 -14
  672. data/spec/unit/provider/service/upstart_spec.rb +12 -4
  673. data/spec/unit/provider/service/windows_spec.rb +1 -1
  674. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +21 -23
  675. data/spec/unit/provider/user/directoryservice_spec.rb +7 -7
  676. data/spec/unit/provider/user/useradd_spec.rb +43 -15
  677. data/spec/unit/provider/user/windows_adsi_spec.rb +1 -0
  678. data/spec/unit/provider/yumrepo/inifile_spec.rb +105 -0
  679. data/spec/unit/provider/zone/solaris_spec.rb +1 -1
  680. data/spec/unit/provider_spec.rb +120 -62
  681. data/spec/unit/rails/host_spec.rb +1 -1
  682. data/spec/unit/rails/param_value_spec.rb +4 -0
  683. data/spec/unit/relationship_spec.rb +4 -4
  684. data/spec/unit/reports/http_spec.rb +14 -3
  685. data/spec/unit/reports/rrdgraph_spec.rb +0 -1
  686. data/spec/unit/reports/store_spec.rb +2 -2
  687. data/spec/unit/resource/catalog_spec.rb +17 -29
  688. data/spec/unit/resource/status_spec.rb +1 -1
  689. data/spec/unit/resource/type_collection_spec.rb +28 -47
  690. data/spec/unit/resource/type_spec.rb +12 -23
  691. data/spec/unit/resource_spec.rb +54 -93
  692. data/spec/unit/run_spec.rb +3 -3
  693. data/spec/unit/settings/autosign_setting_spec.rb +1 -1
  694. data/spec/unit/settings/config_file_spec.rb +68 -15
  695. data/spec/unit/settings/file_setting_spec.rb +2 -2
  696. data/spec/unit/settings/ini_file_spec.rb +184 -0
  697. data/spec/unit/settings_spec.rb +137 -79
  698. data/spec/unit/ssl/certificate_authority/interface_spec.rb +3 -1
  699. data/spec/unit/ssl/certificate_authority_spec.rb +11 -9
  700. data/spec/unit/ssl/certificate_factory_spec.rb +19 -4
  701. data/spec/unit/ssl/certificate_request_attributes_spec.rb +1 -1
  702. data/spec/unit/ssl/certificate_revocation_list_spec.rb +101 -72
  703. data/spec/unit/ssl/host_spec.rb +8 -20
  704. data/spec/unit/ssl/inventory_spec.rb +2 -2
  705. data/spec/unit/ssl/key_spec.rb +4 -4
  706. data/spec/unit/status_spec.rb +6 -4
  707. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -11
  708. data/spec/unit/transaction/event_spec.rb +2 -2
  709. data/spec/unit/transaction/report_spec.rb +24 -15
  710. data/spec/unit/transaction/resource_harness_spec.rb +1 -1
  711. data/spec/unit/type/cron_spec.rb +39 -1
  712. data/spec/unit/type/file/content_spec.rb +4 -5
  713. data/spec/unit/type/file/ctime_spec.rb +1 -1
  714. data/spec/unit/type/file/mode_spec.rb +5 -4
  715. data/spec/unit/type/file/mtime_spec.rb +1 -1
  716. data/spec/unit/type/file/source_spec.rb +30 -7
  717. data/spec/unit/type/file_spec.rb +8 -8
  718. data/spec/unit/type/k5login_spec.rb +3 -3
  719. data/spec/unit/type/nagios_spec.rb +6 -0
  720. data/spec/unit/type/package/package_settings_spec.rb +135 -0
  721. data/spec/unit/type/package_spec.rb +13 -1
  722. data/spec/unit/type/resources_spec.rb +155 -0
  723. data/spec/unit/type/service_spec.rb +3 -3
  724. data/spec/unit/type/ssh_authorized_key_spec.rb +96 -93
  725. data/spec/unit/type/sshkey_spec.rb +39 -30
  726. data/spec/unit/type/tidy_spec.rb +19 -12
  727. data/spec/unit/type/user_spec.rb +47 -2
  728. data/spec/unit/type/whit_spec.rb +2 -2
  729. data/spec/unit/type/yumrepo_spec.rb +32 -177
  730. data/spec/unit/type/zone_spec.rb +2 -2
  731. data/spec/unit/type_spec.rb +11 -0
  732. data/spec/unit/util/adsi_spec.rb +48 -1
  733. data/spec/unit/util/autoload_spec.rb +24 -39
  734. data/spec/unit/util/backups_spec.rb +25 -28
  735. data/spec/unit/util/checksums_spec.rb +1 -3
  736. data/spec/unit/util/colors_spec.rb +14 -0
  737. data/spec/unit/util/docs_spec.rb +9 -0
  738. data/spec/unit/util/execution_spec.rb +1 -1
  739. data/spec/unit/util/filetype_spec.rb +7 -7
  740. data/spec/unit/util/instrumentation/data_spec.rb +3 -1
  741. data/spec/unit/util/instrumentation/indirection_probe_spec.rb +2 -0
  742. data/spec/unit/util/instrumentation/listener_spec.rb +3 -2
  743. data/spec/unit/util/json_lockfile_spec.rb +25 -4
  744. data/spec/unit/util/lockfile_spec.rb +49 -7
  745. data/spec/unit/util/log/destinations_spec.rb +1 -0
  746. data/spec/unit/util/log_spec.rb +1 -1
  747. data/spec/unit/util/metric_spec.rb +1 -1
  748. data/spec/unit/util/pidlock_spec.rb +6 -6
  749. data/spec/unit/util/pson_spec.rb +2 -2
  750. data/spec/unit/util/rdoc/parser_spec.rb +32 -29
  751. data/spec/unit/util/resource_template_spec.rb +3 -3
  752. data/spec/unit/util/selinux_spec.rb +5 -5
  753. data/spec/unit/util/storage_spec.rb +4 -4
  754. data/spec/unit/util/tag_set_spec.rb +1 -1
  755. data/spec/unit/util/watcher_spec.rb +1 -4
  756. data/spec/unit/util/yaml_spec.rb +2 -2
  757. data/spec/unit/util_spec.rb +7 -7
  758. data/tasks/benchmark.rake +0 -1
  759. data/tasks/parallel.rake +408 -0
  760. data/tasks/yard.rake +59 -0
  761. metadata +2889 -2782
  762. checksums.yaml +0 -7
  763. data/README_DEVELOPER.md +0 -809
  764. data/lib/puppet/file_system/file.rb +0 -271
  765. data/lib/puppet/network/http/rack/httphandler.rb +0 -13
  766. data/lib/puppet/pops/binder/hiera2.rb +0 -10
  767. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +0 -148
  768. data/lib/puppet/pops/binder/hiera2/config.rb +0 -69
  769. data/lib/puppet/pops/binder/hiera2/config_checker.rb +0 -68
  770. data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +0 -36
  771. data/lib/puppet/pops/binder/hiera2/issues.rb +0 -67
  772. data/lib/puppet/pops/binder/hiera2/json_backend.rb +0 -18
  773. data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +0 -21
  774. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +0 -67
  775. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +0 -92
  776. data/lib/puppet/pops/parser/grammar.ra +0 -746
  777. data/lib/puppet/provider/port/parsed.rb +0 -173
  778. data/lib/puppet/type/port.rb +0 -119
  779. data/lib/puppetx/puppet/hiera2_backend.rb +0 -31
  780. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +0 -18
  781. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +0 -8
  782. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +0 -1
  783. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +0 -10
  784. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +0 -1
  785. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +0 -11
  786. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +0 -1
  787. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +0 -3
  788. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +0 -13
  789. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +0 -4
  790. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +0 -11
  791. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +0 -1
  792. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +0 -3
  793. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +0 -9
  794. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +0 -2
  795. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +0 -11
  796. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +0 -9
  797. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +0 -9
  798. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +0 -5
  799. data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +0 -10
  800. data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +0 -8
  801. data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +0 -1
  802. data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +0 -7
  803. data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +0 -4
  804. data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +0 -2
  805. data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +0 -8
  806. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +0 -1
  807. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +0 -2
  808. data/spec/unit/file_system/file_spec.rb +0 -486
  809. data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +0 -74
  810. data/spec/unit/pops/binder/hiera2/config_spec.rb +0 -61
  811. data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +0 -33
@@ -57,9 +57,9 @@ use your local file bucket by specifying '--local'.
57
57
 
58
58
  OPTIONS
59
59
  -------
60
- Note that any configuration parameter that's valid in the configuration
60
+ Note that any setting that's valid in the configuration
61
61
  file is also a valid long argument. For example, 'ssldir' is a valid
62
- configuration parameter, so you can specify '--ssldir <directory>' as an
62
+ setting, so you can specify '--ssldir <directory>' as an
63
63
  argument.
64
64
 
65
65
  See the configuration file documentation at
@@ -129,7 +129,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
129
129
  raise "You must specify a file to back up" unless args.length > 0
130
130
 
131
131
  args.each do |file|
132
- unless Puppet::FileSystem::File.exist?(file)
132
+ unless Puppet::FileSystem.exist?(file)
133
133
  $stderr.puts "#{file}: no such file"
134
134
  next
135
135
  end
@@ -102,9 +102,9 @@ about security settings.
102
102
 
103
103
  OPTIONS
104
104
  -------
105
- Note that any configuration parameter that's valid in the configuration
105
+ Note that any setting that's valid in the configuration
106
106
  file is also a valid long argument. For example, 'ssldir' is a valid
107
- configuration parameter, so you can specify '--ssldir <directory>' as an
107
+ setting, so you can specify '--ssldir <directory>' as an
108
108
  argument.
109
109
 
110
110
  See the configuration file documentation at
@@ -170,7 +170,7 @@ Copyright (c) 2012 Puppet Labs, LLC Licensed under the Apache 2.0 License
170
170
 
171
171
  puts PSON::pretty_generate(catalog.to_resource, :allow_nan => true, :max_nesting => false)
172
172
  rescue => detail
173
- $stderr.puts detail
173
+ Puppet.log_exception(detail, "Failed to compile catalog for node #{options[:node]}: #{detail}")
174
174
  exit(30)
175
175
  end
176
176
  exit(0)
@@ -42,13 +42,13 @@ class Puppet::Application::Queue < Puppet::Application
42
42
  def help
43
43
  <<-HELP
44
44
 
45
- puppet-queue(8) -- Queuing daemon for asynchronous storeconfigs
45
+ puppet-queue(8) -- Deprecated queuing daemon for asynchronous storeconfigs
46
46
  ========
47
47
 
48
48
  SYNOPSIS
49
49
  --------
50
50
  Retrieves serialized storeconfigs records from a queue and processes
51
- them in order.
51
+ them in order. THIS FEATURE IS DEPRECATED; use PuppetDB instead.
52
52
 
53
53
 
54
54
  USAGE
@@ -60,19 +60,19 @@ DESCRIPTION
60
60
  -----------
61
61
  This application runs as a daemon and processes storeconfigs data,
62
62
  retrieving the data from a stomp server message queue and writing it to
63
- a database.
63
+ a database. It was once necessary as a workaround for the poor performance
64
+ of ActiveRecord-based storeconfigs, but has been supplanted by the PuppetDB
65
+ service, which gives better performance with less complexity.
64
66
 
65
- For more information, including instructions for properly setting up
66
- your puppet master and message queue, see the documentation on setting
67
- up asynchronous storeconfigs at:
68
- http://projects.puppetlabs.com/projects/1/wiki/Using_Stored_Configuration
67
+ For more information, see the PuppetDB documentation at
68
+ http://docs.puppetlabs.com/puppetdb/latest
69
69
 
70
70
 
71
71
  OPTIONS
72
72
  -------
73
- Note that any configuration parameter that's valid in the configuration
73
+ Note that any setting that's valid in the configuration
74
74
  file is also a valid long argument. For example, 'server' is a valid
75
- configuration parameter, so you can specify '--server <servername>' as
75
+ setting, so you can specify '--server <servername>' as
76
76
  an argument.
77
77
 
78
78
  See the configuration file documentation at
@@ -71,9 +71,9 @@ and then apply the saved file as a Puppet transaction.
71
71
 
72
72
  OPTIONS
73
73
  -------
74
- Note that any configuration parameter that's valid in the configuration
74
+ Note that any setting that's valid in the configuration
75
75
  file is also a valid long argument. For example, 'ssldir' is a valid
76
- configuration parameter, so you can specify '--ssldir <directory>' as an
76
+ setting, so you can specify '--ssldir <directory>' as an
77
77
  argument.
78
78
 
79
79
  See the configuration file documentation at
@@ -74,7 +74,7 @@ class Puppet::Bindings
74
74
  end
75
75
 
76
76
  def self.register_proc(name, block)
77
- adapter = NamedBindingsAdapter.adapt(Environment.current)
77
+ adapter = NamedBindingsAdapter.adapt(Puppet.lookup(:current_environment))
78
78
  adapter[name] = block
79
79
  end
80
80
 
@@ -83,7 +83,7 @@ class Puppet::Bindings
83
83
  # @api public
84
84
  #
85
85
  def self.register(named_bindings)
86
- adapter = NamedBindingsAdapter.adapt(Environment.current)
86
+ adapter = NamedBindingsAdapter.adapt(Puppet.lookup(:current_environment))
87
87
  adapter[named_bindings.name] = named_bindings
88
88
  end
89
89
 
@@ -91,7 +91,7 @@ class Puppet::Bindings
91
91
  entry = get(name)
92
92
  return entry unless entry.is_a?(Proc)
93
93
  named_bindings = Puppet::Pops::Binder::BindingsFactory.safe_named_bindings(name, scope, &entry).model
94
- adapter = NamedBindingsAdapter.adapt(Environment.current)
94
+ adapter = NamedBindingsAdapter.adapt(Puppet.lookup(:current_environment))
95
95
  adapter[named_bindings.name] = named_bindings
96
96
  named_bindings
97
97
  end
@@ -102,7 +102,7 @@ class Puppet::Bindings
102
102
  # @api public
103
103
  #
104
104
  def self.get(name)
105
- adapter = NamedBindingsAdapter.adapt(Environment.current)
105
+ adapter = NamedBindingsAdapter.adapt(Puppet.lookup(:current_environment))
106
106
  adapter[name]
107
107
  end
108
108
 
@@ -112,7 +112,7 @@ class Puppet::Bindings
112
112
 
113
113
  # Supports Enumerable iteration (k,v) over the named bindings hash.
114
114
  def self.each
115
- adapter = NamedBindingsAdapter.adapt(Environment.current)
115
+ adapter = NamedBindingsAdapter.adapt(Puppet.lookup(:current_environment))
116
116
  adapter.each_pair {|k,v| yield k,v }
117
117
  end
118
118
 
@@ -144,4 +144,4 @@ class Puppet::Bindings
144
144
  end
145
145
  end
146
146
 
147
- end
147
+ end
@@ -44,10 +44,10 @@ class Puppet::Configurer
44
44
  rescue => detail
45
45
  Puppet.log_exception(detail, "Removing corrupt state file #{Puppet[:statefile]}: #{detail}")
46
46
  begin
47
- Puppet::FileSystem::File.unlink(Puppet[:statefile])
47
+ Puppet::FileSystem.unlink(Puppet[:statefile])
48
48
  retry
49
49
  rescue => detail
50
- raise Puppet::Error.new("Cannot remove #{Puppet[:statefile]}: #{detail}")
50
+ raise Puppet::Error.new("Cannot remove #{Puppet[:statefile]}: #{detail}", detail)
51
51
  end
52
52
  end
53
53
 
@@ -148,20 +148,23 @@ class Puppet::Configurer
148
148
  query_options = get_facts(options)
149
149
  end
150
150
 
151
- begin
152
- if node = Puppet::Node.indirection.find(Puppet[:node_name_value],
153
- :environment => @environment, :ignore_cache => true)
154
- if node.environment.to_s != @environment
155
- Puppet.warning "Local environment: \"#{@environment}\" doesn't match server specified node environment \"#{node.environment}\", switching agent to \"#{node.environment}\"."
156
- @environment = node.environment.to_s
157
- query_options = nil
151
+ # We only need to find out the environment to run in if we don't already have a catalog
152
+ unless options[:catalog]
153
+ begin
154
+ if node = Puppet::Node.indirection.find(Puppet[:node_name_value],
155
+ :environment => @environment, :ignore_cache => true)
156
+ if node.environment.to_s != @environment
157
+ Puppet.warning "Local environment: \"#{@environment}\" doesn't match server specified node environment \"#{node.environment}\", switching agent to \"#{node.environment}\"."
158
+ @environment = node.environment.to_s
159
+ query_options = nil
160
+ end
158
161
  end
162
+ rescue SystemExit,NoMemoryError
163
+ raise
164
+ rescue Exception => detail
165
+ Puppet.warning("Unable to fetch my node definition, but the agent run will continue:")
166
+ Puppet.warning(detail)
159
167
  end
160
- rescue SystemExit,NoMemoryError
161
- raise
162
- rescue Exception => detail
163
- Puppet.warning("Unable to fetch my node definition, but the agent run will continue:")
164
- Puppet.warning(detail)
165
168
  end
166
169
 
167
170
  query_options = get_facts(options) unless query_options
@@ -23,7 +23,7 @@ module Puppet::Configurer::FactHandler
23
23
  rescue Exception => detail
24
24
  message = "Could not retrieve local facts: #{detail}"
25
25
  Puppet.log_exception(detail, message)
26
- raise Puppet::Error, message
26
+ raise Puppet::Error, message, detail.backtrace
27
27
  end
28
28
  end
29
29
 
@@ -0,0 +1,26 @@
1
+ class Puppet::Confine::Any < Puppet::Confine
2
+ def self.summarize(confines)
3
+ confines.inject(0) { |count, confine| count + confine.summary }
4
+ end
5
+
6
+ def pass?(value)
7
+ !! value
8
+ end
9
+
10
+ def message(value)
11
+ "0 confines (of #{value.length}) were true"
12
+ end
13
+
14
+ def summary
15
+ result.find_all { |v| v == true }.length
16
+ end
17
+
18
+ def valid?
19
+ if @values.any? { |value| pass?(value) }
20
+ true
21
+ else
22
+ Puppet.debug("#{label}: #{message(@values)}")
23
+ false
24
+ end
25
+ end
26
+ end
@@ -6,7 +6,7 @@ class Puppet::Confine::Exists < Puppet::Confine
6
6
  end
7
7
 
8
8
  def pass?(value)
9
- value && (for_binary? ? which(value) : Puppet::FileSystem::File.exist?(value))
9
+ value && (for_binary? ? which(value) : Puppet::FileSystem.exist?(value))
10
10
  end
11
11
 
12
12
  def message(value)
@@ -13,6 +13,7 @@ module Puppet::Confiner
13
13
  # * `:true` => a predicate code block returning true
14
14
  # * `:false` => a predicate code block returning false
15
15
  # * `:feature` => name of system feature that must be present
16
+ # * `:any` => an array of expressions that will be ORed together
16
17
  #
17
18
  # @example
18
19
  # confine :operatingsystem => [:redhat, :fedora]
@@ -0,0 +1,55 @@
1
+ # Puppet::Context is a system for tracking services and contextual information
2
+ # that puppet needs to be able to run. Values are "bound" in a context when it is created
3
+ # and cannot be changed; however a child context can be created, using
4
+ # {#override}, that provides a different value.
5
+ #
6
+ # @api private
7
+ class Puppet::Context
8
+ require 'puppet/context/trusted_information'
9
+
10
+ class UndefinedBindingError < Puppet::Error; end
11
+ class StackUnderflow < Puppet::Error; end
12
+
13
+ # @api private
14
+ def initialize(initial_bindings)
15
+ @stack = []
16
+ @table = initial_bindings
17
+ @description = "root"
18
+ end
19
+
20
+ # @api private
21
+ def push(overrides, description = "")
22
+ @stack.push([@table, @description])
23
+ @table = @table.merge(overrides || {})
24
+ @description = description
25
+ end
26
+
27
+ # @api private
28
+ def pop
29
+ if @stack.empty?
30
+ raise(StackUnderflow, "Attempted to pop, but already at root of the context stack.")
31
+ else
32
+ (@table, @description) = @stack.pop
33
+ end
34
+ end
35
+
36
+ # @api private
37
+ def lookup(name, &block)
38
+ if @table.include?(name)
39
+ @table[name]
40
+ elsif block
41
+ block.call
42
+ else
43
+ raise UndefinedBindingError, "no '#{name}' in #{@table.inspect} at top of #{@stack.inspect}"
44
+ end
45
+ end
46
+
47
+ # @api private
48
+ def override(bindings, description = "", &block)
49
+ push(bindings, description)
50
+
51
+ yield
52
+ ensure
53
+ pop
54
+ end
55
+ end
@@ -0,0 +1,56 @@
1
+ # @api private
2
+ class Puppet::Context::TrustedInformation
3
+ # one of 'remote', 'local', or false, where 'remote' is authenticated via cert,
4
+ # 'local' is trusted by virtue of running on the same machine (not a remote
5
+ # request), and false is an unauthenticated remote request.
6
+ #
7
+ # @return [String, Boolean]
8
+ attr_reader :authenticated
9
+
10
+ # The validated certificate name used for the request
11
+ #
12
+ # @return [String]
13
+ attr_reader :certname
14
+
15
+ # Extra information that comes from the trusted certificate's extensions.
16
+ #
17
+ # @return [Hash{Object => Object}]
18
+ attr_reader :extensions
19
+
20
+ def initialize(authenticated, certname, extensions)
21
+ @authenticated = authenticated.freeze
22
+ @certname = certname.freeze
23
+ @extensions = extensions.freeze
24
+ end
25
+
26
+ def self.remote(authenticated, node_name, certificate)
27
+ if authenticated
28
+ extensions = {}
29
+ if certificate.nil?
30
+ Puppet.info('TrustedInformation expected a certificate, but none was given.')
31
+ else
32
+ extensions = Hash[certificate.custom_extensions.collect do |ext|
33
+ [ext['oid'].freeze, ext['value'].freeze]
34
+ end]
35
+ end
36
+ new('remote', node_name, extensions)
37
+ else
38
+ new(false, nil, {})
39
+ end
40
+ end
41
+
42
+ def self.local(node)
43
+ # Always trust local data by picking up the available parameters.
44
+ client_cert = node ? node.parameters['clientcert'] : nil
45
+
46
+ new('local', client_cert, {})
47
+ end
48
+
49
+ def to_h
50
+ {
51
+ 'authenticated'.freeze => authenticated,
52
+ 'certname'.freeze => certname,
53
+ 'extensions'.freeze => extensions
54
+ }.freeze
55
+ end
56
+ end
@@ -196,6 +196,11 @@ module Puppet
196
196
  is used to find modules and much more. For servers (i.e., `puppet master`)
197
197
  this provides the default environment for nodes we know nothing about."
198
198
  },
199
+ :environmentpath => {
200
+ :default => "$confdir/environments",
201
+ :desc => "A path of environment directories",
202
+ :type => :path,
203
+ },
199
204
  :diff_args => {
200
205
  :default => default_diffargs,
201
206
  :desc => "Which arguments to pass to the diff command when printing differences between
@@ -251,7 +256,7 @@ module Puppet
251
256
  :type => :terminus,
252
257
  :default => nil,
253
258
  :desc => "How to store cached nodes.
254
- Valid values are (none), 'json', 'yaml' or write only yaml ('write_only_yaml').
259
+ Valid values are (none), 'json', 'msgpack', 'yaml' or write only yaml ('write_only_yaml').
255
260
  The master application defaults to 'write_only_yaml', all others to none.",
256
261
  },
257
262
  :data_binding_terminus => {
@@ -266,8 +271,9 @@ module Puppet
266
271
  },
267
272
  :binder => {
268
273
  :default => false,
269
- :desc => "Turns the binding system on or off. This includes hiera-2 and data in modules. The binding system aggregates data from
270
- modules and other locations and makes them available for lookup. The binding system is experimental and any or all of it may change.",
274
+ :desc => "Turns the binding system on or off. This includes bindings in modules.
275
+ The binding system aggregates data from modules and other locations and makes them available for lookup.
276
+ The binding system is experimental and any or all of it may change.",
271
277
  :type => :boolean,
272
278
  },
273
279
  :binder_config => {
@@ -286,7 +292,7 @@ module Puppet
286
292
  :catalog_cache_terminus => {
287
293
  :type => :terminus,
288
294
  :default => nil,
289
- :desc => "How to store cached catalogs. Valid values are 'json' and 'yaml'. The agent application defaults to 'json'."
295
+ :desc => "How to store cached catalogs. Valid values are 'json', 'msgpack' and 'yaml'. The agent application defaults to 'json'."
290
296
  },
291
297
  :facts_terminus => {
292
298
  :default => 'facter',
@@ -358,11 +364,11 @@ module Puppet
358
364
  :hook => proc do |value|
359
365
  if value
360
366
  # This reconfigures the termini for Node, Facts, and Catalog
361
- Puppet.settings[:storeconfigs] = true
367
+ Puppet.settings.override_default(:storeconfigs, true)
362
368
 
363
369
  # But then we modify the configuration
364
370
  Puppet::Resource::Catalog.indirection.cache_class = :queue
365
- Puppet.settings[:catalog_cache_terminus] = :queue
371
+ Puppet.settings.override_default(:catalog_cache_terminus, :queue)
366
372
  else
367
373
  raise "Cannot disable asynchronous storeconfigs in a running process"
368
374
  end
@@ -377,7 +383,7 @@ module Puppet
377
383
  `active_record` backend, but will disable external tools that search the storeconfigs database.
378
384
  Thinning catalogs is generally unnecessary when using PuppetDB to store catalogs.",
379
385
  :hook => proc do |value|
380
- Puppet.settings[:storeconfigs] = true if value
386
+ Puppet.settings.override_default(:storeconfigs, true) if value
381
387
  end
382
388
  },
383
389
  :config_version => {
@@ -421,6 +427,11 @@ module Puppet
421
427
  :type => :boolean,
422
428
  :desc => "Stores trusted node data in a hash called $trusted.
423
429
  When true also prevents $trusted from being overridden in any scope.",
430
+ },
431
+ :immutable_node_data => {
432
+ :default => '$trusted_node_data',
433
+ :type => :boolean,
434
+ :desc => "When true, also prevents $trusted and $facts from being overridden in any scope",
424
435
  }
425
436
  )
426
437
  Puppet.define_settings(:module_tool,
@@ -533,7 +544,9 @@ EOT
533
544
  :certdir => {
534
545
  :default => "$ssldir/certs",
535
546
  :type => :directory,
547
+ :mode => 0755,
536
548
  :owner => "service",
549
+ :group => "service",
537
550
  :desc => "The certificate directory."
538
551
  },
539
552
  :ssldir => {
@@ -541,18 +554,23 @@ EOT
541
554
  :type => :directory,
542
555
  :mode => 0771,
543
556
  :owner => "service",
557
+ :group => "service",
544
558
  :desc => "Where SSL certificates are kept."
545
559
  },
546
560
  :publickeydir => {
547
561
  :default => "$ssldir/public_keys",
548
562
  :type => :directory,
563
+ :mode => 0755,
549
564
  :owner => "service",
565
+ :group => "service",
550
566
  :desc => "The public key directory."
551
567
  },
552
568
  :requestdir => {
553
569
  :default => "$ssldir/certificate_requests",
554
570
  :type => :directory,
571
+ :mode => 0755,
555
572
  :owner => "service",
573
+ :group => "service",
556
574
  :desc => "Where host certificate requests are stored."
557
575
  },
558
576
  :privatekeydir => {
@@ -560,6 +578,7 @@ EOT
560
578
  :type => :directory,
561
579
  :mode => 0750,
562
580
  :owner => "service",
581
+ :group => "service",
563
582
  :desc => "The private key directory."
564
583
  },
565
584
  :privatedir => {
@@ -567,6 +586,7 @@ EOT
567
586
  :type => :directory,
568
587
  :mode => 0750,
569
588
  :owner => "service",
589
+ :group => "service",
570
590
  :desc => "Where the client stores private certificate information."
571
591
  },
572
592
  :passfile => {
@@ -574,6 +594,7 @@ EOT
574
594
  :type => :file,
575
595
  :mode => 0640,
576
596
  :owner => "service",
597
+ :group => "service",
577
598
  :desc => "Where puppet agent stores the password for its private key.
578
599
  Generally unused."
579
600
  },
@@ -582,6 +603,7 @@ EOT
582
603
  :type => :file,
583
604
  :mode => 0644,
584
605
  :owner => "service",
606
+ :group => "service",
585
607
  :desc => "Where individual hosts store and look for their certificate requests."
586
608
  },
587
609
  :hostcert => {
@@ -589,13 +611,15 @@ EOT
589
611
  :type => :file,
590
612
  :mode => 0644,
591
613
  :owner => "service",
614
+ :group => "service",
592
615
  :desc => "Where individual hosts store and look for their certificates."
593
616
  },
594
617
  :hostprivkey => {
595
618
  :default => "$privatekeydir/$certname.pem",
596
619
  :type => :file,
597
- :mode => 0600,
620
+ :mode => 0640,
598
621
  :owner => "service",
622
+ :group => "service",
599
623
  :desc => "Where individual hosts store and look for their private key."
600
624
  },
601
625
  :hostpubkey => {
@@ -603,6 +627,7 @@ EOT
603
627
  :type => :file,
604
628
  :mode => 0644,
605
629
  :owner => "service",
630
+ :group => "service",
606
631
  :desc => "Where individual hosts store and look for their public key."
607
632
  },
608
633
  :localcacert => {
@@ -610,14 +635,16 @@ EOT
610
635
  :type => :file,
611
636
  :mode => 0644,
612
637
  :owner => "service",
638
+ :group => "service",
613
639
  :desc => "Where each client stores the CA certificate."
614
640
  },
615
641
  :ssl_client_ca_auth => {
616
642
  :type => :file,
617
643
  :mode => 0644,
618
644
  :owner => "service",
645
+ :group => "service",
619
646
  :desc => "Certificate authorities who issue server certificates. SSL servers will not be
620
- considered authentic unless they posses a certificate issued by an authority
647
+ considered authentic unless they possess a certificate issued by an authority
621
648
  listed in this file. If this setting has no value then the Puppet master's CA
622
649
  certificate (localcacert) will be used."
623
650
  },
@@ -625,8 +652,9 @@ EOT
625
652
  :type => :file,
626
653
  :mode => 0644,
627
654
  :owner => "service",
655
+ :group => "service",
628
656
  :desc => "Certificate authorities who issue client certificates. SSL clients will not be
629
- considered authentic unless they posses a certificate issued by an authority
657
+ considered authentic unless they possess a certificate issued by an authority
630
658
  listed in this file. If this setting has no value then the Puppet master's CA
631
659
  certificate (localcacert) will be used."
632
660
  },
@@ -635,6 +663,7 @@ EOT
635
663
  :type => :file,
636
664
  :mode => 0644,
637
665
  :owner => "service",
666
+ :group => "service",
638
667
  :desc => "Where the host's certificate revocation list can be found.
639
668
  This is distinct from the certificate authority's CRL."
640
669
  },
@@ -664,7 +693,7 @@ EOT
664
693
  :type => :directory,
665
694
  :owner => "service",
666
695
  :group => "service",
667
- :mode => 0770,
696
+ :mode => 0755,
668
697
  :desc => "The root directory for the certificate authority."
669
698
  },
670
699
  :cacert => {
@@ -672,7 +701,7 @@ EOT
672
701
  :type => :file,
673
702
  :owner => "service",
674
703
  :group => "service",
675
- :mode => 0660,
704
+ :mode => 0644,
676
705
  :desc => "The CA certificate."
677
706
  },
678
707
  :cakey => {
@@ -680,7 +709,7 @@ EOT
680
709
  :type => :file,
681
710
  :owner => "service",
682
711
  :group => "service",
683
- :mode => 0660,
712
+ :mode => 0640,
684
713
  :desc => "The CA private key."
685
714
  },
686
715
  :capub => {
@@ -688,6 +717,7 @@ EOT
688
717
  :type => :file,
689
718
  :owner => "service",
690
719
  :group => "service",
720
+ :mode => 0644,
691
721
  :desc => "The CA public key."
692
722
  },
693
723
  :cacrl => {
@@ -695,8 +725,7 @@ EOT
695
725
  :type => :file,
696
726
  :owner => "service",
697
727
  :group => "service",
698
- :mode => 0664,
699
-
728
+ :mode => 0644,
700
729
  :desc => "The certificate revocation list (CRL) for the CA. Will be used if present but otherwise ignored.",
701
730
  },
702
731
  :caprivatedir => {
@@ -704,7 +733,7 @@ EOT
704
733
  :type => :directory,
705
734
  :owner => "service",
706
735
  :group => "service",
707
- :mode => 0770,
736
+ :mode => 0750,
708
737
  :desc => "Where the CA stores private certificate information."
709
738
  },
710
739
  :csrdir => {
@@ -712,6 +741,7 @@ EOT
712
741
  :type => :directory,
713
742
  :owner => "service",
714
743
  :group => "service",
744
+ :mode => 0755,
715
745
  :desc => "Where the CA stores certificate requests"
716
746
  },
717
747
  :signeddir => {
@@ -719,7 +749,7 @@ EOT
719
749
  :type => :directory,
720
750
  :owner => "service",
721
751
  :group => "service",
722
- :mode => 0770,
752
+ :mode => 0755,
723
753
  :desc => "Where the CA stores signed certificates."
724
754
  },
725
755
  :capass => {
@@ -727,7 +757,7 @@ EOT
727
757
  :type => :file,
728
758
  :owner => "service",
729
759
  :group => "service",
730
- :mode => 0660,
760
+ :mode => 0640,
731
761
  :desc => "Where the CA stores the password for the private key."
732
762
  },
733
763
  :serial => {
@@ -775,7 +805,7 @@ EOT
775
805
  :ca_ttl => {
776
806
  :default => "5y",
777
807
  :type => :duration,
778
- :desc => "The default TTL for new certificates. If this setting is set, ca_days is ignored.
808
+ :desc => "The default TTL for new certificates.
779
809
  #{AS_DURATION}"
780
810
  },
781
811
  :req_bits => {
@@ -841,7 +871,8 @@ EOT
841
871
  :manifest => {
842
872
  :default => "$manifestdir/site.pp",
843
873
  :type => :file,
844
- :desc => "The entry-point manifest for puppet master.",
874
+ :desc => "The entry-point manifest file for puppet master or a directory of manifests
875
+ to be evaluated in alphabetical order.",
845
876
  },
846
877
  :code => {
847
878
  :default => "",
@@ -902,9 +933,15 @@ EOT
902
933
  :type => :boolean,
903
934
  :desc => "Whether the master should function as a certificate authority.",
904
935
  },
905
- :modulepath => {
936
+ :basemodulepath => {
906
937
  :default => "$confdir/modules#{File::PATH_SEPARATOR}/usr/share/puppet/modules",
907
938
  :type => :path,
939
+ :desc => "The base non-environment specific search path for modules, included
940
+ also in all directory environment and default legacy environment modulepaths.",
941
+ },
942
+ :modulepath => {
943
+ :default => "$basemodulepath",
944
+ :type => :path,
908
945
  :desc => "The search path for modules, as a list of directories separated by the system
909
946
  path separator character. (The POSIX path separator is ':', and the
910
947
  Windows path separator is ';'.)",
@@ -1189,7 +1226,7 @@ EOT
1189
1226
  :hook => proc { |value|
1190
1227
  if value
1191
1228
  Puppet.deprecation_warning "Setting 'catalog_format' is deprecated; use 'preferred_serialization_format' instead."
1192
- Puppet.settings[:preferred_serialization_format] = value
1229
+ Puppet.settings.override_default(:preferred_serialization_format, value)
1193
1230
  end
1194
1231
  }
1195
1232
  },
@@ -1711,7 +1748,7 @@ EOT
1711
1748
  if value
1712
1749
  if not Puppet.settings[:async_storeconfigs]
1713
1750
  Puppet::Resource::Catalog.indirection.cache_class = :store_configs
1714
- Puppet.settings[:catalog_cache_terminus] = :store_configs
1751
+ Puppet.settings.override_default(:catalog_cache_terminus, :store_configs)
1715
1752
  end
1716
1753
  Puppet::Node::Facts.indirection.cache_class = :store_configs
1717
1754
 
@@ -1754,19 +1791,46 @@ EOT
1754
1791
  :default => "current",
1755
1792
  :desc => <<-'EOT'
1756
1793
  Selects the parser to use for parsing puppet manifests (in puppet DSL
1757
- language/'.pp' files). Available choices are `current` (the default),
1794
+ language/'.pp' files). Available choices are `current` (the default)
1758
1795
  and `future`.
1759
1796
 
1760
1797
  The `curent` parser means that the released version of the parser should
1761
1798
  be used.
1762
1799
 
1763
1800
  The `future` parser is a "time travel to the future" allowing early
1764
- exposure to new language features. What these fatures are will vary from
1801
+ exposure to new language features. What these features are will vary from
1765
1802
  release to release and they may be invididually configurable.
1766
1803
 
1767
1804
  Available Since Puppet 3.2.
1768
1805
  EOT
1769
1806
  },
1807
+ :evaluator => {
1808
+ :default => "future",
1809
+ :hook => proc do |value|
1810
+ if !['future', 'current'].include?(value)
1811
+ raise "evaluator can only be set to 'future' or 'current', got '#{value}'"
1812
+ end
1813
+ end,
1814
+ :desc => <<-'EOT'
1815
+ Which evaluator to use when compiling Puppet manifests. Valid values
1816
+ are `current` and `future` (the default).
1817
+
1818
+ **Note:** This setting is only used when `parser = future`. It allows
1819
+ testers to turn off the `future` evaluator when doing detailed tests and
1820
+ comparisons of the new compilation system.
1821
+
1822
+ Evaluation is the second stage of catalog compilation. After the parser
1823
+ converts a manifest to a model of expressions, the evaluator processes
1824
+ each expression. (For example, a resource declaration signals the
1825
+ evaluator to add a resource to the catalog).
1826
+
1827
+ The `future` parser and evaluator are slated to become default in Puppet
1828
+ 4. Their purpose is to add new features and improve consistency
1829
+ and reliability.
1830
+
1831
+ Available Since Puppet 3.5.
1832
+ EOT
1833
+ },
1770
1834
  :max_errors => {
1771
1835
  :default => 10,
1772
1836
  :desc => <<-'EOT'
@@ -1790,8 +1854,15 @@ EOT
1790
1854
  warnings in case multiple errors have been detected. A value of 0 is the
1791
1855
  same as value 1. The count is per manifest.
1792
1856
  EOT
1857
+ },
1858
+ :strict_variables => {
1859
+ :default => false,
1860
+ :type => :boolean,
1861
+ :desc => <<-'EOT'
1862
+ Makes the parser raise errors when referencing unknown variables. (This does not affect
1863
+ referencing variables that are explicitly set to undef).
1864
+ EOT
1793
1865
  }
1794
-
1795
1866
  )
1796
1867
  define_settings(:puppetdoc,
1797
1868
  :document_all => {