puppet 6.16.0-x86-mingw32 → 6.20.0-x86-mingw32

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

Potentially problematic release.


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

Files changed (458) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +6 -2
  4. data/Gemfile.lock +40 -36
  5. data/README.md +3 -4
  6. data/Rakefile +4 -12
  7. data/lib/puppet/agent.rb +2 -2
  8. data/lib/puppet/agent/locker.rb +0 -7
  9. data/lib/puppet/application.rb +10 -6
  10. data/lib/puppet/application/agent.rb +23 -6
  11. data/lib/puppet/application/apply.rb +20 -21
  12. data/lib/puppet/application/device.rb +1 -0
  13. data/lib/puppet/application/doc.rb +1 -1
  14. data/lib/puppet/application/filebucket.rb +2 -2
  15. data/lib/puppet/application/lookup.rb +16 -4
  16. data/lib/puppet/application/script.rb +1 -0
  17. data/lib/puppet/application_support.rb +7 -0
  18. data/lib/puppet/configurer.rb +70 -20
  19. data/lib/puppet/configurer/downloader.rb +31 -10
  20. data/lib/puppet/confine.rb +2 -2
  21. data/lib/puppet/confine/any.rb +1 -1
  22. data/lib/puppet/defaults.rb +113 -46
  23. data/lib/puppet/environments.rb +84 -59
  24. data/lib/puppet/face/catalog.rb +1 -1
  25. data/lib/puppet/face/config.rb +56 -16
  26. data/lib/puppet/face/epp.rb +12 -2
  27. data/lib/puppet/face/facts.rb +60 -0
  28. data/lib/puppet/face/node.rb +3 -3
  29. data/lib/puppet/face/node/clean.rb +2 -2
  30. data/lib/puppet/face/status.rb +1 -1
  31. data/lib/puppet/feature/base.rb +1 -1
  32. data/lib/puppet/ffi/posix.rb +10 -0
  33. data/lib/puppet/ffi/posix/constants.rb +14 -0
  34. data/lib/puppet/ffi/posix/functions.rb +24 -0
  35. data/lib/puppet/file_bucket/dipper.rb +1 -1
  36. data/lib/puppet/file_serving/http_metadata.rb +13 -1
  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 +8 -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 +3 -7
  47. data/lib/puppet/functions/epp.rb +1 -0
  48. data/lib/puppet/functions/inline_epp.rb +1 -0
  49. data/lib/puppet/functions/lstrip.rb +4 -4
  50. data/lib/puppet/functions/new.rb +8 -3
  51. data/lib/puppet/functions/reverse_each.rb +1 -1
  52. data/lib/puppet/functions/rstrip.rb +4 -4
  53. data/lib/puppet/functions/step.rb +1 -1
  54. data/lib/puppet/functions/strip.rb +4 -4
  55. data/lib/puppet/gettext/config.rb +5 -5
  56. data/lib/puppet/gettext/module_translations.rb +4 -4
  57. data/lib/puppet/http.rb +1 -0
  58. data/lib/puppet/http/client.rb +6 -1
  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/fact_search.rb +60 -0
  74. data/lib/puppet/indirector/facts/facter.rb +3 -3
  75. data/lib/puppet/indirector/facts/json.rb +27 -0
  76. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  77. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  78. data/lib/puppet/indirector/file_metadata/http.rb +25 -5
  79. data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
  80. data/lib/puppet/indirector/hiera.rb +4 -0
  81. data/lib/puppet/indirector/indirection.rb +1 -1
  82. data/lib/puppet/indirector/json.rb +5 -1
  83. data/lib/puppet/indirector/msgpack.rb +1 -1
  84. data/lib/puppet/indirector/node/json.rb +8 -0
  85. data/lib/puppet/indirector/report/json.rb +34 -0
  86. data/lib/puppet/indirector/report/processor.rb +2 -2
  87. data/lib/puppet/indirector/request.rb +5 -5
  88. data/lib/puppet/indirector/yaml.rb +1 -1
  89. data/lib/puppet/module.rb +1 -2
  90. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  91. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  92. data/lib/puppet/network/format_support.rb +2 -2
  93. data/lib/puppet/network/formats.rb +2 -1
  94. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  95. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  96. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  97. data/lib/puppet/network/http/connection_adapter.rb +6 -4
  98. data/lib/puppet/network/http/route.rb +2 -2
  99. data/lib/puppet/node/environment.rb +12 -5
  100. data/lib/puppet/node/facts.rb +17 -0
  101. data/lib/puppet/pal/pal_impl.rb +90 -13
  102. data/lib/puppet/parameter.rb +1 -1
  103. data/lib/puppet/parser/ast/leaf.rb +7 -6
  104. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  105. data/lib/puppet/parser/compiler.rb +1 -1
  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/resource.rb +3 -2
  112. data/lib/puppet/parser/resource/param.rb +6 -0
  113. data/lib/puppet/parser/templatewrapper.rb +1 -1
  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/deferred_resolver.rb +5 -3
  119. data/lib/puppet/pops/evaluator/evaluator_impl.rb +27 -8
  120. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  121. data/lib/puppet/pops/issues.rb +5 -0
  122. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  123. data/lib/puppet/pops/loaders.rb +18 -11
  124. data/lib/puppet/pops/lookup/context.rb +1 -1
  125. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  126. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  127. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  128. data/lib/puppet/pops/types/iterable.rb +34 -8
  129. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  130. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  131. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  132. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  133. data/lib/puppet/provider/file/windows.rb +1 -1
  134. data/lib/puppet/provider/package/apt.rb +38 -0
  135. data/lib/puppet/provider/package/aptitude.rb +1 -1
  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/pip2.rb +17 -0
  139. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  140. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  141. data/lib/puppet/provider/package/yum.rb +2 -1
  142. data/lib/puppet/provider/package/zypper.rb +3 -0
  143. data/lib/puppet/provider/service/windows.rb +23 -7
  144. data/lib/puppet/provider/user/aix.rb +3 -3
  145. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  146. data/lib/puppet/provider/user/useradd.rb +11 -4
  147. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  148. data/lib/puppet/reference/configuration.rb +6 -5
  149. data/lib/puppet/reports/http.rb +2 -0
  150. data/lib/puppet/resource.rb +2 -1
  151. data/lib/puppet/resource/type.rb +10 -1
  152. data/lib/puppet/rest/route.rb +2 -2
  153. data/lib/puppet/settings.rb +63 -21
  154. data/lib/puppet/settings/alias_setting.rb +37 -0
  155. data/lib/puppet/settings/base_setting.rb +26 -2
  156. data/lib/puppet/ssl/ssl_context.rb +2 -2
  157. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  158. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  159. data/lib/puppet/test/test_helper.rb +18 -13
  160. data/lib/puppet/transaction.rb +2 -2
  161. data/lib/puppet/transaction/persistence.rb +1 -1
  162. data/lib/puppet/transaction/report.rb +12 -8
  163. data/lib/puppet/trusted_external.rb +29 -1
  164. data/lib/puppet/type.rb +15 -7
  165. data/lib/puppet/type/file.rb +40 -15
  166. data/lib/puppet/type/file/checksum.rb +4 -4
  167. data/lib/puppet/type/file/source.rb +32 -12
  168. data/lib/puppet/type/filebucket.rb +1 -1
  169. data/lib/puppet/type/notify.rb +2 -2
  170. data/lib/puppet/type/service.rb +53 -0
  171. data/lib/puppet/type/user.rb +18 -3
  172. data/lib/puppet/util.rb +41 -3
  173. data/lib/puppet/util/autoload.rb +10 -15
  174. data/lib/puppet/util/character_encoding.rb +9 -5
  175. data/lib/puppet/util/checksums.rb +19 -4
  176. data/lib/puppet/util/connection.rb +8 -8
  177. data/lib/puppet/util/execution.rb +2 -2
  178. data/lib/puppet/util/fact_dif.rb +62 -0
  179. data/lib/puppet/util/fileparsing.rb +2 -2
  180. data/lib/puppet/util/posix.rb +54 -5
  181. data/lib/puppet/util/provider_features.rb +1 -1
  182. data/lib/puppet/util/reference.rb +1 -1
  183. data/lib/puppet/util/rubygems.rb +5 -1
  184. data/lib/puppet/util/run_mode.rb +5 -1
  185. data/lib/puppet/util/windows.rb +1 -0
  186. data/lib/puppet/util/windows/api_types.rb +60 -33
  187. data/lib/puppet/util/windows/eventlog.rb +1 -6
  188. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  189. data/lib/puppet/util/windows/principal.rb +8 -6
  190. data/lib/puppet/util/windows/registry.rb +11 -11
  191. data/lib/puppet/util/windows/security.rb +4 -4
  192. data/lib/puppet/util/windows/service.rb +43 -26
  193. data/lib/puppet/util/windows/user.rb +242 -8
  194. data/lib/puppet/version.rb +1 -1
  195. data/locales/puppet.pot +501 -443
  196. data/man/man5/puppet.conf.5 +70 -24
  197. data/man/man8/puppet-agent.8 +8 -5
  198. data/man/man8/puppet-apply.8 +2 -2
  199. data/man/man8/puppet-catalog.8 +1 -1
  200. data/man/man8/puppet-config.8 +6 -6
  201. data/man/man8/puppet-describe.8 +1 -1
  202. data/man/man8/puppet-device.8 +2 -2
  203. data/man/man8/puppet-doc.8 +1 -1
  204. data/man/man8/puppet-epp.8 +1 -1
  205. data/man/man8/puppet-facts.8 +32 -1
  206. data/man/man8/puppet-filebucket.8 +3 -3
  207. data/man/man8/puppet-generate.8 +1 -1
  208. data/man/man8/puppet-help.8 +1 -1
  209. data/man/man8/puppet-key.8 +1 -1
  210. data/man/man8/puppet-lookup.8 +2 -2
  211. data/man/man8/puppet-man.8 +1 -1
  212. data/man/man8/puppet-module.8 +1 -1
  213. data/man/man8/puppet-node.8 +7 -4
  214. data/man/man8/puppet-parser.8 +1 -1
  215. data/man/man8/puppet-plugin.8 +1 -1
  216. data/man/man8/puppet-report.8 +4 -1
  217. data/man/man8/puppet-resource.8 +1 -1
  218. data/man/man8/puppet-script.8 +2 -2
  219. data/man/man8/puppet-ssl.8 +1 -1
  220. data/man/man8/puppet-status.8 +2 -2
  221. data/man/man8/puppet.8 +2 -2
  222. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  223. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  224. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  225. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  226. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  227. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  228. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  229. data/spec/integration/application/agent_spec.rb +263 -54
  230. data/spec/integration/application/apply_spec.rb +168 -149
  231. data/spec/integration/application/doc_spec.rb +16 -6
  232. data/spec/integration/application/filebucket_spec.rb +70 -21
  233. data/spec/integration/application/help_spec.rb +42 -0
  234. data/spec/integration/application/lookup_spec.rb +13 -0
  235. data/spec/integration/application/module_spec.rb +68 -0
  236. data/spec/integration/application/plugin_spec.rb +53 -3
  237. data/spec/integration/configurer_spec.rb +14 -0
  238. data/spec/integration/data_binding_spec.rb +82 -0
  239. data/spec/integration/defaults_spec.rb +20 -3
  240. data/spec/integration/directory_environments_spec.rb +17 -17
  241. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  242. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  243. data/spec/integration/network/http_pool_spec.rb +26 -9
  244. data/spec/integration/node/environment_spec.rb +1 -1
  245. data/spec/integration/parser/compiler_spec.rb +11 -0
  246. data/spec/integration/resource/type_collection_spec.rb +2 -6
  247. data/spec/integration/transaction_spec.rb +4 -9
  248. data/spec/integration/type/file_spec.rb +1 -1
  249. data/spec/integration/util/execution_spec.rb +22 -0
  250. data/spec/integration/util/windows/adsi_spec.rb +5 -3
  251. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  252. data/spec/integration/util/windows/process_spec.rb +26 -32
  253. data/spec/integration/util/windows/registry_spec.rb +7 -17
  254. data/spec/integration/util/windows/user_spec.rb +47 -5
  255. data/spec/integration/util_spec.rb +7 -33
  256. data/spec/lib/puppet_spec/matchers.rb +0 -80
  257. data/spec/lib/puppet_spec/puppetserver.rb +8 -0
  258. data/spec/lib/puppet_spec/settings.rb +6 -1
  259. data/spec/shared_contexts/types_setup.rb +2 -0
  260. data/spec/spec_helper.rb +1 -4
  261. data/spec/unit/agent_spec.rb +8 -6
  262. data/spec/unit/application/agent_spec.rb +3 -5
  263. data/spec/unit/application/config_spec.rb +224 -4
  264. data/spec/unit/application/doc_spec.rb +2 -2
  265. data/spec/unit/application/face_base_spec.rb +6 -4
  266. data/spec/unit/application/facts_spec.rb +41 -10
  267. data/spec/unit/application/filebucket_spec.rb +0 -2
  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 +60 -13
  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/feature_spec.rb +1 -1
  276. data/spec/unit/confine_spec.rb +10 -3
  277. data/spec/unit/context/trusted_information_spec.rb +10 -4
  278. data/spec/unit/defaults_spec.rb +20 -1
  279. data/spec/unit/environments_spec.rb +176 -32
  280. data/spec/unit/face/config_spec.rb +65 -12
  281. data/spec/unit/face/node_spec.rb +2 -13
  282. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
  283. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  284. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  285. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  286. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  287. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  288. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  289. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  290. data/spec/unit/file_system/uniquefile_spec.rb +18 -0
  291. data/spec/unit/file_system_spec.rb +1 -2
  292. data/spec/unit/forge/module_release_spec.rb +2 -7
  293. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  294. data/spec/unit/http/client_spec.rb +64 -9
  295. data/spec/unit/http/resolver_spec.rb +24 -5
  296. data/spec/unit/http/response_spec.rb +6 -0
  297. data/spec/unit/http/service/ca_spec.rb +2 -3
  298. data/spec/unit/http/service/compiler_spec.rb +51 -3
  299. data/spec/unit/http/service/file_server_spec.rb +2 -3
  300. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  301. data/spec/unit/http/service/report_spec.rb +2 -3
  302. data/spec/unit/http/service_spec.rb +1 -2
  303. data/spec/unit/http/session_spec.rb +8 -21
  304. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  305. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  306. data/spec/unit/indirector/face_spec.rb +0 -1
  307. data/spec/unit/indirector/facts/facter_spec.rb +0 -1
  308. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  309. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  310. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  311. data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
  312. data/spec/unit/indirector/indirection_spec.rb +8 -12
  313. data/spec/unit/indirector/json_spec.rb +8 -8
  314. data/spec/unit/indirector/key/file_spec.rb +0 -1
  315. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  316. data/spec/unit/indirector/node/json_spec.rb +33 -0
  317. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  318. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  319. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  320. data/spec/unit/indirector/request_spec.rb +5 -5
  321. data/spec/unit/indirector/rest_spec.rb +1 -1
  322. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  323. data/spec/unit/indirector/yaml_spec.rb +7 -7
  324. data/spec/unit/indirector_spec.rb +2 -2
  325. data/spec/unit/interface_spec.rb +3 -3
  326. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  327. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  328. data/spec/unit/network/authconfig_spec.rb +0 -3
  329. data/spec/unit/network/format_support_spec.rb +3 -2
  330. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -10
  331. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  332. data/spec/unit/network/http/connection_spec.rb +42 -32
  333. data/spec/unit/network/http/handler_spec.rb +0 -5
  334. data/spec/unit/node/environment_spec.rb +18 -1
  335. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  336. data/spec/unit/parser/compiler_spec.rb +3 -19
  337. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  338. data/spec/unit/parser/resource_spec.rb +14 -8
  339. data/spec/unit/parser/scope_spec.rb +1 -1
  340. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  341. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  342. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  343. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  344. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  345. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  346. data/spec/unit/property_spec.rb +1 -0
  347. data/spec/unit/provider/exec_spec.rb +4 -3
  348. data/spec/unit/provider/nameservice_spec.rb +66 -65
  349. data/spec/unit/provider/package/apt_spec.rb +76 -3
  350. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  351. data/spec/unit/provider/package/base_spec.rb +6 -5
  352. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  353. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  354. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  355. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  356. data/spec/unit/provider/package/pip_spec.rb +6 -11
  357. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  358. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  359. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  360. data/spec/unit/provider/package/yum_spec.rb +31 -0
  361. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  362. data/spec/unit/provider/service/base_spec.rb +2 -4
  363. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  364. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  365. data/spec/unit/provider/service/debian_spec.rb +3 -5
  366. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  367. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  368. data/spec/unit/provider/service/init_spec.rb +45 -5
  369. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  370. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  371. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  372. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  373. data/spec/unit/provider/service/runit_spec.rb +2 -1
  374. data/spec/unit/provider/service/smf_spec.rb +1 -1
  375. data/spec/unit/provider/service/src_spec.rb +3 -5
  376. data/spec/unit/provider/service/systemd_spec.rb +3 -6
  377. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  378. data/spec/unit/provider/service/windows_spec.rb +50 -14
  379. data/spec/unit/provider/user/aix_spec.rb +5 -0
  380. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  381. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  382. data/spec/unit/provider/user/pw_spec.rb +2 -0
  383. data/spec/unit/provider/user/useradd_spec.rb +23 -16
  384. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  385. data/spec/unit/provider_spec.rb +8 -10
  386. data/spec/unit/puppet_pal_2pec.rb +40 -0
  387. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  388. data/spec/unit/reports/store_spec.rb +17 -13
  389. data/spec/unit/resource/capability_finder_spec.rb +6 -1
  390. data/spec/unit/resource/type_spec.rb +1 -1
  391. data/spec/unit/resource_spec.rb +14 -13
  392. data/spec/unit/rest/route_spec.rb +4 -4
  393. data/spec/unit/settings_spec.rb +576 -239
  394. data/spec/unit/ssl/base_spec.rb +0 -1
  395. data/spec/unit/ssl/host_spec.rb +0 -5
  396. data/spec/unit/ssl/ssl_provider_spec.rb +82 -50
  397. data/spec/unit/test/test_helper_spec.rb +17 -0
  398. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  399. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  400. data/spec/unit/transaction/persistence_spec.rb +15 -0
  401. data/spec/unit/transaction/report_spec.rb +3 -1
  402. data/spec/unit/transaction_spec.rb +13 -4
  403. data/spec/unit/type/file/content_spec.rb +0 -1
  404. data/spec/unit/type/file/selinux_spec.rb +0 -2
  405. data/spec/unit/type/file/source_spec.rb +4 -4
  406. data/spec/unit/type/file_spec.rb +122 -102
  407. data/spec/unit/type/filebucket_spec.rb +1 -1
  408. data/spec/unit/type/group_spec.rb +13 -6
  409. data/spec/unit/type/resources_spec.rb +7 -7
  410. data/spec/unit/type/service_spec.rb +210 -1
  411. data/spec/unit/type/tidy_spec.rb +0 -1
  412. data/spec/unit/type/user_spec.rb +31 -2
  413. data/spec/unit/type_spec.rb +52 -2
  414. data/spec/unit/util/at_fork_spec.rb +2 -2
  415. data/spec/unit/util/autoload_spec.rb +5 -1
  416. data/spec/unit/util/backups_spec.rb +1 -2
  417. data/spec/unit/util/character_encoding_spec.rb +4 -4
  418. data/spec/unit/util/checksums_spec.rb +16 -0
  419. data/spec/unit/util/command_line_spec.rb +11 -6
  420. data/spec/unit/util/execution_spec.rb +15 -11
  421. data/spec/unit/util/inifile_spec.rb +6 -14
  422. data/spec/unit/util/log_spec.rb +8 -7
  423. data/spec/unit/util/logging_spec.rb +3 -3
  424. data/spec/unit/util/posix_spec.rb +363 -15
  425. data/spec/unit/util/rubygems_spec.rb +2 -2
  426. data/spec/unit/util/run_mode_spec.rb +6 -6
  427. data/spec/unit/util/selinux_spec.rb +76 -52
  428. data/spec/unit/util/storage_spec.rb +3 -1
  429. data/spec/unit/util/suidmanager_spec.rb +44 -41
  430. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  431. data/spec/unit/util/windows/service_spec.rb +4 -4
  432. data/spec/unit/util_spec.rb +16 -9
  433. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  434. metadata +52 -53
  435. data/spec/integration/faces/config_spec.rb +0 -91
  436. data/spec/integration/faces/documentation_spec.rb +0 -57
  437. data/spec/integration/file_bucket/file_spec.rb +0 -50
  438. data/spec/integration/file_serving/content_spec.rb +0 -7
  439. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  440. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  441. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  442. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  443. data/spec/integration/module_tool/forge_spec.rb +0 -51
  444. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  445. data/spec/integration/provider/service/init_spec.rb +0 -48
  446. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  447. data/spec/integration/provider/service/windows_spec.rb +0 -50
  448. data/spec/integration/reference/providers_spec.rb +0 -21
  449. data/spec/integration/reports_spec.rb +0 -13
  450. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  451. data/spec/integration/ssl/host_spec.rb +0 -72
  452. data/spec/integration/ssl/key_spec.rb +0 -99
  453. data/spec/integration/test/test_helper_spec.rb +0 -31
  454. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  455. data/spec/unit/face/catalog_spec.rb +0 -6
  456. data/spec/unit/face/man_spec.rb +0 -25
  457. data/spec/unit/face/module_spec.rb +0 -3
  458. data/spec/unit/man_spec.rb +0 -31
@@ -302,7 +302,7 @@ defaultfor :osfamily => :redhat, :operatingsystemmajrelease => (4..7).to_a
302
302
  command = [command(:cmd)] + no_debug + ["-e", error_level, "-y", install_options, operation, wanted].compact
303
303
  output = execute(command)
304
304
 
305
- if output =~ /^No package #{wanted} available\.$/
305
+ if output.to_s =~ /^No package #{wanted} available\.$/
306
306
  raise Puppet::Error, _("Could not find package %{wanted}") % { wanted: wanted }
307
307
  end
308
308
 
@@ -328,6 +328,7 @@ defaultfor :osfamily => :redhat, :operatingsystemmajrelease => (4..7).to_a
328
328
  return "#{upd[:epoch]}:#{upd[:version]}-#{upd[:release]}"
329
329
  else
330
330
  # Yum didn't find updates, pretend the current version is the latest
331
+ self.debug "Yum didn't find updates, current version (#{properties[:ensure]}) is the latest"
331
332
  version = properties[:ensure]
332
333
  raise Puppet::DevError, _("Tried to get latest on a missing package") if version == :absent || version == :purged
333
334
  return version
@@ -187,6 +187,9 @@ Puppet::Type.type(:package).provide :zypper, :parent => :rpm, :source => :rpm do
187
187
  if should.is_a?(String)
188
188
  begin
189
189
  should_version = Puppet::Util::Package::Version::Range.parse(should, Puppet::Util::Package::Version::Rpm)
190
+ if should_version.is_a?(RPM_VERSION_RANGE::Eq)
191
+ return super
192
+ end
190
193
  rescue Puppet::Util::Package::Version::Range::ValidationFailure, Puppet::Util::Package::Version::Rpm::ValidationFailure
191
194
  Puppet.debug("Cannot parse #{should} as a RPM version range")
192
195
  return super
@@ -14,29 +14,28 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
14
14
  defaultfor :operatingsystem => :windows
15
15
  confine :operatingsystem => :windows
16
16
 
17
- has_feature :refreshable
18
- has_feature :configurable_timeout
17
+ has_feature :refreshable, :configurable_timeout, :manages_logon_credentials
19
18
 
20
19
  def enable
21
- Puppet::Util::Windows::Service.set_startup_mode( @resource[:name], :SERVICE_AUTO_START )
20
+ Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {startup_type: :SERVICE_AUTO_START})
22
21
  rescue => detail
23
22
  raise Puppet::Error.new(_("Cannot enable %{resource_name}, error was: %{detail}") % { resource_name: @resource[:name], detail: detail }, detail )
24
23
  end
25
24
 
26
25
  def disable
27
- Puppet::Util::Windows::Service.set_startup_mode( @resource[:name], :SERVICE_DISABLED )
26
+ Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {startup_type: :SERVICE_DISABLED})
28
27
  rescue => detail
29
28
  raise Puppet::Error.new(_("Cannot disable %{resource_name}, error was: %{detail}") % { resource_name: @resource[:name], detail: detail }, detail )
30
29
  end
31
30
 
32
31
  def manual_start
33
- Puppet::Util::Windows::Service.set_startup_mode( @resource[:name], :SERVICE_DEMAND_START )
32
+ Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {startup_type: :SERVICE_DEMAND_START})
34
33
  rescue => detail
35
34
  raise Puppet::Error.new(_("Cannot enable %{resource_name} for manual start, error was: %{detail}") % { resource_name: @resource[:name], detail: detail }, detail )
36
35
  end
37
36
 
38
37
  def delayed_start
39
- Puppet::Util::Windows::Service.set_startup_mode( @resource[:name], :SERVICE_AUTO_START, true )
38
+ Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {startup_type: :SERVICE_AUTO_START, delayed: true})
40
39
  rescue => detail
41
40
  raise Puppet::Error.new(_("Cannot enable %{resource_name} for delayed start, error was: %{detail}") % { resource_name: @resource[:name], detail: detail }, detail )
42
41
  end
@@ -110,7 +109,10 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
110
109
  raise Puppet::Error.new(_("Unknown service state '%{current_state}' for service '%{resource_name}'") % { current_state: current_state, resource_name: @resource[:name] })
111
110
  end
112
111
  debug("Service #{@resource[:name]} is #{current_state}")
113
- return state
112
+ state
113
+ rescue => detail
114
+ Puppet.warning("Status for service #{@resource[:name]} could not be retrieved: #{detail}")
115
+ :stopped
114
116
  end
115
117
 
116
118
  def default_timeout
@@ -125,4 +127,18 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
125
127
  end
126
128
  services
127
129
  end
130
+
131
+ def logonaccount
132
+ return unless Puppet::Util::Windows::Service.exists?(@resource[:name])
133
+ Puppet::Util::Windows::Service.logon_account(@resource[:name])
134
+ end
135
+
136
+ def logonaccount=(value)
137
+ Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {logon_account: value, logon_password: @resource[:logonpassword]})
138
+ restart if @resource[:ensure] == :running && [:running, :paused].include?(status)
139
+ end
140
+
141
+ def logonpassword=(value)
142
+ Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {logon_password: value})
143
+ end
128
144
  end
@@ -178,7 +178,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
178
178
  # does not have a password.
179
179
  break if line =~ /^\S+:$/
180
180
 
181
- match_obj = /password = (\S+)/.match(line)
181
+ match_obj = /password\s+=\s+(\S+)/.match(line)
182
182
  end
183
183
  return :absent unless match_obj
184
184
 
@@ -211,7 +211,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
211
211
  tempfile = Tempfile.new("puppet_#{user}_pw", :encoding => Encoding::ASCII)
212
212
  tempfile << "#{user}:#{value}\n"
213
213
  tempfile.close()
214
-
214
+
215
215
  # Options '-e', '-c', use encrypted password and clear flags
216
216
  # Must receive "user:enc_password" as input
217
217
  # command, arguments = {:failonfail => true, :combine => true}
@@ -288,7 +288,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
288
288
  # UNSUPPORTED
289
289
  #- **roles**
290
290
  # The roles the user has. Multiple roles should be
291
- # specified as an array. Requires features manages_solaris_rbac.
291
+ # specified as an array. Requires features manages_roles.
292
292
  # UNSUPPORTED
293
293
  #- **key_membership**
294
294
  # Whether specified key value pairs should be treated as the only
@@ -33,7 +33,7 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source =>
33
33
  set("shell", value)
34
34
  end
35
35
 
36
- has_features :manages_homedir, :allows_duplicates, :manages_solaris_rbac, :manages_passwords, :manages_password_age, :manages_shell
36
+ has_features :manages_homedir, :allows_duplicates, :manages_solaris_rbac, :manages_roles, :manages_passwords, :manages_password_age, :manages_shell
37
37
 
38
38
  def check_valid_shell
39
39
  unless File.exist?(@resource.should(:shell))
@@ -138,10 +138,17 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
138
138
 
139
139
  def check_manage_home
140
140
  cmd = []
141
- if @resource.managehome? && (!@resource.forcelocal?)
142
- cmd << "-m"
143
- elsif (!@resource.managehome?) && Facter.value(:osfamily) == 'RedHat'
144
- cmd << "-M"
141
+ if @resource.managehome?
142
+ # libuser does not implement the -m flag
143
+ cmd << "-m" unless @resource.forcelocal?
144
+ else
145
+ osfamily = Facter.value(:osfamily)
146
+ osversion = Facter.value(:operatingsystemmajrelease).to_i
147
+ # SLES 11 uses pwdutils instead of shadow, which does not have -M
148
+ # Solaris and OpenBSD use different useradd flavors
149
+ unless osfamily =~ /Solaris|OpenBSD/ || osfamily == 'Suse' && osversion <= 11
150
+ cmd << "-M"
151
+ end
145
152
  end
146
153
  cmd
147
154
  end
@@ -6,7 +6,7 @@ Puppet::Type.type(:user).provide :windows_adsi do
6
6
  defaultfor :operatingsystem => :windows
7
7
  confine :operatingsystem => :windows
8
8
 
9
- has_features :manages_homedir, :manages_passwords
9
+ has_features :manages_homedir, :manages_passwords, :manages_roles
10
10
 
11
11
  def initialize(value={})
12
12
  super(value)
@@ -17,6 +17,23 @@ Puppet::Type.type(:user).provide :windows_adsi do
17
17
  @user ||= Puppet::Util::Windows::ADSI::User.new(@resource[:name])
18
18
  end
19
19
 
20
+ def roles
21
+ Puppet::Util::Windows::User::get_rights(@resource[:name])
22
+ end
23
+
24
+ def roles=(value)
25
+ current = roles.split(',')
26
+ should = value.split(',')
27
+
28
+ add_list = should - current
29
+ Puppet::Util::Windows::User::set_rights(@resource[:name], add_list) unless add_list.empty?
30
+
31
+ if @resource[:role_membership] == :inclusive
32
+ remove_list = current - should
33
+ Puppet::Util::Windows::User::remove_rights(@resource[:name], remove_list) unless remove_list.empty?
34
+ end
35
+ end
36
+
20
37
  def groups
21
38
  @groups ||= Puppet::Util::Windows::ADSI::Group.name_sid_hash(user.groups)
22
39
  @groups.keys
@@ -55,11 +55,12 @@ config.header = <<EOT
55
55
  * Each of these settings can be specified in `puppet.conf` or on the
56
56
  command line.
57
57
  * Puppet Enterprise (PE) and open source Puppet share the configuration settings
58
- that are documented here. However, PE defaults for some settings differ from
59
- the open source Puppet defaults. Some examples of settings that have different
60
- PE defaults include `disable18n`, `environment_timeout`, `always_retry_plugins`,
61
- and the Puppet Server JRuby `max-active-instances` setting. To verify PE
62
- configuration defaults, check the `puppet.conf` file after installation.
58
+ documented here. However, PE defaults differ from open source defaults for some
59
+ settings, such as `node_terminus`, `storeconfigs`, `always_retry_plugins`,
60
+ `disable18n`, `environment_timeout` (when Code Manager is enabled), and the
61
+ Puppet Server JRuby `max-active-instances` setting. To verify PE configuration
62
+ defaults, check the `puppet.conf` or `pe-puppet-server.conf` file after
63
+ installation.
63
64
  * When using boolean settings on the command line, use `--setting` and
64
65
  `--no-setting` instead of `--setting (true|false)`. (Using `--setting false`
65
66
  results in "Error: Could not parse application options: needless argument".)
@@ -25,6 +25,8 @@ Puppet::Reports.register_report(:http) do
25
25
  :include_system_store => Puppet[:report_include_system_store],
26
26
  }
27
27
 
28
+ # Puppet's http client implementation accepts userinfo in the URL
29
+ # but puppetserver's does not. So pass credentials explicitly.
28
30
  if url.user && url.password
29
31
  options[:basic_auth] = {
30
32
  user: url.user,
@@ -628,7 +628,8 @@ class Puppet::Resource
628
628
  def self.extract_type_and_title(argtype, argtitle)
629
629
  if (argtype.nil? || argtype == :component || argtype == :whit) &&
630
630
  argtitle =~ /^([^\[\]]+)\[(.+)\]$/m then [ $1, $2 ]
631
- elsif argtitle.nil? && argtype =~ /^([^\[\]]+)\[(.+)\]$/m then [ $1, $2 ]
631
+ elsif argtitle.nil? && argtype.is_a?(String) &&
632
+ argtype =~ /^([^\[\]]+)\[(.+)\]$/m then [ $1, $2 ]
632
633
  elsif argtitle then [ argtype, argtitle ]
633
634
  elsif argtype.is_a?(Puppet::Type) then [ argtype.class.name, argtype.title ]
634
635
  else raise ArgumentError, _("No title provided and %{type} is not a valid resource reference") % { type: argtype.inspect }
@@ -11,6 +11,7 @@ class Puppet::Resource::Type
11
11
  include Puppet::Util::Warnings
12
12
  include Puppet::Util::Errors
13
13
 
14
+ # @deprecated application orchestration will be removed in puppet 7 (capability_mapping, application, site)
14
15
  RESOURCE_KINDS = [:hostclass, :node, :definition, :capability_mapping, :application, :site]
15
16
 
16
17
  # Map the names used in our documentation to the names used internally
@@ -33,7 +34,7 @@ class Puppet::Resource::Type
33
34
  DOUBLE_COLON = '::'.freeze
34
35
  EMPTY_ARRAY = [].freeze
35
36
 
36
- attr_accessor :file, :line, :doc, :code, :parent, :resource_type_collection
37
+ attr_accessor :file, :line, :doc, :code, :parent, :resource_type_collection, :override
37
38
  attr_reader :namespace, :arguments, :behaves_like, :module_name
38
39
 
39
40
  # The attributes 'produces' and 'consumes' are arrays of the blueprints
@@ -62,6 +63,7 @@ class Puppet::Resource::Type
62
63
  # Are we a child of the passed class? Do a recursive search up our
63
64
  # parentage tree to figure it out.
64
65
  def child_of?(klass)
66
+ return true if override
65
67
  return false unless parent
66
68
 
67
69
  return(klass == parent_type ? true : parent_type.child_of?(klass))
@@ -69,6 +71,8 @@ class Puppet::Resource::Type
69
71
 
70
72
  # Evaluate the resources produced by the given resource. These resources are
71
73
  # evaluated in a separate but identical scope from the rest of the resource.
74
+ #
75
+ # @deprecated application orchestration will be removed in puppet 7
72
76
  def evaluate_produces(resource, scope)
73
77
  # Only defined types and classes can produce capabilities
74
78
  return unless definition? || hostclass?
@@ -161,19 +165,23 @@ class Puppet::Resource::Type
161
165
  @module_name = options[:module_name]
162
166
  end
163
167
 
168
+ # @deprecated application orchestration will be removed in puppet 7
164
169
  def produces
165
170
  @produces || EMPTY_ARRAY
166
171
  end
167
172
 
173
+ # @deprecated application orchestration will be removed in puppet 7
168
174
  def consumes
169
175
  @consumes || EMPTY_ARRAY
170
176
  end
171
177
 
178
+ # @deprecated application orchestration will be removed in puppet 7
172
179
  def add_produces(blueprint)
173
180
  @produces ||= []
174
181
  @produces << blueprint
175
182
  end
176
183
 
184
+ # @deprecated application orchestration will be removed in puppet 7
177
185
  def add_consumes(blueprint)
178
186
  @consumes ||= []
179
187
  @consumes << blueprint
@@ -235,6 +243,7 @@ class Puppet::Resource::Type
235
243
  when :node
236
244
  :node
237
245
  when :site
246
+ # @deprecated application orchestration will be removed in puppet 7
238
247
  :site
239
248
  end
240
249
 
@@ -14,11 +14,11 @@ module Puppet::Rest
14
14
  # construction
15
15
  # @param [Symbol] server_setting the setting to check for special
16
16
  # server configuration
17
- # @param [Symbol] port_setting the setting to check for speical
17
+ # @param [Symbol] port_setting the setting to check for special
18
18
  # port configuration
19
19
  # @param [Symbol] srv_service the name of the service when using SRV
20
20
  # records
21
- def initialize(api:, server_setting: :server, port_setting: :masterport, srv_service: :puppet)
21
+ def initialize(api:, server_setting: :server, port_setting: :serverport, srv_service: :puppet)
22
22
  @api = api
23
23
  @default_server = Puppet::Util::Connection.determine_server(server_setting)
24
24
  @default_port = Puppet::Util::Connection.determine_port(port_setting, server_setting)
@@ -32,6 +32,7 @@ class Puppet::Settings
32
32
  require 'puppet/settings/server_list_setting'
33
33
  require 'puppet/settings/http_extra_headers_setting'
34
34
  require 'puppet/settings/certificate_revocation_setting'
35
+ require 'puppet/settings/alias_setting'
35
36
 
36
37
  # local reference for convenience
37
38
  PuppetOptionParser = Puppet::Util::CommandLine::PuppetOptionParser
@@ -44,7 +45,7 @@ class Puppet::Settings
44
45
  REQUIRED_APP_SETTINGS = [:logdir, :confdir, :vardir, :codedir]
45
46
 
46
47
  # The acceptable sections of the puppet.conf configuration file.
47
- ALLOWED_SECTION_NAMES = ['main', 'master', 'agent', 'user'].freeze
48
+ ALLOWED_SECTION_NAMES = ['main', 'server', 'master', 'agent', 'user'].freeze
48
49
 
49
50
  NONE = 'none'.freeze
50
51
 
@@ -330,7 +331,7 @@ class Puppet::Settings
330
331
  end
331
332
 
332
333
  option_parser.on('--run_mode',
333
- "The effective 'run mode' of the application: master, agent, or user.",
334
+ "The effective 'run mode' of the application: server, agent, or user.",
334
335
  :REQUIRED) do |arg|
335
336
  Puppet.settings.preferred_run_mode = arg
336
337
  end
@@ -564,7 +565,7 @@ class Puppet::Settings
564
565
  # @api private
565
566
  def preferred_run_mode=(mode)
566
567
  mode = mode.to_s.downcase.intern
567
- raise ValidationError, "Invalid run mode '#{mode}'" unless [:master, :agent, :user].include?(mode)
568
+ raise ValidationError, "Invalid run mode '#{mode}'" unless [:server, :master, :agent, :user].include?(mode)
568
569
  @preferred_run_mode_name = mode
569
570
  # Changing the run mode has far-reaching consequences. Flush any cached
570
571
  # settings so they will be re-generated.
@@ -659,7 +660,7 @@ class Puppet::Settings
659
660
  if explicit_config_file?
660
661
  return self[:config]
661
662
  else
662
- return File.join(Puppet::Util::RunMode[:master].conf_dir, config_file_name)
663
+ return File.join(Puppet::Util::RunMode[:server].conf_dir, config_file_name)
663
664
  end
664
665
  end
665
666
  private :main_config_file
@@ -729,7 +730,8 @@ class Puppet::Settings
729
730
  :autosign => AutosignSetting,
730
731
  :server_list => ServerListSetting,
731
732
  :http_extra_headers => HttpExtraHeadersSetting,
732
- :certificate_revocation => CertificateRevocationSetting
733
+ :certificate_revocation => CertificateRevocationSetting,
734
+ :alias => AliasSetting
733
735
  }
734
736
 
735
737
  # Create a new setting. The value is passed in because it's used to determine
@@ -829,7 +831,16 @@ class Puppet::Settings
829
831
  SearchPathElement.new(:cli, :values),
830
832
  ]
831
833
  searchpath << SearchPathElement.new(environment.intern, :environment) if environment
832
- searchpath << SearchPathElement.new(run_mode, :section) if run_mode
834
+
835
+ if run_mode
836
+ if [:master, :server].include?(run_mode)
837
+ searchpath << SearchPathElement.new(:server, :section)
838
+ searchpath << SearchPathElement.new(:master, :section)
839
+ else
840
+ searchpath << SearchPathElement.new(run_mode, :section)
841
+ end
842
+ end
843
+
833
844
  searchpath << SearchPathElement.new(:main, :section)
834
845
  end
835
846
 
@@ -907,6 +918,16 @@ class Puppet::Settings
907
918
  end
908
919
  end
909
920
 
921
+ # Allow later inspection to determine if the setting was set by user
922
+ # config, rather than a default setting.
923
+ def set_in_section?(param, section)
924
+ param = param.to_sym
925
+ vals = searchpath_values(SearchPathElement.new(section, :section))
926
+ if vals
927
+ vals.lookup(param)
928
+ end
929
+ end
930
+
910
931
  # Patches the value for a param in a section.
911
932
  # This method is required to support the use case of unifying --dns-alt-names and
912
933
  # --dns_alt_names in the certificate face. Ideally this should be cleaned up.
@@ -1053,12 +1074,17 @@ Generated on #{Time.now}.
1053
1074
  # Create the necessary objects to use a section. This is idempotent;
1054
1075
  # you can 'use' a section as many times as you want.
1055
1076
  def use(*sections)
1077
+ Puppet.warning(":master section deprecated in favor of :server section") if sections.include?(:master)
1078
+
1079
+ # add :server if sections include :master or :master if sections include :server
1080
+ sections |= [:master, :server] if (sections & [:master, :server]).any?
1081
+
1056
1082
  sections = sections.collect { |s| s.to_sym }
1057
1083
  sections = sections.reject { |s| @used.include?(s) }
1058
1084
 
1059
1085
  return if sections.empty?
1060
1086
 
1061
- Puppet.debug("Applying settings catalog for sections #{sections.join(', ')}")
1087
+ Puppet.debug { "Applying settings catalog for sections #{sections.join(', ')}" }
1062
1088
 
1063
1089
  begin
1064
1090
  catalog = to_catalog(*sections).to_ral
@@ -1236,27 +1262,37 @@ Generated on #{Time.now}.
1236
1262
  end
1237
1263
 
1238
1264
  def add_environment_resources(catalog, sections)
1239
- path = self[:environmentpath]
1240
- envdir = path.split(File::PATH_SEPARATOR).first if path
1241
1265
  configured_environment = self[:environment]
1242
- if configured_environment == "production" && envdir && Puppet::FileSystem.exist?(envdir)
1243
- configured_environment_path = File.join(envdir, configured_environment)
1244
- # If configured_environment_path is a symlink, assume the source path is being managed
1245
- # elsewhere, so don't do any of this configuration
1246
- if !Puppet::FileSystem.symlink?(configured_environment_path)
1266
+
1267
+ if configured_environment == "production" && !production_environment_exists?
1268
+ environment_path = self[:environmentpath]
1269
+ first_environment_path = environment_path.split(File::PATH_SEPARATOR).first
1270
+
1271
+ if Puppet::FileSystem.exist?(first_environment_path)
1272
+ production_environment_path = File.join(first_environment_path, configured_environment)
1247
1273
  parameters = { :ensure => 'directory' }
1248
- unless Puppet::FileSystem.exist?(configured_environment_path)
1249
- parameters[:mode] = '0750'
1250
- if Puppet.features.root?
1251
- parameters[:owner] = Puppet[:user] if service_user_available?
1252
- parameters[:group] = Puppet[:group] if service_group_available?
1253
- end
1274
+ parameters[:mode] = '0750'
1275
+ if Puppet.features.root?
1276
+ parameters[:owner] = Puppet[:user] if service_user_available?
1277
+ parameters[:group] = Puppet[:group] if service_group_available?
1254
1278
  end
1255
- catalog.add_resource(Puppet::Resource.new(:file, configured_environment_path, :parameters => parameters))
1279
+ catalog.add_resource(Puppet::Resource.new(:file, production_environment_path, :parameters => parameters))
1256
1280
  end
1257
1281
  end
1258
1282
  end
1259
1283
 
1284
+ def production_environment_exists?
1285
+ environment_path = self[:environmentpath]
1286
+ paths = environment_path.split(File::PATH_SEPARATOR)
1287
+
1288
+ paths.any? do |path|
1289
+ # If expected_path is a symlink, assume the source path is being managed
1290
+ # elsewhere, so accept it also as a valid production environment path
1291
+ expected_path = File.join(path, 'production')
1292
+ Puppet::FileSystem.directory?(expected_path) || Puppet::FileSystem.symlink?(expected_path)
1293
+ end
1294
+ end
1295
+
1260
1296
  def add_user_resources(catalog, sections)
1261
1297
  return unless Puppet.features.root?
1262
1298
  return if Puppet::Util::Platform.windows?
@@ -1357,6 +1393,12 @@ Generated on #{Time.now}.
1357
1393
  end
1358
1394
  end
1359
1395
 
1396
+ setting = @defaults[name]
1397
+ if setting.respond_to?(:alias_name)
1398
+ val = lookup(setting.alias_name)
1399
+ return val if val
1400
+ end
1401
+
1360
1402
  @defaults[name].default
1361
1403
  end
1362
1404