puppet 7.6.1-universal-darwin → 7.10.0-universal-darwin

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 (816) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +7 -7
  3. data/Gemfile +2 -1
  4. data/Gemfile.lock +18 -18
  5. data/README.md +4 -4
  6. data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
  7. data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
  8. data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
  9. data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
  10. data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
  11. data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
  12. data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
  13. data/{ext → examples}/nagios/check_puppet.rb +2 -2
  14. data/ext/README.md +13 -0
  15. data/ext/osx/puppet.plist +2 -0
  16. data/ext/project_data.yaml +1 -0
  17. data/install.rb +11 -15
  18. data/lib/hiera_puppet.rb +1 -1
  19. data/lib/puppet.rb +40 -40
  20. data/lib/puppet/agent.rb +6 -6
  21. data/lib/puppet/agent/disabler.rb +1 -1
  22. data/lib/puppet/agent/locker.rb +2 -2
  23. data/lib/puppet/application.rb +6 -6
  24. data/lib/puppet/application/agent.rb +18 -11
  25. data/lib/puppet/application/apply.rb +6 -5
  26. data/lib/puppet/application/catalog.rb +1 -1
  27. data/lib/puppet/application/config.rb +1 -1
  28. data/lib/puppet/application/describe.rb +1 -1
  29. data/lib/puppet/application/device.rb +8 -7
  30. data/lib/puppet/application/doc.rb +7 -7
  31. data/lib/puppet/application/epp.rb +2 -2
  32. data/lib/puppet/application/face_base.rb +2 -2
  33. data/lib/puppet/application/facts.rb +1 -1
  34. data/lib/puppet/application/filebucket.rb +3 -2
  35. data/lib/puppet/application/generate.rb +1 -1
  36. data/lib/puppet/application/help.rb +1 -1
  37. data/lib/puppet/application/indirection_base.rb +1 -1
  38. data/lib/puppet/application/lookup.rb +6 -6
  39. data/lib/puppet/application/module.rb +1 -1
  40. data/lib/puppet/application/node.rb +1 -1
  41. data/lib/puppet/application/parser.rb +2 -2
  42. data/lib/puppet/application/plugin.rb +1 -1
  43. data/lib/puppet/application/report.rb +1 -1
  44. data/lib/puppet/application/resource.rb +18 -4
  45. data/lib/puppet/application/script.rb +6 -5
  46. data/lib/puppet/application/ssl.rb +3 -2
  47. data/lib/puppet/application_support.rb +4 -4
  48. data/lib/puppet/compilable_resource_type.rb +1 -1
  49. data/lib/puppet/concurrent/lock.rb +1 -1
  50. data/lib/puppet/configurer.rb +159 -50
  51. data/lib/puppet/configurer/downloader.rb +4 -3
  52. data/lib/puppet/configurer/fact_handler.rb +3 -3
  53. data/lib/puppet/configurer/plugin_handler.rb +1 -1
  54. data/lib/puppet/confine.rb +1 -1
  55. data/lib/puppet/confine/boolean.rb +1 -1
  56. data/lib/puppet/confine/exists.rb +1 -1
  57. data/lib/puppet/confine/false.rb +1 -1
  58. data/lib/puppet/confine/feature.rb +1 -1
  59. data/lib/puppet/confine/true.rb +1 -1
  60. data/lib/puppet/confine/variable.rb +1 -1
  61. data/lib/puppet/confine_collection.rb +1 -1
  62. data/lib/puppet/confiner.rb +1 -1
  63. data/lib/puppet/context.rb +2 -2
  64. data/lib/puppet/context/trusted_information.rb +1 -1
  65. data/lib/puppet/daemon.rb +2 -2
  66. data/lib/puppet/data_binding.rb +1 -1
  67. data/lib/puppet/datatypes/error.rb +1 -1
  68. data/lib/puppet/defaults.rb +67 -33
  69. data/lib/puppet/environments.rb +76 -26
  70. data/lib/puppet/etc.rb +1 -1
  71. data/lib/puppet/external/pson/common.rb +1 -1
  72. data/lib/puppet/external/pson/pure.rb +3 -3
  73. data/lib/puppet/face.rb +1 -1
  74. data/lib/puppet/face/catalog.rb +1 -1
  75. data/lib/puppet/face/config.rb +2 -2
  76. data/lib/puppet/face/epp.rb +6 -6
  77. data/lib/puppet/face/facts.rb +2 -2
  78. data/lib/puppet/face/generate.rb +2 -2
  79. data/lib/puppet/face/help.rb +3 -3
  80. data/lib/puppet/face/help/action.erb +1 -0
  81. data/lib/puppet/face/help/face.erb +1 -0
  82. data/lib/puppet/face/module.rb +3 -3
  83. data/lib/puppet/face/module/install.rb +2 -2
  84. data/lib/puppet/face/node.rb +1 -1
  85. data/lib/puppet/face/node/clean.rb +1 -1
  86. data/lib/puppet/face/parser.rb +4 -4
  87. data/lib/puppet/face/plugin.rb +2 -2
  88. data/lib/puppet/face/report.rb +1 -1
  89. data/lib/puppet/face/resource.rb +1 -1
  90. data/lib/puppet/feature/base.rb +2 -2
  91. data/lib/puppet/feature/bolt.rb +1 -1
  92. data/lib/puppet/feature/cfpropertylist.rb +1 -1
  93. data/lib/puppet/feature/eventlog.rb +1 -1
  94. data/lib/puppet/feature/hiera_eyaml.rb +1 -1
  95. data/lib/puppet/feature/hocon.rb +1 -1
  96. data/lib/puppet/feature/libuser.rb +2 -2
  97. data/lib/puppet/feature/msgpack.rb +1 -1
  98. data/lib/puppet/feature/pe_license.rb +1 -1
  99. data/lib/puppet/feature/selinux.rb +1 -1
  100. data/lib/puppet/feature/ssh.rb +1 -1
  101. data/lib/puppet/feature/telnet.rb +1 -1
  102. data/lib/puppet/feature/zlib.rb +1 -1
  103. data/lib/puppet/ffi/posix.rb +2 -2
  104. data/lib/puppet/ffi/posix/constants.rb +1 -1
  105. data/lib/puppet/ffi/posix/functions.rb +1 -1
  106. data/lib/puppet/ffi/windows.rb +4 -4
  107. data/lib/puppet/ffi/windows/api_types.rb +2 -2
  108. data/lib/puppet/ffi/windows/constants.rb +1 -1
  109. data/lib/puppet/ffi/windows/functions.rb +1 -1
  110. data/lib/puppet/ffi/windows/structs.rb +1 -1
  111. data/lib/puppet/file_bucket/dipper.rb +4 -4
  112. data/lib/puppet/file_bucket/file.rb +3 -3
  113. data/lib/puppet/file_serving/base.rb +2 -2
  114. data/lib/puppet/file_serving/configuration.rb +12 -10
  115. data/lib/puppet/file_serving/configuration/parser.rb +4 -2
  116. data/lib/puppet/file_serving/content.rb +3 -3
  117. data/lib/puppet/file_serving/fileset.rb +16 -4
  118. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  119. data/lib/puppet/file_serving/metadata.rb +6 -6
  120. data/lib/puppet/file_serving/mount.rb +4 -4
  121. data/lib/puppet/file_serving/mount/file.rb +1 -1
  122. data/lib/puppet/file_serving/mount/locales.rb +1 -1
  123. data/lib/puppet/file_serving/mount/modules.rb +1 -1
  124. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -1
  125. data/lib/puppet/file_serving/mount/plugins.rb +1 -1
  126. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  127. data/lib/puppet/file_serving/mount/tasks.rb +1 -1
  128. data/lib/puppet/file_serving/terminus_helper.rb +2 -2
  129. data/lib/puppet/file_serving/terminus_selector.rb +1 -1
  130. data/lib/puppet/file_system.rb +9 -9
  131. data/lib/puppet/file_system/file_impl.rb +1 -1
  132. data/lib/puppet/file_system/jruby.rb +1 -1
  133. data/lib/puppet/file_system/path_pattern.rb +1 -1
  134. data/lib/puppet/file_system/uniquefile.rb +1 -1
  135. data/lib/puppet/file_system/windows.rb +4 -4
  136. data/lib/puppet/forge.rb +8 -8
  137. data/lib/puppet/forge/cache.rb +2 -2
  138. data/lib/puppet/forge/errors.rb +3 -3
  139. data/lib/puppet/forge/repository.rb +4 -4
  140. data/lib/puppet/functions/all.rb +1 -1
  141. data/lib/puppet/functions/camelcase.rb +1 -1
  142. data/lib/puppet/functions/capitalize.rb +2 -2
  143. data/lib/puppet/functions/downcase.rb +2 -2
  144. data/lib/puppet/functions/empty.rb +8 -0
  145. data/lib/puppet/functions/find_template.rb +2 -2
  146. data/lib/puppet/functions/get.rb +5 -5
  147. data/lib/puppet/functions/group_by.rb +13 -5
  148. data/lib/puppet/functions/lest.rb +1 -1
  149. data/lib/puppet/functions/new.rb +100 -100
  150. data/lib/puppet/functions/partition.rb +4 -4
  151. data/lib/puppet/functions/require.rb +5 -5
  152. data/lib/puppet/functions/sort.rb +3 -3
  153. data/lib/puppet/functions/strftime.rb +1 -0
  154. data/lib/puppet/functions/tree_each.rb +7 -9
  155. data/lib/puppet/functions/type.rb +4 -4
  156. data/lib/puppet/functions/unwrap.rb +17 -2
  157. data/lib/puppet/functions/upcase.rb +2 -2
  158. data/lib/puppet/functions/versioncmp.rb +1 -1
  159. data/lib/puppet/generate/models/type/type.rb +1 -1
  160. data/lib/puppet/generate/type.rb +2 -2
  161. data/lib/puppet/gettext/config.rb +3 -3
  162. data/lib/puppet/gettext/module_translations.rb +1 -1
  163. data/lib/puppet/graph.rb +6 -6
  164. data/lib/puppet/graph/simple_graph.rb +2 -2
  165. data/lib/puppet/http.rb +26 -26
  166. data/lib/puppet/http/factory.rb +2 -2
  167. data/lib/puppet/http/proxy.rb +1 -1
  168. data/lib/puppet/http/resolver/server_list.rb +15 -4
  169. data/lib/puppet/http/service/compiler.rb +79 -2
  170. data/lib/puppet/http/service/file_server.rb +3 -2
  171. data/lib/puppet/indirector.rb +5 -5
  172. data/lib/puppet/indirector/catalog/compiler.rb +28 -9
  173. data/lib/puppet/indirector/catalog/json.rb +2 -2
  174. data/lib/puppet/indirector/catalog/msgpack.rb +2 -2
  175. data/lib/puppet/indirector/catalog/rest.rb +3 -2
  176. data/lib/puppet/indirector/catalog/store_configs.rb +2 -2
  177. data/lib/puppet/indirector/catalog/yaml.rb +2 -2
  178. data/lib/puppet/indirector/code.rb +1 -1
  179. data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
  180. data/lib/puppet/indirector/data_binding/none.rb +1 -1
  181. data/lib/puppet/indirector/direct_file_server.rb +2 -2
  182. data/lib/puppet/indirector/envelope.rb +1 -1
  183. data/lib/puppet/indirector/errors.rb +1 -1
  184. data/lib/puppet/indirector/exec.rb +2 -2
  185. data/lib/puppet/indirector/face.rb +1 -1
  186. data/lib/puppet/indirector/facts/facter.rb +2 -2
  187. data/lib/puppet/indirector/facts/json.rb +3 -3
  188. data/lib/puppet/indirector/facts/memory.rb +2 -2
  189. data/lib/puppet/indirector/facts/network_device.rb +2 -2
  190. data/lib/puppet/indirector/facts/rest.rb +2 -2
  191. data/lib/puppet/indirector/facts/store_configs.rb +2 -2
  192. data/lib/puppet/indirector/facts/yaml.rb +3 -3
  193. data/lib/puppet/indirector/file_bucket_file/file.rb +4 -4
  194. data/lib/puppet/indirector/file_bucket_file/rest.rb +2 -2
  195. data/lib/puppet/indirector/file_bucket_file/selector.rb +1 -1
  196. data/lib/puppet/indirector/file_content.rb +1 -1
  197. data/lib/puppet/indirector/file_content/file.rb +3 -3
  198. data/lib/puppet/indirector/file_content/file_server.rb +3 -3
  199. data/lib/puppet/indirector/file_content/rest.rb +3 -3
  200. data/lib/puppet/indirector/file_content/selector.rb +4 -4
  201. data/lib/puppet/indirector/file_metadata.rb +1 -1
  202. data/lib/puppet/indirector/file_metadata/file.rb +3 -3
  203. data/lib/puppet/indirector/file_metadata/file_server.rb +3 -3
  204. data/lib/puppet/indirector/file_metadata/http.rb +3 -3
  205. data/lib/puppet/indirector/file_metadata/rest.rb +4 -3
  206. data/lib/puppet/indirector/file_metadata/selector.rb +4 -4
  207. data/lib/puppet/indirector/file_server.rb +4 -4
  208. data/lib/puppet/indirector/generic_http.rb +1 -1
  209. data/lib/puppet/indirector/hiera.rb +1 -1
  210. data/lib/puppet/indirector/indirection.rb +5 -5
  211. data/lib/puppet/indirector/json.rb +2 -2
  212. data/lib/puppet/indirector/memory.rb +1 -1
  213. data/lib/puppet/indirector/msgpack.rb +2 -2
  214. data/lib/puppet/indirector/node/exec.rb +2 -2
  215. data/lib/puppet/indirector/node/json.rb +2 -2
  216. data/lib/puppet/indirector/node/memory.rb +2 -2
  217. data/lib/puppet/indirector/node/msgpack.rb +2 -2
  218. data/lib/puppet/indirector/node/plain.rb +2 -2
  219. data/lib/puppet/indirector/node/rest.rb +2 -2
  220. data/lib/puppet/indirector/node/store_configs.rb +2 -2
  221. data/lib/puppet/indirector/node/yaml.rb +2 -2
  222. data/lib/puppet/indirector/none.rb +1 -1
  223. data/lib/puppet/indirector/plain.rb +1 -1
  224. data/lib/puppet/indirector/report/json.rb +2 -2
  225. data/lib/puppet/indirector/report/msgpack.rb +2 -2
  226. data/lib/puppet/indirector/report/processor.rb +3 -3
  227. data/lib/puppet/indirector/report/rest.rb +1 -1
  228. data/lib/puppet/indirector/report/yaml.rb +2 -2
  229. data/lib/puppet/indirector/request.rb +3 -3
  230. data/lib/puppet/indirector/resource/ral.rb +7 -2
  231. data/lib/puppet/indirector/resource/store_configs.rb +2 -2
  232. data/lib/puppet/indirector/terminus.rb +9 -5
  233. data/lib/puppet/indirector/yaml.rb +2 -2
  234. data/lib/puppet/info_service.rb +3 -3
  235. data/lib/puppet/info_service/class_information_service.rb +3 -3
  236. data/lib/puppet/info_service/plan_information_service.rb +1 -1
  237. data/lib/puppet/info_service/task_information_service.rb +1 -1
  238. data/lib/puppet/interface.rb +10 -10
  239. data/lib/puppet/interface/documentation.rb +2 -1
  240. data/lib/puppet/loaders.rb +21 -21
  241. data/lib/puppet/metatype/manager.rb +3 -3
  242. data/lib/puppet/module.rb +4 -4
  243. data/lib/puppet/module/plan.rb +1 -2
  244. data/lib/puppet/module/task.rb +2 -2
  245. data/lib/puppet/module_tool.rb +10 -10
  246. data/lib/puppet/module_tool/applications.rb +7 -7
  247. data/lib/puppet/module_tool/applications/application.rb +2 -2
  248. data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
  249. data/lib/puppet/module_tool/applications/installer.rb +19 -11
  250. data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
  251. data/lib/puppet/module_tool/applications/upgrader.rb +5 -5
  252. data/lib/puppet/module_tool/checksums.rb +1 -1
  253. data/lib/puppet/module_tool/contents_description.rb +1 -1
  254. data/lib/puppet/module_tool/dependency.rb +2 -2
  255. data/lib/puppet/module_tool/errors.rb +6 -6
  256. data/lib/puppet/module_tool/errors/shared.rb +17 -0
  257. data/lib/puppet/module_tool/install_directory.rb +2 -2
  258. data/lib/puppet/module_tool/installed_modules.rb +2 -2
  259. data/lib/puppet/module_tool/local_tarball.rb +2 -2
  260. data/lib/puppet/module_tool/metadata.rb +3 -3
  261. data/lib/puppet/module_tool/tar.rb +4 -4
  262. data/lib/puppet/module_tool/tar/mini.rb +1 -1
  263. data/lib/puppet/network/format.rb +1 -1
  264. data/lib/puppet/network/format_handler.rb +3 -3
  265. data/lib/puppet/network/format_support.rb +1 -1
  266. data/lib/puppet/network/formats.rb +2 -2
  267. data/lib/puppet/network/http.rb +12 -12
  268. data/lib/puppet/network/http/api.rb +1 -1
  269. data/lib/puppet/network/http/api/indirected_routes.rb +2 -2
  270. data/lib/puppet/network/http/api/master.rb +1 -1
  271. data/lib/puppet/network/http/api/master/v3.rb +2 -2
  272. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
  273. data/lib/puppet/network/http/api/server/v3.rb +2 -2
  274. data/lib/puppet/network/http/api/server/v3/environments.rb +1 -1
  275. data/lib/puppet/network/http/connection.rb +1 -1
  276. data/lib/puppet/network/http/error.rb +1 -1
  277. data/lib/puppet/network/http/handler.rb +3 -3
  278. data/lib/puppet/network/http_pool.rb +1 -1
  279. data/lib/puppet/node.rb +3 -3
  280. data/lib/puppet/node/environment.rb +13 -14
  281. data/lib/puppet/node/facts.rb +3 -3
  282. data/lib/puppet/pal/pal_api.rb +10 -10
  283. data/lib/puppet/pal/pal_impl.rb +3 -3
  284. data/lib/puppet/parameter.rb +4 -4
  285. data/lib/puppet/parameter/boolean.rb +1 -1
  286. data/lib/puppet/parameter/package_options.rb +1 -1
  287. data/lib/puppet/parameter/path.rb +1 -1
  288. data/lib/puppet/parameter/value.rb +1 -1
  289. data/lib/puppet/parameter/value_collection.rb +1 -1
  290. data/lib/puppet/parser.rb +10 -10
  291. data/lib/puppet/parser/ast.rb +8 -8
  292. data/lib/puppet/parser/ast/hostclass.rb +1 -1
  293. data/lib/puppet/parser/ast/pops_bridge.rb +2 -2
  294. data/lib/puppet/parser/catalog_compiler.rb +2 -2
  295. data/lib/puppet/parser/compiler.rb +5 -5
  296. data/lib/puppet/parser/e4_parser_adapter.rb +1 -1
  297. data/lib/puppet/parser/functions.rb +4 -4
  298. data/lib/puppet/parser/functions/digest.rb +1 -1
  299. data/lib/puppet/parser/functions/file.rb +1 -1
  300. data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
  301. data/lib/puppet/parser/functions/versioncmp.rb +1 -1
  302. data/lib/puppet/parser/parser_factory.rb +2 -2
  303. data/lib/puppet/parser/resource.rb +3 -3
  304. data/lib/puppet/parser/scope.rb +3 -3
  305. data/lib/puppet/parser/script_compiler.rb +2 -2
  306. data/lib/puppet/parser/templatewrapper.rb +2 -2
  307. data/lib/puppet/parser/type_loader.rb +1 -1
  308. data/lib/puppet/plugins/configuration.rb +5 -5
  309. data/lib/puppet/pops.rb +57 -57
  310. data/lib/puppet/pops/evaluator/deferred_resolver.rb +1 -1
  311. data/lib/puppet/pops/evaluator/evaluator_impl.rb +7 -7
  312. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  313. data/lib/puppet/pops/loader/task_instantiator.rb +1 -1
  314. data/lib/puppet/pops/lookup/invocation.rb +1 -1
  315. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  316. data/lib/puppet/pops/model/pn_transformer.rb +1 -1
  317. data/lib/puppet/pops/parser/eparser.rb +2 -2
  318. data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
  319. data/lib/puppet/pops/parser/lexer2.rb +5 -5
  320. data/lib/puppet/pops/parser/lexer_support.rb +1 -1
  321. data/lib/puppet/pops/parser/parser_support.rb +4 -4
  322. data/lib/puppet/pops/puppet_stack.rb +1 -1
  323. data/lib/puppet/pops/serialization/json.rb +1 -1
  324. data/lib/puppet/pops/serialization/json_path.rb +1 -1
  325. data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
  326. data/lib/puppet/pops/time/timespan.rb +1 -1
  327. data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
  328. data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
  329. data/lib/puppet/pops/types/string_converter.rb +1 -1
  330. data/lib/puppet/pops/types/type_calculator.rb +1 -1
  331. data/lib/puppet/pops/types/type_formatter.rb +1 -1
  332. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  333. data/lib/puppet/pops/types/type_parser.rb +1 -1
  334. data/lib/puppet/pops/types/types.rb +1 -1
  335. data/lib/puppet/pops/validation/checker4_0.rb +1 -1
  336. data/lib/puppet/property.rb +3 -3
  337. data/lib/puppet/property/boolean.rb +1 -1
  338. data/lib/puppet/property/ensure.rb +1 -1
  339. data/lib/puppet/property/keyvalue.rb +1 -1
  340. data/lib/puppet/property/list.rb +1 -1
  341. data/lib/puppet/property/ordered_list.rb +1 -1
  342. data/lib/puppet/provider.rb +2 -2
  343. data/lib/puppet/provider/confine.rb +2 -2
  344. data/lib/puppet/provider/exec.rb +2 -2
  345. data/lib/puppet/provider/exec/posix.rb +17 -5
  346. data/lib/puppet/provider/exec/windows.rb +1 -1
  347. data/lib/puppet/provider/file/posix.rb +1 -1
  348. data/lib/puppet/provider/file/windows.rb +1 -1
  349. data/lib/puppet/provider/group/aix.rb +1 -1
  350. data/lib/puppet/provider/group/directoryservice.rb +1 -1
  351. data/lib/puppet/provider/group/groupadd.rb +2 -2
  352. data/lib/puppet/provider/group/ldap.rb +1 -1
  353. data/lib/puppet/provider/group/pw.rb +1 -1
  354. data/lib/puppet/provider/group/windows_adsi.rb +1 -1
  355. data/lib/puppet/provider/ldap.rb +2 -2
  356. data/lib/puppet/provider/nameservice.rb +1 -1
  357. data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
  358. data/lib/puppet/provider/nameservice/objectadd.rb +1 -1
  359. data/lib/puppet/provider/nameservice/pw.rb +1 -1
  360. data/lib/puppet/provider/package.rb +1 -1
  361. data/lib/puppet/provider/package/aix.rb +2 -2
  362. data/lib/puppet/provider/package/appdmg.rb +2 -2
  363. data/lib/puppet/provider/package/apple.rb +1 -1
  364. data/lib/puppet/provider/package/apt.rb +5 -5
  365. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  366. data/lib/puppet/provider/package/dpkg.rb +1 -1
  367. data/lib/puppet/provider/package/gem.rb +3 -3
  368. data/lib/puppet/provider/package/hpux.rb +1 -1
  369. data/lib/puppet/provider/package/macports.rb +2 -2
  370. data/lib/puppet/provider/package/nim.rb +13 -8
  371. data/lib/puppet/provider/package/openbsd.rb +1 -1
  372. data/lib/puppet/provider/package/opkg.rb +1 -1
  373. data/lib/puppet/provider/package/pacman.rb +1 -1
  374. data/lib/puppet/provider/package/pip.rb +18 -6
  375. data/lib/puppet/provider/package/pkg.rb +10 -3
  376. data/lib/puppet/provider/package/pkgdmg.rb +3 -3
  377. data/lib/puppet/provider/package/pkgin.rb +1 -1
  378. data/lib/puppet/provider/package/pkgng.rb +1 -1
  379. data/lib/puppet/provider/package/portage.rb +1 -1
  380. data/lib/puppet/provider/package/portupgrade.rb +1 -1
  381. data/lib/puppet/provider/package/puppetserver_gem.rb +0 -0
  382. data/lib/puppet/provider/package/rpm.rb +2 -2
  383. data/lib/puppet/provider/package/sun.rb +1 -1
  384. data/lib/puppet/provider/package/windows.rb +17 -4
  385. data/lib/puppet/provider/package/windows/exe_package.rb +31 -2
  386. data/lib/puppet/provider/package/windows/msi_package.rb +1 -1
  387. data/lib/puppet/provider/package/windows/package.rb +6 -5
  388. data/lib/puppet/provider/package/yum.rb +6 -6
  389. data/lib/puppet/provider/package/zypper.rb +3 -3
  390. data/lib/puppet/provider/package_targetable.rb +1 -1
  391. data/lib/puppet/provider/parsedfile.rb +6 -3
  392. data/lib/puppet/provider/service/base.rb +6 -4
  393. data/lib/puppet/provider/service/daemontools.rb +0 -1
  394. data/lib/puppet/provider/service/debian.rb +3 -5
  395. data/lib/puppet/provider/service/freebsd.rb +1 -1
  396. data/lib/puppet/provider/service/init.rb +1 -1
  397. data/lib/puppet/provider/service/launchd.rb +10 -4
  398. data/lib/puppet/provider/service/service.rb +28 -3
  399. data/lib/puppet/provider/service/smf.rb +0 -24
  400. data/lib/puppet/provider/service/src.rb +2 -2
  401. data/lib/puppet/provider/service/systemd.rb +18 -8
  402. data/lib/puppet/provider/service/windows.rb +38 -0
  403. data/lib/puppet/provider/user/aix.rb +2 -2
  404. data/lib/puppet/provider/user/directoryservice.rb +26 -13
  405. data/lib/puppet/provider/user/ldap.rb +1 -1
  406. data/lib/puppet/provider/user/openbsd.rb +1 -1
  407. data/lib/puppet/provider/user/pw.rb +1 -1
  408. data/lib/puppet/provider/user/user_role_add.rb +2 -2
  409. data/lib/puppet/provider/user/useradd.rb +45 -12
  410. data/lib/puppet/provider/user/windows_adsi.rb +1 -1
  411. data/lib/puppet/reference/configuration.rb +1 -1
  412. data/lib/puppet/reference/indirection.rb +4 -4
  413. data/lib/puppet/reference/report.rb +1 -1
  414. data/lib/puppet/reports.rb +1 -1
  415. data/lib/puppet/reports/http.rb +2 -2
  416. data/lib/puppet/reports/log.rb +1 -1
  417. data/lib/puppet/reports/store.rb +2 -2
  418. data/lib/puppet/resource.rb +4 -4
  419. data/lib/puppet/resource/catalog.rb +5 -5
  420. data/lib/puppet/resource/status.rb +2 -2
  421. data/lib/puppet/resource/type.rb +4 -4
  422. data/lib/puppet/resource/type_collection.rb +6 -4
  423. data/lib/puppet/runtime.rb +1 -1
  424. data/lib/puppet/scheduler.rb +4 -4
  425. data/lib/puppet/settings.rb +58 -35
  426. data/lib/puppet/settings/autosign_setting.rb +1 -1
  427. data/lib/puppet/settings/base_setting.rb +2 -2
  428. data/lib/puppet/settings/certificate_revocation_setting.rb +1 -1
  429. data/lib/puppet/settings/config_file.rb +2 -9
  430. data/lib/puppet/settings/errors.rb +1 -1
  431. data/lib/puppet/settings/priority_setting.rb +3 -3
  432. data/lib/puppet/settings/value_translator.rb +0 -1
  433. data/lib/puppet/ssl.rb +11 -11
  434. data/lib/puppet/ssl/base.rb +3 -3
  435. data/lib/puppet/ssl/certificate.rb +1 -1
  436. data/lib/puppet/ssl/certificate_request.rb +2 -2
  437. data/lib/puppet/ssl/certificate_request_attributes.rb +2 -2
  438. data/lib/puppet/ssl/oids.rb +1 -1
  439. data/lib/puppet/ssl/openssl_loader.rb +1 -1
  440. data/lib/puppet/ssl/ssl_context.rb +1 -1
  441. data/lib/puppet/ssl/ssl_provider.rb +1 -1
  442. data/lib/puppet/ssl/state_machine.rb +2 -2
  443. data/lib/puppet/ssl/verifier.rb +5 -1
  444. data/lib/puppet/syntax_checkers/base64.rb +1 -1
  445. data/lib/puppet/syntax_checkers/epp.rb +1 -1
  446. data/lib/puppet/syntax_checkers/json.rb +1 -1
  447. data/lib/puppet/syntax_checkers/pp.rb +1 -1
  448. data/lib/puppet/transaction.rb +11 -11
  449. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  450. data/lib/puppet/transaction/event.rb +4 -4
  451. data/lib/puppet/transaction/event_manager.rb +1 -1
  452. data/lib/puppet/transaction/persistence.rb +12 -2
  453. data/lib/puppet/transaction/report.rb +17 -3
  454. data/lib/puppet/transaction/resource_harness.rb +1 -1
  455. data/lib/puppet/type.rb +15 -15
  456. data/lib/puppet/type/component.rb +3 -3
  457. data/lib/puppet/type/exec.rb +26 -4
  458. data/lib/puppet/type/file.rb +43 -25
  459. data/lib/puppet/type/file/checksum.rb +1 -1
  460. data/lib/puppet/type/file/checksum_value.rb +2 -2
  461. data/lib/puppet/type/file/content.rb +2 -2
  462. data/lib/puppet/type/file/data_sync.rb +2 -2
  463. data/lib/puppet/type/file/ensure.rb +1 -1
  464. data/lib/puppet/type/file/group.rb +1 -1
  465. data/lib/puppet/type/file/mode.rb +7 -1
  466. data/lib/puppet/type/file/selcontext.rb +2 -2
  467. data/lib/puppet/type/file/source.rb +4 -4
  468. data/lib/puppet/type/filebucket.rb +3 -3
  469. data/lib/puppet/type/group.rb +2 -2
  470. data/lib/puppet/type/package.rb +2 -2
  471. data/lib/puppet/type/resources.rb +2 -2
  472. data/lib/puppet/type/service.rb +18 -38
  473. data/lib/puppet/type/tidy.rb +25 -6
  474. data/lib/puppet/type/user.rb +43 -25
  475. data/lib/puppet/util.rb +43 -34
  476. data/lib/puppet/util/at_fork.rb +3 -3
  477. data/lib/puppet/util/at_fork/solaris.rb +1 -1
  478. data/lib/puppet/util/autoload.rb +4 -4
  479. data/lib/puppet/util/checksums.rb +3 -3
  480. data/lib/puppet/util/colors.rb +1 -1
  481. data/lib/puppet/util/command_line.rb +6 -6
  482. data/lib/puppet/util/command_line/puppet_option_parser.rb +2 -2
  483. data/lib/puppet/util/execution.rb +2 -2
  484. data/lib/puppet/util/feature.rb +2 -2
  485. data/lib/puppet/util/filetype.rb +1 -1
  486. data/lib/puppet/util/http_proxy.rb +1 -1
  487. data/lib/puppet/util/inifile.rb +2 -2
  488. data/lib/puppet/util/instance_loader.rb +3 -3
  489. data/lib/puppet/util/json_lockfile.rb +1 -1
  490. data/lib/puppet/util/ldap/connection.rb +1 -1
  491. data/lib/puppet/util/ldap/generator.rb +1 -1
  492. data/lib/puppet/util/ldap/manager.rb +3 -3
  493. data/lib/puppet/util/limits.rb +1 -1
  494. data/lib/puppet/util/log.rb +6 -6
  495. data/lib/puppet/util/log/destinations.rb +1 -1
  496. data/lib/puppet/util/logging.rb +2 -2
  497. data/lib/puppet/util/metric.rb +2 -2
  498. data/lib/puppet/util/monkey_patches.rb +9 -20
  499. data/lib/puppet/util/network_device/base.rb +3 -3
  500. data/lib/puppet/util/network_device/config.rb +2 -2
  501. data/lib/puppet/util/network_device/transport.rb +1 -1
  502. data/lib/puppet/util/network_device/transport/base.rb +2 -2
  503. data/lib/puppet/util/package/version/range.rb +6 -6
  504. data/lib/puppet/util/package/version/range/eq.rb +1 -1
  505. data/lib/puppet/util/package/version/range/gt.rb +1 -1
  506. data/lib/puppet/util/package/version/range/gt_eq.rb +1 -1
  507. data/lib/puppet/util/package/version/range/lt.rb +1 -1
  508. data/lib/puppet/util/package/version/range/lt_eq.rb +1 -1
  509. data/lib/puppet/util/package/version/range/min_max.rb +1 -1
  510. data/lib/puppet/util/package/version/range/simple.rb +1 -1
  511. data/lib/puppet/util/package/version/rpm.rb +1 -1
  512. data/lib/puppet/util/pidlock.rb +1 -1
  513. data/lib/puppet/util/plist.rb +1 -1
  514. data/lib/puppet/util/posix.rb +1 -1
  515. data/lib/puppet/util/profiler.rb +3 -3
  516. data/lib/puppet/util/profiler/aggregate.rb +2 -2
  517. data/lib/puppet/util/profiler/object_counts.rb +1 -1
  518. data/lib/puppet/util/profiler/wall_clock.rb +1 -1
  519. data/lib/puppet/util/provider_features.rb +2 -2
  520. data/lib/puppet/util/rdoc.rb +2 -2
  521. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
  522. data/lib/puppet/util/rdoc/parser.rb +6 -6
  523. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
  524. data/lib/puppet/util/reference.rb +1 -1
  525. data/lib/puppet/util/resource_template.rb +2 -2
  526. data/lib/puppet/util/rubygems.rb +1 -1
  527. data/lib/puppet/util/selinux.rb +30 -4
  528. data/lib/puppet/util/skip_tags.rb +1 -1
  529. data/lib/puppet/util/storage.rb +1 -1
  530. data/lib/puppet/util/suidmanager.rb +2 -2
  531. data/lib/puppet/util/symbolic_file_mode.rb +30 -18
  532. data/lib/puppet/util/tag_set.rb +1 -1
  533. data/lib/puppet/util/tagging.rb +1 -1
  534. data/lib/puppet/util/watched_file.rb +1 -1
  535. data/lib/puppet/util/watcher.rb +3 -3
  536. data/lib/puppet/util/windows.rb +20 -20
  537. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  538. data/lib/puppet/util/windows/adsi.rb +1 -1
  539. data/lib/puppet/util/windows/daemon.rb +1 -1
  540. data/lib/puppet/util/windows/error.rb +2 -2
  541. data/lib/puppet/util/windows/file.rb +1 -1
  542. data/lib/puppet/util/windows/monkey_patches/process.rb +2 -2
  543. data/lib/puppet/util/windows/principal.rb +1 -1
  544. data/lib/puppet/util/windows/process.rb +2 -2
  545. data/lib/puppet/util/windows/registry.rb +1 -1
  546. data/lib/puppet/util/windows/root_certs.rb +2 -2
  547. data/lib/puppet/util/windows/security.rb +1 -1
  548. data/lib/puppet/util/windows/security_descriptor.rb +1 -1
  549. data/lib/puppet/util/windows/service.rb +1 -1
  550. data/lib/puppet/util/windows/sid.rb +4 -2
  551. data/lib/puppet/util/windows/user.rb +1 -1
  552. data/lib/puppet/vendor.rb +1 -1
  553. data/lib/puppet/version.rb +1 -1
  554. data/lib/puppet/x509.rb +4 -4
  555. data/lib/puppet/x509/cert_provider.rb +4 -22
  556. data/lib/puppet/x509/pem_store.rb +1 -1
  557. data/lib/puppet_pal.rb +2 -2
  558. data/locales/puppet.pot +441 -357
  559. data/man/man5/puppet.conf.5 +322 -264
  560. data/man/man8/puppet-agent.8 +1 -1
  561. data/man/man8/puppet-apply.8 +1 -1
  562. data/man/man8/puppet-catalog.8 +9 -9
  563. data/man/man8/puppet-config.8 +1 -1
  564. data/man/man8/puppet-describe.8 +1 -1
  565. data/man/man8/puppet-device.8 +1 -1
  566. data/man/man8/puppet-doc.8 +1 -1
  567. data/man/man8/puppet-epp.8 +1 -1
  568. data/man/man8/puppet-facts.8 +7 -7
  569. data/man/man8/puppet-filebucket.8 +1 -1
  570. data/man/man8/puppet-generate.8 +1 -1
  571. data/man/man8/puppet-help.8 +1 -1
  572. data/man/man8/puppet-lookup.8 +1 -1
  573. data/man/man8/puppet-module.8 +3 -3
  574. data/man/man8/puppet-node.8 +5 -5
  575. data/man/man8/puppet-parser.8 +1 -1
  576. data/man/man8/puppet-plugin.8 +1 -1
  577. data/man/man8/puppet-report.8 +5 -5
  578. data/man/man8/puppet-resource.8 +1 -1
  579. data/man/man8/puppet-script.8 +1 -1
  580. data/man/man8/puppet-ssl.8 +1 -1
  581. data/man/man8/puppet.8 +2 -2
  582. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  583. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  584. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  585. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  586. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
  587. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  588. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  589. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  590. data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
  591. data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
  592. data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
  593. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
  594. data/spec/fixtures/ssl/ca.pem +57 -35
  595. data/spec/fixtures/ssl/crl.pem +28 -18
  596. data/spec/fixtures/ssl/ec-key-openssl.pem +8 -0
  597. data/spec/fixtures/ssl/ec-key-pk8.pem +5 -0
  598. data/spec/fixtures/ssl/ec-key.pem +11 -11
  599. data/spec/fixtures/ssl/ec.pem +33 -24
  600. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  601. data/spec/fixtures/ssl/encrypted-key.pem +108 -58
  602. data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
  603. data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
  604. data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
  605. data/spec/fixtures/ssl/intermediate.pem +57 -36
  606. data/spec/fixtures/ssl/oid-key.pem +117 -0
  607. data/spec/fixtures/ssl/oid.pem +69 -0
  608. data/spec/fixtures/ssl/pluto-key.pem +107 -57
  609. data/spec/fixtures/ssl/pluto.pem +52 -30
  610. data/spec/fixtures/ssl/request-key.pem +107 -57
  611. data/spec/fixtures/ssl/request.pem +47 -26
  612. data/spec/fixtures/ssl/revoked-key.pem +107 -57
  613. data/spec/fixtures/ssl/revoked.pem +52 -30
  614. data/spec/fixtures/ssl/signed-key.pem +107 -57
  615. data/spec/fixtures/ssl/signed.pem +52 -30
  616. data/spec/fixtures/ssl/tampered-cert.pem +52 -30
  617. data/spec/fixtures/ssl/tampered-csr.pem +47 -26
  618. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
  619. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
  620. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
  621. data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
  622. data/spec/fixtures/ssl/unknown-ca.pem +55 -33
  623. data/spec/integration/application/agent_spec.rb +102 -52
  624. data/spec/integration/application/filebucket_spec.rb +16 -0
  625. data/spec/integration/application/module_spec.rb +21 -0
  626. data/spec/integration/application/resource_spec.rb +64 -0
  627. data/spec/integration/application/ssl_spec.rb +20 -0
  628. data/spec/integration/configurer_spec.rb +17 -1
  629. data/spec/integration/defaults_spec.rb +5 -0
  630. data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
  631. data/spec/integration/indirector/facts/facter_spec.rb +90 -36
  632. data/spec/integration/l10n/compiler_spec.rb +37 -0
  633. data/spec/integration/type/exec_spec.rb +70 -45
  634. data/spec/integration/type/file_spec.rb +5 -5
  635. data/spec/lib/puppet/test_ca.rb +7 -2
  636. data/spec/lib/puppet_spec/files.rb +1 -1
  637. data/spec/lib/puppet_spec/modules.rb +13 -2
  638. data/spec/lib/puppet_spec/puppetserver.rb +15 -0
  639. data/spec/lib/puppet_spec/settings.rb +1 -0
  640. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  641. data/spec/shared_contexts/l10n.rb +27 -0
  642. data/spec/shared_contexts/provider.rb +16 -0
  643. data/spec/spec_helper.rb +1 -10
  644. data/spec/unit/application/agent_spec.rb +7 -2
  645. data/spec/unit/configurer/downloader_spec.rb +6 -0
  646. data/spec/unit/configurer_spec.rb +288 -54
  647. data/spec/unit/environments_spec.rb +184 -0
  648. data/spec/unit/file_bucket/dipper_spec.rb +1 -1
  649. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
  650. data/spec/unit/file_serving/configuration_spec.rb +12 -4
  651. data/spec/unit/file_serving/fileset_spec.rb +60 -0
  652. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  653. data/spec/unit/file_system_spec.rb +6 -0
  654. data/spec/unit/functions/assert_type_spec.rb +1 -1
  655. data/spec/unit/functions/empty_spec.rb +10 -0
  656. data/spec/unit/functions/logging_spec.rb +1 -0
  657. data/spec/unit/functions/lookup_spec.rb +23 -0
  658. data/spec/unit/functions/unwrap_spec.rb +8 -0
  659. data/spec/unit/functions4_spec.rb +19 -10
  660. data/spec/unit/gettext/config_spec.rb +12 -0
  661. data/spec/unit/http/service/compiler_spec.rb +131 -0
  662. data/spec/unit/indirector/catalog/compiler_spec.rb +101 -10
  663. data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
  664. data/spec/unit/indirector/resource/ral_spec.rb +40 -75
  665. data/spec/unit/interface/action_spec.rb +0 -9
  666. data/spec/unit/module_spec.rb +14 -0
  667. data/spec/unit/module_tool/applications/installer_spec.rb +52 -14
  668. data/spec/unit/parser/compiler_spec.rb +29 -0
  669. data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
  670. data/spec/unit/parser/templatewrapper_spec.rb +12 -2
  671. data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -9
  672. data/spec/unit/pops/lookup/context_spec.rb +1 -1
  673. data/spec/unit/pops/parser/lexer2_spec.rb +0 -4
  674. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
  675. data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
  676. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
  677. data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
  678. data/spec/unit/provider/package/dnfmodule_spec.rb +3 -3
  679. data/spec/unit/provider/package/gem_spec.rb +3 -1
  680. data/spec/unit/provider/package/nim_spec.rb +42 -0
  681. data/spec/unit/provider/package/pip2_spec.rb +3 -1
  682. data/spec/unit/provider/package/pip3_spec.rb +3 -1
  683. data/spec/unit/provider/package/pip_spec.rb +40 -1
  684. data/spec/unit/provider/package/pkg_spec.rb +63 -49
  685. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -1
  686. data/spec/unit/provider/package/puppetserver_gem_spec.rb +2 -0
  687. data/spec/unit/provider/package/windows/exe_package_spec.rb +17 -0
  688. data/spec/unit/provider/parsedfile_spec.rb +10 -0
  689. data/spec/unit/provider/service/base_spec.rb +8 -8
  690. data/spec/unit/provider/service/bsd_spec.rb +0 -4
  691. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  692. data/spec/unit/provider/service/debian_spec.rb +15 -17
  693. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  694. data/spec/unit/provider/service/gentoo_spec.rb +19 -14
  695. data/spec/unit/provider/service/init_spec.rb +29 -20
  696. data/spec/unit/provider/service/launchd_spec.rb +21 -12
  697. data/spec/unit/provider/service/openbsd_spec.rb +21 -35
  698. data/spec/unit/provider/service/openrc_spec.rb +15 -14
  699. data/spec/unit/provider/service/openwrt_spec.rb +3 -1
  700. data/spec/unit/provider/service/redhat_spec.rb +20 -19
  701. data/spec/unit/provider/service/smf_spec.rb +6 -5
  702. data/spec/unit/provider/service/src_spec.rb +5 -10
  703. data/spec/unit/provider/service/systemd_spec.rb +70 -30
  704. data/spec/unit/provider/service/upstart_spec.rb +25 -20
  705. data/spec/unit/provider/service/windows_spec.rb +202 -0
  706. data/spec/unit/provider/user/directoryservice_spec.rb +67 -35
  707. data/spec/unit/provider/user/useradd_spec.rb +3 -2
  708. data/spec/unit/resource/catalog_spec.rb +1 -1
  709. data/spec/unit/resource/type_collection_spec.rb +16 -0
  710. data/spec/unit/resource/type_spec.rb +2 -2
  711. data/spec/unit/settings/config_file_spec.rb +1 -11
  712. data/spec/unit/settings/value_translator_spec.rb +4 -5
  713. data/spec/unit/settings_spec.rb +120 -79
  714. data/spec/unit/ssl/ssl_provider_spec.rb +18 -16
  715. data/spec/unit/ssl/state_machine_spec.rb +19 -5
  716. data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
  717. data/spec/unit/transaction_spec.rb +18 -20
  718. data/spec/unit/type/exec_spec.rb +76 -29
  719. data/spec/unit/type/file/selinux_spec.rb +3 -3
  720. data/spec/unit/type/file/source_spec.rb +4 -4
  721. data/spec/unit/type/service_spec.rb +59 -188
  722. data/spec/unit/type/tidy_spec.rb +24 -7
  723. data/spec/unit/type/user_spec.rb +45 -0
  724. data/spec/unit/util/at_fork_spec.rb +9 -9
  725. data/spec/unit/util/ldap/connection_spec.rb +10 -10
  726. data/spec/unit/util/ldap/manager_spec.rb +2 -2
  727. data/spec/unit/util/posix_spec.rb +1 -1
  728. data/spec/unit/util/selinux_spec.rb +87 -16
  729. data/spec/unit/util/windows/sid_spec.rb +39 -4
  730. data/spec/unit/util_spec.rb +1 -3
  731. data/spec/unit/x509/cert_provider_spec.rb +9 -1
  732. data/tasks/generate_cert_fixtures.rake +12 -3
  733. metadata +52 -95
  734. data/ext/README.environment +0 -8
  735. data/ext/dbfix.sql +0 -132
  736. data/ext/debian/README.Debian +0 -8
  737. data/ext/debian/README.source +0 -2
  738. data/ext/debian/TODO.Debian +0 -1
  739. data/ext/debian/changelog.erb +0 -1122
  740. data/ext/debian/compat +0 -1
  741. data/ext/debian/control +0 -144
  742. data/ext/debian/copyright +0 -339
  743. data/ext/debian/docs +0 -1
  744. data/ext/debian/fileserver.conf +0 -41
  745. data/ext/debian/puppet-common.dirs +0 -13
  746. data/ext/debian/puppet-common.install +0 -3
  747. data/ext/debian/puppet-common.lintian-overrides +0 -5
  748. data/ext/debian/puppet-common.manpages +0 -28
  749. data/ext/debian/puppet-common.postinst +0 -35
  750. data/ext/debian/puppet-common.postrm +0 -33
  751. data/ext/debian/puppet-el.dirs +0 -1
  752. data/ext/debian/puppet-el.emacsen-install +0 -25
  753. data/ext/debian/puppet-el.emacsen-remove +0 -11
  754. data/ext/debian/puppet-el.emacsen-startup +0 -9
  755. data/ext/debian/puppet-el.install +0 -1
  756. data/ext/debian/puppet-testsuite.install +0 -2
  757. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  758. data/ext/debian/puppet.lintian-overrides +0 -3
  759. data/ext/debian/puppet.logrotate +0 -20
  760. data/ext/debian/puppet.postinst +0 -20
  761. data/ext/debian/puppet.postrm +0 -20
  762. data/ext/debian/puppet.preinst +0 -20
  763. data/ext/debian/puppetmaster-common.install +0 -2
  764. data/ext/debian/puppetmaster-common.manpages +0 -2
  765. data/ext/debian/puppetmaster-common.postinst +0 -6
  766. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  767. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  768. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  769. data/ext/debian/puppetmaster.README.debian +0 -17
  770. data/ext/debian/puppetmaster.default +0 -14
  771. data/ext/debian/puppetmaster.init +0 -137
  772. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  773. data/ext/debian/puppetmaster.postinst +0 -20
  774. data/ext/debian/puppetmaster.postrm +0 -5
  775. data/ext/debian/puppetmaster.preinst +0 -22
  776. data/ext/debian/rules +0 -132
  777. data/ext/debian/source/format +0 -1
  778. data/ext/debian/source/options +0 -1
  779. data/ext/debian/vim-puppet.README.Debian +0 -13
  780. data/ext/debian/vim-puppet.dirs +0 -5
  781. data/ext/debian/vim-puppet.yaml +0 -7
  782. data/ext/debian/watch +0 -2
  783. data/ext/freebsd/puppetd +0 -26
  784. data/ext/freebsd/puppetmasterd +0 -26
  785. data/ext/gentoo/conf.d/puppet +0 -5
  786. data/ext/gentoo/conf.d/puppetmaster +0 -12
  787. data/ext/gentoo/init.d/puppet +0 -38
  788. data/ext/gentoo/init.d/puppetmaster +0 -51
  789. data/ext/gentoo/puppet/fileserver.conf +0 -41
  790. data/ext/ips/puppet-agent +0 -44
  791. data/ext/ips/puppet-master +0 -44
  792. data/ext/ips/puppet.p5m.erb +0 -12
  793. data/ext/ips/puppetagent.xml +0 -42
  794. data/ext/ips/puppetmaster.xml +0 -42
  795. data/ext/ips/rules +0 -19
  796. data/ext/ips/transforms +0 -34
  797. data/ext/ldap/puppet.schema +0 -24
  798. data/ext/logcheck/puppet +0 -23
  799. data/ext/osx/file_mapping.yaml +0 -28
  800. data/ext/osx/postflight.erb +0 -109
  801. data/ext/osx/preflight.erb +0 -52
  802. data/ext/osx/prototype.plist.erb +0 -38
  803. data/ext/redhat/fileserver.conf +0 -41
  804. data/ext/redhat/logrotate +0 -21
  805. data/ext/redhat/puppet.spec.erb +0 -841
  806. data/ext/redhat/server.init +0 -128
  807. data/ext/redhat/server.sysconfig +0 -13
  808. data/ext/solaris/pkginfo +0 -6
  809. data/ext/solaris/smf/puppetd.xml +0 -77
  810. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  811. data/ext/solaris/smf/svc-puppetd +0 -71
  812. data/ext/solaris/smf/svc-puppetmasterd +0 -67
  813. data/ext/suse/puppet.spec +0 -310
  814. data/ext/suse/server.init +0 -173
  815. data/ext/yaml_nodes.rb +0 -105
  816. data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -1,6 +1,6 @@
1
1
  # Manage a collection of confines, returning a boolean or
2
2
  # helpful information.
3
- require 'puppet/confine'
3
+ require_relative '../puppet/confine'
4
4
 
5
5
  class Puppet::ConfineCollection
6
6
  def confine(hash)
@@ -1,4 +1,4 @@
1
- require 'puppet/confine_collection'
1
+ require_relative '../puppet/confine_collection'
2
2
 
3
3
  # The Confiner module contains methods for managing a Provider's confinement (suitability under given
4
4
  # conditions). The intent is to include this module in an object where confinement management is wanted.
@@ -1,4 +1,4 @@
1
- require 'puppet/thread_local'
1
+ require_relative '../puppet/thread_local'
2
2
 
3
3
  # Puppet::Context is a system for tracking services and contextual information
4
4
  # that puppet needs to be able to run. Values are "bound" in a context when it is created
@@ -11,7 +11,7 @@ require 'puppet/thread_local'
11
11
  #
12
12
  # @api private
13
13
  class Puppet::Context
14
- require 'puppet/context/trusted_information'
14
+ require_relative 'context/trusted_information'
15
15
 
16
16
  class UndefinedBindingError < Puppet::Error; end
17
17
  class StackUnderflow < Puppet::Error; end
@@ -1,4 +1,4 @@
1
- require 'puppet/trusted_external'
1
+ require_relative '../../puppet/trusted_external'
2
2
 
3
3
  # @api private
4
4
  class Puppet::Context::TrustedInformation
data/lib/puppet/daemon.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'puppet/application'
2
- require 'puppet/scheduler'
1
+ require_relative '../puppet/application'
2
+ require_relative '../puppet/scheduler'
3
3
 
4
4
  # Run periodic actions in a daemonized process.
5
5
  #
@@ -1,4 +1,4 @@
1
- require 'puppet/indirector'
1
+ require_relative '../puppet/indirector'
2
2
 
3
3
  # A class for managing data lookups
4
4
  class Puppet::DataBinding
@@ -15,7 +15,7 @@ Puppet::DataTypes.create_type('Error') do
15
15
  }
16
16
  PUPPET
17
17
 
18
- require 'puppet/datatypes/impl/error'
18
+ require_relative '../../puppet/datatypes/impl/error'
19
19
 
20
20
  implementation_class Puppet::DataTypes::Error
21
21
  end
@@ -1,4 +1,4 @@
1
- require 'puppet/util/platform'
1
+ require_relative '../puppet/util/platform'
2
2
 
3
3
  module Puppet
4
4
 
@@ -199,7 +199,7 @@ module Puppet
199
199
 
200
200
  The strictness level is for both language semantics and runtime
201
201
  evaluation validation. In addition to controlling the behavior with
202
- this master switch some individual warnings may also be controlled
202
+ this primary server switch some individual warnings may also be controlled
203
203
  by the disable_warnings setting.
204
204
 
205
205
  No new validations will be added to a micro (x.y.z) release,
@@ -219,7 +219,7 @@ module Puppet
219
219
  as well as any translations in the report and CLI.",
220
220
  :hook => proc do |value|
221
221
  if value
222
- require 'puppet/gettext/stubs'
222
+ require_relative '../puppet/gettext/stubs'
223
223
  Puppet::GettextConfig.disable_gettext
224
224
  end
225
225
  end
@@ -268,7 +268,7 @@ module Puppet
268
268
  :default => true,
269
269
  :type => :boolean,
270
270
  :desc => "Whether to compile a [static catalog](https://puppet.com/docs/puppet/latest/static_catalogs.html#enabling-or-disabling-static-catalogs),
271
- which occurs only on a Puppet Server master when the `code-id-command` and
271
+ which occurs only on Puppet Server when the `code-id-command` and
272
272
  `code-content-command` settings are configured in its `puppetserver.conf` file.",
273
273
  },
274
274
  :settings_catalog => {
@@ -391,13 +391,13 @@ module Puppet
391
391
  :default => "production",
392
392
  :desc => "The environment in which Puppet is running. For clients,
393
393
  such as `puppet agent`, this determines the environment itself, which
394
- Puppet uses to find modules and much more. For servers, such as `puppet master`,
394
+ Puppet uses to find modules and much more. For servers, such as `puppet server`,
395
395
  this provides the default environment for nodes that Puppet knows nothing about.
396
396
 
397
397
  When defining an environment in the `[agent]` section, this refers to the
398
- environment that the agent requests from the master. The environment doesn't
398
+ environment that the agent requests from the primary server. The environment doesn't
399
399
  have to exist on the local filesystem because the agent fetches it from the
400
- master. This definition is used when running `puppet agent`.
400
+ primary server. This definition is used when running `puppet agent`.
401
401
 
402
402
  When defined in the `[user]` section, the environment refers to the path that
403
403
  Puppet uses to search for code and modules related to its execution. This
@@ -478,6 +478,7 @@ module Puppet
478
478
  },
479
479
  :maximum_uid => {
480
480
  :default => 4294967290,
481
+ :type => :integer,
481
482
  :desc => "The maximum allowed UID. Some platforms use negative UIDs
482
483
  but then ship with tools that do not know how to handle signed ints,
483
484
  so the UIDs show up as huge numbers that can then not be fed back into
@@ -615,6 +616,7 @@ module Puppet
615
616
  },
616
617
  :http_proxy_port => {
617
618
  :default => 3128,
619
+ :type => :port,
618
620
  :desc => "The HTTP proxy port to use for outgoing connections",
619
621
  },
620
622
  :http_proxy_user => {
@@ -789,7 +791,7 @@ Valid values are 0 (never cache) and 15 (15 second minimum wait time).
789
791
  :certname => {
790
792
  :default => lambda { Puppet::Settings.default_certname.downcase },
791
793
  :desc => "The name to use when handling certificates. When a node
792
- requests a certificate from the CA puppet master, it uses the value of the
794
+ requests a certificate from the CA Puppet Server, it uses the value of the
793
795
  `certname` setting as its requested Subject CN.
794
796
 
795
797
  This is the name used when managing a node's permissions in
@@ -837,8 +839,8 @@ names.
837
839
  **Note:** The list of alternate names is locked in when the server's
838
840
  certificate is signed. If you need to change the list later, you can't just
839
841
  change this setting; you also need to regenerate the certificate. For more
840
- information on that process, see the [cert regen docs]
841
- (https://puppet.com/docs/puppet/latest/ssl_regenerate_certificates.html).
842
+ information on that process, see the
843
+ [cert regen docs](https://puppet.com/docs/puppet/latest/ssl_regenerate_certificates.html).
842
844
 
843
845
  To see all the alternate names your servers are using, log into your CA server
844
846
  and run `puppetserver ca list --all`, then check the output for `(alt names: ...)`.
@@ -852,7 +854,7 @@ EOT
852
854
  :desc => <<EOT
853
855
  An optional file containing custom attributes to add to certificate signing
854
856
  requests (CSRs). You should ensure that this file does not exist on your CA
855
- puppet master; if it does, unwanted certificate extensions may leak into
857
+ Puppet Server; if it does, unwanted certificate extensions may leak into
856
858
  certificates created with the `puppetserver ca generate` command.
857
859
 
858
860
  If present, this file must be a YAML hash containing a `custom_attributes` key
@@ -1141,7 +1143,7 @@ EOT
1141
1143
  :default => "$confdir/autosign.conf",
1142
1144
  :type => :autosign,
1143
1145
  :desc => "Whether (and how) to autosign certificate requests. This setting
1144
- is only relevant on a puppet master acting as a certificate authority (CA).
1146
+ is only relevant on a Puppet Server acting as a certificate authority (CA).
1145
1147
 
1146
1148
  Valid values are true (autosigns all certificate requests; not recommended),
1147
1149
  false (disables autosigning certificates), or the absolute path to a file.
@@ -1152,7 +1154,7 @@ EOT
1152
1154
  file, it will be treated as a policy executable; otherwise, it will be
1153
1155
  treated as a config file.
1154
1156
 
1155
- If a custom policy executable is configured, the CA puppet master will run it
1157
+ If a custom policy executable is configured, the CA Puppet Server will run it
1156
1158
  every time it receives a CSR. The executable will be passed the subject CN of the
1157
1159
  request _as a command line argument,_ and the contents of the CSR in PEM format
1158
1160
  _on stdin._ It should exit with a status of 0 if the cert should be autosigned
@@ -1197,6 +1199,7 @@ EOT
1197
1199
  },
1198
1200
  :keylength => {
1199
1201
  :default => 4096,
1202
+ :type => :integer,
1200
1203
  :desc => "The bit length of keys.",
1201
1204
  },
1202
1205
  :cert_inventory => {
@@ -1238,7 +1241,7 @@ EOT
1238
1241
  :manifest => {
1239
1242
  :default => nil,
1240
1243
  :type => :file_or_directory,
1241
- :desc => "The entry-point manifest for puppet master. This can be one file
1244
+ :desc => "The entry-point manifest for the primary server. This can be one file
1242
1245
  or a directory of manifests to be evaluated in alphabetical order. Puppet manages
1243
1246
  this path as a directory if one exists or if the path ends with a / or \\.
1244
1247
 
@@ -1418,15 +1421,17 @@ EOT
1418
1421
  their names should be comma-separated, with whitespace allowed. (For example,
1419
1422
  `reports = http, store`.)
1420
1423
 
1421
- This setting is relevant to puppet master and puppet apply. The puppet
1422
- master will call these report handlers with the reports it receives from
1424
+ This setting is relevant to puppet server and puppet apply. The primary Puppet
1425
+ server will call these report handlers with the reports it receives from
1423
1426
  agent nodes, and puppet apply will call them with its own report. (In
1424
1427
  all cases, the node applying the catalog must have `report = true`.)
1425
1428
 
1426
1429
  See the report reference for information on the built-in report
1427
1430
  handlers; custom report handlers can also be loaded from modules.
1428
1431
  (Report handlers are loaded from the lib directory, at
1429
- `puppet/reports/NAME.rb`.)",
1432
+ `puppet/reports/NAME.rb`.)
1433
+
1434
+ To turn off reports entirely, set this to `none`",
1430
1435
  },
1431
1436
  :reportdir => {
1432
1437
  :default => "$vardir/reports",
@@ -1469,14 +1474,14 @@ EOT
1469
1474
  :node_name_value => {
1470
1475
  :default => "$certname",
1471
1476
  :desc => "The explicit value used for the node name for all requests the agent
1472
- makes to the master. WARNING: This setting is mutually exclusive with
1477
+ makes to the primary server. WARNING: This setting is mutually exclusive with
1473
1478
  node_name_fact. Changing this setting also requires changes to
1474
1479
  Puppet Server's default [auth.conf](https://puppet.com/docs/puppetserver/latest/config_file_auth.html)."
1475
1480
  },
1476
1481
  :node_name_fact => {
1477
1482
  :default => "",
1478
1483
  :desc => "The fact name used to determine the node name used for all requests the agent
1479
- makes to the master. WARNING: This setting is mutually exclusive with
1484
+ makes to the primary server. WARNING: This setting is mutually exclusive with
1480
1485
  node_name_value. Changing this setting also requires changes to
1481
1486
  Puppet Server's default [auth.conf](https://puppet.com/docs/puppetserver/latest/config_file_auth.html).",
1482
1487
  :hook => proc do |value|
@@ -1489,8 +1494,8 @@ EOT
1489
1494
  :default => "$statedir/state.yaml",
1490
1495
  :type => :file,
1491
1496
  :mode => "0640",
1492
- :desc => "Where puppet agent and puppet master store state associated
1493
- with the running configuration. In the case of puppet master,
1497
+ :desc => "Where Puppet agent and Puppet Server store state associated
1498
+ with the running configuration. In the case of Puppet Server,
1494
1499
  this file reflects the state discovered through interacting
1495
1500
  with clients."
1496
1501
  },
@@ -1553,11 +1558,11 @@ EOT
1553
1558
  the POSIX syslog service and the Windows Event Log are unavailable. (Currently,
1554
1559
  no supported operating systems match that description.)
1555
1560
 
1556
- Despite the name, both puppet agent and puppet master will use this file
1561
+ Despite the name, both puppet agent and puppet server will use this file
1557
1562
  as the fallback logging destination.
1558
1563
 
1559
1564
  For control over logging destinations, see the `--logdest` command line
1560
- option in the manual pages for puppet master, puppet agent, and puppet
1565
+ option in the manual pages for puppet server, puppet agent, and puppet
1561
1566
  apply. You can see man pages by running `puppet <SUBCOMMAND> --help`,
1562
1567
  or read them online at https://puppet.com/docs/puppet/latest/man/."
1563
1568
  },
@@ -1571,12 +1576,12 @@ EOT
1571
1576
  },
1572
1577
  :server => {
1573
1578
  :default => "puppet",
1574
- :desc => "The puppet master server to which the puppet agent should connect.",
1579
+ :desc => "The primary Puppet server to which the Puppet agent should connect.",
1575
1580
  },
1576
1581
  :server_list => {
1577
1582
  :default => [],
1578
1583
  :type => :server_list,
1579
- :desc => "The list of Puppet master servers to which the Puppet agent should connect,
1584
+ :desc => "The list of primary Puppet servers to which the Puppet agent should connect,
1580
1585
  in the order that they will be tried. Each value should be a fully qualified domain name, followed by an optional ':' and port number. If a port is omitted, Puppet uses masterport for that host.",
1581
1586
  },
1582
1587
  :use_srv_records => {
@@ -1591,7 +1596,7 @@ EOT
1591
1596
  :http_extra_headers => {
1592
1597
  :default => [],
1593
1598
  :type => :http_extra_headers,
1594
- :desc => "The list of extra headers that will be sent with http requests to the master.
1599
+ :desc => "The list of extra headers that will be sent with http requests to the primary server.
1595
1600
  The header definition consists of a name and a value separated by a colon."
1596
1601
  },
1597
1602
  :ignoreschedules => {
@@ -1617,7 +1622,7 @@ EOT
1617
1622
  like it does when running normally. However, if a resource attribute is not in
1618
1623
  the desired state (as declared in the catalog), Puppet will take no
1619
1624
  action, and will instead report the changes it _would_ have made. These
1620
- simulated changes will appear in the report sent to the puppet master, or
1625
+ simulated changes will appear in the report sent to the primary Puppet server, or
1621
1626
  be shown on the console if running puppet agent or puppet apply in the
1622
1627
  foreground. The simulated changes will not send refresh events to any
1623
1628
  subscribing or notified resources, although Puppet will log that a refresh
@@ -1684,13 +1689,38 @@ EOT
1684
1689
  new configurations, where you want to fix the broken configuration
1685
1690
  rather than reverting to a known-good one.",
1686
1691
  },
1692
+ :fact_name_length_soft_limit => {
1693
+ :default => 2560,
1694
+ :type => :integer,
1695
+ :desc => "The soft limit for the length of a fact name.",
1696
+ },
1697
+ :fact_value_length_soft_limit => {
1698
+ :default => 4096,
1699
+ :type => :integer,
1700
+ :desc => "The soft limit for the length of a fact value.",
1701
+ },
1702
+ :top_level_facts_soft_limit => {
1703
+ :default => 512,
1704
+ :type => :integer,
1705
+ :desc => "The soft limit for the number of top level facts.",
1706
+ },
1707
+ :number_of_facts_soft_limit => {
1708
+ :default => 2048,
1709
+ :type => :integer,
1710
+ :desc => "The soft limit for the total number of facts.",
1711
+ },
1712
+ :payload_soft_limit => {
1713
+ :default => 16 * 1024 * 1024,
1714
+ :type => :integer,
1715
+ :desc => "The soft limit for the size of the payload.",
1716
+ },
1687
1717
  :use_cached_catalog => {
1688
1718
  :default => false,
1689
1719
  :type => :boolean,
1690
1720
  :desc => "Whether to only use the cached catalog rather than compiling a new catalog
1691
1721
  on every run. Puppet can be run with this enabled by default and then selectively
1692
1722
  disabled when a recompile is desired. Because a Puppet agent using cached catalogs
1693
- does not contact the master for a new catalog, it also does not upload facts at
1723
+ does not contact the primary server for a new catalog, it also does not upload facts at
1694
1724
  the beginning of the Puppet run.",
1695
1725
  },
1696
1726
  :ignoremissingtypes => {
@@ -1698,7 +1728,7 @@ EOT
1698
1728
  :type => :boolean,
1699
1729
  :desc => "Skip searching for classes and definitions that were missing during a
1700
1730
  prior compilation. The list of missing objects is maintained per-environment and
1701
- persists until the environment is cleared or the master is restarted.",
1731
+ persists until the environment is cleared or the primary server is restarted.",
1702
1732
  },
1703
1733
  :splaylimit => {
1704
1734
  :default => "$runinterval",
@@ -1728,7 +1758,7 @@ EOT
1728
1758
  If you restart an agent's puppet service with `splay` enabled, it
1729
1759
  recalculates its splay period and delays its first agent run after
1730
1760
  restarting for this new period. If you simultaneously restart a group of
1731
- puppet agents with `splay` enabled, their checkins to your puppet masters
1761
+ puppet agents with `splay` enabled, their checkins to your primary servers
1732
1762
  can be distributed more evenly.",
1733
1763
  },
1734
1764
  :clientbucketdir => {
@@ -1827,7 +1857,7 @@ EOT
1827
1857
 
1828
1858
  When starting for the first time, puppet agent will submit a certificate
1829
1859
  signing request (CSR) to the server named in the `ca_server` setting
1830
- (usually the puppet master); this may be autosigned, or may need to be
1860
+ (usually the primary Puppet server); this may be autosigned, or may need to be
1831
1861
  approved by a human, depending on the CA server's configuration.
1832
1862
 
1833
1863
  Puppet agent cannot apply configurations until its approved certificate is
@@ -2021,6 +2051,7 @@ EOT
2021
2051
  },
2022
2052
  :ldapport => {
2023
2053
  :default => 389,
2054
+ :type => :port,
2024
2055
  :desc => "The LDAP port.",
2025
2056
  },
2026
2057
 
@@ -2082,8 +2113,8 @@ EOT
2082
2113
  # Call our hook with the default value, so we always get the libdir set.
2083
2114
  :call_hook => :on_initialize_and_write,
2084
2115
  :hook => proc do |value|
2085
- require 'puppet/node'
2086
- require 'puppet/node/facts'
2116
+ require_relative '../puppet/node'
2117
+ require_relative '../puppet/node/facts'
2087
2118
  if value
2088
2119
  Puppet::Resource::Catalog.indirection.set_global_setting(:cache_class, :store_configs)
2089
2120
  settings.override_default(:catalog_cache_terminus, :store_configs)
@@ -2104,6 +2135,7 @@ EOT
2104
2135
  settings.define_settings(:parser,
2105
2136
  :max_errors => {
2106
2137
  :default => 10,
2138
+ :type => :integer,
2107
2139
  :desc => <<-'EOT'
2108
2140
  Sets the max number of logged/displayed parser validation errors in case
2109
2141
  multiple errors have been detected. A value of 0 is the same as a value of 1; a
@@ -2112,6 +2144,7 @@ EOT
2112
2144
  },
2113
2145
  :max_warnings => {
2114
2146
  :default => 10,
2147
+ :type => :integer,
2115
2148
  :desc => <<-'EOT'
2116
2149
  Sets the max number of logged/displayed parser validation warnings in
2117
2150
  case multiple warnings have been detected. A value of 0 blocks logging of
@@ -2120,6 +2153,7 @@ EOT
2120
2153
  },
2121
2154
  :max_deprecations => {
2122
2155
  :default => 10,
2156
+ :type => :integer,
2123
2157
  :desc => <<-'EOT'
2124
2158
  Sets the max number of logged/displayed parser validation deprecation
2125
2159
  warnings in case multiple deprecation warnings have been detected. A value of 0
@@ -1,4 +1,4 @@
1
- require 'puppet/concurrent/synchronized'
1
+ require_relative '../puppet/concurrent/synchronized'
2
2
 
3
3
  # @api private
4
4
  module Puppet::Environments
@@ -48,6 +48,13 @@ module Puppet::Environments
48
48
  root.instance_variable_set(:@rich_data, nil)
49
49
  end
50
50
  end
51
+
52
+ # The base implementation is a noop, because `get` returns a new environment
53
+ # each time.
54
+ #
55
+ # @see Puppet::Environments::Cached#guard
56
+ def guard(name); end
57
+ def unguard(name); end
51
58
  end
52
59
 
53
60
  # @!macro [new] loader_search_paths
@@ -188,7 +195,7 @@ module Puppet::Environments
188
195
 
189
196
  def self.real_path(dir)
190
197
  if Puppet::FileSystem.symlink?(dir) && Puppet[:versioned_environment_dirs]
191
- dir = Puppet::FileSystem.expand_path(Puppet::FileSystem.readlink(dir))
198
+ dir = Pathname.new Puppet::FileSystem.expand_path(Puppet::FileSystem.readlink(dir))
192
199
  end
193
200
  return dir
194
201
  end
@@ -241,7 +248,7 @@ module Puppet::Environments
241
248
 
242
249
  def validated_directory(envdir)
243
250
  env_name = Puppet::FileSystem.basename_string(envdir)
244
- envdir = Puppet::Environments::Directories.real_path(envdir)
251
+ envdir = Puppet::Environments::Directories.real_path(envdir).to_s
245
252
  if Puppet::FileSystem.directory?(envdir) && Puppet::Node::Environment.valid_name?(env_name)
246
253
  envdir
247
254
  else
@@ -330,21 +337,13 @@ module Puppet::Environments
330
337
  end
331
338
 
332
339
  def self.cache_expiration_service=(service)
333
- @cache_expiration_service = service
340
+ @cache_expiration_service_singleton = service
334
341
  end
335
342
 
336
343
  def self.cache_expiration_service
337
- @cache_expiration_service || DefaultCacheExpirationService.new
338
- end
339
-
340
- # Returns the end of time (the next Mesoamerican Long Count cycle-end after 2012 (5125+2012) = 7137
341
- def self.end_of_time
342
- Time.gm(7137)
344
+ @cache_expiration_service_singleton || DefaultCacheExpirationService.new
343
345
  end
344
346
 
345
- END_OF_TIME = end_of_time
346
- START_OF_TIME = Time.gm(1)
347
-
348
347
  def initialize(loader)
349
348
  @loader = loader
350
349
  @cache_expiration_service = Puppet::Environments::Cached.cache_expiration_service
@@ -356,6 +355,16 @@ module Puppet::Environments
356
355
  # Evict all that have expired, in the same way as `get`
357
356
  clear_all_expired
358
357
 
358
+ # Evict all that was removed from disk
359
+ cached_envs = @cache.keys.map!(&:to_sym)
360
+ loader_envs = @loader.list.map!(&:name)
361
+ removed_envs = cached_envs - loader_envs
362
+
363
+ removed_envs.each do |env_name|
364
+ Puppet.debug { "Environment no longer exists '#{env_name}'"}
365
+ clear(env_name)
366
+ end
367
+
359
368
  @loader.list.map do |env|
360
369
  name = env.name
361
370
  old_entry = @cache[name]
@@ -375,27 +384,35 @@ module Puppet::Environments
375
384
 
376
385
  # @!macro loader_get
377
386
  def get(name)
387
+ entry = get_entry(name)
388
+ entry ? entry.value : nil
389
+ end
390
+
391
+ # Get a cache entry for an envionment. It returns nil if the
392
+ # environment doesn't exist.
393
+ def get_entry(name, check_expired = true)
378
394
  # Aggressively evict all that has expired
379
395
  # This strategy favors smaller memory footprint over environment
380
396
  # retrieval time.
381
- clear_all_expired
382
- result = @cache[name]
383
- if result
384
- Puppet.debug {"Found in cache '#{name}' #{result.label}"}
397
+ clear_all_expired if check_expired
398
+ name = name.to_sym
399
+ entry = @cache[name]
400
+ if entry
401
+ Puppet.debug {"Found in cache #{name.inspect} #{entry.label}"}
385
402
  # found in cache
386
- result.touch
387
- return result.value
388
- elsif (result = @loader.get(name))
403
+ entry.touch
404
+ elsif (env = @loader.get(name))
389
405
  # environment loaded, cache it
390
- cache_entry = entry(result)
391
- add_entry(name, cache_entry)
392
- result
406
+ entry = entry(env)
407
+ add_entry(name, entry)
393
408
  end
409
+ entry
394
410
  end
411
+ private :get_entry
395
412
 
396
413
  # Adds a cache entry to the cache
397
414
  def add_entry(name, cache_entry)
398
- Puppet.debug {"Caching environment '#{name}' #{cache_entry.label}"}
415
+ Puppet.debug {"Caching environment #{name.inspect} #{cache_entry.label}"}
399
416
  @cache[name] = cache_entry
400
417
  @cache_expiration_service.created(cache_entry.value)
401
418
  end
@@ -403,7 +420,7 @@ module Puppet::Environments
403
420
 
404
421
  def clear_entry(name, entry)
405
422
  @cache.delete(name)
406
- Puppet.debug {"Evicting cache entry for environment '#{name}'"}
423
+ Puppet.debug {"Evicting cache entry for environment #{name.inspect}"}
407
424
  @cache_expiration_service.evicted(name.to_sym)
408
425
  Puppet::GettextConfig.delete_text_domain(name)
409
426
  Puppet.settings.clear_environment_settings(name)
@@ -413,6 +430,7 @@ module Puppet::Environments
413
430
  # Clears the cache of the environment with the given name.
414
431
  # (The intention is that this could be used from a MANUAL cache eviction command (TBD)
415
432
  def clear(name)
433
+ name = name.to_sym
416
434
  entry = @cache[name]
417
435
  clear_entry(name, entry) if entry
418
436
  end
@@ -433,19 +451,21 @@ module Puppet::Environments
433
451
  # Clears all environments that have expired, either by exceeding their time to live, or
434
452
  # through an explicit eviction determined by the cache expiration service.
435
453
  #
436
- def clear_all_expired()
454
+ def clear_all_expired
437
455
  t = Time.now
438
456
 
439
457
  @cache.each_pair do |name, entry|
440
458
  clear_if_expired(name, entry, t)
441
459
  end
442
460
  end
461
+ private :clear_all_expired
443
462
 
444
463
  # Clear an environment if it is expired, either by exceeding its time to live, or
445
464
  # through an explicit eviction determined by the cache expiration service.
446
465
  #
447
466
  def clear_if_expired(name, entry, t = Time.now)
448
467
  return unless entry
468
+ return if entry.guarded?
449
469
 
450
470
  if entry.expired?(t) || @cache_expiration_service.expired?(name.to_sym)
451
471
  clear_entry(name, entry)
@@ -462,10 +482,25 @@ module Puppet::Environments
462
482
  #
463
483
  # @!macro loader_get_conf
464
484
  def get_conf(name)
485
+ name = name.to_sym
465
486
  clear_if_expired(name, @cache[name])
466
487
  @loader.get_conf(name)
467
488
  end
468
489
 
490
+ # Guard an environment so it can't be evicted while it's in use. The method
491
+ # may be called multiple times, provided it is unguarded the same number of
492
+ # times. If you call this method, you must call `unguard` in an ensure block.
493
+ def guard(name)
494
+ entry = get_entry(name, false)
495
+ entry.guard if entry
496
+ end
497
+
498
+ # Unguard an environment.
499
+ def unguard(name)
500
+ entry = get_entry(name, false)
501
+ entry.unguard if entry
502
+ end
503
+
469
504
  # Creates a suitable cache entry given the time to live for one environment
470
505
  #
471
506
  def entry(env)
@@ -491,6 +526,7 @@ module Puppet::Environments
491
526
 
492
527
  def initialize(value)
493
528
  @value = value
529
+ @guards = 0
494
530
  end
495
531
 
496
532
  def touch
@@ -503,6 +539,20 @@ module Puppet::Environments
503
539
  def label
504
540
  ""
505
541
  end
542
+
543
+ # These are not protected with a lock, because all of the Cached
544
+ # methods are protected.
545
+ def guarded?
546
+ @guards > 0
547
+ end
548
+
549
+ def guard
550
+ @guards += 1
551
+ end
552
+
553
+ def unguard
554
+ @guards -= 1
555
+ end
506
556
  end
507
557
 
508
558
  # Always evicting entry