puppet 6.14.0-x64-mingw32 → 6.19.0-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 (496) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -7
  3. data/Gemfile +4 -2
  4. data/Gemfile.lock +36 -34
  5. data/README.md +3 -4
  6. data/Rakefile +4 -12
  7. data/ext/windows/service/daemon.rb +3 -3
  8. data/lib/puppet.rb +33 -9
  9. data/lib/puppet/agent.rb +20 -14
  10. data/lib/puppet/agent/locker.rb +0 -7
  11. data/lib/puppet/application/agent.rb +25 -9
  12. data/lib/puppet/application/apply.rb +18 -20
  13. data/lib/puppet/application/device.rb +1 -1
  14. data/lib/puppet/application/doc.rb +1 -1
  15. data/lib/puppet/application/filebucket.rb +5 -14
  16. data/lib/puppet/application/lookup.rb +16 -4
  17. data/lib/puppet/application/plugin.rb +1 -0
  18. data/lib/puppet/application/ssl.rb +3 -3
  19. data/lib/puppet/configurer.rb +68 -24
  20. data/lib/puppet/configurer/downloader.rb +31 -10
  21. data/lib/puppet/configurer/plugin_handler.rb +1 -1
  22. data/lib/puppet/confine.rb +2 -2
  23. data/lib/puppet/confine/any.rb +1 -1
  24. data/lib/puppet/context/trusted_information.rb +14 -8
  25. data/lib/puppet/daemon.rb +13 -27
  26. data/lib/puppet/defaults.rb +141 -41
  27. data/lib/puppet/environments.rb +55 -15
  28. data/lib/puppet/face/catalog.rb +1 -1
  29. data/lib/puppet/face/config.rb +46 -16
  30. data/lib/puppet/face/facts.rb +1 -1
  31. data/lib/puppet/face/help.rb +29 -3
  32. data/lib/puppet/face/module/search.rb +5 -0
  33. data/lib/puppet/face/node.rb +3 -3
  34. data/lib/puppet/face/node/clean.rb +2 -2
  35. data/lib/puppet/face/plugin.rb +2 -2
  36. data/lib/puppet/face/status.rb +1 -1
  37. data/lib/puppet/feature/base.rb +1 -1
  38. data/lib/puppet/file_bucket/dipper.rb +1 -1
  39. data/lib/puppet/file_serving/http_metadata.rb +14 -2
  40. data/lib/puppet/file_serving/metadata.rb +4 -1
  41. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  42. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  43. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  44. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  45. data/lib/puppet/file_system/file_impl.rb +17 -13
  46. data/lib/puppet/file_system/uniquefile.rb +12 -16
  47. data/lib/puppet/forge.rb +1 -1
  48. data/lib/puppet/forge/cache.rb +1 -1
  49. data/lib/puppet/forge/repository.rb +4 -7
  50. data/lib/puppet/functions/call.rb +1 -1
  51. data/lib/puppet/functions/filter.rb +1 -0
  52. data/lib/puppet/functions/lstrip.rb +4 -4
  53. data/lib/puppet/functions/new.rb +8 -3
  54. data/lib/puppet/functions/reduce.rb +2 -4
  55. data/lib/puppet/functions/reverse_each.rb +1 -1
  56. data/lib/puppet/functions/rstrip.rb +4 -4
  57. data/lib/puppet/functions/step.rb +1 -1
  58. data/lib/puppet/functions/strip.rb +4 -4
  59. data/lib/puppet/gettext/config.rb +5 -5
  60. data/lib/puppet/gettext/module_translations.rb +4 -4
  61. data/lib/puppet/http.rb +3 -0
  62. data/lib/puppet/http/client.rb +215 -60
  63. data/lib/puppet/http/external_client.rb +90 -0
  64. data/lib/puppet/http/redirector.rb +43 -7
  65. data/lib/puppet/http/resolver.rb +43 -3
  66. data/lib/puppet/http/resolver/server_list.rb +66 -24
  67. data/lib/puppet/http/resolver/settings.rb +21 -1
  68. data/lib/puppet/http/resolver/srv.rb +28 -2
  69. data/lib/puppet/http/response.rb +82 -1
  70. data/lib/puppet/http/retry_after_handler.rb +39 -0
  71. data/lib/puppet/http/service.rb +70 -2
  72. data/lib/puppet/http/service/ca.rb +71 -9
  73. data/lib/puppet/http/service/compiler.rb +214 -12
  74. data/lib/puppet/http/service/file_server.rb +106 -5
  75. data/lib/puppet/http/service/puppetserver.rb +39 -0
  76. data/lib/puppet/http/service/report.rb +36 -3
  77. data/lib/puppet/http/session.rb +60 -8
  78. data/lib/puppet/indirector.rb +1 -1
  79. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  80. data/lib/puppet/indirector/catalog/rest.rb +2 -1
  81. data/lib/puppet/indirector/exec.rb +1 -1
  82. data/lib/puppet/indirector/facts/facter.rb +3 -3
  83. data/lib/puppet/indirector/facts/rest.rb +2 -1
  84. data/lib/puppet/indirector/facts/yaml.rb +1 -1
  85. data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
  86. data/lib/puppet/indirector/file_content/http.rb +5 -0
  87. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  88. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  89. data/lib/puppet/indirector/file_metadata/rest.rb +6 -4
  90. data/lib/puppet/indirector/hiera.rb +4 -0
  91. data/lib/puppet/indirector/indirection.rb +1 -1
  92. data/lib/puppet/indirector/json.rb +1 -1
  93. data/lib/puppet/indirector/msgpack.rb +1 -1
  94. data/lib/puppet/indirector/node/rest.rb +2 -1
  95. data/lib/puppet/indirector/report/processor.rb +2 -2
  96. data/lib/puppet/indirector/report/yaml.rb +23 -0
  97. data/lib/puppet/indirector/request.rb +5 -5
  98. data/lib/puppet/indirector/rest.rb +7 -1
  99. data/lib/puppet/indirector/status/rest.rb +2 -1
  100. data/lib/puppet/indirector/yaml.rb +1 -1
  101. data/lib/puppet/metatype/manager.rb +80 -80
  102. data/lib/puppet/module.rb +1 -2
  103. data/lib/puppet/network/format_support.rb +2 -2
  104. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  105. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  106. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  107. data/lib/puppet/network/http/base_pool.rb +6 -1
  108. data/lib/puppet/network/http/compression.rb +7 -0
  109. data/lib/puppet/network/http/connection.rb +2 -0
  110. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  111. data/lib/puppet/network/http/nocache_pool.rb +1 -0
  112. data/lib/puppet/network/http/pool.rb +2 -4
  113. data/lib/puppet/network/http/route.rb +2 -2
  114. data/lib/puppet/network/http_pool.rb +2 -1
  115. data/lib/puppet/node/environment.rb +22 -5
  116. data/lib/puppet/node/facts.rb +17 -0
  117. data/lib/puppet/pal/catalog_compiler.rb +5 -0
  118. data/lib/puppet/pal/pal_impl.rb +30 -31
  119. data/lib/puppet/parameter.rb +1 -1
  120. data/lib/puppet/parser/ast/leaf.rb +5 -5
  121. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  122. data/lib/puppet/parser/compiler.rb +43 -33
  123. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  124. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  125. data/lib/puppet/parser/environment_compiler.rb +4 -1
  126. data/lib/puppet/parser/functions.rb +18 -9
  127. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  128. data/lib/puppet/parser/functions/filter.rb +1 -0
  129. data/lib/puppet/parser/resource.rb +3 -2
  130. data/lib/puppet/parser/resource/param.rb +6 -0
  131. data/lib/puppet/parser/type_loader.rb +2 -2
  132. data/lib/puppet/pops/adaptable.rb +7 -13
  133. data/lib/puppet/pops/adapters.rb +8 -4
  134. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  135. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  136. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  137. data/lib/puppet/pops/issues.rb +5 -0
  138. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  139. data/lib/puppet/pops/loaders.rb +24 -15
  140. data/lib/puppet/pops/lookup/context.rb +1 -1
  141. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  142. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  143. data/lib/puppet/pops/types/iterable.rb +34 -8
  144. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  145. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  146. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  147. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  148. data/lib/puppet/provider/file/windows.rb +1 -1
  149. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  150. data/lib/puppet/provider/package/aix.rb +17 -2
  151. data/lib/puppet/provider/package/apt.rb +98 -1
  152. data/lib/puppet/provider/package/aptitude.rb +1 -1
  153. data/lib/puppet/provider/package/dnfmodule.rb +61 -14
  154. data/lib/puppet/provider/package/dpkg.rb +1 -1
  155. data/lib/puppet/provider/package/gem.rb +45 -9
  156. data/lib/puppet/provider/package/pacman.rb +2 -5
  157. data/lib/puppet/provider/package/pip.rb +143 -48
  158. data/lib/puppet/provider/package/pip2.rb +17 -0
  159. data/lib/puppet/provider/package/pip3.rb +0 -2
  160. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  161. data/lib/puppet/provider/package/pkgng.rb +16 -4
  162. data/lib/puppet/provider/package/portage.rb +2 -2
  163. data/lib/puppet/provider/package/puppet_gem.rb +11 -2
  164. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  165. data/lib/puppet/provider/package/rpm.rb +6 -213
  166. data/lib/puppet/provider/package/yum.rb +101 -20
  167. data/lib/puppet/provider/package/zypper.rb +62 -1
  168. data/lib/puppet/provider/service/systemd.rb +22 -4
  169. data/lib/puppet/provider/service/windows.rb +23 -7
  170. data/lib/puppet/provider/user/aix.rb +1 -1
  171. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  172. data/lib/puppet/provider/user/useradd.rb +16 -5
  173. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  174. data/lib/puppet/reports/http.rb +15 -9
  175. data/lib/puppet/resource.rb +2 -1
  176. data/lib/puppet/resource/type.rb +10 -1
  177. data/lib/puppet/resource/type_collection.rb +20 -16
  178. data/lib/puppet/rest/route.rb +2 -2
  179. data/lib/puppet/runtime.rb +25 -2
  180. data/lib/puppet/settings.rb +20 -6
  181. data/lib/puppet/ssl.rb +1 -0
  182. data/lib/puppet/ssl/host.rb +4 -4
  183. data/lib/puppet/ssl/oids.rb +1 -0
  184. data/lib/puppet/ssl/ssl_context.rb +2 -2
  185. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  186. data/lib/puppet/ssl/state_machine.rb +79 -37
  187. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  188. data/lib/puppet/ssl/verifier_adapter.rb +9 -1
  189. data/lib/puppet/test/test_helper.rb +19 -14
  190. data/lib/puppet/transaction.rb +2 -2
  191. data/lib/puppet/transaction/persistence.rb +1 -1
  192. data/lib/puppet/transaction/report.rb +14 -10
  193. data/lib/puppet/trusted_external.rb +29 -1
  194. data/lib/puppet/type.rb +21 -8
  195. data/lib/puppet/type/file.rb +40 -15
  196. data/lib/puppet/type/file/checksum.rb +4 -4
  197. data/lib/puppet/type/file/source.rb +35 -13
  198. data/lib/puppet/type/filebucket.rb +1 -1
  199. data/lib/puppet/type/notify.rb +2 -2
  200. data/lib/puppet/type/package.rb +41 -3
  201. data/lib/puppet/type/service.rb +59 -8
  202. data/lib/puppet/type/user.rb +19 -29
  203. data/lib/puppet/util.rb +41 -3
  204. data/lib/puppet/util/at_fork.rb +1 -1
  205. data/lib/puppet/util/autoload.rb +13 -25
  206. data/lib/puppet/util/character_encoding.rb +9 -5
  207. data/lib/puppet/util/checksums.rb +19 -4
  208. data/lib/puppet/util/connection.rb +8 -8
  209. data/lib/puppet/util/execution.rb +2 -2
  210. data/lib/puppet/util/fileparsing.rb +2 -2
  211. data/lib/puppet/util/instance_loader.rb +14 -10
  212. data/lib/puppet/util/log/destinations.rb +1 -10
  213. data/lib/puppet/util/package/version/debian.rb +175 -0
  214. data/lib/puppet/util/package/version/gem.rb +15 -0
  215. data/lib/puppet/util/package/version/pip.rb +167 -0
  216. data/lib/puppet/util/package/version/range.rb +53 -0
  217. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  218. data/lib/puppet/util/package/version/range/gt.rb +14 -0
  219. data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
  220. data/lib/puppet/util/package/version/range/lt.rb +14 -0
  221. data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
  222. data/lib/puppet/util/package/version/range/min_max.rb +21 -0
  223. data/lib/puppet/util/package/version/range/simple.rb +11 -0
  224. data/lib/puppet/util/package/version/rpm.rb +73 -0
  225. data/lib/puppet/util/pidlock.rb +13 -7
  226. data/lib/puppet/util/platform.rb +5 -0
  227. data/lib/puppet/util/provider_features.rb +1 -1
  228. data/lib/puppet/util/reference.rb +1 -1
  229. data/lib/puppet/util/rpm_compare.rb +193 -0
  230. data/lib/puppet/util/run_mode.rb +5 -1
  231. data/lib/puppet/util/windows.rb +1 -0
  232. data/lib/puppet/util/windows/adsi.rb +2 -2
  233. data/lib/puppet/util/windows/api_types.rb +60 -33
  234. data/lib/puppet/util/windows/eventlog.rb +1 -6
  235. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  236. data/lib/puppet/util/windows/principal.rb +8 -6
  237. data/lib/puppet/util/windows/process.rb +15 -14
  238. data/lib/puppet/util/windows/registry.rb +11 -11
  239. data/lib/puppet/util/windows/security.rb +5 -4
  240. data/lib/puppet/util/windows/service.rb +43 -26
  241. data/lib/puppet/util/windows/sid.rb +3 -3
  242. data/lib/puppet/util/windows/user.rb +242 -8
  243. data/lib/puppet/version.rb +1 -1
  244. data/locales/puppet.pot +627 -507
  245. data/man/man5/puppet.conf.5 +93 -20
  246. data/man/man8/puppet-agent.8 +7 -4
  247. data/man/man8/puppet-apply.8 +1 -1
  248. data/man/man8/puppet-catalog.8 +1 -1
  249. data/man/man8/puppet-config.8 +6 -6
  250. data/man/man8/puppet-describe.8 +1 -1
  251. data/man/man8/puppet-device.8 +1 -1
  252. data/man/man8/puppet-doc.8 +1 -1
  253. data/man/man8/puppet-epp.8 +1 -1
  254. data/man/man8/puppet-facts.8 +1 -1
  255. data/man/man8/puppet-filebucket.8 +1 -1
  256. data/man/man8/puppet-generate.8 +1 -1
  257. data/man/man8/puppet-help.8 +6 -3
  258. data/man/man8/puppet-key.8 +1 -1
  259. data/man/man8/puppet-lookup.8 +2 -2
  260. data/man/man8/puppet-man.8 +1 -1
  261. data/man/man8/puppet-module.8 +4 -1
  262. data/man/man8/puppet-node.8 +4 -4
  263. data/man/man8/puppet-parser.8 +1 -1
  264. data/man/man8/puppet-plugin.8 +1 -1
  265. data/man/man8/puppet-report.8 +1 -1
  266. data/man/man8/puppet-resource.8 +1 -1
  267. data/man/man8/puppet-script.8 +1 -1
  268. data/man/man8/puppet-ssl.8 +1 -1
  269. data/man/man8/puppet-status.8 +2 -2
  270. data/man/man8/puppet.8 +2 -2
  271. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  272. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  273. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
  274. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
  275. data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
  276. data/spec/fixtures/ssl/unknown-ca.pem +59 -0
  277. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  278. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  279. data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
  280. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  281. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  282. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  283. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  284. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  285. data/spec/integration/application/agent_spec.rb +479 -0
  286. data/spec/integration/application/apply_spec.rb +279 -150
  287. data/spec/integration/application/config_spec.rb +74 -0
  288. data/spec/integration/application/doc_spec.rb +16 -6
  289. data/spec/integration/application/filebucket_spec.rb +239 -0
  290. data/spec/integration/application/help_spec.rb +42 -0
  291. data/spec/integration/application/lookup_spec.rb +13 -0
  292. data/spec/integration/application/module_spec.rb +68 -0
  293. data/spec/integration/application/plugin_spec.rb +123 -0
  294. data/spec/integration/configurer_spec.rb +14 -0
  295. data/spec/integration/data_binding_spec.rb +82 -0
  296. data/spec/integration/defaults_spec.rb +27 -3
  297. data/spec/integration/directory_environments_spec.rb +17 -17
  298. data/spec/integration/http/client_spec.rb +39 -40
  299. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  300. data/spec/integration/indirector/report/yaml.rb +83 -0
  301. data/spec/integration/network/http_pool_spec.rb +84 -19
  302. data/spec/integration/node/environment_spec.rb +15 -0
  303. data/spec/integration/parser/compiler_spec.rb +11 -0
  304. data/spec/integration/type/file_spec.rb +1 -1
  305. data/spec/integration/util/execution_spec.rb +22 -0
  306. data/spec/integration/util/windows/adsi_spec.rb +8 -3
  307. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  308. data/spec/integration/util/windows/process_spec.rb +26 -32
  309. data/spec/integration/util/windows/registry_spec.rb +7 -7
  310. data/spec/integration/util/windows/user_spec.rb +47 -5
  311. data/spec/integration/util_spec.rb +7 -33
  312. data/spec/lib/puppet/test_ca.rb +2 -2
  313. data/spec/lib/puppet_spec/https.rb +16 -7
  314. data/spec/lib/puppet_spec/matchers.rb +0 -80
  315. data/spec/lib/puppet_spec/puppetserver.rb +127 -0
  316. data/spec/shared_contexts/https.rb +29 -0
  317. data/spec/shared_contexts/types_setup.rb +2 -0
  318. data/spec/unit/agent_spec.rb +80 -26
  319. data/spec/unit/application/agent_spec.rb +12 -9
  320. data/spec/unit/application/device_spec.rb +2 -2
  321. data/spec/unit/application/doc_spec.rb +2 -2
  322. data/spec/unit/application/face_base_spec.rb +6 -4
  323. data/spec/unit/application/facts_spec.rb +41 -10
  324. data/spec/unit/application/filebucket_spec.rb +22 -2
  325. data/spec/unit/application/man_spec.rb +52 -0
  326. data/spec/unit/application/resource_spec.rb +3 -1
  327. data/spec/unit/application/ssl_spec.rb +15 -2
  328. data/spec/unit/application_spec.rb +9 -4
  329. data/spec/unit/configurer/downloader_spec.rb +10 -0
  330. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  331. data/spec/unit/configurer_spec.rb +87 -38
  332. data/spec/unit/confine_spec.rb +2 -1
  333. data/spec/unit/context/trusted_information_spec.rb +25 -2
  334. data/spec/unit/daemon_spec.rb +5 -64
  335. data/spec/unit/defaults_spec.rb +24 -1
  336. data/spec/unit/environments_spec.rb +107 -32
  337. data/spec/unit/face/config_spec.rb +59 -1
  338. data/spec/unit/face/module/search_spec.rb +17 -0
  339. data/spec/unit/face/node_spec.rb +2 -2
  340. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  341. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  342. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  343. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  344. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  345. data/spec/unit/file_system/uniquefile_spec.rb +29 -0
  346. data/spec/unit/file_system_spec.rb +11 -2
  347. data/spec/unit/http/client_spec.rb +173 -59
  348. data/spec/unit/http/external_client_spec.rb +201 -0
  349. data/spec/unit/http/resolver_spec.rb +44 -5
  350. data/spec/unit/http/response_spec.rb +6 -0
  351. data/spec/unit/http/service/ca_spec.rb +27 -5
  352. data/spec/unit/http/service/compiler_spec.rb +186 -9
  353. data/spec/unit/http/service/file_server_spec.rb +37 -6
  354. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  355. data/spec/unit/http/service/report_spec.rb +5 -4
  356. data/spec/unit/http/service_spec.rb +3 -4
  357. data/spec/unit/http/session_spec.rb +48 -12
  358. data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
  359. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  360. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  361. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  362. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
  363. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  364. data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
  365. data/spec/unit/indirector/json_spec.rb +8 -8
  366. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  367. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  368. data/spec/unit/indirector/request_spec.rb +5 -5
  369. data/spec/unit/indirector/rest_spec.rb +14 -1
  370. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  371. data/spec/unit/indirector/yaml_spec.rb +7 -7
  372. data/spec/unit/interface_spec.rb +3 -3
  373. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  374. data/spec/unit/network/format_support_spec.rb +3 -2
  375. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  376. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  377. data/spec/unit/network/http/connection_spec.rb +552 -190
  378. data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
  379. data/spec/unit/network/http/pool_spec.rb +3 -3
  380. data/spec/unit/network/http_pool_spec.rb +63 -57
  381. data/spec/unit/network/http_spec.rb +1 -1
  382. data/spec/unit/node/environment_spec.rb +33 -0
  383. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  384. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  385. data/spec/unit/parser/scope_spec.rb +1 -1
  386. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  387. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  388. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  389. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  390. data/spec/unit/provider/exec_spec.rb +4 -3
  391. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  392. data/spec/unit/provider/package/aix_spec.rb +29 -0
  393. data/spec/unit/provider/package/apt_spec.rb +107 -0
  394. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  395. data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
  396. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  397. data/spec/unit/provider/package/gem_spec.rb +40 -0
  398. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  399. data/spec/unit/provider/package/pacman_spec.rb +6 -21
  400. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  401. data/spec/unit/provider/package/pip_spec.rb +68 -19
  402. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  403. data/spec/unit/provider/package/pkgng_spec.rb +38 -0
  404. data/spec/unit/provider/package/portage_spec.rb +5 -0
  405. data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
  406. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  407. data/spec/unit/provider/package/rpm_spec.rb +0 -212
  408. data/spec/unit/provider/package/yum_spec.rb +274 -1
  409. data/spec/unit/provider/package/zypper_spec.rb +98 -0
  410. data/spec/unit/provider/service/base_spec.rb +2 -4
  411. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  412. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  413. data/spec/unit/provider/service/debian_spec.rb +3 -5
  414. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  415. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  416. data/spec/unit/provider/service/init_spec.rb +46 -5
  417. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  418. data/spec/unit/provider/service/openbsd_spec.rb +9 -0
  419. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  420. data/spec/unit/provider/service/openwrt_spec.rb +2 -1
  421. data/spec/unit/provider/service/redhat_spec.rb +10 -1
  422. data/spec/unit/provider/service/runit_spec.rb +2 -1
  423. data/spec/unit/provider/service/smf_spec.rb +1 -1
  424. data/spec/unit/provider/service/src_spec.rb +3 -5
  425. data/spec/unit/provider/service/systemd_spec.rb +95 -18
  426. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  427. data/spec/unit/provider/service/windows_spec.rb +50 -14
  428. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  429. data/spec/unit/provider/user/useradd_spec.rb +30 -16
  430. data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
  431. data/spec/unit/puppet_pal_2pec.rb +11 -0
  432. data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
  433. data/spec/unit/puppet_spec.rb +33 -0
  434. data/spec/unit/reports/http_spec.rb +70 -52
  435. data/spec/unit/reports/store_spec.rb +17 -13
  436. data/spec/unit/resource_spec.rb +3 -3
  437. data/spec/unit/rest/route_spec.rb +4 -4
  438. data/spec/unit/settings_spec.rb +44 -22
  439. data/spec/unit/ssl/host_spec.rb +4 -2
  440. data/spec/unit/ssl/oids_spec.rb +1 -0
  441. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  442. data/spec/unit/ssl/state_machine_spec.rb +90 -14
  443. data/spec/unit/test/test_helper_spec.rb +17 -0
  444. data/spec/unit/transaction/persistence_spec.rb +15 -0
  445. data/spec/unit/transaction/report_spec.rb +7 -1
  446. data/spec/unit/type/file/source_spec.rb +4 -4
  447. data/spec/unit/type/file_spec.rb +122 -96
  448. data/spec/unit/type/filebucket_spec.rb +1 -1
  449. data/spec/unit/type/service_spec.rb +218 -8
  450. data/spec/unit/type/user_spec.rb +32 -3
  451. data/spec/unit/type_spec.rb +50 -0
  452. data/spec/unit/util/at_fork_spec.rb +2 -2
  453. data/spec/unit/util/autoload_spec.rb +2 -1
  454. data/spec/unit/util/character_encoding_spec.rb +4 -4
  455. data/spec/unit/util/checksums_spec.rb +16 -0
  456. data/spec/unit/util/command_line_spec.rb +11 -6
  457. data/spec/unit/util/log/destinations_spec.rb +1 -29
  458. data/spec/unit/util/package/version/debian_spec.rb +83 -0
  459. data/spec/unit/util/package/version/pip_spec.rb +464 -0
  460. data/spec/unit/util/package/version/range_spec.rb +175 -0
  461. data/spec/unit/util/package/version/rpm_spec.rb +121 -0
  462. data/spec/unit/util/pidlock_spec.rb +83 -47
  463. data/spec/unit/util/rpm_compare_spec.rb +196 -0
  464. data/spec/unit/util/run_mode_spec.rb +6 -6
  465. data/spec/unit/util/windows/adsi_spec.rb +4 -4
  466. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  467. data/spec/unit/util/windows/service_spec.rb +4 -4
  468. data/spec/unit/util/windows/sid_spec.rb +2 -2
  469. data/spec/unit/util_spec.rb +3 -3
  470. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  471. data/tasks/generate_cert_fixtures.rake +15 -1
  472. data/tasks/manpages.rake +5 -35
  473. metadata +90 -51
  474. data/spec/integration/faces/config_spec.rb +0 -91
  475. data/spec/integration/faces/documentation_spec.rb +0 -57
  476. data/spec/integration/faces/plugin_spec.rb +0 -63
  477. data/spec/integration/file_bucket/file_spec.rb +0 -50
  478. data/spec/integration/file_serving/content_spec.rb +0 -7
  479. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  480. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  481. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  482. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  483. data/spec/integration/module_tool/forge_spec.rb +0 -64
  484. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  485. data/spec/integration/provider/service/init_spec.rb +0 -48
  486. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  487. data/spec/integration/provider/service/windows_spec.rb +0 -50
  488. data/spec/integration/reference/providers_spec.rb +0 -21
  489. data/spec/integration/reports_spec.rb +0 -13
  490. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  491. data/spec/integration/ssl/host_spec.rb +0 -72
  492. data/spec/integration/ssl/key_spec.rb +0 -99
  493. data/spec/integration/test/test_helper_spec.rb +0 -31
  494. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  495. data/spec/unit/face/man_spec.rb +0 -25
  496. data/spec/unit/man_spec.rb +0 -31
@@ -20,7 +20,7 @@ class Puppet::Node::Facts::Yaml < Puppet::Indirector::Yaml
20
20
 
21
21
  # Return the path to a given node's file.
22
22
  def yaml_dir_path
23
- base = Puppet.run_mode.master? ? Puppet[:yamldir] : Puppet[:clientyamldir]
23
+ base = Puppet.run_mode.server? ? Puppet[:yamldir] : Puppet[:clientyamldir]
24
24
  File.join(base, 'facts', '*.yaml')
25
25
  end
26
26
 
@@ -4,5 +4,53 @@ require 'puppet/file_bucket/file'
4
4
  module Puppet::FileBucketFile
5
5
  class Rest < Puppet::Indirector::REST
6
6
  desc "This is a REST based mechanism to send/retrieve file to/from the filebucket"
7
+
8
+ def head(request)
9
+ return super unless use_http_client?
10
+
11
+ session = Puppet.lookup(:http_session)
12
+ api = session.route_to(:puppet)
13
+ api.head_filebucket_file(
14
+ request.key,
15
+ environment: request.environment.to_s,
16
+ bucket_path: request.options[:bucket_path],
17
+ )
18
+ rescue Puppet::HTTP::ResponseError => e
19
+ return nil if e.response.code == 404
20
+ raise convert_to_http_error(e.response.nethttp)
21
+ end
22
+
23
+ def find(request)
24
+ return super unless use_http_client?
25
+
26
+ session = Puppet.lookup(:http_session)
27
+ api = session.route_to(:puppet)
28
+ _, filebucket_file = api.get_filebucket_file(
29
+ request.key,
30
+ environment: request.environment.to_s,
31
+ bucket_path: request.options[:bucket_path],
32
+ diff_with: request.options[:diff_with],
33
+ list_all: request.options[:list_all],
34
+ fromdate: request.options[:fromdate],
35
+ todate: request.options[:todate],
36
+ )
37
+ filebucket_file
38
+ rescue Puppet::HTTP::ResponseError => e
39
+ raise convert_to_http_error(e.response.nethttp)
40
+ end
41
+
42
+ def save(request)
43
+ return super unless use_http_client?
44
+
45
+ session = Puppet.lookup(:http_session)
46
+ api = session.route_to(:puppet)
47
+ api.put_filebucket_file(
48
+ request.key,
49
+ body: request.instance.render,
50
+ environment: request.environment.to_s,
51
+ )
52
+ rescue Puppet::HTTP::ResponseError => e
53
+ raise convert_to_http_error(e.response.nethttp)
54
+ end
7
55
  end
8
56
  end
@@ -10,6 +10,11 @@ class Puppet::Indirector::FileContent::Http < Puppet::Indirector::GenericHttp
10
10
 
11
11
  @http_method = :get
12
12
 
13
+ def initialize
14
+ Puppet.deprecation_warning(_("Puppet::Indirector::FileContent::Http is deprecated. Use Puppet::HTTP::Client instead."))
15
+ super
16
+ end
17
+
13
18
  def find(request)
14
19
  response = super
15
20
  model.from_binary(uncompress_body(response))
@@ -18,7 +18,7 @@ class Puppet::Indirector::FileContent::Rest < Puppet::Indirector::REST
18
18
  api = session.route_to(:fileserver, url: url)
19
19
 
20
20
  api.get_file_content(
21
- path: URI.unescape(url.path),
21
+ path: Puppet::Util.uri_unescape(url.path),
22
22
  environment: request.environment.to_s,
23
23
  ) do |data|
24
24
  content << data
@@ -8,20 +8,40 @@ class Puppet::Indirector::FileMetadata::Http < Puppet::Indirector::GenericHttp
8
8
 
9
9
  include Puppet::FileServing::TerminusHelper
10
10
 
11
- @http_method = :head
12
-
13
11
  def find(request)
14
- head = super
12
+ checksum_type = request.options[:checksum_type]
13
+ # See URL encoding comment in Puppet::Type::File::ParamSource#chunk_file_from_source
14
+ uri = URI(request.uri)
15
+ client = Puppet.runtime[:http]
16
+ head = client.head(uri, options: {include_system_store: true})
17
+
18
+ return create_httpmetadata(head, checksum_type) if head.success?
15
19
 
16
- if head.is_a?(Net::HTTPSuccess)
17
- metadata = Puppet::FileServing::HttpMetadata.new(head)
18
- metadata.checksum_type = request.options[:checksum_type] if request.options[:checksum_type]
19
- metadata.collect
20
- metadata
20
+ case head.code
21
+ when 403, 405
22
+ # AMZ presigned URL and puppetserver may return 403
23
+ # instead of 405. Fallback to partial get
24
+ get = partial_get(client, uri)
25
+ return create_httpmetadata(get, checksum_type) if get.success?
21
26
  end
27
+
28
+ nil
22
29
  end
23
30
 
24
31
  def search(request)
25
32
  raise Puppet::Error, _("cannot lookup multiple files")
26
33
  end
34
+
35
+ private
36
+
37
+ def partial_get(client, uri)
38
+ client.get(uri, headers: {'Range' => 'bytes=0-0'}, options: {include_system_store: true})
39
+ end
40
+
41
+ def create_httpmetadata(http_request, checksum_type)
42
+ metadata = Puppet::FileServing::HttpMetadata.new(http_request)
43
+ metadata.checksum_type = checksum_type if checksum_type
44
+ metadata.collect
45
+ metadata
46
+ end
27
47
  end
@@ -14,13 +14,14 @@ class Puppet::Indirector::FileMetadata::Rest < Puppet::Indirector::REST
14
14
  session = Puppet.lookup(:http_session)
15
15
  api = session.route_to(:fileserver, url: url)
16
16
 
17
- api.get_file_metadata(
18
- path: URI.unescape(url.path),
17
+ _, file_metadata = api.get_file_metadata(
18
+ path: Puppet::Util.uri_unescape(url.path),
19
19
  environment: request.environment.to_s,
20
20
  links: request.options[:links],
21
21
  checksum_type: request.options[:checksum_type],
22
22
  source_permissions: request.options[:source_permissions]
23
23
  )
24
+ file_metadata
24
25
  rescue Puppet::HTTP::ResponseError => e
25
26
  if e.response.code == 404
26
27
  return nil unless request.options[:fail_on_404]
@@ -40,8 +41,8 @@ class Puppet::Indirector::FileMetadata::Rest < Puppet::Indirector::REST
40
41
  session = Puppet.lookup(:http_session)
41
42
  api = session.route_to(:fileserver, url: url)
42
43
 
43
- api.get_file_metadatas(
44
- path: URI.unescape(url.path),
44
+ _, file_metadatas = api.get_file_metadatas(
45
+ path: Puppet::Util.uri_unescape(url.path),
45
46
  environment: request.environment.to_s,
46
47
  recurse: request.options[:recurse],
47
48
  recurselimit: request.options[:recurselimit],
@@ -50,6 +51,7 @@ class Puppet::Indirector::FileMetadata::Rest < Puppet::Indirector::REST
50
51
  checksum_type: request.options[:checksum_type],
51
52
  source_permissions: request.options[:source_permissions],
52
53
  )
54
+ file_metadatas
53
55
  rescue Puppet::HTTP::ResponseError => e
54
56
  # since it's search, return empty array instead of nil
55
57
  return [] if e.response.code == 404
@@ -1,6 +1,10 @@
1
1
  require 'puppet/indirector/terminus'
2
2
  require 'hiera/scope'
3
3
 
4
+ # This class can't be collapsed into Puppet::Indirector::DataBindings::Hiera
5
+ # because some community plugins rely on this class directly, see PUP-1843.
6
+ # This class is deprecated and will be deleted in a future release.
7
+ # Use `Puppet::DataBinding.indirection.terminus(:hiera)` instead.
4
8
  class Puppet::Indirector::Hiera < Puppet::Indirector::Terminus
5
9
  def initialize(*args)
6
10
  if ! Puppet.features.hiera?
@@ -269,7 +269,7 @@ class Puppet::Indirector::Indirection
269
269
  return nil
270
270
  end
271
271
 
272
- Puppet.debug "Using cached #{self.name} for #{request.key}"
272
+ Puppet.debug { "Using cached #{self.name} for #{request.key}" }
273
273
  cached
274
274
  rescue => detail
275
275
  Puppet.log_exception(detail, _("Cached %{indirection} for %{request} failed: %{detail}") % { indirection: self.name, request: request.key, detail: detail })
@@ -41,7 +41,7 @@ class Puppet::Indirector::JSON < Puppet::Indirector::Terminus
41
41
  raise ArgumentError, _("invalid key")
42
42
  end
43
43
 
44
- base = Puppet.run_mode.master? ? Puppet[:server_datadir] : Puppet[:client_datadir]
44
+ base = Puppet.run_mode.server? ? Puppet[:server_datadir] : Puppet[:client_datadir]
45
45
  File.join(base, self.class.indirection_name.to_s, name.to_s + ext)
46
46
  end
47
47
 
@@ -48,7 +48,7 @@ class Puppet::Indirector::Msgpack < Puppet::Indirector::Terminus
48
48
  raise ArgumentError, _("invalid key")
49
49
  end
50
50
 
51
- base = Puppet.run_mode.master? ? Puppet[:server_datadir] : Puppet[:client_datadir]
51
+ base = Puppet.run_mode.server? ? Puppet[:server_datadir] : Puppet[:client_datadir]
52
52
  File.join(base, self.class.indirection_name.to_s, name.to_s + ext)
53
53
  end
54
54
 
@@ -10,12 +10,13 @@ class Puppet::Node::Rest < Puppet::Indirector::REST
10
10
 
11
11
  session = Puppet.lookup(:http_session)
12
12
  api = session.route_to(:puppet)
13
- api.get_node(
13
+ _, node = api.get_node(
14
14
  request.key,
15
15
  environment: request.environment.to_s,
16
16
  configured_environment: request.options[:configured_environment],
17
17
  transaction_uuid: request.options[:transaction_uuid]
18
18
  )
19
+ node
19
20
  rescue Puppet::HTTP::ResponseError => e
20
21
  if e.response.code == 404
21
22
  return nil unless request.options[:fail_on_404]
@@ -26,9 +26,9 @@ class Puppet::Transaction::Report::Processor < Puppet::Indirector::Code
26
26
  # LAK:NOTE This isn't necessarily the best design, but it's backward
27
27
  # compatible and that's good enough for now.
28
28
  def process(report)
29
- Puppet.debug "Received report to process from #{report.host}"
29
+ Puppet.debug { "Received report to process from #{report.host}" }
30
30
  processors do |mod|
31
- Puppet.debug "Processing report from #{report.host} with processor #{mod}"
31
+ Puppet.debug { "Processing report from #{report.host} with processor #{mod}" }
32
32
  # We have to use a dup because we're including a module in the
33
33
  # report.
34
34
  newrep = report.dup
@@ -2,10 +2,33 @@ require 'puppet/transaction/report'
2
2
  require 'puppet/indirector/yaml'
3
3
 
4
4
  class Puppet::Transaction::Report::Yaml < Puppet::Indirector::Yaml
5
+ include Puppet::Util::SymbolicFileMode
6
+
5
7
  desc "Store last report as a flat file, serialized using YAML."
6
8
 
7
9
  # Force report to be saved there
8
10
  def path(name,ext='.yaml')
9
11
  Puppet[:lastrunreport]
10
12
  end
13
+
14
+ def save(request)
15
+ filename = path(request.key)
16
+ mode = Puppet.settings.setting(:lastrunreport).mode
17
+
18
+ unless valid_symbolic_mode?(mode)
19
+ raise Puppet::DevError, _("replace_file mode: %{mode} is invalid") % { mode: mode }
20
+ end
21
+
22
+ mode = symbolic_mode_to_int(normalize_symbolic_mode(mode))
23
+
24
+ FileUtils.mkdir_p(File.dirname(filename))
25
+
26
+ begin
27
+ Puppet::FileSystem.replace_file(filename, mode) do |fh|
28
+ fh.print YAML.dump(request.instance)
29
+ end
30
+ rescue TypeError => detail
31
+ Puppet.err _("Could not save %{indirection} %{request}: %{detail}") % { indirection: self.name, request: request.key, detail: detail }
32
+ end
33
+ end
11
34
  end
@@ -231,9 +231,9 @@ class Puppet::Indirector::Request
231
231
  debug_once _("Selected port from the first entry of the `server_list` setting: %{port}") % {port: primary_server[1]}
232
232
  primary_server[1]
233
233
  else
234
- #TRANSLATORS 'masterport' is the name of a setting and should not be translated
235
- debug_once _("Selected port from the `masterport` setting: %{port}") % {port: Puppet.settings[:masterport]}
236
- Puppet.settings[:masterport]
234
+ #TRANSLATORS 'serverport' is the name of a setting and should not be translated
235
+ debug_once _("Selected port from the `serverport` setting: %{port}") % {port: Puppet.settings[:serverport]}
236
+ Puppet.settings[:serverport]
237
237
  end
238
238
  end
239
239
  end
@@ -277,7 +277,7 @@ class Puppet::Indirector::Request
277
277
  # If the URI class can look up the scheme, it will provide a port,
278
278
  # otherwise it will default to '0'.
279
279
  if uri.port.to_i == 0 and uri.scheme == "puppet"
280
- @port = Puppet.settings[:masterport].to_i
280
+ @port = Puppet.settings[:serverport].to_i
281
281
  else
282
282
  @port = uri.port.to_i
283
283
  end
@@ -290,6 +290,6 @@ class Puppet::Indirector::Request
290
290
  @protocol = uri.scheme
291
291
  end
292
292
 
293
- @key = URI.unescape(uri.path.sub(/^\//, ''))
293
+ @key = Puppet::Util.uri_unescape(uri.path.sub(/^\//, ''))
294
294
  end
295
295
  end
@@ -55,7 +55,8 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
55
55
  # Should we use puppet's http client to make requests. Will return
56
56
  # false when running in puppetserver
57
57
  def use_http_client?
58
- Puppet::Network::HttpPool.http_client_class == Puppet::Network::HTTP::Connection
58
+ Puppet::Network::HttpPool.http_client_class == Puppet::Network::HTTP::Connection ||
59
+ Puppet::Network::HttpPool.http_client_class == Puppet::Network::HTTP::ConnectionAdapter
59
60
  end
60
61
 
61
62
  # Provide appropriate headers.
@@ -111,6 +112,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
111
112
  end
112
113
 
113
114
  def find(request)
115
+ Puppet.deprecation_warning(_("Puppet::Indirector::Rest#find is deprecated. Use Puppet::HTTP::Client instead."))
114
116
  uri, body = IndirectedRoutes.request_to_uri_and_body(request)
115
117
  uri_with_query_string = "#{uri}?#{body}"
116
118
 
@@ -149,6 +151,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
149
151
  end
150
152
 
151
153
  def head(request)
154
+ Puppet.deprecation_warning(_("Puppet::Indirector::Rest#head is deprecated. Use Puppet::HTTP::Client instead."))
152
155
  response = do_request(request) do |req|
153
156
  http_head(req, IndirectedRoutes.request_to_uri(req), headers)
154
157
  end
@@ -161,6 +164,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
161
164
  end
162
165
 
163
166
  def search(request)
167
+ Puppet.deprecation_warning(_("Puppet::Indirector::Rest#search is deprecated. Use Puppet::HTTP::Client instead."))
164
168
  response = do_request(request) do |req|
165
169
  http_get(req, IndirectedRoutes.request_to_uri(req), headers)
166
170
  end
@@ -174,6 +178,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
174
178
  end
175
179
 
176
180
  def destroy(request)
181
+ Puppet.deprecation_warning(_("Puppet::Indirector::Rest#destroy is deprecated. Use Puppet::HTTP::Client instead."))
177
182
  raise ArgumentError, _("DELETE does not accept options") unless request.options.empty?
178
183
 
179
184
  response = do_request(request) do |req|
@@ -189,6 +194,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
189
194
  end
190
195
 
191
196
  def save(request)
197
+ Puppet.deprecation_warning(_("Puppet::Indirector::Rest#save is deprecated. Use Puppet::HTTP::Client instead."))
192
198
  raise ArgumentError, _("PUT does not accept options") unless request.options.empty?
193
199
 
194
200
  response = do_request(request) do |req|
@@ -11,7 +11,8 @@ class Puppet::Indirector::Status::Rest < Puppet::Indirector::REST
11
11
 
12
12
  session = Puppet.lookup(:http_session)
13
13
  api = session.route_to(:puppet)
14
- api.get_status(request.key)
14
+ _, status = api.get_status(request.key)
15
+ status
15
16
  rescue Puppet::HTTP::ResponseError => e
16
17
  if e.response.code == 404
17
18
  return nil unless request.options[:fail_on_404]
@@ -40,7 +40,7 @@ class Puppet::Indirector::Yaml < Puppet::Indirector::Terminus
40
40
  raise ArgumentError, _("invalid key")
41
41
  end
42
42
 
43
- base = Puppet.run_mode.master? ? Puppet[:yamldir] : Puppet[:clientyamldir]
43
+ base = Puppet.run_mode.server? ? Puppet[:yamldir] : Puppet[:clientyamldir]
44
44
  File.join(base, self.class.indirection_name.to_s, name.to_s + ext)
45
45
  end
46
46
 
@@ -70,68 +70,68 @@ module Manager
70
70
  # @dsl type
71
71
  # @api public
72
72
  def newtype(name, options = {}, &block)
73
- # Handle backward compatibility
74
- unless options.is_a?(Hash)
75
- #TRANSLATORS 'Puppet::Type.newtype' should not be translated
76
- Puppet.warning(_("Puppet::Type.newtype(%{name}) now expects a hash as the second argument, not %{argument}") %
77
- { name: name, argument: options.inspect})
78
- end
79
-
80
- # First make sure we don't have a method sitting around
81
- name = name.intern
82
- newmethod = "new#{name}"
73
+ @manager_lock.synchronize do
74
+ # Handle backward compatibility
75
+ unless options.is_a?(Hash)
76
+ #TRANSLATORS 'Puppet::Type.newtype' should not be translated
77
+ Puppet.warning(_("Puppet::Type.newtype(%{name}) now expects a hash as the second argument, not %{argument}") %
78
+ { name: name, argument: options.inspect})
79
+ end
83
80
 
84
- # Used for method manipulation.
85
- selfobj = singleton_class
81
+ # First make sure we don't have a method sitting around
82
+ name = name.intern
83
+ newmethod = "new#{name}"
86
84
 
87
- @types ||= {}
85
+ # Used for method manipulation.
86
+ selfobj = singleton_class
88
87
 
89
- if @types.include?(name)
90
- if self.respond_to?(newmethod)
91
- # Remove the old newmethod
92
- selfobj.send(:remove_method,newmethod)
88
+ if @types.include?(name)
89
+ if self.respond_to?(newmethod)
90
+ # Remove the old newmethod
91
+ selfobj.send(:remove_method,newmethod)
92
+ end
93
93
  end
94
- end
95
-
96
- # Then create the class.
97
94
 
98
- klass = genclass(
99
- name,
100
- :parent => Puppet::Type,
101
- :overwrite => true,
102
- :hash => @types,
103
- :attributes => options,
104
- &block
105
- )
106
-
107
- # Now define a "new<type>" method for convenience.
108
- if self.respond_to? newmethod
109
- # Refuse to overwrite existing methods like 'newparam' or 'newtype'.
110
- #TRANSLATORS 'new%{method}' will become a method name, do not translate this string
111
- Puppet.warning(_("'new%{method}' method already exists; skipping") % { method: name.to_s })
112
- else
113
- selfobj.send(:define_method, newmethod) do |*args|
114
- klass.new(*args)
95
+ # Then create the class.
96
+
97
+ klass = genclass(
98
+ name,
99
+ :parent => Puppet::Type,
100
+ :overwrite => true,
101
+ :hash => @types,
102
+ :attributes => options,
103
+ &block
104
+ )
105
+
106
+ # Now define a "new<type>" method for convenience.
107
+ if self.respond_to? newmethod
108
+ # Refuse to overwrite existing methods like 'newparam' or 'newtype'.
109
+ #TRANSLATORS 'new%{method}' will become a method name, do not translate this string
110
+ Puppet.warning(_("'new%{method}' method already exists; skipping") % { method: name.to_s })
111
+ else
112
+ selfobj.send(:define_method, newmethod) do |*args|
113
+ klass.new(*args)
114
+ end
115
115
  end
116
- end
117
116
 
118
- # If they've got all the necessary methods defined and they haven't
119
- # already added the property, then do so now.
120
- klass.ensurable if klass.ensurable? and ! klass.validproperty?(:ensure)
117
+ # If they've got all the necessary methods defined and they haven't
118
+ # already added the property, then do so now.
119
+ klass.ensurable if klass.ensurable? and ! klass.validproperty?(:ensure)
121
120
 
122
- # Now set up autoload any providers that might exist for this type.
121
+ # Now set up autoload any providers that might exist for this type.
123
122
 
124
- klass.providerloader = Puppet::Util::Autoload.new(klass, "puppet/provider/#{klass.name}")
123
+ klass.providerloader = Puppet::Util::Autoload.new(klass, "puppet/provider/#{klass.name}")
125
124
 
126
- # We have to load everything so that we can figure out the default provider.
127
- klass.providerloader.loadall(Puppet.lookup(:current_environment))
128
- klass.providify unless klass.providers.empty?
125
+ # We have to load everything so that we can figure out the default provider.
126
+ klass.providerloader.loadall(Puppet.lookup(:current_environment))
127
+ klass.providify unless klass.providers.empty?
129
128
 
130
- loc = block_given? ? block.source_location : nil
131
- uri = loc.nil? ? nil : URI("#{Puppet::Util.path_to_uri(loc[0])}?line=#{loc[1]}")
132
- Puppet::Pops::Loaders.register_runtime3_type(name, uri)
129
+ loc = block_given? ? block.source_location : nil
130
+ uri = loc.nil? ? nil : URI("#{Puppet::Util.path_to_uri(loc[0])}?line=#{loc[1]}")
131
+ Puppet::Pops::Loaders.register_runtime3_type(name, uri)
133
132
 
134
- klass
133
+ klass
134
+ end
135
135
  end
136
136
 
137
137
  # Removes an existing type.
@@ -151,47 +151,47 @@ module Manager
151
151
  # @return [Puppet::Type, nil] the type or nil if the type was not defined and could not be loaded
152
152
  #
153
153
  def type(name)
154
- # Avoid loading if name obviously is not a type name
155
- if name.to_s.include?(':')
156
- return nil
157
- end
154
+ @manager_lock.synchronize do
155
+ # Avoid loading if name obviously is not a type name
156
+ if name.to_s.include?(':')
157
+ return nil
158
+ end
158
159
 
159
- @types ||= {}
160
+ # We are overwhelmingly symbols here, which usually match, so it is worth
161
+ # having this special-case to return quickly. Like, 25K symbols vs. 300
162
+ # strings in this method. --daniel 2012-07-17
163
+ return @types[name] if @types.include? name
160
164
 
161
- # We are overwhelmingly symbols here, which usually match, so it is worth
162
- # having this special-case to return quickly. Like, 25K symbols vs. 300
163
- # strings in this method. --daniel 2012-07-17
164
- return @types[name] if @types.include? name
165
+ # Try mangling the name, if it is a string.
166
+ if name.is_a? String
167
+ name = name.downcase.intern
168
+ return @types[name] if @types.include? name
169
+ end
170
+ # Try loading the type.
171
+ if typeloader.load(name, Puppet.lookup(:current_environment))
172
+ #TRANSLATORS 'puppet/type/%{name}' should not be translated
173
+ Puppet.warning(_("Loaded puppet/type/%{name} but no class was created") % { name: name }) unless @types.include? name
174
+ elsif !Puppet[:always_retry_plugins]
175
+ # PUP-5482 - Only look for a type once if plugin retry is disabled
176
+ @types[name] = nil
177
+ end
165
178
 
166
- # Try mangling the name, if it is a string.
167
- if name.is_a? String
168
- name = name.downcase.intern
169
- return @types[name] if @types.include? name
170
- end
171
- # Try loading the type.
172
- if typeloader.load(name, Puppet.lookup(:current_environment))
173
- #TRANSLATORS 'puppet/type/%{name}' should not be translated
174
- Puppet.warning(_("Loaded puppet/type/%{name} but no class was created") % { name: name }) unless @types.include? name
175
- elsif !Puppet[:always_retry_plugins]
176
- # PUP-5482 - Only look for a type once if plugin retry is disabled
177
- @types[name] = nil
179
+ # ...and I guess that is that, eh.
180
+ return @types[name]
178
181
  end
179
-
180
- # ...and I guess that is that, eh.
181
- return @types[name]
182
182
  end
183
183
 
184
184
  # Creates a loader for Puppet types.
185
185
  # Defaults to an instance of {Puppet::Util::Autoload} if no other auto loader has been set.
186
186
  # @return [Puppet::Util::Autoload] the loader to use.
187
187
  # @api private
188
- def typeloader
189
- unless defined?(@typeloader)
190
- @typeloader = Puppet::Util::Autoload.new(self, "puppet/type")
191
- end
188
+ def typeloader
189
+ unless defined?(@typeloader)
190
+ @typeloader = Puppet::Util::Autoload.new(self, "puppet/type")
191
+ end
192
192
 
193
- @typeloader
194
- end
193
+ @typeloader
194
+ end
195
195
  end
196
196
  end
197
197