puppet 4.5.3-x86-mingw32 → 4.6.1-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 (422) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +10 -1
  3. data/ext/debian/control +2 -4
  4. data/ext/project_data.yaml +4 -4
  5. data/install.rb +6 -2
  6. data/lib/puppet.rb +3 -1
  7. data/lib/puppet/agent/locker.rb +1 -1
  8. data/lib/puppet/application.rb +6 -4
  9. data/lib/puppet/application/agent.rb +2 -1
  10. data/lib/puppet/application/cert.rb +35 -2
  11. data/lib/puppet/application/device.rb +1 -1
  12. data/lib/puppet/application/generate.rb +5 -0
  13. data/lib/puppet/application/lookup.rb +3 -3
  14. data/lib/puppet/application_support.rb +1 -1
  15. data/lib/puppet/compilable_resource_type.rb +15 -0
  16. data/lib/puppet/configurer.rb +67 -10
  17. data/lib/puppet/configurer/plugin_handler.rb +2 -4
  18. data/lib/puppet/data_providers/hiera_config.rb +1 -1
  19. data/lib/puppet/defaults.rb +34 -7
  20. data/lib/puppet/environments.rb +4 -2
  21. data/lib/puppet/error.rb +1 -1
  22. data/lib/puppet/external/dot.rb +1 -1
  23. data/lib/puppet/face/ca.rb +4 -1
  24. data/lib/puppet/face/certificate.rb +7 -1
  25. data/lib/puppet/face/epp.rb +5 -5
  26. data/lib/puppet/face/generate.rb +64 -0
  27. data/lib/puppet/face/help.rb +19 -13
  28. data/lib/puppet/face/man.rb +1 -1
  29. data/lib/puppet/feature/external_facts.rb +1 -1
  30. data/lib/puppet/file_system.rb +16 -0
  31. data/lib/puppet/file_system/file_impl.rb +5 -0
  32. data/lib/puppet/file_system/memory_impl.rb +4 -0
  33. data/lib/puppet/file_system/path_pattern.rb +1 -0
  34. data/lib/puppet/file_system/windows.rb +19 -0
  35. data/lib/puppet/functions.rb +3 -5
  36. data/lib/puppet/functions/assert_type.rb +1 -1
  37. data/lib/puppet/functions/defined.rb +7 -5
  38. data/lib/puppet/functions/dig.rb +2 -18
  39. data/lib/puppet/functions/hiera.rb +1 -1
  40. data/lib/puppet/functions/lest.rb +1 -37
  41. data/lib/puppet/functions/new.rb +2 -473
  42. data/lib/puppet/functions/reverse_each.rb +2 -59
  43. data/lib/puppet/functions/scanf.rb +4 -4
  44. data/lib/puppet/functions/step.rb +1 -63
  45. data/lib/puppet/functions/then.rb +1 -61
  46. data/lib/puppet/functions/type.rb +1 -40
  47. data/lib/puppet/functions/unwrap.rb +40 -0
  48. data/lib/puppet/generate/models/type/property.rb +70 -0
  49. data/lib/puppet/generate/models/type/type.rb +57 -0
  50. data/lib/puppet/generate/templates/type/pcore.erb +41 -0
  51. data/lib/puppet/generate/type.rb +239 -0
  52. data/lib/puppet/graph/simple_graph.rb +2 -6
  53. data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
  54. data/lib/puppet/indirector/facts/facter.rb +1 -1
  55. data/lib/puppet/indirector/key/ca.rb +2 -2
  56. data/lib/puppet/indirector/request.rb +25 -4
  57. data/lib/puppet/indirector/rest.rb +73 -3
  58. data/lib/puppet/info_service/class_information_service.rb +1 -2
  59. data/lib/puppet/interface/documentation.rb +1 -1
  60. data/lib/puppet/loaders.rb +2 -0
  61. data/lib/puppet/metatype/manager.rb +6 -6
  62. data/lib/puppet/module.rb +8 -1
  63. data/lib/puppet/module_tool.rb +2 -2
  64. data/lib/puppet/module_tool/checksums.rb +1 -1
  65. data/lib/puppet/module_tool/errors/installer.rb +2 -2
  66. data/lib/puppet/module_tool/metadata.rb +1 -1
  67. data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
  68. data/lib/puppet/network/http/rack/rest.rb +15 -1
  69. data/lib/puppet/network/rights.rb +1 -11
  70. data/lib/puppet/node/environment.rb +7 -3
  71. data/lib/puppet/node/facts.rb +1 -1
  72. data/lib/puppet/parameter.rb +23 -3
  73. data/lib/puppet/parameter/boolean.rb +1 -1
  74. data/lib/puppet/parameter/value.rb +1 -1
  75. data/lib/puppet/parser.rb +0 -1
  76. data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
  77. data/lib/puppet/parser/ast/resource.rb +5 -0
  78. data/lib/puppet/parser/ast/resource_instance.rb +5 -1
  79. data/lib/puppet/parser/ast/resourceparam.rb +5 -0
  80. data/lib/puppet/parser/compiler.rb +14 -17
  81. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
  82. data/lib/puppet/parser/environment_compiler.rb +10 -0
  83. data/lib/puppet/parser/functions/create_resources.rb +39 -24
  84. data/lib/puppet/parser/functions/defined.rb +2 -26
  85. data/lib/puppet/parser/functions/dig.rb +29 -0
  86. data/lib/puppet/parser/functions/lest.rb +49 -0
  87. data/lib/puppet/parser/functions/new.rb +530 -0
  88. data/lib/puppet/parser/functions/require.rb +1 -1
  89. data/lib/puppet/parser/functions/reverse_each.rb +83 -0
  90. data/lib/puppet/parser/functions/scanf.rb +4 -4
  91. data/lib/puppet/parser/functions/step.rb +84 -0
  92. data/lib/puppet/parser/functions/then.rb +73 -0
  93. data/lib/puppet/parser/functions/type.rb +53 -0
  94. data/lib/puppet/parser/resource.rb +16 -7
  95. data/lib/puppet/parser/scope.rb +36 -28
  96. data/lib/puppet/parser/type_loader.rb +1 -1
  97. data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
  98. data/lib/puppet/pops.rb +13 -0
  99. data/lib/puppet/pops/adapters.rb +49 -49
  100. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
  101. data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
  102. data/lib/puppet/pops/evaluator/closure.rb +39 -13
  103. data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
  104. data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
  105. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  106. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
  107. data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
  108. data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
  109. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
  110. data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
  111. data/lib/puppet/pops/functions/function.rb +5 -0
  112. data/lib/puppet/pops/issues.rb +1 -1
  113. data/lib/puppet/pops/label_provider.rb +2 -2
  114. data/lib/puppet/pops/loader/base_loader.rb +12 -15
  115. data/lib/puppet/pops/loader/loader.rb +15 -50
  116. data/lib/puppet/pops/loader/loader_paths.rb +28 -2
  117. data/lib/puppet/pops/loader/module_loaders.rb +16 -1
  118. data/lib/puppet/pops/loader/null_loader.rb +17 -1
  119. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
  120. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
  121. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
  122. data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
  123. data/lib/puppet/pops/loader/static_loader.rb +55 -0
  124. data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
  125. data/lib/puppet/pops/loader/typed_name.rb +50 -0
  126. data/lib/puppet/pops/loaders.rb +64 -19
  127. data/lib/puppet/pops/merge_strategy.rb +7 -7
  128. data/lib/puppet/pops/migration/migration_checker.rb +4 -0
  129. data/lib/puppet/pops/model/model_label_provider.rb +2 -0
  130. data/lib/puppet/pops/parser/egrammar.ra +8 -5
  131. data/lib/puppet/pops/parser/eparser.rb +1550 -1498
  132. data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
  133. data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
  134. data/lib/puppet/pops/parser/lexer2.rb +14 -1
  135. data/lib/puppet/pops/parser/locator.rb +30 -1
  136. data/lib/puppet/pops/parser/parser_support.rb +0 -3
  137. data/lib/puppet/pops/parser/slurp_support.rb +3 -3
  138. data/lib/puppet/pops/patterns.rb +9 -1
  139. data/lib/puppet/pops/pcore.rb +67 -11
  140. data/lib/puppet/pops/puppet_stack.rb +43 -0
  141. data/lib/puppet/pops/resource/param.rb +51 -0
  142. data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
  143. data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
  144. data/lib/puppet/pops/serialization.rb +17 -0
  145. data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
  146. data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
  147. data/lib/puppet/pops/serialization/deserializer.rb +60 -0
  148. data/lib/puppet/pops/serialization/extension.rb +126 -0
  149. data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  150. data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  151. data/lib/puppet/pops/serialization/json.rb +247 -0
  152. data/lib/puppet/pops/serialization/object.rb +63 -0
  153. data/lib/puppet/pops/serialization/rgen.rb +151 -0
  154. data/lib/puppet/pops/serialization/serializer.rb +91 -0
  155. data/lib/puppet/pops/serialization/time_factory.rb +66 -0
  156. data/lib/puppet/pops/types/annotatable.rb +36 -0
  157. data/lib/puppet/pops/types/implementation_registry.rb +3 -8
  158. data/lib/puppet/pops/types/p_meta_type.rb +83 -0
  159. data/lib/puppet/pops/types/p_object_type.rb +110 -117
  160. data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
  161. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
  162. data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
  163. data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
  164. data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
  165. data/lib/puppet/pops/types/puppet_object.rb +0 -5
  166. data/lib/puppet/pops/types/ruby_generator.rb +9 -2
  167. data/lib/puppet/pops/types/type_calculator.rb +6 -1
  168. data/lib/puppet/pops/types/type_factory.rb +14 -12
  169. data/lib/puppet/pops/types/type_formatter.rb +78 -33
  170. data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
  171. data/lib/puppet/pops/types/type_parser.rb +27 -2
  172. data/lib/puppet/pops/types/type_set_reference.rb +59 -0
  173. data/lib/puppet/pops/types/types.rb +366 -13
  174. data/lib/puppet/pops/validation.rb +4 -4
  175. data/lib/puppet/pops/validation/checker4_0.rb +5 -2
  176. data/lib/puppet/pops/visitor.rb +2 -2
  177. data/lib/puppet/property.rb +64 -5
  178. data/lib/puppet/provider.rb +1 -1
  179. data/lib/puppet/provider/aixobject.rb +3 -3
  180. data/lib/puppet/provider/group/aix.rb +4 -4
  181. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  182. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  183. data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
  184. data/lib/puppet/provider/mount/parsed.rb +1 -1
  185. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  186. data/lib/puppet/provider/package/appdmg.rb +3 -3
  187. data/lib/puppet/provider/package/apple.rb +1 -1
  188. data/lib/puppet/provider/package/dnf.rb +5 -0
  189. data/lib/puppet/provider/package/nim.rb +1 -1
  190. data/lib/puppet/provider/package/pacman.rb +2 -2
  191. data/lib/puppet/provider/package/pip.rb +5 -3
  192. data/lib/puppet/provider/package/pip3.rb +1 -1
  193. data/lib/puppet/provider/package/pkg.rb +5 -5
  194. data/lib/puppet/provider/package/pkgdmg.rb +4 -4
  195. data/lib/puppet/provider/package/pkgin.rb +1 -1
  196. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  197. data/lib/puppet/provider/package/portage.rb +48 -8
  198. data/lib/puppet/provider/package/sun.rb +1 -1
  199. data/lib/puppet/provider/package/tdnf.rb +28 -0
  200. data/lib/puppet/provider/package/yum.rb +22 -4
  201. data/lib/puppet/provider/parsedfile.rb +2 -2
  202. data/lib/puppet/provider/service/base.rb +1 -1
  203. data/lib/puppet/provider/service/bsd.rb +1 -1
  204. data/lib/puppet/provider/service/daemontools.rb +2 -2
  205. data/lib/puppet/provider/service/debian.rb +3 -3
  206. data/lib/puppet/provider/service/init.rb +5 -3
  207. data/lib/puppet/provider/service/launchd.rb +16 -2
  208. data/lib/puppet/provider/service/runit.rb +1 -1
  209. data/lib/puppet/provider/service/smf.rb +8 -1
  210. data/lib/puppet/provider/service/systemd.rb +39 -6
  211. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  212. data/lib/puppet/provider/user/aix.rb +3 -2
  213. data/lib/puppet/provider/user/directoryservice.rb +4 -3
  214. data/lib/puppet/provider/user/hpux.rb +1 -1
  215. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  216. data/lib/puppet/provider/user/windows_adsi.rb +3 -0
  217. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  218. data/lib/puppet/reference/type.rb +1 -1
  219. data/lib/puppet/resource.rb +33 -7
  220. data/lib/puppet/resource/capability_finder.rb +74 -54
  221. data/lib/puppet/resource/status.rb +11 -2
  222. data/lib/puppet/settings.rb +17 -6
  223. data/lib/puppet/settings/environment_conf.rb +1 -1
  224. data/lib/puppet/settings/server_list_setting.rb +20 -0
  225. data/lib/puppet/ssl/certificate_authority.rb +32 -9
  226. data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
  227. data/lib/puppet/ssl/host.rb +3 -3
  228. data/lib/puppet/ssl/oids.rb +10 -0
  229. data/lib/puppet/ssl/validator/default_validator.rb +2 -2
  230. data/lib/puppet/test/test_helper.rb +2 -2
  231. data/lib/puppet/transaction.rb +12 -0
  232. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  233. data/lib/puppet/transaction/event.rb +29 -2
  234. data/lib/puppet/transaction/event_manager.rb +1 -1
  235. data/lib/puppet/transaction/persistence.rb +84 -0
  236. data/lib/puppet/transaction/report.rb +49 -2
  237. data/lib/puppet/transaction/resource_harness.rb +98 -18
  238. data/lib/puppet/type.rb +63 -21
  239. data/lib/puppet/type/augeas.rb +3 -3
  240. data/lib/puppet/type/cron.rb +1 -1
  241. data/lib/puppet/type/file.rb +39 -2
  242. data/lib/puppet/type/file/data_sync.rb +13 -5
  243. data/lib/puppet/type/host.rb +1 -1
  244. data/lib/puppet/type/mount.rb +2 -6
  245. data/lib/puppet/type/notify.rb +1 -1
  246. data/lib/puppet/type/package.rb +1 -1
  247. data/lib/puppet/type/resources.rb +1 -1
  248. data/lib/puppet/type/scheduled_task.rb +1 -1
  249. data/lib/puppet/type/ssh_authorized_key.rb +2 -2
  250. data/lib/puppet/type/tidy.rb +1 -1
  251. data/lib/puppet/type/yumrepo.rb +3 -3
  252. data/lib/puppet/type/zone.rb +1 -1
  253. data/lib/puppet/util.rb +2 -2
  254. data/lib/puppet/util/classgen.rb +1 -1
  255. data/lib/puppet/util/command_line.rb +6 -2
  256. data/lib/puppet/util/command_line/trollop.rb +1 -1
  257. data/lib/puppet/util/execution.rb +2 -2
  258. data/lib/puppet/util/http_proxy.rb +1 -1
  259. data/lib/puppet/util/inifile.rb +1 -1
  260. data/lib/puppet/util/instance_loader.rb +1 -1
  261. data/lib/puppet/util/logging.rb +1 -1
  262. data/lib/puppet/util/multi_match.rb +1 -1
  263. data/lib/puppet/util/plist.rb +15 -5
  264. data/lib/puppet/util/profiler.rb +1 -1
  265. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  266. data/lib/puppet/util/psych_support.rb +1 -1
  267. data/lib/puppet/util/rdoc.rb +2 -2
  268. data/lib/puppet/util/rubygems.rb +1 -1
  269. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
  270. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  271. data/lib/puppet/util/windows/adsi.rb +30 -8
  272. data/lib/puppet/util/windows/api_types.rb +1 -1
  273. data/lib/puppet/util/windows/file.rb +59 -0
  274. data/lib/puppet/util/windows/process.rb +10 -0
  275. data/lib/puppet/util/windows/security.rb +1 -1
  276. data/lib/puppet/util/windows/user.rb +22 -4
  277. data/lib/puppet/util/yaml.rb +15 -3
  278. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
  279. data/lib/puppet/vendor/rgen_patch.rb +1 -1
  280. data/lib/puppet/version.rb +2 -2
  281. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
  282. data/spec/integration/agent/logging_spec.rb +15 -14
  283. data/spec/integration/application/apply_spec.rb +1 -0
  284. data/spec/integration/directory_environments_spec.rb +16 -0
  285. data/spec/integration/environments/settings_spec.rb +32 -4
  286. data/spec/integration/faces/documentation_spec.rb +1 -1
  287. data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
  288. data/spec/integration/node/environment_spec.rb +21 -0
  289. data/spec/integration/parser/collection_spec.rb +10 -0
  290. data/spec/integration/parser/compiler_spec.rb +76 -840
  291. data/spec/integration/parser/functions/require_spec.rb +3 -3
  292. data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
  293. data/spec/integration/parser/pcore_resource_spec.rb +208 -0
  294. data/spec/integration/parser/resource_expressions_spec.rb +4 -2
  295. data/spec/integration/provider/yumrepo_spec.rb +4 -1
  296. data/spec/integration/transaction/report_spec.rb +666 -0
  297. data/spec/integration/type/file_spec.rb +11 -12
  298. data/spec/integration/util/windows/adsi_spec.rb +99 -0
  299. data/spec/integration/util/windows/principal_spec.rb +109 -60
  300. data/spec/integration/util/windows/process_spec.rb +4 -2
  301. data/spec/integration/util/windows/security_spec.rb +34 -8
  302. data/spec/integration/util/windows/user_spec.rb +26 -4
  303. data/spec/lib/puppet_spec/files.rb +2 -2
  304. data/spec/lib/puppet_spec/network.rb +12 -8
  305. data/spec/shared_examples/rhel_package_provider.rb +341 -0
  306. data/spec/spec_helper.rb +8 -2
  307. data/spec/unit/application/cert_spec.rb +20 -0
  308. data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
  309. data/spec/unit/configurer_spec.rb +46 -0
  310. data/spec/unit/defaults_spec.rb +14 -0
  311. data/spec/unit/face/generate_spec.rb +230 -0
  312. data/spec/unit/face/help_spec.rb +53 -0
  313. data/spec/unit/face/parser_spec.rb +6 -0
  314. data/spec/unit/face/plugin_spec.rb +0 -4
  315. data/spec/unit/file_system_spec.rb +85 -0
  316. data/spec/unit/functions/lookup_spec.rb +4 -4
  317. data/spec/unit/functions/match_spec.rb +2 -2
  318. data/spec/unit/functions/regsubst_spec.rb +1 -1
  319. data/spec/unit/functions/split_spec.rb +1 -1
  320. data/spec/unit/functions/unwrap_spec.rb +29 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +8 -8
  323. data/spec/unit/indirector/facts/facter_spec.rb +1 -9
  324. data/spec/unit/indirector/rest_spec.rb +95 -9
  325. data/spec/unit/module_spec.rb +43 -7
  326. data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
  327. data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
  328. data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
  329. data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
  330. data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
  331. data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
  332. data/spec/unit/network/rights_spec.rb +1 -1
  333. data/spec/unit/parameter_spec.rb +11 -0
  334. data/spec/unit/parser/compiler_spec.rb +19 -33
  335. data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
  336. data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
  337. data/spec/unit/parser/functions/require_spec.rb +2 -2
  338. data/spec/unit/parser/resource_spec.rb +21 -11
  339. data/spec/unit/parser/scope_spec.rb +1 -5
  340. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
  341. data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
  342. data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
  343. data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
  344. data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
  345. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  346. data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
  347. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
  348. data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
  349. data/spec/unit/pops/puppet_stack_spec.rb +79 -0
  350. data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
  351. data/spec/unit/pops/serialization/packer_spec.rb +153 -0
  352. data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
  353. data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
  354. data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
  355. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
  356. data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
  357. data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
  358. data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
  359. data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
  360. data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
  361. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
  362. data/spec/unit/pops/types/type_parser_spec.rb +1 -1
  363. data/spec/unit/pops/types/types_spec.rb +1 -1
  364. data/spec/unit/pops/validator/validator_spec.rb +18 -1
  365. data/spec/unit/property_spec.rb +48 -11
  366. data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
  367. data/spec/unit/provider/package/dnf_spec.rb +1 -99
  368. data/spec/unit/provider/package/pacman_spec.rb +4 -4
  369. data/spec/unit/provider/package/pip_spec.rb +14 -0
  370. data/spec/unit/provider/package/pkg_spec.rb +6 -0
  371. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
  372. data/spec/unit/provider/package/portage_spec.rb +64 -8
  373. data/spec/unit/provider/package/tdnf_spec.rb +18 -0
  374. data/spec/unit/provider/package/windows/package_spec.rb +4 -1
  375. data/spec/unit/provider/package/windows_spec.rb +8 -2
  376. data/spec/unit/provider/package/yum_spec.rb +6 -377
  377. data/spec/unit/provider/service/base_spec.rb +6 -0
  378. data/spec/unit/provider/service/debian_spec.rb +16 -7
  379. data/spec/unit/provider/service/gentoo_spec.rb +6 -0
  380. data/spec/unit/provider/service/init_spec.rb +7 -0
  381. data/spec/unit/provider/service/launchd_spec.rb +35 -4
  382. data/spec/unit/provider/service/openrc_spec.rb +6 -0
  383. data/spec/unit/provider/service/smf_spec.rb +31 -6
  384. data/spec/unit/provider/service/src_spec.rb +6 -0
  385. data/spec/unit/provider/service/systemd_spec.rb +70 -20
  386. data/spec/unit/provider/service/upstart_spec.rb +6 -0
  387. data/spec/unit/provider/user/aix_spec.rb +7 -0
  388. data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
  389. data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
  390. data/spec/unit/resource/capability_finder_spec.rb +51 -3
  391. data/spec/unit/resource/catalog_spec.rb +5 -0
  392. data/spec/unit/resource/type_spec.rb +2 -2
  393. data/spec/unit/resource_spec.rb +19 -0
  394. data/spec/unit/settings_spec.rb +13 -0
  395. data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
  396. data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
  397. data/spec/unit/ssl/host_spec.rb +1 -1
  398. data/spec/unit/ssl/oids_spec.rb +24 -21
  399. data/spec/unit/transaction/event_spec.rb +3 -1
  400. data/spec/unit/transaction/persistence_spec.rb +173 -0
  401. data/spec/unit/transaction/report_spec.rb +64 -1
  402. data/spec/unit/transaction/resource_harness_spec.rb +91 -0
  403. data/spec/unit/type/file/content_spec.rb +47 -15
  404. data/spec/unit/type/file_spec.rb +28 -0
  405. data/spec/unit/type/mount_spec.rb +5 -12
  406. data/spec/unit/type/yumrepo_spec.rb +1 -5
  407. data/spec/unit/type_spec.rb +32 -0
  408. data/spec/unit/util/command_line_spec.rb +11 -0
  409. data/spec/unit/util/execution_spec.rb +1 -1
  410. data/spec/unit/util/plist_spec.rb +16 -3
  411. data/spec/unit/util/storage_spec.rb +4 -1
  412. data/spec/unit/util/windows/adsi_spec.rb +23 -2
  413. data/spec/unit/util/windows/file_spec.rb +56 -1
  414. data/spec/unit/util/windows/sid_spec.rb +31 -7
  415. data/spec/unit/util/yaml_spec.rb +12 -0
  416. data/spec/unit/util_spec.rb +87 -20
  417. metadata +91 -48
  418. data/ext/puppetlisten/puppetlisten.rb +0 -77
  419. data/ext/puppetlisten/puppetrun.rb +0 -38
  420. data/lib/puppet/resource/type_collection_helper.rb +0 -7
  421. data/spec/unit/parser/functions/defined_spec.rb +0 -120
  422. data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
data/lib/puppet/type.rb CHANGED
@@ -75,6 +75,7 @@ module Puppet
75
75
  #
76
76
  #
77
77
  class Type
78
+ extend Puppet::CompilableResourceType
78
79
  include Puppet::Util
79
80
  include Puppet::Util::Errors
80
81
  include Puppet::Util::Logging
@@ -90,9 +91,9 @@ class Type
90
91
  # @see Comparable
91
92
  #
92
93
  def <=>(other)
93
- # We only order against other types, not arbitrary objects.
94
- return nil unless other.is_a? Puppet::Type
95
- # Our natural order is based on the reference name we use when comparing
94
+ # Order is only maintained against other types, not arbitrary objects.
95
+ # The natural order is based on the reference name used when comparing
96
+ return nil unless other.is_a?(Puppet::CompilableResourceType) || other.class.is_a?(Puppet::CompilableResourceType)
96
97
  # against other type instances.
97
98
  self.ref <=> other.ref
98
99
  end
@@ -600,7 +601,7 @@ class Type
600
601
  validattr?(name)
601
602
  end
602
603
 
603
- # @return [Boolean] Returns true if the wanted state of the resoure is that it should be absent (i.e. to be deleted).
604
+ # @return [Boolean] Returns true if the wanted state of the resource is that it should be absent (i.e. to be deleted).
604
605
  def deleting?
605
606
  obj = @parameters[:ensure] and obj.should == :absent
606
607
  end
@@ -741,7 +742,7 @@ class Type
741
742
  (prop = @parameters[name] and prop.is_a?(Puppet::Property)) ? prop.should : nil
742
743
  end
743
744
 
744
- # Registers an attribute to this resource type insance.
745
+ # Registers an attribute to this resource type instance.
745
746
  # Requires either the attribute name or class as its argument.
746
747
  # This is a noop if the named property/parameter is not supported
747
748
  # by this resource. Otherwise, an attribute instance is created
@@ -861,7 +862,7 @@ class Type
861
862
  self.class.name
862
863
  end
863
864
 
864
- # @todo Comment says "Return a specific value for an attribute.", as opposed to what "An upspecific value"???
865
+ # @todo Comment says "Return a specific value for an attribute.", as opposed to what "An unspecific value"???
865
866
  # @todo is this the 'is' or the 'should' value?
866
867
  # @todo why is the return restricted to things that respond to :value? (Only non structural basic data types
867
868
  # supported?
@@ -894,7 +895,7 @@ class Type
894
895
  # See the overview of this class for a longer explanation of the concept _isomorphism_.
895
896
  # Defaults to true.
896
897
  #
897
- # @return [Boolan] true, if this type's name is isomorphic with the object
898
+ # @return [Boolean] true, if this type's name is isomorphic with the object
898
899
  def self.isomorphic?
899
900
  if defined?(@isomorphic)
900
901
  return @isomorphic
@@ -1052,7 +1053,7 @@ class Type
1052
1053
 
1053
1054
  # Retrieves the current value of all contained properties.
1054
1055
  # Parameters and meta-parameters are not included in the result.
1055
- # @todo As oposed to all non contained properties? How is this different than any of the other
1056
+ # @todo As opposed to all non contained properties? How is this different than any of the other
1056
1057
  # methods that also "gets" properties/parameters/etc. ?
1057
1058
  # @return [Puppet::Resource] array of all property values (mix of types)
1058
1059
  # @raise [fail???] if there is a provider and it is not suitable for the host this is evaluated for.
@@ -1152,7 +1153,7 @@ class Type
1152
1153
  # Retrieves all known instances.
1153
1154
  # @todo Retrieves them from where? Known to whom?
1154
1155
  # Either requires providers or must be overridden.
1155
- # @raise [Puppet::DevError] when there are no providers and the implementation has not overridded this method.
1156
+ # @raise [Puppet::DevError] when there are no providers and the implementation has not overridden this method.
1156
1157
  def self.instances
1157
1158
  raise Puppet::DevError, "#{self.name} has no providers and has not overridden 'instances'" if provider_hash.empty?
1158
1159
 
@@ -1223,7 +1224,7 @@ class Type
1223
1224
  end
1224
1225
 
1225
1226
 
1226
- # Returns an array of strings representing the containment heirarchy
1227
+ # Returns an array of strings representing the containment hierarchy
1227
1228
  # (types/classes) that make up the path to the resource from the root
1228
1229
  # of the catalog. This is mostly used for logging purposes.
1229
1230
  #
@@ -1523,7 +1524,7 @@ class Type
1523
1524
  end
1524
1525
 
1525
1526
  # Are we requiring them, or vice versa? See the method docs
1526
- # for futher info on this.
1527
+ # for further info on this.
1527
1528
  if self.class.direction == :in
1528
1529
  source = related_resource
1529
1530
  target = @resource
@@ -1550,7 +1551,7 @@ class Type
1550
1551
  end
1551
1552
  end
1552
1553
 
1553
- # @todo document this, have no clue what this does... it retuns "RelationshipMetaparam.subclasses"
1554
+ # @todo document this, have no clue what this does... it returns "RelationshipMetaparam.subclasses"
1554
1555
  #
1555
1556
  def self.relationship_params
1556
1557
  RelationshipMetaparam.subclasses
@@ -1558,7 +1559,7 @@ class Type
1558
1559
 
1559
1560
 
1560
1561
  # Note that the order in which the relationships params is defined
1561
- # matters. The labelled params (notify and subcribe) must be later,
1562
+ # matters. The labeled params (notify and subscribe) must be later,
1562
1563
  # so that if both params are used, those ones win. It's a hackish
1563
1564
  # solution, but it works.
1564
1565
 
@@ -2059,7 +2060,7 @@ end
2059
2060
  end
2060
2061
 
2061
2062
  # Provides iteration over added auto-requirements (see {autorequire}).
2062
- # @yieldparam type [String] the name of the type to autoriquire an instance of
2063
+ # @yieldparam type [String] the name of the type to autorequire an instance of
2063
2064
  # @yieldparam block [Proc] a block producing one or several dependencies to auto require (see {autorequire}).
2064
2065
  # @yieldreturn [void]
2065
2066
  # @return [void]
@@ -2071,7 +2072,7 @@ end
2071
2072
  end
2072
2073
 
2073
2074
  # Provides iteration over added auto-requirements (see {autobefore}).
2074
- # @yieldparam type [String] the name of the type to autoriquire an instance of
2075
+ # @yieldparam type [String] the name of the type to autorequire an instance of
2075
2076
  # @yieldparam block [Proc] a block producing one or several dependencies to auto require (see {autobefore}).
2076
2077
  # @yieldreturn [void]
2077
2078
  # @return [void]
@@ -2083,7 +2084,7 @@ end
2083
2084
  end
2084
2085
 
2085
2086
  # Provides iteration over added auto-requirements (see {autosubscribe}).
2086
- # @yieldparam type [String] the name of the type to autoriquire an instance of
2087
+ # @yieldparam type [String] the name of the type to autorequire an instance of
2087
2088
  # @yieldparam block [Proc] a block producing one or several dependencies to auto require (see {autosubscribe}).
2088
2089
  # @yieldreturn [void]
2089
2090
  # @return [void]
@@ -2095,7 +2096,7 @@ end
2095
2096
  end
2096
2097
 
2097
2098
  # Provides iteration over added auto-requirements (see {autonotify}).
2098
- # @yieldparam type [String] the name of the type to autoriquire an instance of
2099
+ # @yieldparam type [String] the name of the type to autorequire an instance of
2099
2100
  # @yieldparam block [Proc] a block producing one or several dependencies to auto require (see {autonotify}).
2100
2101
  # @yieldreturn [void]
2101
2102
  # @return [void]
@@ -2192,7 +2193,7 @@ end
2192
2193
  # @comment - these two comments were floating around here, and turned up as documentation
2193
2194
  # for the attribute "title", much to my surprise and amusement. Clearly these comments
2194
2195
  # are orphaned ... I think they can just be removed as what they say should be covered
2195
- # by the now added yardoc. <irony>(Yo! to quote some of the other actual awsome specific comments applicable
2196
+ # by the now added yardoc. <irony>(Yo! to quote some of the other actual awesome specific comments applicable
2196
2197
  # to objects called from elsewhere, or not. ;-)</irony>
2197
2198
  #
2198
2199
  # @comment Types (which map to resources in the languages) are entirely composed of
@@ -2271,7 +2272,7 @@ end
2271
2272
  # Returns the name of this type (if specified) or the parent type #to_s.
2272
2273
  # The returned name is on the form "Puppet::Type::<name>", where the first letter of name is
2273
2274
  # capitalized.
2274
- # @return [String] the fully qualified name Puppet::Type::<name> where the first letter of name is captialized
2275
+ # @return [String] the fully qualified name Puppet::Type::<name> where the first letter of name is capitalized
2275
2276
  #
2276
2277
  def self.to_s
2277
2278
  if defined?(@name)
@@ -2393,6 +2394,47 @@ end
2393
2394
  adderrorcontext(error, detail)
2394
2395
  raise error
2395
2396
  end
2397
+
2398
+ set_sensitive_parameters(resource.sensitive_parameters)
2399
+ end
2400
+
2401
+ protected
2402
+
2403
+ # Mark parameters associated with this type as sensitive, based on the associated resource.
2404
+ #
2405
+ # Currently, only instances of `Puppet::Property` can be easily marked for sensitive data handling
2406
+ # and information redaction is limited to redacting events generated while synchronizing
2407
+ # properties. While support for redaction will be broadened in the future we can't automatically
2408
+ # deduce how to redact arbitrary parameters, so if a parameter is marked for redaction the best
2409
+ # we can do is warn that we can't handle treating that parameter as sensitive and move on.
2410
+ #
2411
+ # In some unusual cases a given parameter will be marked as sensitive but that sensitive context
2412
+ # needs to be transferred to another parameter. In this case resource types may need to override
2413
+ # this method in order to copy the sensitive context from one parameter to another (and in the
2414
+ # process force the early generation of a parameter that might otherwise be lazily generated.)
2415
+ # See `Puppet::Type.type(:file)#set_sensitive_parameters` for an example of this.
2416
+ #
2417
+ # @note This method visibility is protected since it should only be called by #initialize, but is
2418
+ # marked as public as subclasses may need to override this method.
2419
+ #
2420
+ # @api public
2421
+ #
2422
+ # @param sensitive_parameters [Array<Symbol>] A list of parameters to mark as sensitive.
2423
+ #
2424
+ # @return [void]
2425
+ def set_sensitive_parameters(sensitive_parameters)
2426
+ sensitive_parameters.each do |name|
2427
+ p = parameter(name)
2428
+ if p.is_a?(Puppet::Property)
2429
+ p.sensitive = true
2430
+ elsif p.is_a?(Puppet::Parameter)
2431
+ warning("Unable to mark '#{name}' as sensitive: #{name} is a parameter and not a property, and cannot be automatically redacted.")
2432
+ elsif self.class.attrclass(name)
2433
+ warning("Unable to mark '#{name}' as sensitive: the property itself was not assigned a value.")
2434
+ else
2435
+ err("Unable to mark '#{name}' as sensitive: the property itself is not defined on #{type}.")
2436
+ end
2437
+ end
2396
2438
  end
2397
2439
 
2398
2440
  private
@@ -2543,14 +2585,14 @@ end
2543
2585
  end
2544
2586
  end
2545
2587
 
2546
- # Returns the title of this object, or its name if title was not explicetly set.
2588
+ # Returns the title of this object, or its name if title was not explicitly set.
2547
2589
  # If the title is not already set, it will be computed by looking up the {#name_var} and using
2548
2590
  # that value as the title.
2549
2591
  # @todo it is somewhat confusing that if the name_var is a valid parameter, it is assumed to
2550
2592
  # be the name_var called :name, but if it is a property, it uses the name_var.
2551
2593
  # It is further confusing as Type in some respects supports multiple namevars.
2552
2594
  #
2553
- # @return [String] Returns the title of this object, or its name if title was not explicetly set.
2595
+ # @return [String] Returns the title of this object, or its name if title was not explicitly set.
2554
2596
  # @raise [??? devfail] if title is not set, and name_var can not be found.
2555
2597
  def title
2556
2598
  unless @title
@@ -106,7 +106,7 @@ Puppet::Type.newtype(:augeas) do
106
106
  desc "The changes which should be applied to the filesystem. This
107
107
  can be a command or an array of commands. The following commands are supported:
108
108
 
109
- * `set <PATH> <VALUE>` --- Sets the value `VALUE` at loction `PATH`
109
+ * `set <PATH> <VALUE>` --- Sets the value `VALUE` at location `PATH`
110
110
  * `setm <PATH> <SUB> <VALUE>` --- Sets multiple nodes (matching `SUB` relative to `PATH`) to `VALUE`
111
111
  * `rm <PATH>` --- Removes the node at location `PATH`
112
112
  * `remove <PATH>` --- Synonym for `rm`
@@ -137,7 +137,7 @@ Puppet::Type.newtype(:augeas) do
137
137
 
138
138
  newparam(:force) do
139
139
  desc "Optional command to force the augeas type to execute even if it thinks changes
140
- will not be made. This does not overide the `onlyif` parameter."
140
+ will not be made. This does not override the `onlyif` parameter."
141
141
 
142
142
  defaultto false
143
143
  end
@@ -192,7 +192,7 @@ Puppet::Type.newtype(:augeas) do
192
192
  end
193
193
 
194
194
  # if the onlyif resource is provided, then the value is parsed.
195
- # a return value of 0 will stop exection because it matches the
195
+ # a return value of 0 will stop execution because it matches the
196
196
  # default value.
197
197
  def retrieve
198
198
  if @resource.provider.need_to_run?()
@@ -446,7 +446,7 @@ Puppet::Type.newtype(:cron) do
446
446
  # @api public
447
447
  #
448
448
  # @note This overrides the Puppet::Type method in order to handle
449
- # an edge case that has so far been observed during testig only.
449
+ # an edge case that has so far been observed during testing only.
450
450
  # Without forcing the should-value for the user property to be
451
451
  # identical to the original cron file, purging from a fixture
452
452
  # will not work, because the user property defaults to the user
@@ -37,7 +37,9 @@ Puppet::Type.newtype(:file) do
37
37
  "The provider can manage symbolic links."
38
38
 
39
39
  def self.title_patterns
40
- [ [ /^(.*?)\/*\Z/m, [ [ :path ] ] ] ]
40
+ # strip trailing slashes from path but allow the root directory, including
41
+ # for example "/" or "C:/"
42
+ [ [ %r{^(/|.+:/|.*[^/])/*\Z}m, [ [ :path ] ] ] ]
41
43
  end
42
44
 
43
45
  newparam(:path) do
@@ -885,6 +887,41 @@ Puppet::Type.newtype(:file) do
885
887
 
886
888
  private
887
889
 
890
+ # Carry the context of sensitive parameters to the the properties that will actually handle that
891
+ # sensitive data.
892
+ #
893
+ # The file type can accept file content from a number of origins and depending on the current
894
+ # state of the system different properties will be responsible for synchronizing the file
895
+ # content. This method handles the necessary mapping of originating parameters to the
896
+ # responsible parameters.
897
+ def set_sensitive_parameters(sensitive_parameters)
898
+ # If we have content that's marked as sensitive but the file doesn't exist then the ensure
899
+ # property will be responsible for syncing content, so we have to mark ensure as sensitive as well.
900
+ if sensitive_parameters.include?(:content)
901
+ # The `ensure` parameter is not guaranteed to be defined either and will be conditionally set when
902
+ # the `content` property is set, so we need to force the creation of the `ensure` property to
903
+ # set the sensitive context.
904
+ newattr(:ensure).sensitive = true
905
+ end
906
+
907
+ # The source parameter isn't actually a property but works by injecting information into the
908
+ # content property. In order to preserve the intended sensitive context we need to mark content
909
+ # as sensitive as well.
910
+ if sensitive_parameters.include?(:source)
911
+ sensitive_parameters.delete(:source)
912
+ parameter(:source).sensitive = true
913
+ # The `source` parameter will generate the `content` property when the resource state is retrieved
914
+ # but that's long after we've set the sensitive context. Force the early creation of the `content`
915
+ # attribute so we can mark it as sensitive.
916
+ newattr(:content).sensitive = true
917
+ # As noted above, making the `content` property sensitive requires making the `ensure` property
918
+ # sensitive as well.
919
+ newattr(:ensure).sensitive = true
920
+ end
921
+
922
+ super(sensitive_parameters)
923
+ end
924
+
888
925
  # @return [String] The type of the current file, cast to a string.
889
926
  def read_current_type
890
927
  stat_info = stat
@@ -968,7 +1005,7 @@ Puppet::Type.newtype(:file) do
968
1005
  properties.each do |thing|
969
1006
  next unless [:mode, :owner, :group, :seluser, :selrole, :seltype, :selrange].include?(thing.name)
970
1007
 
971
- # Make sure we get a new stat objct
1008
+ # Make sure we get a new stat object
972
1009
  @stat = :needs_stat
973
1010
  currentvalue = thing.retrieve
974
1011
  thing.sync unless thing.safe_insync?(currentvalue)
@@ -34,14 +34,22 @@ module Puppet
34
34
 
35
35
  return true if ! resource.replace?
36
36
 
37
- result = yield(is)
37
+ is_insync = yield(is)
38
38
 
39
- if !result && Puppet[:show_diff] && resource.show_diff?
40
- write_temporarily(param) do |path|
41
- send resource[:loglevel], "\n" + diff(resource[:path], path)
39
+ if show_diff?(!is_insync)
40
+ if param.sensitive
41
+ send resource[:loglevel], "[diff redacted]"
42
+ else
43
+ write_temporarily(param) do |path|
44
+ send resource[:loglevel], "\n" + diff(resource[:path], path)
45
+ end
42
46
  end
43
47
  end
44
- result
48
+ is_insync
49
+ end
50
+
51
+ def show_diff?(has_changes)
52
+ has_changes && Puppet[:show_diff] && resource.show_diff?
45
53
  end
46
54
 
47
55
  def date_matches?(checksum_type, current, desired)
@@ -17,7 +17,7 @@ module Puppet
17
17
 
18
18
  def valid_v6?(addr)
19
19
  # http://forums.dartware.com/viewtopic.php?t=452
20
- # ...and, yes, it is this hard. Doing it programatically is harder.
20
+ # ...and, yes, it is this hard. Doing it programmatically is harder.
21
21
  return true if addr =~ /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/
22
22
 
23
23
  return false
@@ -14,8 +14,7 @@ module Puppet
14
14
 
15
15
  **Autorequires:** If Puppet is managing any parents of a mount resource ---
16
16
  that is, other mount points higher up in the filesystem --- the child
17
- mount will autorequire them. If Puppet is managing the file path of a
18
- mount point, the mount resource will autorequire it.
17
+ mount will autorequire them.
19
18
 
20
19
  **Autobefores:** If Puppet is managing any child file paths of a mount
21
20
  point, the mount resource will autobefore them."
@@ -297,14 +296,11 @@ module Puppet
297
296
  dependencies[0..-2]
298
297
  end
299
298
 
300
- # Autorequire the mount point's file resource
301
- autorequire(:file) { Pathname.new(self[:name]) }
302
-
303
299
  # Autobefore the mount point's child file paths
304
300
  autobefore(:file) do
305
301
  dependencies = []
306
302
  file_resources = catalog.resources.select { |resource| resource.type == :file }
307
- children_file_resources = file_resources.select { |resource| File.expand_path(resource[:path]) =~ %r(#{self[:name]}/.) }
303
+ children_file_resources = file_resources.select { |resource| File.expand_path(resource[:path]) =~ %r(^#{self[:name]}/.) }
308
304
  children_file_resources.each do |child|
309
305
  dependencies.push Pathname.new(child[:path])
310
306
  end
@@ -6,7 +6,7 @@ module Puppet
6
6
  Type.newtype(:notify) do
7
7
  @doc = "Sends an arbitrary message to the agent run-time log."
8
8
 
9
- newproperty(:message) do
9
+ newproperty(:message, :idempotent => false) do
10
10
  desc "The message to be sent to the log."
11
11
  def sync
12
12
  case @resource["withpath"]
@@ -276,7 +276,7 @@ module Puppet
276
276
  # provider. So far, the logic that determines uniqueness appears to just
277
277
  # "Do The Right Thing™" when the provider is explicitly set by the user.
278
278
  #
279
- # The following resources will be seen as uniqe by puppet:
279
+ # The following resources will be seen as unique by puppet:
280
280
  #
281
281
  # # Uniqueness Key: ['mysql', nil]
282
282
  # package{'mysql': }
@@ -4,7 +4,7 @@ require 'puppet/parameter/boolean'
4
4
  Puppet::Type.newtype(:resources) do
5
5
  @doc = "This is a metatype that can manage other resource types. Any
6
6
  metaparams specified here will be passed on to any generated resources,
7
- so you can purge umanaged resources but set `noop` to true so the
7
+ so you can purge unmanaged resources but set `noop` to true so the
8
8
  purging is only logged and does not actually happen."
9
9
 
10
10
 
@@ -118,7 +118,7 @@ Puppet::Type.newtype(:scheduled_task) do
118
118
  * `months` --- Which months the task should run, as an array. Defaults to
119
119
  all months. Each month must be an integer between 1 and 12.
120
120
  * `on` **(Required)** --- Which days of the month the task should run,
121
- as an array. Each day must beeither an integer between 1 and 31,
121
+ as an array. Each day must be either an integer between 1 and 31,
122
122
  or the special value `last,` which is always the last day of the month.
123
123
  * For `monthly` (by weekday) triggers:
124
124
  * `months` --- Which months the task should run, as an array. Defaults to
@@ -6,14 +6,14 @@ module Puppet
6
6
  resource type requires you to split that line into several attributes. Thus, a
7
7
  key that appears in your `~/.ssh/id_rsa.pub` file like this...
8
8
 
9
- ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAy5mtOAMHwA2ZAIfW6Ap70r+I4EclYHEec5xIN59ROUjss23Skb1OtjzYpVPaPH8mSdSmsN0JHaBLiRcu7stl4O8D8zA4mz/vw32yyQ/Kqaxw8l0K76k6t2hKOGqLTY4aFbFISV6GDh7MYLn8KU7cGp96J+caO5R5TqtsStytsUhSyqH+iIDh4e4+BrwTc6V4Y0hgFxaZV5d18mLA4EPYKeG5+zyBCVu+jueYwFqM55E0tHbfiaIN9IzdLV+7NEEfdLkp6w2baLKPqWUBmuvPF1Mn3FwaFLjVsMT3GQeMue6b3FtUdTDeyAYoTxrsRo/WnDkS6Pa3YhrFwjtUqXfdaQ== nick@magpie.puppetlabs.lan
9
+ ssh-rsa AAAAB3Nza[...]qXfdaQ== nick@magpie.puppetlabs.lan
10
10
 
11
11
  ...would translate to the following resource:
12
12
 
13
13
  ssh_authorized_key { 'nick@magpie.puppetlabs.lan':
14
14
  user => 'nick',
15
15
  type => 'ssh-rsa',
16
- key => 'AAAAB3NzaC1yc2EAAAABIwAAAQEAy5mtOAMHwA2ZAIfW6Ap70r+I4EclYHEec5xIN59ROUjss23Skb1OtjzYpVPaPH8mSdSmsN0JHaBLiRcu7stl4O8D8zA4mz/vw32yyQ/Kqaxw8l0K76k6t2hKOGqLTY4aFbFISV6GDh7MYLn8KU7cGp96J+caO5R5TqtsStytsUhSyqH+iIDh4e4+BrwTc6V4Y0hgFxaZV5d18mLA4EPYKeG5+zyBCVu+jueYwFqM55E0tHbfiaIN9IzdLV+7NEEfdLkp6w2baLKPqWUBmuvPF1Mn3FwaFLjVsMT3GQeMue6b3FtUdTDeyAYoTxrsRo/WnDkS6Pa3YhrFwjtUqXfdaQ==',
16
+ key => 'AAAAB3Nza[...]qXfdaQ== nick@magpie.puppetlabs.lan',
17
17
  }
18
18
 
19
19
  To ensure that only the currently approved keys are present, you can purge
@@ -73,7 +73,7 @@ Puppet::Type.newtype(:tidy) do
73
73
  Finally, note that you must now specify a non-zero/non-false value
74
74
  for recurse if matches is used, as matches only apply to files found
75
75
  by recursion (there's no reason to use static patterns match against
76
- a statically determined path). Requiering explicit recursion clears
76
+ a statically determined path). Requiring explicit recursion clears
77
77
  up a common source of confusion.
78
78
  EOT
79
79