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,62 @@
1
+ # Windows Security Descriptor
2
+ #
3
+ # Represents a security descriptor that can be applied to any Windows securable
4
+ # object, e.g. file, registry key, service, etc. It consists of an owner, group,
5
+ # flags, DACL, and SACL. The SACL is not currently supported, though it has the
6
+ # same layout as a DACL.
7
+ #
8
+ # @see http://msdn.microsoft.com/en-us/library/windows/desktop/aa379563(v=vs.85).aspx
9
+ # @api private
10
+ class Puppet::Util::Windows::SecurityDescriptor
11
+ require 'puppet/util/windows/security'
12
+ include Puppet::Util::Windows::SID
13
+
14
+ attr_reader :owner, :group, :dacl
15
+ attr_accessor :protect
16
+
17
+ # Construct a security descriptor
18
+ #
19
+ # @param owner [String] The SID of the owner, e.g. 'S-1-5-18'
20
+ # @param group [String] The SID of the group
21
+ # @param dacl [AccessControlList] The ACL specifying the rights granted to
22
+ # each user for accessing the object that the security descriptor refers to.
23
+ # @param protect [Boolean] If true, then inheritable access control
24
+ # entries will be blocked, and not applied to the object.
25
+ def initialize(owner, group, dacl, protect = false)
26
+ @owner = owner
27
+ @group = group
28
+ @dacl = dacl
29
+ @protect = protect
30
+ end
31
+
32
+ # Set the owner. Non-inherited access control entries assigned to the
33
+ # current owner will be assigned to the new owner.
34
+ #
35
+ # @param new_owner [String] The SID of the new owner, e.g. 'S-1-5-18'
36
+ def owner=(new_owner)
37
+ if @owner != new_owner
38
+ @dacl.reassign!(@owner, new_owner)
39
+ @owner = new_owner
40
+ end
41
+ end
42
+
43
+ # Set the group. Non-inherited access control entries assigned to the
44
+ # current group will be assigned to the new group.
45
+ #
46
+ # @param new_group [String] The SID of the new group, e.g. 'S-1-0-0'
47
+ def group=(new_group)
48
+ if @group != new_group
49
+ @dacl.reassign!(@group, new_group)
50
+ @group = new_group
51
+ end
52
+ end
53
+
54
+ def inspect
55
+ str = sid_to_name(owner)
56
+ str << "\n"
57
+ str << sid_to_name(group)
58
+ str << "\n"
59
+ str << @dacl.inspect
60
+ str
61
+ end
62
+ end
@@ -20,17 +20,39 @@ module Puppet::Util::Windows
20
20
  # 'BUILTIN\Administrators', or 'S-1-5-32-544', and will return the
21
21
  # SID. Returns nil if the account doesn't exist.
22
22
  def name_to_sid(name)
23
+ sid = name_to_sid_object(name)
24
+
25
+ sid ? sid.to_s : nil
26
+ end
27
+
28
+ # Convert an account name, e.g. 'Administrators' into a SID object,
29
+ # e.g. 'S-1-5-32-544'. The name can be specified as 'Administrators',
30
+ # 'BUILTIN\Administrators', or 'S-1-5-32-544', and will return the
31
+ # SID object. Returns nil if the account doesn't exist.
32
+ def name_to_sid_object(name)
23
33
  # Apparently, we accept a symbol..
24
- name = name.to_s if name
34
+ name = name.to_s.strip if name
25
35
 
26
- # if it's in SID string form, return it, otherwise, lookup sid
27
- is_sid = Win32::Security::SID.string_to_sid(name) rescue nil
36
+ # if it's in SID string form, convert to user
37
+ parsed_sid = Win32::Security::SID.string_to_sid(name) rescue nil
28
38
 
29
- is_sid ? name : Win32::Security::SID.new(name).to_s
39
+ parsed_sid ? Win32::Security::SID.new(parsed_sid) : Win32::Security::SID.new(name)
30
40
  rescue
31
41
  nil
32
42
  end
33
43
 
44
+ # Converts an octet string array of bytes to a SID object,
45
+ # e.g. [1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0] is the representation for
46
+ # S-1-5-18, the local 'SYSTEM' account.
47
+ # Raises an Error for nil or non-array input.
48
+ def octet_string_to_sid_object(bytes)
49
+ if !bytes || !bytes.respond_to?('pack') || bytes.empty?
50
+ raise Puppet::Util::Windows::Error.new("Octet string must be an array of bytes")
51
+ end
52
+
53
+ Win32::Security::SID.new(bytes.pack('C*'))
54
+ end
55
+
34
56
  # Convert a SID string, e.g. "S-1-5-32-544" to a name,
35
57
  # e.g. 'BUILTIN\Administrators'. Returns nil if an account
36
58
  # for that SID does not exist.
@@ -7,7 +7,7 @@
7
7
 
8
8
 
9
9
  module Puppet
10
- PUPPETVERSION = '3.3.2'
10
+ PUPPETVERSION = '3.4.0-rc1'
11
11
 
12
12
  ##
13
13
  # version is a public API method intended to always provide a fast and
@@ -81,7 +81,7 @@ module Puppet
81
81
  # @return [String] for example: "1.6.14-6-gea42046" or nil if the VERSION
82
82
  # file does not exist.
83
83
  def self.read_version_file(path)
84
- if File.exists?(path)
84
+ if File.exist?(path)
85
85
  File.read(path).chomp
86
86
  end
87
87
  end
@@ -16,6 +16,6 @@ Puppet::Type.type(:a2mod).provide(:debian) do
16
16
 
17
17
  def exists?
18
18
  mod= "/etc/apache2/mods-enabled/" + resource[:name] + ".load"
19
- File.exists?(mod)
19
+ Puppet::FileSystem::File.exist?(mod)
20
20
  end
21
21
  end
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "puppetlabs/ruby",
3
+ "version": "0.0.2",
4
+ "summary": "Manage Ruby",
5
+ "source": "git@github.com/puppetlabs/puppetlabs-ruby.git",
6
+ "project_page": "http://github.com/puppetlabs/puppetlabs-ruby",
7
+ "author": "Puppet Labs",
8
+ "license": "Apache-2.0",
9
+ "operatingsystem_support": [
10
+ "RedHat",
11
+ "OpenSUSE",
12
+ "SLES",
13
+ "SLED",
14
+ "Debian",
15
+ "Ubuntu"
16
+ ],
17
+ "puppet_version": [
18
+ 2.7,
19
+ 3.0,
20
+ 3.1,
21
+ 3.2,
22
+ 3.3,
23
+ ],
24
+ }
@@ -0,0 +1,32 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIFmTCCA4GgAwIBAgIQea0WoUqgpa1Mc1j0BxMuZTANBgkqhkiG9w0BAQUFADBf
3
+ MRMwEQYKCZImiZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0
4
+ MS0wKwYDVQQDEyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw
5
+ HhcNMDEwNTA5MjMxOTIyWhcNMjEwNTA5MjMyODEzWjBfMRMwEQYKCZImiZPyLGQB
6
+ GRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQDEyRNaWNy
7
+ b3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEB
8
+ AQUAA4ICDwAwggIKAoICAQDzXfqAZ9Rap6kMLJAg0DUIPHWEzbcHiZyJ2t7Ow2D6
9
+ kWhanpRxKRh2fMLgyCV2lA5Y+gQ0Nubfr/eAuulYCyuT5Z0F43cikfc0ZDwikR1e
10
+ 4QmQvBT+/HVYGeF5tweSo66IWQjYnwfKA1j8aCltMtfSqMtL/OELSDJP5uu4rU/k
11
+ XG8TlJnbldV126gat5SRtHdb9UgMj2p5fRRwBH1tr5D12nDYR7e/my9s5wW34RFg
12
+ rHmRFHzF1qbk4X7Vw37lktI8ALU2gt554W3ztW74nzPJy1J9c5g224uha6KVl5uj
13
+ 3sJNJv8GlmclBsjnrOTuEjOVMZnINQhONMp5U9W1vmMyWUA2wKVOBE0921sHM+RY
14
+ v+8/U2TYQlk1V/0PRXwkBE2e1jh0EZcikM5oRHSSb9VLb7CG48c2QqDQ/MHAWvmj
15
+ YbkwR3GWChawkcBCle8Qfyhq4yofseTNAz93cQTHIPxJDx1FiKTXy36IrY4t7EXb
16
+ xFEEySr87IaemhGXW97OU4jm4rf9rJXCKEDb7wSQ34EzOdmyRaUjhwalVYkxuwYt
17
+ YA5BGH0fLrWXyxHrFdUkpZTvFRSJ/Utz+jJb/NEzAPlZYnAHMuouq0Ate8rdIWcb
18
+ MJmPFqojqEHRsG4RmzbE3kB0nOFYZcFgHnpbOMiPuwQmfNQWQOW2a2yqhv0Av87B
19
+ NQIDAQABo1EwTzALBgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
20
+ FgQUDqyCYEBWJ5flJRP8KuEKU5VZ5KQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI
21
+ hvcNAQEFBQADggIBAMURTQM6YN1dUhF3j7K7NsiyBb+0t6jYIJ1cEwO2HCL6BhM1
22
+ tshj1JpHbyZX0lXxBLEmX9apUGigvNK4bszD6azfGc14rFl0rGY0NsQbPmw4TDMO
23
+ MBINoyb+UVMA/69aToQNDx/kbQUuToVLjWwzb1TSZKu/UK99ejmgN+1jAw/8EwbO
24
+ FjbUVDuVG1FiOuVNF9QFOZKaJ6hbqr3su77jIIlgcWxWs6UT0G0OI36VA+1oPfLY
25
+ Y7hrTbboMLXhypRL96KqXZkwsj2nwlFsKCABJCcrSwC3nRFrcL6yEIK8DJto0I07
26
+ JIeqmShynTNfWZC99d6TnjpiWjQ54ohVHbkGsMGJay3XacMZEjaE0Mmg2v8vaXiy
27
+ 5Xra69cMwPe9Yxe4ORM4ojZbe/KFVmodZGLBOOKqv1FmopT1EpxmIhBr8rcwki3y
28
+ KfA9OxRDaKLxnCk3y844ICVtfGfzfiQSJAMIgUfspZ6X9RjXz7vV73aW7/3O21ad
29
+ laBC+ZdY4dcxItNfWeY+biIA6kOEtiXb2fMIVmjAZGsdfOy2k6JiV24u2OdYj8Qx
30
+ SSbd3ik1h/UwcXBbFDxpvYkSfesuo/7Yf56CWlIKK8FDK9kwiJ/IEPuJjeahhXUz
31
+ fmye23MTZGJppS99ypZtn/gETTCSPW4hFCHJPeDD/YprnUr90aGdmUN3P7Da
32
+ -----END CERTIFICATE-----
@@ -26,7 +26,7 @@ describe "apply" do
26
26
 
27
27
  puppet.apply
28
28
 
29
- File.should be_exist(file_to_create)
29
+ Puppet::FileSystem::File.exist?(file_to_create).should be_true
30
30
  File.read(file_to_create).should == "my stuff"
31
31
  end
32
32
  end
@@ -40,7 +40,7 @@ describe Puppet::Application::Doc do
40
40
 
41
41
  expect { puppet.run_command }.to exit_with 0
42
42
 
43
- File.should be_exist('doc')
43
+ Puppet::FileSystem::File.exist?('doc').should be_true
44
44
  ensure
45
45
  Dir.chdir(old_dir)
46
46
  end
@@ -9,7 +9,9 @@ describe Puppet::Configurer do
9
9
  describe "when downloading plugins" do
10
10
  it "should use the :pluginsignore setting, split on whitespace, for ignoring remote files" do
11
11
  resource = Puppet::Type.type(:notify).new :name => "yay"
12
- Puppet::Type.type(:file).expects(:new).with { |args| args[:ignore] == Puppet[:pluginsignore].split(/\s+/) }.returns resource
12
+ Puppet::Type.type(:file).expects(:new).at_most(2).with do |args|
13
+ args[:ignore] == Puppet[:pluginsignore].split(/\s+/)
14
+ end.returns resource
13
15
 
14
16
  configurer = Puppet::Configurer.new
15
17
  configurer.stubs(:download_plugins?).returns true
@@ -59,7 +61,7 @@ describe Puppet::Configurer do
59
61
 
60
62
  file_mode = Puppet.features.microsoft_windows? ? '100644' : '100666'
61
63
 
62
- File.stat(Puppet[:lastrunfile]).mode.to_s(8).should == file_mode
64
+ Puppet::FileSystem::File.new(Puppet[:lastrunfile]).stat.mode.to_s(8).should == file_mode
63
65
 
64
66
  summary = nil
65
67
  File.open(Puppet[:lastrunfile], "r") do |fd|
@@ -0,0 +1,100 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet_spec/compiler'
4
+
5
+ describe "Data binding" do
6
+ include PuppetSpec::Files
7
+ include PuppetSpec::Compiler
8
+
9
+ let(:dir) { tmpdir("puppetdir") }
10
+
11
+ before do
12
+ Puppet[:data_binding_terminus] = "hiera"
13
+ Puppet[:modulepath] = dir
14
+ end
15
+
16
+ it "looks up data from hiera" do
17
+ configure_hiera_for({
18
+ "testing::binding::value" => "the value",
19
+ "testing::binding::calling_class" => "%{calling_class}",
20
+ "testing::binding::calling_module" => "%{calling_module}"
21
+ })
22
+
23
+ create_manifest_in_module("testing", "binding.pp",
24
+ <<-MANIFEST)
25
+ class testing::binding($value,
26
+ $calling_class,
27
+ $calling_module) {}
28
+ MANIFEST
29
+
30
+ catalog = compile_to_catalog("include testing::binding")
31
+ resource = catalog.resource('Class[testing::binding]')
32
+
33
+ expect(resource[:value]).to eq("the value")
34
+ expect(resource[:calling_class]).to eq("testing::binding")
35
+ expect(resource[:calling_module]).to eq("testing")
36
+ end
37
+
38
+ it "works with the puppet backend configured, although it can't use it for lookup" do
39
+ configure_hiera_for_puppet
40
+ create_manifest_in_module("testing", "binding.pp",
41
+ <<-MANIFEST)
42
+ # lookup via the puppet backend to ensure it works
43
+ class testing::binding($value = hiera('variable')) {}
44
+ MANIFEST
45
+
46
+ create_manifest_in_module("testing", "data.pp",
47
+ <<-MANIFEST)
48
+ class testing::data {
49
+ $variable = "the value"
50
+ }
51
+ MANIFEST
52
+
53
+ catalog = compile_to_catalog("include testing::binding")
54
+ resource = catalog.resource('Class[testing::binding]')
55
+
56
+ expect(resource[:value]).to eq("the value")
57
+ end
58
+
59
+ def configure_hiera_for(data)
60
+ hiera_config_file = tmpfile("hiera.yaml")
61
+
62
+ File.open(hiera_config_file, 'w') do |f|
63
+ f.write("---
64
+ :yaml:
65
+ :datadir: #{dir}
66
+ :hierarchy: ['global']
67
+ :logger: 'noop'
68
+ :backends: ['yaml']
69
+ ")
70
+ end
71
+
72
+ File.open(File.join(dir, 'global.yaml'), 'w') do |f|
73
+ f.write(YAML.dump(data))
74
+ end
75
+
76
+ Puppet[:hiera_config] = hiera_config_file
77
+ end
78
+
79
+ def configure_hiera_for_puppet
80
+ hiera_config_file = tmpfile("hiera.yaml")
81
+
82
+ File.open(hiera_config_file, 'w') do |f|
83
+ f.write("---
84
+ :logger: 'noop'
85
+ :backends: ['puppet']
86
+ ")
87
+ end
88
+
89
+ Puppet[:hiera_config] = hiera_config_file
90
+ end
91
+
92
+ def create_manifest_in_module(module_name, name, manifest)
93
+ module_dir = File.join(dir, module_name, 'manifests')
94
+ FileUtils.mkdir_p(module_dir)
95
+
96
+ File.open(File.join(module_dir, name), 'w') do |f|
97
+ f.write(manifest)
98
+ end
99
+ end
100
+ end
@@ -32,33 +32,36 @@ describe Puppet::Resource::Catalog::Compiler do
32
32
  end
33
33
 
34
34
  it "should filter out virtual resources when finding a catalog" do
35
- @one.virtual = true
36
- request = stub 'request', :name => "mynode"
35
+ Puppet[:node_terminus] = :memory
36
+ Puppet::Node.indirection.save(Puppet::Node.new("mynode"))
37
37
  Puppet::Resource::Catalog.indirection.terminus.stubs(:extract_facts_from_request)
38
- Puppet::Resource::Catalog.indirection.terminus.stubs(:node_from_request)
39
38
  Puppet::Resource::Catalog.indirection.terminus.stubs(:compile).returns(@catalog)
40
39
 
41
- Puppet::Resource::Catalog.indirection.find(request).resource_refs.should == [ @two.ref ]
40
+ @one.virtual = true
41
+
42
+ Puppet::Resource::Catalog.indirection.find("mynode").resource_refs.should == [ @two.ref ]
42
43
  end
43
44
 
44
45
  it "should not filter out exported resources when finding a catalog" do
45
- @one.exported = true
46
- request = stub 'request', :name => "mynode"
46
+ Puppet[:node_terminus] = :memory
47
+ Puppet::Node.indirection.save(Puppet::Node.new("mynode"))
47
48
  Puppet::Resource::Catalog.indirection.terminus.stubs(:extract_facts_from_request)
48
- Puppet::Resource::Catalog.indirection.terminus.stubs(:node_from_request)
49
49
  Puppet::Resource::Catalog.indirection.terminus.stubs(:compile).returns(@catalog)
50
50
 
51
- Puppet::Resource::Catalog.indirection.find(request).resource_refs.sort.should == [ @one.ref, @two.ref ]
51
+ @one.exported = true
52
+
53
+ Puppet::Resource::Catalog.indirection.find("mynode").resource_refs.sort.should == [ @one.ref, @two.ref ]
52
54
  end
53
55
 
54
56
  it "should filter out virtual exported resources when finding a catalog" do
55
- @one.exported = true
56
- @one.virtual = true
57
- request = stub 'request', :name => "mynode"
57
+ Puppet[:node_terminus] = :memory
58
+ Puppet::Node.indirection.save(Puppet::Node.new("mynode"))
58
59
  Puppet::Resource::Catalog.indirection.terminus.stubs(:extract_facts_from_request)
59
- Puppet::Resource::Catalog.indirection.terminus.stubs(:node_from_request)
60
60
  Puppet::Resource::Catalog.indirection.terminus.stubs(:compile).returns(@catalog)
61
61
 
62
- Puppet::Resource::Catalog.indirection.find(request).resource_refs.should == [ @two.ref ]
62
+ @one.exported = true
63
+ @one.virtual = true
64
+
65
+ Puppet::Resource::Catalog.indirection.find("mynode").resource_refs.should == [ @two.ref ]
63
66
  end
64
67
  end
@@ -15,7 +15,7 @@ describe Puppet::Indirector::DirectFileServer, " when interacting with the files
15
15
 
16
16
  it "should return an instance of the model" do
17
17
  pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
18
- FileTest.expects(:exists?).with(@filepath).returns(true)
18
+ Puppet::FileSystem::File.expects(:exist?).with(@filepath).returns(true)
19
19
 
20
20
  @terminus.find(@terminus.indirection.request(:find, "file://host#{@filepath}", nil)).should be_instance_of(Puppet::FileServing::Content)
21
21
  end
@@ -23,11 +23,9 @@ describe Puppet::Indirector::DirectFileServer, " when interacting with the files
23
23
 
24
24
  it "should return an instance capable of returning its content" do
25
25
  pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
26
- FileTest.expects(:exists?).with(@filepath).returns(true)
27
- File.stubs(:lstat).with(@filepath).returns(stub("stat", :ftype => "file"))
28
- IO.expects(:binread).with(@filepath).returns("my content")
26
+ filename = file_containing("testfile", "my content")
29
27
 
30
- instance = @terminus.find(@terminus.indirection.request(:find, "file://host#{@filepath}", nil))
28
+ instance = @terminus.find(@terminus.indirection.request(:find, "file://host#{filename}", nil))
31
29
 
32
30
  instance.content.should == "my content"
33
31
  end
@@ -59,8 +59,8 @@ describe Puppet::Indirector::FileContent::FileServer, " when finding files" do
59
59
  end
60
60
 
61
61
  it "should find file content in files when node name expansions are used" do
62
- FileTest.stubs(:exists?).returns true
63
- FileTest.stubs(:exists?).with(Puppet[:fileserverconfig]).returns(true)
62
+ Puppet::FileSystem::File.stubs(:exist?).returns true
63
+ Puppet::FileSystem::File.stubs(:exist?).with(Puppet[:fileserverconfig]).returns(true)
64
64
 
65
65
  @path = tmpfile("file_server_testing")
66
66
 
@@ -23,7 +23,7 @@ describe Puppet::Node::Facts do
23
23
  terminus = Puppet::Node::Facts.indirection.terminus(:yaml)
24
24
 
25
25
  terminus.expects(:path).with("me").returns "/my/yaml/file"
26
- FileTest.expects(:exist?).with("/my/yaml/file").returns false
26
+ Puppet::FileSystem::File.expects(:exist?).with("/my/yaml/file").returns false
27
27
 
28
28
  Puppet::Node::Facts.indirection.find("me").should be_nil
29
29
  end
@@ -21,7 +21,7 @@ describe Puppet::Node do
21
21
 
22
22
  terminus.expects(:path).with(@name).returns "/my/yaml/file"
23
23
 
24
- FileTest.expects(:exist?).with("/my/yaml/file").returns false
24
+ Puppet::FileSystem::File.expects(:exist?).with("/my/yaml/file").returns false
25
25
  Puppet::Node.indirection.find(@name).should be_nil
26
26
  end
27
27
 
@@ -1,8 +1,11 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
3
  require 'puppet/parser/parser_factory'
4
+ require 'puppet_spec/compiler'
4
5
 
5
6
  describe "Puppet::Parser::Compiler" do
7
+ include PuppetSpec::Compiler
8
+
6
9
  before :each do
7
10
  @node = Puppet::Node.new "testnode"
8
11
 
@@ -310,6 +313,93 @@ describe "Puppet::Parser::Compiler" do
310
313
  expected_subscriptions << ['b', 'c'] << ['e', 'd']
311
314
  end
312
315
  end
316
+
317
+ context 'when working with the trusted data hash' do
318
+ context 'and have opted in to trusted_node_data' do
319
+ before :each do
320
+ Puppet[:trusted_node_data] = true
321
+ end
322
+
323
+ it 'should make $trusted available' do
324
+ node = Puppet::Node.new("testing")
325
+ node.trusted_data = { "data" => "value" }
326
+
327
+ catalog = compile_to_catalog(<<-MANIFEST, node)
328
+ notify { 'test': message => $trusted[data] }
329
+ MANIFEST
330
+
331
+ catalog.resource("Notify[test]")[:message].should == "value"
332
+ end
333
+
334
+ it 'should not allow assignment to $trusted' do
335
+ node = Puppet::Node.new("testing")
336
+ node.trusted_data = { "data" => "value" }
337
+
338
+ expect do
339
+ catalog = compile_to_catalog(<<-MANIFEST, node)
340
+ $trusted = 'changed'
341
+ notify { 'test': message => $trusted == 'changed' }
342
+ MANIFEST
343
+ catalog.resource("Notify[test]")[:message].should == true
344
+ end.to raise_error(Puppet::Error, /Attempt to assign to a reserved variable name: 'trusted'/)
345
+ end
346
+
347
+ it 'should not allow addition to $trusted hash' do
348
+ node = Puppet::Node.new("testing")
349
+ node.trusted_data = { "data" => "value" }
350
+
351
+ expect do
352
+ catalog = compile_to_catalog(<<-MANIFEST, node)
353
+ $trusted['extra'] = 'added'
354
+ notify { 'test': message => $trusted['extra'] == 'added' }
355
+ MANIFEST
356
+ catalog.resource("Notify[test]")[:message].should == true
357
+ # different errors depending on regular or future parser
358
+ end.to raise_error(Puppet::Error, /(can't modify frozen [hH]ash)|(Illegal attempt to assign)/)
359
+ end
360
+
361
+ it 'should not allow addition to $trusted hash via Ruby inline template' do
362
+ node = Puppet::Node.new("testing")
363
+ node.trusted_data = { "data" => "value" }
364
+
365
+ expect do
366
+ catalog = compile_to_catalog(<<-MANIFEST, node)
367
+ $dummy = inline_template("<% @trusted['extra'] = 'added' %> lol")
368
+ notify { 'test': message => $trusted['extra'] == 'added' }
369
+ MANIFEST
370
+ catalog.resource("Notify[test]")[:message].should == true
371
+ end.to raise_error(Puppet::Error, /can't modify frozen [hH]ash/)
372
+ end
373
+ end
374
+
375
+ context 'and have not opted in to trusted_node_data' do
376
+ before :each do
377
+ Puppet[:trusted_node_data] = false
378
+ end
379
+
380
+ it 'should not make $trusted available' do
381
+ node = Puppet::Node.new("testing")
382
+ node.trusted_data = { "data" => "value" }
383
+
384
+ catalog = compile_to_catalog(<<-MANIFEST, node)
385
+ notify { 'test': message => $trusted == undef }
386
+ MANIFEST
387
+
388
+ catalog.resource("Notify[test]")[:message].should == true
389
+ end
390
+
391
+ it 'should allow assignment to $trusted' do
392
+ node = Puppet::Node.new("testing")
393
+
394
+ catalog = compile_to_catalog(<<-MANIFEST, node)
395
+ $trusted = 'changed'
396
+ notify { 'test': message => $trusted == 'changed' }
397
+ MANIFEST
398
+
399
+ catalog.resource("Notify[test]")[:message].should == true
400
+ end
401
+ end
402
+ end
313
403
  end
314
404
 
315
405
  describe 'using classic parser' do