puppet 3.5.1-x86-mingw32 → 3.6.0.rc1-x86-mingw32

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

Potentially problematic release.


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

Files changed (342) hide show
  1. data/CONTRIBUTING.md +5 -0
  2. data/Gemfile +17 -9
  3. data/README.md +1 -0
  4. data/conf/fileserver.conf +4 -3
  5. data/ext/README.environment +8 -0
  6. data/ext/build_defaults.yaml +1 -1
  7. data/ext/debian/control +2 -2
  8. data/ext/debian/puppet-common.dirs +4 -0
  9. data/ext/debian/rules +4 -0
  10. data/ext/emacs/puppet-mode-init.el +1 -1
  11. data/ext/emacs/puppet-mode.el +36 -17
  12. data/ext/redhat/client.init +3 -3
  13. data/ext/redhat/puppet.spec.erb +9 -0
  14. data/ext/systemd/puppet.service +3 -4
  15. data/ext/systemd/puppetmaster.service +1 -3
  16. data/install.rb +1 -1
  17. data/lib/puppet.rb +2 -1
  18. data/lib/puppet/agent.rb +1 -1
  19. data/lib/puppet/application.rb +17 -17
  20. data/lib/puppet/application/doc.rb +1 -1
  21. data/lib/puppet/configurer.rb +4 -1
  22. data/lib/puppet/configurer/downloader.rb +13 -12
  23. data/lib/puppet/configurer/plugin_handler.rb +3 -3
  24. data/lib/puppet/context.rb +6 -1
  25. data/lib/puppet/defaults.rb +82 -12
  26. data/lib/puppet/environments.rb +169 -13
  27. data/lib/puppet/external/nagios/grammar.ry +2 -0
  28. data/lib/puppet/external/nagios/parser.rb +28 -19
  29. data/lib/puppet/face/config.rb +19 -6
  30. data/lib/puppet/face/module/generate.rb +209 -7
  31. data/lib/puppet/face/module/install.rb +17 -16
  32. data/lib/puppet/face/module/list.rb +83 -82
  33. data/lib/puppet/face/module/search.rb +1 -1
  34. data/lib/puppet/face/module/upgrade.rb +10 -9
  35. data/lib/puppet/face/parser.rb +3 -2
  36. data/lib/puppet/face/plugin.rb +8 -4
  37. data/lib/puppet/file_bucket/dipper.rb +6 -3
  38. data/lib/puppet/file_bucket/file.rb +4 -2
  39. data/lib/puppet/file_serving/metadata.rb +1 -1
  40. data/lib/puppet/file_system/memory_file.rb +27 -1
  41. data/lib/puppet/file_system/memory_impl.rb +15 -1
  42. data/lib/puppet/forge.rb +148 -52
  43. data/lib/puppet/forge/cache.rb +5 -1
  44. data/lib/puppet/forge/errors.rb +10 -0
  45. data/lib/puppet/forge/repository.rb +61 -26
  46. data/lib/puppet/functions.rb +548 -0
  47. data/lib/puppet/functions/assert_type.rb +42 -0
  48. data/lib/puppet/functions/import.rb +7 -0
  49. data/lib/puppet/indirector/facts/facter.rb +1 -1
  50. data/lib/puppet/indirector/file_bucket_file/file.rb +3 -2
  51. data/lib/puppet/indirector/rest.rb +18 -0
  52. data/lib/puppet/loaders.rb +20 -0
  53. data/lib/puppet/module.rb +2 -2
  54. data/lib/puppet/module_tool.rb +40 -14
  55. data/lib/puppet/module_tool/applications.rb +0 -1
  56. data/lib/puppet/module_tool/applications/application.rb +35 -26
  57. data/lib/puppet/module_tool/applications/builder.rb +16 -6
  58. data/lib/puppet/module_tool/applications/checksummer.rb +25 -19
  59. data/lib/puppet/module_tool/applications/installer.rb +196 -35
  60. data/lib/puppet/module_tool/applications/searcher.rb +1 -0
  61. data/lib/puppet/module_tool/applications/uninstaller.rb +7 -1
  62. data/lib/puppet/module_tool/applications/unpacker.rb +57 -31
  63. data/lib/puppet/module_tool/applications/upgrader.rb +221 -65
  64. data/lib/puppet/module_tool/checksums.rb +5 -8
  65. data/lib/puppet/module_tool/errors/installer.rb +12 -44
  66. data/lib/puppet/module_tool/errors/shared.rb +84 -11
  67. data/lib/puppet/module_tool/errors/upgrader.rb +16 -45
  68. data/lib/puppet/module_tool/install_directory.rb +7 -6
  69. data/lib/puppet/module_tool/installed_modules.rb +92 -0
  70. data/lib/puppet/module_tool/local_tarball.rb +91 -0
  71. data/lib/puppet/module_tool/metadata.rb +119 -115
  72. data/lib/puppet/module_tool/modulefile.rb +9 -9
  73. data/lib/puppet/module_tool/shared_behaviors.rb +19 -7
  74. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +79 -0
  75. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +18 -0
  76. data/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +1 -0
  77. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +7 -0
  78. data/lib/puppet/module_tool/tar.rb +3 -7
  79. data/lib/puppet/module_tool/tar/gnu.rb +21 -9
  80. data/lib/puppet/module_tool/tar/mini.rb +2 -8
  81. data/lib/puppet/network/http/api/v1.rb +1 -1
  82. data/lib/puppet/network/http/api/v2/authorization.rb +4 -2
  83. data/lib/puppet/network/http/issues.rb +1 -0
  84. data/lib/puppet/network/http_pool.rb +15 -6
  85. data/lib/puppet/node/environment.rb +91 -20
  86. data/lib/puppet/parser/ast/pops_bridge.rb +44 -3
  87. data/lib/puppet/parser/collector.rb +1 -1
  88. data/lib/puppet/parser/compiler.rb +50 -7
  89. data/lib/puppet/parser/functions.rb +6 -0
  90. data/lib/puppet/parser/functions/generate.rb +1 -1
  91. data/lib/puppet/parser/resource.rb +1 -1
  92. data/lib/puppet/pops.rb +22 -1
  93. data/lib/puppet/pops/adapters.rb +8 -1
  94. data/lib/puppet/pops/binder/bindings_composer.rb +1 -1
  95. data/lib/puppet/pops/binder/bindings_factory.rb +1 -1
  96. data/lib/puppet/pops/binder/config/binder_config_checker.rb +1 -1
  97. data/lib/puppet/pops/binder/producers.rb +2 -2
  98. data/lib/puppet/pops/evaluator/access_operator.rb +65 -25
  99. data/lib/puppet/pops/evaluator/callable_signature.rb +101 -0
  100. data/lib/puppet/pops/evaluator/closure.rb +57 -2
  101. data/lib/puppet/pops/evaluator/compare_operator.rb +1 -1
  102. data/lib/puppet/pops/evaluator/evaluator_impl.rb +9 -11
  103. data/lib/puppet/pops/evaluator/runtime3_support.rb +72 -21
  104. data/lib/puppet/pops/functions/dispatch.rb +71 -0
  105. data/lib/puppet/pops/functions/dispatcher.rb +237 -0
  106. data/lib/puppet/pops/functions/function.rb +77 -0
  107. data/lib/puppet/pops/issues.rb +12 -0
  108. data/lib/puppet/pops/loader/base_loader.rb +102 -0
  109. data/lib/puppet/pops/loader/dependency_loader.rb +60 -0
  110. data/lib/puppet/pops/loader/gem_support.rb +49 -0
  111. data/lib/puppet/pops/loader/loader.rb +180 -0
  112. data/lib/puppet/pops/loader/loader_paths.rb +137 -0
  113. data/lib/puppet/pops/loader/module_loaders.rb +242 -0
  114. data/lib/puppet/pops/loader/null_loader.rb +44 -0
  115. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +34 -0
  116. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +109 -0
  117. data/lib/puppet/pops/loader/simple_environment_loader.rb +20 -0
  118. data/lib/puppet/pops/loader/static_loader.rb +69 -0
  119. data/lib/puppet/pops/loader/uri_helper.rb +22 -0
  120. data/lib/puppet/pops/loaders.rb +240 -0
  121. data/lib/puppet/pops/model/factory.rb +13 -5
  122. data/lib/puppet/pops/model/model_tree_dumper.rb +12 -4
  123. data/lib/puppet/pops/parser/egrammar.ra +31 -18
  124. data/lib/puppet/pops/parser/eparser.rb +1137 -1106
  125. data/lib/puppet/pops/parser/lexer2.rb +17 -16
  126. data/lib/puppet/pops/semantic_error.rb +17 -0
  127. data/lib/puppet/pops/types/type_calculator.rb +150 -15
  128. data/lib/puppet/pops/types/type_factory.rb +69 -0
  129. data/lib/puppet/pops/types/type_parser.rb +9 -0
  130. data/lib/puppet/pops/types/types.rb +65 -4
  131. data/lib/puppet/pops/validation/checker4_0.rb +1 -1
  132. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
  133. data/lib/puppet/property/list.rb +1 -1
  134. data/lib/puppet/provider/augeas/augeas.rb +2 -2
  135. data/lib/puppet/provider/cron/crontab.rb +13 -2
  136. data/lib/puppet/provider/package.rb +24 -0
  137. data/lib/puppet/provider/package/apt.rb +6 -1
  138. data/lib/puppet/provider/package/gem.rb +8 -2
  139. data/lib/puppet/provider/package/msi.rb +0 -15
  140. data/lib/puppet/provider/package/openbsd.rb +0 -24
  141. data/lib/puppet/provider/package/rpm.rb +3 -29
  142. data/lib/puppet/provider/package/windows.rb +0 -15
  143. data/lib/puppet/provider/package/yum.rb +101 -24
  144. data/lib/puppet/provider/package/yumhelper.py +31 -1
  145. data/lib/puppet/provider/package/zypper.rb +10 -28
  146. data/lib/puppet/provider/service/debian.rb +1 -1
  147. data/lib/puppet/provider/service/init.rb +3 -0
  148. data/lib/puppet/provider/service/openbsd.rb +318 -0
  149. data/lib/puppet/provider/service/redhat.rb +6 -3
  150. data/lib/puppet/provider/service/systemd.rb +2 -2
  151. data/lib/puppet/provider/yumrepo/inifile.rb +115 -42
  152. data/lib/puppet/resource.rb +13 -9
  153. data/lib/puppet/resource/catalog.rb +12 -6
  154. data/lib/puppet/resource/type_collection.rb +3 -3
  155. data/lib/puppet/settings.rb +57 -36
  156. data/lib/puppet/settings/config_file.rb +5 -0
  157. data/lib/puppet/settings/environment_conf.rb +147 -0
  158. data/lib/puppet/settings/ttl_setting.rb +48 -0
  159. data/lib/puppet/ssl/certificate_authority.rb +2 -3
  160. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +1 -1
  161. data/lib/puppet/ssl/certificate_request.rb +4 -4
  162. data/lib/puppet/ssl/validator/default_validator.rb +2 -2
  163. data/lib/puppet/status.rb +1 -1
  164. data/lib/puppet/test/test_helper.rb +1 -0
  165. data/lib/puppet/type/augeas.rb +13 -1
  166. data/lib/puppet/type/cron.rb +32 -18
  167. data/lib/puppet/type/file.rb +4 -2
  168. data/lib/puppet/type/file/checksum.rb +15 -5
  169. data/lib/puppet/type/file/content.rb +3 -1
  170. data/lib/puppet/type/file/source.rb +5 -5
  171. data/lib/puppet/type/package.rb +12 -17
  172. data/lib/puppet/type/resources.rb +3 -1
  173. data/lib/puppet/type/scheduled_task.rb +4 -5
  174. data/lib/puppet/type/service.rb +12 -2
  175. data/lib/puppet/type/user.rb +106 -0
  176. data/lib/puppet/type/yumrepo.rb +9 -1
  177. data/lib/puppet/util/checksums.rb +60 -1
  178. data/lib/puppet/util/diff.rb +3 -1
  179. data/lib/puppet/util/execution.rb +20 -16
  180. data/lib/puppet/util/feature.rb +3 -0
  181. data/lib/puppet/util/logging.rb +19 -12
  182. data/lib/puppet/util/rubygems.rb +10 -0
  183. data/lib/puppet/util/watched_file.rb +1 -1
  184. data/lib/puppet/util/windows/security.rb +5 -3
  185. data/lib/puppet/vendor/load_semantic.rb +1 -0
  186. data/lib/puppet/vendor/require_vendored.rb +2 -0
  187. data/lib/puppet/vendor/semantic/Gemfile +20 -0
  188. data/lib/puppet/vendor/semantic/Rakefile +69 -0
  189. data/lib/puppet/vendor/semantic/lib/semantic.rb +7 -0
  190. data/lib/puppet/vendor/semantic/lib/semantic/dependency.rb +181 -0
  191. data/lib/puppet/vendor/semantic/lib/semantic/dependency/graph.rb +60 -0
  192. data/lib/puppet/vendor/semantic/lib/semantic/dependency/graph_node.rb +117 -0
  193. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +46 -0
  194. data/lib/puppet/vendor/semantic/lib/semantic/dependency/source.rb +25 -0
  195. data/lib/puppet/vendor/semantic/lib/semantic/dependency/unsatisfiable_graph.rb +31 -0
  196. data/lib/puppet/vendor/semantic/lib/semantic/version.rb +168 -0
  197. data/lib/puppet/vendor/semantic/lib/semantic/version_range.rb +424 -0
  198. data/lib/puppet/vendor/semantic/spec/spec_helper.rb +24 -0
  199. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +141 -0
  200. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +162 -0
  201. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +143 -0
  202. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +5 -0
  203. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +44 -0
  204. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +383 -0
  205. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +307 -0
  206. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +608 -0
  207. data/lib/puppet/version.rb +1 -1
  208. data/spec/fixtures/java.tgz +0 -0
  209. data/spec/fixtures/stdlib.tgz +0 -0
  210. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/usee/lib/puppet/functions/usee/callee.rb +5 -0
  211. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/user/lib/puppet/functions/user/caller.rb +5 -0
  212. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/user/metadata.json +9 -0
  213. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb +5 -0
  214. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb +5 -0
  215. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp +3 -0
  216. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +19 -0
  217. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb +6 -0
  218. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp +3 -0
  219. data/spec/fixtures/unit/provider/naginator/define_empty_param +6 -0
  220. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +7 -0
  221. data/spec/fixtures/unit/type/user/authorized_keys +5 -0
  222. data/spec/integration/application/apply_spec.rb +1 -2
  223. data/spec/integration/configurer_spec.rb +2 -2
  224. data/spec/integration/faces/plugin_spec.rb +62 -0
  225. data/spec/integration/indirector/catalog/compiler_spec.rb +1 -1
  226. data/spec/integration/indirector/catalog/queue_spec.rb +1 -1
  227. data/spec/integration/node/environment_spec.rb +2 -2
  228. data/spec/integration/parser/future_compiler_spec.rb +96 -142
  229. data/spec/integration/parser/ruby_manifest_spec.rb +0 -5
  230. data/spec/integration/provider/cron/crontab_spec.rb +35 -0
  231. data/spec/integration/type/file_spec.rb +74 -72
  232. data/spec/integration/util/windows/security_spec.rb +17 -0
  233. data/spec/lib/matchers/resource.rb +45 -13
  234. data/spec/lib/puppet_spec/files.rb +18 -0
  235. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +56 -0
  236. data/spec/lib/puppet_spec/module_tool/stub_source.rb +133 -0
  237. data/spec/shared_contexts/checksums.rb +55 -0
  238. data/spec/unit/application/apply_spec.rb +10 -7
  239. data/spec/unit/application/doc_spec.rb +17 -10
  240. data/spec/unit/application/indirection_base_spec.rb +18 -10
  241. data/spec/unit/application/inspect_spec.rb +22 -20
  242. data/spec/unit/configurer/downloader_spec.rb +7 -6
  243. data/spec/unit/configurer/plugin_handler_spec.rb +5 -8
  244. data/spec/unit/configurer_spec.rb +1 -1
  245. data/spec/unit/context_spec.rb +23 -0
  246. data/spec/unit/environments_spec.rb +274 -16
  247. data/spec/unit/face/config_spec.rb +111 -11
  248. data/spec/unit/face/module/install_spec.rb +14 -85
  249. data/spec/unit/face/module/list_spec.rb +108 -62
  250. data/spec/unit/face/module/search_spec.rb +1 -1
  251. data/spec/unit/face/module/uninstall_spec.rb +21 -42
  252. data/spec/unit/face/parser_spec.rb +5 -2
  253. data/spec/unit/file_bucket/dipper_spec.rb +92 -86
  254. data/spec/unit/file_bucket/file_spec.rb +23 -75
  255. data/spec/unit/file_serving/metadata_spec.rb +74 -74
  256. data/spec/unit/forge/module_release_spec.rb +131 -0
  257. data/spec/unit/forge/repository_spec.rb +21 -20
  258. data/spec/unit/forge_spec.rb +99 -23
  259. data/spec/unit/functions/assert_type_spec.rb +59 -0
  260. data/spec/unit/functions4_spec.rb +671 -0
  261. data/spec/unit/indirector/catalog/static_compiler_spec.rb +2 -2
  262. data/spec/unit/indirector/facts/facter_spec.rb +9 -3
  263. data/spec/unit/indirector/file_bucket_file/file_spec.rb +156 -155
  264. data/spec/unit/indirector/rest_spec.rb +8 -0
  265. data/spec/unit/interface/face_collection_spec.rb +35 -23
  266. data/spec/unit/module_spec.rb +20 -8
  267. data/spec/unit/module_tool/applications/builder_spec.rb +40 -12
  268. data/spec/unit/module_tool/applications/checksummer_spec.rb +86 -105
  269. data/spec/unit/module_tool/applications/installer_spec.rb +293 -261
  270. data/spec/unit/module_tool/applications/searcher_spec.rb +1 -1
  271. data/spec/unit/module_tool/applications/uninstaller_spec.rb +90 -154
  272. data/spec/unit/module_tool/applications/unpacker_spec.rb +12 -12
  273. data/spec/unit/module_tool/applications/upgrader_spec.rb +286 -18
  274. data/spec/unit/module_tool/metadata_spec.rb +223 -14
  275. data/spec/unit/module_tool/tar/gnu_spec.rb +12 -9
  276. data/spec/unit/module_tool/tar/mini_spec.rb +1 -1
  277. data/spec/unit/module_tool/tar_spec.rb +4 -18
  278. data/spec/unit/module_tool_spec.rb +123 -27
  279. data/spec/unit/network/formats_spec.rb +2 -2
  280. data/spec/unit/network/http_pool_spec.rb +21 -0
  281. data/spec/unit/network/rights_spec.rb +10 -8
  282. data/spec/unit/node/environment_spec.rb +27 -2
  283. data/spec/unit/parser/collector_spec.rb +1 -1
  284. data/spec/unit/parser/compiler_spec.rb +1 -1
  285. data/spec/unit/parser/functions/generate_spec.rb +4 -0
  286. data/spec/unit/pops/evaluator/access_ops_spec.rb +50 -11
  287. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +25 -0
  288. data/spec/unit/pops/loaders/dependency_loader_spec.rb +44 -0
  289. data/spec/unit/pops/loaders/loader_paths_spec.rb +66 -0
  290. data/spec/unit/pops/loaders/loaders_spec.rb +105 -0
  291. data/spec/unit/pops/loaders/module_loaders_spec.rb +119 -0
  292. data/spec/unit/pops/loaders/static_loader_spec.rb +46 -0
  293. data/spec/unit/pops/types/type_calculator_spec.rb +145 -10
  294. data/spec/unit/pops/types/type_factory_spec.rb +101 -0
  295. data/spec/unit/pops/types/type_parser_spec.rb +22 -0
  296. data/spec/unit/property/list_spec.rb +9 -1
  297. data/spec/unit/provider/augeas/augeas_spec.rb +58 -11
  298. data/spec/unit/provider/cron/crontab_spec.rb +1 -0
  299. data/spec/unit/provider/cron/parsed_spec.rb +15 -0
  300. data/spec/unit/provider/naginator_spec.rb +14 -0
  301. data/spec/unit/provider/package/apt_spec.rb +78 -64
  302. data/spec/unit/provider/package/gem_spec.rb +15 -0
  303. data/spec/unit/provider/package/rpm_spec.rb +6 -6
  304. data/spec/unit/provider/package/windows_spec.rb +1 -1
  305. data/spec/unit/provider/package/yum_spec.rb +199 -104
  306. data/spec/unit/provider/package/zypper_spec.rb +41 -15
  307. data/spec/unit/provider/service/openbsd_spec.rb +129 -22
  308. data/spec/unit/provider/service/redhat_spec.rb +18 -4
  309. data/spec/unit/provider/service/systemd_spec.rb +5 -9
  310. data/spec/unit/provider/service/upstart_spec.rb +1 -1
  311. data/spec/unit/provider/user/directoryservice_spec.rb +10 -0
  312. data/spec/unit/provider/yumrepo/inifile_spec.rb +171 -15
  313. data/spec/unit/resource/catalog_spec.rb +20 -104
  314. data/spec/unit/resource/type_collection_spec.rb +10 -9
  315. data/spec/unit/settings/config_file_spec.rb +29 -6
  316. data/spec/unit/settings/environment_conf_spec.rb +51 -0
  317. data/spec/unit/settings_spec.rb +97 -12
  318. data/spec/unit/ssl/certificate_authority_spec.rb +2 -0
  319. data/spec/unit/type/augeas_spec.rb +1 -1
  320. data/spec/unit/type/cron_spec.rb +6 -7
  321. data/spec/unit/type/file/checksum_spec.rb +6 -0
  322. data/spec/unit/type/file/content_spec.rb +277 -207
  323. data/spec/unit/type/file_spec.rb +9 -7
  324. data/spec/unit/type/user_spec.rb +106 -18
  325. data/spec/unit/type/yumrepo_spec.rb +8 -0
  326. data/spec/unit/util/checksums_spec.rb +12 -5
  327. data/spec/unit/util/diff_spec.rb +8 -0
  328. data/spec/unit/util/execution_spec.rb +4 -4
  329. data/spec/unit/util/feature_spec.rb +2 -0
  330. data/spec/unit/util/logging_spec.rb +14 -4
  331. data/spec/unit/util/rdoc/parser_spec.rb +5 -4
  332. data/spec/unit/util/rubygems_spec.rb +14 -0
  333. data/tasks/parallel.rake +2 -2
  334. metadata +154 -21
  335. checksums.yaml +0 -7
  336. data/lib/puppet/module_tool/applications/generator.rb +0 -142
  337. data/lib/puppet/module_tool/skeleton.rb +0 -37
  338. data/lib/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +0 -11
  339. data/lib/puppet/module_tool/skeleton/templates/generator/README.erb +0 -16
  340. data/lib/puppet/module_tool/tar/solaris.rb +0 -5
  341. data/spec/fixtures/unit/provider/service/systemd/list_units_services +0 -17
  342. data/spec/unit/module_tool/tar/solaris_spec.rb +0 -22
@@ -76,6 +76,11 @@ a ticket number.
76
76
  * Submit a pull request to the repository in the puppetlabs organization.
77
77
  * Update your Jira ticket to mark that you have submitted code and are ready for it to be reviewed (Status: Ready for Merge).
78
78
  * Include a link to the pull request in the ticket.
79
+ * The core team looks at Pull Requests on a regular basis in a weekly triage
80
+ meeting that we hold in a public Google Hangout. The hangout is announced in
81
+ the weekly status updates that are sent to the puppet-dev list.
82
+ * After feedback has been given we expect responses within two weeks. After two
83
+ weeks will may close the pull request if it isn't showing any activity.
79
84
 
80
85
  # Additional Resources
81
86
 
data/Gemfile CHANGED
@@ -16,6 +16,11 @@ platforms :ruby do
16
16
  gem 'yard', :group => :development
17
17
  gem 'redcarpet', '~> 2.0', :group => :development
18
18
  gem "racc", "1.4.9", :group => :development
19
+
20
+ # To enable the augeas feature, use this gem.
21
+ # Note that it is a native gem, so the augeas headers/libs
22
+ # are neeed.
23
+ #gem 'ruby-augeas', :group => :development
19
24
  end
20
25
 
21
26
  gem "puppet", :path => File.dirname(__FILE__), :require => false
@@ -24,7 +29,6 @@ gem "hiera", *location_for(ENV['HIERA_LOCATION'] || '~> 1.0')
24
29
  gem "rake", "10.1.1", :require => false
25
30
  gem "rgen", "0.6.5", :require => false
26
31
 
27
-
28
32
  group(:development, :test) do
29
33
 
30
34
  # Jenkins workers may be using RSpec 2.9, so RSpec 2.11 syntax
@@ -38,12 +42,10 @@ group(:development, :test) do
38
42
 
39
43
  gem "yarjuf", "~> 1.0"
40
44
 
41
- # json-schema does not support windows, so use the 'ruby' platform to exclude it on windows
42
- platforms :ruby do
43
- # json-schema uses multi_json, but chokes with multi_json 1.7.9, so prefer 1.7.7
44
- gem "multi_json", "1.7.7", :require => false
45
- gem "json-schema", "2.1.1", :require => false
46
- end
45
+ # json-schema does not support windows, so omit it from the platforms list
46
+ # json-schema uses multi_json, but chokes with multi_json 1.7.9, so prefer 1.7.7
47
+ gem "multi_json", "1.7.7", :require => false, :platforms => [:ruby, :jruby]
48
+ gem "json-schema", "2.1.1", :require => false, :platforms => [:ruby, :jruby]
47
49
  end
48
50
 
49
51
  group(:development) do
@@ -61,10 +63,16 @@ group(:extra) do
61
63
  gem "couchrest", '~> 1.0', :require => false
62
64
  gem "net-ssh", '~> 2.1', :require => false
63
65
  gem "puppetlabs_spec_helper", :require => false
64
- gem "sqlite3", :require => false
65
66
  gem "stomp", :require => false
66
67
  gem "tzinfo", :require => false
67
- gem "msgpack", :require => false
68
+ case RUBY_PLATFORM
69
+ when 'java'
70
+ gem "jdbc-sqlite3", :require => false
71
+ gem "msgpack-jruby", :require => false
72
+ else
73
+ gem "sqlite3", :require => false
74
+ gem "msgpack", :require => false
75
+ end
68
76
  end
69
77
 
70
78
  require 'yaml'
data/README.md CHANGED
@@ -2,6 +2,7 @@ Puppet
2
2
  ======
3
3
 
4
4
  [![Build Status](https://travis-ci.org/puppetlabs/puppet.png?branch=master)](https://travis-ci.org/puppetlabs/puppet)
5
+ [![Inline docs](http://inch-pages.github.io/github/puppetlabs/puppet.png)](http://inch-pages.github.io/github/puppetlabs/puppet)
5
6
 
6
7
  Puppet, an automated administrative engine for your Linux, Unix, and Windows systems, performs
7
8
  administrative tasks (such as adding users, installing packages, and updating server
@@ -30,12 +30,13 @@
30
30
  # Every static mount point should have an `allow *` line; setting more
31
31
  # granular permissions in this file is deprecated. Instead, you can
32
32
  # control file access in auth.conf by controlling the
33
- # /file_metadata/<mount point> and /file_content/<mount point> paths:
33
+ # /file_metadata(s)/<mount point> and /file_content(s)/<mount point> paths.
34
+ # For example:
34
35
  #
35
- # path ~ ^/file_(metadata|content)/extra_files/
36
+ # path ~ ^/file_(metadata|content)s?/extra_files/
36
37
  # auth yes
37
38
  # allow /^(.+)\.example\.com$/
38
39
  # allow_ip 192.168.100.0/24
39
40
  #
40
- # If added to auth.conf BEFORE the "path /file" rule, the rule above
41
+ # If added to auth.conf BEFORE the default "path /file" rule, this rule
41
42
  # will add stricter restrictions to the extra_files mount point.
@@ -0,0 +1,8 @@
1
+ This is an example environment directory. The environment's modules can be
2
+ placed in a "modules" subdirectory. The environments initial manifests are
3
+ placed in a "manifests" subdirectory. By default the environment also has any
4
+ modules that are installed globally (normally in /etc/puppet/modules) for the
5
+ puppet master.
6
+
7
+ For more information see
8
+ http://docs.puppetlabs.com/puppet/latest/reference/environments.html
@@ -2,7 +2,7 @@
2
2
  packaging_url: 'git://github.com/puppetlabs/packaging.git --branch=master'
3
3
  packaging_repo: 'packaging'
4
4
  default_cow: 'base-squeeze-i386.cow'
5
- cows: 'base-lucid-i386.cow base-precise-i386.cow base-quantal-i386.cow base-raring-i386.cow base-squeeze-i386.cow base-stable-i386.cow base-testing-i386.cow base-wheezy-i386.cow base-saucy-i386.cow'
5
+ cows: 'base-lucid-i386.cow base-precise-i386.cow base-quantal-i386.cow base-squeeze-i386.cow base-stable-i386.cow base-testing-i386.cow base-trusty-i386.cow base-wheezy-i386.cow base-saucy-i386.cow'
6
6
  pbuild_conf: '/etc/pbuilderrc'
7
7
  packager: 'puppetlabs'
8
8
  gpg_name: 'info@puppetlabs.com'
@@ -3,7 +3,7 @@ Section: admin
3
3
  Priority: optional
4
4
  Maintainer: Puppet Labs <info@puppetlabs.com>
5
5
  Uploaders: Micah Anderson <micah@debian.org>, Andrew Pollock <apollock@debian.org>, Nigel Kersten <nigel@explanatorygap.net>, Stig Sandbeck Mathisen <ssm@debian.org>
6
- Build-Depends-Indep: ruby | ruby-interpreter, libopenssl-ruby | libopenssl-ruby1.9.1, facter (>= 1.7.0)
6
+ Build-Depends-Indep: ruby | ruby-interpreter, libopenssl-ruby | libopenssl-ruby1.9.1 | libruby (>= 1:1.9.3.4), facter (>= 1.7.0), hiera (>= 1.0.0)
7
7
  Build-Depends: debhelper (>= 7.0.0), openssl
8
8
  Standards-Version: 3.9.1
9
9
  Vcs-Git: git://github.com/puppetlabs/puppet
@@ -11,7 +11,7 @@ Homepage: http://projects.puppetlabs.com/projects/puppet
11
11
 
12
12
  Package: puppet-common
13
13
  Architecture: all
14
- Depends: ${misc:Depends}, ruby | ruby-interpreter, libxmlrpc-ruby, libopenssl-ruby | libopenssl-ruby1.9.1, ruby-shadow | libshadow-ruby1.8, libaugeas-ruby | libaugeas-ruby1.9.1 | libaugeas-ruby1.8, adduser, lsb-base, sysv-rc (>= 2.86) | file-rc, hiera (>= 1.0.0), facter (>= 1.7.0), ruby-rgen (>= 0.6.5), libjson-ruby | ruby-json
14
+ Depends: ${misc:Depends}, ruby | ruby-interpreter, libopenssl-ruby | libopenssl-ruby1.9.1 | libruby (>= 1:1.9.3.4), ruby-shadow | libshadow-ruby1.8, libaugeas-ruby | libaugeas-ruby1.9.1 | libaugeas-ruby1.8, adduser, lsb-base, sysv-rc (>= 2.86) | file-rc, hiera (>= 1.0.0), facter (>= 1.7.0), ruby-rgen (>= 0.6.5), libjson-ruby | ruby-json
15
15
  Recommends: lsb-release, debconf-utils
16
16
  Suggests: ruby-selinux | libselinux-ruby1.8, librrd-ruby1.9.1 | librrd-ruby1.8
17
17
  Breaks: puppet (<< 2.6.0~rc2-1), puppetmaster (<< 0.25.4-1)
@@ -1,4 +1,8 @@
1
1
  etc/puppet
2
+ etc/puppet/environments
3
+ etc/puppet/environments/example_env
4
+ etc/puppet/environments/example_env/modules
5
+ etc/puppet/environments/example_env/manifests
2
6
  etc/puppet/manifests
3
7
  etc/puppet/templates
4
8
  etc/puppet/modules
@@ -73,6 +73,10 @@ install: build
73
73
  $(INSTALL) -m0644 ext/rack/example-passenger-vhost.conf \
74
74
  $(CURDIR)/debian/puppetmaster-passenger/usr/share/puppetmaster-passenger/apache2.site.conf.tmpl
75
75
 
76
+ # Install example environment README
77
+ $(INSTALL) -m0644 ext/README.environment \
78
+ $(CURDIR)/debian/puppet-common/etc/puppet/environments/example_env/README.environment
79
+
76
80
  # Add ext directory
77
81
  cp -pr ext $(CURDIR)/debian/puppet-common/usr/share/puppet
78
82
  # Remove misc packaging artifacts not applicable to debian
@@ -3,4 +3,4 @@
3
3
  ;;
4
4
  (autoload 'puppet-mode "puppet-mode" "Major mode for editing puppet manifests")
5
5
 
6
- (add-to-list 'auto-mode-alist '("\\.pp$" . puppet-mode))
6
+ (add-to-list 'auto-mode-alist '("\\.pp\\'" . puppet-mode))
@@ -9,7 +9,7 @@
9
9
  ;; Russ Allbery <rra@stanford.edu>
10
10
  ;; Maintainer: Russ Allbery <rra@stanford.edu>
11
11
  ;; Created: 2006-02-07
12
- ;; Version: 1.1
12
+ ;; Version: 1.2
13
13
  ;; Keywords: languages
14
14
 
15
15
  ;; This file is part of Puppet.
@@ -28,7 +28,7 @@
28
28
 
29
29
  ;;; Code:
30
30
 
31
- (defconst puppet-mode-version "1.1")
31
+ (defconst puppet-mode-version "1.2")
32
32
 
33
33
  (defvar puppet-mode-abbrev-table nil
34
34
  "Abbrev table in use in puppet-mode buffers.")
@@ -165,17 +165,23 @@ we should use, or nil if we can't determine one."
165
165
  ((puppet-comment-line-p)
166
166
  (if (bobp) 0 nil))
167
167
 
168
- ;; Brace or paren on a line by itself will already be indented to the right
169
- ;; level, so we can cheat and stop there.
168
+ ;; Closing brace or paren on a line by itself will already be indented to
169
+ ;; the right level, so we can cheat and stop there.
170
170
  ((looking-at "^\\s-*[\)}]\\s-*$")
171
171
  (current-indentation))
172
172
 
173
- ;; Brace (possibly followed by a comma) or paren not on a line by itself
174
- ;; will be indented one level too much, but don't catch cases where the
175
- ;; block is started and closed on the same line.
176
- ((looking-at "^[^\n\({]*[\)}],?\\s-*$")
173
+ ;; Closing brace or paren not on a line by itself will be indented one
174
+ ;; level too much, but don't catch cases where the block is started and
175
+ ;; closed on the same line.
176
+ ((looking-at "^[^\n\({]*[\)}]\\s-*$")
177
177
  (- (current-indentation) puppet-indent-level))
178
178
 
179
+ ;; Closing brace followed by a comma ends a selector within a resource and
180
+ ;; will be indented just the right amount. Take similar precautions about
181
+ ;; blocks started and closed on the same line.
182
+ ((looking-at "^[^\n\({]*},\\s-*$")
183
+ (current-indentation))
184
+
179
185
  ;; Indent by one level more than the start of our block. We lose if there
180
186
  ;; is more than one block opened and closed on the same line but it's still
181
187
  ;; unbalanced; hopefully people don't do that.
@@ -183,7 +189,7 @@ we should use, or nil if we can't determine one."
183
189
  (+ (current-indentation) puppet-indent-level))
184
190
 
185
191
  ;; Indent by one level if the line ends with an open paren.
186
- ((looking-at "^.*\(\\s-*$")
192
+ ((looking-at "^.*(\\s-*$")
187
193
  (+ (current-indentation) puppet-indent-level))
188
194
 
189
195
  ;; Semicolon ends a block for a resource when multiple resources are
@@ -192,6 +198,17 @@ we should use, or nil if we can't determine one."
192
198
  ((looking-at "^\\([^'\":\n]\\|\"[^\n\"]*\"\\|'[^\n']*'\\)*;\\s-*$")
193
199
  (- (current-indentation) puppet-indent-level))
194
200
 
201
+ ;; The line following the end of an array and a : should be indented one
202
+ ;; level more than the indentation of the start of the array.
203
+ ((looking-at "^.*\\]\\s-*:\\s-*$")
204
+ (let ((array-start (puppet-in-array)))
205
+ (if array-start
206
+ (save-excursion
207
+ (beginning-of-line)
208
+ (goto-char array-start)
209
+ (+ (current-indentation) puppet-indent-level))
210
+ (+ (current-indentation) puppet-indent-level))))
211
+
195
212
  ;; Indent an extra level after : since it introduces a resource.
196
213
  ((looking-at "^.*:\\s-*$")
197
214
  (+ (current-indentation) puppet-indent-level))
@@ -264,9 +281,10 @@ worrying about saving the excursion."
264
281
  (forward-line -1)
265
282
  (setq cur-indent (puppet-analyze-indent))))))
266
283
 
267
- ;; If this line contains only a closing paren, we should lose one
268
- ;; level of indentation.
269
- (if (looking-at "^\\s-*\)\\s-*$")
284
+ ;; If this line contains only a closing paren or a closing paren
285
+ ;; followed by an opening brace, we added one too many levels of
286
+ ;; indentation and should lose one level.
287
+ (if (looking-at "^\\s-*)\\s-*\\({\\s-*\\)?$")
270
288
  (setq cur-indent (- cur-indent puppet-indent-level)))))
271
289
 
272
290
  ;; We've figured out the indentation, so do it.
@@ -291,8 +309,9 @@ worrying about saving the excursion."
291
309
  tbl))
292
310
 
293
311
  ;; Stupid hack required to allow me to assign a default face to something.
294
- ;; WTF, font-lock mode?
295
- (defvar puppet-font-lock-default-face 'default)
312
+ ;; WTF, font-lock mode? Not required on XEmacs (and breaks XEmacs).
313
+ (if (not (string-match "XEmacs" emacs-version))
314
+ (defvar puppet-font-lock-default-face 'default))
296
315
 
297
316
  (defvar puppet-font-lock-keywords
298
317
  (list
@@ -310,9 +329,9 @@ worrying about saving the excursion."
310
329
  ;; usage of types
311
330
  '("^\\s *\\([a-z][a-zA-Z0-9_:-]*\\)\\s +{"
312
331
  1 font-lock-type-face)
313
- ;; overrides and type references
314
- '("\\s +\\([A-Z][a-zA-Z0-9_:-]*\\)\\["
315
- 1 font-lock-type-face)
332
+ ;; overrides, type references, and defaults
333
+ '("\\(\\s \\|[\\[]\\)\\([A-Z][a-zA-Z0-9_:-]*\\)\\s *[\\[{]"
334
+ 2 font-lock-type-face)
316
335
  ;; general delimited string
317
336
  '("\\(^\\|[[ \t\n<+(,=]\\)\\(%[xrqQwW]?\\([^<[{(a-zA-Z0-9 \n]\\)[^\n\\\\]*\\(\\\\.[^\n\\\\]*\\)*\\(\\3\\)\\)"
318
337
  2 font-lock-string-face)
@@ -10,6 +10,9 @@
10
10
  # processname: puppet
11
11
  # config: /etc/sysconfig/puppet
12
12
 
13
+ # Source function library.
14
+ . /etc/rc.d/init.d/functions
15
+
13
16
  PATH=/usr/bin:/sbin:/bin:/usr/sbin
14
17
  export PATH
15
18
 
@@ -19,9 +22,6 @@ pidfile=${PIDFILE-/var/run/puppet/agent.pid}
19
22
  puppetd=${PUPPETD-/usr/bin/puppet}
20
23
  RETVAL=0
21
24
 
22
- # Source function library.
23
- . /etc/rc.d/init.d/functions
24
-
25
25
  PUPPET_OPTS="agent "
26
26
  [ -n "${PUPPET_SERVER}" ] && PUPPET_OPTS="${PUPPET_OPTS} --server=${PUPPET_SERVER}"
27
27
  [ -n "$PUPPET_LOG" ] && PUPPET_OPTS="${PUPPET_OPTS} --logdest=${PUPPET_LOG}"
@@ -39,6 +39,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
39
39
  BuildRequires: facter >= 1:1.7.0
40
40
  # Puppet 3.x drops ruby 1.8.5 support and adds ruby 1.9 support
41
41
  BuildRequires: ruby >= 1.8.7
42
+ BuildRequires: hiera >= 1.0.0
42
43
  BuildArch: noarch
43
44
  Requires: ruby >= 1.8
44
45
  Requires: ruby-shadow
@@ -114,6 +115,8 @@ find examples/ -type f | xargs --no-run-if-empty chmod a-x
114
115
  rm -rf %{buildroot}
115
116
  ruby install.rb --destdir=%{buildroot} --quick --no-rdoc --sitelibdir=%{puppet_libdir}
116
117
 
118
+ install -d -m0755 %{buildroot}%{_sysconfdir}/puppet/environments/example_env/manifests
119
+ install -d -m0755 %{buildroot}%{_sysconfdir}/puppet/environments/example_env/modules
117
120
  install -d -m0755 %{buildroot}%{_sysconfdir}/puppet/manifests
118
121
  install -d -m0755 %{buildroot}%{_datadir}/%{name}/modules
119
122
  install -d -m0755 %{buildroot}%{_localstatedir}/lib/puppet
@@ -140,6 +143,7 @@ install -Dp -m0755 %{confdir}/queue.init %{buildroot}%{_initrddir}/puppetqueue
140
143
  install -Dp -m0644 %{confdir}/fileserver.conf %{buildroot}%{_sysconfdir}/puppet/fileserver.conf
141
144
  install -Dp -m0644 %{confdir}/puppet.conf %{buildroot}%{_sysconfdir}/puppet/puppet.conf
142
145
  install -Dp -m0644 %{confdir}/logrotate %{buildroot}%{_sysconfdir}/logrotate.d/puppet
146
+ install -Dp -m0644 ext/README.environment %{buildroot}%{_sysconfdir}/puppet/environments/example_env/README.environment
143
147
 
144
148
  # Install the ext/ directory to %%{_datadir}/%%{name}
145
149
  install -d %{buildroot}%{_datadir}/%{name}
@@ -272,6 +276,11 @@ cp -pr ext/puppet-nm-dispatcher \
272
276
  %endif
273
277
  %config(noreplace) %{_sysconfdir}/puppet/fileserver.conf
274
278
  %dir %{_sysconfdir}/puppet/manifests
279
+ %dir %{_sysconfdir}/puppet/environments
280
+ %dir %{_sysconfdir}/puppet/environments/example_env
281
+ %dir %{_sysconfdir}/puppet/environments/example_env/manifests
282
+ %dir %{_sysconfdir}/puppet/environments/example_env/modules
283
+ %{_sysconfdir}/puppet/environments/example_env/README.environment
275
284
  %{_mandir}/man8/puppet-ca.8.gz
276
285
  %{_mandir}/man8/puppet-master.8.gz
277
286
 
@@ -1,13 +1,12 @@
1
1
  [Unit]
2
2
  Description=Puppet agent
3
3
  Wants=basic.target
4
- After=basic.target network.target
4
+ After=basic.target network.target puppetmaster.service
5
5
 
6
6
  [Service]
7
- Type=forking
8
7
  EnvironmentFile=-/etc/sysconfig/puppetagent
9
- PIDFile=/run/puppet/agent.pid
10
- ExecStart=/usr/bin/puppet agent $PUPPET_EXTRA_OPTS
8
+ EnvironmentFile=-/etc/sysconfig/puppet
9
+ ExecStart=/usr/bin/puppet agent ${PUPPET_EXTRA_OPTS} --no-daemonize
11
10
 
12
11
  [Install]
13
12
  WantedBy=multi-user.target
@@ -4,10 +4,8 @@ Wants=basic.target
4
4
  After=basic.target network.target
5
5
 
6
6
  [Service]
7
- Type=forking
8
7
  EnvironmentFile=-/etc/sysconfig/puppetmaster
9
- PIDFile=/run/puppet/master.pid
10
- ExecStart=/usr/bin/puppet master $PUPPETMASTER_EXTRA_OPTS
8
+ ExecStart=/usr/bin/puppet master ${PUPPETMASTER_EXTRA_OPTS} --no-daemonize
11
9
 
12
10
  [Install]
13
11
  WantedBy=multi-user.target
data/install.rb CHANGED
@@ -51,7 +51,7 @@ rescue LoadError
51
51
  $haverdoc = false
52
52
  end
53
53
 
54
- PREREQS = %w{openssl facter cgi}
54
+ PREREQS = %w{openssl facter cgi hiera}
55
55
  MIN_FACTER_VERSION = 1.5
56
56
 
57
57
  InstallOptions = OpenStruct.new
@@ -152,6 +152,7 @@ module Puppet
152
152
  Puppet.settings.initialize_app_defaults(Puppet::Settings.app_defaults_for_run_mode(run_mode))
153
153
  Puppet.push_context(Puppet.base_context(Puppet.settings), "Initial context after settings initialization")
154
154
  Puppet::Parser::Functions.reset
155
+ Puppet::Util::Log.level = Puppet[:log_level]
155
156
  end
156
157
  private_class_method :do_initialize_settings_for_run_mode
157
158
 
@@ -190,7 +191,7 @@ module Puppet
190
191
  end
191
192
 
192
193
  {
193
- :environments => Puppet::Environments::Combined.new(*loaders)
194
+ :environments => Puppet::Environments::Cached.new(*loaders)
194
195
  }
195
196
  end
196
197
 
@@ -20,7 +20,7 @@ class Puppet::Agent
20
20
  end
21
21
 
22
22
  def can_fork?
23
- Puppet.features.posix?
23
+ Puppet.features.posix? && RUBY_PLATFORM != 'java'
24
24
  end
25
25
 
26
26
  def needing_restart?
@@ -353,23 +353,23 @@ class Application
353
353
  plugin_hook('initialize_app_defaults') { initialize_app_defaults }
354
354
  end
355
355
 
356
- new_context = Puppet.base_context(Puppet.settings)
357
- configured_environment = new_context[:environments].get(Puppet[:environment])
358
- configured_environment = configured_environment.override_from_commandline(Puppet.settings)
359
- new_context[:current_environment] = configured_environment
360
-
361
- # Setup a new context using the app's configuration
362
- Puppet.override(new_context,
363
- "New base context and current environment from application's configuration") do
364
- require 'puppet'
365
- require 'puppet/util/instrumentation'
366
- Puppet::Util::Instrumentation.init
367
-
368
- exit_on_fail("initialize") { plugin_hook('preinit') { preinit } }
369
- exit_on_fail("parse application options") { plugin_hook('parse_options') { parse_options } }
370
- exit_on_fail("prepare for execution") { plugin_hook('setup') { setup } }
371
- exit_on_fail("configure routes from #{Puppet[:route_file]}") { configure_indirector_routes }
372
- exit_on_fail("run") { plugin_hook('run_command') { run_command } }
356
+ Puppet.override(Puppet.base_context(Puppet.settings)) do
357
+ configured_environment = Puppet.lookup(:environments).get(Puppet[:environment])
358
+ configured_environment = configured_environment.override_from_commandline(Puppet.settings)
359
+
360
+ # Setup a new context using the app's configuration
361
+ Puppet.override({ :current_environment => configured_environment },
362
+ "New base context and current environment from application's configuration") do
363
+ require 'puppet'
364
+ require 'puppet/util/instrumentation'
365
+ Puppet::Util::Instrumentation.init
366
+
367
+ exit_on_fail("initialize") { plugin_hook('preinit') { preinit } }
368
+ exit_on_fail("parse application options") { plugin_hook('parse_options') { parse_options } }
369
+ exit_on_fail("prepare for execution") { plugin_hook('setup') { setup } }
370
+ exit_on_fail("configure routes from #{Puppet[:route_file]}") { configure_indirector_routes }
371
+ exit_on_fail("run") { plugin_hook('run_command') { run_command } }
372
+ end
373
373
  end
374
374
  end
375
375
 
@@ -173,7 +173,7 @@ HELP
173
173
  unless @manifest
174
174
  env = Puppet.lookup(:environments).get(Puppet[:environment])
175
175
  files += env.modulepath
176
- files << ::File.dirname(env[:manifest])
176
+ files << ::File.dirname(env.manifest)
177
177
  end
178
178
  files += command_line.args
179
179
  Puppet.info "scanning: #{files.inspect}"