puppet 3.3.2 → 3.4.0.rc1

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 (589) hide show
  1. data/CONTRIBUTING.md +22 -0
  2. data/Gemfile +11 -2
  3. data/README.md +13 -17
  4. data/README_DEVELOPER.md +1 -1
  5. data/Rakefile +1 -1
  6. data/examples/hiera/README.md +4 -4
  7. data/ext/debian/puppetmaster.init +1 -0
  8. data/ext/debian/rules +2 -5
  9. data/ext/nagios/check_puppet.rb +7 -7
  10. data/ext/osx/file_mapping.yaml +1 -1
  11. data/ext/osx/preflight.erb +34 -19
  12. data/ext/rack/{files/config.ru → config.ru} +0 -0
  13. data/ext/rack/{files/apache2.conf → example-passenger-vhost.conf} +6 -0
  14. data/ext/redhat/puppet.spec.erb +20 -2
  15. data/ext/systemd/{puppetagent.service → puppet.service} +0 -0
  16. data/lib/hiera_puppet.rb +2 -2
  17. data/lib/puppet/agent.rb +1 -6
  18. data/lib/puppet/application.rb +15 -2
  19. data/lib/puppet/application/agent.rb +2 -7
  20. data/lib/puppet/application/apply.rb +8 -13
  21. data/lib/puppet/application/cert.rb +47 -7
  22. data/lib/puppet/application/device.rb +1 -6
  23. data/lib/puppet/application/face_base.rb +1 -1
  24. data/lib/puppet/application/filebucket.rb +1 -1
  25. data/lib/puppet/application/inspect.rb +3 -12
  26. data/lib/puppet/application/master.rb +1 -6
  27. data/lib/puppet/application/queue.rb +1 -6
  28. data/lib/puppet/application/resource.rb +2 -6
  29. data/lib/puppet/coercion.rb +11 -0
  30. data/lib/puppet/configurer.rb +5 -3
  31. data/lib/puppet/configurer/downloader.rb +3 -1
  32. data/lib/puppet/configurer/plugin_handler.rb +10 -0
  33. data/lib/puppet/confine.rb +80 -0
  34. data/lib/puppet/{provider/confine → confine}/exists.rb +3 -3
  35. data/lib/puppet/{provider/confine → confine}/false.rb +2 -2
  36. data/lib/puppet/{provider/confine → confine}/feature.rb +2 -2
  37. data/lib/puppet/{provider/confine → confine}/true.rb +2 -2
  38. data/lib/puppet/{provider/confine → confine}/variable.rb +2 -2
  39. data/lib/puppet/{provider/confine_collection.rb → confine_collection.rb} +4 -4
  40. data/lib/puppet/{provider/confiner.rb → confiner.rb} +4 -4
  41. data/lib/puppet/daemon.rb +2 -6
  42. data/lib/puppet/data_binding.rb +2 -30
  43. data/lib/puppet/defaults.rb +283 -174
  44. data/lib/puppet/error.rb +1 -0
  45. data/lib/puppet/external/nagios.rb +0 -2
  46. data/lib/puppet/external/nagios/base.rb +4 -3
  47. data/lib/puppet/external/nagios/grammar.ry +173 -112
  48. data/lib/puppet/external/nagios/parser.rb +233 -184
  49. data/lib/puppet/face/file/store.rb +1 -1
  50. data/lib/puppet/face/module/generate.rb +5 -7
  51. data/lib/puppet/face/parser.rb +12 -2
  52. data/lib/puppet/face/plugin.rb +6 -0
  53. data/lib/puppet/feature/base.rb +16 -0
  54. data/lib/puppet/feature/external_facts.rb +5 -0
  55. data/lib/puppet/feature/libuser.rb +1 -1
  56. data/lib/puppet/feature/msgpack.rb +1 -0
  57. data/lib/puppet/feature/rails.rb +2 -2
  58. data/lib/puppet/file_bucket/dipper.rb +8 -6
  59. data/lib/puppet/file_bucket/file.rb +17 -1
  60. data/lib/puppet/file_serving/base.rb +21 -10
  61. data/lib/puppet/file_serving/configuration.rb +5 -7
  62. data/lib/puppet/file_serving/configuration/parser.rb +1 -1
  63. data/lib/puppet/file_serving/content.rb +1 -1
  64. data/lib/puppet/file_serving/fileset.rb +3 -3
  65. data/lib/puppet/file_serving/metadata.rb +22 -18
  66. data/lib/puppet/file_serving/mount/file.rb +1 -1
  67. data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
  68. data/lib/puppet/file_system.rb +3 -0
  69. data/lib/puppet/file_system/file.rb +261 -0
  70. data/lib/puppet/file_system/file18.rb +5 -0
  71. data/lib/puppet/file_system/file19.rb +5 -0
  72. data/lib/puppet/file_system/file19windows.rb +113 -0
  73. data/lib/puppet/file_system/memory_file.rb +31 -0
  74. data/lib/puppet/file_system/tempfile.rb +20 -0
  75. data/lib/puppet/indirector/active_record.rb +1 -0
  76. data/lib/puppet/indirector/catalog/compiler.rb +28 -0
  77. data/lib/puppet/indirector/certificate_request/memory.rb +6 -0
  78. data/lib/puppet/indirector/data_binding/hiera.rb +46 -2
  79. data/lib/puppet/indirector/direct_file_server.rb +2 -2
  80. data/lib/puppet/indirector/facts/facter.rb +25 -0
  81. data/lib/puppet/indirector/file_bucket_file/file.rb +60 -74
  82. data/lib/puppet/indirector/indirection.rb +5 -1
  83. data/lib/puppet/indirector/json.rb +1 -1
  84. data/lib/puppet/indirector/key/ca.rb +4 -0
  85. data/lib/puppet/indirector/key/file.rb +7 -3
  86. data/lib/puppet/indirector/key/memory.rb +6 -0
  87. data/lib/puppet/indirector/node/write_only_yaml.rb +2 -2
  88. data/lib/puppet/indirector/request.rb +17 -11
  89. data/lib/puppet/indirector/resource/ral.rb +5 -0
  90. data/lib/puppet/indirector/resource/rest.rb +1 -0
  91. data/lib/puppet/indirector/resource/store_configs.rb +4 -0
  92. data/lib/puppet/indirector/rest.rb +2 -1
  93. data/lib/puppet/indirector/ssl_file.rb +7 -7
  94. data/lib/puppet/indirector/terminus.rb +4 -0
  95. data/lib/puppet/indirector/yaml.rb +3 -3
  96. data/lib/puppet/interface/documentation.rb +4 -11
  97. data/lib/puppet/module.rb +19 -6
  98. data/lib/puppet/module_tool/applications/builder.rb +1 -1
  99. data/lib/puppet/module_tool/applications/installer.rb +1 -1
  100. data/lib/puppet/module_tool/checksums.rb +1 -1
  101. data/lib/puppet/module_tool/dependency.rb +7 -3
  102. data/lib/puppet/module_tool/metadata.rb +6 -2
  103. data/lib/puppet/module_tool/tar.rb +2 -1
  104. data/lib/puppet/module_tool/tar/gnu.rb +6 -2
  105. data/lib/puppet/module_tool/tar/mini.rb +2 -0
  106. data/lib/puppet/module_tool/tar/solaris.rb +2 -5
  107. data/lib/puppet/network/authconfig.rb +0 -2
  108. data/lib/puppet/network/authentication.rb +1 -1
  109. data/lib/puppet/network/authstore.rb +6 -7
  110. data/lib/puppet/network/format.rb +2 -3
  111. data/lib/puppet/network/format_handler.rb +16 -11
  112. data/lib/puppet/network/format_support.rb +14 -0
  113. data/lib/puppet/network/formats.rb +26 -0
  114. data/lib/puppet/network/http/connection.rb +8 -41
  115. data/lib/puppet/network/http/handler.rb +28 -32
  116. data/lib/puppet/network/http/webrick.rb +15 -22
  117. data/lib/puppet/network/http_pool.rb +43 -9
  118. data/lib/puppet/network/rights.rb +0 -0
  119. data/lib/puppet/node.rb +24 -8
  120. data/lib/puppet/node/environment.rb +18 -20
  121. data/lib/puppet/node/facts.rb +23 -6
  122. data/lib/puppet/parameter.rb +15 -2
  123. data/lib/puppet/parameter/boolean.rb +5 -0
  124. data/lib/puppet/parameter/value_collection.rb +6 -4
  125. data/lib/puppet/parser/ast/resourceparam.rb +2 -1
  126. data/lib/puppet/parser/compiler.rb +25 -9
  127. data/lib/puppet/parser/files.rb +1 -1
  128. data/lib/puppet/parser/functions.rb +12 -21
  129. data/lib/puppet/parser/functions/collect.rb +6 -35
  130. data/lib/puppet/parser/functions/contain.rb +26 -0
  131. data/lib/puppet/parser/functions/create_resources.rb +5 -0
  132. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  133. data/lib/puppet/parser/functions/file.rb +1 -1
  134. data/lib/puppet/parser/functions/{reject.rb → filter.rb} +13 -12
  135. data/lib/puppet/parser/functions/fqdn_rand.rb +13 -5
  136. data/lib/puppet/parser/functions/include.rb +18 -1
  137. data/lib/puppet/parser/functions/map.rb +44 -0
  138. data/lib/puppet/parser/functions/select.rb +6 -38
  139. data/lib/puppet/parser/lexer.rb +1 -1
  140. data/lib/puppet/parser/parser_support.rb +1 -1
  141. data/lib/puppet/parser/resource.rb +6 -45
  142. data/lib/puppet/parser/scope.rb +33 -2
  143. data/lib/puppet/parser/type_loader.rb +4 -60
  144. data/lib/puppet/pops/binder/bindings_loader.rb +1 -1
  145. data/lib/puppet/pops/binder/config/binder_config.rb +3 -3
  146. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +1 -1
  147. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +1 -1
  148. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +2 -2
  149. data/lib/puppet/pops/issues.rb +4 -0
  150. data/lib/puppet/pops/model/ast_transformer.rb +4 -1
  151. data/lib/puppet/pops/model/model_label_provider.rb +1 -1
  152. data/lib/puppet/pops/parser/egrammar.ra +5 -24
  153. data/lib/puppet/pops/parser/eparser.rb +859 -902
  154. data/lib/puppet/pops/parser/lexer.rb +48 -30
  155. data/lib/puppet/pops/parser/parser_support.rb +1 -1
  156. data/lib/puppet/pops/patterns.rb +4 -4
  157. data/lib/puppet/pops/utils.rb +1 -1
  158. data/lib/puppet/pops/validation/checker3_1.rb +25 -20
  159. data/lib/puppet/provider.rb +23 -6
  160. data/lib/puppet/provider/aixobject.rb +0 -0
  161. data/lib/puppet/provider/augeas/augeas.rb +21 -5
  162. data/lib/puppet/provider/confine.rb +5 -79
  163. data/lib/puppet/provider/cron/crontab.rb +0 -0
  164. data/lib/puppet/provider/exec.rb +9 -7
  165. data/lib/puppet/provider/exec/posix.rb +10 -1
  166. data/lib/puppet/provider/exec/windows.rb +1 -1
  167. data/lib/puppet/provider/file/posix.rb +1 -0
  168. data/lib/puppet/provider/file/windows.rb +16 -5
  169. data/lib/puppet/provider/group/aix.rb +0 -0
  170. data/lib/puppet/provider/group/windows_adsi.rb +33 -1
  171. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  172. data/lib/puppet/provider/mailalias/aliases.rb +0 -0
  173. data/lib/puppet/provider/maillist/mailman.rb +0 -0
  174. data/lib/puppet/provider/mount/parsed.rb +0 -0
  175. data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
  176. data/lib/puppet/provider/package/appdmg.rb +1 -1
  177. data/lib/puppet/provider/package/apple.rb +1 -1
  178. data/lib/puppet/provider/package/apt.rb +1 -1
  179. data/lib/puppet/provider/package/aptitude.rb +0 -0
  180. data/lib/puppet/provider/package/blastwave.rb +1 -1
  181. data/lib/puppet/provider/package/dpkg.rb +1 -1
  182. data/lib/puppet/provider/package/fink.rb +1 -1
  183. data/lib/puppet/provider/package/freebsd.rb +0 -0
  184. data/lib/puppet/provider/package/gem.rb +0 -0
  185. data/lib/puppet/provider/package/macports.rb +0 -0
  186. data/lib/puppet/provider/package/msi.rb +4 -10
  187. data/lib/puppet/provider/package/nim.rb +8 -8
  188. data/lib/puppet/provider/package/openbsd.rb +1 -1
  189. data/lib/puppet/provider/package/opkg.rb +0 -0
  190. data/lib/puppet/provider/package/pacman.rb +2 -2
  191. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  192. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  193. data/lib/puppet/provider/package/ports.rb +0 -0
  194. data/lib/puppet/provider/package/rpm.rb +39 -3
  195. data/lib/puppet/provider/package/sun.rb +3 -3
  196. data/lib/puppet/provider/package/sunfreeware.rb +0 -0
  197. data/lib/puppet/provider/package/windows.rb +12 -19
  198. data/lib/puppet/provider/package/windows/package.rb +1 -1
  199. data/lib/puppet/provider/package/yum.rb +2 -2
  200. data/lib/puppet/provider/parsedfile.rb +0 -0
  201. data/lib/puppet/provider/port/parsed.rb +0 -0
  202. data/lib/puppet/provider/service/base.rb +0 -0
  203. data/lib/puppet/provider/service/bsd.rb +3 -3
  204. data/lib/puppet/provider/service/daemontools.rb +8 -8
  205. data/lib/puppet/provider/service/debian.rb +0 -0
  206. data/lib/puppet/provider/service/freebsd.rb +3 -3
  207. data/lib/puppet/provider/service/init.rb +5 -4
  208. data/lib/puppet/provider/service/launchd.rb +35 -24
  209. data/lib/puppet/provider/service/openbsd.rb +23 -0
  210. data/lib/puppet/provider/service/redhat.rb +0 -0
  211. data/lib/puppet/provider/service/runit.rb +3 -3
  212. data/lib/puppet/provider/service/smf.rb +0 -0
  213. data/lib/puppet/provider/service/src.rb +0 -0
  214. data/lib/puppet/provider/service/systemd.rb +0 -0
  215. data/lib/puppet/provider/service/upstart.rb +3 -3
  216. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
  217. data/lib/puppet/provider/sshkey/parsed.rb +0 -0
  218. data/lib/puppet/provider/user/aix.rb +0 -0
  219. data/lib/puppet/provider/user/directoryservice.rb +1 -1
  220. data/lib/puppet/provider/user/useradd.rb +1 -1
  221. data/lib/puppet/provider/zone/solaris.rb +1 -1
  222. data/lib/puppet/rails/benchmark.rb +1 -1
  223. data/lib/puppet/reference/configuration.rb +1 -2
  224. data/lib/puppet/reference/indirection.rb +12 -14
  225. data/lib/puppet/relationship.rb +7 -4
  226. data/lib/puppet/reports.rb +2 -2
  227. data/lib/puppet/reports/rrdgraph.rb +1 -1
  228. data/lib/puppet/reports/store.rb +3 -3
  229. data/lib/puppet/reports/tagmail.rb +2 -2
  230. data/lib/puppet/resource.rb +66 -8
  231. data/lib/puppet/resource/catalog.rb +18 -25
  232. data/lib/puppet/resource/status.rb +10 -4
  233. data/lib/puppet/run.rb +6 -2
  234. data/lib/puppet/settings.rb +39 -119
  235. data/lib/puppet/settings/base_setting.rb +8 -9
  236. data/lib/puppet/settings/directory_setting.rb +8 -0
  237. data/lib/puppet/settings/file_setting.rb +35 -1
  238. data/lib/puppet/settings/priority_setting.rb +42 -0
  239. data/lib/puppet/ssl.rb +4 -0
  240. data/lib/puppet/ssl/certificate.rb +18 -0
  241. data/lib/puppet/ssl/certificate_authority.rb +101 -72
  242. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +44 -0
  243. data/lib/puppet/ssl/certificate_authority/interface.rb +21 -17
  244. data/lib/puppet/ssl/certificate_factory.rb +38 -12
  245. data/lib/puppet/ssl/certificate_request.rb +201 -47
  246. data/lib/puppet/ssl/certificate_request_attributes.rb +34 -0
  247. data/lib/puppet/ssl/certificate_revocation_list.rb +2 -2
  248. data/lib/puppet/ssl/host.rb +21 -10
  249. data/lib/puppet/ssl/inventory.rb +6 -10
  250. data/lib/puppet/ssl/key.rb +1 -1
  251. data/lib/puppet/ssl/oids.rb +78 -0
  252. data/lib/puppet/ssl/validator.rb +41 -97
  253. data/lib/puppet/ssl/validator/default_validator.rb +153 -0
  254. data/lib/puppet/ssl/validator/no_validator.rb +17 -0
  255. data/lib/puppet/status.rb +4 -0
  256. data/lib/puppet/test/test_helper.rb +5 -0
  257. data/lib/puppet/transaction.rb +13 -0
  258. data/lib/puppet/transaction/event.rb +8 -3
  259. data/lib/puppet/transaction/report.rb +6 -2
  260. data/lib/puppet/transaction/resource_harness.rb +173 -115
  261. data/lib/puppet/type.rb +30 -13
  262. data/lib/puppet/type/augeas.rb +12 -46
  263. data/lib/puppet/type/component.rb +1 -7
  264. data/lib/puppet/type/cron.rb +0 -0
  265. data/lib/puppet/type/exec.rb +13 -1
  266. data/lib/puppet/type/file.rb +19 -10
  267. data/lib/puppet/type/file/checksum.rb +0 -0
  268. data/lib/puppet/type/file/content.rb +3 -0
  269. data/lib/puppet/type/file/ensure.rb +33 -15
  270. data/lib/puppet/type/file/group.rb +0 -0
  271. data/lib/puppet/type/file/mode.rb +6 -2
  272. data/lib/puppet/type/file/owner.rb +0 -0
  273. data/lib/puppet/type/file/source.rb +65 -14
  274. data/lib/puppet/type/file/target.rb +6 -6
  275. data/lib/puppet/type/file/type.rb +0 -0
  276. data/lib/puppet/type/filebucket.rb +0 -0
  277. data/lib/puppet/type/group.rb +18 -0
  278. data/lib/puppet/type/host.rb +0 -0
  279. data/lib/puppet/type/k5login.rb +4 -4
  280. data/lib/puppet/type/mailalias.rb +0 -0
  281. data/lib/puppet/type/maillist.rb +0 -0
  282. data/lib/puppet/type/mount.rb +15 -1
  283. data/lib/puppet/type/package.rb +7 -1
  284. data/lib/puppet/type/port.rb +0 -0
  285. data/lib/puppet/type/schedule.rb +9 -4
  286. data/lib/puppet/type/service.rb +1 -1
  287. data/lib/puppet/type/sshkey.rb +0 -0
  288. data/lib/puppet/type/tidy.rb +1 -1
  289. data/lib/puppet/type/user.rb +3 -0
  290. data/lib/puppet/type/yumrepo.rb +8 -6
  291. data/lib/puppet/type/zpool.rb +0 -0
  292. data/lib/puppet/util.rb +4 -31
  293. data/lib/puppet/util/adsi.rb +73 -17
  294. data/lib/puppet/util/autoload.rb +3 -3
  295. data/lib/puppet/util/backups.rb +4 -4
  296. data/lib/puppet/util/cacher.rb +7 -13
  297. data/lib/puppet/util/checksums.rb +2 -2
  298. data/lib/puppet/util/classgen.rb +3 -1
  299. data/lib/puppet/util/colors.rb +1 -0
  300. data/lib/puppet/util/command_line.rb +5 -0
  301. data/lib/puppet/util/docs.rb +33 -27
  302. data/lib/puppet/util/execution.rb +42 -18
  303. data/lib/puppet/util/filetype.rb +3 -3
  304. data/lib/puppet/util/instance_loader.rb +2 -2
  305. data/lib/puppet/util/instrumentation.rb +23 -42
  306. data/lib/puppet/util/instrumentation/data.rb +11 -4
  307. data/lib/puppet/util/instrumentation/indirection_probe.rb +11 -4
  308. data/lib/puppet/util/instrumentation/instrumentable.rb +7 -14
  309. data/lib/puppet/util/instrumentation/listener.rb +15 -8
  310. data/lib/puppet/util/instrumentation/listeners/log.rb +4 -10
  311. data/lib/puppet/util/instrumentation/listeners/performance.rb +8 -14
  312. data/lib/puppet/util/limits.rb +12 -0
  313. data/lib/puppet/util/lockfile.rb +2 -2
  314. data/lib/puppet/util/log.rb +14 -6
  315. data/lib/puppet/util/log/destinations.rb +23 -1
  316. data/lib/puppet/util/metric.rb +9 -3
  317. data/lib/puppet/util/monkey_patches.rb +7 -2
  318. data/lib/puppet/util/network_device/config.rb +1 -1
  319. data/lib/puppet/util/plugins.rb +1 -1
  320. data/lib/puppet/util/posix.rb +0 -0
  321. data/lib/puppet/util/profiler.rb +7 -2
  322. data/lib/puppet/util/provider_features.rb +2 -2
  323. data/lib/puppet/util/rdoc.rb +28 -30
  324. data/lib/puppet/util/rdoc/code_objects.rb +75 -25
  325. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  326. data/lib/puppet/util/rdoc/parser.rb +12 -487
  327. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +477 -0
  328. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc1.rb +19 -0
  329. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
  330. data/lib/puppet/util/reference.rb +1 -1
  331. data/lib/puppet/util/resource_template.rb +1 -1
  332. data/lib/puppet/util/selinux.rb +1 -1
  333. data/lib/puppet/util/storage.rb +2 -2
  334. data/lib/puppet/util/suidmanager.rb +1 -1
  335. data/lib/puppet/util/tag_set.rb +29 -0
  336. data/lib/puppet/util/tagging.rb +8 -24
  337. data/lib/puppet/util/watched_file.rb +1 -1
  338. data/lib/puppet/util/watcher.rb +1 -1
  339. data/lib/puppet/util/windows.rb +3 -0
  340. data/lib/puppet/util/windows/access_control_entry.rb +84 -0
  341. data/lib/puppet/util/windows/access_control_list.rb +106 -0
  342. data/lib/puppet/util/windows/file.rb +213 -0
  343. data/lib/puppet/util/windows/process.rb +199 -0
  344. data/lib/puppet/util/windows/root_certs.rb +52 -37
  345. data/lib/puppet/util/windows/security.rb +270 -245
  346. data/lib/puppet/util/windows/security_descriptor.rb +62 -0
  347. data/lib/puppet/util/windows/sid.rb +26 -4
  348. data/lib/puppet/version.rb +2 -2
  349. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
  350. data/spec/fixtures/unit/indirector/{hiera → data_binding/hiera}/global.yaml +0 -0
  351. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +1 -0
  352. data/spec/fixtures/unit/module/trailing-comma.json +24 -0
  353. data/spec/fixtures/unit/util/monkey_patches/x509.pem +32 -0
  354. data/spec/integration/application/apply_spec.rb +1 -1
  355. data/spec/integration/application/doc_spec.rb +1 -1
  356. data/spec/integration/configurer_spec.rb +4 -2
  357. data/spec/integration/data_binding.rb +100 -0
  358. data/spec/integration/indirector/catalog/compiler_spec.rb +16 -13
  359. data/spec/integration/indirector/direct_file_server_spec.rb +3 -5
  360. data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
  361. data/spec/integration/node/facts_spec.rb +1 -1
  362. data/spec/integration/node_spec.rb +1 -1
  363. data/spec/integration/parser/compiler_spec.rb +90 -0
  364. data/spec/integration/parser/parser_spec.rb +2 -2
  365. data/spec/integration/provider/cron/crontab_spec.rb +3 -5
  366. data/spec/integration/resource/catalog_spec.rb +1 -1
  367. data/spec/integration/ssl/autosign_spec.rb +90 -0
  368. data/spec/integration/ssl/certificate_authority_spec.rb +62 -69
  369. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  370. data/spec/integration/ssl/host_spec.rb +1 -1
  371. data/spec/integration/transaction_spec.rb +13 -13
  372. data/spec/integration/type/exec_spec.rb +2 -2
  373. data/spec/integration/type/file_spec.rb +287 -45
  374. data/spec/integration/type/tidy_spec.rb +3 -3
  375. data/spec/integration/util/rdoc/parser_spec.rb +236 -35
  376. data/spec/integration/util/settings_spec.rb +1 -1
  377. data/spec/integration/util/windows/process_spec.rb +22 -0
  378. data/spec/integration/util/windows/security_spec.rb +316 -106
  379. data/spec/lib/matchers/containment_matchers.rb +52 -0
  380. data/spec/lib/puppet_spec/compiler.rb +6 -0
  381. data/spec/lib/puppet_spec/files.rb +20 -21
  382. data/spec/shared_behaviours/documentation_on_faces.rb +3 -3
  383. data/spec/shared_behaviours/file_server_terminus.rb +2 -2
  384. data/spec/shared_contexts/platform.rb +1 -0
  385. data/spec/spec_helper.rb +13 -1
  386. data/spec/unit/agent_spec.rb +0 -12
  387. data/spec/unit/application/agent_spec.rb +4 -4
  388. data/spec/unit/application/apply_spec.rb +18 -2
  389. data/spec/unit/application/cert_spec.rb +8 -6
  390. data/spec/unit/application/device_spec.rb +1 -1
  391. data/spec/unit/application/filebucket_spec.rb +1 -1
  392. data/spec/unit/application/inspect_spec.rb +1 -1
  393. data/spec/unit/application_spec.rb +24 -0
  394. data/spec/unit/configurer/downloader_spec.rb +8 -7
  395. data/spec/unit/configurer/fact_handler_spec.rb +23 -0
  396. data/spec/unit/configurer/plugin_handler_spec.rb +7 -2
  397. data/spec/unit/configurer_spec.rb +15 -5
  398. data/spec/unit/{provider/confine → confine}/exists_spec.rb +12 -12
  399. data/spec/unit/{provider/confine → confine}/false_spec.rb +9 -9
  400. data/spec/unit/{provider/confine → confine}/feature_spec.rb +10 -10
  401. data/spec/unit/{provider/confine → confine}/true_spec.rb +7 -7
  402. data/spec/unit/{provider/confine → confine}/variable_spec.rb +16 -16
  403. data/spec/unit/{provider/confine_collection_spec.rb → confine_collection_spec.rb} +30 -30
  404. data/spec/unit/{provider/confine_spec.rb → confine_spec.rb} +11 -11
  405. data/spec/unit/{provider/confiner_spec.rb → confiner_spec.rb} +4 -4
  406. data/spec/unit/face/parser_spec.rb +54 -0
  407. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  408. data/spec/unit/file_serving/base_spec.rb +32 -9
  409. data/spec/unit/file_serving/configuration_spec.rb +7 -7
  410. data/spec/unit/file_serving/content_spec.rb +12 -7
  411. data/spec/unit/file_serving/fileset_spec.rb +57 -27
  412. data/spec/unit/file_serving/metadata_spec.rb +74 -12
  413. data/spec/unit/file_serving/mount/file_spec.rb +10 -10
  414. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +73 -0
  415. data/spec/unit/file_system/file_spec.rb +486 -0
  416. data/spec/unit/file_system/tempfile_spec.rb +48 -0
  417. data/spec/unit/graph/relationship_graph_spec.rb +0 -6
  418. data/spec/unit/hiera_puppet_spec.rb +2 -2
  419. data/spec/unit/indirector/catalog/compiler_spec.rb +15 -19
  420. data/spec/unit/indirector/certificate_status/file_spec.rb +30 -40
  421. data/spec/unit/indirector/data_binding/hiera_spec.rb +95 -2
  422. data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
  423. data/spec/unit/indirector/facts/facter_spec.rb +33 -0
  424. data/spec/unit/indirector/file_bucket_file/file_spec.rb +61 -52
  425. data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
  426. data/spec/unit/indirector/file_server_spec.rb +4 -4
  427. data/spec/unit/indirector/json_spec.rb +4 -4
  428. data/spec/unit/indirector/key/file_spec.rb +13 -14
  429. data/spec/unit/indirector/resource/ral_spec.rb +7 -0
  430. data/spec/unit/indirector/resource/store_configs_spec.rb +11 -0
  431. data/spec/unit/indirector/rest_spec.rb +7 -3
  432. data/spec/unit/indirector/ssl_file_spec.rb +14 -17
  433. data/spec/unit/indirector/yaml_spec.rb +4 -4
  434. data/spec/unit/module_spec.rb +43 -15
  435. data/spec/unit/module_tool/tar/gnu_spec.rb +2 -2
  436. data/spec/unit/module_tool/tar/solaris_spec.rb +2 -2
  437. data/spec/unit/module_tool/tar_spec.rb +45 -0
  438. data/spec/unit/network/authconfig_spec.rb +2 -1
  439. data/spec/unit/network/authentication_spec.rb +2 -2
  440. data/spec/unit/network/format_handler_spec.rb +2 -2
  441. data/spec/unit/network/formats_spec.rb +24 -0
  442. data/spec/unit/network/http/connection_spec.rb +76 -199
  443. data/spec/unit/network/http/handler_spec.rb +33 -34
  444. data/spec/unit/network/http_pool_spec.rb +8 -5
  445. data/spec/unit/node/environment_spec.rb +76 -90
  446. data/spec/unit/node/facts_spec.rb +20 -3
  447. data/spec/unit/node_spec.rb +43 -0
  448. data/spec/unit/parameter/boolean_spec.rb +22 -12
  449. data/spec/unit/parser/ast/resourceparam_spec.rb +51 -0
  450. data/spec/unit/parser/compiler_spec.rb +103 -35
  451. data/spec/unit/parser/eparser_adapter_spec.rb +12 -12
  452. data/spec/unit/parser/files_spec.rb +11 -11
  453. data/spec/unit/parser/functions/contain_spec.rb +185 -0
  454. data/spec/unit/parser/functions/create_resources_spec.rb +13 -5
  455. data/spec/unit/parser/functions/generate_spec.rb +1 -1
  456. data/spec/unit/parser/functions_spec.rb +2 -2
  457. data/spec/unit/parser/lexer_spec.rb +1 -1
  458. data/spec/unit/parser/methods/each_spec.rb +1 -1
  459. data/spec/unit/parser/methods/{select_spec.rb → filter_spec.rb} +11 -11
  460. data/spec/unit/parser/methods/map_spec.rb +95 -0
  461. data/spec/unit/parser/methods/reduce_spec.rb +12 -11
  462. data/spec/unit/parser/methods/shared.rb +5 -5
  463. data/spec/unit/parser/methods/slice_spec.rb +13 -13
  464. data/spec/unit/parser/parser_spec.rb +1 -1
  465. data/spec/unit/parser/resource/param_spec.rb +44 -0
  466. data/spec/unit/parser/resource_spec.rb +16 -15
  467. data/spec/unit/pops/model/ast_transformer_spec.rb +18 -4
  468. data/spec/unit/pops/parser/lexer_spec.rb +22 -5
  469. data/spec/unit/pops/parser/parse_calls_spec.rb +5 -5
  470. data/spec/unit/pops/transformer/transform_calls_spec.rb +6 -6
  471. data/spec/unit/pops/transformer/transform_containers_spec.rb +2 -2
  472. data/spec/unit/pops/validator/validator_spec.rb +31 -0
  473. data/spec/unit/provider/augeas/augeas_spec.rb +57 -2
  474. data/spec/unit/provider/exec/posix_spec.rb +8 -3
  475. data/spec/unit/provider/file/posix_spec.rb +2 -2
  476. data/spec/unit/provider/group/windows_adsi_spec.rb +70 -3
  477. data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
  478. data/spec/unit/provider/package/apt_spec.rb +1 -1
  479. data/spec/unit/provider/package/msi_spec.rb +15 -42
  480. data/spec/unit/provider/package/openbsd_spec.rb +3 -3
  481. data/spec/unit/provider/package/rpm_spec.rb +56 -13
  482. data/spec/unit/provider/package/windows_spec.rb +15 -19
  483. data/spec/unit/provider/service/base_spec.rb +1 -1
  484. data/spec/unit/provider/service/daemontools_spec.rb +18 -8
  485. data/spec/unit/provider/service/freebsd_spec.rb +3 -3
  486. data/spec/unit/provider/service/gentoo_spec.rb +5 -2
  487. data/spec/unit/provider/service/init_spec.rb +17 -17
  488. data/spec/unit/provider/service/launchd_spec.rb +76 -23
  489. data/spec/unit/provider/service/openbsd_spec.rb +125 -0
  490. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  491. data/spec/unit/provider/service/runit_spec.rb +12 -5
  492. data/spec/unit/provider/service/upstart_spec.rb +4 -4
  493. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +5 -5
  494. data/spec/unit/provider/user/directoryservice_spec.rb +4 -4
  495. data/spec/unit/provider/zone/solaris_spec.rb +1 -1
  496. data/spec/unit/provider_spec.rb +2 -2
  497. data/spec/unit/reports/http_spec.rb +19 -34
  498. data/spec/unit/reports/store_spec.rb +2 -2
  499. data/spec/unit/resource/catalog_spec.rb +81 -11
  500. data/spec/unit/resource/status_spec.rb +11 -1
  501. data/spec/unit/resource/type_spec.rb +30 -1
  502. data/spec/unit/resource_spec.rb +40 -4
  503. data/spec/unit/settings/file_setting_spec.rb +2 -2
  504. data/spec/unit/settings/path_setting_spec.rb +2 -2
  505. data/spec/unit/settings/priority_setting_spec.rb +66 -0
  506. data/spec/unit/settings_spec.rb +16 -31
  507. data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +30 -0
  508. data/spec/unit/ssl/certificate_authority_spec.rb +129 -134
  509. data/spec/unit/ssl/certificate_factory_spec.rb +18 -0
  510. data/spec/unit/ssl/certificate_request_attributes_spec.rb +61 -0
  511. data/spec/unit/ssl/certificate_request_spec.rb +103 -0
  512. data/spec/unit/ssl/certificate_spec.rb +31 -18
  513. data/spec/unit/ssl/host_spec.rb +34 -8
  514. data/spec/unit/ssl/inventory_spec.rb +27 -62
  515. data/spec/unit/ssl/key_spec.rb +4 -4
  516. data/spec/unit/ssl/oids_spec.rb +48 -0
  517. data/spec/unit/ssl/validator_spec.rb +49 -6
  518. data/spec/unit/status_spec.rb +9 -0
  519. data/spec/unit/transaction/event_spec.rb +1 -9
  520. data/spec/unit/transaction/report_spec.rb +20 -1
  521. data/spec/unit/transaction/resource_harness_spec.rb +60 -210
  522. data/spec/unit/transaction_spec.rb +54 -8
  523. data/spec/unit/type/component_spec.rb +2 -2
  524. data/spec/unit/type/exec_spec.rb +14 -7
  525. data/spec/unit/type/file/content_spec.rb +13 -2
  526. data/spec/unit/type/file/ctime_spec.rb +1 -1
  527. data/spec/unit/type/file/mode_spec.rb +48 -2
  528. data/spec/unit/type/file/mtime_spec.rb +1 -1
  529. data/spec/unit/type/file/source_spec.rb +177 -7
  530. data/spec/unit/type/file_spec.rb +63 -71
  531. data/spec/unit/type/group_spec.rb +20 -0
  532. data/spec/unit/type/k5login_spec.rb +3 -3
  533. data/spec/unit/type/mount_spec.rb +53 -0
  534. data/spec/unit/type/nagios_spec.rb +216 -0
  535. data/spec/unit/type/package_spec.rb +7 -1
  536. data/spec/unit/type/schedule_spec.rb +6 -0
  537. data/spec/unit/type/service_spec.rb +3 -3
  538. data/spec/unit/type/tidy_spec.rb +14 -14
  539. data/spec/unit/type/user_spec.rb +9 -0
  540. data/spec/unit/type_spec.rb +86 -4
  541. data/spec/unit/util/adsi_spec.rb +120 -12
  542. data/spec/unit/util/autoload_spec.rb +14 -14
  543. data/spec/unit/util/backups_spec.rb +29 -21
  544. data/spec/unit/util/checksums_spec.rb +2 -1
  545. data/spec/unit/util/command_line_spec.rb +41 -0
  546. data/spec/unit/util/docs_spec.rb +91 -0
  547. data/spec/unit/util/execution_spec.rb +26 -2
  548. data/spec/unit/util/filetype_spec.rb +7 -7
  549. data/spec/unit/util/lockfile_spec.rb +2 -2
  550. data/spec/unit/util/log/destinations_spec.rb +32 -0
  551. data/spec/unit/util/monkey_patches_spec.rb +41 -0
  552. data/spec/unit/util/pidlock_spec.rb +6 -6
  553. data/spec/unit/util/rdoc/parser_spec.rb +15 -13
  554. data/spec/unit/util/rdoc_spec.rb +18 -24
  555. data/spec/unit/util/resource_template_spec.rb +3 -3
  556. data/spec/unit/util/selinux_spec.rb +4 -2
  557. data/spec/unit/util/storage_spec.rb +4 -4
  558. data/spec/unit/util/suidmanager_spec.rb +7 -0
  559. data/spec/unit/util/tag_set_spec.rb +46 -0
  560. data/spec/unit/util/tagging_spec.rb +82 -45
  561. data/spec/unit/util/watcher_spec.rb +4 -1
  562. data/spec/unit/util/windows/access_control_entry_spec.rb +67 -0
  563. data/spec/unit/util/windows/access_control_list_spec.rb +133 -0
  564. data/spec/unit/util/windows/root_certs_spec.rb +10 -8
  565. data/spec/unit/util/windows/security_descriptor_spec.rb +117 -0
  566. data/spec/unit/util/windows/sid_spec.rb +69 -0
  567. data/spec/unit/util_spec.rb +7 -7
  568. data/tasks/ci.rake +17 -36
  569. metadata +2811 -2746
  570. checksums.yaml +0 -7
  571. data/examples/mac_automount.pp +0 -16
  572. data/examples/mcx_dock_absent.pp +0 -4
  573. data/examples/mcx_dock_default.pp +0 -118
  574. data/examples/mcx_dock_full.pp +0 -125
  575. data/examples/mcx_dock_invalid.pp +0 -9
  576. data/examples/mcx_nogroup.pp +0 -118
  577. data/examples/mcx_notexists_absent.pp +0 -4
  578. data/ext/rack/README +0 -58
  579. data/ext/rack/manifest.pp +0 -59
  580. data/lib/puppet/external/lock.rb +0 -63
  581. data/lib/puppet/indirector/hiera.rb +0 -39
  582. data/lib/puppet/parser/functions/foreach.rb +0 -95
  583. data/spec/integration/network/server/webrick_spec.rb +0 -76
  584. data/spec/integration/parser/functions_spec.rb +0 -16
  585. data/spec/unit/indirector/hiera_spec.rb +0 -154
  586. data/spec/unit/parser/methods/collect_spec.rb +0 -153
  587. data/spec/unit/parser/methods/foreach_spec.rb +0 -91
  588. data/spec/unit/parser/methods/reject_spec.rb +0 -73
  589. data/spec/unit/resource/resource_type.json +0 -34
@@ -37,16 +37,12 @@ class Puppet::Indirector::Request
37
37
  request
38
38
  end
39
39
 
40
- def to_pson(*args)
40
+ def to_data_hash
41
41
  result = {
42
- 'document_type' => 'IndirectorRequest',
43
- 'data' => {
44
- 'type' => indirection_name,
45
- 'method' => method,
46
- 'key' => key
47
- }
42
+ 'type' => indirection_name,
43
+ 'method' => method,
44
+ 'key' => key
48
45
  }
49
- data = result['data']
50
46
  attributes = {}
51
47
  OPTION_ATTRIBUTES.each do |key|
52
48
  next unless value = send(key)
@@ -57,10 +53,20 @@ class Puppet::Indirector::Request
57
53
  attributes[opt] = value
58
54
  end
59
55
 
60
- data['attributes'] = attributes unless attributes.empty?
61
- data['instance'] = instance if instance
56
+ result['attributes'] = attributes unless attributes.empty?
57
+ result['instance'] = instance if instance
58
+ result
59
+ end
62
60
 
63
- result.to_pson(*args)
61
+ def to_pson_data_hash
62
+ {
63
+ 'document_type' => 'IndirectorRequest',
64
+ 'data' => to_data_hash,
65
+ }
66
+ end
67
+
68
+ def to_pson(*args)
69
+ to_pson_data_hash.to_pson(*args)
64
70
  end
65
71
 
66
72
  # Is this an authenticated request?
@@ -5,6 +5,11 @@ class Puppet::Resource::Ral < Puppet::Indirector::Code
5
5
 
6
6
  desc "Manipulate resources with the resource abstraction layer. Only used internally."
7
7
 
8
+ def allow_remote_requests?
9
+ Puppet.deprecation_warning("Accessing resources on the network is deprecated. See http://links.puppetlabs.com/deprecate-networked-resource")
10
+ super
11
+ end
12
+
8
13
  def find( request )
9
14
  # find by name
10
15
  res = type(request).instances.find { |o| o.name == resource_name(request) }
@@ -1,6 +1,7 @@
1
1
  require 'puppet/indirector/status'
2
2
  require 'puppet/indirector/rest'
3
3
 
4
+ # @deprecated
4
5
  class Puppet::Resource::Rest < Puppet::Indirector::REST
5
6
 
6
7
  desc "Maniuplate resources remotely? Undocumented."
@@ -6,4 +6,8 @@ class Puppet::Resource::StoreConfigs < Puppet::Indirector::StoreConfigs
6
6
 
7
7
  desc %q{Part of the "storeconfigs" feature. Should not be directly set by end users.}
8
8
 
9
+ def allow_remote_requests?
10
+ Puppet.deprecation_warning("Accessing resources on the network is deprecated. See http://links.puppetlabs.com/deprecate-networked-resource")
11
+ super
12
+ end
9
13
  end
@@ -55,7 +55,8 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
55
55
  end
56
56
 
57
57
  def network(request)
58
- Puppet::Network::HTTP::Connection.new(request.server || self.class.server, request.port || self.class.port)
58
+ Puppet::Network::HttpPool.http_instance(request.server || self.class.server,
59
+ request.port || self.class.port)
59
60
  end
60
61
 
61
62
  def http_get(request, path, headers = nil, *args)
@@ -70,11 +70,11 @@ class Puppet::Indirector::SslFile < Puppet::Indirector::Terminus
70
70
  # Remove our file.
71
71
  def destroy(request)
72
72
  path = path(request.key)
73
- return false unless FileTest.exist?(path)
73
+ return false unless Puppet::FileSystem::File.exist?(path)
74
74
 
75
75
  Puppet.notice "Removing file #{model} #{request.key} at '#{path}'"
76
76
  begin
77
- File.unlink(path)
77
+ Puppet::FileSystem::File.unlink(path)
78
78
  rescue => detail
79
79
  raise Puppet::Error, "Could not remove #{request.key}: #{detail}"
80
80
  end
@@ -135,10 +135,10 @@ class Puppet::Indirector::SslFile < Puppet::Indirector::Terminus
135
135
  # which we'll be EOL'ing at some point. This method was added at 20080702
136
136
  # and should be removed at some point.
137
137
  def rename_files_with_uppercase(file)
138
- return file if FileTest.exist?(file)
138
+ return file if Puppet::FileSystem::File.exist?(file)
139
139
 
140
140
  dir, short = File.split(file)
141
- return nil unless FileTest.exist?(dir)
141
+ return nil unless Puppet::FileSystem::File.exist?(dir)
142
142
 
143
143
  raise ArgumentError, "Tried to fix SSL files to a file containing uppercase" unless short.downcase == short
144
144
  real_file = Dir.entries(dir).reject { |f| f =~ /^\./ }.find do |other|
@@ -159,12 +159,12 @@ class Puppet::Indirector::SslFile < Puppet::Indirector::Terminus
159
159
  # the work or opening a filehandle manually.
160
160
  def write(name, path)
161
161
  if ca?(name) and ca_location
162
- Puppet.settings.write(self.class.ca_setting) { |f| yield f }
162
+ Puppet.settings.setting(self.class.ca_setting).open('w') { |f| yield f }
163
163
  elsif file_location
164
- Puppet.settings.write(self.class.file_setting) { |f| yield f }
164
+ Puppet.settings.setting(self.class.file_setting).open('w') { |f| yield f }
165
165
  elsif setting = self.class.directory_setting
166
166
  begin
167
- Puppet.settings.writesub(setting, path) { |f| yield f }
167
+ Puppet.settings.setting(setting).open_file(path, 'w') { |f| yield f }
168
168
  rescue => detail
169
169
  raise Puppet::Error, "Could not write #{path} to #{setting}: #{detail}"
170
170
  end
@@ -140,6 +140,10 @@ class Puppet::Indirector::Terminus
140
140
  self.class.name
141
141
  end
142
142
 
143
+ def allow_remote_requests?
144
+ true
145
+ end
146
+
143
147
  def terminus_type
144
148
  self.class.terminus_type
145
149
  end
@@ -6,7 +6,7 @@ class Puppet::Indirector::Yaml < Puppet::Indirector::Terminus
6
6
  # Read a given name's file in and convert it from YAML.
7
7
  def find(request)
8
8
  file = path(request.key)
9
- return nil unless FileTest.exist?(file)
9
+ return nil unless Puppet::FileSystem::File.exist?(file)
10
10
 
11
11
  begin
12
12
  return Puppet::Util::Yaml.load_file(file)
@@ -24,7 +24,7 @@ class Puppet::Indirector::Yaml < Puppet::Indirector::Terminus
24
24
  basedir = File.dirname(file)
25
25
 
26
26
  # This is quite likely a bad idea, since we're not managing ownership or modes.
27
- Dir.mkdir(basedir) unless FileTest.exist?(basedir)
27
+ Dir.mkdir(basedir) unless Puppet::FileSystem::File.exist?(basedir)
28
28
 
29
29
  begin
30
30
  Puppet::Util::Yaml.dump(request.instance, file)
@@ -46,7 +46,7 @@ class Puppet::Indirector::Yaml < Puppet::Indirector::Terminus
46
46
 
47
47
  def destroy(request)
48
48
  file_path = path(request.key)
49
- File.unlink(file_path) if File.exists?(file_path)
49
+ Puppet::FileSystem::File.unlink(file_path) if Puppet::FileSystem::File.exist?(file_path)
50
50
  end
51
51
 
52
52
  def search(request)
@@ -1,19 +1,12 @@
1
1
  class Puppet::Interface
2
2
  # @api private
3
3
  module DocGen
4
+ require 'puppet/util/docs'
5
+
4
6
  # @api private
5
7
  def self.strip_whitespace(text)
6
- text.gsub!(/[ \t\f]+$/, '')
7
-
8
- # We need to identify an indent: the minimum number of whitespace
9
- # characters at the start of any line in the text.
10
- indent = text.split(/\n/).map {|x| x.index(/[^\s]/) }.compact.min
11
-
12
- if indent > 0 then
13
- text.gsub!(/^[ \t\f]{0,#{indent}}/, '')
14
- end
15
-
16
- return text
8
+ # I don't want no...
9
+ Puppet::Util::Docs.scrub(text)
17
10
  end
18
11
 
19
12
  # The documentation attributes all have some common behaviours; previously
@@ -20,6 +20,7 @@ class Puppet::Module
20
20
  "files" => "files",
21
21
  "templates" => "templates",
22
22
  "plugins" => "lib",
23
+ "pluginfacts" => "facts.d",
23
24
  }
24
25
 
25
26
  # Find and return the +module+ that +path+ belongs to. If +path+ is
@@ -53,10 +54,14 @@ class Puppet::Module
53
54
  def has_metadata?
54
55
  return false unless metadata_file
55
56
 
56
- return false unless FileTest.exist?(metadata_file)
57
-
58
- metadata = PSON.parse File.read(metadata_file)
57
+ return false unless Puppet::FileSystem::File.exist?(metadata_file)
59
58
 
59
+ begin
60
+ metadata = PSON.parse(File.read(metadata_file))
61
+ rescue PSON::PSONError => e
62
+ Puppet.debug("#{name} has an invalid and unparsable metadata.json file. The parse error: #{e.message}")
63
+ return false
64
+ end
60
65
 
61
66
  return metadata.is_a?(Hash) && !metadata.keys.empty?
62
67
  end
@@ -66,7 +71,7 @@ class Puppet::Module
66
71
  # we have files of a given type.
67
72
  define_method(type +'?') do
68
73
  type_subpath = subpath(location)
69
- unless FileTest.exist?(type_subpath)
74
+ unless Puppet::FileSystem::File.exist?(type_subpath)
70
75
  Puppet.debug("No #{type} found in subpath '#{type_subpath}' " +
71
76
  "(file / directory does not exist)")
72
77
  return false
@@ -89,7 +94,7 @@ class Puppet::Module
89
94
  full_path = subpath(location)
90
95
  end
91
96
 
92
- return nil unless FileTest.exist?(full_path)
97
+ return nil unless Puppet::FileSystem::File.exist?(full_path)
93
98
  return full_path
94
99
  end
95
100
 
@@ -148,7 +153,7 @@ class Puppet::Module
148
153
  end
149
154
 
150
155
  def all_manifests
151
- return [] unless File.exists?(manifests)
156
+ return [] unless Puppet::FileSystem::File.exist?(manifests)
152
157
 
153
158
  Dir.glob(File.join(manifests, '**', '*.{rb,pp}'))
154
159
  end
@@ -169,6 +174,14 @@ class Puppet::Module
169
174
  subpath("lib")
170
175
  end
171
176
 
177
+ def plugin_fact_directory
178
+ subpath("facts.d")
179
+ end
180
+
181
+ def has_external_facts?
182
+ File.directory?(plugin_fact_directory)
183
+ end
184
+
172
185
  def supports(name, version = nil)
173
186
  @supports ||= []
174
187
  @supports << [name, version]
@@ -60,7 +60,7 @@ module Puppet::ModuleTool
60
60
  when *Puppet::ModuleTool::ARTIFACTS
61
61
  next
62
62
  else
63
- FileUtils.cp_r path, build_path
63
+ FileUtils.cp_r path, build_path, :preserve => true
64
64
  end
65
65
  end
66
66
  end
@@ -32,7 +32,7 @@ module Puppet::ModuleTool
32
32
  if is_module_package?(@name)
33
33
  @source = :filesystem
34
34
  @filename = File.expand_path(@name)
35
- raise MissingPackageError, :requested_package => @filename unless File.exist?(@filename)
35
+ raise MissingPackageError, :requested_package => @filename unless Puppet::FileSystem::File.exist?(@filename)
36
36
 
37
37
  parsed = parse_filename(@filename)
38
38
  @module_name = parsed[:module_name]
@@ -16,7 +16,7 @@ module Puppet::ModuleTool
16
16
 
17
17
  # Return checksum for the +Pathname+.
18
18
  def checksum(pathname)
19
- return Digest::MD5.hexdigest(IO.binread(pathname))
19
+ return Digest::MD5.hexdigest(Puppet::FileSystem::File.new(pathname).binread)
20
20
  end
21
21
 
22
22
  # Return checksums for object's +Pathname+, generate if it's needed.
@@ -15,12 +15,16 @@ module Puppet::ModuleTool
15
15
  @repository = repository ? Puppet::Forge::Repository.new(repository) : nil
16
16
  end
17
17
 
18
- # Return PSON representation of this data.
19
- def to_pson(*args)
18
+ def to_data_hash
20
19
  result = { :name => @full_module_name }
21
20
  result[:version_requirement] = @version_requirement if @version_requirement && ! @version_requirement.nil?
22
21
  result[:repository] = @repository.to_s if @repository && ! @repository.nil?
23
- result.to_pson(*args)
22
+ result
23
+ end
24
+
25
+ # Return PSON representation of this data.
26
+ def to_pson(*args)
27
+ to_data_hash.to_pson(*args)
24
28
  end
25
29
  end
26
30
  end
@@ -129,7 +129,7 @@ module Puppet::ModuleTool
129
129
  end
130
130
  end
131
131
 
132
- def to_hash()
132
+ def to_data_hash()
133
133
  return extra_metadata.merge({
134
134
  'name' => @full_module_name,
135
135
  'version' => @version,
@@ -145,9 +145,13 @@ module Puppet::ModuleTool
145
145
  })
146
146
  end
147
147
 
148
+ def to_hash()
149
+ to_data_hash
150
+ end
151
+
148
152
  # Return the PSON record representing this instance.
149
153
  def to_pson(*args)
150
- return to_hash.to_pson(*args)
154
+ return to_data_hash.to_pson(*args)
151
155
  end
152
156
  end
153
157
  end
@@ -4,7 +4,8 @@ module Puppet::ModuleTool::Tar
4
4
  require 'puppet/module_tool/tar/mini'
5
5
 
6
6
  def self.instance(module_name)
7
- if Facter.value('osfamily') == 'Solaris' && Puppet::Util.which('gtar') && ! Puppet::Util::Platform.windows?
7
+ gtar_platforms = ['Solaris', 'OpenBSD']
8
+ if gtar_platforms.include?(Facter.value('osfamily')) && Puppet::Util.which('gtar')
8
9
  Solaris.new
9
10
  elsif Puppet::Util.which('tar') && ! Puppet::Util::Platform.windows?
10
11
  Gnu.new
@@ -1,8 +1,12 @@
1
1
  class Puppet::ModuleTool::Tar::Gnu
2
+ def initialize(command = "tar")
3
+ @command = command
4
+ end
5
+
2
6
  def unpack(sourcefile, destdir, owner)
3
- Puppet::Util::Execution.execute("tar xzf #{sourcefile} --no-same-permissions --no-same-owner -C #{destdir}")
7
+ Puppet::Util::Execution.execute("#{@command} xzf #{sourcefile} --no-same-owner -C #{destdir}")
4
8
  Puppet::Util::Execution.execute("find #{destdir} -type d -exec chmod 755 {} +")
5
- Puppet::Util::Execution.execute("find #{destdir} -type f -exec chmod 644 {} +")
9
+ Puppet::Util::Execution.execute("find #{destdir} -type f -exec chmod a-wst {} +")
6
10
  Puppet::Util::Execution.execute("chown -R #{owner} #{destdir}")
7
11
  end
8
12
 
@@ -7,6 +7,8 @@ class Puppet::ModuleTool::Tar::Mini
7
7
  Zlib::GzipReader.open(sourcefile) do |reader|
8
8
  Archive::Tar::Minitar.unpack(reader, destdir) do |action, name, stats|
9
9
  case action
10
+ when :file_done
11
+ File.chmod(0444, "#{destdir}/#{name}")
10
12
  when :dir, :file_start
11
13
  validate_entry(destdir, name)
12
14
  Puppet.debug("extracting #{destdir}/#{name}")
@@ -1,8 +1,5 @@
1
1
  class Puppet::ModuleTool::Tar::Solaris < Puppet::ModuleTool::Tar::Gnu
2
- def unpack(sourcefile, destdir, owner)
3
- Puppet::Util::Execution.execute("gtar xzf #{sourcefile} --no-same-permissions --no-same-owner -C #{destdir}")
4
- Puppet::Util::Execution.execute("find #{destdir} -type d -exec chmod 755 {} +")
5
- Puppet::Util::Execution.execute("find #{destdir} -type f -exec chmod 644 {} +")
6
- Puppet::Util::Execution.execute("chown -R #{owner} #{destdir}")
2
+ def initialize
3
+ super("gtar")
7
4
  end
8
5
  end
@@ -3,8 +3,6 @@ require 'puppet/network/rights'
3
3
  module Puppet
4
4
  class ConfigurationError < Puppet::Error; end
5
5
  class Network::AuthConfig
6
-
7
- extend MonitorMixin
8
6
  attr_accessor :rights
9
7
 
10
8
  DEFAULT_ACL = [
@@ -14,7 +14,7 @@ module Puppet::Network::Authentication
14
14
  certs << Puppet::SSL::CertificateAuthority.instance.host.certificate if Puppet::SSL::CertificateAuthority.ca?
15
15
 
16
16
  # Always check the host cert if we have one, this will be the agent or master cert depending on the run mode
17
- certs << Puppet::SSL::Host.localhost.certificate if FileTest.exist?(Puppet[:hostcert])
17
+ certs << Puppet::SSL::Host.localhost.certificate if Puppet::FileSystem::File.exist?(Puppet[:hostcert])
18
18
 
19
19
  # Remove nil values for caller convenience
20
20
  certs.compact.each do |cert|
@@ -82,21 +82,20 @@ module Puppet
82
82
  end
83
83
 
84
84
  def interpolate(match)
85
- Thread.current[:declarations] = @declarations.collect { |ace| ace.interpolate(match) }.sort
85
+ @modified_declarations = @declarations.collect { |ace| ace.interpolate(match) }.sort
86
86
  end
87
87
 
88
88
  def reset_interpolation
89
- Thread.current[:declarations] = nil
89
+ @modified_declarations = nil
90
90
  end
91
91
 
92
92
  private
93
93
 
94
- # returns our ACEs list, but if we have a modification of it
95
- # in our current thread, let's return it
96
- # this is used if we want to override the this purely immutable list
97
- # by a modified version in a multithread safe way.
94
+ # Returns our ACEs list, but if we have a modification of it, let's return
95
+ # it. This is used if we want to override the this purely immutable list
96
+ # by a modified version.
98
97
  def declarations
99
- Thread.current[:declarations] || @declarations
98
+ @modified_declarations || @declarations
100
99
  end
101
100
 
102
101
  # Store the results of a pattern into our hash. Basically just
@@ -1,10 +1,9 @@
1
- require 'puppet/provider'
2
- require 'puppet/provider/confiner'
1
+ require 'puppet/confiner'
3
2
 
4
3
  # A simple class for modeling encoding formats for moving
5
4
  # instances around the network.
6
5
  class Puppet::Network::Format
7
- include Puppet::Provider::Confiner
6
+ include Puppet::Confiner
8
7
 
9
8
  attr_reader :name, :mime
10
9
  attr_accessor :intern_method, :render_method, :intern_multiple_method, :render_multiple_method, :weight, :required_methods, :extension
@@ -5,6 +5,8 @@ require 'puppet/network/format'
5
5
  module Puppet::Network::FormatHandler
6
6
  class FormatError < Puppet::Error; end
7
7
 
8
+ ALL_MEDIA_TYPES = '*/*'.freeze
9
+
8
10
  @formats = {}
9
11
 
10
12
  def self.create(*args, &block)
@@ -70,24 +72,20 @@ module Puppet::Network::FormatHandler
70
72
  # that generally conforms to an HTTP Accept header. Any quality specifiers
71
73
  # are ignored and instead the formats are simply in strict preference order
72
74
  # (most preferred is first)
73
- # @param supported [Array<Symbol>] the names of the supported formats (order
74
- # does not matter)
75
+ # @param supported [Array<Symbol>] the names of the supported formats (the
76
+ # most preferred format is first)
75
77
  # @return [Puppet::Network::Format, nil] the most suitable format
76
78
  # @api private
77
79
  def self.most_suitable_format_for(accepted, supported)
78
80
  format_name = accepted.collect do |accepted|
79
81
  accepted.to_s.sub(/;q=.*$/, '')
80
82
  end.collect do |accepted|
81
- begin
82
- if accepted == '*/*'
83
- formats
84
- else
85
- format_to_canonical_name(accepted)
86
- end
87
- rescue ArgumentError
88
- nil
83
+ if accepted == ALL_MEDIA_TYPES
84
+ supported.first
85
+ else
86
+ format_to_canonical_name_or_nil(accepted)
89
87
  end
90
- end.flatten.find do |accepted|
88
+ end.find do |accepted|
91
89
  supported.include?(accepted)
92
90
  end
93
91
 
@@ -95,6 +93,13 @@ module Puppet::Network::FormatHandler
95
93
  format_for(format_name)
96
94
  end
97
95
  end
96
+
97
+ # @api private
98
+ def self.format_to_canonical_name_or_nil(format)
99
+ format_to_canonical_name(format)
100
+ rescue ArgumentError
101
+ nil
102
+ end
98
103
  end
99
104
 
100
105
  require 'puppet/network/formats'