puppet 3.2.4 → 3.3.0.rc2

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 (562) hide show
  1. data/COMMITTERS.md +101 -42
  2. data/Gemfile +15 -4
  3. data/README.md +5 -1
  4. data/README_DEVELOPER.md +117 -54
  5. data/Rakefile +4 -0
  6. data/ext/build_defaults.yaml +3 -2
  7. data/ext/debian/puppet-common.manpages +33 -1
  8. data/ext/gentoo/init.d/puppet +1 -1
  9. data/ext/gentoo/init.d/puppetmaster +1 -1
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/install.rb +2 -1
  12. data/lib/hiera/backend/puppet_backend.rb +1 -1
  13. data/lib/puppet/application.rb +10 -9
  14. data/lib/puppet/application/agent.rb +87 -93
  15. data/lib/puppet/application/apply.rb +0 -2
  16. data/lib/puppet/application/device.rb +3 -3
  17. data/lib/puppet/application/kick.rb +2 -2
  18. data/lib/puppet/application/master.rb +41 -19
  19. data/lib/puppet/application/queue.rb +5 -3
  20. data/lib/puppet/bindings.rb +147 -0
  21. data/lib/puppet/configurer.rb +25 -15
  22. data/lib/puppet/configurer/fact_handler.rb +2 -9
  23. data/lib/puppet/daemon.rb +44 -33
  24. data/lib/puppet/defaults.rb +57 -26
  25. data/lib/puppet/error.rb +1 -1
  26. data/lib/puppet/external/dot.rb +2 -2
  27. data/lib/puppet/external/nagios/base.rb +1 -6
  28. data/lib/puppet/external/pson/common.rb +2 -2
  29. data/lib/puppet/external/pson/pure/generator.rb +2 -2
  30. data/lib/puppet/external/pson/pure/parser.rb +1 -1
  31. data/lib/puppet/face/ca.rb +1 -1
  32. data/lib/puppet/face/config.rb +1 -1
  33. data/lib/puppet/face/help.rb +2 -2
  34. data/lib/puppet/face/module/list.rb +2 -2
  35. data/lib/puppet/feature/rails.rb +1 -1
  36. data/lib/puppet/file_bucket/dipper.rb +0 -1
  37. data/lib/puppet/file_serving/base.rb +1 -1
  38. data/lib/puppet/file_serving/configuration/parser.rb +20 -14
  39. data/lib/puppet/forge.rb +0 -32
  40. data/lib/puppet/forge/cache.rb +1 -1
  41. data/lib/puppet/forge/errors.rb +3 -3
  42. data/lib/puppet/forge/repository.rb +7 -42
  43. data/lib/puppet/graph.rb +11 -0
  44. data/lib/puppet/graph/key.rb +26 -0
  45. data/lib/puppet/graph/prioritizer.rb +29 -0
  46. data/lib/puppet/graph/random_prioritizer.rb +16 -0
  47. data/lib/puppet/{rb_tree_map.rb → graph/rb_tree_map.rb} +3 -3
  48. data/lib/puppet/graph/relationship_graph.rb +246 -0
  49. data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
  50. data/lib/puppet/{simple_graph.rb → graph/simple_graph.rb} +22 -3
  51. data/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
  52. data/lib/puppet/indirector.rb +2 -2
  53. data/lib/puppet/indirector/catalog/compiler.rb +10 -7
  54. data/lib/puppet/indirector/catalog/static_compiler.rb +50 -0
  55. data/lib/puppet/indirector/certificate/rest.rb +1 -1
  56. data/lib/puppet/indirector/exec.rb +1 -1
  57. data/lib/puppet/indirector/facts/facter.rb +2 -2
  58. data/lib/puppet/indirector/facts/inventory_active_record.rb +0 -1
  59. data/lib/puppet/indirector/facts/network_device.rb +1 -1
  60. data/lib/puppet/indirector/file_bucket_file/file.rb +0 -1
  61. data/lib/puppet/indirector/indirection.rb +2 -2
  62. data/lib/puppet/indirector/memory.rb +9 -0
  63. data/lib/puppet/indirector/node/ldap.rb +2 -4
  64. data/lib/puppet/indirector/report/processor.rb +1 -2
  65. data/lib/puppet/indirector/report/rest.rb +1 -1
  66. data/lib/puppet/indirector/request.rb +32 -10
  67. data/lib/puppet/indirector/resource/rest.rb +1 -1
  68. data/lib/puppet/indirector/resource_type/parser.rb +31 -12
  69. data/lib/puppet/interface.rb +1 -1
  70. data/lib/puppet/interface/documentation.rb +7 -11
  71. data/lib/puppet/interface/option.rb +1 -1
  72. data/lib/puppet/interface/option_builder.rb +1 -1
  73. data/lib/puppet/metatype/manager.rb +2 -2
  74. data/lib/puppet/module.rb +7 -1
  75. data/lib/puppet/module_tool.rb +1 -1
  76. data/lib/puppet/module_tool/applications/application.rb +10 -0
  77. data/lib/puppet/module_tool/applications/installer.rb +6 -3
  78. data/lib/puppet/module_tool/dependency.rb +2 -0
  79. data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
  80. data/lib/puppet/module_tool/metadata.rb +25 -13
  81. data/lib/puppet/module_tool/modulefile.rb +7 -7
  82. data/lib/puppet/module_tool/shared_behaviors.rb +4 -2
  83. data/lib/puppet/module_tool/skeleton.rb +1 -1
  84. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +5 -5
  85. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +5 -4
  86. data/lib/puppet/network/auth_config_parser.rb +3 -0
  87. data/lib/puppet/network/authconfig.rb +0 -1
  88. data/lib/puppet/network/authorization.rb +1 -1
  89. data/lib/puppet/network/authstore.rb +2 -2
  90. data/lib/puppet/network/format_handler.rb +25 -114
  91. data/lib/puppet/network/format_support.rb +106 -0
  92. data/lib/puppet/network/formats.rb +10 -4
  93. data/lib/puppet/network/http/compression.rb +1 -1
  94. data/lib/puppet/network/http/connection.rb +76 -32
  95. data/lib/puppet/network/http/handler.rb +122 -61
  96. data/lib/puppet/network/http/rack/rest.rb +1 -1
  97. data/lib/puppet/network/http/webrick/rest.rb +9 -3
  98. data/lib/puppet/network/http_pool.rb +2 -2
  99. data/lib/puppet/network/resolver.rb +1 -0
  100. data/lib/puppet/network/server.rb +5 -81
  101. data/lib/puppet/node/environment.rb +256 -13
  102. data/lib/puppet/node/facts.rb +28 -2
  103. data/lib/puppet/parameter.rb +27 -18
  104. data/lib/puppet/parameter/boolean.rb +20 -0
  105. data/lib/puppet/parameter/path.rb +1 -1
  106. data/lib/puppet/parameter/value.rb +1 -1
  107. data/lib/puppet/parameter/value_collection.rb +1 -1
  108. data/lib/puppet/parser/ast/arithmetic_operator.rb +8 -0
  109. data/lib/puppet/parser/ast/casestatement.rb +0 -3
  110. data/lib/puppet/parser/ast/lambda.rb +25 -6
  111. data/lib/puppet/parser/ast/leaf.rb +10 -3
  112. data/lib/puppet/parser/ast/nop.rb +1 -1
  113. data/lib/puppet/parser/ast/resource_override.rb +0 -2
  114. data/lib/puppet/parser/compiler.rb +92 -34
  115. data/lib/puppet/parser/files.rb +0 -5
  116. data/lib/puppet/parser/functions/create_resources.rb +23 -46
  117. data/lib/puppet/parser/functions/each.rb +0 -2
  118. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  119. data/lib/puppet/parser/functions/foreach.rb +0 -2
  120. data/lib/puppet/parser/functions/hiera_include.rb +1 -1
  121. data/lib/puppet/parser/functions/lookup.rb +44 -0
  122. data/lib/puppet/parser/functions/slice.rb +1 -1
  123. data/lib/puppet/parser/grammar.ra +0 -1
  124. data/lib/puppet/parser/lexer.rb +0 -1
  125. data/lib/puppet/parser/parser.rb +0 -1
  126. data/lib/puppet/parser/parser_factory.rb +3 -2
  127. data/lib/puppet/parser/parser_support.rb +1 -1
  128. data/lib/puppet/parser/relationship.rb +1 -1
  129. data/lib/puppet/parser/scope.rb +49 -24
  130. data/lib/puppet/parser/type_loader.rb +13 -18
  131. data/lib/puppet/pops.rb +45 -0
  132. data/lib/puppet/pops/adaptable.rb +2 -2
  133. data/lib/puppet/pops/adapters.rb +4 -0
  134. data/lib/puppet/pops/binder/binder.rb +421 -0
  135. data/lib/puppet/pops/binder/binder_issues.rb +142 -0
  136. data/lib/puppet/pops/binder/bindings_checker.rb +217 -0
  137. data/lib/puppet/pops/binder/bindings_composer.rb +241 -0
  138. data/lib/puppet/pops/binder/bindings_factory.rb +847 -0
  139. data/lib/puppet/pops/binder/bindings_label_provider.rb +46 -0
  140. data/lib/puppet/pops/binder/bindings_loader.rb +79 -0
  141. data/lib/puppet/pops/binder/bindings_model.rb +215 -0
  142. data/lib/puppet/pops/binder/bindings_model_dumper.rb +205 -0
  143. data/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
  144. data/lib/puppet/pops/binder/config/binder_config.rb +139 -0
  145. data/lib/puppet/pops/binder/config/binder_config_checker.rb +183 -0
  146. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
  147. data/lib/puppet/pops/binder/config/issues.rb +106 -0
  148. data/lib/puppet/pops/binder/hiera2.rb +10 -0
  149. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +148 -0
  150. data/lib/puppet/pops/binder/hiera2/config.rb +69 -0
  151. data/lib/puppet/pops/binder/hiera2/config_checker.rb +68 -0
  152. data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +36 -0
  153. data/lib/puppet/pops/binder/hiera2/issues.rb +67 -0
  154. data/lib/puppet/pops/binder/hiera2/json_backend.rb +18 -0
  155. data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +21 -0
  156. data/lib/puppet/pops/binder/injector.rb +688 -0
  157. data/lib/puppet/pops/binder/injector_entry.rb +53 -0
  158. data/lib/puppet/pops/binder/key_factory.rb +61 -0
  159. data/lib/puppet/pops/binder/producers.rb +829 -0
  160. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +67 -0
  161. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
  162. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +92 -0
  163. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
  164. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +54 -0
  165. data/lib/puppet/pops/binder/system_bindings.rb +72 -0
  166. data/lib/puppet/pops/issue_reporter.rb +75 -0
  167. data/lib/puppet/pops/issues.rb +9 -5
  168. data/lib/puppet/pops/model/ast_transformer.rb +4 -4
  169. data/lib/puppet/pops/model/ast_tree_dumper.rb +1 -1
  170. data/lib/puppet/pops/model/factory.rb +25 -13
  171. data/lib/puppet/pops/model/model.rb +1 -1
  172. data/lib/puppet/pops/model/tree_dumper.rb +2 -2
  173. data/lib/puppet/pops/parser/egrammar.ra +0 -1
  174. data/lib/puppet/pops/parser/eparser.rb +1 -2
  175. data/lib/puppet/pops/parser/evaluating_parser.rb +162 -0
  176. data/lib/puppet/pops/parser/lexer.rb +8 -6
  177. data/lib/puppet/pops/types/class_loader.rb +118 -0
  178. data/lib/puppet/pops/types/type_calculator.rb +557 -0
  179. data/lib/puppet/pops/types/type_factory.rb +147 -0
  180. data/lib/puppet/pops/types/type_parser.rb +117 -0
  181. data/lib/puppet/pops/types/types.rb +132 -0
  182. data/lib/puppet/pops/validation.rb +146 -17
  183. data/lib/puppet/pops/validation/checker3_1.rb +1 -1
  184. data/lib/puppet/pops/validation/validator_factory_3_1.rb +6 -16
  185. data/lib/puppet/property.rb +3 -3
  186. data/lib/puppet/property/keyvalue.rb +1 -1
  187. data/lib/puppet/provider.rb +2 -2
  188. data/lib/puppet/provider/aixobject.rb +19 -21
  189. data/lib/puppet/provider/augeas/augeas.rb +3 -1
  190. data/lib/puppet/provider/command.rb +2 -2
  191. data/lib/puppet/provider/group/aix.rb +1 -1
  192. data/lib/puppet/provider/group/ldap.rb +1 -1
  193. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  194. data/lib/puppet/provider/mailalias/aliases.rb +3 -8
  195. data/lib/puppet/provider/mcx/mcxcontent.rb +7 -1
  196. data/lib/puppet/provider/mount.rb +8 -3
  197. data/lib/puppet/provider/nameservice.rb +1 -1
  198. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  199. data/lib/puppet/provider/package/appdmg.rb +1 -1
  200. data/lib/puppet/provider/package/apt.rb +0 -1
  201. data/lib/puppet/provider/package/dpkg.rb +86 -32
  202. data/lib/puppet/provider/package/fink.rb +0 -2
  203. data/lib/puppet/provider/package/freebsd.rb +0 -2
  204. data/lib/puppet/provider/package/openbsd.rb +57 -10
  205. data/lib/puppet/provider/package/opkg.rb +0 -1
  206. data/lib/puppet/provider/package/pacman.rb +0 -1
  207. data/lib/puppet/provider/package/pip.rb +1 -1
  208. data/lib/puppet/provider/package/pkgdmg.rb +17 -6
  209. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  210. data/lib/puppet/provider/package/portage.rb +9 -1
  211. data/lib/puppet/provider/package/ports.rb +2 -2
  212. data/lib/puppet/provider/package/rpm.rb +29 -12
  213. data/lib/puppet/provider/package/rug.rb +1 -1
  214. data/lib/puppet/provider/package/urpmi.rb +11 -15
  215. data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
  216. data/lib/puppet/provider/package/windows/package.rb +1 -26
  217. data/lib/puppet/provider/package/yum.rb +1 -1
  218. data/lib/puppet/provider/package/zypper.rb +22 -3
  219. data/lib/puppet/provider/parsedfile.rb +1 -12
  220. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +1 -1
  221. data/lib/puppet/provider/service/base.rb +1 -1
  222. data/lib/puppet/provider/service/daemontools.rb +3 -3
  223. data/lib/puppet/provider/service/debian.rb +1 -1
  224. data/lib/puppet/provider/service/init.rb +14 -20
  225. data/lib/puppet/provider/service/openrc.rb +3 -1
  226. data/lib/puppet/provider/service/redhat.rb +5 -8
  227. data/lib/puppet/provider/service/runit.rb +3 -2
  228. data/lib/puppet/provider/service/systemd.rb +1 -1
  229. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  230. data/lib/puppet/provider/sshkey/parsed.rb +0 -2
  231. data/lib/puppet/provider/user/aix.rb +25 -12
  232. data/lib/puppet/provider/user/directoryservice.rb +4 -7
  233. data/lib/puppet/provider/user/ldap.rb +0 -1
  234. data/lib/puppet/provider/user/user_role_add.rb +2 -0
  235. data/lib/puppet/provider/user/useradd.rb +1 -1
  236. data/lib/puppet/provider/zone/solaris.rb +1 -2
  237. data/lib/puppet/reference/metaparameter.rb +1 -1
  238. data/lib/puppet/reference/type.rb +1 -1
  239. data/lib/puppet/reports/rrdgraph.rb +1 -1
  240. data/lib/puppet/reports/tagmail.rb +1 -1
  241. data/lib/puppet/resource.rb +16 -4
  242. data/lib/puppet/resource/catalog.rb +111 -173
  243. data/lib/puppet/resource/status.rb +42 -3
  244. data/lib/puppet/resource/type.rb +33 -46
  245. data/lib/puppet/resource/type_collection.rb +19 -15
  246. data/lib/puppet/run.rb +5 -1
  247. data/lib/puppet/scheduler/scheduler.rb +14 -15
  248. data/lib/puppet/settings.rb +78 -41
  249. data/lib/puppet/settings/boolean_setting.rb +0 -2
  250. data/lib/puppet/settings/config_file.rb +0 -2
  251. data/lib/puppet/settings/directory_setting.rb +0 -2
  252. data/lib/puppet/settings/duration_setting.rb +0 -2
  253. data/lib/puppet/settings/enum_setting.rb +16 -0
  254. data/lib/puppet/settings/file_setting.rb +0 -2
  255. data/lib/puppet/settings/path_setting.rb +0 -2
  256. data/lib/puppet/settings/string_setting.rb +0 -3
  257. data/lib/puppet/settings/terminus_setting.rb +0 -2
  258. data/lib/puppet/ssl/certificate_authority.rb +102 -9
  259. data/lib/puppet/test/test_helper.rb +1 -0
  260. data/lib/puppet/transaction.rb +130 -292
  261. data/lib/puppet/transaction/additional_resource_generator.rb +126 -0
  262. data/lib/puppet/transaction/event.rb +16 -1
  263. data/lib/puppet/transaction/report.rb +34 -14
  264. data/lib/puppet/transaction/resource_harness.rb +16 -19
  265. data/lib/puppet/type.rb +59 -53
  266. data/lib/puppet/type/component.rb +0 -2
  267. data/lib/puppet/type/cron.rb +13 -2
  268. data/lib/puppet/type/exec.rb +5 -7
  269. data/lib/puppet/type/file.rb +9 -32
  270. data/lib/puppet/type/file/content.rb +4 -1
  271. data/lib/puppet/type/file/ctime.rb +3 -1
  272. data/lib/puppet/type/file/ensure.rb +1 -1
  273. data/lib/puppet/type/file/mode.rb +0 -1
  274. data/lib/puppet/type/file/mtime.rb +2 -1
  275. data/lib/puppet/type/group.rb +7 -9
  276. data/lib/puppet/type/host.rb +1 -2
  277. data/lib/puppet/type/mcx.rb +0 -1
  278. data/lib/puppet/type/mount.rb +38 -6
  279. data/lib/puppet/type/package.rb +2 -2
  280. data/lib/puppet/type/resources.rb +5 -4
  281. data/lib/puppet/type/schedule.rb +1 -4
  282. data/lib/puppet/type/selmodule.rb +1 -1
  283. data/lib/puppet/type/service.rb +1 -3
  284. data/lib/puppet/type/tidy.rb +3 -3
  285. data/lib/puppet/type/user.rb +9 -13
  286. data/lib/puppet/type/yumrepo.rb +11 -7
  287. data/lib/puppet/util.rb +14 -7
  288. data/lib/puppet/util/autoload.rb +0 -1
  289. data/lib/puppet/util/backups.rb +1 -3
  290. data/lib/puppet/util/classgen.rb +1 -1
  291. data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -3
  292. data/lib/puppet/util/command_line/trollop.rb +1 -1
  293. data/lib/puppet/util/constant_inflector.rb +1 -2
  294. data/lib/puppet/util/errors.rb +1 -0
  295. data/lib/puppet/util/file_watcher.rb +28 -0
  296. data/lib/puppet/util/fileparsing.rb +1 -3
  297. data/lib/puppet/util/filetype.rb +0 -1
  298. data/lib/puppet/util/http_proxy.rb +38 -0
  299. data/lib/puppet/util/ldap/manager.rb +1 -2
  300. data/lib/puppet/util/log.rb +31 -10
  301. data/lib/puppet/util/log/destinations.rb +0 -50
  302. data/lib/puppet/util/metric.rb +8 -1
  303. data/lib/puppet/util/monkey_patches.rb +14 -148
  304. data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
  305. data/lib/puppet/util/network_device/config.rb +6 -9
  306. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  307. data/lib/puppet/util/pidlock.rb +3 -0
  308. data/lib/puppet/util/posix.rb +1 -1
  309. data/lib/puppet/util/profiler.rb +1 -1
  310. data/lib/puppet/util/rdoc.rb +1 -1
  311. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +0 -1
  312. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -42
  313. data/lib/puppet/util/retryaction.rb +0 -1
  314. data/lib/puppet/util/symbolic_file_mode.rb +5 -1
  315. data/lib/puppet/util/tagging.rb +0 -2
  316. data/lib/puppet/util/warnings.rb +3 -0
  317. data/lib/puppet/util/watched_file.rb +37 -0
  318. data/lib/puppet/util/watcher.rb +17 -0
  319. data/lib/puppet/util/watcher/change_watcher.rb +33 -0
  320. data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
  321. data/lib/puppet/util/watcher/timer.rb +19 -0
  322. data/lib/puppet/util/windows/user.rb +1 -1
  323. data/lib/puppet/version.rb +1 -1
  324. data/lib/puppetx.rb +109 -0
  325. data/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
  326. data/lib/puppetx/puppet/hiera2_backend.rb +31 -0
  327. data/lib/puppetx/puppet/syntax_checker.rb +91 -0
  328. data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +39 -0
  329. data/lib/semver.rb +1 -1
  330. data/man/man8/puppet-kick.8 +1 -1
  331. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +15 -0
  332. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +18 -0
  333. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +8 -0
  334. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +1 -0
  335. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +10 -0
  336. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +19 -0
  337. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +1 -0
  338. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +11 -0
  339. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +1 -0
  340. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +3 -0
  341. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +13 -0
  342. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +4 -0
  343. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +11 -0
  344. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_scheme_handler.rb +18 -0
  345. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +1 -0
  346. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +3 -0
  347. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +9 -0
  348. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +2 -0
  349. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +11 -0
  350. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +9 -0
  351. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +9 -0
  352. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +9 -0
  353. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +5 -0
  354. data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +10 -0
  355. data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +8 -0
  356. data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +1 -0
  357. data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +7 -0
  358. data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +4 -0
  359. data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +2 -0
  360. data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +8 -0
  361. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/empty/common.yaml +0 -0
  362. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +1 -0
  363. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +2 -0
  364. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +2 -0
  365. data/spec/integration/agent/logging_spec.rb +178 -0
  366. data/spec/integration/configurer_spec.rb +1 -1
  367. data/spec/integration/defaults_spec.rb +0 -6
  368. data/spec/integration/network/authconfig_spec.rb +19 -0
  369. data/spec/integration/network/server/webrick_spec.rb +10 -11
  370. data/spec/integration/parser/catalog_spec.rb +85 -0
  371. data/spec/integration/provider/cron/crontab_spec.rb +11 -0
  372. data/spec/integration/provider/mount_spec.rb +1 -0
  373. data/spec/integration/transaction_spec.rb +8 -8
  374. data/spec/integration/type/file_spec.rb +1 -1
  375. data/spec/integration/util/settings_spec.rb +58 -11
  376. data/spec/lib/matchers/include_in_order.rb +21 -0
  377. data/spec/lib/matchers/include_in_order_spec.rb +30 -0
  378. data/spec/lib/matchers/relationship_graph_matchers.rb +48 -0
  379. data/spec/lib/puppet_spec/compiler.rb +24 -0
  380. data/spec/lib/puppet_spec/pops.rb +16 -0
  381. data/spec/spec_helper.rb +0 -1
  382. data/spec/unit/application/agent_spec.rb +145 -145
  383. data/spec/unit/application/apply_spec.rb +1 -1
  384. data/spec/unit/application/doc_spec.rb +1 -1
  385. data/spec/unit/application/face_base_spec.rb +3 -3
  386. data/spec/unit/application/facts_spec.rb +1 -0
  387. data/spec/unit/application/master_spec.rb +0 -15
  388. data/spec/unit/application/queue_spec.rb +6 -12
  389. data/spec/unit/application/resource_spec.rb +1 -1
  390. data/spec/unit/configurer/fact_handler_spec.rb +19 -50
  391. data/spec/unit/configurer_spec.rb +23 -7
  392. data/spec/unit/daemon_spec.rb +97 -121
  393. data/spec/unit/defaults_spec.rb +44 -0
  394. data/spec/unit/face/node_spec.rb +2 -2
  395. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -33
  396. data/spec/unit/file_serving/configuration_spec.rb +2 -2
  397. data/spec/unit/file_serving/mount/file_spec.rb +4 -4
  398. data/spec/unit/forge/repository_spec.rb +9 -29
  399. data/spec/unit/graph/key_spec.rb +41 -0
  400. data/spec/unit/{rb_tree_map_spec.rb → graph/rb_tree_map_spec.rb} +7 -7
  401. data/spec/unit/graph/relationship_graph_spec.rb +393 -0
  402. data/spec/unit/graph/sequential_prioritizer_spec.rb +32 -0
  403. data/spec/unit/{simple_graph_spec.rb → graph/simple_graph.rb} +42 -254
  404. data/spec/unit/graph/title_hash_prioritizer_spec.rb +49 -0
  405. data/spec/unit/hiera_puppet_spec.rb +1 -1
  406. data/spec/unit/indirector/catalog/active_record_spec.rb +4 -2
  407. data/spec/unit/indirector/catalog/compiler_spec.rb +20 -26
  408. data/spec/unit/indirector/face_spec.rb +1 -1
  409. data/spec/unit/indirector/facts/facter_spec.rb +11 -1
  410. data/spec/unit/indirector/facts/network_device_spec.rb +11 -1
  411. data/spec/unit/indirector/hiera_spec.rb +1 -1
  412. data/spec/unit/indirector/instrumentation_data/local_spec.rb +1 -1
  413. data/spec/unit/indirector/instrumentation_listener/local_spec.rb +1 -1
  414. data/spec/unit/indirector/request_spec.rb +92 -39
  415. data/spec/unit/indirector/rest_spec.rb +1 -0
  416. data/spec/unit/indirector_spec.rb +2 -2
  417. data/spec/unit/interface/option_builder_spec.rb +1 -0
  418. data/spec/unit/interface/option_spec.rb +1 -0
  419. data/spec/unit/interface_spec.rb +2 -2
  420. data/spec/unit/module_tool/applications/installer_spec.rb +49 -2
  421. data/spec/unit/module_tool/metadata_spec.rb +13 -0
  422. data/spec/unit/network/authstore_spec.rb +1 -1
  423. data/spec/unit/network/format_handler_spec.rb +33 -282
  424. data/spec/unit/network/format_support_spec.rb +199 -0
  425. data/spec/unit/network/formats_spec.rb +2 -2
  426. data/spec/unit/network/http/connection_spec.rb +88 -7
  427. data/spec/unit/network/http/handler_spec.rb +271 -249
  428. data/spec/unit/network/http/rack/rest_spec.rb +1 -1
  429. data/spec/unit/network/http/webrick/rest_spec.rb +73 -22
  430. data/spec/unit/network/http_pool_spec.rb +40 -0
  431. data/spec/unit/network/server_spec.rb +18 -207
  432. data/spec/unit/node/facts_spec.rb +68 -17
  433. data/spec/unit/other/selinux_spec.rb +24 -20
  434. data/spec/unit/parameter/boolean_spec.rb +25 -0
  435. data/spec/unit/parameter/value_collection_spec.rb +7 -7
  436. data/spec/unit/parameter_spec.rb +10 -13
  437. data/spec/unit/parser/ast/function_spec.rb +4 -4
  438. data/spec/unit/parser/ast/leaf_spec.rb +45 -6
  439. data/spec/unit/parser/collector_spec.rb +3 -3
  440. data/spec/unit/parser/compiler_spec.rb +4 -3
  441. data/spec/unit/parser/functions/create_resources_spec.rb +9 -25
  442. data/spec/unit/parser/functions/extlookup_spec.rb +2 -2
  443. data/spec/unit/parser/functions/hiera_include_spec.rb +12 -0
  444. data/spec/unit/parser/functions/lookup_spec.rb +96 -0
  445. data/spec/unit/parser/functions/regsubst_spec.rb +2 -2
  446. data/spec/unit/parser/functions/split_spec.rb +2 -2
  447. data/spec/unit/parser/functions/sprintf_spec.rb +1 -1
  448. data/spec/unit/parser/functions/versioncmp_spec.rb +2 -2
  449. data/spec/unit/parser/functions_spec.rb +7 -7
  450. data/spec/unit/parser/lexer_spec.rb +1 -1
  451. data/spec/unit/parser/methods/collect_spec.rb +43 -0
  452. data/spec/unit/parser/resource_spec.rb +9 -9
  453. data/spec/unit/parser/scope_spec.rb +45 -2
  454. data/spec/unit/parser/type_loader_spec.rb +159 -175
  455. data/spec/unit/pops/binder/binder_spec.rb +62 -0
  456. data/spec/unit/pops/binder/bindings_checker_spec.rb +196 -0
  457. data/spec/unit/pops/binder/bindings_composer_spec.rb +89 -0
  458. data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +18 -0
  459. data/spec/unit/pops/binder/config/binder_config_spec.rb +48 -0
  460. data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +74 -0
  461. data/spec/unit/pops/binder/hiera2/config_spec.rb +61 -0
  462. data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +33 -0
  463. data/spec/unit/pops/binder/injector_spec.rb +789 -0
  464. data/spec/unit/pops/containment_spec.rb +1 -0
  465. data/spec/unit/pops/issues_spec.rb +1 -1
  466. data/spec/unit/pops/parser/evaluating_parser_spec.rb +88 -0
  467. data/spec/unit/pops/parser/lexer_spec.rb +1 -1
  468. data/spec/unit/pops/parser/parse_calls_spec.rb +4 -0
  469. data/spec/unit/pops/parser/parser_spec.rb +1 -1
  470. data/spec/unit/pops/types/type_calculator_spec.rb +484 -0
  471. data/spec/unit/pops/types/type_factory_spec.rb +65 -0
  472. data/spec/unit/pops/types/type_parser_spec.rb +93 -0
  473. data/spec/unit/property/list_spec.rb +1 -1
  474. data/spec/unit/property/ordered_list_spec.rb +1 -1
  475. data/spec/unit/provider/aixobject_spec.rb +101 -0
  476. data/spec/unit/provider/augeas/augeas_spec.rb +14 -3
  477. data/spec/unit/provider/mcx/mcxcontent_spec.rb +52 -16
  478. data/spec/unit/provider/mount/parsed_spec.rb +44 -56
  479. data/spec/unit/provider/mount_spec.rb +11 -2
  480. data/spec/unit/provider/naginator_spec.rb +8 -0
  481. data/spec/unit/provider/package/apt_spec.rb +5 -1
  482. data/spec/unit/provider/package/aptitude_spec.rb +9 -5
  483. data/spec/unit/provider/package/aptrpm_spec.rb +2 -2
  484. data/spec/unit/provider/package/dpkg_spec.rb +274 -99
  485. data/spec/unit/provider/package/openbsd_spec.rb +84 -1
  486. data/spec/unit/provider/package/opkg_spec.rb +3 -3
  487. data/spec/unit/provider/package/pip_spec.rb +16 -0
  488. data/spec/unit/provider/package/pkgdmg_spec.rb +62 -7
  489. data/spec/unit/provider/package/rpm_spec.rb +112 -21
  490. data/spec/unit/provider/package/urpmi.rb +80 -0
  491. data/spec/unit/provider/package/windows/exe_package_spec.rb +1 -1
  492. data/spec/unit/provider/package/yum_spec.rb +85 -0
  493. data/spec/unit/provider/package/zypper_spec.rb +25 -6
  494. data/spec/unit/provider/parsedfile_spec.rb +3 -2
  495. data/spec/unit/provider/service/init_spec.rb +10 -10
  496. data/spec/unit/provider/service/openrc_spec.rb +16 -0
  497. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  498. data/spec/unit/provider/service/redhat_spec.rb +7 -0
  499. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +2 -2
  500. data/spec/unit/provider/user/aix_spec.rb +89 -0
  501. data/spec/unit/provider/user/directoryservice_spec.rb +11 -4
  502. data/spec/unit/provider/user/user_role_add_spec.rb +18 -0
  503. data/spec/unit/provider_spec.rb +2 -13
  504. data/spec/unit/reports/http_spec.rb +1 -1
  505. data/spec/unit/resource/catalog_spec.rb +23 -97
  506. data/spec/unit/resource/resource_type.json +34 -0
  507. data/spec/unit/resource/status_spec.rb +56 -0
  508. data/spec/unit/resource/type_collection_spec.rb +6 -6
  509. data/spec/unit/resource/type_spec.rb +25 -5
  510. data/spec/unit/resource_spec.rb +68 -24
  511. data/spec/unit/run_spec.rb +16 -0
  512. data/spec/unit/scheduler/scheduler_spec.rb +14 -27
  513. data/spec/unit/semver_spec.rb +5 -0
  514. data/spec/unit/settings/enum_setting_spec.rb +27 -0
  515. data/spec/unit/settings_spec.rb +53 -44
  516. data/spec/unit/ssl/certificate_authority_spec.rb +155 -19
  517. data/spec/unit/transaction/additional_resource_generator_spec.rb +419 -0
  518. data/spec/unit/transaction/event_manager_spec.rb +2 -2
  519. data/spec/unit/transaction/event_spec.rb +57 -0
  520. data/spec/unit/transaction/report_spec.rb +66 -0
  521. data/spec/unit/transaction/resource_harness_spec.rb +27 -20
  522. data/spec/unit/transaction_spec.rb +182 -390
  523. data/spec/unit/type/augeas_spec.rb +3 -3
  524. data/spec/unit/type/component_spec.rb +0 -9
  525. data/spec/unit/type/computer_spec.rb +1 -1
  526. data/spec/unit/type/cron_spec.rb +2 -2
  527. data/spec/unit/type/exec_spec.rb +4 -2
  528. data/spec/unit/type/file/content_spec.rb +11 -0
  529. data/spec/unit/type/file/group_spec.rb +1 -1
  530. data/spec/unit/type/file_spec.rb +16 -8
  531. data/spec/unit/type/mount_spec.rb +445 -259
  532. data/spec/unit/type/package_spec.rb +4 -4
  533. data/spec/unit/type/resources_spec.rb +30 -1
  534. data/spec/unit/type/user_spec.rb +26 -3
  535. data/spec/unit/type/yumrepo_spec.rb +7 -27
  536. data/spec/unit/type/zone_spec.rb +4 -1
  537. data/spec/unit/type_spec.rb +66 -33
  538. data/spec/unit/util/backups_spec.rb +3 -3
  539. data/spec/unit/util/http_proxy_spec.rb +83 -0
  540. data/spec/unit/util/log_spec.rb +79 -8
  541. data/spec/unit/util/metric_spec.rb +12 -0
  542. data/spec/unit/util/monkey_patches_spec.rb +6 -0
  543. data/spec/unit/util/network_device/config_spec.rb +26 -64
  544. data/spec/unit/util/pidlock_spec.rb +4 -1
  545. data/spec/unit/util/tagging_spec.rb +5 -9
  546. data/spec/unit/util/warnings_spec.rb +1 -1
  547. data/spec/unit/util/watched_file_spec.rb +52 -0
  548. data/spec/unit/util/watcher/periodic_watcher_spec.rb +52 -0
  549. data/spec/unit/util/watcher_spec.rb +56 -0
  550. data/spec/unit/util_spec.rb +16 -0
  551. metadata +2767 -2576
  552. data/ext/debian/puppet.manpages +0 -32
  553. data/ext/osx/PackageInfo.plist +0 -36
  554. data/ext/osx/createpackage.sh +0 -187
  555. data/ext/redhat/rundir-perms.patch +0 -28
  556. data/lib/puppet/external/base64.rb +0 -19
  557. data/lib/puppet/util/graph.rb +0 -27
  558. data/lib/puppet/util/loadedfile.rb +0 -61
  559. data/lib/puppet/util/log_paths.rb +0 -22
  560. data/lib/puppet/util/subclass_loader.rb +0 -78
  561. data/spec/monkey_patches/publicize_methods.rb +0 -11
  562. data/spec/unit/util/loadedfile_spec.rb +0 -71
@@ -1,4 +1,5 @@
1
1
  require 'puppet'
2
+ require 'puppet/parameter/boolean'
2
3
 
3
4
  Puppet::Type.newtype(:resources) do
4
5
  @doc = "This is a metatype that can manage other resource types. Any
@@ -17,15 +18,15 @@ Puppet::Type.newtype(:resources) do
17
18
  munge { |v| v.to_s }
18
19
  end
19
20
 
20
- newparam(:purge, :boolean => true) do
21
+ newparam(:purge, :boolean => true, :parent => Puppet::Parameter::Boolean) do
21
22
  desc "Purge unmanaged resources. This will delete any resource
22
23
  that is not specified in your configuration
23
24
  and is not required by any specified resources."
24
25
 
25
- newvalues(:true, :false)
26
+ defaultto :false
26
27
 
27
28
  validate do |value|
28
- if [:true, true, "true"].include?(value)
29
+ if munge(value)
29
30
  unless @resource.resource_type.respond_to?(:instances)
30
31
  raise ArgumentError, "Purging resources of type #{@resource[:name]} is not supported, since they cannot be queried from the system"
31
32
  end
@@ -76,7 +77,7 @@ Puppet::Type.newtype(:resources) do
76
77
 
77
78
  def able_to_ensure_absent?(resource)
78
79
  resource[:ensure] = :absent
79
- rescue ArgumentError, Puppet::Error => detail
80
+ rescue ArgumentError, Puppet::Error
80
81
  err "The 'ensure' attribute on #{self[:name]} resources does not accept 'absent' as a value"
81
82
  false
82
83
  end
@@ -130,7 +130,7 @@ module Puppet
130
130
  def match?(previous, now)
131
131
  # The lowest-level array is of the hour, minute, second triad
132
132
  # then it's an array of two of those, to present the limits
133
- # then it's array of those ranges
133
+ # then it's an array of those ranges
134
134
  @value = [@value] unless @value[0][0].is_a?(Array)
135
135
 
136
136
  @value.each do |value|
@@ -304,9 +304,6 @@ module Puppet
304
304
  # than the unit of time, we match. We divide the scale
305
305
  # by the repeat, so that we'll repeat that often within
306
306
  # the scale.
307
- diff = (now.to_i - previous.to_i)
308
- comparison = (scale / @resource[:repeat])
309
-
310
307
  return (now.to_i - previous.to_i) >= (scale / @resource[:repeat])
311
308
  end
312
309
  end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Simple module for manageing SELinux policy modules
2
+ # Simple module for managing SELinux policy modules
3
3
  #
4
4
 
5
5
  Puppet::Type.newtype(:selmodule) do
@@ -142,9 +142,7 @@ module Puppet
142
142
 
143
143
  munge do |value|
144
144
  value = [value] unless value.is_a?(Array)
145
- # LAK:NOTE See http://snurl.com/21zf8 [groups_google_com]
146
- # It affects stand-alone blocks, too.
147
- paths = value.flatten.collect { |p| x = p.split(File::PATH_SEPARATOR) }.flatten
145
+ value.flatten.collect { |p| p.split(File::PATH_SEPARATOR) }.flatten
148
146
  end
149
147
 
150
148
  defaultto { provider.class.defpath if provider.class.respond_to?(:defpath) }
@@ -1,3 +1,5 @@
1
+ require 'puppet/parameter/boolean'
2
+
1
3
  Puppet::Type.newtype(:tidy) do
2
4
  require 'puppet/file_serving/fileset'
3
5
  require 'puppet/file_bucket/dipper'
@@ -185,13 +187,11 @@ Puppet::Type.newtype(:tidy) do
185
187
  defaultto :atime
186
188
  end
187
189
 
188
- newparam(:rmdirs, :boolean => true) do
190
+ newparam(:rmdirs, :boolean => true, :parent => Puppet::Parameter::Boolean) do
189
191
  desc "Tidy directories in addition to files; that is, remove
190
192
  directories whose age is older than the specified criteria.
191
193
  This will only remove empty directories, so all contained
192
194
  files must also be tidied before a directory gets removed."
193
-
194
- newvalues :true, :false
195
195
  end
196
196
 
197
197
  # Erase PFile's validate method
@@ -1,5 +1,6 @@
1
1
  require 'etc'
2
2
  require 'facter'
3
+ require 'puppet/parameter/boolean'
3
4
  require 'puppet/property/list'
4
5
  require 'puppet/property/ordered_list'
5
6
  require 'puppet/property/keyvalue'
@@ -283,35 +284,29 @@ module Puppet
283
284
  defaultto :minimum
284
285
  end
285
286
 
286
- newparam(:system, :boolean => true) do
287
+ newparam(:system, :boolean => true, :parent => Puppet::Parameter::Boolean) do
287
288
  desc "Whether the user is a system user, according to the OS's criteria;
288
289
  on most platforms, a UID less than or equal to 500 indicates a system
289
290
  user. Defaults to `false`."
290
291
 
291
- newvalues(:true, :false)
292
-
293
292
  defaultto false
294
293
  end
295
294
 
296
- newparam(:allowdupe, :boolean => true) do
295
+ newparam(:allowdupe, :boolean => true, :parent => Puppet::Parameter::Boolean) do
297
296
  desc "Whether to allow duplicate UIDs. Defaults to `false`."
298
297
 
299
- newvalues(:true, :false)
300
-
301
298
  defaultto false
302
299
  end
303
300
 
304
- newparam(:managehome, :boolean => true) do
301
+ newparam(:managehome, :boolean => true, :parent => Puppet::Parameter::Boolean) do
305
302
  desc "Whether to manage the home directory when managing the user.
306
303
  This will create the home directory when `ensure => present`, and
307
304
  delete the home directory when `ensure => absent`. Defaults to `false`."
308
305
 
309
- newvalues(:true, :false)
310
-
311
306
  defaultto false
312
307
 
313
308
  validate do |val|
314
- if val.to_s == "true"
309
+ if munge(val)
315
310
  raise ArgumentError, "User provider #{provider.class.name} can not manage home directories" if provider and not provider.class.manages_homedir?
316
311
  end
317
312
  end
@@ -370,7 +365,7 @@ module Puppet
370
365
  #
371
366
  # (see Puppet::Settings#service_user_available?)
372
367
  #
373
- # @returns [Boolean] if the user exists on the system
368
+ # @return [Boolean] if the user exists on the system
374
369
  # @api private
375
370
  def exists?
376
371
  provider.exists?
@@ -559,10 +554,11 @@ module Puppet
559
554
  end
560
555
  end
561
556
 
562
- newparam(:forcelocal, :boolean => true, :required_features => :libuser ) do
557
+ newparam(:forcelocal, :boolean => true,
558
+ :required_features => :libuser,
559
+ :parent => Puppet::Parameter::Boolean) do
563
560
  desc "Forces the mangement of local accounts when accounts are also
564
561
  being managed by some other NSS"
565
- newvalues(:true, :false)
566
562
  defaultto false
567
563
  end
568
564
  end
@@ -1,5 +1,3 @@
1
- # Description of yum repositories
2
-
3
1
  require 'puppet/util/inifile'
4
2
 
5
3
  module Puppet
@@ -232,7 +230,7 @@ module Puppet
232
230
  desc "Whether this repository is enabled, as represented by a
233
231
  `0` or `1`. #{ABSENT_DOC}"
234
232
  newvalue(:absent) { self.should = :absent }
235
- newvalue(%r{(0|1)}) { }
233
+ newvalue(/^(0|1)$/) { }
236
234
  end
237
235
 
238
236
  newproperty(:gpgcheck, :parent => Puppet::IniProperty) do
@@ -240,7 +238,7 @@ module Puppet
240
238
  from this repository, as represented by a `0` or `1`.
241
239
  #{ABSENT_DOC}"
242
240
  newvalue(:absent) { self.should = :absent }
243
- newvalue(%r{(0|1)}) { }
241
+ newvalue(/^(0|1)$/) { }
244
242
  end
245
243
 
246
244
  newproperty(:gpgkey, :parent => Puppet::IniProperty) do
@@ -280,7 +278,7 @@ module Puppet
280
278
  desc "Whether yum will allow the use of package groups for this
281
279
  repository, as represented by a `0` or `1`. #{ABSENT_DOC}"
282
280
  newvalue(:absent) { self.should = :absent }
283
- newvalue(%r{(0|1)}) { }
281
+ newvalue(/^(0|1)$/) { }
284
282
  end
285
283
 
286
284
  newproperty(:failovermethod, :parent => Puppet::IniProperty) do
@@ -294,7 +292,7 @@ module Puppet
294
292
  desc "Whether HTTP/1.1 keepalive should be used with this repository, as
295
293
  represented by a `0` or `1`. #{ABSENT_DOC}"
296
294
  newvalue(:absent) { self.should = :absent }
297
- newvalue(%r{(0|1)}) { }
295
+ newvalue(/^(0|1)$/) { }
298
296
  end
299
297
 
300
298
  newproperty(:http_caching, :parent => Puppet::IniProperty) do
@@ -322,7 +320,7 @@ module Puppet
322
320
  that the `protectbase` plugin is installed and enabled.
323
321
  #{ABSENT_DOC}"
324
322
  newvalue(:absent) { self.should = :absent }
325
- newvalue(%r{(0|1)}) { }
323
+ newvalue(/^(0|1)$/) { }
326
324
  end
327
325
 
328
326
  newproperty(:priority, :parent => Puppet::IniProperty) do
@@ -358,6 +356,12 @@ module Puppet
358
356
  newvalue(/.*/) { }
359
357
  end
360
358
 
359
+ newproperty(:s3_enabled, :parent => Puppet::IniProperty) do
360
+ desc "Access the repo via S3. #{ABSENT_DOC}"
361
+ newvalue(:absent) { self.should = :absent }
362
+ newvalue(/^(0|1)$/) { }
363
+ end
364
+
361
365
  newproperty(:sslcacert, :parent => Puppet::IniProperty) do
362
366
  desc "Path to the directory containing the databases of the
363
367
  certificate authorities yum should use to verify SSL certificates.\n#{ABSENT_DOC}"
@@ -11,6 +11,8 @@ require 'tempfile'
11
11
  require 'pathname'
12
12
  require 'ostruct'
13
13
  require 'puppet/util/platform'
14
+ require 'puppet/util/symbolic_file_mode'
15
+ require 'securerandom'
14
16
 
15
17
  module Puppet
16
18
  module Util
@@ -22,6 +24,8 @@ module Util
22
24
  require 'puppet/util/posix'
23
25
  extend Puppet::Util::POSIX
24
26
 
27
+ extend Puppet::Util::SymbolicFileMode
28
+
25
29
  @@sync_objects = {}.extend MonitorMixin
26
30
 
27
31
 
@@ -174,7 +178,6 @@ module Util
174
178
 
175
179
  # Only benchmark if our log level is high enough
176
180
  if level != :none and Puppet::Util::Log.sendlevel?(level)
177
- result = nil
178
181
  seconds = Benchmark.realtime {
179
182
  yield
180
183
  }
@@ -396,15 +399,19 @@ module Util
396
399
  #
397
400
  # The default_mode is the mode to use when the target file doesn't already
398
401
  # exist; if the file is present we copy the existing mode/owner/group values
399
- # across.
402
+ # across. The default_mode can be expressed as an octal integer, a numeric string (ie '0664')
403
+ # or a symbolic file mode.
400
404
  def replace_file(file, default_mode, &block)
401
405
  raise Puppet::DevError, "replace_file requires a block" unless block_given?
402
406
 
407
+ unless valid_symbolic_mode?(default_mode)
408
+ raise Puppet::DevError, "replace_file default_mode: #{default_mode} is invalid"
409
+ end
410
+ mode = symbolic_mode_to_int(normalize_symbolic_mode(default_mode))
411
+
403
412
  file = Pathname(file)
404
413
  tempfile = Tempfile.new(file.basename.to_s, file.dirname.to_s)
405
414
 
406
- file_exists = file.exist?
407
-
408
415
  # Set properties of the temporary file before we write the content, because
409
416
  # Tempfile doesn't promise to be safe from reading by other people, just
410
417
  # that it avoids races around creating the file.
@@ -415,7 +422,7 @@ module Util
415
422
  # secure" tempfile permissions instead. Magic happens later.
416
423
  unless Puppet.features.microsoft_windows?
417
424
  # Grab the current file mode, and fall back to the defaults.
418
- stat = file.lstat rescue OpenStruct.new(:mode => default_mode,
425
+ stat = file.lstat rescue OpenStruct.new(:mode => mode,
419
426
  :uid => Process.euid,
420
427
  :gid => Process.egid)
421
428
 
@@ -456,7 +463,7 @@ module Util
456
463
  # Yes, the arguments are reversed compared to the rename in the rest
457
464
  # of the world.
458
465
  Puppet::Util::Windows::File.replace_file(file, tempfile.path)
459
- rescue Puppet::Util::Windows::Error => e
466
+ rescue Puppet::Util::Windows::Error
460
467
  # This might race, but there are enough possible cases that there
461
468
  # isn't a good, solid "better" way to do this, and the next call
462
469
  # should fail in the same way anyhow.
@@ -475,7 +482,7 @@ module Util
475
482
  end
476
483
 
477
484
  # Set the permissions to what we want.
478
- Puppet::Util::Windows::Security.set_mode(default_mode, file.to_s)
485
+ Puppet::Util::Windows::Security.set_mode(mode, file.to_s)
479
486
 
480
487
  # ...and finally retry the operation.
481
488
  retry
@@ -85,7 +85,6 @@ class Puppet::Util::Autoload
85
85
  # returns nil if no file is found
86
86
  def get_file(name, env=nil)
87
87
  name = name + '.rb' unless name =~ /\.rb$/
88
- dirname, base = File.split(name)
89
88
  path = search_directories(env).find { |dir| File.exist?(File.join(dir, name)) }
90
89
  path and File.join(path, name)
91
90
  end
@@ -19,7 +19,7 @@ module Puppet::Util::Backups
19
19
 
20
20
  def perform_backup_with_bucket(fileobj)
21
21
  file = (fileobj.class == String) ? fileobj : fileobj.name
22
- case File.stat(file).ftype
22
+ case File.lstat(file).ftype
23
23
  when "directory"
24
24
  # we don't need to backup directories when recurse is on
25
25
  return true if self[:recurse]
@@ -40,8 +40,6 @@ module Puppet::Util::Backups
40
40
  begin
41
41
  bfile = file + backup
42
42
 
43
- # Ruby 1.8.1 requires the 'preserve' addition, but
44
- # later versions do not appear to require it.
45
43
  # N.B. cp_r works on both files and directories
46
44
  FileUtils.cp_r(file, bfile, :preserve => true)
47
45
  return true
@@ -36,7 +36,7 @@ module Puppet::Util::ClassGen
36
36
 
37
37
  # Creates a new module.
38
38
  # @param name [String] the name of the generated module
39
- # @param optinos [Hash] hash with options
39
+ # @param options [Hash] hash with options
40
40
  # @option options [Array<Class>] :array if specified, the generated class is appended to this array
41
41
  # @option options [Hash<{String => Object}>] :attributes a hash that is applied to the generated class
42
42
  # by calling setter methods corresponding to this hash's keys/value pairs. This is done before the given
@@ -11,7 +11,7 @@ module Puppet
11
11
  # This is a command line option parser. It is intended to have an API that is very similar to
12
12
  # the ruby stdlib 'OptionParser' API, for ease of integration into our existing code... however,
13
13
  # However, we've removed the OptionParser-based implementation and are only maintaining the
14
- # it's impilemented based on the third-party "trollop" library. This was done because there
14
+ # it's implemented based on the third-party "trollop" library. This was done because there
15
15
  # are places where the stdlib OptionParser is not flexible enough to meet our needs.
16
16
 
17
17
  class PuppetOptionParser
@@ -22,8 +22,6 @@ module Puppet
22
22
 
23
23
  @parser = Trollop::Parser.new do
24
24
  banner usage_msg
25
- create_default_short_options = false
26
- handle_help_and_version = false
27
25
  end
28
26
 
29
27
  end
@@ -454,7 +454,7 @@ class Parser
454
454
  # chronic is not available
455
455
  end
456
456
  time ? Date.new(time.year, time.month, time.day) : Date.parse(param)
457
- rescue ArgumentError => e
457
+ rescue ArgumentError
458
458
  raise CommandlineError, "option '#{arg}' needs a date"
459
459
  end
460
460
  end
@@ -11,8 +11,7 @@ module Puppet
11
11
  module Util
12
12
  module ConstantInflector
13
13
  def file2constant(file)
14
- # LAK:NOTE See http://snurl.com/21zf8 [groups_google_com]
15
- x = file.split("/").collect { |name| name.capitalize }.join("::").gsub(/_+(.)/) { |term| $1.capitalize }
14
+ file.split("/").collect { |name| name.capitalize }.join("::").gsub(/_+(.)/) { |term| $1.capitalize }
16
15
  end
17
16
  module_function :file2constant
18
17
 
@@ -22,6 +22,7 @@ module Puppet::Util::Errors
22
22
  def adderrorcontext(error, other = nil)
23
23
  error.line ||= self.line if error.respond_to?(:line=) and self.respond_to?(:line) and self.line
24
24
  error.file ||= self.file if error.respond_to?(:file=) and self.respond_to?(:file) and self.file
25
+ error.original ||= other if error.respond_to?(:original=)
25
26
 
26
27
  error.set_backtrace(other.backtrace) if other and other.respond_to?(:backtrace)
27
28
 
@@ -0,0 +1,28 @@
1
+ class Puppet::Util::FileWatcher
2
+ include Enumerable
3
+
4
+ def each(&blk)
5
+ @files.keys.each(&blk)
6
+ end
7
+
8
+ def initialize
9
+ @files = {}
10
+ end
11
+
12
+ def changed?
13
+ @files.values.any?(&:changed?)
14
+ end
15
+
16
+ def watch(filename)
17
+ return if watching?(filename)
18
+ @files[filename] = Puppet::Util::WatchedFile.new(filename)
19
+ end
20
+
21
+ def watching?(filename)
22
+ @files.has_key?(filename)
23
+ end
24
+
25
+ def clear
26
+ @files.clear
27
+ end
28
+ end
@@ -161,7 +161,6 @@ module Puppet::Util::FileParsing
161
161
  # In this case, we try to match the whole line and then use the
162
162
  # match captures to get our fields.
163
163
  if match = regex.match(line)
164
- fields = []
165
164
  ret = {}
166
165
  record.fields.zip(match.captures).each do |field, value|
167
166
  if value == record.absent
@@ -216,8 +215,7 @@ module Puppet::Util::FileParsing
216
215
  # Split text into separate lines using the record separator.
217
216
  def lines(text)
218
217
  # Remove any trailing separators, and then split based on them
219
- # LAK:NOTE See http://snurl.com/21zf8 [groups_google_com]
220
- x = text.sub(/#{self.line_separator}\Q/,'').split(self.line_separator)
218
+ text.sub(/#{self.line_separator}\Q/,'').split(self.line_separator)
221
219
  end
222
220
 
223
221
  # Split a bunch of text into lines and then parse them individually.
@@ -203,7 +203,6 @@ class Puppet::Util::FileType
203
203
  # Only add the -u flag when the @path is different. Fedora apparently
204
204
  # does not think I should be allowed to set the @path to my own user name
205
205
  def cmdbase
206
- cmd = nil
207
206
  if @uid == Puppet::Util::SUIDManager.uid || Facter.value(:operatingsystem) == "HP-UX"
208
207
  return "crontab"
209
208
  else
@@ -0,0 +1,38 @@
1
+ module Puppet::Util::HttpProxy
2
+
3
+ def self.http_proxy_env
4
+ # Returns a URI object if proxy is set, or nil
5
+ proxy_env = ENV["http_proxy"] || ENV["HTTP_PROXY"]
6
+ begin
7
+ return URI.parse(proxy_env) if proxy_env
8
+ rescue URI::InvalidURIError
9
+ return nil
10
+ end
11
+ return nil
12
+ end
13
+
14
+ def self.http_proxy_host
15
+ env = self.http_proxy_env
16
+
17
+ if env and env.host then
18
+ return env.host
19
+ end
20
+
21
+ if Puppet.settings[:http_proxy_host] == 'none'
22
+ return nil
23
+ end
24
+
25
+ return Puppet.settings[:http_proxy_host]
26
+ end
27
+
28
+ def self.http_proxy_port
29
+ env = self.http_proxy_env
30
+
31
+ if env and env.port then
32
+ return env.port
33
+ end
34
+
35
+ return Puppet.settings[:http_proxy_port]
36
+ end
37
+
38
+ end