puppet 6.17.0-x86-mingw32 → 7.1.0-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 (622) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +3 -4
  4. data/Gemfile.lock +32 -30
  5. data/README.md +2 -3
  6. data/Rakefile +4 -12
  7. data/conf/fileserver.conf +5 -10
  8. data/ext/build_defaults.yaml +1 -1
  9. data/ext/osx/file_mapping.yaml +0 -5
  10. data/ext/project_data.yaml +2 -14
  11. data/ext/redhat/puppet.spec.erb +0 -1
  12. data/ext/windows/service/daemon.rb +6 -5
  13. data/install.rb +21 -17
  14. data/lib/puppet.rb +11 -20
  15. data/lib/puppet/agent/locker.rb +0 -7
  16. data/lib/puppet/application.rb +172 -98
  17. data/lib/puppet/application/agent.rb +8 -3
  18. data/lib/puppet/application/apply.rb +18 -20
  19. data/lib/puppet/application/device.rb +100 -104
  20. data/lib/puppet/application/doc.rb +1 -1
  21. data/lib/puppet/application/filebucket.rb +15 -11
  22. data/lib/puppet/application/lookup.rb +16 -4
  23. data/lib/puppet/application/ssl.rb +1 -1
  24. data/lib/puppet/application_support.rb +7 -0
  25. data/lib/puppet/configurer.rb +46 -19
  26. data/lib/puppet/configurer/downloader.rb +31 -10
  27. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  28. data/lib/puppet/confine.rb +1 -1
  29. data/lib/puppet/confine/any.rb +1 -1
  30. data/lib/puppet/defaults.rb +116 -162
  31. data/lib/puppet/environments.rb +72 -62
  32. data/lib/puppet/face/catalog.rb +1 -1
  33. data/lib/puppet/face/config.rb +56 -16
  34. data/lib/puppet/face/epp.rb +12 -2
  35. data/lib/puppet/face/facts.rb +66 -6
  36. data/lib/puppet/face/help.rb +1 -1
  37. data/lib/puppet/face/node.rb +3 -3
  38. data/lib/puppet/face/node/clean.rb +10 -2
  39. data/lib/puppet/face/plugin.rb +5 -8
  40. data/lib/puppet/feature/base.rb +1 -1
  41. data/lib/puppet/ffi/posix.rb +10 -0
  42. data/lib/puppet/ffi/posix/constants.rb +14 -0
  43. data/lib/puppet/ffi/posix/functions.rb +24 -0
  44. data/lib/puppet/ffi/windows.rb +12 -0
  45. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  46. data/lib/puppet/ffi/windows/constants.rb +404 -0
  47. data/lib/puppet/ffi/windows/functions.rb +628 -0
  48. data/lib/puppet/ffi/windows/structs.rb +338 -0
  49. data/lib/puppet/file_bucket/dipper.rb +1 -1
  50. data/lib/puppet/file_serving/configuration.rb +0 -5
  51. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  52. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  53. data/lib/puppet/file_serving/mount.rb +1 -2
  54. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  55. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  56. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  57. data/lib/puppet/file_system/file_impl.rb +3 -3
  58. data/lib/puppet/forge/repository.rb +0 -1
  59. data/lib/puppet/functions/epp.rb +1 -0
  60. data/lib/puppet/functions/inline_epp.rb +1 -0
  61. data/lib/puppet/functions/lstrip.rb +4 -4
  62. data/lib/puppet/functions/new.rb +8 -3
  63. data/lib/puppet/functions/reverse_each.rb +1 -1
  64. data/lib/puppet/functions/rstrip.rb +4 -4
  65. data/lib/puppet/functions/step.rb +1 -1
  66. data/lib/puppet/functions/strip.rb +4 -4
  67. data/lib/puppet/generate/models/type/type.rb +4 -1
  68. data/lib/puppet/gettext/config.rb +5 -5
  69. data/lib/puppet/gettext/module_translations.rb +4 -4
  70. data/lib/puppet/http.rb +23 -13
  71. data/lib/puppet/http/client.rb +165 -115
  72. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  73. data/lib/puppet/http/errors.rb +16 -0
  74. data/lib/puppet/http/external_client.rb +5 -7
  75. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  76. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  77. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  78. data/lib/puppet/http/proxy.rb +137 -0
  79. data/lib/puppet/http/redirector.rb +4 -12
  80. data/lib/puppet/http/resolver.rb +10 -23
  81. data/lib/puppet/http/resolver/server_list.rb +23 -45
  82. data/lib/puppet/http/resolver/settings.rb +7 -10
  83. data/lib/puppet/http/resolver/srv.rb +11 -15
  84. data/lib/puppet/http/response.rb +36 -54
  85. data/lib/puppet/http/response_converter.rb +24 -0
  86. data/lib/puppet/http/response_net_http.rb +42 -0
  87. data/lib/puppet/http/retry_after_handler.rb +4 -13
  88. data/lib/puppet/http/service.rb +15 -27
  89. data/lib/puppet/http/service/ca.rb +11 -22
  90. data/lib/puppet/http/service/compiler.rb +23 -70
  91. data/lib/puppet/http/service/file_server.rb +19 -28
  92. data/lib/puppet/http/service/puppetserver.rb +53 -0
  93. data/lib/puppet/http/service/report.rb +8 -10
  94. data/lib/puppet/http/session.rb +16 -24
  95. data/lib/puppet/{network/http → http}/site.rb +1 -2
  96. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  97. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  98. data/lib/puppet/indirector/exec.rb +1 -1
  99. data/lib/puppet/indirector/fact_search.rb +60 -0
  100. data/lib/puppet/indirector/facts/facter.rb +27 -6
  101. data/lib/puppet/indirector/facts/json.rb +27 -0
  102. data/lib/puppet/indirector/facts/rest.rb +3 -22
  103. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  104. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  105. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  106. data/lib/puppet/indirector/file_metadata/http.rb +1 -0
  107. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  108. data/lib/puppet/indirector/file_server.rb +1 -8
  109. data/lib/puppet/indirector/generic_http.rb +0 -11
  110. data/lib/puppet/indirector/hiera.rb +4 -0
  111. data/lib/puppet/indirector/indirection.rb +1 -1
  112. data/lib/puppet/indirector/json.rb +5 -1
  113. data/lib/puppet/indirector/msgpack.rb +1 -1
  114. data/lib/puppet/indirector/node/json.rb +8 -0
  115. data/lib/puppet/indirector/node/rest.rb +2 -4
  116. data/lib/puppet/indirector/report/json.rb +34 -0
  117. data/lib/puppet/indirector/report/processor.rb +2 -2
  118. data/lib/puppet/indirector/report/rest.rb +3 -8
  119. data/lib/puppet/indirector/request.rb +1 -102
  120. data/lib/puppet/indirector/rest.rb +12 -263
  121. data/lib/puppet/indirector/yaml.rb +1 -1
  122. data/lib/puppet/module.rb +1 -2
  123. data/lib/puppet/module_tool/applications.rb +0 -1
  124. data/lib/puppet/network/authconfig.rb +2 -96
  125. data/lib/puppet/network/authorization.rb +13 -35
  126. data/lib/puppet/network/format_support.rb +2 -2
  127. data/lib/puppet/network/formats.rb +2 -1
  128. data/lib/puppet/network/http.rb +3 -3
  129. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  130. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  131. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  132. data/lib/puppet/network/http/connection.rb +247 -316
  133. data/lib/puppet/network/http/handler.rb +0 -1
  134. data/lib/puppet/network/http/route.rb +2 -2
  135. data/lib/puppet/network/http_pool.rb +16 -34
  136. data/lib/puppet/node.rb +1 -30
  137. data/lib/puppet/node/environment.rb +12 -5
  138. data/lib/puppet/node/facts.rb +17 -0
  139. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  140. data/lib/puppet/pal/pal_impl.rb +93 -14
  141. data/lib/puppet/parameter.rb +1 -1
  142. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  143. data/lib/puppet/parser/compiler.rb +0 -198
  144. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  145. data/lib/puppet/parser/functions.rb +21 -17
  146. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  147. data/lib/puppet/parser/resource.rb +0 -69
  148. data/lib/puppet/parser/templatewrapper.rb +1 -1
  149. data/lib/puppet/parser/type_loader.rb +2 -2
  150. data/lib/puppet/pops/adaptable.rb +7 -13
  151. data/lib/puppet/pops/adapters.rb +8 -4
  152. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  153. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  154. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  155. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  156. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  157. data/lib/puppet/pops/issues.rb +0 -5
  158. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  159. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  160. data/lib/puppet/pops/loaders.rb +18 -11
  161. data/lib/puppet/pops/lookup/context.rb +1 -1
  162. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  163. data/lib/puppet/pops/model/ast.pp +0 -42
  164. data/lib/puppet/pops/model/ast.rb +0 -290
  165. data/lib/puppet/pops/model/factory.rb +0 -45
  166. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  167. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  168. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  169. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  170. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  171. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  172. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  173. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  174. data/lib/puppet/pops/types/iterable.rb +34 -8
  175. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  176. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  177. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  178. data/lib/puppet/pops/types/type_parser.rb +0 -4
  179. data/lib/puppet/pops/types/types.rb +0 -1
  180. data/lib/puppet/pops/validation/checker4_0.rb +28 -52
  181. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  182. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  183. data/lib/puppet/provider.rb +0 -13
  184. data/lib/puppet/provider/file/windows.rb +1 -1
  185. data/lib/puppet/provider/nameservice.rb +0 -18
  186. data/lib/puppet/provider/package/apt.rb +34 -0
  187. data/lib/puppet/provider/package/dpkg.rb +1 -11
  188. data/lib/puppet/provider/package/gem.rb +27 -5
  189. data/lib/puppet/provider/package/pip.rb +0 -1
  190. data/lib/puppet/provider/package/pip2.rb +17 -0
  191. data/lib/puppet/provider/package/pkg.rb +0 -4
  192. data/lib/puppet/provider/package/portage.rb +1 -1
  193. data/lib/puppet/provider/package/puppet_gem.rb +6 -4
  194. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  195. data/lib/puppet/provider/package/yum.rb +1 -0
  196. data/lib/puppet/provider/package/zypper.rb +3 -0
  197. data/lib/puppet/provider/service/smf.rb +191 -73
  198. data/lib/puppet/provider/user/aix.rb +3 -3
  199. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  200. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  201. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  202. data/lib/puppet/reference/configuration.rb +2 -0
  203. data/lib/puppet/reference/indirection.rb +1 -1
  204. data/lib/puppet/resource.rb +1 -89
  205. data/lib/puppet/resource/catalog.rb +1 -14
  206. data/lib/puppet/resource/type.rb +5 -120
  207. data/lib/puppet/resource/type_collection.rb +3 -48
  208. data/lib/puppet/runtime.rb +1 -2
  209. data/lib/puppet/settings.rb +84 -35
  210. data/lib/puppet/settings/base_setting.rb +26 -2
  211. data/lib/puppet/settings/integer_setting.rb +17 -0
  212. data/lib/puppet/settings/port_setting.rb +15 -0
  213. data/lib/puppet/settings/priority_setting.rb +5 -4
  214. data/lib/puppet/ssl.rb +10 -6
  215. data/lib/puppet/ssl/base.rb +3 -5
  216. data/lib/puppet/ssl/certificate.rb +0 -6
  217. data/lib/puppet/ssl/certificate_request.rb +1 -12
  218. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  219. data/lib/puppet/ssl/oids.rb +3 -1
  220. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  221. data/lib/puppet/ssl/state_machine.rb +3 -1
  222. data/lib/puppet/ssl/verifier.rb +2 -0
  223. data/lib/puppet/test/test_helper.rb +11 -6
  224. data/lib/puppet/transaction.rb +3 -9
  225. data/lib/puppet/transaction/persistence.rb +1 -1
  226. data/lib/puppet/transaction/report.rb +10 -8
  227. data/lib/puppet/trusted_external.rb +2 -2
  228. data/lib/puppet/type.rb +4 -79
  229. data/lib/puppet/type/file.rb +7 -9
  230. data/lib/puppet/type/file/checksum.rb +1 -1
  231. data/lib/puppet/type/file/source.rb +29 -9
  232. data/lib/puppet/type/filebucket.rb +4 -4
  233. data/lib/puppet/type/notify.rb +2 -2
  234. data/lib/puppet/type/package.rb +5 -13
  235. data/lib/puppet/type/service.rb +4 -0
  236. data/lib/puppet/type/user.rb +19 -4
  237. data/lib/puppet/util.rb +26 -12
  238. data/lib/puppet/util/autoload.rb +9 -7
  239. data/lib/puppet/util/character_encoding.rb +9 -5
  240. data/lib/puppet/util/execution.rb +2 -13
  241. data/lib/puppet/util/http_proxy.rb +2 -215
  242. data/lib/puppet/util/monkey_patches.rb +0 -46
  243. data/lib/puppet/util/posix.rb +53 -4
  244. data/lib/puppet/util/rdoc.rb +0 -7
  245. data/lib/puppet/util/retry_action.rb +1 -1
  246. data/lib/puppet/util/rubygems.rb +5 -1
  247. data/lib/puppet/util/run_mode.rb +14 -2
  248. data/lib/puppet/util/windows.rb +3 -7
  249. data/lib/puppet/util/windows/daemon.rb +360 -0
  250. data/lib/puppet/util/windows/error.rb +1 -0
  251. data/lib/puppet/util/windows/eventlog.rb +4 -9
  252. data/lib/puppet/util/windows/file.rb +8 -242
  253. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  254. data/lib/puppet/util/windows/process.rb +4 -226
  255. data/lib/puppet/util/windows/security.rb +4 -4
  256. data/lib/puppet/util/windows/service.rb +9 -460
  257. data/lib/puppet/util/windows/string.rb +12 -13
  258. data/lib/puppet/util/windows/user.rb +219 -0
  259. data/lib/puppet/util/yaml.rb +0 -22
  260. data/lib/puppet/vendor/require_vendored.rb +0 -1
  261. data/lib/puppet/version.rb +1 -1
  262. data/lib/puppet/x509.rb +5 -1
  263. data/lib/puppet/x509/cert_provider.rb +29 -1
  264. data/locales/puppet.pot +656 -1351
  265. data/man/man5/puppet.conf.5 +72 -97
  266. data/man/man8/puppet-agent.8 +6 -3
  267. data/man/man8/puppet-apply.8 +1 -1
  268. data/man/man8/puppet-catalog.8 +1 -1
  269. data/man/man8/puppet-config.8 +6 -6
  270. data/man/man8/puppet-describe.8 +1 -1
  271. data/man/man8/puppet-device.8 +1 -1
  272. data/man/man8/puppet-doc.8 +1 -1
  273. data/man/man8/puppet-epp.8 +1 -1
  274. data/man/man8/puppet-facts.8 +55 -9
  275. data/man/man8/puppet-filebucket.8 +6 -6
  276. data/man/man8/puppet-generate.8 +1 -1
  277. data/man/man8/puppet-help.8 +1 -1
  278. data/man/man8/puppet-lookup.8 +2 -2
  279. data/man/man8/puppet-module.8 +1 -58
  280. data/man/man8/puppet-node.8 +7 -4
  281. data/man/man8/puppet-parser.8 +1 -1
  282. data/man/man8/puppet-plugin.8 +1 -1
  283. data/man/man8/puppet-report.8 +4 -1
  284. data/man/man8/puppet-resource.8 +1 -1
  285. data/man/man8/puppet-script.8 +1 -1
  286. data/man/man8/puppet-ssl.8 +1 -1
  287. data/man/man8/puppet.8 +2 -2
  288. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  289. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  290. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  291. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  292. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  293. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  294. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  295. data/spec/integration/application/agent_spec.rb +70 -61
  296. data/spec/integration/application/apply_spec.rb +150 -150
  297. data/spec/integration/application/doc_spec.rb +16 -6
  298. data/spec/integration/application/filebucket_spec.rb +78 -29
  299. data/spec/integration/application/help_spec.rb +44 -0
  300. data/spec/integration/application/lookup_spec.rb +13 -0
  301. data/spec/integration/application/module_spec.rb +68 -0
  302. data/spec/integration/application/plugin_spec.rb +76 -4
  303. data/spec/integration/configurer_spec.rb +14 -0
  304. data/spec/integration/data_binding_spec.rb +82 -0
  305. data/spec/integration/defaults_spec.rb +32 -3
  306. data/spec/integration/directory_environments_spec.rb +17 -17
  307. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  308. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  309. data/spec/integration/network/http_pool_spec.rb +3 -21
  310. data/spec/integration/node/environment_spec.rb +1 -1
  311. data/spec/integration/parser/catalog_spec.rb +0 -38
  312. data/spec/integration/parser/node_spec.rb +0 -9
  313. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  314. data/spec/integration/type/file_spec.rb +5 -4
  315. data/spec/integration/util/execution_spec.rb +22 -0
  316. data/spec/integration/util/windows/adsi_spec.rb +2 -2
  317. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  318. data/spec/integration/util/windows/process_spec.rb +26 -32
  319. data/spec/integration/util/windows/security_spec.rb +1 -1
  320. data/spec/integration/util/windows/user_spec.rb +7 -0
  321. data/spec/integration/util_spec.rb +7 -33
  322. data/spec/lib/puppet_spec/matchers.rb +0 -80
  323. data/spec/lib/puppet_spec/puppetserver.rb +9 -1
  324. data/spec/lib/puppet_spec/settings.rb +7 -1
  325. data/spec/shared_contexts/types_setup.rb +2 -0
  326. data/spec/spec_helper.rb +2 -0
  327. data/spec/unit/agent_spec.rb +0 -2
  328. data/spec/unit/application/agent_spec.rb +3 -4
  329. data/spec/unit/application/config_spec.rb +224 -4
  330. data/spec/unit/application/doc_spec.rb +2 -2
  331. data/spec/unit/application/face_base_spec.rb +6 -4
  332. data/spec/unit/application/facts_spec.rb +74 -8
  333. data/spec/unit/application/filebucket_spec.rb +41 -39
  334. data/spec/unit/application/resource_spec.rb +3 -1
  335. data/spec/unit/application/ssl_spec.rb +17 -4
  336. data/spec/unit/application_spec.rb +43 -4
  337. data/spec/unit/certificate_factory_spec.rb +1 -1
  338. data/spec/unit/configurer/downloader_spec.rb +14 -0
  339. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  340. data/spec/unit/configurer_spec.rb +96 -44
  341. data/spec/unit/confine_spec.rb +2 -1
  342. data/spec/unit/context/trusted_information_spec.rb +2 -6
  343. data/spec/unit/defaults_spec.rb +26 -32
  344. data/spec/unit/environments_spec.rb +173 -32
  345. data/spec/unit/face/config_spec.rb +65 -12
  346. data/spec/unit/face/facts_spec.rb +4 -0
  347. data/spec/unit/face/node_spec.rb +16 -4
  348. data/spec/unit/face/plugin_spec.rb +73 -33
  349. data/spec/unit/file_bucket/file_spec.rb +1 -1
  350. data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
  351. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  352. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  353. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  354. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  355. data/spec/unit/file_system/uniquefile_spec.rb +18 -0
  356. data/spec/unit/file_system_spec.rb +1 -2
  357. data/spec/unit/functions/camelcase_spec.rb +1 -1
  358. data/spec/unit/functions/capitalize_spec.rb +1 -1
  359. data/spec/unit/functions/downcase_spec.rb +1 -1
  360. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  361. data/spec/unit/functions/upcase_spec.rb +1 -1
  362. data/spec/unit/http/client_spec.rb +7 -9
  363. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  364. data/spec/unit/http/external_client_spec.rb +4 -4
  365. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  366. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  367. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  368. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  369. data/spec/unit/http/resolver_spec.rb +34 -15
  370. data/spec/unit/http/service/ca_spec.rb +2 -3
  371. data/spec/unit/http/service/compiler_spec.rb +51 -65
  372. data/spec/unit/http/service/file_server_spec.rb +5 -6
  373. data/spec/unit/http/service/puppetserver_spec.rb +112 -0
  374. data/spec/unit/http/service/report_spec.rb +2 -3
  375. data/spec/unit/http/service_spec.rb +1 -3
  376. data/spec/unit/http/session_spec.rb +24 -35
  377. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  378. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  379. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  380. data/spec/unit/indirector/facts/facter_spec.rb +97 -0
  381. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  382. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  383. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  384. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  385. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  386. data/spec/unit/indirector/file_server_spec.rb +1 -15
  387. data/spec/unit/indirector/json_spec.rb +8 -8
  388. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  389. data/spec/unit/indirector/node/json_spec.rb +33 -0
  390. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  391. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  392. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  393. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  394. data/spec/unit/indirector/request_spec.rb +2 -266
  395. data/spec/unit/indirector/rest_spec.rb +98 -752
  396. data/spec/unit/indirector/yaml_spec.rb +7 -7
  397. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  398. data/spec/unit/network/authconfig_spec.rb +2 -132
  399. data/spec/unit/network/authorization_spec.rb +2 -55
  400. data/spec/unit/network/format_support_spec.rb +3 -2
  401. data/spec/unit/network/formats_spec.rb +4 -4
  402. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -97
  403. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  404. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  405. data/spec/unit/network/http/api_spec.rb +10 -0
  406. data/spec/unit/network/http/connection_spec.rb +19 -41
  407. data/spec/unit/network/http/handler_spec.rb +0 -6
  408. data/spec/unit/network/http_pool_spec.rb +0 -4
  409. data/spec/unit/node/environment_spec.rb +51 -22
  410. data/spec/unit/node_spec.rb +2 -54
  411. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  412. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  413. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  414. data/spec/unit/pops/loaders/loaders_spec.rb +76 -21
  415. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  416. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  417. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  418. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  419. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  420. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  421. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  422. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  423. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  424. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  425. data/spec/unit/pops/visitor_spec.rb +1 -1
  426. data/spec/unit/provider/exec_spec.rb +4 -3
  427. data/spec/unit/provider/nameservice_spec.rb +0 -57
  428. data/spec/unit/provider/package/apt_spec.rb +77 -0
  429. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  430. data/spec/unit/provider/package/dpkg_spec.rb +22 -55
  431. data/spec/unit/provider/package/gem_spec.rb +32 -0
  432. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  433. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  434. data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
  435. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  436. data/spec/unit/provider/package/yum_spec.rb +31 -0
  437. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  438. data/spec/unit/provider/service/base_spec.rb +2 -4
  439. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  440. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  441. data/spec/unit/provider/service/debian_spec.rb +3 -5
  442. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  443. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  444. data/spec/unit/provider/service/init_spec.rb +45 -5
  445. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  446. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  447. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  448. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  449. data/spec/unit/provider/service/runit_spec.rb +2 -1
  450. data/spec/unit/provider/service/smf_spec.rb +402 -166
  451. data/spec/unit/provider/service/src_spec.rb +3 -5
  452. data/spec/unit/provider/service/systemd_spec.rb +3 -6
  453. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  454. data/spec/unit/provider/service/windows_spec.rb +28 -1
  455. data/spec/unit/provider/user/aix_spec.rb +5 -0
  456. data/spec/unit/provider/user/pw_spec.rb +2 -0
  457. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  458. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  459. data/spec/unit/provider_spec.rb +0 -12
  460. data/spec/unit/puppet_pal_2pec.rb +40 -0
  461. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  462. data/spec/unit/reports/store_spec.rb +17 -13
  463. data/spec/unit/resource/type_collection_spec.rb +2 -22
  464. data/spec/unit/resource_spec.rb +0 -56
  465. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  466. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  467. data/spec/unit/settings/port_setting_spec.rb +31 -0
  468. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  469. data/spec/unit/settings_spec.rb +586 -239
  470. data/spec/unit/ssl/base_spec.rb +36 -3
  471. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  472. data/spec/unit/ssl/certificate_spec.rb +2 -11
  473. data/spec/unit/ssl/ssl_provider_spec.rb +11 -8
  474. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  475. data/spec/unit/ssl/verifier_spec.rb +0 -21
  476. data/spec/unit/transaction/persistence_spec.rb +15 -0
  477. data/spec/unit/transaction/report_spec.rb +2 -2
  478. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  479. data/spec/unit/transaction_spec.rb +45 -79
  480. data/spec/unit/type/file/checksum_spec.rb +6 -6
  481. data/spec/unit/type/file/content_spec.rb +1 -1
  482. data/spec/unit/type/file/ensure_spec.rb +1 -1
  483. data/spec/unit/type/file/mode_spec.rb +1 -1
  484. data/spec/unit/type/file/source_spec.rb +1 -2
  485. data/spec/unit/type/file_spec.rb +12 -6
  486. data/spec/unit/type/filebucket_spec.rb +1 -1
  487. data/spec/unit/type/package_spec.rb +1 -1
  488. data/spec/unit/type/service_spec.rb +35 -2
  489. data/spec/unit/type/user_spec.rb +31 -2
  490. data/spec/unit/type_spec.rb +20 -0
  491. data/spec/unit/util/backups_spec.rb +0 -2
  492. data/spec/unit/util/character_encoding_spec.rb +4 -4
  493. data/spec/unit/util/command_line_spec.rb +11 -6
  494. data/spec/unit/util/execution_spec.rb +0 -29
  495. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  496. data/spec/unit/util/posix_spec.rb +357 -15
  497. data/spec/unit/util/rubygems_spec.rb +2 -2
  498. data/spec/unit/util/run_mode_spec.rb +27 -127
  499. data/spec/unit/util/storage_spec.rb +3 -1
  500. data/spec/unit/util/windows/string_spec.rb +1 -3
  501. data/spec/unit/util/yaml_spec.rb +0 -54
  502. data/spec/unit/util_spec.rb +0 -18
  503. metadata +84 -261
  504. data/conf/auth.conf +0 -150
  505. data/lib/puppet/application/cert.rb +0 -76
  506. data/lib/puppet/application/key.rb +0 -4
  507. data/lib/puppet/application/man.rb +0 -4
  508. data/lib/puppet/application/status.rb +0 -4
  509. data/lib/puppet/face/key.rb +0 -16
  510. data/lib/puppet/face/man.rb +0 -145
  511. data/lib/puppet/face/module/build.rb +0 -14
  512. data/lib/puppet/face/module/generate.rb +0 -14
  513. data/lib/puppet/face/module/search.rb +0 -103
  514. data/lib/puppet/face/status.rb +0 -51
  515. data/lib/puppet/indirector/certificate/file.rb +0 -9
  516. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  517. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  518. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  519. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  520. data/lib/puppet/indirector/file_content/http.rb +0 -22
  521. data/lib/puppet/indirector/key/file.rb +0 -46
  522. data/lib/puppet/indirector/key/memory.rb +0 -7
  523. data/lib/puppet/indirector/ssl_file.rb +0 -162
  524. data/lib/puppet/indirector/status.rb +0 -3
  525. data/lib/puppet/indirector/status/local.rb +0 -12
  526. data/lib/puppet/indirector/status/rest.rb +0 -27
  527. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  528. data/lib/puppet/network/auth_config_parser.rb +0 -90
  529. data/lib/puppet/network/authstore.rb +0 -283
  530. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  531. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  532. data/lib/puppet/network/http/base_pool.rb +0 -36
  533. data/lib/puppet/network/http/compression.rb +0 -127
  534. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  535. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  536. data/lib/puppet/network/rest_controller.rb +0 -2
  537. data/lib/puppet/network/rights.rb +0 -210
  538. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  539. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  540. data/lib/puppet/parser/environment_compiler.rb +0 -202
  541. data/lib/puppet/pops/types/enumeration.rb +0 -16
  542. data/lib/puppet/resource/capability_finder.rb +0 -154
  543. data/lib/puppet/rest/errors.rb +0 -15
  544. data/lib/puppet/rest/response.rb +0 -35
  545. data/lib/puppet/rest/route.rb +0 -85
  546. data/lib/puppet/rest/routes.rb +0 -135
  547. data/lib/puppet/ssl/host.rb +0 -505
  548. data/lib/puppet/ssl/key.rb +0 -61
  549. data/lib/puppet/ssl/validator.rb +0 -61
  550. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  551. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  552. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  553. data/lib/puppet/status.rb +0 -40
  554. data/lib/puppet/util/connection.rb +0 -88
  555. data/lib/puppet/util/ssl.rb +0 -83
  556. data/lib/puppet/util/windows/api_types.rb +0 -295
  557. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  558. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  559. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  560. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  561. data/lib/puppet/vendor/pathspec/README.md +0 -53
  562. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  563. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  564. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  565. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  566. data/man/man8/puppet-key.8 +0 -126
  567. data/man/man8/puppet-man.8 +0 -76
  568. data/man/man8/puppet-status.8 +0 -108
  569. data/spec/integration/faces/config_spec.rb +0 -91
  570. data/spec/integration/faces/documentation_spec.rb +0 -57
  571. data/spec/integration/file_bucket/file_spec.rb +0 -50
  572. data/spec/integration/file_serving/content_spec.rb +0 -7
  573. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  574. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  575. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  576. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  577. data/spec/integration/module_tool/forge_spec.rb +0 -51
  578. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  579. data/spec/integration/network/authconfig_spec.rb +0 -256
  580. data/spec/integration/provider/service/init_spec.rb +0 -48
  581. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  582. data/spec/integration/provider/service/windows_spec.rb +0 -50
  583. data/spec/integration/reference/providers_spec.rb +0 -21
  584. data/spec/integration/reports_spec.rb +0 -13
  585. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  586. data/spec/integration/ssl/host_spec.rb +0 -72
  587. data/spec/integration/ssl/key_spec.rb +0 -99
  588. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  589. data/spec/unit/capability_spec.rb +0 -414
  590. data/spec/unit/face/catalog_spec.rb +0 -6
  591. data/spec/unit/face/key_spec.rb +0 -9
  592. data/spec/unit/face/man_spec.rb +0 -25
  593. data/spec/unit/face/module/search_spec.rb +0 -231
  594. data/spec/unit/face/module_spec.rb +0 -3
  595. data/spec/unit/face/status_spec.rb +0 -9
  596. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  597. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  598. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  599. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  600. data/spec/unit/indirector/key/file_spec.rb +0 -79
  601. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  602. data/spec/unit/indirector/status/local_spec.rb +0 -10
  603. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  604. data/spec/unit/man_spec.rb +0 -31
  605. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  606. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  607. data/spec/unit/network/authstore_spec.rb +0 -422
  608. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  609. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  610. data/spec/unit/network/http/compression_spec.rb +0 -240
  611. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  612. data/spec/unit/network/http_spec.rb +0 -9
  613. data/spec/unit/network/rights_spec.rb +0 -439
  614. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  615. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  616. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  617. data/spec/unit/rest/route_spec.rb +0 -132
  618. data/spec/unit/ssl/host_spec.rb +0 -650
  619. data/spec/unit/ssl/key_spec.rb +0 -173
  620. data/spec/unit/ssl/validator_spec.rb +0 -278
  621. data/spec/unit/status_spec.rb +0 -45
  622. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,11 +1,11 @@
1
1
  require 'puppet/version'
2
2
  require 'puppet/concurrent/synchronized'
3
3
 
4
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.3.0")
5
- raise LoadError, "Puppet #{Puppet.version} requires Ruby 2.3.0 or greater, found Ruby #{RUBY_VERSION.dup}."
4
+ if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.5.0")
5
+ raise LoadError, "Puppet #{Puppet.version} requires Ruby 2.5.0 or greater, found Ruby #{RUBY_VERSION.dup}."
6
6
  end
7
7
 
8
- Puppet::OLDEST_RECOMMENDED_RUBY_VERSION = '2.3.0'
8
+ Puppet::OLDEST_RECOMMENDED_RUBY_VERSION = '2.5.0'
9
9
 
10
10
  $LOAD_PATH.extend(Puppet::Concurrent::Synchronized)
11
11
 
@@ -27,16 +27,16 @@ require 'puppet/external/pson/pure'
27
27
  require 'puppet/gettext/config'
28
28
  require 'puppet/defaults'
29
29
 
30
-
31
- #------------------------------------------------------------
32
- # the top-level module
30
+ # Defines the `Puppet` module. There are different entry points into Puppet
31
+ # depending on your use case.
33
32
  #
34
- # all this really does is dictate how the whole system behaves, through
35
- # preferences for things like debugging
33
+ # To use puppet as a library, see {Puppet::Pal}.
36
34
  #
37
- # it's also a place to find top-level commands like 'debug'
38
-
39
- # The main Puppet class. Everything is contained here.
35
+ # To create a new application, see {Puppet::Application}.
36
+ #
37
+ # To create a new function, see {Puppet::Functions}.
38
+ #
39
+ # To access puppet's REST APIs, see https://puppet.com/docs/puppet/latest/http_api/http_api_index.html.
40
40
  #
41
41
  # @api public
42
42
  module Puppet
@@ -97,12 +97,6 @@ module Puppet
97
97
  # Load the base features.
98
98
  require 'puppet/feature/base'
99
99
 
100
- # Store a new default value.
101
- def self.define_settings(section, hash)
102
- Puppet.deprecation_warning('The method Puppet.define_settings is deprecated and will be removed in a future release')
103
- @@settings.define_settings(section, hash)
104
- end
105
-
106
100
  # setting access and stuff
107
101
  def self.[]=(param,value)
108
102
  @@settings[param] = value
@@ -245,7 +239,6 @@ module Puppet
245
239
 
246
240
  {
247
241
  :environments => Puppet::Environments::Cached.new(Puppet::Environments::Combined.new(*loaders)),
248
- :http_pool => proc { Puppet.runtime[:http].pool },
249
242
  :ssl_context => proc {
250
243
  begin
251
244
  cert = Puppet::X509::CertProvider.new
@@ -260,7 +253,6 @@ module Puppet
260
253
  raise e
261
254
  end
262
255
  },
263
- :ssl_host => proc { Puppet::SSL::Host.localhost(true) },
264
256
  :http_session => proc { Puppet.runtime[:http].create_session },
265
257
  :plugins => proc { Puppet::Plugins::Configuration.load_plugins },
266
258
  :rich_data => false
@@ -364,7 +356,6 @@ require 'puppet/ssl'
364
356
  require 'puppet/module'
365
357
  require 'puppet/data_binding'
366
358
  require 'puppet/util/storage'
367
- require 'puppet/status'
368
359
  require 'puppet/file_bucket/file'
369
360
  require 'puppet/plugins/configuration'
370
361
  require 'puppet/pal/pal_api'
@@ -27,14 +27,7 @@ module Puppet::Agent::Locker
27
27
  end
28
28
  end
29
29
 
30
- # @deprecated
31
30
  def running?
32
- #TRANSLATORS 'Puppet::Agent::Locker.running?' is a method name and should not be translated
33
- message = _('Puppet::Agent::Locker.running? is deprecated as it is inherently unsafe.')
34
- #TRANSLATORS 'LockError' should not be translated
35
- message += ' ' + _('The only safe way to know if the lock is locked is to try lock and perform some '\
36
- 'action and then handle the LockError that may result.')
37
- Puppet.deprecation_warning(message)
38
31
  lockfile.locked?
39
32
  end
40
33
 
@@ -6,95 +6,74 @@ require 'puppet/application_support'
6
6
 
7
7
  module Puppet
8
8
 
9
- # This class handles all the aspects of a Puppet application/executable
10
- # * setting up options
11
- # * setting up logs
12
- # * choosing what to run
13
- # * representing execution status
9
+ # Defines an abstract Puppet application.
14
10
  #
15
- # === Usage
16
- # An application is a subclass of Puppet::Application.
17
- #
18
- # For legacy compatibility,
19
- # Puppet::Application[:example].run
20
- # is equivalent to
21
- # Puppet::Application::Example.new.run
11
+ # # Usage
22
12
  #
13
+ # To create a new application extend `Puppet::Application`. Derived applications
14
+ # must implement the `main` method and should implement the `summary` and
15
+ # `help` methods in order to be included in `puppet help`, and should define
16
+ # application-specific options. For example:
23
17
  #
18
+ # ```
24
19
  # class Puppet::Application::Example < Puppet::Application
25
20
  #
26
- # def preinit
27
- # # perform some pre initialization
28
- # @all = false
29
- # end
30
- #
31
- # # run_command is called to actually run the specified command
32
- # def run_command
33
- # send Puppet::Util::CommandLine.new.args.shift
34
- # end
21
+ # def summary
22
+ # "My puppet example application"
23
+ # end
35
24
  #
36
- # # option uses metaprogramming to create a method
37
- # # and also tells the option parser how to invoke that method
38
- # option("--arg ARGUMENT") do |v|
39
- # @args << v
40
- # end
25
+ # def help
26
+ # <<~HELP
27
+ # puppet-example(8) -- #{summary}
28
+ # ...
29
+ # HELP
30
+ # end
41
31
  #
42
- # option("--debug", "-d") do |v|
43
- # @debug = v
44
- # end
32
+ # # define arg with a required option
33
+ # option("--arg ARGUMENT") do |v|
34
+ # options[:arg] = v
35
+ # end
45
36
  #
46
- # option("--all", "-a:) do |v|
47
- # @all = v
48
- # end
37
+ # # define arg with an optional option
38
+ # option("--maybe [ARGUMENT]") do |v|
39
+ # options[:maybe] = v
40
+ # end
49
41
  #
50
- # def handle_unknown(opt,arg)
51
- # # last chance to manage an option
52
- # ...
53
- # # let's say to the framework we finally handle this option
54
- # true
55
- # end
42
+ # # define long and short arg
43
+ # option("--all", "-a")
56
44
  #
57
- # def read
58
- # # read action
59
- # end
45
+ # def initialize(command_line = Puppet::Util::CommandLine.new)
46
+ # super
47
+ # @data = {}
48
+ # end
60
49
  #
61
- # def write
62
- # # writeaction
63
- # end
64
- #
65
- # end
50
+ # def main
51
+ # # call action
52
+ # send(@command_line.args.shift)
53
+ # end
66
54
  #
67
- # === Preinit
68
- # The preinit block is the first code to be called in your application, before option parsing,
69
- # setup or command execution.
55
+ # def read
56
+ # # read action
57
+ # end
70
58
  #
71
- # === Options
72
- # Puppet::Application uses +OptionParser+ to manage the application options.
73
- # Options are defined with the +option+ method to which are passed various
74
- # arguments, including the long option, the short option, a description...
75
- # Refer to +OptionParser+ documentation for the exact format.
76
- # * If the option method is given a block, this one will be called whenever
77
- # the option is encountered in the command-line argument.
78
- # * If the option method has no block, a default functionality will be used, that
79
- # stores the argument (or true/false if the option doesn't require an argument) in
80
- # the global (to the application) options array.
81
- # * If a given option was not defined by a the +option+ method, but it exists as a Puppet settings:
82
- # * if +unknown+ was used with a block, it will be called with the option name and argument
83
- # * if +unknown+ wasn't used, then the option/argument is handed to Puppet.settings.handlearg for
84
- # a default behavior
59
+ # def write
60
+ # # write action
61
+ # end
85
62
  #
86
- # --help is managed directly by the Puppet::Application class, but can be overridden.
63
+ # end
64
+ # ```
87
65
  #
88
- # === Setup
89
- # Applications can use the setup block to perform any initialization.
90
- # The default +setup+ behaviour is to: read Puppet configuration and manage log level and destination
66
+ # Puppet defines the following application lifecycle methods that are called in
67
+ # the following order:
91
68
  #
92
- # === What and how to run
93
- # If the +dispatch+ block is defined it is called. This block should return the name of the registered command
94
- # to be run.
95
- # If it doesn't exist, it defaults to execute the +main+ command if defined.
69
+ # * {#initialize}
70
+ # * {#initialize_app_defaults}
71
+ # * {#preinit}
72
+ # * {#parse_options}
73
+ # * {#setup}
74
+ # * {#main}
96
75
  #
97
- # === Execution state
76
+ # ## Execution state
98
77
  # The class attributes/methods of Puppet::Application serve as a global place to set and query the execution
99
78
  # status of the application: stopping, restarting, etc. The setting of the application status does not directly
100
79
  # affect its running status; it's assumed that the various components within the application will consult these
@@ -104,21 +83,27 @@ module Puppet
104
83
  #
105
84
  # So, if something in your application needs to stop the process, for some reason, you might consider:
106
85
  #
86
+ # ```
107
87
  # def stop_me!
108
- # # indicate that we're stopping
109
- # Puppet::Application.stop!
110
- # # ...do stuff...
88
+ # # indicate that we're stopping
89
+ # Puppet::Application.stop!
90
+ # # ...do stuff...
111
91
  # end
92
+ # ```
112
93
  #
113
94
  # And, if you have some component that involves a long-running process, you might want to consider:
114
95
  #
96
+ # ```
115
97
  # def my_long_process(giant_list_to_munge)
116
- # giant_list_to_munge.collect do |member|
117
- # # bail if we're stopping
118
- # return if Puppet::Application.stop_requested?
119
- # process_member(member)
120
- # end
98
+ # giant_list_to_munge.collect do |member|
99
+ # # bail if we're stopping
100
+ # return if Puppet::Application.stop_requested?
101
+ # process_member(member)
102
+ # end
121
103
  # end
104
+ # ```
105
+ # @abstract
106
+ # @api public
122
107
  class Application
123
108
  require 'puppet/util'
124
109
  include Puppet::Util
@@ -137,34 +122,42 @@ class Application
137
122
  self.run_status = nil
138
123
  end
139
124
 
125
+ # Signal that the application should stop.
126
+ # @api public
140
127
  def stop!
141
128
  self.run_status = :stop_requested
142
129
  end
143
130
 
131
+ # Signal that the application should restart.
132
+ # @api public
144
133
  def restart!
145
134
  self.run_status = :restart_requested
146
135
  end
147
136
 
148
137
  # Indicates that Puppet::Application.restart! has been invoked and components should
149
138
  # do what is necessary to facilitate a restart.
139
+ # @api public
150
140
  def restart_requested?
151
141
  :restart_requested == run_status
152
142
  end
153
143
 
154
144
  # Indicates that Puppet::Application.stop! has been invoked and components should do what is necessary
155
145
  # for a clean stop.
146
+ # @api public
156
147
  def stop_requested?
157
148
  :stop_requested == run_status
158
149
  end
159
150
 
160
151
  # Indicates that one of stop! or start! was invoked on Puppet::Application, and some kind of process
161
152
  # shutdown/short-circuit may be necessary.
153
+ # @api public
162
154
  def interrupted?
163
155
  [:restart_requested, :stop_requested].include? run_status
164
156
  end
165
157
 
166
158
  # Indicates that Puppet::Application believes that it's in usual running run_mode (no stop/restart request
167
159
  # currently active).
160
+ # @api public
168
161
  def clear?
169
162
  run_status.nil?
170
163
  end
@@ -270,14 +263,21 @@ class Application
270
263
  end
271
264
  private :try_load_class
272
265
 
266
+ # Return an instance of the specified application.
267
+ #
268
+ # @param [Symbol] name the lowercase name of the application
269
+ # @return [Puppet::Application] an instance of the specified name
270
+ # @raise [Puppet::Error] if the application class was not found.
271
+ # @raise [LoadError] if there was a problem loading the application file.
272
+ # @api public
273
273
  def [](name)
274
274
  find(name).new
275
275
  end
276
276
 
277
277
  # Sets or gets the run_mode name. Sets the run_mode name if a mode_name is
278
278
  # passed. Otherwise, gets the run_mode or a default run_mode
279
- #
280
- def run_mode( mode_name = nil)
279
+ # @api public
280
+ def run_mode(mode_name = nil)
281
281
  if mode_name
282
282
  Puppet.settings.preferred_run_mode = mode_name
283
283
  end
@@ -288,12 +288,19 @@ class Application
288
288
  @run_mode = Puppet::Util::RunMode[ mode_name || Puppet.settings.preferred_run_mode ]
289
289
  end
290
290
 
291
- # Sets environment_mode name
291
+ # Sets environment_mode name. When acting as a compiler, the environment mode
292
+ # should be `:local` since the directory must exist to compile the catalog.
293
+ # When acting as an agent, the environment mode should be `:remote` since
294
+ # the Puppet[:environment] setting refers to an environment directoy on a remote
295
+ # system. The `:not_required` mode is for cases where the application does not
296
+ # need an environment to run.
297
+ #
292
298
  # @param mode_name [Symbol] The name of the environment mode to run in. May
293
- # be one of :local, :remote, or :not_required. This impacts where the
294
- # application looks for its specified environment. If :not_required or
295
- # :remote are set, the application will not fail if the environment does
299
+ # be one of `:local`, `:remote`, or `:not_required`. This impacts where the
300
+ # application looks for its specified environment. If `:not_required` or
301
+ # `:remote` are set, the application will not fail if the environment does
296
302
  # not exist on the local filesystem.
303
+ # @api public
297
304
  def environment_mode(mode_name)
298
305
  raise Puppet::Error, _("Invalid environment mode '%{mode_name}'") % { mode_name: mode_name } unless [:local, :remote, :not_required].include?(mode_name)
299
306
  @environment_mode = mode_name
@@ -301,11 +308,14 @@ class Application
301
308
 
302
309
  # Gets environment_mode name. If none is set with `environment_mode=`,
303
310
  # default to :local.
311
+ # @return [Symbol] The current environment mode
312
+ # @api public
304
313
  def get_environment_mode
305
314
  @environment_mode || :local
306
315
  end
307
316
 
308
317
  # This is for testing only
318
+ # @api public
309
319
  def clear_everything_for_tests
310
320
  @run_mode = @banner = @run_status = @option_parser_commands = nil
311
321
  end
@@ -327,37 +337,66 @@ class Application
327
337
  exit(0)
328
338
  end
329
339
 
330
- def app_defaults()
340
+ # Initialize the application receiving the {Puppet::Util::CommandLine} object
341
+ # containing the application name and arguments.
342
+ #
343
+ # @param command_line [Puppet::Util::CommandLine] An instance of the command line to create the application with
344
+ # @api public
345
+ def initialize(command_line = Puppet::Util::CommandLine.new)
346
+ @command_line = CommandLineArgs.new(command_line.subcommand_name, command_line.args.dup)
347
+ @options = {}
348
+ end
349
+
350
+ # Now that the `run_mode` has been resolved, return default settings for the
351
+ # application. Note these values may be overridden when puppet's configuration
352
+ # is loaded later.
353
+ #
354
+ # @example To override the facts terminus:
355
+ # def app_defaults
356
+ # super.merge({
357
+ # :facts_terminus => 'yaml'
358
+ # })
359
+ # end
360
+ #
361
+ # @return [Hash<String, String>] default application settings
362
+ # @api public
363
+ def app_defaults
331
364
  Puppet::Settings.app_defaults_for_run_mode(self.class.run_mode).merge(
332
365
  :name => name
333
366
  )
334
367
  end
335
368
 
369
+ # Initialize application defaults. It's usually not necessary to override this method.
370
+ # @return [void]
371
+ # @api public
336
372
  def initialize_app_defaults()
337
373
  Puppet.settings.initialize_app_defaults(app_defaults)
338
374
  end
339
375
 
340
- # override to execute code before running anything else
376
+ # The preinit block is the first code to be called in your application, after
377
+ # `initialize`, but before option parsing, setup or command execution. It is
378
+ # usually not necessary to override this method.
379
+ # @return [void]
380
+ # @api public
341
381
  def preinit
342
382
  end
343
383
 
344
- def initialize(command_line = Puppet::Util::CommandLine.new)
345
- @command_line = CommandLineArgs.new(command_line.subcommand_name, command_line.args.dup)
346
- @options = {}
347
- end
348
-
349
- # call in setup of subclass to deprecate an application
384
+ # Call in setup of subclass to deprecate an application.
385
+ # @return [void]
386
+ # @api public
350
387
  def deprecate
351
388
  @deprecated = true
352
389
  end
353
390
 
391
+ # Return true if this application is deprecated.
392
+ # @api public
354
393
  def deprecated?
355
394
  @deprecated
356
395
  end
357
396
 
358
- # Execute the application.
359
- # @api public
397
+ # Execute the application. This method should not be overridden.
360
398
  # @return [void]
399
+ # @api public
361
400
  def run
362
401
 
363
402
  # I don't really like the names of these lifecycle phases. It would be nice to change them to some more meaningful
@@ -382,18 +421,34 @@ class Application
382
421
  exit_on_fail(_("Could not run")) { run_command }
383
422
  end
384
423
 
424
+ # This method must be overridden and perform whatever action is required for
425
+ # the application. The `command_line` reader contains the actions and
426
+ # arguments.
427
+ # @return [void]
428
+ # @api public
385
429
  def main
386
430
  raise NotImplementedError, _("No valid command or main")
387
431
  end
388
432
 
433
+ # Run the application. By default, it calls {#main}.
434
+ # @return [void]
435
+ # @api public
389
436
  def run_command
390
437
  main
391
438
  end
392
439
 
440
+ # Setup the application. It is usually not necessary to override this method.
441
+ # @return [void]
442
+ # @api public
393
443
  def setup
394
444
  setup_logs
395
445
  end
396
446
 
447
+ # Setup logging. By default the `console` log destination will only be created
448
+ # if `debug` or `verbose` is specified on the command line. Override to customize
449
+ # the logging behavior.
450
+ # @return [void]
451
+ # @api public
397
452
  def setup_logs
398
453
  handle_logdest_arg(Puppet[:logdest]) if !options[:setdest]
399
454
 
@@ -436,11 +491,10 @@ class Application
436
491
  # Output basic information about the runtime environment for debugging
437
492
  # purposes.
438
493
  #
439
- # @api public
440
- #
441
494
  # @param extra_info [Hash{String => #to_s}] a flat hash of extra information
442
495
  # to log. Intended to be passed to super by subclasses.
443
496
  # @return [void]
497
+ # @api public
444
498
  def log_runtime_environment(extra_info=nil)
445
499
  runtime_info = {
446
500
  'puppet_version' => Puppet.version,
@@ -453,6 +507,21 @@ class Application
453
507
  Puppet.debug 'Runtime environment: ' + runtime_info.map{|k,v| k + '=' + v.to_s}.join(', ')
454
508
  end
455
509
 
510
+ # Options defined with the `option` method are parsed from settings and the command line.
511
+ # Refer to {OptionParser} documentation for the exact format. Options are parsed as follows:
512
+ #
513
+ # * If the option method is given a block, then it will be called whenever the option is encountered in the command-line argument.
514
+ # * If the option method has no block, then the default option handler will store the argument in the `options` instance variable.
515
+ # * If a given option was not defined by an `option` method, but it exists as a Puppet setting:
516
+ # * if `unknown` was used with a block, it will be called with the option name and argument.
517
+ # * if `unknown` wasn't used, then the option/argument is handed to Puppet.settings.handlearg for
518
+ # a default behavior.
519
+ # * The `-h` and `--help` options are automatically handled by the command line before creating the application.
520
+ #
521
+ # Options specified on the command line override settings. It is usually not
522
+ # necessary to override this method.
523
+ # @return [void]
524
+ # @api public
456
525
  def parse_options
457
526
  # Create an option parser
458
527
  option_parser = OptionParser.new(self.class.banner)
@@ -500,6 +569,9 @@ class Application
500
569
  self.class.to_s.sub(/.*::/,"").downcase.to_sym
501
570
  end
502
571
 
572
+ # Return the text to display when running `puppet help`.
573
+ # @return [String] The help to display
574
+ # @api public
503
575
  def help
504
576
  _("No help available for puppet %{app_name}") % { app_name: name }
505
577
  end
@@ -507,6 +579,8 @@ class Application
507
579
  # The description used in top level `puppet help` output
508
580
  # If left empty in implementations, we will attempt to extract
509
581
  # the summary from the help text itself.
582
+ # @return [String]
583
+ # @api public
510
584
  def summary
511
585
  ""
512
586
  end