puppet 6.15.0-x64-mingw32 → 6.19.1-x64-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 (418) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -7
  3. data/Gemfile +4 -2
  4. data/Gemfile.lock +29 -27
  5. data/README.md +3 -4
  6. data/Rakefile +4 -12
  7. data/lib/puppet.rb +32 -8
  8. data/lib/puppet/agent.rb +18 -4
  9. data/lib/puppet/agent/locker.rb +0 -7
  10. data/lib/puppet/application/agent.rb +23 -8
  11. data/lib/puppet/application/apply.rb +18 -20
  12. data/lib/puppet/application/device.rb +1 -1
  13. data/lib/puppet/application/doc.rb +1 -1
  14. data/lib/puppet/application/lookup.rb +16 -4
  15. data/lib/puppet/application/plugin.rb +1 -0
  16. data/lib/puppet/application/ssl.rb +1 -1
  17. data/lib/puppet/configurer.rb +61 -21
  18. data/lib/puppet/configurer/downloader.rb +31 -10
  19. data/lib/puppet/confine.rb +2 -2
  20. data/lib/puppet/confine/any.rb +1 -1
  21. data/lib/puppet/context/trusted_information.rb +14 -8
  22. data/lib/puppet/daemon.rb +13 -27
  23. data/lib/puppet/defaults.rb +119 -39
  24. data/lib/puppet/environments.rb +51 -10
  25. data/lib/puppet/face/catalog.rb +1 -1
  26. data/lib/puppet/face/config.rb +46 -16
  27. data/lib/puppet/face/facts.rb +1 -1
  28. data/lib/puppet/face/help.rb +29 -3
  29. data/lib/puppet/face/module/search.rb +5 -0
  30. data/lib/puppet/face/node.rb +3 -3
  31. data/lib/puppet/face/node/clean.rb +2 -2
  32. data/lib/puppet/face/plugin.rb +1 -1
  33. data/lib/puppet/face/status.rb +1 -1
  34. data/lib/puppet/feature/base.rb +1 -1
  35. data/lib/puppet/file_bucket/dipper.rb +1 -1
  36. data/lib/puppet/file_serving/http_metadata.rb +14 -2
  37. data/lib/puppet/file_serving/metadata.rb +4 -1
  38. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  39. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  40. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  41. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  42. data/lib/puppet/file_system/file_impl.rb +4 -4
  43. data/lib/puppet/file_system/uniquefile.rb +12 -16
  44. data/lib/puppet/forge.rb +1 -1
  45. data/lib/puppet/forge/cache.rb +1 -1
  46. data/lib/puppet/forge/repository.rb +4 -7
  47. data/lib/puppet/functions/filter.rb +1 -0
  48. data/lib/puppet/functions/lstrip.rb +4 -4
  49. data/lib/puppet/functions/new.rb +8 -3
  50. data/lib/puppet/functions/reverse_each.rb +1 -1
  51. data/lib/puppet/functions/rstrip.rb +4 -4
  52. data/lib/puppet/functions/step.rb +1 -1
  53. data/lib/puppet/functions/strip.rb +4 -4
  54. data/lib/puppet/gettext/config.rb +5 -5
  55. data/lib/puppet/gettext/module_translations.rb +4 -4
  56. data/lib/puppet/http.rb +1 -0
  57. data/lib/puppet/http/client.rb +28 -12
  58. data/lib/puppet/http/external_client.rb +0 -6
  59. data/lib/puppet/http/redirector.rb +9 -7
  60. data/lib/puppet/http/resolver.rb +5 -8
  61. data/lib/puppet/http/resolver/server_list.rb +18 -36
  62. data/lib/puppet/http/resolver/settings.rb +4 -4
  63. data/lib/puppet/http/resolver/srv.rb +5 -5
  64. data/lib/puppet/http/response.rb +19 -0
  65. data/lib/puppet/http/service.rb +3 -1
  66. data/lib/puppet/http/service/compiler.rb +1 -1
  67. data/lib/puppet/http/service/file_server.rb +1 -1
  68. data/lib/puppet/http/service/puppetserver.rb +39 -0
  69. data/lib/puppet/http/session.rb +5 -4
  70. data/lib/puppet/indirector.rb +1 -1
  71. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  72. data/lib/puppet/indirector/exec.rb +1 -1
  73. data/lib/puppet/indirector/facts/facter.rb +3 -3
  74. data/lib/puppet/indirector/facts/yaml.rb +1 -1
  75. data/lib/puppet/indirector/file_content/http.rb +5 -0
  76. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  77. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  78. data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
  79. data/lib/puppet/indirector/hiera.rb +4 -0
  80. data/lib/puppet/indirector/indirection.rb +1 -1
  81. data/lib/puppet/indirector/json.rb +1 -1
  82. data/lib/puppet/indirector/msgpack.rb +1 -1
  83. data/lib/puppet/indirector/report/processor.rb +2 -2
  84. data/lib/puppet/indirector/request.rb +5 -5
  85. data/lib/puppet/indirector/rest.rb +7 -1
  86. data/lib/puppet/indirector/yaml.rb +1 -1
  87. data/lib/puppet/module.rb +1 -2
  88. data/lib/puppet/network/format_support.rb +2 -2
  89. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  90. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  91. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  92. data/lib/puppet/network/http/compression.rb +7 -0
  93. data/lib/puppet/network/http/connection.rb +2 -0
  94. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  95. data/lib/puppet/network/http/nocache_pool.rb +1 -0
  96. data/lib/puppet/network/http/route.rb +2 -2
  97. data/lib/puppet/network/http_pool.rb +2 -2
  98. data/lib/puppet/node/environment.rb +12 -5
  99. data/lib/puppet/node/facts.rb +17 -0
  100. data/lib/puppet/pal/catalog_compiler.rb +5 -0
  101. data/lib/puppet/pal/pal_impl.rb +31 -4
  102. data/lib/puppet/parameter.rb +1 -1
  103. data/lib/puppet/parser/ast/leaf.rb +5 -5
  104. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  105. data/lib/puppet/parser/compiler.rb +29 -26
  106. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  107. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  108. data/lib/puppet/parser/environment_compiler.rb +4 -1
  109. data/lib/puppet/parser/functions.rb +21 -17
  110. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  111. data/lib/puppet/parser/functions/filter.rb +1 -0
  112. data/lib/puppet/parser/resource.rb +3 -2
  113. data/lib/puppet/parser/resource/param.rb +6 -0
  114. data/lib/puppet/parser/type_loader.rb +2 -2
  115. data/lib/puppet/pops/adaptable.rb +7 -13
  116. data/lib/puppet/pops/adapters.rb +8 -4
  117. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  118. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  119. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  120. data/lib/puppet/pops/issues.rb +5 -0
  121. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  122. data/lib/puppet/pops/loaders.rb +18 -11
  123. data/lib/puppet/pops/lookup/context.rb +1 -1
  124. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  125. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  126. data/lib/puppet/pops/types/iterable.rb +34 -8
  127. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  128. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  129. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  130. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  131. data/lib/puppet/provider/file/windows.rb +1 -1
  132. data/lib/puppet/provider/package/aix.rb +17 -2
  133. data/lib/puppet/provider/package/apt.rb +38 -1
  134. data/lib/puppet/provider/package/aptitude.rb +1 -1
  135. data/lib/puppet/provider/package/dnfmodule.rb +24 -4
  136. data/lib/puppet/provider/package/dpkg.rb +1 -1
  137. data/lib/puppet/provider/package/gem.rb +4 -2
  138. data/lib/puppet/provider/package/pip.rb +60 -37
  139. data/lib/puppet/provider/package/pip2.rb +17 -0
  140. data/lib/puppet/provider/package/portage.rb +2 -2
  141. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  142. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  143. data/lib/puppet/provider/package/yum.rb +9 -1
  144. data/lib/puppet/provider/package/zypper.rb +62 -1
  145. data/lib/puppet/provider/service/systemd.rb +21 -4
  146. data/lib/puppet/provider/service/windows.rb +23 -7
  147. data/lib/puppet/provider/user/aix.rb +1 -1
  148. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  149. data/lib/puppet/provider/user/useradd.rb +16 -5
  150. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  151. data/lib/puppet/reports/http.rb +7 -3
  152. data/lib/puppet/resource.rb +2 -1
  153. data/lib/puppet/resource/type.rb +10 -1
  154. data/lib/puppet/rest/route.rb +2 -2
  155. data/lib/puppet/runtime.rb +25 -2
  156. data/lib/puppet/settings.rb +43 -6
  157. data/lib/puppet/ssl/ssl_context.rb +2 -2
  158. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  159. data/lib/puppet/ssl/state_machine.rb +33 -8
  160. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  161. data/lib/puppet/ssl/verifier_adapter.rb +9 -1
  162. data/lib/puppet/test/test_helper.rb +19 -14
  163. data/lib/puppet/transaction.rb +2 -2
  164. data/lib/puppet/transaction/persistence.rb +1 -1
  165. data/lib/puppet/transaction/report.rb +12 -8
  166. data/lib/puppet/trusted_external.rb +29 -1
  167. data/lib/puppet/type.rb +15 -7
  168. data/lib/puppet/type/file.rb +40 -15
  169. data/lib/puppet/type/file/checksum.rb +4 -4
  170. data/lib/puppet/type/file/source.rb +33 -13
  171. data/lib/puppet/type/filebucket.rb +1 -1
  172. data/lib/puppet/type/notify.rb +2 -2
  173. data/lib/puppet/type/package.rb +16 -1
  174. data/lib/puppet/type/service.rb +59 -8
  175. data/lib/puppet/type/user.rb +19 -10
  176. data/lib/puppet/util.rb +41 -3
  177. data/lib/puppet/util/autoload.rb +10 -25
  178. data/lib/puppet/util/character_encoding.rb +9 -5
  179. data/lib/puppet/util/checksums.rb +19 -4
  180. data/lib/puppet/util/connection.rb +8 -8
  181. data/lib/puppet/util/execution.rb +2 -2
  182. data/lib/puppet/util/fileparsing.rb +2 -2
  183. data/lib/puppet/util/log/destinations.rb +1 -10
  184. data/lib/puppet/util/package/version/range.rb +4 -1
  185. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  186. data/lib/puppet/util/provider_features.rb +1 -1
  187. data/lib/puppet/util/reference.rb +1 -1
  188. data/lib/puppet/util/run_mode.rb +5 -1
  189. data/lib/puppet/util/windows.rb +1 -0
  190. data/lib/puppet/util/windows/api_types.rb +60 -33
  191. data/lib/puppet/util/windows/eventlog.rb +1 -6
  192. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  193. data/lib/puppet/util/windows/principal.rb +8 -6
  194. data/lib/puppet/util/windows/registry.rb +11 -11
  195. data/lib/puppet/util/windows/security.rb +4 -4
  196. data/lib/puppet/util/windows/service.rb +43 -26
  197. data/lib/puppet/util/windows/user.rb +242 -8
  198. data/lib/puppet/version.rb +1 -1
  199. data/locales/puppet.pot +541 -427
  200. data/man/man5/puppet.conf.5 +84 -19
  201. data/man/man8/puppet-agent.8 +7 -4
  202. data/man/man8/puppet-apply.8 +1 -1
  203. data/man/man8/puppet-catalog.8 +1 -1
  204. data/man/man8/puppet-config.8 +6 -6
  205. data/man/man8/puppet-describe.8 +1 -1
  206. data/man/man8/puppet-device.8 +1 -1
  207. data/man/man8/puppet-doc.8 +1 -1
  208. data/man/man8/puppet-epp.8 +1 -1
  209. data/man/man8/puppet-facts.8 +1 -1
  210. data/man/man8/puppet-filebucket.8 +1 -1
  211. data/man/man8/puppet-generate.8 +1 -1
  212. data/man/man8/puppet-help.8 +6 -3
  213. data/man/man8/puppet-key.8 +1 -1
  214. data/man/man8/puppet-lookup.8 +2 -2
  215. data/man/man8/puppet-man.8 +1 -1
  216. data/man/man8/puppet-module.8 +4 -1
  217. data/man/man8/puppet-node.8 +4 -4
  218. data/man/man8/puppet-parser.8 +1 -1
  219. data/man/man8/puppet-plugin.8 +1 -1
  220. data/man/man8/puppet-report.8 +1 -1
  221. data/man/man8/puppet-resource.8 +1 -1
  222. data/man/man8/puppet-script.8 +1 -1
  223. data/man/man8/puppet-ssl.8 +1 -1
  224. data/man/man8/puppet-status.8 +2 -2
  225. data/man/man8/puppet.8 +2 -2
  226. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  227. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  228. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  229. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  230. data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-enabled.txt → dnf-module-list.txt} +6 -0
  231. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  232. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  233. data/spec/integration/application/agent_spec.rb +202 -52
  234. data/spec/integration/application/apply_spec.rb +149 -149
  235. data/spec/integration/application/config_spec.rb +74 -0
  236. data/spec/integration/application/doc_spec.rb +16 -6
  237. data/spec/integration/application/filebucket_spec.rb +70 -21
  238. data/spec/integration/application/help_spec.rb +42 -0
  239. data/spec/integration/application/lookup_spec.rb +13 -0
  240. data/spec/integration/application/module_spec.rb +68 -0
  241. data/spec/integration/application/plugin_spec.rb +75 -2
  242. data/spec/integration/configurer_spec.rb +14 -0
  243. data/spec/integration/data_binding_spec.rb +82 -0
  244. data/spec/integration/defaults_spec.rb +27 -3
  245. data/spec/integration/directory_environments_spec.rb +17 -17
  246. data/spec/integration/http/client_spec.rb +6 -1
  247. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  248. data/spec/integration/network/http_pool_spec.rb +73 -0
  249. data/spec/integration/node/environment_spec.rb +1 -1
  250. data/spec/integration/parser/compiler_spec.rb +11 -0
  251. data/spec/integration/type/file_spec.rb +1 -1
  252. data/spec/integration/util/execution_spec.rb +22 -0
  253. data/spec/integration/util/windows/adsi_spec.rb +7 -2
  254. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  255. data/spec/integration/util/windows/process_spec.rb +26 -32
  256. data/spec/integration/util/windows/registry_spec.rb +7 -7
  257. data/spec/integration/util/windows/user_spec.rb +47 -5
  258. data/spec/integration/util_spec.rb +7 -33
  259. data/spec/lib/puppet_spec/https.rb +6 -0
  260. data/spec/lib/puppet_spec/matchers.rb +0 -80
  261. data/spec/lib/puppet_spec/puppetserver.rb +8 -0
  262. data/spec/shared_contexts/types_setup.rb +2 -0
  263. data/spec/unit/agent_spec.rb +47 -1
  264. data/spec/unit/application/agent_spec.rb +7 -8
  265. data/spec/unit/application/doc_spec.rb +2 -2
  266. data/spec/unit/application/face_base_spec.rb +6 -4
  267. data/spec/unit/application/facts_spec.rb +41 -10
  268. data/spec/unit/application/man_spec.rb +52 -0
  269. data/spec/unit/application/resource_spec.rb +3 -1
  270. data/spec/unit/application/ssl_spec.rb +15 -2
  271. data/spec/unit/application_spec.rb +9 -4
  272. data/spec/unit/configurer/downloader_spec.rb +10 -0
  273. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  274. data/spec/unit/configurer_spec.rb +86 -37
  275. data/spec/unit/confine_spec.rb +2 -1
  276. data/spec/unit/context/trusted_information_spec.rb +25 -2
  277. data/spec/unit/daemon_spec.rb +5 -64
  278. data/spec/unit/environments_spec.rb +99 -32
  279. data/spec/unit/face/config_spec.rb +59 -1
  280. data/spec/unit/face/module/search_spec.rb +17 -0
  281. data/spec/unit/face/node_spec.rb +2 -2
  282. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  283. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  284. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  285. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  286. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  287. data/spec/unit/file_system/uniquefile_spec.rb +29 -0
  288. data/spec/unit/file_system_spec.rb +1 -2
  289. data/spec/unit/http/client_spec.rb +74 -19
  290. data/spec/unit/http/external_client_spec.rb +9 -9
  291. data/spec/unit/http/resolver_spec.rb +24 -5
  292. data/spec/unit/http/response_spec.rb +6 -0
  293. data/spec/unit/http/service/ca_spec.rb +2 -3
  294. data/spec/unit/http/service/compiler_spec.rb +2 -3
  295. data/spec/unit/http/service/file_server_spec.rb +2 -3
  296. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  297. data/spec/unit/http/service/report_spec.rb +2 -3
  298. data/spec/unit/http/service_spec.rb +0 -1
  299. data/spec/unit/http/session_spec.rb +8 -21
  300. data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
  301. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  302. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  303. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  304. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  305. data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
  306. data/spec/unit/indirector/json_spec.rb +8 -8
  307. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  308. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  309. data/spec/unit/indirector/request_spec.rb +5 -5
  310. data/spec/unit/indirector/rest_spec.rb +14 -1
  311. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  312. data/spec/unit/indirector/yaml_spec.rb +7 -7
  313. data/spec/unit/interface_spec.rb +3 -3
  314. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  315. data/spec/unit/network/format_support_spec.rb +3 -2
  316. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  317. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  318. data/spec/unit/network/http/connection_spec.rb +552 -190
  319. data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
  320. data/spec/unit/network/http_pool_spec.rb +63 -57
  321. data/spec/unit/network/http_spec.rb +1 -1
  322. data/spec/unit/node/environment_spec.rb +18 -1
  323. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  324. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  325. data/spec/unit/parser/scope_spec.rb +1 -1
  326. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  327. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  328. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  329. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  330. data/spec/unit/provider/exec_spec.rb +4 -3
  331. data/spec/unit/provider/package/aix_spec.rb +29 -0
  332. data/spec/unit/provider/package/apt_spec.rb +77 -0
  333. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  334. data/spec/unit/provider/package/dnfmodule_spec.rb +25 -5
  335. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  336. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  337. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  338. data/spec/unit/provider/package/pip_spec.rb +42 -16
  339. data/spec/unit/provider/package/portage_spec.rb +5 -0
  340. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  341. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  342. data/spec/unit/provider/package/yum_spec.rb +47 -8
  343. data/spec/unit/provider/package/zypper_spec.rb +98 -0
  344. data/spec/unit/provider/service/base_spec.rb +2 -4
  345. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  346. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  347. data/spec/unit/provider/service/debian_spec.rb +3 -5
  348. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  349. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  350. data/spec/unit/provider/service/init_spec.rb +46 -5
  351. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  352. data/spec/unit/provider/service/openbsd_spec.rb +9 -0
  353. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  354. data/spec/unit/provider/service/openwrt_spec.rb +2 -1
  355. data/spec/unit/provider/service/redhat_spec.rb +10 -1
  356. data/spec/unit/provider/service/runit_spec.rb +2 -1
  357. data/spec/unit/provider/service/smf_spec.rb +1 -1
  358. data/spec/unit/provider/service/src_spec.rb +3 -5
  359. data/spec/unit/provider/service/systemd_spec.rb +87 -19
  360. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  361. data/spec/unit/provider/service/windows_spec.rb +50 -14
  362. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  363. data/spec/unit/provider/user/useradd_spec.rb +30 -16
  364. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  365. data/spec/unit/puppet_pal_2pec.rb +40 -0
  366. data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
  367. data/spec/unit/puppet_spec.rb +33 -0
  368. data/spec/unit/reports/http_spec.rb +1 -1
  369. data/spec/unit/reports/store_spec.rb +17 -13
  370. data/spec/unit/resource_spec.rb +3 -3
  371. data/spec/unit/rest/route_spec.rb +4 -4
  372. data/spec/unit/settings_spec.rb +182 -22
  373. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  374. data/spec/unit/ssl/state_machine_spec.rb +52 -8
  375. data/spec/unit/test/test_helper_spec.rb +17 -0
  376. data/spec/unit/transaction/persistence_spec.rb +15 -0
  377. data/spec/unit/transaction/report_spec.rb +3 -1
  378. data/spec/unit/type/file/source_spec.rb +4 -4
  379. data/spec/unit/type/file_spec.rb +122 -96
  380. data/spec/unit/type/filebucket_spec.rb +1 -1
  381. data/spec/unit/type/service_spec.rb +218 -8
  382. data/spec/unit/type/user_spec.rb +32 -3
  383. data/spec/unit/type_spec.rb +50 -0
  384. data/spec/unit/util/autoload_spec.rb +2 -1
  385. data/spec/unit/util/character_encoding_spec.rb +4 -4
  386. data/spec/unit/util/checksums_spec.rb +16 -0
  387. data/spec/unit/util/command_line_spec.rb +11 -6
  388. data/spec/unit/util/log/destinations_spec.rb +1 -29
  389. data/spec/unit/util/package/version/range_spec.rb +22 -1
  390. data/spec/unit/util/run_mode_spec.rb +6 -6
  391. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  392. data/spec/unit/util/windows/service_spec.rb +4 -4
  393. data/spec/unit/util_spec.rb +3 -3
  394. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  395. data/tasks/manpages.rake +5 -35
  396. metadata +43 -49
  397. data/spec/integration/faces/config_spec.rb +0 -91
  398. data/spec/integration/faces/documentation_spec.rb +0 -57
  399. data/spec/integration/file_bucket/file_spec.rb +0 -50
  400. data/spec/integration/file_serving/content_spec.rb +0 -7
  401. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  402. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  403. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  404. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  405. data/spec/integration/module_tool/forge_spec.rb +0 -51
  406. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  407. data/spec/integration/provider/service/init_spec.rb +0 -48
  408. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  409. data/spec/integration/provider/service/windows_spec.rb +0 -50
  410. data/spec/integration/reference/providers_spec.rb +0 -21
  411. data/spec/integration/reports_spec.rb +0 -13
  412. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  413. data/spec/integration/ssl/host_spec.rb +0 -72
  414. data/spec/integration/ssl/key_spec.rb +0 -99
  415. data/spec/integration/test/test_helper_spec.rb +0 -31
  416. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  417. data/spec/unit/face/man_spec.rb +0 -25
  418. data/spec/unit/man_spec.rb +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2174dd5f857d0777042e765c5169da9745c91e81ee8c71e21fa95db817aee97
4
- data.tar.gz: 23fab01a6bb29445310aacb3eae8e95776d7df253b4a1cd0de84a2fd6b89d6b0
3
+ metadata.gz: bebf7c1f070e9b926268d10514168aa9c980571fb38937cca7d0ecd453b46571
4
+ data.tar.gz: 5085ac016a244c154912c61e51d0f7c88e1d0795633087c60d51b1918f69549c
5
5
  SHA512:
6
- metadata.gz: bf0748125c67897754858a88d59f5dadf53ecd81fce5a56fbbd328fb51d8d4a2c3043e2475364b14954b259e7e41586e9839a3f1132dd62951c39595a789af40
7
- data.tar.gz: e4140021fa69c4385a4e86630a1d241096a11799d88995a9c1107b04d4092d555961ef8406b3d2edb8c7dd1d389854a301a213095dc0a96ad6ddbde586b1e19a
6
+ metadata.gz: 420e17e3874a6acd6429883fa2933c9128d4d0c8603df758a71cc51d9d00c58cc17f89a67d587516aba460a4fa56ed2a5c44a4c61772536c847215e519193f45
7
+ data.tar.gz: b059f4655feb7d7ef87a443116c28028bcf2a6c9d21222c89614a39014558e436871e3a5c743fe1b102d4949332b405121b8b640cab80095c87c84bd9386a08b
data/CODEOWNERS CHANGED
@@ -11,13 +11,8 @@
11
11
  /lib/puppet/provider/service @puppetlabs/night-s-watch
12
12
  /lib/puppet/provider/user @puppetlabs/night-s-watch
13
13
 
14
- # language
15
- /lib/puppet/datatypes @puppetlabs/language
16
- /lib/puppet/functions @puppetlabs/language
17
- /lib/puppet/pal @puppetlabs/language
18
- /lib/puppet/parser @puppetlabs/language
19
- /lib/puppet/pops @puppetlabs/language
20
- /lib/puppet/syntax_checkers @puppetlabs/language
14
+ # PAL
15
+ /lib/puppet/pal @puppetlabs/bolt
21
16
 
22
17
  # puppet device
23
18
  /lib/puppet/application/device.rb @puppetlabs/networking
data/Gemfile CHANGED
@@ -3,9 +3,9 @@ source ENV['GEM_SOURCE'] || "https://rubygems.org"
3
3
  gemspec
4
4
 
5
5
  def location_for(place, fake_version = nil)
6
- if place =~ /^(git[:@][^#]*)#(.*)/
6
+ if place.is_a?(String) && place =~ /^(git[:@][^#]*)#(.*)/
7
7
  [fake_version, { git: $1, branch: $2, require: false }].compact
8
- elsif place =~ /^file:\/\/(.*)/
8
+ elsif place.is_a?(String) && place =~ /^file:\/\/(.*)/
9
9
  ['>= 0', { path: File.expand_path($1), require: false }]
10
10
  else
11
11
  [place, { require: false }]
@@ -19,6 +19,8 @@ gem "hiera", *location_for(ENV['HIERA_LOCATION']) if ENV.has_key?('HIERA_LOCATIO
19
19
  gem "semantic_puppet", *location_for(ENV['SEMANTIC_PUPPET_LOCATION'] || ["~> 1.0"])
20
20
  gem "puppet-resource_api", *location_for(ENV['RESOURCE_API_LOCATION'] || ["~> 1.5"])
21
21
 
22
+ gem "scanf" if RUBY_VERSION.to_f >= 2.7
23
+
22
24
  group(:features) do
23
25
  gem 'diff-lcs', '~> 1.3', require: false
24
26
  gem 'hiera-eyaml', *location_for(ENV['HIERA_EYAML_LOCATION'])
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- puppet (6.15.0)
4
+ puppet (6.19.1)
5
5
  CFPropertyList (~> 2.2)
6
6
  concurrent-ruby (~> 1.0)
7
7
  deep_merge (~> 1.0)
@@ -20,16 +20,17 @@ GEM
20
20
  addressable (2.7.0)
21
21
  public_suffix (>= 2.0.2, < 5.0)
22
22
  artifactory (2.8.2)
23
- ast (2.4.0)
24
- coderay (1.1.2)
25
- concurrent-ruby (1.1.6)
26
- crack (0.4.3)
27
- safe_yaml (~> 1.0.0)
28
- csv (3.1.2)
23
+ ast (2.4.1)
24
+ coderay (1.1.3)
25
+ concurrent-ruby (1.1.7)
26
+ crack (0.4.4)
27
+ csv (3.1.5)
29
28
  deep_merge (1.2.1)
30
- diff-lcs (1.3)
29
+ diff-lcs (1.4.4)
31
30
  docopt (0.6.1)
32
- facter (2.5.7)
31
+ facter (4.0.44)
32
+ hocon (~> 1.3)
33
+ thor (>= 1.0.1, < 2.0)
33
34
  fast_gettext (1.1.2)
34
35
  gettext (3.2.9)
35
36
  locale (>= 2.0.5)
@@ -44,7 +45,7 @@ GEM
44
45
  highline (~> 1.6.19)
45
46
  optimist
46
47
  highline (1.6.21)
47
- hocon (1.3.0)
48
+ hocon (1.3.1)
48
49
  hpricot (0.8.6)
49
50
  httpclient (2.8.3)
50
51
  json-schema (2.8.1)
@@ -54,30 +55,31 @@ GEM
54
55
  method_source (1.0.0)
55
56
  minitar (0.9)
56
57
  msgpack (1.3.3)
57
- multi_json (1.14.1)
58
+ multi_json (1.15.0)
58
59
  mustache (1.1.1)
59
60
  optimist (3.0.1)
60
- packaging (0.99.61)
61
+ packaging (0.99.71)
61
62
  artifactory (~> 2)
63
+ csv (= 3.1.5)
62
64
  rake (>= 12.3)
63
65
  release-metrics
64
- parallel (1.19.1)
65
- parser (2.7.1.1)
66
- ast (~> 2.4.0)
66
+ parallel (1.19.2)
67
+ parser (2.7.2.0)
68
+ ast (~> 2.4.1)
67
69
  powerpack (0.1.2)
68
70
  pry (0.13.1)
69
71
  coderay (~> 1.1)
70
72
  method_source (~> 1.0)
71
- public_suffix (4.0.4)
73
+ public_suffix (4.0.6)
72
74
  puppet-resource_api (1.8.13)
73
75
  hocon (>= 1.0)
74
- puppetserver-ca (1.7.0)
75
- facter (>= 2.0.1, < 4)
76
+ puppetserver-ca (1.8.0)
77
+ facter (>= 2.0.1, < 5)
76
78
  racc (1.4.9)
77
79
  rainbow (2.2.2)
78
80
  rake
79
81
  rake (12.3.3)
80
- rdiscount (2.2.0.1)
82
+ rdiscount (2.2.0.2)
81
83
  rdoc (6.2.1)
82
84
  release-metrics (1.1.0)
83
85
  csv
@@ -90,9 +92,9 @@ GEM
90
92
  rspec-core (~> 3.9.0)
91
93
  rspec-expectations (~> 3.9.0)
92
94
  rspec-mocks (~> 3.9.0)
93
- rspec-core (3.9.1)
94
- rspec-support (~> 3.9.1)
95
- rspec-expectations (3.9.1)
95
+ rspec-core (3.9.3)
96
+ rspec-support (~> 3.9.3)
97
+ rspec-expectations (3.9.2)
96
98
  diff-lcs (>= 1.2.0, < 2.0)
97
99
  rspec-support (~> 3.9.0)
98
100
  rspec-its (1.3.0)
@@ -101,7 +103,7 @@ GEM
101
103
  rspec-mocks (3.9.1)
102
104
  diff-lcs (>= 1.2.0, < 2.0)
103
105
  rspec-support (~> 3.9.0)
104
- rspec-support (3.9.2)
106
+ rspec-support (3.9.3)
105
107
  rubocop (0.49.1)
106
108
  parallel (~> 1.10)
107
109
  parser (>= 2.3.3.1, < 3.0)
@@ -111,18 +113,18 @@ GEM
111
113
  unicode-display_width (~> 1.0, >= 1.0.1)
112
114
  rubocop-i18n (1.2.0)
113
115
  rubocop (~> 0.49.0)
114
- ruby-prof (1.3.2)
116
+ ruby-prof (1.4.1)
115
117
  ruby-progressbar (1.10.1)
116
- safe_yaml (1.0.5)
117
118
  semantic_puppet (1.0.2)
118
119
  text (1.3.1)
120
+ thor (1.0.1)
119
121
  unicode-display_width (1.7.0)
120
122
  vcr (5.1.0)
121
- webmock (3.8.3)
123
+ webmock (3.9.3)
122
124
  addressable (>= 2.3.6)
123
125
  crack (>= 0.3.2)
124
126
  hashdiff (>= 0.4.0, < 2.0.0)
125
- yard (0.9.24)
127
+ yard (0.9.25)
126
128
 
127
129
  PLATFORMS
128
130
  ruby
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # Puppet
2
2
 
3
- [![Travis Status](https://travis-ci.com/puppetlabs/puppet.svg?branch=master)](https://travis-ci.com/puppetlabs/puppet)
4
- [![Appveyor Status](https://ci.appveyor.com/api/projects/status/cvhpypd4504sevqq/branch/master?svg=true)](https://ci.appveyor.com/project/puppetlabs/puppet/branch/master)
3
+ ![RSpec tests](https://github.com/puppetlabs/puppet/workflows/RSpec%20tests/badge.svg)
5
4
  [![Gem Version](https://badge.fury.io/rb/puppet.svg)](https://badge.fury.io/rb/puppet)
6
5
  [![Inline docs](https://inch-ci.org/github/puppetlabs/puppet.svg)](https://inch-ci.org/github/puppetlabs/puppet)
7
6
 
@@ -25,10 +24,10 @@ which also includes orchestration features, a web console, and professional supp
25
24
  The PE documentation is [available here.](https://puppet.com/docs/pe/latest)
26
25
 
27
26
  To install an open source release of Puppet,
28
- [see the installation guide on the docs site.](https://puppet.com/docs/puppet/5.5/install_pre.html)
27
+ [see the installation guide on the docs site.](https://puppet.com/docs/puppet/latest/installing_and_upgrading.html)
29
28
 
30
29
  If you need to run Puppet from source as a tester or developer,
31
- see the [Running Puppet from Source](https://docs.puppet.com/puppet/3.8/from_source.html) guide on the docs site.
30
+ see the [Quick Start to Developing on Puppet](docs/quickstart.md) guide.
32
31
 
33
32
  ## Developing and Contributing
34
33
 
data/Rakefile CHANGED
@@ -61,12 +61,8 @@ end
61
61
  desc "verify that commit messages match CONTRIBUTING.md requirements"
62
62
  task(:commits) do
63
63
  # This rake task looks at the summary from every commit from this branch not
64
- # in the branch targeted for a PR. This is accomplished by using the
65
- # TRAVIS_COMMIT_RANGE environment variable, which is present in travis CI and
66
- # populated with the range of commits the PR contains. If not available, this
67
- # falls back to `master..HEAD` as a next best bet as `master` is unlikely to
68
- # ever be absent.
69
- commit_range = ENV['TRAVIS_COMMIT_RANGE'].nil? ? 'master..HEAD' : ENV['TRAVIS_COMMIT_RANGE'].sub(/\.\.\./, '..')
64
+ # in the branch targeted for a PR.
65
+ commit_range = 'HEAD^..HEAD'
70
66
  puts "Checking commits #{commit_range}"
71
67
  %x{git log --no-merges --pretty=%s #{commit_range}}.each_line do |commit_summary|
72
68
  # This regex tests for the currently supported commit summary tokens: maint, doc, packaging, or pup-<number>.
@@ -91,12 +87,8 @@ end
91
87
 
92
88
  desc "verify that changed files are clean of Ruby warnings"
93
89
  task(:warnings) do
94
- # This rake task looks at all files modified in this branch. This is
95
- # accomplished by using the TRAVIS_COMMIT_RANGE environment variable, which
96
- # is present in travis CI and populated with the range of commits the PR
97
- # contains. If not available, this falls back to `master..HEAD` as a next
98
- # best bet as `master` is unlikely to ever be absent.
99
- commit_range = ENV['TRAVIS_COMMIT_RANGE'].nil? ? 'master...HEAD' : ENV['TRAVIS_COMMIT_RANGE']
90
+ # This rake task looks at all files modified in this branch.
91
+ commit_range = 'HEAD^..HEAD'
100
92
  ruby_files_ok = true
101
93
  puts "Checking modified files #{commit_range}"
102
94
  %x{git diff --diff-filter=ACM --name-only #{commit_range}}.each_line do |modified_file|
@@ -1,4 +1,5 @@
1
1
  require 'puppet/version'
2
+ require 'puppet/concurrent/synchronized'
2
3
 
3
4
  if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.3.0")
4
5
  raise LoadError, "Puppet #{Puppet.version} requires Ruby 2.3.0 or greater, found Ruby #{RUBY_VERSION.dup}."
@@ -6,6 +7,8 @@ end
6
7
 
7
8
  Puppet::OLDEST_RECOMMENDED_RUBY_VERSION = '2.3.0'
8
9
 
10
+ $LOAD_PATH.extend(Puppet::Concurrent::Synchronized)
11
+
9
12
  # see the bottom of the file for further inclusions
10
13
  # Also see the new Vendor support - towards the end
11
14
  #
@@ -150,21 +153,45 @@ module Puppet
150
153
  # @param args [Array<String>] the command line arguments to use for initialization
151
154
  # @param require_config [Boolean] controls loading of Puppet configuration files
152
155
  # @param global_settings [Boolean] controls push to global context after settings object initialization
156
+ # @param runtime_implementations [Hash<Symbol, Object>] runtime implementations to register
153
157
  # @return [void]
154
- def self.initialize_settings(args = [], require_config = true, push_settings_globally = true)
155
- do_initialize_settings_for_run_mode(:user, args, require_config, push_settings_globally)
158
+ def self.initialize_settings(args = [], require_config = true, push_settings_globally = true, runtime_implementations = {})
159
+ do_initialize_settings_for_run_mode(:user, args, require_config, push_settings_globally, runtime_implementations)
160
+ end
161
+
162
+ def self.vendored_modules
163
+ dir = Puppet[:vendormoduledir]
164
+ if dir && File.directory?(dir)
165
+ Dir.entries(dir)
166
+ .reject { |f| f =~ /^\./ }
167
+ .map { |f| File.join(dir, f, "lib") }
168
+ .select { |d| FileTest.directory?(d) }
169
+ else
170
+ []
171
+ end
156
172
  end
173
+ private_class_method :vendored_modules
174
+
175
+ def self.initialize_load_path
176
+ $LOAD_PATH.unshift(Puppet[:libdir])
177
+ $LOAD_PATH.concat(vendored_modules)
178
+ end
179
+ private_class_method :initialize_load_path
157
180
 
158
181
  # private helper method to provide the implementation details of initializing for a run mode,
159
182
  # but allowing us to control where the deprecation warning is issued
160
- def self.do_initialize_settings_for_run_mode(run_mode, args, require_config = true, push_settings_globally = true)
183
+ def self.do_initialize_settings_for_run_mode(run_mode, args, require_config, push_settings_globally, runtime_implementations)
161
184
  Puppet.settings.initialize_global_settings(args, require_config)
162
185
  run_mode = Puppet::Util::RunMode[run_mode]
163
186
  Puppet.settings.initialize_app_defaults(Puppet::Settings.app_defaults_for_run_mode(run_mode))
164
187
  if push_settings_globally
188
+ initialize_load_path
165
189
  push_context_global(Puppet.base_context(Puppet.settings), "Initial context after settings initialization")
166
190
  Puppet::Parser::Functions.reset
167
191
  end
192
+ runtime_implementations.each_pair do |name, impl|
193
+ Puppet.runtime[name] = impl
194
+ end
168
195
  end
169
196
  private_class_method :do_initialize_settings_for_run_mode
170
197
 
@@ -218,10 +245,7 @@ module Puppet
218
245
 
219
246
  {
220
247
  :environments => Puppet::Environments::Cached.new(Puppet::Environments::Combined.new(*loaders)),
221
- :http_pool => proc {
222
- require 'puppet/network/http'
223
- Puppet::Network::HTTP::NoCachePool.new
224
- },
248
+ :http_pool => proc { Puppet.runtime[:http].pool },
225
249
  :ssl_context => proc {
226
250
  begin
227
251
  cert = Puppet::X509::CertProvider.new
@@ -237,7 +261,7 @@ module Puppet
237
261
  end
238
262
  },
239
263
  :ssl_host => proc { Puppet::SSL::Host.localhost(true) },
240
- :http_session => proc { Puppet.runtime["http"].create_session },
264
+ :http_session => proc { Puppet.runtime[:http].create_session },
241
265
  :plugins => proc { Puppet::Plugins::Configuration.load_plugins },
242
266
  :rich_data => false
243
267
  }
@@ -43,6 +43,7 @@ class Puppet::Agent
43
43
  end
44
44
 
45
45
  result = nil
46
+ wait_for_lock_deadline = nil
46
47
  block_run = Puppet::Application.controlled_run do
47
48
  splay client_options.fetch :splay, Puppet[:splay]
48
49
  result = run_in_fork(should_fork) do
@@ -60,16 +61,29 @@ class Puppet::Agent
60
61
  end
61
62
  end
62
63
  rescue Puppet::LockError
63
- Puppet.notice _("Run of %{client_class} already in progress; skipping (%{lockfile_path} exists)") % { client_class: client_class, lockfile_path: lockfile_path }
64
- return
64
+ now = Time.now.to_i
65
+ wait_for_lock_deadline ||= now + Puppet[:maxwaitforlock]
66
+
67
+ if Puppet[:waitforlock] < 1
68
+ Puppet.notice _("Run of %{client_class} already in progress; skipping (%{lockfile_path} exists)") % { client_class: client_class, lockfile_path: lockfile_path }
69
+ nil
70
+ elsif now >= wait_for_lock_deadline
71
+ Puppet.notice _("Exiting now because the maxwaitforlock timeout has been exceeded.")
72
+ nil
73
+ else
74
+ Puppet.info _("Another puppet instance is already running; --waitforlock flag used, waiting for running instance to finish.")
75
+ Puppet.info _("Will try again in %{time} seconds.") % {time: Puppet[:waitforlock]}
76
+ sleep Puppet[:waitforlock]
77
+ retry
78
+ end
65
79
  rescue RunTimeoutError => detail
66
80
  Puppet.log_exception(detail, _("Execution of %{client_class} did not complete within %{runtimeout} seconds and was terminated.") %
67
81
  {client_class: client_class,
68
82
  runtimeout: Puppet[:runtimeout]})
69
- return 1
83
+ nil
70
84
  rescue StandardError => detail
71
85
  Puppet.log_exception(detail, _("Could not run %{client_class}: %{detail}") % { client_class: client_class, detail: detail })
72
- 1
86
+ nil
73
87
  end
74
88
  end
75
89
  end
@@ -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
 
@@ -103,7 +103,7 @@ USAGE
103
103
  puppet agent [--certname <NAME>] [-D|--daemonize|--no-daemonize]
104
104
  [-d|--debug] [--detailed-exitcodes] [--digest <DIGEST>] [--disable [MESSAGE]] [--enable]
105
105
  [--fingerprint] [-h|--help] [-l|--logdest syslog|eventlog|<ABS FILEPATH>|console]
106
- [--masterport <PORT>] [--noop] [-o|--onetime] [--sourceaddress <IP_ADDRESS>] [-t|--test]
106
+ [--serverport <PORT>] [--noop] [-o|--onetime] [--sourceaddress <IP_ADDRESS>] [-t|--test]
107
107
  [-v|--verbose] [-V|--version] [-w|--waitforcert <SECONDS>]
108
108
 
109
109
 
@@ -258,7 +258,9 @@ generated by running puppet agent with '--genconfig'.
258
258
 
259
259
  * --job-id:
260
260
  Attach the specified job id to the catalog request and the report used for
261
- this agent run. This option only works when '--onetime' is used.
261
+ this agent run. This option only works when '--onetime' is used. When using
262
+ Puppet Enterprise this flag should not be used as the orchestrator sets the
263
+ job-id for you and it must be unique.
262
264
 
263
265
  * --logdest:
264
266
  Where to send log messages. Choose between 'syslog' (the POSIX syslog
@@ -275,8 +277,9 @@ generated by running puppet agent with '--genconfig'.
275
277
  format.
276
278
 
277
279
  * --masterport:
278
- The port on which to contact the puppet master.
279
- (This is a Puppet setting, and can go in puppet.conf.)
280
+ The port on which to contact the Puppet Server.
281
+ (This is a Puppet setting, and can go in puppet.conf.
282
+ Deprecated in favor of the 'serverport' setting.)
280
283
 
281
284
  * --noop:
282
285
  Use 'noop' mode where the daemon runs in a no-op or dry-run mode. This
@@ -292,6 +295,10 @@ generated by running puppet agent with '--genconfig'.
292
295
  (This is a Puppet setting, and can go in puppet.conf. Note the special 'no-'
293
296
  prefix for boolean settings on the command line.)
294
297
 
298
+ * --serverport:
299
+ The port on which to contact the Puppet Server.
300
+ (This is a Puppet setting, and can go in puppet.conf.)
301
+
295
302
  * --sourceaddress:
296
303
  Set the source IP address for transactions. This defaults to automatically selected.
297
304
  (This is a Puppet setting, and can go in puppet.conf.)
@@ -363,8 +370,17 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
363
370
  daemon.set_signal_traps
364
371
 
365
372
  log_config if Puppet[:daemonize]
366
-
367
- Puppet.override(ssl_context: wait_for_certificates) do
373
+
374
+ # run ssl state machine, waiting if needed
375
+ ssl_context = wait_for_certificates
376
+
377
+ # Each application is responsible for pushing loaders onto the context.
378
+ # Use the current environment that has already been established, though
379
+ # it may change later during the configurer run.
380
+ env = Puppet.lookup(:current_environment)
381
+ Puppet.override(ssl_context: ssl_context,
382
+ current_environment: env,
383
+ loaders: Puppet::Pops::Loaders.new(env, true)) do
368
384
  if Puppet[:onetime]
369
385
  onetime(daemon)
370
386
  else
@@ -489,9 +505,8 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
489
505
  end
490
506
 
491
507
  def daemonize_process_when(should_daemonize)
492
- daemon = Puppet::Daemon.new(Puppet::Util::Pidlock.new(Puppet[:pidfile]))
508
+ daemon = Puppet::Daemon.new(@agent, Puppet::Util::Pidlock.new(Puppet[:pidfile]))
493
509
  daemon.argv = @argv
494
- daemon.agent = @agent
495
510
 
496
511
  daemon.daemonize if should_daemonize
497
512
 
@@ -190,7 +190,7 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
190
190
  text = Puppet::FileSystem.read(options[:catalog], :encoding => 'utf-8')
191
191
  end
192
192
  env = Puppet.lookup(:environments).get(Puppet[:environment])
193
- Puppet.override(:current_environment => env, :loaders => Puppet::Pops::Loaders.new(env)) do
193
+ Puppet.override(:current_environment => env, :loaders => create_loaders(env)) do
194
194
  catalog = read_catalog(text)
195
195
  apply_catalog(catalog)
196
196
  end
@@ -204,7 +204,7 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
204
204
  apply_environment = get_configured_environment(node, manifest)
205
205
 
206
206
  # TRANSLATORS "puppet apply" is a program command and should not be translated
207
- Puppet.override({:current_environment => apply_environment}, _("For puppet apply")) do
207
+ Puppet.override({:current_environment => apply_environment, :loaders => create_loaders(apply_environment)}, _("For puppet apply")) do
208
208
  configure_node_facts(node, facts)
209
209
 
210
210
  # Allow users to load the classes that puppet agent creates.
@@ -235,30 +235,23 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
235
235
  exit(1)
236
236
  end
237
237
 
238
- # Loaders are required when resolving deferred values and at the end
239
- # when apply_catalog is called - it is therefore used around all of the
240
- # required steps as it is expensive to set up loaders twice (once for
241
- # resolution and once for the apply).
242
- #
243
- exit_status = Puppet.override(:loaders => Puppet::Pops::Loaders.new(apply_environment)) do
238
+ # Resolve all deferred values and replace them / mutate the catalog
239
+ Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(node.facts, catalog)
244
240
 
245
- # Resolve all deferred values and replace them / mutate the catalog
246
- Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(node.facts, catalog)
241
+ # Translate it to a RAL catalog
242
+ catalog = catalog.to_ral
247
243
 
248
- # Translate it to a RAL catalog
249
- catalog = catalog.to_ral
244
+ catalog.finalize
250
245
 
251
- catalog.finalize
246
+ catalog.retrieval_duration = Time.now - starttime
252
247
 
253
- catalog.retrieval_duration = Time.now - starttime
248
+ if options[:write_catalog_summary]
249
+ catalog.write_class_file
250
+ catalog.write_resource_file
251
+ end
254
252
 
255
- if options[:write_catalog_summary]
256
- catalog.write_class_file
257
- catalog.write_resource_file
258
- end
253
+ exit_status = apply_catalog(catalog)
259
254
 
260
- apply_catalog(catalog)
261
- end
262
255
  if not exit_status
263
256
  exit(1)
264
257
  elsif options[:detailed_exitcodes] then
@@ -313,6 +306,11 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
313
306
 
314
307
  private
315
308
 
309
+ def create_loaders(env)
310
+ # Ignore both 'cached_puppet_lib' and pcore resource type loaders
311
+ Puppet::Pops::Loaders.new(env, false, false)
312
+ end
313
+
316
314
  def read_catalog(text)
317
315
  facts = get_facts()
318
316
  node = get_node()