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
@@ -0,0 +1,23 @@
1
+ Puppet::Type.type(:service).provide :openbsd, :parent => :init do
2
+
3
+ desc "Provider for OpenBSD's rc.d daemon control scripts"
4
+
5
+ confine :operatingsystem => :openbsd
6
+ defaultfor :operatingsystem => :openbsd
7
+
8
+ def self.defpath
9
+ ["/etc/rc.d"]
10
+ end
11
+
12
+ def startcmd
13
+ [self.initscript, "-f", :start]
14
+ end
15
+
16
+ def restartcmd
17
+ (@resource[:hasrestart] == :true) && [self.initscript, "-f", :restart]
18
+ end
19
+
20
+ def statuscmd
21
+ [self.initscript, :check]
22
+ end
23
+ end
File without changes
@@ -42,7 +42,7 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
42
42
  def defpath(dummy_argument=:work_arround_for_ruby_GC_bug)
43
43
  unless @defpath
44
44
  ["/etc/sv", "/var/lib/service"].each do |path|
45
- if FileTest.exist?(path)
45
+ if Puppet::FileSystem::File.exist?(path)
46
46
  @defpath = path
47
47
  break
48
48
  end
@@ -57,7 +57,7 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
57
57
  def servicedir
58
58
  unless @servicedir
59
59
  ["/service", "/etc/service","/var/service"].each do |path|
60
- if FileTest.exist?(path)
60
+ if Puppet::FileSystem::File.exist?(path)
61
61
  @servicedir = path
62
62
  break
63
63
  end
@@ -105,7 +105,7 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
105
105
  # before a disable
106
106
  def disable
107
107
  # unlink the daemon symlink to disable it
108
- File.unlink(self.service) if FileTest.symlink?(self.service)
108
+ Puppet::FileSystem::File.unlink(self.service) if Puppet::FileSystem::File.new(self.service).symlink?
109
109
  end
110
110
  end
111
111
 
File without changes
File without changes
File without changes
@@ -71,7 +71,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
71
71
  paths.each do |path|
72
72
  service_name = name.match(/^(\S+)/)[1]
73
73
  fqname = File.join(path, service_name + suffix)
74
- if File.exists?(fqname)
74
+ if Puppet::FileSystem::File.exist?(fqname)
75
75
  return fqname
76
76
  end
77
77
 
@@ -148,7 +148,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
148
148
 
149
149
  private
150
150
  def is_upstart?(script = initscript)
151
- File.exists?(script) && script.match(/\/etc\/init\/\S+\.conf/)
151
+ Puppet::FileSystem::File.exist?(script) && script.match(/\/etc\/init\/\S+\.conf/)
152
152
  end
153
153
 
154
154
  def version_is_pre_0_6_7
@@ -256,7 +256,7 @@ private
256
256
  end
257
257
 
258
258
  def read_override_file
259
- if File.exists?(overscript)
259
+ if Puppet::FileSystem::File.exist?(overscript)
260
260
  read_script_from(overscript)
261
261
  else
262
262
  ""
@@ -41,7 +41,7 @@ Puppet::Type.type(:ssh_authorized_key).provide(
41
41
  end
42
42
 
43
43
  def user
44
- uid = File.stat(target).uid
44
+ uid = Puppet::FileSystem::File.new(target).stat.uid
45
45
  Etc.getpwuid(uid).name
46
46
  end
47
47
 
@@ -55,7 +55,7 @@ Puppet::Type.type(:ssh_authorized_key).provide(
55
55
  self.class.backup_target(target)
56
56
 
57
57
  Puppet::Util::SUIDManager.asuser(@resource.should(:user)) do
58
- unless File.exist?(dir = File.dirname(target))
58
+ unless Puppet::FileSystem::File.exist?(dir = File.dirname(target))
59
59
  Puppet.debug "Creating #{dir}"
60
60
  Dir.mkdir(dir, dir_perm)
61
61
  end
File without changes
File without changes
@@ -238,7 +238,7 @@ Puppet::Type.type(:user).provide :directoryservice do
238
238
  def self.get_sha1(guid)
239
239
  password_hash = nil
240
240
  password_hash_file = "#{password_hash_dir}/#{guid}"
241
- if File.exists?(password_hash_file) and File.file?(password_hash_file)
241
+ if Puppet::FileSystem::File.exist?(password_hash_file) and File.file?(password_hash_file)
242
242
  raise Puppet::Error, "Could not read password hash file at #{password_hash_file}" if not File.readable?(password_hash_file)
243
243
  f = File.new(password_hash_file)
244
244
  password_hash = f.read
@@ -160,7 +160,7 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
160
160
  else
161
161
  cmd = [command(:add)]
162
162
  end
163
- if not @resource.should(gid) and Puppet::Util.gid(@resource[:name])
163
+ if not @resource.should(:gid) and Puppet::Util.gid(@resource[:name])
164
164
  cmd += ["-g", @resource[:name]]
165
165
  end
166
166
  cmd += add_properties
@@ -261,7 +261,7 @@ Puppet::Type.type(:zone).provide(:solaris) do
261
261
  # which makes zoneadmd mount the zone root
262
262
  zoneadm :ready unless File.directory?(zoneetc)
263
263
 
264
- unless File.exists?(sysidcfg)
264
+ unless Puppet::FileSystem::File.exist?(sysidcfg)
265
265
  begin
266
266
  File.open(sysidcfg, "w", 0600) do |f|
267
267
  f.puts cfg
@@ -52,7 +52,7 @@ module Puppet::Rails::Benchmark
52
52
 
53
53
  file = "/tmp/time_debugging.yaml"
54
54
 
55
- if FileTest.exist?(file)
55
+ if Puppet::FileSystem::File.exist?(file)
56
56
  data = YAML.load_file(file)
57
57
  else
58
58
  data = {}
@@ -14,14 +14,13 @@ config = Puppet::Util::Reference.newreference(:configuration, :depth => 1, :doc
14
14
 
15
15
  # Print the doc string itself
16
16
  begin
17
- str << object.desc.gsub(/\n/, " ")
17
+ str << Puppet::Util::Docs.scrub(object.desc)
18
18
  rescue => detail
19
19
  Puppet.log_exception(detail)
20
20
  end
21
21
  str << "\n\n"
22
22
 
23
23
  # Now print the data about the item.
24
- str << ""
25
24
  val = object.default
26
25
  if name.to_s == "vardir"
27
26
  val = "/var/lib/puppet"
@@ -10,16 +10,14 @@ reference = Puppet::Util::Reference.newreference :indirection, :doc => "Indirect
10
10
  name = indirection.to_s.capitalize
11
11
  text << "## " + indirection.to_s + "\n\n"
12
12
 
13
- text << ind.doc + "\n\n"
14
-
15
- text << "### Termini\n\n"
13
+ text << Puppet::Util::Docs.scrub(ind.doc) + "\n\n"
16
14
 
17
15
  Puppet::Indirector::Terminus.terminus_classes(ind.name).sort { |a,b| a.to_s <=> b.to_s }.each do |terminus|
18
16
  terminus_name = terminus.to_s
19
17
  term_class = Puppet::Indirector::Terminus.terminus_class(ind.name, terminus)
20
18
  if term_class
21
19
  terminus_doc = Puppet::Util::Docs.scrub(term_class.doc)
22
- text << markdown_definitionlist(terminus_name, terminus_doc)
20
+ text << markdown_header("`#{terminus_name}` terminus", 3) << terminus_doc << "\n\n"
23
21
  else
24
22
  Puppet.warning "Could not build docs for indirector #{name.inspect}, terminus #{terminus_name.inspect}: could not locate terminus."
25
23
  end
@@ -31,7 +29,7 @@ end
31
29
 
32
30
  reference.header = <<HEADER
33
31
 
34
- # About Indirection
32
+ ## About Indirection
35
33
 
36
34
  Puppet's indirector support pluggable backends (termini) for a variety of key-value stores (indirections).
37
35
  Each indirection type corresponds to a particular Ruby class (the "Indirected Class" below) and values are instances of that class.
@@ -40,15 +38,15 @@ The termini can be local (e.g., on-disk files) or remote (e.g., using a REST int
40
38
 
41
39
  An indirector has five methods, which are mapped into HTTP verbs for the REST interface:
42
40
 
43
- * `find(key)` - get a single value (mapped to GET or POST with a singular endpoint)
44
- * `search(key)` - get a list of matching values (mapped to GET with a plural endpoint)
45
- * `head(key)` - return true if the key exists (mapped to HEAD)
46
- * `destroy(key)` - remove the key van value (mapped to DELETE)
47
- * `save(instance)` - write the instance to the store, using the instance's name as the key (mapped to PUT)
41
+ * `find(key)` - get a single value (mapped to GET or POST with a singular endpoint)
42
+ * `search(key)` - get a list of matching values (mapped to GET with a plural endpoint)
43
+ * `head(key)` - return true if the key exists (mapped to HEAD)
44
+ * `destroy(key)` - remove the key van value (mapped to DELETE)
45
+ * `save(instance)` - write the instance to the store, using the instance's name as the key (mapped to PUT)
48
46
 
49
- These methods are available via the `indirection` class method on the indirected classes. For example::
47
+ These methods are available via the `indirection` class method on the indirected classes. For example:
50
48
 
51
- foo_cert = Puppet::SSL::Certificate.indirection.find('foo.example.com')
49
+ foo_cert = Puppet::SSL::Certificate.indirection.find('foo.example.com')
52
50
 
53
51
  At startup, each indirection is configured with a terminus.
54
52
  In most cases, this is the default terminus defined by the indirected class, but it can be overridden by the application or face, or overridden with the `route_file` configuration.
@@ -58,12 +56,12 @@ Indirections can also have a cache, represented by a second terminus.
58
56
  This is a write-through cache: modifications are written both to the cache and to the primary terminus.
59
57
  Values fetched from the terminus are written to the cache.
60
58
 
61
- ## Interaction with REST
59
+ ### Interaction with REST
62
60
 
63
61
  REST endpoints have the form `/{environment}/{indirection}/{key}`, where the indirection can be singular or plural, following normal English spelling rules.
64
62
  On the server side, REST responses are generated from the locally-configured endpoints.
65
63
 
66
- ## Indirections and Termini
64
+ ### Indirections and Termini
67
65
 
68
66
  Below is the list of all indirections, their associated terminus classes, and how you select between them.
69
67
 
@@ -1,5 +1,3 @@
1
- #!/usr/bin/env ruby
2
-
3
1
  # subscriptions are permanent associations determining how different
4
2
  # objects react to an event
5
3
 
@@ -72,7 +70,7 @@ class Puppet::Relationship
72
70
  "{ #{source} => #{target} }"
73
71
  end
74
72
 
75
- def to_pson_data_hash
73
+ def to_data_hash
76
74
  data = {
77
75
  'source' => source.to_s,
78
76
  'target' => target.to_s
@@ -85,8 +83,13 @@ class Puppet::Relationship
85
83
  data
86
84
  end
87
85
 
86
+ # This doesn't include document type as it is part of a catalog
87
+ def to_pson_data_hash
88
+ to_data_hash
89
+ end
90
+
88
91
  def to_pson(*args)
89
- to_pson_data_hash.to_pson(*args)
92
+ to_data_hash.to_pson(*args)
90
93
  end
91
94
 
92
95
  def to_s
@@ -72,9 +72,9 @@ class Puppet::Reports
72
72
  instance_loader(:report).loadall
73
73
  loaded_instances(:report).sort { |a,b| a.to_s <=> b.to_s }.each do |name|
74
74
  mod = self.report(name)
75
- docs += "#{name}\n#{"-" * name.to_s.length}\n"
75
+ docs << "#{name}\n#{"-" * name.to_s.length}\n"
76
76
 
77
- docs += Puppet::Util::Docs.scrub(mod.doc) + "\n\n"
77
+ docs << Puppet::Util::Docs.scrub(mod.doc) << "\n\n"
78
78
  end
79
79
 
80
80
  docs
@@ -114,7 +114,7 @@ Puppet::Reports.register_report(:rrdgraph) do
114
114
  metric.graph
115
115
  end
116
116
 
117
- mkhtml unless FileTest.exists?(File.join(hostdir, "index.html"))
117
+ mkhtml unless Puppet::FileSystem::File.exist?(File.join(hostdir, "index.html"))
118
118
  end
119
119
 
120
120
  # Unfortunately, RRD does not deal well with changing lists of values,
@@ -17,7 +17,7 @@ Puppet::Reports.register_report(:store) do
17
17
 
18
18
  dir = File.join(Puppet[:reportdir], host)
19
19
 
20
- if ! FileTest.exists?(dir)
20
+ if ! Puppet::FileSystem::File.exist?(dir)
21
21
  FileUtils.mkdir_p(dir)
22
22
  FileUtils.chmod_R(0750, dir)
23
23
  end
@@ -54,11 +54,11 @@ Puppet::Reports.register_report(:store) do
54
54
 
55
55
  dir = File.join(Puppet[:reportdir], host)
56
56
 
57
- if File.exists?(dir)
57
+ if Puppet::FileSystem::File.exist?(dir)
58
58
  Dir.entries(dir).each do |file|
59
59
  next if ['.','..'].include?(file)
60
60
  file = File.join(dir, file)
61
- File.unlink(file) if File.file?(file)
61
+ Puppet::FileSystem::File.unlink(file) if File.file?(file)
62
62
  end
63
63
  Dir.rmdir(dir)
64
64
  end
@@ -108,7 +108,7 @@ Puppet::Reports.register_report(:tagmail) do
108
108
 
109
109
  # Process the report. This just calls the other associated messages.
110
110
  def process
111
- unless FileTest.exists?(Puppet[:tagmap])
111
+ unless Puppet::FileSystem::File.exist?(Puppet[:tagmap])
112
112
  Puppet.notice "Cannot send tagmail report; no tagmap file #{Puppet[:tagmap]}"
113
113
  return
114
114
  end
@@ -158,7 +158,7 @@ Puppet::Reports.register_report(:tagmail) do
158
158
  p.puts "From: #{Puppet[:reportfrom]}"
159
159
  p.puts "Subject: Puppet Report for #{self.host}"
160
160
  p.puts "To: " + emails.join(", ")
161
-
161
+ p.puts
162
162
  p.puts messages
163
163
  end
164
164
  end
@@ -56,7 +56,7 @@ class Puppet::Resource
56
56
  "#{@type}[#{@title}]#{to_hash.inspect}"
57
57
  end
58
58
 
59
- def to_pson_data_hash
59
+ def to_data_hash
60
60
  data = ([:type, :title, :tags] + ATTRIBUTES).inject({}) do |hash, param|
61
61
  next hash unless value = self.send(param)
62
62
  hash[param.to_s] = value
@@ -80,6 +80,11 @@ class Puppet::Resource
80
80
  data
81
81
  end
82
82
 
83
+ # This doesn't include document type as it is part of a catalog
84
+ def to_pson_data_hash
85
+ to_data_hash
86
+ end
87
+
83
88
  def self.value_to_pson_data(value)
84
89
  if value.is_a? Array
85
90
  value.map{|v| value_to_pson_data(v) }
@@ -102,8 +107,20 @@ class Puppet::Resource
102
107
  end
103
108
  end
104
109
 
110
+ YAML_ATTRIBUTES = [:@file, :@line, :@exported, :@type, :@title, :@tags, :@parameters]
111
+
112
+ # Explicitly list the instance variables that should be serialized when
113
+ # converting to YAML.
114
+ #
115
+ # @api private
116
+ # @return [Array<Symbol>] The intersection of our explicit variable list and
117
+ # all of the instance variables defined on this class.
118
+ def to_yaml_properties
119
+ YAML_ATTRIBUTES & super
120
+ end
121
+
105
122
  def to_pson(*args)
106
- to_pson_data_hash.to_pson(*args)
123
+ to_data_hash.to_pson(*args)
107
124
  end
108
125
 
109
126
  # Proxy these methods to the parameters hash. It's likely they'll
@@ -328,10 +345,7 @@ class Puppet::Resource
328
345
  result = scope.compiler.injector.lookup(scope, name)
329
346
  end
330
347
  if result.nil?
331
- Puppet::DataBinding.indirection.find(
332
- name,
333
- :environment => scope.environment.to_s,
334
- :variables => Puppet::DataBinding::Variables.new(scope))
348
+ lookup_with_databinding(name, scope)
335
349
  else
336
350
  result
337
351
  end
@@ -339,6 +353,19 @@ class Puppet::Resource
339
353
 
340
354
  private :lookup_external_default_for
341
355
 
356
+ def lookup_with_databinding(name, scope)
357
+ begin
358
+ Puppet::DataBinding.indirection.find(
359
+ name,
360
+ :environment => scope.environment.to_s,
361
+ :variables => scope)
362
+ rescue Puppet::DataBinding::LookupError => e
363
+ raise Puppet::Error.new("Error from DataBinding '#{Puppet[:data_binding_terminus]}' while looking up '#{name}': #{e.message}", e)
364
+ end
365
+ end
366
+
367
+ private :lookup_with_databinding
368
+
342
369
  def set_default_parameters(scope)
343
370
  return [] unless resource_type and resource_type.respond_to?(:arguments)
344
371
 
@@ -362,8 +389,39 @@ class Puppet::Resource
362
389
  end.compact
363
390
  end
364
391
 
365
- def to_resource
366
- self
392
+ def copy_as_resource
393
+ result = Puppet::Resource.new(type, title)
394
+
395
+ to_hash.each do |p, v|
396
+ if v.is_a?(Puppet::Resource)
397
+ v = Puppet::Resource.new(v.type, v.title)
398
+ elsif v.is_a?(Array)
399
+ # flatten resource references arrays
400
+ v = v.flatten if v.flatten.find { |av| av.is_a?(Puppet::Resource) }
401
+ v = v.collect do |av|
402
+ av = Puppet::Resource.new(av.type, av.title) if av.is_a?(Puppet::Resource)
403
+ av
404
+ end
405
+ end
406
+
407
+ # If the value is an array with only one value, then
408
+ # convert it to a single value. This is largely so that
409
+ # the database interaction doesn't have to worry about
410
+ # whether it returns an array or a string.
411
+ result[p] = if v.is_a?(Array) and v.length == 1
412
+ v[0]
413
+ else
414
+ v
415
+ end
416
+ end
417
+
418
+ result.file = self.file
419
+ result.line = self.line
420
+ result.exported = self.exported
421
+ result.virtual = self.virtual
422
+ result.tag(*self.tags)
423
+
424
+ result
367
425
  end
368
426
 
369
427
  def valid_parameter?(name)
@@ -365,19 +365,23 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
365
365
  result.add_edge(edge)
366
366
  end
367
367
 
368
+ def to_data_hash
369
+ {
370
+ 'tags' => tags,
371
+ 'name' => name,
372
+ 'version' => version,
373
+ 'environment' => environment.to_s,
374
+ 'resources' => @resources.collect { |v| @resource_table[v].to_pson_data_hash },
375
+ 'edges' => edges. collect { |e| e.to_pson_data_hash },
376
+ 'classes' => classes
377
+ }
378
+ end
379
+
368
380
  PSON.register_document_type('Catalog',self)
369
381
  def to_pson_data_hash
370
382
  {
371
383
  'document_type' => 'Catalog',
372
- 'data' => {
373
- 'tags' => tags,
374
- 'name' => name,
375
- 'version' => version,
376
- 'environment' => environment.to_s,
377
- 'resources' => @resources.collect { |v| @resource_table[v].to_pson_data_hash },
378
- 'edges' => edges. collect { |e| e.to_pson_data_hash },
379
- 'classes' => classes
380
- },
384
+ 'data' => to_data_hash,
381
385
  'metadata' => {
382
386
  'api_version' => 1
383
387
  }
@@ -465,7 +469,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
465
469
 
466
470
  # Verify that the given resource isn't declared elsewhere.
467
471
  def fail_on_duplicate_type_and_title(resource)
468
- # Short-curcuit the common case,
472
+ # Short-circuit the common case,
469
473
  return unless existing_resource = @resource_table[title_key_for_ref(resource.ref)]
470
474
 
471
475
  # If we've gotten this far, it's a real conflict
@@ -492,22 +496,11 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
492
496
  next if virtual_not_exported?(resource)
493
497
  next if block_given? and yield resource
494
498
 
495
- #This is hackity hack for 1094
496
- #Aliases aren't working in the ral catalog because the current instance of the resource
497
- #has a reference to the catalog being converted. . . So, give it a reference to the new one
498
- #problem solved. . .
499
- if resource.class == Puppet::Resource
500
- resource = resource.dup
501
- resource.catalog = result
502
- elsif resource.is_a?(Puppet::Parser::Resource)
503
- resource = resource.to_resource
504
- resource.catalog = result
505
- end
499
+ newres = resource.copy_as_resource
500
+ newres.catalog = result
506
501
 
507
- if resource.is_a?(Puppet::Resource) and convert.to_s == "to_resource"
508
- newres = resource
509
- else
510
- newres = resource.send(convert)
502
+ if convert != :to_resource
503
+ newres = newres.to_ral
511
504
  end
512
505
 
513
506
  # We can't guarantee that resources don't munge their names