puppet 3.2.4 → 3.3.0.rc2

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 (562) hide show
  1. data/COMMITTERS.md +101 -42
  2. data/Gemfile +15 -4
  3. data/README.md +5 -1
  4. data/README_DEVELOPER.md +117 -54
  5. data/Rakefile +4 -0
  6. data/ext/build_defaults.yaml +3 -2
  7. data/ext/debian/puppet-common.manpages +33 -1
  8. data/ext/gentoo/init.d/puppet +1 -1
  9. data/ext/gentoo/init.d/puppetmaster +1 -1
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/install.rb +2 -1
  12. data/lib/hiera/backend/puppet_backend.rb +1 -1
  13. data/lib/puppet/application.rb +10 -9
  14. data/lib/puppet/application/agent.rb +87 -93
  15. data/lib/puppet/application/apply.rb +0 -2
  16. data/lib/puppet/application/device.rb +3 -3
  17. data/lib/puppet/application/kick.rb +2 -2
  18. data/lib/puppet/application/master.rb +41 -19
  19. data/lib/puppet/application/queue.rb +5 -3
  20. data/lib/puppet/bindings.rb +147 -0
  21. data/lib/puppet/configurer.rb +25 -15
  22. data/lib/puppet/configurer/fact_handler.rb +2 -9
  23. data/lib/puppet/daemon.rb +44 -33
  24. data/lib/puppet/defaults.rb +57 -26
  25. data/lib/puppet/error.rb +1 -1
  26. data/lib/puppet/external/dot.rb +2 -2
  27. data/lib/puppet/external/nagios/base.rb +1 -6
  28. data/lib/puppet/external/pson/common.rb +2 -2
  29. data/lib/puppet/external/pson/pure/generator.rb +2 -2
  30. data/lib/puppet/external/pson/pure/parser.rb +1 -1
  31. data/lib/puppet/face/ca.rb +1 -1
  32. data/lib/puppet/face/config.rb +1 -1
  33. data/lib/puppet/face/help.rb +2 -2
  34. data/lib/puppet/face/module/list.rb +2 -2
  35. data/lib/puppet/feature/rails.rb +1 -1
  36. data/lib/puppet/file_bucket/dipper.rb +0 -1
  37. data/lib/puppet/file_serving/base.rb +1 -1
  38. data/lib/puppet/file_serving/configuration/parser.rb +20 -14
  39. data/lib/puppet/forge.rb +0 -32
  40. data/lib/puppet/forge/cache.rb +1 -1
  41. data/lib/puppet/forge/errors.rb +3 -3
  42. data/lib/puppet/forge/repository.rb +7 -42
  43. data/lib/puppet/graph.rb +11 -0
  44. data/lib/puppet/graph/key.rb +26 -0
  45. data/lib/puppet/graph/prioritizer.rb +29 -0
  46. data/lib/puppet/graph/random_prioritizer.rb +16 -0
  47. data/lib/puppet/{rb_tree_map.rb → graph/rb_tree_map.rb} +3 -3
  48. data/lib/puppet/graph/relationship_graph.rb +246 -0
  49. data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
  50. data/lib/puppet/{simple_graph.rb → graph/simple_graph.rb} +22 -3
  51. data/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
  52. data/lib/puppet/indirector.rb +2 -2
  53. data/lib/puppet/indirector/catalog/compiler.rb +10 -7
  54. data/lib/puppet/indirector/catalog/static_compiler.rb +50 -0
  55. data/lib/puppet/indirector/certificate/rest.rb +1 -1
  56. data/lib/puppet/indirector/exec.rb +1 -1
  57. data/lib/puppet/indirector/facts/facter.rb +2 -2
  58. data/lib/puppet/indirector/facts/inventory_active_record.rb +0 -1
  59. data/lib/puppet/indirector/facts/network_device.rb +1 -1
  60. data/lib/puppet/indirector/file_bucket_file/file.rb +0 -1
  61. data/lib/puppet/indirector/indirection.rb +2 -2
  62. data/lib/puppet/indirector/memory.rb +9 -0
  63. data/lib/puppet/indirector/node/ldap.rb +2 -4
  64. data/lib/puppet/indirector/report/processor.rb +1 -2
  65. data/lib/puppet/indirector/report/rest.rb +1 -1
  66. data/lib/puppet/indirector/request.rb +32 -10
  67. data/lib/puppet/indirector/resource/rest.rb +1 -1
  68. data/lib/puppet/indirector/resource_type/parser.rb +31 -12
  69. data/lib/puppet/interface.rb +1 -1
  70. data/lib/puppet/interface/documentation.rb +7 -11
  71. data/lib/puppet/interface/option.rb +1 -1
  72. data/lib/puppet/interface/option_builder.rb +1 -1
  73. data/lib/puppet/metatype/manager.rb +2 -2
  74. data/lib/puppet/module.rb +7 -1
  75. data/lib/puppet/module_tool.rb +1 -1
  76. data/lib/puppet/module_tool/applications/application.rb +10 -0
  77. data/lib/puppet/module_tool/applications/installer.rb +6 -3
  78. data/lib/puppet/module_tool/dependency.rb +2 -0
  79. data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
  80. data/lib/puppet/module_tool/metadata.rb +25 -13
  81. data/lib/puppet/module_tool/modulefile.rb +7 -7
  82. data/lib/puppet/module_tool/shared_behaviors.rb +4 -2
  83. data/lib/puppet/module_tool/skeleton.rb +1 -1
  84. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +5 -5
  85. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +5 -4
  86. data/lib/puppet/network/auth_config_parser.rb +3 -0
  87. data/lib/puppet/network/authconfig.rb +0 -1
  88. data/lib/puppet/network/authorization.rb +1 -1
  89. data/lib/puppet/network/authstore.rb +2 -2
  90. data/lib/puppet/network/format_handler.rb +25 -114
  91. data/lib/puppet/network/format_support.rb +106 -0
  92. data/lib/puppet/network/formats.rb +10 -4
  93. data/lib/puppet/network/http/compression.rb +1 -1
  94. data/lib/puppet/network/http/connection.rb +76 -32
  95. data/lib/puppet/network/http/handler.rb +122 -61
  96. data/lib/puppet/network/http/rack/rest.rb +1 -1
  97. data/lib/puppet/network/http/webrick/rest.rb +9 -3
  98. data/lib/puppet/network/http_pool.rb +2 -2
  99. data/lib/puppet/network/resolver.rb +1 -0
  100. data/lib/puppet/network/server.rb +5 -81
  101. data/lib/puppet/node/environment.rb +256 -13
  102. data/lib/puppet/node/facts.rb +28 -2
  103. data/lib/puppet/parameter.rb +27 -18
  104. data/lib/puppet/parameter/boolean.rb +20 -0
  105. data/lib/puppet/parameter/path.rb +1 -1
  106. data/lib/puppet/parameter/value.rb +1 -1
  107. data/lib/puppet/parameter/value_collection.rb +1 -1
  108. data/lib/puppet/parser/ast/arithmetic_operator.rb +8 -0
  109. data/lib/puppet/parser/ast/casestatement.rb +0 -3
  110. data/lib/puppet/parser/ast/lambda.rb +25 -6
  111. data/lib/puppet/parser/ast/leaf.rb +10 -3
  112. data/lib/puppet/parser/ast/nop.rb +1 -1
  113. data/lib/puppet/parser/ast/resource_override.rb +0 -2
  114. data/lib/puppet/parser/compiler.rb +92 -34
  115. data/lib/puppet/parser/files.rb +0 -5
  116. data/lib/puppet/parser/functions/create_resources.rb +23 -46
  117. data/lib/puppet/parser/functions/each.rb +0 -2
  118. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  119. data/lib/puppet/parser/functions/foreach.rb +0 -2
  120. data/lib/puppet/parser/functions/hiera_include.rb +1 -1
  121. data/lib/puppet/parser/functions/lookup.rb +44 -0
  122. data/lib/puppet/parser/functions/slice.rb +1 -1
  123. data/lib/puppet/parser/grammar.ra +0 -1
  124. data/lib/puppet/parser/lexer.rb +0 -1
  125. data/lib/puppet/parser/parser.rb +0 -1
  126. data/lib/puppet/parser/parser_factory.rb +3 -2
  127. data/lib/puppet/parser/parser_support.rb +1 -1
  128. data/lib/puppet/parser/relationship.rb +1 -1
  129. data/lib/puppet/parser/scope.rb +49 -24
  130. data/lib/puppet/parser/type_loader.rb +13 -18
  131. data/lib/puppet/pops.rb +45 -0
  132. data/lib/puppet/pops/adaptable.rb +2 -2
  133. data/lib/puppet/pops/adapters.rb +4 -0
  134. data/lib/puppet/pops/binder/binder.rb +421 -0
  135. data/lib/puppet/pops/binder/binder_issues.rb +142 -0
  136. data/lib/puppet/pops/binder/bindings_checker.rb +217 -0
  137. data/lib/puppet/pops/binder/bindings_composer.rb +241 -0
  138. data/lib/puppet/pops/binder/bindings_factory.rb +847 -0
  139. data/lib/puppet/pops/binder/bindings_label_provider.rb +46 -0
  140. data/lib/puppet/pops/binder/bindings_loader.rb +79 -0
  141. data/lib/puppet/pops/binder/bindings_model.rb +215 -0
  142. data/lib/puppet/pops/binder/bindings_model_dumper.rb +205 -0
  143. data/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
  144. data/lib/puppet/pops/binder/config/binder_config.rb +139 -0
  145. data/lib/puppet/pops/binder/config/binder_config_checker.rb +183 -0
  146. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
  147. data/lib/puppet/pops/binder/config/issues.rb +106 -0
  148. data/lib/puppet/pops/binder/hiera2.rb +10 -0
  149. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +148 -0
  150. data/lib/puppet/pops/binder/hiera2/config.rb +69 -0
  151. data/lib/puppet/pops/binder/hiera2/config_checker.rb +68 -0
  152. data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +36 -0
  153. data/lib/puppet/pops/binder/hiera2/issues.rb +67 -0
  154. data/lib/puppet/pops/binder/hiera2/json_backend.rb +18 -0
  155. data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +21 -0
  156. data/lib/puppet/pops/binder/injector.rb +688 -0
  157. data/lib/puppet/pops/binder/injector_entry.rb +53 -0
  158. data/lib/puppet/pops/binder/key_factory.rb +61 -0
  159. data/lib/puppet/pops/binder/producers.rb +829 -0
  160. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +67 -0
  161. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
  162. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +92 -0
  163. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
  164. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +54 -0
  165. data/lib/puppet/pops/binder/system_bindings.rb +72 -0
  166. data/lib/puppet/pops/issue_reporter.rb +75 -0
  167. data/lib/puppet/pops/issues.rb +9 -5
  168. data/lib/puppet/pops/model/ast_transformer.rb +4 -4
  169. data/lib/puppet/pops/model/ast_tree_dumper.rb +1 -1
  170. data/lib/puppet/pops/model/factory.rb +25 -13
  171. data/lib/puppet/pops/model/model.rb +1 -1
  172. data/lib/puppet/pops/model/tree_dumper.rb +2 -2
  173. data/lib/puppet/pops/parser/egrammar.ra +0 -1
  174. data/lib/puppet/pops/parser/eparser.rb +1 -2
  175. data/lib/puppet/pops/parser/evaluating_parser.rb +162 -0
  176. data/lib/puppet/pops/parser/lexer.rb +8 -6
  177. data/lib/puppet/pops/types/class_loader.rb +118 -0
  178. data/lib/puppet/pops/types/type_calculator.rb +557 -0
  179. data/lib/puppet/pops/types/type_factory.rb +147 -0
  180. data/lib/puppet/pops/types/type_parser.rb +117 -0
  181. data/lib/puppet/pops/types/types.rb +132 -0
  182. data/lib/puppet/pops/validation.rb +146 -17
  183. data/lib/puppet/pops/validation/checker3_1.rb +1 -1
  184. data/lib/puppet/pops/validation/validator_factory_3_1.rb +6 -16
  185. data/lib/puppet/property.rb +3 -3
  186. data/lib/puppet/property/keyvalue.rb +1 -1
  187. data/lib/puppet/provider.rb +2 -2
  188. data/lib/puppet/provider/aixobject.rb +19 -21
  189. data/lib/puppet/provider/augeas/augeas.rb +3 -1
  190. data/lib/puppet/provider/command.rb +2 -2
  191. data/lib/puppet/provider/group/aix.rb +1 -1
  192. data/lib/puppet/provider/group/ldap.rb +1 -1
  193. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  194. data/lib/puppet/provider/mailalias/aliases.rb +3 -8
  195. data/lib/puppet/provider/mcx/mcxcontent.rb +7 -1
  196. data/lib/puppet/provider/mount.rb +8 -3
  197. data/lib/puppet/provider/nameservice.rb +1 -1
  198. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  199. data/lib/puppet/provider/package/appdmg.rb +1 -1
  200. data/lib/puppet/provider/package/apt.rb +0 -1
  201. data/lib/puppet/provider/package/dpkg.rb +86 -32
  202. data/lib/puppet/provider/package/fink.rb +0 -2
  203. data/lib/puppet/provider/package/freebsd.rb +0 -2
  204. data/lib/puppet/provider/package/openbsd.rb +57 -10
  205. data/lib/puppet/provider/package/opkg.rb +0 -1
  206. data/lib/puppet/provider/package/pacman.rb +0 -1
  207. data/lib/puppet/provider/package/pip.rb +1 -1
  208. data/lib/puppet/provider/package/pkgdmg.rb +17 -6
  209. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  210. data/lib/puppet/provider/package/portage.rb +9 -1
  211. data/lib/puppet/provider/package/ports.rb +2 -2
  212. data/lib/puppet/provider/package/rpm.rb +29 -12
  213. data/lib/puppet/provider/package/rug.rb +1 -1
  214. data/lib/puppet/provider/package/urpmi.rb +11 -15
  215. data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
  216. data/lib/puppet/provider/package/windows/package.rb +1 -26
  217. data/lib/puppet/provider/package/yum.rb +1 -1
  218. data/lib/puppet/provider/package/zypper.rb +22 -3
  219. data/lib/puppet/provider/parsedfile.rb +1 -12
  220. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +1 -1
  221. data/lib/puppet/provider/service/base.rb +1 -1
  222. data/lib/puppet/provider/service/daemontools.rb +3 -3
  223. data/lib/puppet/provider/service/debian.rb +1 -1
  224. data/lib/puppet/provider/service/init.rb +14 -20
  225. data/lib/puppet/provider/service/openrc.rb +3 -1
  226. data/lib/puppet/provider/service/redhat.rb +5 -8
  227. data/lib/puppet/provider/service/runit.rb +3 -2
  228. data/lib/puppet/provider/service/systemd.rb +1 -1
  229. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  230. data/lib/puppet/provider/sshkey/parsed.rb +0 -2
  231. data/lib/puppet/provider/user/aix.rb +25 -12
  232. data/lib/puppet/provider/user/directoryservice.rb +4 -7
  233. data/lib/puppet/provider/user/ldap.rb +0 -1
  234. data/lib/puppet/provider/user/user_role_add.rb +2 -0
  235. data/lib/puppet/provider/user/useradd.rb +1 -1
  236. data/lib/puppet/provider/zone/solaris.rb +1 -2
  237. data/lib/puppet/reference/metaparameter.rb +1 -1
  238. data/lib/puppet/reference/type.rb +1 -1
  239. data/lib/puppet/reports/rrdgraph.rb +1 -1
  240. data/lib/puppet/reports/tagmail.rb +1 -1
  241. data/lib/puppet/resource.rb +16 -4
  242. data/lib/puppet/resource/catalog.rb +111 -173
  243. data/lib/puppet/resource/status.rb +42 -3
  244. data/lib/puppet/resource/type.rb +33 -46
  245. data/lib/puppet/resource/type_collection.rb +19 -15
  246. data/lib/puppet/run.rb +5 -1
  247. data/lib/puppet/scheduler/scheduler.rb +14 -15
  248. data/lib/puppet/settings.rb +78 -41
  249. data/lib/puppet/settings/boolean_setting.rb +0 -2
  250. data/lib/puppet/settings/config_file.rb +0 -2
  251. data/lib/puppet/settings/directory_setting.rb +0 -2
  252. data/lib/puppet/settings/duration_setting.rb +0 -2
  253. data/lib/puppet/settings/enum_setting.rb +16 -0
  254. data/lib/puppet/settings/file_setting.rb +0 -2
  255. data/lib/puppet/settings/path_setting.rb +0 -2
  256. data/lib/puppet/settings/string_setting.rb +0 -3
  257. data/lib/puppet/settings/terminus_setting.rb +0 -2
  258. data/lib/puppet/ssl/certificate_authority.rb +102 -9
  259. data/lib/puppet/test/test_helper.rb +1 -0
  260. data/lib/puppet/transaction.rb +130 -292
  261. data/lib/puppet/transaction/additional_resource_generator.rb +126 -0
  262. data/lib/puppet/transaction/event.rb +16 -1
  263. data/lib/puppet/transaction/report.rb +34 -14
  264. data/lib/puppet/transaction/resource_harness.rb +16 -19
  265. data/lib/puppet/type.rb +59 -53
  266. data/lib/puppet/type/component.rb +0 -2
  267. data/lib/puppet/type/cron.rb +13 -2
  268. data/lib/puppet/type/exec.rb +5 -7
  269. data/lib/puppet/type/file.rb +9 -32
  270. data/lib/puppet/type/file/content.rb +4 -1
  271. data/lib/puppet/type/file/ctime.rb +3 -1
  272. data/lib/puppet/type/file/ensure.rb +1 -1
  273. data/lib/puppet/type/file/mode.rb +0 -1
  274. data/lib/puppet/type/file/mtime.rb +2 -1
  275. data/lib/puppet/type/group.rb +7 -9
  276. data/lib/puppet/type/host.rb +1 -2
  277. data/lib/puppet/type/mcx.rb +0 -1
  278. data/lib/puppet/type/mount.rb +38 -6
  279. data/lib/puppet/type/package.rb +2 -2
  280. data/lib/puppet/type/resources.rb +5 -4
  281. data/lib/puppet/type/schedule.rb +1 -4
  282. data/lib/puppet/type/selmodule.rb +1 -1
  283. data/lib/puppet/type/service.rb +1 -3
  284. data/lib/puppet/type/tidy.rb +3 -3
  285. data/lib/puppet/type/user.rb +9 -13
  286. data/lib/puppet/type/yumrepo.rb +11 -7
  287. data/lib/puppet/util.rb +14 -7
  288. data/lib/puppet/util/autoload.rb +0 -1
  289. data/lib/puppet/util/backups.rb +1 -3
  290. data/lib/puppet/util/classgen.rb +1 -1
  291. data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -3
  292. data/lib/puppet/util/command_line/trollop.rb +1 -1
  293. data/lib/puppet/util/constant_inflector.rb +1 -2
  294. data/lib/puppet/util/errors.rb +1 -0
  295. data/lib/puppet/util/file_watcher.rb +28 -0
  296. data/lib/puppet/util/fileparsing.rb +1 -3
  297. data/lib/puppet/util/filetype.rb +0 -1
  298. data/lib/puppet/util/http_proxy.rb +38 -0
  299. data/lib/puppet/util/ldap/manager.rb +1 -2
  300. data/lib/puppet/util/log.rb +31 -10
  301. data/lib/puppet/util/log/destinations.rb +0 -50
  302. data/lib/puppet/util/metric.rb +8 -1
  303. data/lib/puppet/util/monkey_patches.rb +14 -148
  304. data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
  305. data/lib/puppet/util/network_device/config.rb +6 -9
  306. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  307. data/lib/puppet/util/pidlock.rb +3 -0
  308. data/lib/puppet/util/posix.rb +1 -1
  309. data/lib/puppet/util/profiler.rb +1 -1
  310. data/lib/puppet/util/rdoc.rb +1 -1
  311. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +0 -1
  312. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -42
  313. data/lib/puppet/util/retryaction.rb +0 -1
  314. data/lib/puppet/util/symbolic_file_mode.rb +5 -1
  315. data/lib/puppet/util/tagging.rb +0 -2
  316. data/lib/puppet/util/warnings.rb +3 -0
  317. data/lib/puppet/util/watched_file.rb +37 -0
  318. data/lib/puppet/util/watcher.rb +17 -0
  319. data/lib/puppet/util/watcher/change_watcher.rb +33 -0
  320. data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
  321. data/lib/puppet/util/watcher/timer.rb +19 -0
  322. data/lib/puppet/util/windows/user.rb +1 -1
  323. data/lib/puppet/version.rb +1 -1
  324. data/lib/puppetx.rb +109 -0
  325. data/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
  326. data/lib/puppetx/puppet/hiera2_backend.rb +31 -0
  327. data/lib/puppetx/puppet/syntax_checker.rb +91 -0
  328. data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +39 -0
  329. data/lib/semver.rb +1 -1
  330. data/man/man8/puppet-kick.8 +1 -1
  331. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +15 -0
  332. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +18 -0
  333. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +8 -0
  334. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +1 -0
  335. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +10 -0
  336. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +19 -0
  337. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +1 -0
  338. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +11 -0
  339. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +1 -0
  340. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +3 -0
  341. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +13 -0
  342. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +4 -0
  343. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +11 -0
  344. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_scheme_handler.rb +18 -0
  345. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +1 -0
  346. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +3 -0
  347. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +9 -0
  348. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +2 -0
  349. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +11 -0
  350. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +9 -0
  351. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +9 -0
  352. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +9 -0
  353. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +5 -0
  354. data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +10 -0
  355. data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +8 -0
  356. data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +1 -0
  357. data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +7 -0
  358. data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +4 -0
  359. data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +2 -0
  360. data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +8 -0
  361. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/empty/common.yaml +0 -0
  362. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +1 -0
  363. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +2 -0
  364. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +2 -0
  365. data/spec/integration/agent/logging_spec.rb +178 -0
  366. data/spec/integration/configurer_spec.rb +1 -1
  367. data/spec/integration/defaults_spec.rb +0 -6
  368. data/spec/integration/network/authconfig_spec.rb +19 -0
  369. data/spec/integration/network/server/webrick_spec.rb +10 -11
  370. data/spec/integration/parser/catalog_spec.rb +85 -0
  371. data/spec/integration/provider/cron/crontab_spec.rb +11 -0
  372. data/spec/integration/provider/mount_spec.rb +1 -0
  373. data/spec/integration/transaction_spec.rb +8 -8
  374. data/spec/integration/type/file_spec.rb +1 -1
  375. data/spec/integration/util/settings_spec.rb +58 -11
  376. data/spec/lib/matchers/include_in_order.rb +21 -0
  377. data/spec/lib/matchers/include_in_order_spec.rb +30 -0
  378. data/spec/lib/matchers/relationship_graph_matchers.rb +48 -0
  379. data/spec/lib/puppet_spec/compiler.rb +24 -0
  380. data/spec/lib/puppet_spec/pops.rb +16 -0
  381. data/spec/spec_helper.rb +0 -1
  382. data/spec/unit/application/agent_spec.rb +145 -145
  383. data/spec/unit/application/apply_spec.rb +1 -1
  384. data/spec/unit/application/doc_spec.rb +1 -1
  385. data/spec/unit/application/face_base_spec.rb +3 -3
  386. data/spec/unit/application/facts_spec.rb +1 -0
  387. data/spec/unit/application/master_spec.rb +0 -15
  388. data/spec/unit/application/queue_spec.rb +6 -12
  389. data/spec/unit/application/resource_spec.rb +1 -1
  390. data/spec/unit/configurer/fact_handler_spec.rb +19 -50
  391. data/spec/unit/configurer_spec.rb +23 -7
  392. data/spec/unit/daemon_spec.rb +97 -121
  393. data/spec/unit/defaults_spec.rb +44 -0
  394. data/spec/unit/face/node_spec.rb +2 -2
  395. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -33
  396. data/spec/unit/file_serving/configuration_spec.rb +2 -2
  397. data/spec/unit/file_serving/mount/file_spec.rb +4 -4
  398. data/spec/unit/forge/repository_spec.rb +9 -29
  399. data/spec/unit/graph/key_spec.rb +41 -0
  400. data/spec/unit/{rb_tree_map_spec.rb → graph/rb_tree_map_spec.rb} +7 -7
  401. data/spec/unit/graph/relationship_graph_spec.rb +393 -0
  402. data/spec/unit/graph/sequential_prioritizer_spec.rb +32 -0
  403. data/spec/unit/{simple_graph_spec.rb → graph/simple_graph.rb} +42 -254
  404. data/spec/unit/graph/title_hash_prioritizer_spec.rb +49 -0
  405. data/spec/unit/hiera_puppet_spec.rb +1 -1
  406. data/spec/unit/indirector/catalog/active_record_spec.rb +4 -2
  407. data/spec/unit/indirector/catalog/compiler_spec.rb +20 -26
  408. data/spec/unit/indirector/face_spec.rb +1 -1
  409. data/spec/unit/indirector/facts/facter_spec.rb +11 -1
  410. data/spec/unit/indirector/facts/network_device_spec.rb +11 -1
  411. data/spec/unit/indirector/hiera_spec.rb +1 -1
  412. data/spec/unit/indirector/instrumentation_data/local_spec.rb +1 -1
  413. data/spec/unit/indirector/instrumentation_listener/local_spec.rb +1 -1
  414. data/spec/unit/indirector/request_spec.rb +92 -39
  415. data/spec/unit/indirector/rest_spec.rb +1 -0
  416. data/spec/unit/indirector_spec.rb +2 -2
  417. data/spec/unit/interface/option_builder_spec.rb +1 -0
  418. data/spec/unit/interface/option_spec.rb +1 -0
  419. data/spec/unit/interface_spec.rb +2 -2
  420. data/spec/unit/module_tool/applications/installer_spec.rb +49 -2
  421. data/spec/unit/module_tool/metadata_spec.rb +13 -0
  422. data/spec/unit/network/authstore_spec.rb +1 -1
  423. data/spec/unit/network/format_handler_spec.rb +33 -282
  424. data/spec/unit/network/format_support_spec.rb +199 -0
  425. data/spec/unit/network/formats_spec.rb +2 -2
  426. data/spec/unit/network/http/connection_spec.rb +88 -7
  427. data/spec/unit/network/http/handler_spec.rb +271 -249
  428. data/spec/unit/network/http/rack/rest_spec.rb +1 -1
  429. data/spec/unit/network/http/webrick/rest_spec.rb +73 -22
  430. data/spec/unit/network/http_pool_spec.rb +40 -0
  431. data/spec/unit/network/server_spec.rb +18 -207
  432. data/spec/unit/node/facts_spec.rb +68 -17
  433. data/spec/unit/other/selinux_spec.rb +24 -20
  434. data/spec/unit/parameter/boolean_spec.rb +25 -0
  435. data/spec/unit/parameter/value_collection_spec.rb +7 -7
  436. data/spec/unit/parameter_spec.rb +10 -13
  437. data/spec/unit/parser/ast/function_spec.rb +4 -4
  438. data/spec/unit/parser/ast/leaf_spec.rb +45 -6
  439. data/spec/unit/parser/collector_spec.rb +3 -3
  440. data/spec/unit/parser/compiler_spec.rb +4 -3
  441. data/spec/unit/parser/functions/create_resources_spec.rb +9 -25
  442. data/spec/unit/parser/functions/extlookup_spec.rb +2 -2
  443. data/spec/unit/parser/functions/hiera_include_spec.rb +12 -0
  444. data/spec/unit/parser/functions/lookup_spec.rb +96 -0
  445. data/spec/unit/parser/functions/regsubst_spec.rb +2 -2
  446. data/spec/unit/parser/functions/split_spec.rb +2 -2
  447. data/spec/unit/parser/functions/sprintf_spec.rb +1 -1
  448. data/spec/unit/parser/functions/versioncmp_spec.rb +2 -2
  449. data/spec/unit/parser/functions_spec.rb +7 -7
  450. data/spec/unit/parser/lexer_spec.rb +1 -1
  451. data/spec/unit/parser/methods/collect_spec.rb +43 -0
  452. data/spec/unit/parser/resource_spec.rb +9 -9
  453. data/spec/unit/parser/scope_spec.rb +45 -2
  454. data/spec/unit/parser/type_loader_spec.rb +159 -175
  455. data/spec/unit/pops/binder/binder_spec.rb +62 -0
  456. data/spec/unit/pops/binder/bindings_checker_spec.rb +196 -0
  457. data/spec/unit/pops/binder/bindings_composer_spec.rb +89 -0
  458. data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +18 -0
  459. data/spec/unit/pops/binder/config/binder_config_spec.rb +48 -0
  460. data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +74 -0
  461. data/spec/unit/pops/binder/hiera2/config_spec.rb +61 -0
  462. data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +33 -0
  463. data/spec/unit/pops/binder/injector_spec.rb +789 -0
  464. data/spec/unit/pops/containment_spec.rb +1 -0
  465. data/spec/unit/pops/issues_spec.rb +1 -1
  466. data/spec/unit/pops/parser/evaluating_parser_spec.rb +88 -0
  467. data/spec/unit/pops/parser/lexer_spec.rb +1 -1
  468. data/spec/unit/pops/parser/parse_calls_spec.rb +4 -0
  469. data/spec/unit/pops/parser/parser_spec.rb +1 -1
  470. data/spec/unit/pops/types/type_calculator_spec.rb +484 -0
  471. data/spec/unit/pops/types/type_factory_spec.rb +65 -0
  472. data/spec/unit/pops/types/type_parser_spec.rb +93 -0
  473. data/spec/unit/property/list_spec.rb +1 -1
  474. data/spec/unit/property/ordered_list_spec.rb +1 -1
  475. data/spec/unit/provider/aixobject_spec.rb +101 -0
  476. data/spec/unit/provider/augeas/augeas_spec.rb +14 -3
  477. data/spec/unit/provider/mcx/mcxcontent_spec.rb +52 -16
  478. data/spec/unit/provider/mount/parsed_spec.rb +44 -56
  479. data/spec/unit/provider/mount_spec.rb +11 -2
  480. data/spec/unit/provider/naginator_spec.rb +8 -0
  481. data/spec/unit/provider/package/apt_spec.rb +5 -1
  482. data/spec/unit/provider/package/aptitude_spec.rb +9 -5
  483. data/spec/unit/provider/package/aptrpm_spec.rb +2 -2
  484. data/spec/unit/provider/package/dpkg_spec.rb +274 -99
  485. data/spec/unit/provider/package/openbsd_spec.rb +84 -1
  486. data/spec/unit/provider/package/opkg_spec.rb +3 -3
  487. data/spec/unit/provider/package/pip_spec.rb +16 -0
  488. data/spec/unit/provider/package/pkgdmg_spec.rb +62 -7
  489. data/spec/unit/provider/package/rpm_spec.rb +112 -21
  490. data/spec/unit/provider/package/urpmi.rb +80 -0
  491. data/spec/unit/provider/package/windows/exe_package_spec.rb +1 -1
  492. data/spec/unit/provider/package/yum_spec.rb +85 -0
  493. data/spec/unit/provider/package/zypper_spec.rb +25 -6
  494. data/spec/unit/provider/parsedfile_spec.rb +3 -2
  495. data/spec/unit/provider/service/init_spec.rb +10 -10
  496. data/spec/unit/provider/service/openrc_spec.rb +16 -0
  497. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  498. data/spec/unit/provider/service/redhat_spec.rb +7 -0
  499. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +2 -2
  500. data/spec/unit/provider/user/aix_spec.rb +89 -0
  501. data/spec/unit/provider/user/directoryservice_spec.rb +11 -4
  502. data/spec/unit/provider/user/user_role_add_spec.rb +18 -0
  503. data/spec/unit/provider_spec.rb +2 -13
  504. data/spec/unit/reports/http_spec.rb +1 -1
  505. data/spec/unit/resource/catalog_spec.rb +23 -97
  506. data/spec/unit/resource/resource_type.json +34 -0
  507. data/spec/unit/resource/status_spec.rb +56 -0
  508. data/spec/unit/resource/type_collection_spec.rb +6 -6
  509. data/spec/unit/resource/type_spec.rb +25 -5
  510. data/spec/unit/resource_spec.rb +68 -24
  511. data/spec/unit/run_spec.rb +16 -0
  512. data/spec/unit/scheduler/scheduler_spec.rb +14 -27
  513. data/spec/unit/semver_spec.rb +5 -0
  514. data/spec/unit/settings/enum_setting_spec.rb +27 -0
  515. data/spec/unit/settings_spec.rb +53 -44
  516. data/spec/unit/ssl/certificate_authority_spec.rb +155 -19
  517. data/spec/unit/transaction/additional_resource_generator_spec.rb +419 -0
  518. data/spec/unit/transaction/event_manager_spec.rb +2 -2
  519. data/spec/unit/transaction/event_spec.rb +57 -0
  520. data/spec/unit/transaction/report_spec.rb +66 -0
  521. data/spec/unit/transaction/resource_harness_spec.rb +27 -20
  522. data/spec/unit/transaction_spec.rb +182 -390
  523. data/spec/unit/type/augeas_spec.rb +3 -3
  524. data/spec/unit/type/component_spec.rb +0 -9
  525. data/spec/unit/type/computer_spec.rb +1 -1
  526. data/spec/unit/type/cron_spec.rb +2 -2
  527. data/spec/unit/type/exec_spec.rb +4 -2
  528. data/spec/unit/type/file/content_spec.rb +11 -0
  529. data/spec/unit/type/file/group_spec.rb +1 -1
  530. data/spec/unit/type/file_spec.rb +16 -8
  531. data/spec/unit/type/mount_spec.rb +445 -259
  532. data/spec/unit/type/package_spec.rb +4 -4
  533. data/spec/unit/type/resources_spec.rb +30 -1
  534. data/spec/unit/type/user_spec.rb +26 -3
  535. data/spec/unit/type/yumrepo_spec.rb +7 -27
  536. data/spec/unit/type/zone_spec.rb +4 -1
  537. data/spec/unit/type_spec.rb +66 -33
  538. data/spec/unit/util/backups_spec.rb +3 -3
  539. data/spec/unit/util/http_proxy_spec.rb +83 -0
  540. data/spec/unit/util/log_spec.rb +79 -8
  541. data/spec/unit/util/metric_spec.rb +12 -0
  542. data/spec/unit/util/monkey_patches_spec.rb +6 -0
  543. data/spec/unit/util/network_device/config_spec.rb +26 -64
  544. data/spec/unit/util/pidlock_spec.rb +4 -1
  545. data/spec/unit/util/tagging_spec.rb +5 -9
  546. data/spec/unit/util/warnings_spec.rb +1 -1
  547. data/spec/unit/util/watched_file_spec.rb +52 -0
  548. data/spec/unit/util/watcher/periodic_watcher_spec.rb +52 -0
  549. data/spec/unit/util/watcher_spec.rb +56 -0
  550. data/spec/unit/util_spec.rb +16 -0
  551. metadata +2767 -2576
  552. data/ext/debian/puppet.manpages +0 -32
  553. data/ext/osx/PackageInfo.plist +0 -36
  554. data/ext/osx/createpackage.sh +0 -187
  555. data/ext/redhat/rundir-perms.patch +0 -28
  556. data/lib/puppet/external/base64.rb +0 -19
  557. data/lib/puppet/util/graph.rb +0 -27
  558. data/lib/puppet/util/loadedfile.rb +0 -61
  559. data/lib/puppet/util/log_paths.rb +0 -22
  560. data/lib/puppet/util/subclass_loader.rb +0 -78
  561. data/spec/monkey_patches/publicize_methods.rb +0 -11
  562. data/spec/unit/util/loadedfile_spec.rb +0 -71
@@ -9,7 +9,7 @@ class Puppet::Resource::Rest < Puppet::Indirector::REST
9
9
 
10
10
  def deserialize_save(content_type, body)
11
11
  # Body is [ral_res.to_resource, transaction.report]
12
- format = Puppet::Network::FormatHandler.protected_format(content_type)
12
+ format = Puppet::Network::FormatHandler.format_for(content_type)
13
13
  ary = format.intern(Array, body)
14
14
  [Puppet::Resource.from_pson(ary[0]), Puppet::Transaction::Report.from_pson(ary[1])]
15
15
  end
@@ -2,9 +2,26 @@ require 'puppet/resource/type'
2
2
  require 'puppet/indirector/code'
3
3
  require 'puppet/indirector/resource_type'
4
4
 
5
+ # The main terminus for Puppet::Resource::Type
6
+ #
7
+ # This exposes the known resource types from within Puppet. Only find
8
+ # and search are supported. When a request is received, Puppet will
9
+ # attempt to load all resource types (by parsing manifests and modules) and
10
+ # returns a description of the resource types found. The format of these
11
+ # objects is documented at {Puppet::Resource::Type}.
12
+ #
13
+ # @api public
5
14
  class Puppet::Indirector::ResourceType::Parser < Puppet::Indirector::Code
6
15
  desc "Return the data-form of a resource type."
7
16
 
17
+ # Find will return the first resource_type with the given name. It is
18
+ # not possible to specify the kind of the resource type.
19
+ #
20
+ # @param request [Puppet::Indirector::Request] The request object.
21
+ # The only parameters used from the request are `environment` and
22
+ # `key`, which corresponds to the resource type's `name` field.
23
+ # @return [Puppet::Resource::Type, nil]
24
+ # @api public
8
25
  def find(request)
9
26
  krt = request.environment.known_resource_types
10
27
 
@@ -20,19 +37,21 @@ class Puppet::Indirector::ResourceType::Parser < Puppet::Indirector::Code
20
37
  nil
21
38
  end
22
39
 
23
- # This is the "search" indirection method for resource types. It searches
24
- # through a specified environment for all custom declared classes
25
- # (a.k.a 'hostclasses'), defined types (a.k.a. 'definitions'), and nodes.
40
+ # Search for resource types using a regular expression. Unlike `find`, this
41
+ # allows you to filter the results by the "kind" of the resource type
42
+ # ("class", "defined_type", or "node"). All three are searched if no
43
+ # `kind` filter is given. This also accepts the special string "`*`"
44
+ # to return all resource type objects.
45
+ #
46
+ # @param request [Puppet::Indirector::Request] The request object. The
47
+ # `key` field holds the regular expression used to search, and
48
+ # `options[:kind]` holds the kind query parameter to filter the
49
+ # result as described above. The `environment` field specifies the
50
+ # environment used to load resources.
51
+ #
52
+ # @return [Array<Puppet::Resource::Type>, nil]
26
53
  #
27
- # @param [Puppet::Indirector::Request] request
28
- # Important properties of the request parameter:
29
- # 1. request.environment : The environment in which to look for types.
30
- # 2. request.key : A String that will be treated as a regular expression to
31
- # be matched against the names of the available types. You may also
32
- # pass a "*", which will match all available types.
33
- # 3. request.options[:kind] : a String that can be used to filter the output
34
- # to only return the desired kinds. The current supported values are
35
- # 'class', 'defined_type', and 'node'.
54
+ # @api public
36
55
  def search(request)
37
56
  krt = request.environment.known_resource_types
38
57
  # Make sure we've got all of the types loaded.
@@ -101,7 +101,7 @@ class Puppet::Interface
101
101
  def [](name, version)
102
102
  unless face = Puppet::Interface::FaceCollection[name, version]
103
103
  # REVISIT (#18042) no sense in rechecking if version == :current -- josh
104
- if current = Puppet::Interface::FaceCollection[name, :current]
104
+ if Puppet::Interface::FaceCollection[name, :current]
105
105
  raise Puppet::Error, "Could not find version #{version} of #{name}"
106
106
  else
107
107
  raise Puppet::Error, "Could not find Puppet Face #{name.to_s}"
@@ -7,9 +7,6 @@ class Puppet::Interface
7
7
 
8
8
  # We need to identify an indent: the minimum number of whitespace
9
9
  # characters at the start of any line in the text.
10
- #
11
- # Using split rather than each_line is because the later only takes a
12
- # block on Ruby 1.8.5 / Centos, and we support that. --daniel 2011-05-03
13
10
  indent = text.split(/\n/).map {|x| x.index(/[^\s]/) }.compact.min
14
11
 
15
12
  if indent > 0 then
@@ -79,7 +76,7 @@ class Puppet::Interface
79
76
 
80
77
  # @api private
81
78
  def build_synopsis(face, action = nil, arguments = nil)
82
- output = PrettyPrint.format do |s|
79
+ PrettyPrint.format do |s|
83
80
  s.text("puppet #{face}")
84
81
  s.text(" #{action}") unless action.nil?
85
82
  s.text(" ")
@@ -105,7 +102,6 @@ class Puppet::Interface
105
102
  display_global_options.sort.each do |option|
106
103
  wrap = %w{ [ ] }
107
104
  s.group(0, *wrap) do
108
- desc = Puppet.settings.setting(option).desc
109
105
  type = Puppet.settings.setting(option).default
110
106
  type ||= Puppet.settings.setting(option).type.to_s.upcase
111
107
  s.text "--#{option} #{type}"
@@ -134,11 +130,11 @@ class Puppet::Interface
134
130
  # Sets examples.
135
131
  # @param text [String] Example text
136
132
  # @api public
137
- # @returns [void]
133
+ # @return [void]
138
134
  # @dsl Faces
139
135
  # @overload examples
140
136
  # Returns documentation of examples
141
- # @returns [String] The examples
137
+ # @return [String] The examples
142
138
  # @api private
143
139
  attr_doc :examples
144
140
 
@@ -147,11 +143,11 @@ class Puppet::Interface
147
143
  # Sets optional notes.
148
144
  # @param text [String] The notes
149
145
  # @api public
150
- # @returns [void]
146
+ # @return [void]
151
147
  # @dsl Faces
152
148
  # @overload notes
153
149
  # Returns any optional notes
154
- # @returns [String] The notes
150
+ # @return [String] The notes
155
151
  # @api private
156
152
  attr_doc :notes
157
153
 
@@ -160,11 +156,11 @@ class Puppet::Interface
160
156
  # Sets the license text
161
157
  # @param text [String] the license text
162
158
  # @api public
163
- # @returns [void]
159
+ # @return [void]
164
160
  # @dsl Faces
165
161
  # @overload license
166
162
  # Returns the license
167
- # @returns [String] The license
163
+ # @return [String] The license
168
164
  # @api private
169
165
  attr_doc :license
170
166
 
@@ -84,7 +84,7 @@ class Puppet::Interface::Option
84
84
  unless found = declaration.match(/^-+(?:\[no-\])?([^ =]+)/) then
85
85
  raise ArgumentError, "Can't find a name in the declaration #{declaration.inspect}"
86
86
  end
87
- name = found.captures.first
87
+ found.captures.first
88
88
  end
89
89
 
90
90
  # @api private
@@ -57,7 +57,7 @@ class Puppet::Interface::OptionBuilder
57
57
  def after_action(&block)
58
58
  block or raise ArgumentError, "#{@option} after_action requires a block"
59
59
  if @option.after_action
60
- raise ArgumentError, "#{@option} already has a after_action set"
60
+ raise ArgumentError, "#{@option} already has an after_action set"
61
61
  end
62
62
  unless block.arity == 3 then
63
63
  raise ArgumentError, "after_action takes three arguments, action, args, and options"
@@ -131,7 +131,7 @@ module Manager
131
131
  def rmtype(name)
132
132
  # Then create the class.
133
133
 
134
- klass = rmclass(name, :hash => @types)
134
+ rmclass(name, :hash => @types)
135
135
 
136
136
  singleton_class.send(:remove_method, "new#{name}") if respond_to?("new#{name}")
137
137
  end
@@ -145,7 +145,7 @@ module Manager
145
145
  @types ||= {}
146
146
 
147
147
  # We are overwhelmingly symbols here, which usually match, so it is worth
148
- # having this special-case to return quickly. Like, 25K to 300 symbols to
148
+ # having this special-case to return quickly. Like, 25K symbols vs. 300
149
149
  # strings in this method. --daniel 2012-07-17
150
150
  return @types[name] if @types[name]
151
151
 
@@ -147,6 +147,12 @@ class Puppet::Module
147
147
  init_manifests + searched_manifests
148
148
  end
149
149
 
150
+ def all_manifests
151
+ return [] unless File.exists?(manifests)
152
+
153
+ Dir.glob(File.join(manifests, '**', '*.{rb,pp}'))
154
+ end
155
+
150
156
  def metadata_file
151
157
  return @metadata_file if defined?(@metadata_file)
152
158
 
@@ -234,7 +240,7 @@ class Puppet::Module
234
240
 
235
241
  dep_mod = begin
236
242
  environment.module_by_forge_name(forge_name)
237
- rescue => e
243
+ rescue
238
244
  nil
239
245
  end
240
246
 
@@ -17,7 +17,7 @@ module Puppet
17
17
  # Is this a directory that shouldn't be checksummed?
18
18
  #
19
19
  # TODO: Should this be part of Checksums?
20
- # TODO: Rename this method to reflect it's purpose?
20
+ # TODO: Rename this method to reflect its purpose?
21
21
  # TODO: Shouldn't this be used when building packages too?
22
22
  def self.artifact?(path)
23
23
  case File.basename(path)
@@ -47,6 +47,16 @@ module Puppet::ModuleTool
47
47
  elsif require_modulefile
48
48
  raise ArgumentError, "No Modulefile found."
49
49
  end
50
+ extra_metadata_path = File.join(@path, 'metadata.json')
51
+ if File.file?(extra_metadata_path)
52
+ File.open(extra_metadata_path) do |f|
53
+ begin
54
+ @metadata.extra_metadata = PSON.load(f)
55
+ rescue PSON::ParserError
56
+ raise ArgumentError, "Could not parse JSON #{extra_metadata_path}"
57
+ end
58
+ end
59
+ end
50
60
  end
51
61
  @metadata
52
62
  end
@@ -122,7 +122,7 @@ module Puppet::ModuleTool
122
122
 
123
123
  #
124
124
  # Resolve installation conflicts by checking if the requested module
125
- # or one of it's dependencies conflicts with an installed module.
125
+ # or one of its dependencies conflicts with an installed module.
126
126
  #
127
127
  # Conflicts occur under the following conditions:
128
128
  #
@@ -153,7 +153,10 @@ module Puppet::ModuleTool
153
153
  :version => release[:version][:vstring]
154
154
  }
155
155
  dependency = is_dependency ? dependency_info : nil
156
- latest_version = @versions["#{@module_name}"].sort_by { |h| h[:semver] }.last[:vstring]
156
+ all_versions = @versions["#{@module_name}"].sort_by { |h| h[:semver] }
157
+ versions = all_versions.select { |x| x[:semver].special == '' }
158
+ versions = all_versions if versions.empty?
159
+ latest_version = versions.last[:vstring]
157
160
 
158
161
  raise InstallConflictError,
159
162
  :requested_module => @module_name,
@@ -172,7 +175,7 @@ module Puppet::ModuleTool
172
175
  # Check if a file is a vaild module package.
173
176
  # ---
174
177
  # FIXME: Checking for a valid module package should be more robust and
175
- # use the acutal metadata contained in the package. 03132012 - Hightower
178
+ # use the actual metadata contained in the package. 03132012 - Hightower
176
179
  # +++
177
180
  #
178
181
  def is_module_package?(name)
@@ -2,6 +2,8 @@ module Puppet::ModuleTool
2
2
 
3
3
  class Dependency
4
4
 
5
+ attr_reader :full_module_name, :username, :name, :version_requirement, :repository
6
+
5
7
  # Instantiates a new module dependency with a +full_module_name+ (e.g.
6
8
  # "myuser-mymodule"), and optional +version_requirement+ (e.g. "0.0.1") and
7
9
  # optional repository (a URL string).
@@ -14,7 +14,7 @@ module Puppet::ModuleTool::Errors
14
14
  @installed_version = options[:installed_version]
15
15
  @dependency_name = options[:dependency_name]
16
16
  @conditions = options[:conditions]
17
- super "Could not upgrade '#{@module_name}'; module is not installed"
17
+ super "Could not upgrade '#{@module_name}';"
18
18
  end
19
19
 
20
20
  def multiline
@@ -79,6 +79,14 @@ module Puppet::ModuleTool
79
79
  @description = description
80
80
  end
81
81
 
82
+ def extra_metadata
83
+ @extra_metadata || {}
84
+ end
85
+
86
+ def extra_metadata=(extra_metadata)
87
+ @extra_metadata = extra_metadata
88
+ end
89
+
82
90
  def project_page
83
91
  @project_page || 'UNKNOWN'
84
92
  end
@@ -121,21 +129,25 @@ module Puppet::ModuleTool
121
129
  end
122
130
  end
123
131
 
132
+ def to_hash()
133
+ return extra_metadata.merge({
134
+ 'name' => @full_module_name,
135
+ 'version' => @version,
136
+ 'source' => source,
137
+ 'author' => author,
138
+ 'license' => license,
139
+ 'summary' => summary,
140
+ 'description' => description,
141
+ 'project_page' => project_page,
142
+ 'dependencies' => dependencies,
143
+ 'types' => types,
144
+ 'checksums' => checksums
145
+ })
146
+ end
147
+
124
148
  # Return the PSON record representing this instance.
125
149
  def to_pson(*args)
126
- return {
127
- :name => @full_module_name,
128
- :version => @version,
129
- :source => source,
130
- :author => author,
131
- :license => license,
132
- :summary => summary,
133
- :description => description,
134
- :project_page => project_page,
135
- :dependencies => dependencies,
136
- :types => types,
137
- :checksums => checksums
138
- }.to_pson(*args)
150
+ return to_hash.to_pson(*args)
139
151
  end
140
152
  end
141
153
  end
@@ -57,18 +57,18 @@ module Puppet::ModuleTool
57
57
  @metadata.license = license
58
58
  end
59
59
 
60
- # Set the summary
61
- def summary(summary)
60
+ # Set the summary
61
+ def summary(summary)
62
62
  @metadata.summary = summary
63
63
  end
64
64
 
65
- # Set the description
66
- def description(description)
65
+ # Set the description
66
+ def description(description)
67
67
  @metadata.description = description
68
- end
68
+ end
69
69
 
70
- # Set the project page
71
- def project_page(project_page)
70
+ # Set the project page
71
+ def project_page(project_page)
72
72
  @metadata.project_page = project_page
73
73
  end
74
74
  end
@@ -36,7 +36,7 @@ module Puppet::ModuleTool::Shared
36
36
  mod_name, releases = pair
37
37
  mod_name = mod_name.gsub('/', '-')
38
38
  releases.each do |rel|
39
- semver = SemVer.new(rel['version'] || '0.0.0') rescue SemVer.MIN
39
+ semver = SemVer.new(rel['version'] || '0.0.0') rescue SemVer::MIN
40
40
  @versions[mod_name] << { :vstring => rel['version'], :semver => semver }
41
41
  @versions[mod_name].sort! { |a, b| a[:semver] <=> b[:semver] }
42
42
  @urls["#{mod_name}@#{rel['version']}"] = rel['file']
@@ -107,7 +107,9 @@ module Puppet::ModuleTool::Shared
107
107
  @conditions.each { |_, conds| conds.delete_if { |c| c[:module] == mod } }
108
108
  end
109
109
 
110
- valid_versions = @versions["#{mod}"].select { |h| range === h[:semver] }
110
+ versions = @versions["#{mod}"].select { |h| range === h[:semver] }
111
+ valid_versions = versions.select { |x| x[:semver].special == '' }
112
+ valid_versions = versions if valid_versions.empty?
111
113
 
112
114
  unless version = valid_versions.last
113
115
  req_module = @module_name
@@ -23,7 +23,7 @@ module Puppet::ModuleTool
23
23
 
24
24
  # Return Pathname of custom templates directory.
25
25
  def custom_path
26
- Pathname(Puppet.settings[:module_working_dir]) + 'skeleton'
26
+ Pathname(Puppet.settings[:module_skeleton_dir])
27
27
  end
28
28
 
29
29
  # Return Pathname of default template directory.
@@ -15,16 +15,16 @@
15
15
  # Here you should define a list of variables that this module would require.
16
16
  #
17
17
  # [*sample_variable*]
18
- # Explanation of how this variable affects the funtion of this class and if it
19
- # has a default. e.g. "The parameter enc_ntp_servers must be set by the
18
+ # Explanation of how this variable affects the funtion of this class and if
19
+ # it has a default. e.g. "The parameter enc_ntp_servers must be set by the
20
20
  # External Node Classifier as a comma separated list of hostnames." (Note,
21
- # global variables should not be used in preference to class parameters as of
22
- # Puppet 2.6.)
21
+ # global variables should be avoided in favor of class parameters as
22
+ # of Puppet 2.6.)
23
23
  #
24
24
  # === Examples
25
25
  #
26
26
  # class { <%= metadata.name %>:
27
- # servers => [ 'pool.ntp.org', 'ntp.local.company.com' ]
27
+ # servers => [ 'pool.ntp.org', 'ntp.local.company.com' ],
28
28
  # }
29
29
  #
30
30
  # === Authors
@@ -2,10 +2,11 @@
2
2
  # should have a corresponding test manifest that declares that class or defined
3
3
  # type.
4
4
  #
5
- # Tests are then run by using puppet apply --noop (to check for compilation errors
6
- # and view a log of events) or by fully applying the test in a virtual environment
7
- # (to compare the resulting system state to the desired state).
5
+ # Tests are then run by using puppet apply --noop (to check for compilation
6
+ # errors and view a log of events) or by fully applying the test in a virtual
7
+ # environment (to compare the resulting system state to the desired state).
8
8
  #
9
- # Learn more about module testing here: http://docs.puppetlabs.com/guides/tests_smoke.html
9
+ # Learn more about module testing here:
10
+ # http://docs.puppetlabs.com/guides/tests_smoke.html
10
11
  #
11
12
  include <%= metadata.name %>
@@ -27,6 +27,9 @@ class AuthConfigParser
27
27
  name = $1.chomp
28
28
  right = rights.newright(name, count, @file)
29
29
  when /^\s*(allow(?:_ip)?|deny(?:_ip)?|method|environment|auth(?:enticated)?)\s+(.+?)(\s*#.*)?$/
30
+ if right.nil?
31
+ raise Puppet::ConfigurationError, "Missing or invalid 'path' before right directive at line #{count} of #{@file}"
32
+ end
30
33
  parse_right_directive(right, $1, $2, count)
31
34
  else
32
35
  raise Puppet::ConfigurationError, "Invalid line #{count}: #{line}"
@@ -1,4 +1,3 @@
1
- require 'puppet/util/loadedfile'
2
1
  require 'puppet/network/rights'
3
2
 
4
3
  module Puppet