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
@@ -9,7 +9,7 @@ module Puppet
9
9
  end
10
10
 
11
11
  newproperty(:value) do
12
- desc "Whether the the SELinux boolean should be enabled or disabled."
12
+ desc "Whether the SELinux boolean should be enabled or disabled."
13
13
  newvalue(:on)
14
14
  newvalue(:off)
15
15
  end
@@ -42,7 +42,7 @@ Puppet::Type.newtype(:selmodule) do
42
42
 
43
43
  desc "If set to `true`, the policy will be reloaded if the
44
44
  version found in the on-disk file differs from the loaded
45
- version. If set to `false` (the default) the the only check
45
+ version. If set to `false` (the default) the only check
46
46
  that will be made is if the policy is loaded at all or not."
47
47
 
48
48
  newvalue(:true)
@@ -20,9 +20,10 @@ module Puppet
20
20
  newproperty(:type) do
21
21
  desc "The encryption type used: ssh-dss or ssh-rsa."
22
22
 
23
- newvalues :'ssh-dss', :'ssh-rsa', :'ecdsa-sha2-nistp256', :'ecdsa-sha2-nistp384', :'ecdsa-sha2-nistp521'
23
+ newvalues :'ssh-dss', :'ssh-rsa', :'ecdsa-sha2-nistp256', :'ecdsa-sha2-nistp384', :'ecdsa-sha2-nistp521', :'ssh-ed25519'
24
24
 
25
25
  aliasvalue(:dsa, :'ssh-dss')
26
+ aliasvalue(:ed25519, :'ssh-ed25519')
26
27
  aliasvalue(:rsa, :'ssh-rsa')
27
28
  end
28
29
 
@@ -9,9 +9,10 @@ module Puppet
9
9
  newproperty(:type) do
10
10
  desc "The encryption type used. Probably ssh-dss or ssh-rsa."
11
11
 
12
- newvalues :'ssh-dss', :'ssh-rsa', :'ecdsa-sha2-nistp256', :'ecdsa-sha2-nistp384', :'ecdsa-sha2-nistp521'
12
+ newvalues :'ssh-dss', :'ssh-ed25519', :'ssh-rsa', :'ecdsa-sha2-nistp256', :'ecdsa-sha2-nistp384', :'ecdsa-sha2-nistp521'
13
13
 
14
14
  aliasvalue(:dsa, :'ssh-dss')
15
+ aliasvalue(:ed25519, :'ssh-ed25519')
15
16
  aliasvalue(:rsa, :'ssh-rsa')
16
17
  end
17
18
 
@@ -312,7 +312,7 @@ Puppet::Type.newtype(:tidy) do
312
312
 
313
313
  def stat(path)
314
314
  begin
315
- Puppet::FileSystem::File.new(path).lstat
315
+ Puppet::FileSystem.lstat(path)
316
316
  rescue Errno::ENOENT => error
317
317
  info "File does not exist"
318
318
  return nil
@@ -54,6 +54,9 @@ module Puppet
54
54
  "Allows local users to be managed on systems that also use some other
55
55
  remote NSS method of managing accounts."
56
56
 
57
+ feature :manages_shell,
58
+ "The provider allows for setting shell and validates if possible"
59
+
57
60
  newproperty(:ensure, :parent => Puppet::Property::Ensure) do
58
61
  newvalue(:present, :event => :user_created) do
59
62
  provider.create
@@ -169,7 +172,7 @@ module Puppet
169
172
  end
170
173
  end
171
174
 
172
- newproperty(:shell) do
175
+ newproperty(:shell, :required_features => :manages_shell) do
173
176
  desc "The user's login shell. The shell must exist and be
174
177
  executable.
175
178
 
@@ -1,395 +1,270 @@
1
- require 'puppet/util/inifile'
2
-
3
- module Puppet
4
- # A property for one entry in a .ini-style file
5
- class IniProperty < Puppet::Property
6
- def insync?(is)
7
- # A should property of :absent is the same as nil
8
- if is.nil? && should == :absent
9
- return true
10
- end
11
- super(is)
12
- end
1
+ require 'uri'
13
2
 
14
- def sync
15
- if safe_insync?(retrieve)
16
- result = nil
17
- else
18
- result = set(self.should)
19
- if should == :absent
20
- resource.section[inikey] = nil
21
- else
22
- resource.section[inikey] = should
23
- end
24
- end
25
- result
26
- end
3
+ Puppet::Type.newtype(:yumrepo) do
4
+ @doc = "The client-side description of a yum repository. Repository
5
+ configurations are found by parsing `/etc/yum.conf` and
6
+ the files indicated by the `reposdir` option in that file
7
+ (see `yum.conf(5)` for details).
27
8
 
28
- def retrieve
29
- resource.section[inikey]
30
- end
9
+ Most parameters are identical to the ones documented
10
+ in the `yum.conf(5)` man page.
31
11
 
32
- def inikey
33
- name.to_s
34
- end
12
+ Continuation lines that yum supports (for the `baseurl`, for example)
13
+ are not supported. This type does not attempt to read or verify the
14
+ exinstence of files listed in the `include` attribute."
35
15
 
36
- # Set the key associated with this property to KEY, instead
37
- # of using the property's NAME
38
- def self.inikey(key)
39
- # Override the inikey instance method
40
- # Is there a way to do this without resorting to strings ?
41
- # Using a block fails because the block can't access
42
- # the variable 'key' in the outer scope
43
- self.class_eval("def inikey ; \"#{key.to_s}\" ; end")
44
- end
16
+ # Ensure yumrepos can be removed too.
17
+ ensurable
18
+ # Doc string for properties that can be made 'absent'
19
+ ABSENT_DOC="Set this to `absent` to remove it from the file completely."
20
+ # False can be false/0/no and True can be true/1/yes in yum.
21
+ YUM_BOOLEAN=/(True|False|0|1|No|Yes)/
22
+ YUM_BOOLEAN_DOC="Valid values are: False/0/No or True/1/Yes."
45
23
 
24
+ newparam(:name, :namevar => true) do
25
+ desc "The name of the repository. This corresponds to the
26
+ `repositoryid` parameter in `yum.conf(5)`."
46
27
  end
47
28
 
48
- # Doc string for properties that can be made 'absent'
49
- ABSENT_DOC="Set this to `absent` to remove it from the file completely."
29
+ newparam(:target) do
30
+ desc "The filename to write the yum repository to."
50
31
 
51
- newtype(:yumrepo) do
52
- @doc = "The client-side description of a yum repository. Repository
53
- configurations are found by parsing `/etc/yum.conf` and
54
- the files indicated by the `reposdir` option in that file
55
- (see `yum.conf(5)` for details).
56
-
57
- Most parameters are identical to the ones documented
58
- in the `yum.conf(5)` man page.
59
-
60
- Continuation lines that yum supports (for the `baseurl`, for example)
61
- are not supported. This type does not attempt to read or verify the
62
- exinstence of files listed in the `include` attribute."
63
-
64
- class << self
65
- attr_accessor :filetype
66
- # The writer is only used for testing, there should be no need
67
- # to change yumconf or inifile in any other context
68
- attr_accessor :yumconf
69
- attr_writer :inifile
70
- end
32
+ defaultto :absent
33
+ end
71
34
 
72
- self.filetype = Puppet::Util::FileType.filetype(:flat)
73
-
74
- @inifile = nil
75
-
76
- @yumconf = "/etc/yum.conf"
77
-
78
- # Where to put files for brand new sections
79
- @defaultrepodir = nil
80
-
81
- def self.instances
82
- l = []
83
- check = validproperties
84
- clear
85
- inifile.each_section do |s|
86
- next if s.name == "main"
87
- obj = new(:name => s.name, :audit => check)
88
- current_values = obj.retrieve
89
- obj.eachproperty do |property|
90
- if current_values[property].nil?
91
- obj.delete(property.name)
92
- else
93
- property.should = current_values[property]
94
- end
95
- end
96
- obj.delete(:audit)
97
- l << obj
98
- end
99
- l
100
- end
35
+ newproperty(:descr) do
36
+ desc "A human-readable description of the repository.
37
+ This corresponds to the name parameter in `yum.conf(5)`.
38
+ #{ABSENT_DOC}"
101
39
 
102
- # Return the Puppet::Util::IniConfig::File for the whole yum config
103
- def self.inifile
104
- if @inifile.nil?
105
- @inifile = read
106
- main = @inifile['main']
107
- raise Puppet::Error, "File #{yumconf} does not contain a main section" if main.nil?
108
- reposdir = main['reposdir']
109
- reposdir ||= "/etc/yum.repos.d, /etc/yum/repos.d"
110
- reposdir.gsub!(/[\n,]/, " ")
111
- reposdir.split.each do |dir|
112
- Dir::glob("#{dir}/*.repo").each do |file|
113
- @inifile.read(file) if ::File.file?(file)
114
- end
115
- end
116
- reposdir.split.each do |dir|
117
- if ::File.directory?(dir) && ::File.writable?(dir)
118
- @defaultrepodir = dir
119
- break
120
- end
121
- end
122
- end
123
- @inifile
124
- end
40
+ newvalues(/.*/, :absent)
41
+ end
125
42
 
126
- # Parse the yum config files. Only exposed for the tests
127
- # Non-test code should use self.inifile to get at the
128
- # underlying file
129
- def self.read
130
- result = Puppet::Util::IniConfig::File.new
131
- result.read(yumconf)
132
- main = result['main']
133
- raise Puppet::Error, "File #{yumconf} does not contain a main section" if main.nil?
134
- reposdir = main['reposdir']
135
- reposdir ||= "/etc/yum.repos.d, /etc/yum/repos.d"
136
- reposdir.gsub!(/[\n,]/, " ")
137
- reposdir.split.each do |dir|
138
- Dir::glob("#{dir}/*.repo").each do |file|
139
- result.read(file) if ::File.file?(file)
140
- end
141
- end
142
- if @defaultrepodir.nil?
143
- reposdir.split.each do |dir|
144
- if ::File.directory?(dir) && ::File.writable?(dir)
145
- @defaultrepodir = dir
146
- break
147
- end
148
- end
149
- end
150
- result
151
- end
43
+ newproperty(:mirrorlist) do
44
+ desc "The URL that holds the list of mirrors for this repository.
45
+ #{ABSENT_DOC}"
152
46
 
153
- # Return the Puppet::Util::IniConfig::Section with name NAME
154
- # from the yum config
155
- def self.section(name)
156
- result = inifile[name]
157
- if result.nil?
158
- # Brand new section
159
- path = yumconf
160
- path = ::File.join(@defaultrepodir, "#{name}.repo") unless @defaultrepodir.nil?
161
- Puppet::info "create new repo #{name} in file #{path}"
162
- result = inifile.add_section(name, path)
163
- end
164
- result
47
+ newvalues(/.*/, :absent)
48
+ validate do |value|
49
+ parsed = URI.parse(value)
50
+ fail("Must be a valid URL") unless ['file', 'http', 'https', 'ftp'].include?(parsed.scheme)
165
51
  end
52
+ end
166
53
 
167
- # Store all modifications back to disk
168
- def self.store
169
- inifile.store
170
- unless Puppet[:noop]
171
- target_mode = 0644 # FIXME: should be configurable
172
- inifile.each_file do |file|
173
- current_mode = Puppet::FileSystem::File.new(file).stat.mode & 0777
174
- unless current_mode == target_mode
175
- Puppet::info "changing mode of #{file} from %03o to %03o" % [current_mode, target_mode]
176
- ::File.chmod(target_mode, file)
177
- end
178
- end
179
- end
180
- end
54
+ newproperty(:baseurl) do
55
+ desc "The URL for this repository. #{ABSENT_DOC}"
181
56
 
182
- # This is only used during testing.
183
- def self.clear
184
- @inifile = nil
185
- @yumconf = "/etc/yum.conf"
186
- @defaultrepodir = nil
57
+ newvalues(/.*/, :absent)
58
+ validate do |value|
59
+ parsed = URI.parse(value)
60
+ fail("Must be a valid URL") unless ['file', 'http', 'https', 'ftp'].include?(parsed.scheme)
187
61
  end
62
+ end
188
63
 
189
- # Return the Puppet::Util::IniConfig::Section for this yumrepo resource
190
- def section
191
- self.class.section(self[:name])
192
- end
64
+ newproperty(:enabled) do
65
+ desc "Whether this repository is enabled.
66
+ #{YUM_BOOLEAN_DOC}
67
+ #{ABSENT_DOC}"
193
68
 
194
- # Store modifications to this yumrepo resource back to disk
195
- def flush
196
- self.class.store
197
- end
69
+ newvalues(YUM_BOOLEAN, :absent)
70
+ end
198
71
 
199
- newparam(:name) do
200
- desc "The name of the repository. This corresponds to the
201
- `repositoryid` parameter in `yum.conf(5)`."
202
- isnamevar
203
- end
72
+ newproperty(:gpgcheck) do
73
+ desc "Whether to check the GPG signature on packages installed
74
+ from this repository.
75
+ #{YUM_BOOLEAN_DOC}
76
+ #{ABSENT_DOC}"
204
77
 
205
- newproperty(:descr, :parent => Puppet::IniProperty) do
206
- desc "A human-readable description of the repository.
207
- This corresponds to the name parameter in `yum.conf(5)`.
208
- #{ABSENT_DOC}"
209
- newvalue(:absent) { self.should = :absent }
210
- newvalue(/.*/) { }
211
- inikey "name"
212
- end
78
+ newvalues(YUM_BOOLEAN, :absent)
79
+ end
213
80
 
214
- newproperty(:mirrorlist, :parent => Puppet::IniProperty) do
215
- desc "The URL that holds the list of mirrors for this repository.
216
- #{ABSENT_DOC}"
217
- newvalue(:absent) { self.should = :absent }
218
- # Should really check that it's a valid URL
219
- newvalue(/.*/) { }
220
- end
81
+ newproperty(:repo_gpgcheck) do
82
+ desc "Whether to check the GPG signature on repodata.
83
+ #{YUM_BOOLEAN_DOC}
84
+ #{ABSENT_DOC}"
221
85
 
222
- newproperty(:baseurl, :parent => Puppet::IniProperty) do
223
- desc "The URL for this repository. #{ABSENT_DOC}"
224
- newvalue(:absent) { self.should = :absent }
225
- # Should really check that it's a valid URL
226
- newvalue(/.*/) { }
227
- end
86
+ newvalues(YUM_BOOLEAN, :absent)
87
+ end
228
88
 
229
- newproperty(:enabled, :parent => Puppet::IniProperty) do
230
- desc "Whether this repository is enabled, as represented by a
231
- `0` or `1`. #{ABSENT_DOC}"
232
- newvalue(:absent) { self.should = :absent }
233
- newvalue(/^(0|1)$/) { }
234
- end
89
+ newproperty(:gpgkey) do
90
+ desc "The URL for the GPG key with which packages from this
91
+ repository are signed. #{ABSENT_DOC}"
235
92
 
236
- newproperty(:gpgcheck, :parent => Puppet::IniProperty) do
237
- desc "Whether to check the GPG signature on packages installed
238
- from this repository, as represented by a `0` or `1`.
239
- #{ABSENT_DOC}"
240
- newvalue(:absent) { self.should = :absent }
241
- newvalue(/^(0|1)$/) { }
93
+ newvalues(/.*/, :absent)
94
+ validate do |value|
95
+ parsed = URI.parse(value)
96
+ fail("Must be a valid URL") unless ['file', 'http', 'https', 'ftp'].include?(parsed.scheme)
242
97
  end
98
+ end
243
99
 
244
- newproperty(:gpgkey, :parent => Puppet::IniProperty) do
245
- desc "The URL for the GPG key with which packages from this
246
- repository are signed. #{ABSENT_DOC}"
247
- newvalue(:absent) { self.should = :absent }
248
- # Should really check that it's a valid URL
249
- newvalue(/.*/) { }
250
- end
100
+ newproperty(:include) do
101
+ desc "The URL of a remote file containing additional yum configuration
102
+ settings. Puppet does not check for this file's existence or validity.
103
+ #{ABSENT_DOC}"
251
104
 
252
- newproperty(:include, :parent => Puppet::IniProperty) do
253
- desc "The URL of a remote file containing additional yum configuration
254
- settings. Puppet does not check for this file's existence or validity.
255
- #{ABSENT_DOC}"
256
- newvalue(:absent) { self.should = :absent }
257
- # Should really check that it's a valid URL
258
- newvalue(/.*/) { }
105
+ newvalues(/.*/, :absent)
106
+ validate do |value|
107
+ parsed = URI.parse(value)
108
+ fail("Must be a valid URL") unless ['file', 'http', 'https', 'ftp'].include?(parsed.scheme)
259
109
  end
110
+ end
260
111
 
261
- newproperty(:exclude, :parent => Puppet::IniProperty) do
262
- desc "List of shell globs. Matching packages will never be
263
- considered in updates or installs for this repo.
264
- #{ABSENT_DOC}"
265
- newvalue(:absent) { self.should = :absent }
266
- newvalue(/.*/) { }
267
- end
112
+ newproperty(:exclude) do
113
+ desc "List of shell globs. Matching packages will never be
114
+ considered in updates or installs for this repo.
115
+ #{ABSENT_DOC}"
268
116
 
269
- newproperty(:includepkgs, :parent => Puppet::IniProperty) do
270
- desc "List of shell globs. If this is set, only packages
271
- matching one of the globs will be considered for
272
- update or install from this repo. #{ABSENT_DOC}"
273
- newvalue(:absent) { self.should = :absent }
274
- newvalue(/.*/) { }
275
- end
117
+ newvalues(/.*/, :absent)
118
+ end
276
119
 
277
- newproperty(:enablegroups, :parent => Puppet::IniProperty) do
278
- desc "Whether yum will allow the use of package groups for this
279
- repository, as represented by a `0` or `1`. #{ABSENT_DOC}"
280
- newvalue(:absent) { self.should = :absent }
281
- newvalue(/^(0|1)$/) { }
282
- end
120
+ newproperty(:includepkgs) do
121
+ desc "List of shell globs. If this is set, only packages
122
+ matching one of the globs will be considered for
123
+ update or install from this repo. #{ABSENT_DOC}"
283
124
 
284
- newproperty(:failovermethod, :parent => Puppet::IniProperty) do
285
- desc "The failover methode for this repository; should be either
286
- `roundrobin` or `priority`. #{ABSENT_DOC}"
287
- newvalue(:absent) { self.should = :absent }
288
- newvalue(%r{roundrobin|priority}) { }
289
- end
125
+ newvalues(/.*/, :absent)
126
+ end
290
127
 
291
- newproperty(:keepalive, :parent => Puppet::IniProperty) do
292
- desc "Whether HTTP/1.1 keepalive should be used with this repository, as
293
- represented by a `0` or `1`. #{ABSENT_DOC}"
294
- newvalue(:absent) { self.should = :absent }
295
- newvalue(/^(0|1)$/) { }
296
- end
128
+ newproperty(:enablegroups) do
129
+ desc "Whether yum will allow the use of package groups for this
130
+ repository.
131
+ #{YUM_BOOLEAN_DOC}
132
+ #{ABSENT_DOC}"
297
133
 
298
- newproperty(:http_caching, :parent => Puppet::IniProperty) do
299
- desc "What to cache from this repository. #{ABSENT_DOC}"
300
- newvalue(:absent) { self.should = :absent }
301
- newvalue(%r(packages|all|none)) { }
302
- end
303
-
304
- newproperty(:timeout, :parent => Puppet::IniProperty) do
305
- desc "Number of seconds to wait for a connection before timing
306
- out. #{ABSENT_DOC}"
307
- newvalue(:absent) { self.should = :absent }
308
- newvalue(%r{[0-9]+}) { }
309
- end
134
+ newvalues(YUM_BOOLEAN, :absent)
135
+ end
310
136
 
311
- newproperty(:metadata_expire, :parent => Puppet::IniProperty) do
312
- desc "Number of seconds after which the metadata will expire.
313
- #{ABSENT_DOC}"
314
- newvalue(:absent) { self.should = :absent }
315
- newvalue(%r{[0-9]+}) { }
316
- end
137
+ newproperty(:failovermethod) do
138
+ desc "The failover method for this repository; should be either
139
+ `roundrobin` or `priority`. #{ABSENT_DOC}"
317
140
 
318
- newproperty(:protect, :parent => Puppet::IniProperty) do
319
- desc "Enable or disable protection for this repository. Requires
320
- that the `protectbase` plugin is installed and enabled.
321
- #{ABSENT_DOC}"
322
- newvalue(:absent) { self.should = :absent }
323
- newvalue(/^(0|1)$/) { }
324
- end
141
+ newvalues(/roundrobin|priority/, :absent)
142
+ end
325
143
 
326
- newproperty(:priority, :parent => Puppet::IniProperty) do
327
- desc "Priority of this repository from 1-99. Requires that
328
- the `priorities` plugin is installed and enabled.
329
- #{ABSENT_DOC}"
330
- newvalue(:absent) { self.should = :absent }
331
- newvalue(%r{[1-9][0-9]?}) { }
332
- end
144
+ newproperty(:keepalive) do
145
+ desc "Whether HTTP/1.1 keepalive should be used with this repository.
146
+ #{YUM_BOOLEAN_DOC}
147
+ #{ABSENT_DOC}"
333
148
 
334
- newproperty(:cost, :parent => Puppet::IniProperty) do
335
- desc "Cost of this repository. #{ABSENT_DOC}"
336
- newvalue(:absent) { self.should = :absent }
337
- newvalue(%r{\d+}) { }
338
- end
149
+ newvalues(YUM_BOOLEAN, :absent)
150
+ end
339
151
 
340
- newproperty(:proxy, :parent => Puppet::IniProperty) do
341
- desc "URL to the proxy server for this repository. #{ABSENT_DOC}"
342
- newvalue(:absent) { self.should = :absent }
343
- # Should really check that it's a valid URL
344
- newvalue(/.*/) { }
345
- end
152
+ newproperty(:http_caching) do
153
+ desc "What to cache from this repository. #{ABSENT_DOC}"
346
154
 
347
- newproperty(:proxy_username, :parent => Puppet::IniProperty) do
348
- desc "Username for this proxy. #{ABSENT_DOC}"
349
- newvalue(:absent) { self.should = :absent }
350
- newvalue(/.*/) { }
351
- end
155
+ newvalues(/(packages|all|none)/, :absent)
156
+ end
352
157
 
353
- newproperty(:proxy_password, :parent => Puppet::IniProperty) do
354
- desc "Password for this proxy. #{ABSENT_DOC}"
355
- newvalue(:absent) { self.should = :absent }
356
- newvalue(/.*/) { }
357
- end
158
+ newproperty(:timeout) do
159
+ desc "Number of seconds to wait for a connection before timing
160
+ out. #{ABSENT_DOC}"
358
161
 
359
- newproperty(:s3_enabled, :parent => Puppet::IniProperty) do
360
- desc "Access the repo via S3. #{ABSENT_DOC}"
361
- newvalue(:absent) { self.should = :absent }
362
- newvalue(/^(0|1)$/) { }
363
- end
162
+ newvalues(/[0-9]+/, :absent)
163
+ end
364
164
 
365
- newproperty(:sslcacert, :parent => Puppet::IniProperty) do
366
- desc "Path to the directory containing the databases of the
367
- certificate authorities yum should use to verify SSL certificates.
368
- #{ABSENT_DOC}"
369
- newvalue(:absent) { self.should = :absent }
370
- newvalue(/.*/) { }
371
- end
165
+ newproperty(:metadata_expire) do
166
+ desc "Number of seconds after which the metadata will expire.
167
+ #{ABSENT_DOC}"
372
168
 
373
- newproperty(:sslverify, :parent => Puppet::IniProperty) do
374
- desc "Should yum verify SSL certificates/hosts at all.
375
- Possible values are 'True' or 'False'.
376
- #{ABSENT_DOC}"
377
- newvalue(:absent) { self.should = :absent }
378
- newvalue(%r(True|False)) { }
169
+ newvalues(/[0-9]+/, :absent)
170
+ end
171
+
172
+ newproperty(:protect) do
173
+ desc "Enable or disable protection for this repository. Requires
174
+ that the `protectbase` plugin is installed and enabled.
175
+ #{YUM_BOOLEAN_DOC}
176
+ #{ABSENT_DOC}"
177
+
178
+ newvalues(YUM_BOOLEAN, :absent)
179
+ end
180
+
181
+ newproperty(:priority) do
182
+ desc "Priority of this repository from 1-99. Requires that
183
+ the `priorities` plugin is installed and enabled.
184
+ #{ABSENT_DOC}"
185
+
186
+ newvalues(/.*/, :absent)
187
+ validate do |value|
188
+ unless value == :absent or (1..99).include?(value.to_i)
189
+ fail("Must be within range 1-99")
190
+ end
379
191
  end
192
+ end
193
+
194
+ newproperty(:cost) do
195
+ desc "Cost of this repository. #{ABSENT_DOC}"
196
+
197
+ newvalues(/\d+/, :absent)
198
+ end
199
+
200
+ newproperty(:proxy) do
201
+ desc "URL to the proxy server for this repository. #{ABSENT_DOC}"
380
202
 
381
- newproperty(:sslclientcert, :parent => Puppet::IniProperty) do
382
- desc "Path to the SSL client certificate yum should use to connect
383
- to repos/remote sites. #{ABSENT_DOC}"
384
- newvalue(:absent) { self.should = :absent }
385
- newvalue(/.*/) { }
203
+ newvalues(/.*/, :absent)
204
+ validate do |value|
205
+ parsed = URI.parse(value)
206
+ fail("Must be a valid URL") unless ['file', 'http', 'https', 'ftp'].include?(parsed.scheme)
386
207
  end
208
+ end
209
+
210
+ newproperty(:proxy_username) do
211
+ desc "Username for this proxy. #{ABSENT_DOC}"
212
+
213
+ newvalues(/.*/, :absent)
214
+ end
215
+
216
+ newproperty(:proxy_password) do
217
+ desc "Password for this proxy. #{ABSENT_DOC}"
218
+
219
+ newvalues(/.*/, :absent)
220
+ end
221
+
222
+ newproperty(:s3_enabled) do
223
+ desc "Access the repo via S3.
224
+ #{YUM_BOOLEAN_DOC}
225
+ #{ABSENT_DOC}"
226
+
227
+ newvalues(YUM_BOOLEAN, :absent)
228
+ end
229
+
230
+ newproperty(:sslcacert) do
231
+ desc "Path to the directory containing the databases of the
232
+ certificate authorities yum should use to verify SSL certificates.
233
+ #{ABSENT_DOC}"
234
+
235
+ newvalues(/.*/, :absent)
236
+ end
237
+
238
+ newproperty(:sslverify) do
239
+ desc "Should yum verify SSL certificates/hosts at all.
240
+ #{YUM_BOOLEAN_DOC}
241
+ #{ABSENT_DOC}"
242
+
243
+ newvalues(YUM_BOOLEAN, :absent)
244
+ end
245
+
246
+ newproperty(:sslclientcert) do
247
+ desc "Path to the SSL client certificate yum should use to connect
248
+ to repos/remote sites. #{ABSENT_DOC}"
249
+
250
+ newvalues(/.*/, :absent)
251
+ end
252
+
253
+ newproperty(:sslclientkey) do
254
+ desc "Path to the SSL client key yum should use to connect
255
+ to repos/remote sites. #{ABSENT_DOC}"
256
+
257
+ newvalues(/.*/, :absent)
258
+ end
259
+
260
+ newproperty(:metalink) do
261
+ desc "Metalink for mirrors. #{ABSENT_DOC}"
387
262
 
388
- newproperty(:sslclientkey, :parent => Puppet::IniProperty) do
389
- desc "Path to the SSL client key yum should use to connect
390
- to repos/remote sites. #{ABSENT_DOC}"
391
- newvalue(:absent) { self.should = :absent }
392
- newvalue(/.*/) { }
263
+ newvalues(/.*/, :absent)
264
+ validate do |value|
265
+ parsed = URI.parse(value)
266
+ fail("Must be a valid URL") unless ['file', 'http', 'https', 'ftp'].include?(parsed.scheme)
393
267
  end
394
268
  end
269
+
395
270
  end