puppet 3.5.0.rc1-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (2193) hide show
  1. data/COMMITTERS.md +244 -0
  2. data/CONTRIBUTING.md +87 -0
  3. data/Gemfile +88 -0
  4. data/LICENSE +17 -0
  5. data/README.md +75 -0
  6. data/Rakefile +68 -0
  7. data/bin/extlookup2hiera +56 -0
  8. data/bin/puppet +4 -0
  9. data/conf/auth.conf +120 -0
  10. data/conf/fileserver.conf +41 -0
  11. data/conf/tagmail.conf +16 -0
  12. data/examples/hiera/README.md +91 -0
  13. data/examples/hiera/etc/hiera.yaml +15 -0
  14. data/examples/hiera/etc/hieradb/common.yaml +3 -0
  15. data/examples/hiera/etc/hieradb/dc1.yaml +6 -0
  16. data/examples/hiera/etc/hieradb/development.yaml +2 -0
  17. data/examples/hiera/etc/puppet.conf +3 -0
  18. data/examples/hiera/modules/data/manifests/common.pp +4 -0
  19. data/examples/hiera/modules/ntp/manifests/config.pp +6 -0
  20. data/examples/hiera/modules/ntp/manifests/data.pp +4 -0
  21. data/examples/hiera/modules/ntp/templates/ntp.conf.erb +3 -0
  22. data/examples/hiera/modules/users/manifests/common.pp +4 -0
  23. data/examples/hiera/modules/users/manifests/dc1.pp +4 -0
  24. data/examples/hiera/modules/users/manifests/development.pp +4 -0
  25. data/examples/hiera/site.pp +3 -0
  26. data/ext/autotest/Rakefile +8 -0
  27. data/ext/autotest/config +43 -0
  28. data/ext/autotest/readme.rst +16 -0
  29. data/ext/build_defaults.yaml +23 -0
  30. data/ext/cert_inspector +140 -0
  31. data/ext/dbfix.sql +132 -0
  32. data/ext/debian/README.Debian +8 -0
  33. data/ext/debian/README.source +2 -0
  34. data/ext/debian/TODO.Debian +1 -0
  35. data/ext/debian/changelog.erb +1122 -0
  36. data/ext/debian/compat +1 -0
  37. data/ext/debian/control +143 -0
  38. data/ext/debian/copyright +361 -0
  39. data/ext/debian/docs +1 -0
  40. data/ext/debian/fileserver.conf +41 -0
  41. data/ext/debian/puppet-common.dirs +8 -0
  42. data/ext/debian/puppet-common.install +4 -0
  43. data/ext/debian/puppet-common.lintian-overrides +5 -0
  44. data/ext/debian/puppet-common.manpages +35 -0
  45. data/ext/debian/puppet-common.postinst +35 -0
  46. data/ext/debian/puppet-common.postrm +32 -0
  47. data/ext/debian/puppet-el.dirs +1 -0
  48. data/ext/debian/puppet-el.emacsen-install +25 -0
  49. data/ext/debian/puppet-el.emacsen-remove +11 -0
  50. data/ext/debian/puppet-el.emacsen-startup +9 -0
  51. data/ext/debian/puppet-el.install +1 -0
  52. data/ext/debian/puppet-testsuite.install +2 -0
  53. data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
  54. data/ext/debian/puppet.conf +14 -0
  55. data/ext/debian/puppet.default +9 -0
  56. data/ext/debian/puppet.init +117 -0
  57. data/ext/debian/puppet.lintian-overrides +3 -0
  58. data/ext/debian/puppet.logrotate +12 -0
  59. data/ext/debian/puppet.postinst +20 -0
  60. data/ext/debian/puppet.postrm +20 -0
  61. data/ext/debian/puppet.preinst +20 -0
  62. data/ext/debian/puppetmaster-common.install +2 -0
  63. data/ext/debian/puppetmaster-common.manpages +2 -0
  64. data/ext/debian/puppetmaster-common.puppetqd.default +27 -0
  65. data/ext/debian/puppetmaster-common.puppetqd.init +84 -0
  66. data/ext/debian/puppetmaster-passenger.dirs +4 -0
  67. data/ext/debian/puppetmaster-passenger.postinst +66 -0
  68. data/ext/debian/puppetmaster-passenger.postrm +33 -0
  69. data/ext/debian/puppetmaster.README.debian +15 -0
  70. data/ext/debian/puppetmaster.default +14 -0
  71. data/ext/debian/puppetmaster.init +137 -0
  72. data/ext/debian/puppetmaster.lintian-overrides +3 -0
  73. data/ext/debian/puppetmaster.postinst +20 -0
  74. data/ext/debian/puppetmaster.postrm +5 -0
  75. data/ext/debian/puppetmaster.preinst +22 -0
  76. data/ext/debian/rules +125 -0
  77. data/ext/debian/source/format +1 -0
  78. data/ext/debian/source/options +1 -0
  79. data/ext/debian/vim-puppet.README.Debian +13 -0
  80. data/ext/debian/vim-puppet.dirs +3 -0
  81. data/ext/debian/vim-puppet.yaml +5 -0
  82. data/ext/debian/watch +2 -0
  83. data/ext/emacs/puppet-mode-init.el +6 -0
  84. data/ext/emacs/puppet-mode.el +415 -0
  85. data/ext/envpuppet +139 -0
  86. data/ext/envpuppet.bat +14 -0
  87. data/ext/freebsd/puppetd +26 -0
  88. data/ext/freebsd/puppetmasterd +26 -0
  89. data/ext/gentoo/conf.d/puppet +5 -0
  90. data/ext/gentoo/conf.d/puppetmaster +12 -0
  91. data/ext/gentoo/init.d/puppet +38 -0
  92. data/ext/gentoo/init.d/puppetmaster +51 -0
  93. data/ext/gentoo/puppet/fileserver.conf +41 -0
  94. data/ext/gentoo/puppet/puppet.conf +25 -0
  95. data/ext/ips/puppet-agent +44 -0
  96. data/ext/ips/puppet-master +44 -0
  97. data/ext/ips/puppet.conf +29 -0
  98. data/ext/ips/puppet.p5m.erb +12 -0
  99. data/ext/ips/puppetagent.xml +42 -0
  100. data/ext/ips/puppetmaster.xml +42 -0
  101. data/ext/ips/rules +19 -0
  102. data/ext/ips/transforms +34 -0
  103. data/ext/ldap/puppet.schema +24 -0
  104. data/ext/logcheck/puppet +23 -0
  105. data/ext/nagios/check_puppet.rb +123 -0
  106. data/ext/nagios/naggen +309 -0
  107. data/ext/osx/file_mapping.yaml +33 -0
  108. data/ext/osx/postflight.erb +109 -0
  109. data/ext/osx/preflight.erb +52 -0
  110. data/ext/osx/prototype.plist.erb +38 -0
  111. data/ext/project_data.yaml +46 -0
  112. data/ext/puppet-load.rb +393 -0
  113. data/ext/puppet-nm-dispatcher +13 -0
  114. data/ext/puppet-test +566 -0
  115. data/ext/puppetlisten/puppetlisten.rb +75 -0
  116. data/ext/puppetlisten/puppetrun.rb +38 -0
  117. data/ext/pure_ruby_dsl/dsl_test.rb +7 -0
  118. data/ext/rack/config.ru +36 -0
  119. data/ext/rack/example-passenger-vhost.conf +52 -0
  120. data/ext/redhat/client.init +119 -0
  121. data/ext/redhat/client.sysconfig +11 -0
  122. data/ext/redhat/fileserver.conf +41 -0
  123. data/ext/redhat/logrotate +10 -0
  124. data/ext/redhat/puppet.conf +25 -0
  125. data/ext/redhat/puppet.spec.erb +848 -0
  126. data/ext/redhat/queue.init +105 -0
  127. data/ext/redhat/server.init +128 -0
  128. data/ext/redhat/server.sysconfig +13 -0
  129. data/ext/regexp_nodes/classes/databases +2 -0
  130. data/ext/regexp_nodes/classes/webservers +2 -0
  131. data/ext/regexp_nodes/environment/development +2 -0
  132. data/ext/regexp_nodes/parameters/service/prod +1 -0
  133. data/ext/regexp_nodes/parameters/service/qa +3 -0
  134. data/ext/regexp_nodes/parameters/service/sandbox +1 -0
  135. data/ext/regexp_nodes/regexp_nodes.rb +271 -0
  136. data/ext/solaris/pkginfo +6 -0
  137. data/ext/solaris/smf/puppetd.xml +77 -0
  138. data/ext/solaris/smf/puppetmasterd.xml +77 -0
  139. data/ext/solaris/smf/svc-puppetd +64 -0
  140. data/ext/solaris/smf/svc-puppetmasterd +60 -0
  141. data/ext/suse/client.init +144 -0
  142. data/ext/suse/puppet.spec +310 -0
  143. data/ext/suse/server.init +173 -0
  144. data/ext/systemd/puppet.service +13 -0
  145. data/ext/systemd/puppetmaster.service +13 -0
  146. data/ext/upload_facts.rb +119 -0
  147. data/ext/vim/README +3 -0
  148. data/ext/vim/ftdetect/puppet.vim +2 -0
  149. data/ext/vim/ftplugin/puppet.vim +94 -0
  150. data/ext/vim/indent/puppet.vim +76 -0
  151. data/ext/vim/syntax/puppet.vim +115 -0
  152. data/ext/windows/eventlog/Rakefile +32 -0
  153. data/ext/windows/eventlog/puppetres.dll +0 -0
  154. data/ext/windows/eventlog/puppetres.mc +18 -0
  155. data/ext/windows/service/daemon.bat +6 -0
  156. data/ext/windows/service/daemon.rb +169 -0
  157. data/ext/yaml_nodes.rb +105 -0
  158. data/install.rb +429 -0
  159. data/lib/hiera/backend/puppet_backend.rb +103 -0
  160. data/lib/hiera/scope.rb +60 -0
  161. data/lib/hiera_puppet.rb +87 -0
  162. data/lib/puppet.rb +247 -0
  163. data/lib/puppet/agent.rb +122 -0
  164. data/lib/puppet/agent/disabler.rb +53 -0
  165. data/lib/puppet/agent/locker.rb +43 -0
  166. data/lib/puppet/application.rb +485 -0
  167. data/lib/puppet/application/agent.rb +479 -0
  168. data/lib/puppet/application/apply.rb +290 -0
  169. data/lib/puppet/application/ca.rb +5 -0
  170. data/lib/puppet/application/catalog.rb +4 -0
  171. data/lib/puppet/application/cert.rb +277 -0
  172. data/lib/puppet/application/certificate.rb +15 -0
  173. data/lib/puppet/application/certificate_request.rb +7 -0
  174. data/lib/puppet/application/certificate_revocation_list.rb +7 -0
  175. data/lib/puppet/application/config.rb +4 -0
  176. data/lib/puppet/application/describe.rb +254 -0
  177. data/lib/puppet/application/device.rb +238 -0
  178. data/lib/puppet/application/doc.rb +280 -0
  179. data/lib/puppet/application/face_base.rb +250 -0
  180. data/lib/puppet/application/facts.rb +4 -0
  181. data/lib/puppet/application/file.rb +4 -0
  182. data/lib/puppet/application/filebucket.rb +184 -0
  183. data/lib/puppet/application/help.rb +4 -0
  184. data/lib/puppet/application/indirection_base.rb +4 -0
  185. data/lib/puppet/application/inspect.rb +179 -0
  186. data/lib/puppet/application/instrumentation_data.rb +7 -0
  187. data/lib/puppet/application/instrumentation_listener.rb +7 -0
  188. data/lib/puppet/application/instrumentation_probe.rb +7 -0
  189. data/lib/puppet/application/key.rb +4 -0
  190. data/lib/puppet/application/kick.rb +351 -0
  191. data/lib/puppet/application/man.rb +4 -0
  192. data/lib/puppet/application/master.rb +302 -0
  193. data/lib/puppet/application/module.rb +4 -0
  194. data/lib/puppet/application/node.rb +4 -0
  195. data/lib/puppet/application/parser.rb +5 -0
  196. data/lib/puppet/application/plugin.rb +3 -0
  197. data/lib/puppet/application/queue.rb +161 -0
  198. data/lib/puppet/application/report.rb +4 -0
  199. data/lib/puppet/application/resource.rb +229 -0
  200. data/lib/puppet/application/resource_type.rb +7 -0
  201. data/lib/puppet/application/secret_agent.rb +9 -0
  202. data/lib/puppet/application/status.rb +4 -0
  203. data/lib/puppet/bindings.rb +147 -0
  204. data/lib/puppet/coercion.rb +40 -0
  205. data/lib/puppet/configurer.rb +268 -0
  206. data/lib/puppet/configurer/downloader.rb +70 -0
  207. data/lib/puppet/configurer/fact_handler.rb +37 -0
  208. data/lib/puppet/configurer/plugin_handler.rb +28 -0
  209. data/lib/puppet/confine.rb +80 -0
  210. data/lib/puppet/confine/any.rb +26 -0
  211. data/lib/puppet/confine/exists.rb +19 -0
  212. data/lib/puppet/confine/false.rb +19 -0
  213. data/lib/puppet/confine/feature.rb +17 -0
  214. data/lib/puppet/confine/true.rb +20 -0
  215. data/lib/puppet/confine/variable.rb +59 -0
  216. data/lib/puppet/confine_collection.rb +50 -0
  217. data/lib/puppet/confiner.rb +46 -0
  218. data/lib/puppet/context.rb +55 -0
  219. data/lib/puppet/context/trusted_information.rb +56 -0
  220. data/lib/puppet/daemon.rb +182 -0
  221. data/lib/puppet/data_binding.rb +12 -0
  222. data/lib/puppet/defaults.rb +1875 -0
  223. data/lib/puppet/dsl.rb +7 -0
  224. data/lib/puppet/dsl/resource_api.rb +120 -0
  225. data/lib/puppet/dsl/resource_type_api.rb +34 -0
  226. data/lib/puppet/environments.rb +187 -0
  227. data/lib/puppet/error.rb +62 -0
  228. data/lib/puppet/external/dot.rb +326 -0
  229. data/lib/puppet/external/nagios.rb +46 -0
  230. data/lib/puppet/external/nagios/base.rb +472 -0
  231. data/lib/puppet/external/nagios/grammar.ry +246 -0
  232. data/lib/puppet/external/nagios/makefile +9 -0
  233. data/lib/puppet/external/nagios/parser.rb +391 -0
  234. data/lib/puppet/external/pson/common.rb +385 -0
  235. data/lib/puppet/external/pson/pure.rb +15 -0
  236. data/lib/puppet/external/pson/pure/generator.rb +401 -0
  237. data/lib/puppet/external/pson/pure/parser.rb +318 -0
  238. data/lib/puppet/external/pson/version.rb +8 -0
  239. data/lib/puppet/face.rb +12 -0
  240. data/lib/puppet/face/ca.rb +247 -0
  241. data/lib/puppet/face/catalog.rb +130 -0
  242. data/lib/puppet/face/catalog/select.rb +49 -0
  243. data/lib/puppet/face/certificate.rb +160 -0
  244. data/lib/puppet/face/certificate_request.rb +53 -0
  245. data/lib/puppet/face/certificate_revocation_list.rb +58 -0
  246. data/lib/puppet/face/config.rb +106 -0
  247. data/lib/puppet/face/facts.rb +81 -0
  248. data/lib/puppet/face/file.rb +47 -0
  249. data/lib/puppet/face/file/download.rb +54 -0
  250. data/lib/puppet/face/file/store.rb +21 -0
  251. data/lib/puppet/face/help.rb +194 -0
  252. data/lib/puppet/face/help/action.erb +86 -0
  253. data/lib/puppet/face/help/face.erb +111 -0
  254. data/lib/puppet/face/help/global.erb +16 -0
  255. data/lib/puppet/face/help/man.erb +152 -0
  256. data/lib/puppet/face/instrumentation_data.rb +29 -0
  257. data/lib/puppet/face/instrumentation_listener.rb +97 -0
  258. data/lib/puppet/face/instrumentation_probe.rb +78 -0
  259. data/lib/puppet/face/key.rb +15 -0
  260. data/lib/puppet/face/man.rb +99 -0
  261. data/lib/puppet/face/module.rb +19 -0
  262. data/lib/puppet/face/module/build.rb +63 -0
  263. data/lib/puppet/face/module/changes.rb +41 -0
  264. data/lib/puppet/face/module/generate.rb +41 -0
  265. data/lib/puppet/face/module/install.rb +143 -0
  266. data/lib/puppet/face/module/list.rb +274 -0
  267. data/lib/puppet/face/module/search.rb +94 -0
  268. data/lib/puppet/face/module/uninstall.rb +71 -0
  269. data/lib/puppet/face/module/upgrade.rb +77 -0
  270. data/lib/puppet/face/node.rb +43 -0
  271. data/lib/puppet/face/node/clean.rb +159 -0
  272. data/lib/puppet/face/parser.rb +67 -0
  273. data/lib/puppet/face/plugin.rb +61 -0
  274. data/lib/puppet/face/report.rb +54 -0
  275. data/lib/puppet/face/resource.rb +53 -0
  276. data/lib/puppet/face/resource_type.rb +81 -0
  277. data/lib/puppet/face/secret_agent.rb +54 -0
  278. data/lib/puppet/face/status.rb +53 -0
  279. data/lib/puppet/feature/base.rb +88 -0
  280. data/lib/puppet/feature/eventlog.rb +5 -0
  281. data/lib/puppet/feature/external_facts.rb +5 -0
  282. data/lib/puppet/feature/libuser.rb +8 -0
  283. data/lib/puppet/feature/msgpack.rb +3 -0
  284. data/lib/puppet/feature/pson.rb +4 -0
  285. data/lib/puppet/feature/rack.rb +19 -0
  286. data/lib/puppet/feature/rails.rb +47 -0
  287. data/lib/puppet/feature/rdoc1.rb +16 -0
  288. data/lib/puppet/feature/rubygems.rb +7 -0
  289. data/lib/puppet/feature/selinux.rb +3 -0
  290. data/lib/puppet/feature/ssh.rb +3 -0
  291. data/lib/puppet/feature/stomp.rb +5 -0
  292. data/lib/puppet/feature/zlib.rb +5 -0
  293. data/lib/puppet/file_bucket.rb +4 -0
  294. data/lib/puppet/file_bucket/dipper.rb +109 -0
  295. data/lib/puppet/file_bucket/file.rb +92 -0
  296. data/lib/puppet/file_collection.rb +19 -0
  297. data/lib/puppet/file_collection/lookup.rb +10 -0
  298. data/lib/puppet/file_serving.rb +3 -0
  299. data/lib/puppet/file_serving/base.rb +95 -0
  300. data/lib/puppet/file_serving/configuration.rb +109 -0
  301. data/lib/puppet/file_serving/configuration/parser.rb +121 -0
  302. data/lib/puppet/file_serving/content.rb +45 -0
  303. data/lib/puppet/file_serving/fileset.rb +172 -0
  304. data/lib/puppet/file_serving/metadata.rb +199 -0
  305. data/lib/puppet/file_serving/mount.rb +39 -0
  306. data/lib/puppet/file_serving/mount/file.rb +121 -0
  307. data/lib/puppet/file_serving/mount/modules.rb +24 -0
  308. data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
  309. data/lib/puppet/file_serving/mount/plugins.rb +35 -0
  310. data/lib/puppet/file_serving/terminus_helper.rb +21 -0
  311. data/lib/puppet/file_serving/terminus_selector.rb +30 -0
  312. data/lib/puppet/file_system.rb +366 -0
  313. data/lib/puppet/file_system/file18.rb +5 -0
  314. data/lib/puppet/file_system/file19.rb +5 -0
  315. data/lib/puppet/file_system/file19windows.rb +108 -0
  316. data/lib/puppet/file_system/file_impl.rb +145 -0
  317. data/lib/puppet/file_system/memory_file.rb +45 -0
  318. data/lib/puppet/file_system/memory_impl.rb +64 -0
  319. data/lib/puppet/file_system/path_pattern.rb +97 -0
  320. data/lib/puppet/file_system/tempfile.rb +20 -0
  321. data/lib/puppet/forge.rb +106 -0
  322. data/lib/puppet/forge/cache.rb +55 -0
  323. data/lib/puppet/forge/errors.rb +103 -0
  324. data/lib/puppet/forge/repository.rb +135 -0
  325. data/lib/puppet/graph.rb +11 -0
  326. data/lib/puppet/graph/key.rb +26 -0
  327. data/lib/puppet/graph/prioritizer.rb +29 -0
  328. data/lib/puppet/graph/random_prioritizer.rb +16 -0
  329. data/lib/puppet/graph/rb_tree_map.rb +388 -0
  330. data/lib/puppet/graph/relationship_graph.rb +246 -0
  331. data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
  332. data/lib/puppet/graph/simple_graph.rb +566 -0
  333. data/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
  334. data/lib/puppet/indirector.rb +61 -0
  335. data/lib/puppet/indirector/active_record.rb +29 -0
  336. data/lib/puppet/indirector/catalog/active_record.rb +39 -0
  337. data/lib/puppet/indirector/catalog/compiler.rb +175 -0
  338. data/lib/puppet/indirector/catalog/json.rb +6 -0
  339. data/lib/puppet/indirector/catalog/msgpack.rb +6 -0
  340. data/lib/puppet/indirector/catalog/queue.rb +9 -0
  341. data/lib/puppet/indirector/catalog/rest.rb +6 -0
  342. data/lib/puppet/indirector/catalog/static_compiler.rb +214 -0
  343. data/lib/puppet/indirector/catalog/store_configs.rb +8 -0
  344. data/lib/puppet/indirector/catalog/yaml.rb +22 -0
  345. data/lib/puppet/indirector/certificate/ca.rb +9 -0
  346. data/lib/puppet/indirector/certificate/disabled_ca.rb +22 -0
  347. data/lib/puppet/indirector/certificate/file.rb +9 -0
  348. data/lib/puppet/indirector/certificate/rest.rb +16 -0
  349. data/lib/puppet/indirector/certificate_request/ca.rb +22 -0
  350. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
  351. data/lib/puppet/indirector/certificate_request/file.rb +8 -0
  352. data/lib/puppet/indirector/certificate_request/memory.rb +6 -0
  353. data/lib/puppet/indirector/certificate_request/rest.rb +10 -0
  354. data/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
  355. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
  356. data/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
  357. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +10 -0
  358. data/lib/puppet/indirector/certificate_status.rb +4 -0
  359. data/lib/puppet/indirector/certificate_status/file.rb +91 -0
  360. data/lib/puppet/indirector/certificate_status/rest.rb +11 -0
  361. data/lib/puppet/indirector/code.rb +6 -0
  362. data/lib/puppet/indirector/couch.rb +78 -0
  363. data/lib/puppet/indirector/data_binding/hiera.rb +50 -0
  364. data/lib/puppet/indirector/data_binding/none.rb +5 -0
  365. data/lib/puppet/indirector/direct_file_server.rb +19 -0
  366. data/lib/puppet/indirector/envelope.rb +11 -0
  367. data/lib/puppet/indirector/errors.rb +5 -0
  368. data/lib/puppet/indirector/exec.rb +38 -0
  369. data/lib/puppet/indirector/face.rb +139 -0
  370. data/lib/puppet/indirector/facts/active_record.rb +44 -0
  371. data/lib/puppet/indirector/facts/couch.rb +34 -0
  372. data/lib/puppet/indirector/facts/facter.rb +91 -0
  373. data/lib/puppet/indirector/facts/inventory_active_record.rb +110 -0
  374. data/lib/puppet/indirector/facts/inventory_service.rb +20 -0
  375. data/lib/puppet/indirector/facts/memory.rb +9 -0
  376. data/lib/puppet/indirector/facts/network_device.rb +24 -0
  377. data/lib/puppet/indirector/facts/rest.rb +8 -0
  378. data/lib/puppet/indirector/facts/store_configs.rb +8 -0
  379. data/lib/puppet/indirector/facts/yaml.rb +82 -0
  380. data/lib/puppet/indirector/file_bucket_file/file.rb +138 -0
  381. data/lib/puppet/indirector/file_bucket_file/rest.rb +8 -0
  382. data/lib/puppet/indirector/file_bucket_file/selector.rb +53 -0
  383. data/lib/puppet/indirector/file_content.rb +5 -0
  384. data/lib/puppet/indirector/file_content/file.rb +7 -0
  385. data/lib/puppet/indirector/file_content/file_server.rb +7 -0
  386. data/lib/puppet/indirector/file_content/rest.rb +9 -0
  387. data/lib/puppet/indirector/file_content/selector.rb +30 -0
  388. data/lib/puppet/indirector/file_metadata.rb +5 -0
  389. data/lib/puppet/indirector/file_metadata/file.rb +22 -0
  390. data/lib/puppet/indirector/file_metadata/file_server.rb +7 -0
  391. data/lib/puppet/indirector/file_metadata/rest.rb +9 -0
  392. data/lib/puppet/indirector/file_metadata/selector.rb +30 -0
  393. data/lib/puppet/indirector/file_server.rb +65 -0
  394. data/lib/puppet/indirector/indirection.rb +336 -0
  395. data/lib/puppet/indirector/instrumentation_data.rb +3 -0
  396. data/lib/puppet/indirector/instrumentation_data/local.rb +22 -0
  397. data/lib/puppet/indirector/instrumentation_data/rest.rb +8 -0
  398. data/lib/puppet/indirector/instrumentation_listener.rb +3 -0
  399. data/lib/puppet/indirector/instrumentation_listener/local.rb +26 -0
  400. data/lib/puppet/indirector/instrumentation_listener/rest.rb +8 -0
  401. data/lib/puppet/indirector/instrumentation_probe.rb +3 -0
  402. data/lib/puppet/indirector/instrumentation_probe/local.rb +27 -0
  403. data/lib/puppet/indirector/instrumentation_probe/rest.rb +8 -0
  404. data/lib/puppet/indirector/json.rb +76 -0
  405. data/lib/puppet/indirector/key/ca.rb +16 -0
  406. data/lib/puppet/indirector/key/disabled_ca.rb +22 -0
  407. data/lib/puppet/indirector/key/file.rb +49 -0
  408. data/lib/puppet/indirector/key/memory.rb +6 -0
  409. data/lib/puppet/indirector/ldap.rb +79 -0
  410. data/lib/puppet/indirector/memory.rb +34 -0
  411. data/lib/puppet/indirector/msgpack.rb +82 -0
  412. data/lib/puppet/indirector/node/active_record.rb +22 -0
  413. data/lib/puppet/indirector/node/exec.rb +69 -0
  414. data/lib/puppet/indirector/node/ldap.rb +257 -0
  415. data/lib/puppet/indirector/node/memory.rb +10 -0
  416. data/lib/puppet/indirector/node/msgpack.rb +7 -0
  417. data/lib/puppet/indirector/node/plain.rb +20 -0
  418. data/lib/puppet/indirector/node/rest.rb +7 -0
  419. data/lib/puppet/indirector/node/store_configs.rb +8 -0
  420. data/lib/puppet/indirector/node/write_only_yaml.rb +32 -0
  421. data/lib/puppet/indirector/node/yaml.rb +22 -0
  422. data/lib/puppet/indirector/none.rb +9 -0
  423. data/lib/puppet/indirector/plain.rb +9 -0
  424. data/lib/puppet/indirector/queue.rb +80 -0
  425. data/lib/puppet/indirector/report/msgpack.rb +11 -0
  426. data/lib/puppet/indirector/report/processor.rb +59 -0
  427. data/lib/puppet/indirector/report/rest.rb +15 -0
  428. data/lib/puppet/indirector/report/yaml.rb +11 -0
  429. data/lib/puppet/indirector/request.rb +312 -0
  430. data/lib/puppet/indirector/resource/active_record.rb +104 -0
  431. data/lib/puppet/indirector/resource/ral.rb +64 -0
  432. data/lib/puppet/indirector/resource/rest.rb +17 -0
  433. data/lib/puppet/indirector/resource/store_configs.rb +13 -0
  434. data/lib/puppet/indirector/resource/validator.rb +8 -0
  435. data/lib/puppet/indirector/resource_type.rb +5 -0
  436. data/lib/puppet/indirector/resource_type/parser.rb +101 -0
  437. data/lib/puppet/indirector/resource_type/rest.rb +7 -0
  438. data/lib/puppet/indirector/rest.rb +246 -0
  439. data/lib/puppet/indirector/run/local.rb +15 -0
  440. data/lib/puppet/indirector/run/rest.rb +12 -0
  441. data/lib/puppet/indirector/ssl_file.rb +180 -0
  442. data/lib/puppet/indirector/status.rb +3 -0
  443. data/lib/puppet/indirector/status/local.rb +12 -0
  444. data/lib/puppet/indirector/status/rest.rb +9 -0
  445. data/lib/puppet/indirector/store_configs.rb +30 -0
  446. data/lib/puppet/indirector/terminus.rb +169 -0
  447. data/lib/puppet/indirector/yaml.rb +63 -0
  448. data/lib/puppet/interface.rb +235 -0
  449. data/lib/puppet/interface/action.rb +374 -0
  450. data/lib/puppet/interface/action_builder.rb +149 -0
  451. data/lib/puppet/interface/action_manager.rb +101 -0
  452. data/lib/puppet/interface/documentation.rb +342 -0
  453. data/lib/puppet/interface/face_collection.rb +125 -0
  454. data/lib/puppet/interface/option.rb +150 -0
  455. data/lib/puppet/interface/option_builder.rb +93 -0
  456. data/lib/puppet/interface/option_manager.rb +99 -0
  457. data/lib/puppet/metatype/manager.rb +184 -0
  458. data/lib/puppet/module.rb +338 -0
  459. data/lib/puppet/module_tool.rb +143 -0
  460. data/lib/puppet/module_tool/applications.rb +15 -0
  461. data/lib/puppet/module_tool/applications/application.rb +89 -0
  462. data/lib/puppet/module_tool/applications/builder.rb +79 -0
  463. data/lib/puppet/module_tool/applications/checksummer.rb +56 -0
  464. data/lib/puppet/module_tool/applications/generator.rb +142 -0
  465. data/lib/puppet/module_tool/applications/installer.rb +192 -0
  466. data/lib/puppet/module_tool/applications/searcher.rb +28 -0
  467. data/lib/puppet/module_tool/applications/uninstaller.rb +110 -0
  468. data/lib/puppet/module_tool/applications/unpacker.rb +60 -0
  469. data/lib/puppet/module_tool/applications/upgrader.rb +113 -0
  470. data/lib/puppet/module_tool/checksums.rb +52 -0
  471. data/lib/puppet/module_tool/contents_description.rb +84 -0
  472. data/lib/puppet/module_tool/dependency.rb +29 -0
  473. data/lib/puppet/module_tool/errors.rb +11 -0
  474. data/lib/puppet/module_tool/errors/base.rb +15 -0
  475. data/lib/puppet/module_tool/errors/installer.rb +127 -0
  476. data/lib/puppet/module_tool/errors/shared.rb +115 -0
  477. data/lib/puppet/module_tool/errors/uninstaller.rb +45 -0
  478. data/lib/puppet/module_tool/errors/upgrader.rb +72 -0
  479. data/lib/puppet/module_tool/install_directory.rb +44 -0
  480. data/lib/puppet/module_tool/metadata.rb +155 -0
  481. data/lib/puppet/module_tool/modulefile.rb +78 -0
  482. data/lib/puppet/module_tool/shared_behaviors.rb +168 -0
  483. data/lib/puppet/module_tool/skeleton.rb +37 -0
  484. data/lib/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +11 -0
  485. data/lib/puppet/module_tool/skeleton/templates/generator/README.erb +16 -0
  486. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +41 -0
  487. data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +17 -0
  488. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +12 -0
  489. data/lib/puppet/module_tool/tar.rb +21 -0
  490. data/lib/puppet/module_tool/tar/gnu.rb +16 -0
  491. data/lib/puppet/module_tool/tar/mini.rb +41 -0
  492. data/lib/puppet/module_tool/tar/solaris.rb +5 -0
  493. data/lib/puppet/network.rb +3 -0
  494. data/lib/puppet/network/auth_config_parser.rb +84 -0
  495. data/lib/puppet/network/authconfig.rb +76 -0
  496. data/lib/puppet/network/authentication.rb +35 -0
  497. data/lib/puppet/network/authorization.rb +34 -0
  498. data/lib/puppet/network/authstore.rb +282 -0
  499. data/lib/puppet/network/client_request.rb +29 -0
  500. data/lib/puppet/network/format.rb +110 -0
  501. data/lib/puppet/network/format_handler.rb +105 -0
  502. data/lib/puppet/network/format_support.rb +124 -0
  503. data/lib/puppet/network/formats.rb +216 -0
  504. data/lib/puppet/network/http.rb +15 -0
  505. data/lib/puppet/network/http/api.rb +2 -0
  506. data/lib/puppet/network/http/api/v1.rb +218 -0
  507. data/lib/puppet/network/http/api/v2.rb +32 -0
  508. data/lib/puppet/network/http/api/v2/authorization.rb +13 -0
  509. data/lib/puppet/network/http/api/v2/environments.rb +21 -0
  510. data/lib/puppet/network/http/compression.rb +114 -0
  511. data/lib/puppet/network/http/connection.rb +254 -0
  512. data/lib/puppet/network/http/error.rb +69 -0
  513. data/lib/puppet/network/http/handler.rb +180 -0
  514. data/lib/puppet/network/http/issues.rb +9 -0
  515. data/lib/puppet/network/http/memory_response.rb +13 -0
  516. data/lib/puppet/network/http/rack.rb +33 -0
  517. data/lib/puppet/network/http/rack/rest.rb +136 -0
  518. data/lib/puppet/network/http/request.rb +56 -0
  519. data/lib/puppet/network/http/response.rb +11 -0
  520. data/lib/puppet/network/http/route.rb +91 -0
  521. data/lib/puppet/network/http/webrick.rb +119 -0
  522. data/lib/puppet/network/http/webrick/rest.rb +95 -0
  523. data/lib/puppet/network/http_pool.rb +53 -0
  524. data/lib/puppet/network/resolver.rb +86 -0
  525. data/lib/puppet/network/rest_controller.rb +2 -0
  526. data/lib/puppet/network/rights.rb +219 -0
  527. data/lib/puppet/network/server.rb +39 -0
  528. data/lib/puppet/node.rb +171 -0
  529. data/lib/puppet/node/environment.rb +492 -0
  530. data/lib/puppet/node/facts.rb +155 -0
  531. data/lib/puppet/parameter.rb +585 -0
  532. data/lib/puppet/parameter/boolean.rb +15 -0
  533. data/lib/puppet/parameter/package_options.rb +31 -0
  534. data/lib/puppet/parameter/path.rb +57 -0
  535. data/lib/puppet/parameter/value.rb +93 -0
  536. data/lib/puppet/parameter/value_collection.rb +211 -0
  537. data/lib/puppet/parser.rb +7 -0
  538. data/lib/puppet/parser/ast.rb +130 -0
  539. data/lib/puppet/parser/ast/arithmetic_operator.rb +91 -0
  540. data/lib/puppet/parser/ast/astarray.rb +50 -0
  541. data/lib/puppet/parser/ast/asthash.rb +37 -0
  542. data/lib/puppet/parser/ast/block_expression.rb +40 -0
  543. data/lib/puppet/parser/ast/boolean_operator.rb +46 -0
  544. data/lib/puppet/parser/ast/branch.rb +22 -0
  545. data/lib/puppet/parser/ast/caseopt.rb +52 -0
  546. data/lib/puppet/parser/ast/casestatement.rb +41 -0
  547. data/lib/puppet/parser/ast/collection.rb +49 -0
  548. data/lib/puppet/parser/ast/collexpr.rb +109 -0
  549. data/lib/puppet/parser/ast/comparison_operator.rb +38 -0
  550. data/lib/puppet/parser/ast/definition.rb +17 -0
  551. data/lib/puppet/parser/ast/else.rb +22 -0
  552. data/lib/puppet/parser/ast/function.rb +59 -0
  553. data/lib/puppet/parser/ast/hostclass.rb +29 -0
  554. data/lib/puppet/parser/ast/ifstatement.rb +34 -0
  555. data/lib/puppet/parser/ast/in_operator.rb +24 -0
  556. data/lib/puppet/parser/ast/lambda.rb +135 -0
  557. data/lib/puppet/parser/ast/leaf.rb +232 -0
  558. data/lib/puppet/parser/ast/match_operator.rb +28 -0
  559. data/lib/puppet/parser/ast/method_call.rb +77 -0
  560. data/lib/puppet/parser/ast/minus.rb +23 -0
  561. data/lib/puppet/parser/ast/node.rb +20 -0
  562. data/lib/puppet/parser/ast/nop.rb +11 -0
  563. data/lib/puppet/parser/ast/not.rb +19 -0
  564. data/lib/puppet/parser/ast/pops_bridge.rb +168 -0
  565. data/lib/puppet/parser/ast/relationship.rb +47 -0
  566. data/lib/puppet/parser/ast/resource.rb +67 -0
  567. data/lib/puppet/parser/ast/resource_defaults.rb +24 -0
  568. data/lib/puppet/parser/ast/resource_instance.rb +9 -0
  569. data/lib/puppet/parser/ast/resource_override.rb +62 -0
  570. data/lib/puppet/parser/ast/resource_reference.rb +28 -0
  571. data/lib/puppet/parser/ast/resourceparam.rb +27 -0
  572. data/lib/puppet/parser/ast/selector.rb +50 -0
  573. data/lib/puppet/parser/ast/tag.rb +24 -0
  574. data/lib/puppet/parser/ast/top_level_construct.rb +4 -0
  575. data/lib/puppet/parser/ast/vardef.rb +38 -0
  576. data/lib/puppet/parser/code_merger.rb +13 -0
  577. data/lib/puppet/parser/collector.rb +177 -0
  578. data/lib/puppet/parser/compiler.rb +555 -0
  579. data/lib/puppet/parser/e4_parser_adapter.rb +81 -0
  580. data/lib/puppet/parser/e_parser_adapter.rb +119 -0
  581. data/lib/puppet/parser/files.rb +94 -0
  582. data/lib/puppet/parser/functions.rb +249 -0
  583. data/lib/puppet/parser/functions/collect.rb +15 -0
  584. data/lib/puppet/parser/functions/contain.rb +26 -0
  585. data/lib/puppet/parser/functions/create_resources.rb +78 -0
  586. data/lib/puppet/parser/functions/defined.rb +73 -0
  587. data/lib/puppet/parser/functions/each.rb +109 -0
  588. data/lib/puppet/parser/functions/epp.rb +41 -0
  589. data/lib/puppet/parser/functions/extlookup.rb +153 -0
  590. data/lib/puppet/parser/functions/fail.rb +4 -0
  591. data/lib/puppet/parser/functions/file.rb +23 -0
  592. data/lib/puppet/parser/functions/filter.rb +100 -0
  593. data/lib/puppet/parser/functions/fqdn_rand.rb +21 -0
  594. data/lib/puppet/parser/functions/generate.rb +37 -0
  595. data/lib/puppet/parser/functions/hiera.rb +26 -0
  596. data/lib/puppet/parser/functions/hiera_array.rb +27 -0
  597. data/lib/puppet/parser/functions/hiera_hash.rb +29 -0
  598. data/lib/puppet/parser/functions/hiera_include.rb +44 -0
  599. data/lib/puppet/parser/functions/include.rb +47 -0
  600. data/lib/puppet/parser/functions/inline_epp.rb +79 -0
  601. data/lib/puppet/parser/functions/inline_template.rb +21 -0
  602. data/lib/puppet/parser/functions/lookup.rb +144 -0
  603. data/lib/puppet/parser/functions/map.rb +96 -0
  604. data/lib/puppet/parser/functions/md5.rb +5 -0
  605. data/lib/puppet/parser/functions/realize.rb +14 -0
  606. data/lib/puppet/parser/functions/reduce.rb +100 -0
  607. data/lib/puppet/parser/functions/regsubst.rb +116 -0
  608. data/lib/puppet/parser/functions/require.rb +53 -0
  609. data/lib/puppet/parser/functions/search.rb +7 -0
  610. data/lib/puppet/parser/functions/select.rb +15 -0
  611. data/lib/puppet/parser/functions/sha1.rb +5 -0
  612. data/lib/puppet/parser/functions/shellquote.rb +61 -0
  613. data/lib/puppet/parser/functions/slice.rb +116 -0
  614. data/lib/puppet/parser/functions/split.rb +28 -0
  615. data/lib/puppet/parser/functions/sprintf.rb +36 -0
  616. data/lib/puppet/parser/functions/tag.rb +6 -0
  617. data/lib/puppet/parser/functions/tagged.rb +18 -0
  618. data/lib/puppet/parser/functions/template.rb +23 -0
  619. data/lib/puppet/parser/functions/versioncmp.rb +30 -0
  620. data/lib/puppet/parser/grammar.ra +806 -0
  621. data/lib/puppet/parser/lexer.rb +608 -0
  622. data/lib/puppet/parser/makefile +8 -0
  623. data/lib/puppet/parser/methods.rb +69 -0
  624. data/lib/puppet/parser/parser.rb +2559 -0
  625. data/lib/puppet/parser/parser_factory.rb +88 -0
  626. data/lib/puppet/parser/parser_support.rb +195 -0
  627. data/lib/puppet/parser/relationship.rb +62 -0
  628. data/lib/puppet/parser/resource.rb +267 -0
  629. data/lib/puppet/parser/resource/param.rb +25 -0
  630. data/lib/puppet/parser/scope.rb +833 -0
  631. data/lib/puppet/parser/templatewrapper.rb +127 -0
  632. data/lib/puppet/parser/type_loader.rb +152 -0
  633. data/lib/puppet/parser/yaml_trimmer.rb +7 -0
  634. data/lib/puppet/pops.rb +99 -0
  635. data/lib/puppet/pops/adaptable.rb +190 -0
  636. data/lib/puppet/pops/adapters.rb +101 -0
  637. data/lib/puppet/pops/binder/binder.rb +393 -0
  638. data/lib/puppet/pops/binder/binder_issues.rb +122 -0
  639. data/lib/puppet/pops/binder/bindings_checker.rb +197 -0
  640. data/lib/puppet/pops/binder/bindings_composer.rb +175 -0
  641. data/lib/puppet/pops/binder/bindings_factory.rb +805 -0
  642. data/lib/puppet/pops/binder/bindings_label_provider.rb +43 -0
  643. data/lib/puppet/pops/binder/bindings_loader.rb +88 -0
  644. data/lib/puppet/pops/binder/bindings_model.rb +201 -0
  645. data/lib/puppet/pops/binder/bindings_model_dumper.rb +187 -0
  646. data/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
  647. data/lib/puppet/pops/binder/config/binder_config.rb +107 -0
  648. data/lib/puppet/pops/binder/config/binder_config_checker.rb +142 -0
  649. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
  650. data/lib/puppet/pops/binder/config/issues.rb +86 -0
  651. data/lib/puppet/pops/binder/injector.rb +767 -0
  652. data/lib/puppet/pops/binder/injector_entry.rb +57 -0
  653. data/lib/puppet/pops/binder/key_factory.rb +67 -0
  654. data/lib/puppet/pops/binder/lookup.rb +191 -0
  655. data/lib/puppet/pops/binder/producers.rb +829 -0
  656. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
  657. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
  658. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +53 -0
  659. data/lib/puppet/pops/binder/system_bindings.rb +60 -0
  660. data/lib/puppet/pops/containment.rb +104 -0
  661. data/lib/puppet/pops/evaluator/access_operator.rb +548 -0
  662. data/lib/puppet/pops/evaluator/closure.rb +57 -0
  663. data/lib/puppet/pops/evaluator/compare_operator.rb +168 -0
  664. data/lib/puppet/pops/evaluator/epp_evaluator.rb +87 -0
  665. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1069 -0
  666. data/lib/puppet/pops/evaluator/external_syntax_support.rb +49 -0
  667. data/lib/puppet/pops/evaluator/relationship_operator.rb +156 -0
  668. data/lib/puppet/pops/evaluator/runtime3_support.rb +489 -0
  669. data/lib/puppet/pops/issue_reporter.rb +79 -0
  670. data/lib/puppet/pops/issues.rb +461 -0
  671. data/lib/puppet/pops/label_provider.rb +76 -0
  672. data/lib/puppet/pops/model/ast_transformer.rb +663 -0
  673. data/lib/puppet/pops/model/ast_tree_dumper.rb +386 -0
  674. data/lib/puppet/pops/model/factory.rb +970 -0
  675. data/lib/puppet/pops/model/model.rb +606 -0
  676. data/lib/puppet/pops/model/model_label_provider.rb +104 -0
  677. data/lib/puppet/pops/model/model_tree_dumper.rb +377 -0
  678. data/lib/puppet/pops/model/tree_dumper.rb +59 -0
  679. data/lib/puppet/pops/parser/code_merger.rb +17 -0
  680. data/lib/puppet/pops/parser/egrammar.ra +752 -0
  681. data/lib/puppet/pops/parser/eparser.rb +2579 -0
  682. data/lib/puppet/pops/parser/epp_parser.rb +51 -0
  683. data/lib/puppet/pops/parser/epp_support.rb +247 -0
  684. data/lib/puppet/pops/parser/evaluating_parser.rb +200 -0
  685. data/lib/puppet/pops/parser/heredoc_support.rb +139 -0
  686. data/lib/puppet/pops/parser/interpolation_support.rb +227 -0
  687. data/lib/puppet/pops/parser/lexer.rb +753 -0
  688. data/lib/puppet/pops/parser/lexer2.rb +684 -0
  689. data/lib/puppet/pops/parser/lexer_support.rb +107 -0
  690. data/lib/puppet/pops/parser/locatable.rb +23 -0
  691. data/lib/puppet/pops/parser/locator.rb +291 -0
  692. data/lib/puppet/pops/parser/makefile +6 -0
  693. data/lib/puppet/pops/parser/parser_support.rb +231 -0
  694. data/lib/puppet/pops/parser/slurp_support.rb +95 -0
  695. data/lib/puppet/pops/patterns.rb +44 -0
  696. data/lib/puppet/pops/types/class_loader.rb +118 -0
  697. data/lib/puppet/pops/types/enumeration.rb +34 -0
  698. data/lib/puppet/pops/types/type_calculator.rb +1482 -0
  699. data/lib/puppet/pops/types/type_factory.rb +335 -0
  700. data/lib/puppet/pops/types/type_parser.rb +460 -0
  701. data/lib/puppet/pops/types/types.rb +422 -0
  702. data/lib/puppet/pops/utils.rb +120 -0
  703. data/lib/puppet/pops/validation.rb +432 -0
  704. data/lib/puppet/pops/validation/checker3_1.rb +558 -0
  705. data/lib/puppet/pops/validation/checker4_0.rb +514 -0
  706. data/lib/puppet/pops/validation/validator_factory_3_1.rb +31 -0
  707. data/lib/puppet/pops/validation/validator_factory_4_0.rb +31 -0
  708. data/lib/puppet/pops/visitable.rb +6 -0
  709. data/lib/puppet/pops/visitor.rb +192 -0
  710. data/lib/puppet/property.rb +617 -0
  711. data/lib/puppet/property/boolean.rb +7 -0
  712. data/lib/puppet/property/ensure.rb +105 -0
  713. data/lib/puppet/property/keyvalue.rb +95 -0
  714. data/lib/puppet/property/list.rb +78 -0
  715. data/lib/puppet/property/ordered_list.rb +29 -0
  716. data/lib/puppet/provider.rb +651 -0
  717. data/lib/puppet/provider/aixobject.rb +392 -0
  718. data/lib/puppet/provider/augeas/augeas.rb +509 -0
  719. data/lib/puppet/provider/cisco.rb +9 -0
  720. data/lib/puppet/provider/command.rb +25 -0
  721. data/lib/puppet/provider/computer/computer.rb +20 -0
  722. data/lib/puppet/provider/confine.rb +6 -0
  723. data/lib/puppet/provider/cron/crontab.rb +249 -0
  724. data/lib/puppet/provider/exec.rb +91 -0
  725. data/lib/puppet/provider/exec/posix.rb +48 -0
  726. data/lib/puppet/provider/exec/shell.rb +25 -0
  727. data/lib/puppet/provider/exec/windows.rb +55 -0
  728. data/lib/puppet/provider/file/posix.rb +136 -0
  729. data/lib/puppet/provider/file/windows.rb +105 -0
  730. data/lib/puppet/provider/group/aix.rb +141 -0
  731. data/lib/puppet/provider/group/directoryservice.rb +12 -0
  732. data/lib/puppet/provider/group/groupadd.rb +85 -0
  733. data/lib/puppet/provider/group/ldap.rb +45 -0
  734. data/lib/puppet/provider/group/pw.rb +48 -0
  735. data/lib/puppet/provider/group/windows_adsi.rb +86 -0
  736. data/lib/puppet/provider/host/parsed.rb +44 -0
  737. data/lib/puppet/provider/interface/cisco.rb +27 -0
  738. data/lib/puppet/provider/ldap.rb +137 -0
  739. data/lib/puppet/provider/macauthorization/macauthorization.rb +309 -0
  740. data/lib/puppet/provider/mailalias/aliases.rb +39 -0
  741. data/lib/puppet/provider/maillist/mailman.rb +108 -0
  742. data/lib/puppet/provider/mcx/mcxcontent.rb +172 -0
  743. data/lib/puppet/provider/mount.rb +58 -0
  744. data/lib/puppet/provider/mount/parsed.rb +123 -0
  745. data/lib/puppet/provider/naginator.rb +63 -0
  746. data/lib/puppet/provider/nameservice.rb +292 -0
  747. data/lib/puppet/provider/nameservice/directoryservice.rb +589 -0
  748. data/lib/puppet/provider/nameservice/objectadd.rb +33 -0
  749. data/lib/puppet/provider/nameservice/pw.rb +21 -0
  750. data/lib/puppet/provider/network_device.rb +68 -0
  751. data/lib/puppet/provider/package.rb +28 -0
  752. data/lib/puppet/provider/package/aix.rb +152 -0
  753. data/lib/puppet/provider/package/appdmg.rb +106 -0
  754. data/lib/puppet/provider/package/apple.rb +47 -0
  755. data/lib/puppet/provider/package/apt.rb +107 -0
  756. data/lib/puppet/provider/package/aptitude.rb +29 -0
  757. data/lib/puppet/provider/package/aptrpm.rb +83 -0
  758. data/lib/puppet/provider/package/blastwave.rb +111 -0
  759. data/lib/puppet/provider/package/dpkg.rb +165 -0
  760. data/lib/puppet/provider/package/fink.rb +79 -0
  761. data/lib/puppet/provider/package/freebsd.rb +47 -0
  762. data/lib/puppet/provider/package/gem.rb +125 -0
  763. data/lib/puppet/provider/package/hpux.rb +44 -0
  764. data/lib/puppet/provider/package/macports.rb +107 -0
  765. data/lib/puppet/provider/package/msi.rb +140 -0
  766. data/lib/puppet/provider/package/nim.rb +280 -0
  767. data/lib/puppet/provider/package/openbsd.rb +175 -0
  768. data/lib/puppet/provider/package/opkg.rb +76 -0
  769. data/lib/puppet/provider/package/pacman.rb +209 -0
  770. data/lib/puppet/provider/package/pip.rb +119 -0
  771. data/lib/puppet/provider/package/pkg.rb +190 -0
  772. data/lib/puppet/provider/package/pkgdmg.rb +149 -0
  773. data/lib/puppet/provider/package/pkgin.rb +87 -0
  774. data/lib/puppet/provider/package/pkgutil.rb +186 -0
  775. data/lib/puppet/provider/package/portage.rb +149 -0
  776. data/lib/puppet/provider/package/ports.rb +94 -0
  777. data/lib/puppet/provider/package/portupgrade.rb +241 -0
  778. data/lib/puppet/provider/package/rpm.rb +205 -0
  779. data/lib/puppet/provider/package/rug.rb +52 -0
  780. data/lib/puppet/provider/package/sun.rb +128 -0
  781. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  782. data/lib/puppet/provider/package/up2date.rb +40 -0
  783. data/lib/puppet/provider/package/urpmi.rb +55 -0
  784. data/lib/puppet/provider/package/windows.rb +123 -0
  785. data/lib/puppet/provider/package/windows/exe_package.rb +70 -0
  786. data/lib/puppet/provider/package/windows/msi_package.rb +62 -0
  787. data/lib/puppet/provider/package/windows/package.rb +80 -0
  788. data/lib/puppet/provider/package/yum.rb +110 -0
  789. data/lib/puppet/provider/package/yumhelper.py +129 -0
  790. data/lib/puppet/provider/package/zypper.rb +103 -0
  791. data/lib/puppet/provider/parsedfile.rb +443 -0
  792. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +565 -0
  793. data/lib/puppet/provider/selboolean/getsetsebool.rb +47 -0
  794. data/lib/puppet/provider/selmodule/semodule.rb +134 -0
  795. data/lib/puppet/provider/service/base.rb +106 -0
  796. data/lib/puppet/provider/service/bsd.rb +51 -0
  797. data/lib/puppet/provider/service/daemontools.rb +194 -0
  798. data/lib/puppet/provider/service/debian.rb +64 -0
  799. data/lib/puppet/provider/service/freebsd.rb +143 -0
  800. data/lib/puppet/provider/service/gentoo.rb +45 -0
  801. data/lib/puppet/provider/service/init.rb +161 -0
  802. data/lib/puppet/provider/service/launchd.rb +356 -0
  803. data/lib/puppet/provider/service/openbsd.rb +23 -0
  804. data/lib/puppet/provider/service/openrc.rb +71 -0
  805. data/lib/puppet/provider/service/openwrt.rb +36 -0
  806. data/lib/puppet/provider/service/redhat.rb +64 -0
  807. data/lib/puppet/provider/service/runit.rb +111 -0
  808. data/lib/puppet/provider/service/service.rb +42 -0
  809. data/lib/puppet/provider/service/smf.rb +116 -0
  810. data/lib/puppet/provider/service/src.rb +120 -0
  811. data/lib/puppet/provider/service/systemd.rb +65 -0
  812. data/lib/puppet/provider/service/upstart.rb +355 -0
  813. data/lib/puppet/provider/service/windows.rb +106 -0
  814. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +89 -0
  815. data/lib/puppet/provider/sshkey/parsed.rb +35 -0
  816. data/lib/puppet/provider/user/aix.rb +369 -0
  817. data/lib/puppet/provider/user/directoryservice.rb +671 -0
  818. data/lib/puppet/provider/user/hpux.rb +66 -0
  819. data/lib/puppet/provider/user/ldap.rb +128 -0
  820. data/lib/puppet/provider/user/pw.rb +97 -0
  821. data/lib/puppet/provider/user/user_role_add.rb +209 -0
  822. data/lib/puppet/provider/user/useradd.rb +231 -0
  823. data/lib/puppet/provider/user/windows_adsi.rb +99 -0
  824. data/lib/puppet/provider/vlan/cisco.rb +28 -0
  825. data/lib/puppet/provider/yumrepo/inifile.rb +187 -0
  826. data/lib/puppet/provider/zfs/zfs.rb +83 -0
  827. data/lib/puppet/provider/zone/solaris.rb +361 -0
  828. data/lib/puppet/provider/zpool/zpool.rb +120 -0
  829. data/lib/puppet/rails.rb +139 -0
  830. data/lib/puppet/rails/benchmark.rb +63 -0
  831. data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +13 -0
  832. data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +13 -0
  833. data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
  834. data/lib/puppet/rails/database/004_add_inventory_service_tables.rb +36 -0
  835. data/lib/puppet/rails/database/schema.rb +136 -0
  836. data/lib/puppet/rails/fact_name.rb +7 -0
  837. data/lib/puppet/rails/fact_value.rb +10 -0
  838. data/lib/puppet/rails/host.rb +258 -0
  839. data/lib/puppet/rails/inventory_fact.rb +5 -0
  840. data/lib/puppet/rails/inventory_node.rb +43 -0
  841. data/lib/puppet/rails/param_name.rb +25 -0
  842. data/lib/puppet/rails/param_value.rb +74 -0
  843. data/lib/puppet/rails/puppet_tag.rb +10 -0
  844. data/lib/puppet/rails/resource.rb +235 -0
  845. data/lib/puppet/rails/resource_tag.rb +26 -0
  846. data/lib/puppet/rails/source_file.rb +8 -0
  847. data/lib/puppet/reference/configuration.rb +73 -0
  848. data/lib/puppet/reference/function.rb +17 -0
  849. data/lib/puppet/reference/indirection.rb +71 -0
  850. data/lib/puppet/reference/metaparameter.rb +42 -0
  851. data/lib/puppet/reference/providers.rb +119 -0
  852. data/lib/puppet/reference/report.rb +23 -0
  853. data/lib/puppet/reference/type.rb +116 -0
  854. data/lib/puppet/relationship.rb +103 -0
  855. data/lib/puppet/reports.rb +89 -0
  856. data/lib/puppet/reports/http.rb +31 -0
  857. data/lib/puppet/reports/log.rb +14 -0
  858. data/lib/puppet/reports/rrdgraph.rb +128 -0
  859. data/lib/puppet/reports/store.rb +73 -0
  860. data/lib/puppet/reports/tagmail.rb +179 -0
  861. data/lib/puppet/resource.rb +542 -0
  862. data/lib/puppet/resource/catalog.rb +543 -0
  863. data/lib/puppet/resource/status.rb +155 -0
  864. data/lib/puppet/resource/type.rb +386 -0
  865. data/lib/puppet/resource/type_collection.rb +230 -0
  866. data/lib/puppet/resource/type_collection_helper.rb +7 -0
  867. data/lib/puppet/run.rb +109 -0
  868. data/lib/puppet/scheduler.rb +16 -0
  869. data/lib/puppet/scheduler/job.rb +53 -0
  870. data/lib/puppet/scheduler/scheduler.rb +44 -0
  871. data/lib/puppet/scheduler/splay_job.rb +32 -0
  872. data/lib/puppet/scheduler/timer.rb +13 -0
  873. data/lib/puppet/settings.rb +1312 -0
  874. data/lib/puppet/settings/autosign_setting.rb +22 -0
  875. data/lib/puppet/settings/base_setting.rb +168 -0
  876. data/lib/puppet/settings/boolean_setting.rb +32 -0
  877. data/lib/puppet/settings/config_file.rb +134 -0
  878. data/lib/puppet/settings/directory_setting.rb +12 -0
  879. data/lib/puppet/settings/duration_setting.rb +32 -0
  880. data/lib/puppet/settings/enum_setting.rb +16 -0
  881. data/lib/puppet/settings/errors.rb +11 -0
  882. data/lib/puppet/settings/file_setting.rb +226 -0
  883. data/lib/puppet/settings/ini_file.rb +171 -0
  884. data/lib/puppet/settings/path_setting.rb +8 -0
  885. data/lib/puppet/settings/priority_setting.rb +42 -0
  886. data/lib/puppet/settings/string_setting.rb +9 -0
  887. data/lib/puppet/settings/terminus_setting.rb +14 -0
  888. data/lib/puppet/settings/value_translator.rb +15 -0
  889. data/lib/puppet/ssl.rb +12 -0
  890. data/lib/puppet/ssl/base.rb +140 -0
  891. data/lib/puppet/ssl/certificate.rb +65 -0
  892. data/lib/puppet/ssl/certificate_authority.rb +509 -0
  893. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +44 -0
  894. data/lib/puppet/ssl/certificate_authority/interface.rb +178 -0
  895. data/lib/puppet/ssl/certificate_factory.rb +219 -0
  896. data/lib/puppet/ssl/certificate_request.rb +299 -0
  897. data/lib/puppet/ssl/certificate_request_attributes.rb +37 -0
  898. data/lib/puppet/ssl/certificate_revocation_list.rb +110 -0
  899. data/lib/puppet/ssl/certificate_signer.rb +22 -0
  900. data/lib/puppet/ssl/configuration.rb +64 -0
  901. data/lib/puppet/ssl/digest.rb +20 -0
  902. data/lib/puppet/ssl/host.rb +371 -0
  903. data/lib/puppet/ssl/inventory.rb +50 -0
  904. data/lib/puppet/ssl/key.rb +59 -0
  905. data/lib/puppet/ssl/oids.rb +78 -0
  906. data/lib/puppet/ssl/validator.rb +60 -0
  907. data/lib/puppet/ssl/validator/default_validator.rb +153 -0
  908. data/lib/puppet/ssl/validator/no_validator.rb +17 -0
  909. data/lib/puppet/status.rb +45 -0
  910. data/lib/puppet/test/test_helper.rb +216 -0
  911. data/lib/puppet/transaction.rb +340 -0
  912. data/lib/puppet/transaction/additional_resource_generator.rb +126 -0
  913. data/lib/puppet/transaction/event.rb +107 -0
  914. data/lib/puppet/transaction/event_manager.rb +122 -0
  915. data/lib/puppet/transaction/report.rb +383 -0
  916. data/lib/puppet/transaction/resource_harness.rb +238 -0
  917. data/lib/puppet/type.rb +2430 -0
  918. data/lib/puppet/type/augeas.rb +189 -0
  919. data/lib/puppet/type/component.rb +77 -0
  920. data/lib/puppet/type/computer.rb +66 -0
  921. data/lib/puppet/type/cron.rb +474 -0
  922. data/lib/puppet/type/exec.rb +564 -0
  923. data/lib/puppet/type/file.rb +891 -0
  924. data/lib/puppet/type/file/checksum.rb +33 -0
  925. data/lib/puppet/type/file/content.rb +239 -0
  926. data/lib/puppet/type/file/ctime.rb +20 -0
  927. data/lib/puppet/type/file/ensure.rb +189 -0
  928. data/lib/puppet/type/file/group.rb +41 -0
  929. data/lib/puppet/type/file/mode.rb +159 -0
  930. data/lib/puppet/type/file/mtime.rb +18 -0
  931. data/lib/puppet/type/file/owner.rb +44 -0
  932. data/lib/puppet/type/file/selcontext.rb +124 -0
  933. data/lib/puppet/type/file/source.rb +256 -0
  934. data/lib/puppet/type/file/target.rb +87 -0
  935. data/lib/puppet/type/file/type.rb +19 -0
  936. data/lib/puppet/type/filebucket.rb +122 -0
  937. data/lib/puppet/type/group.rb +188 -0
  938. data/lib/puppet/type/host.rb +86 -0
  939. data/lib/puppet/type/interface.rb +116 -0
  940. data/lib/puppet/type/k5login.rb +88 -0
  941. data/lib/puppet/type/macauthorization.rb +167 -0
  942. data/lib/puppet/type/mailalias.rb +48 -0
  943. data/lib/puppet/type/maillist.rb +62 -0
  944. data/lib/puppet/type/mcx.rb +98 -0
  945. data/lib/puppet/type/mount.rb +288 -0
  946. data/lib/puppet/type/nagios_command.rb +3 -0
  947. data/lib/puppet/type/nagios_contact.rb +3 -0
  948. data/lib/puppet/type/nagios_contactgroup.rb +3 -0
  949. data/lib/puppet/type/nagios_host.rb +3 -0
  950. data/lib/puppet/type/nagios_hostdependency.rb +3 -0
  951. data/lib/puppet/type/nagios_hostescalation.rb +3 -0
  952. data/lib/puppet/type/nagios_hostextinfo.rb +3 -0
  953. data/lib/puppet/type/nagios_hostgroup.rb +3 -0
  954. data/lib/puppet/type/nagios_service.rb +3 -0
  955. data/lib/puppet/type/nagios_servicedependency.rb +3 -0
  956. data/lib/puppet/type/nagios_serviceescalation.rb +3 -0
  957. data/lib/puppet/type/nagios_serviceextinfo.rb +3 -0
  958. data/lib/puppet/type/nagios_servicegroup.rb +3 -0
  959. data/lib/puppet/type/nagios_timeperiod.rb +3 -0
  960. data/lib/puppet/type/notify.rb +44 -0
  961. data/lib/puppet/type/package.rb +460 -0
  962. data/lib/puppet/type/resources.rb +161 -0
  963. data/lib/puppet/type/router.rb +17 -0
  964. data/lib/puppet/type/schedule.rb +469 -0
  965. data/lib/puppet/type/scheduled_task.rb +170 -0
  966. data/lib/puppet/type/selboolean.rb +26 -0
  967. data/lib/puppet/type/selmodule.rb +59 -0
  968. data/lib/puppet/type/service.rb +224 -0
  969. data/lib/puppet/type/ssh_authorized_key.rb +115 -0
  970. data/lib/puppet/type/sshkey.rb +73 -0
  971. data/lib/puppet/type/stage.rb +27 -0
  972. data/lib/puppet/type/tidy.rb +324 -0
  973. data/lib/puppet/type/user.rb +572 -0
  974. data/lib/puppet/type/vlan.rb +26 -0
  975. data/lib/puppet/type/whit.rb +34 -0
  976. data/lib/puppet/type/yumrepo.rb +270 -0
  977. data/lib/puppet/type/zfs.rb +150 -0
  978. data/lib/puppet/type/zone.rb +385 -0
  979. data/lib/puppet/type/zpool.rb +91 -0
  980. data/lib/puppet/util.rb +545 -0
  981. data/lib/puppet/util/adsi.rb +368 -0
  982. data/lib/puppet/util/autoload.rb +227 -0
  983. data/lib/puppet/util/backups.rb +86 -0
  984. data/lib/puppet/util/cacher.rb +74 -0
  985. data/lib/puppet/util/checksums.rb +143 -0
  986. data/lib/puppet/util/classgen.rb +236 -0
  987. data/lib/puppet/util/colors.rb +175 -0
  988. data/lib/puppet/util/command_line.rb +182 -0
  989. data/lib/puppet/util/command_line/puppet_option_parser.rb +87 -0
  990. data/lib/puppet/util/command_line/trollop.rb +824 -0
  991. data/lib/puppet/util/constant_inflector.rb +24 -0
  992. data/lib/puppet/util/diff.rb +77 -0
  993. data/lib/puppet/util/docs.rb +128 -0
  994. data/lib/puppet/util/errors.rb +106 -0
  995. data/lib/puppet/util/execution.rb +313 -0
  996. data/lib/puppet/util/execution_stub.rb +26 -0
  997. data/lib/puppet/util/feature.rb +83 -0
  998. data/lib/puppet/util/file_watcher.rb +28 -0
  999. data/lib/puppet/util/fileparsing.rb +376 -0
  1000. data/lib/puppet/util/filetype.rb +299 -0
  1001. data/lib/puppet/util/http_proxy.rb +38 -0
  1002. data/lib/puppet/util/inifile.rb +218 -0
  1003. data/lib/puppet/util/inline_docs.rb +26 -0
  1004. data/lib/puppet/util/instance_loader.rb +81 -0
  1005. data/lib/puppet/util/instrumentation.rb +152 -0
  1006. data/lib/puppet/util/instrumentation/data.rb +46 -0
  1007. data/lib/puppet/util/instrumentation/indirection_probe.rb +41 -0
  1008. data/lib/puppet/util/instrumentation/instrumentable.rb +136 -0
  1009. data/lib/puppet/util/instrumentation/listener.rb +72 -0
  1010. data/lib/puppet/util/instrumentation/listeners/log.rb +23 -0
  1011. data/lib/puppet/util/instrumentation/listeners/performance.rb +24 -0
  1012. data/lib/puppet/util/json_lockfile.rb +44 -0
  1013. data/lib/puppet/util/ldap.rb +2 -0
  1014. data/lib/puppet/util/ldap/connection.rb +71 -0
  1015. data/lib/puppet/util/ldap/generator.rb +42 -0
  1016. data/lib/puppet/util/ldap/manager.rb +278 -0
  1017. data/lib/puppet/util/libuser.conf +15 -0
  1018. data/lib/puppet/util/libuser.rb +12 -0
  1019. data/lib/puppet/util/limits.rb +12 -0
  1020. data/lib/puppet/util/lockfile.rb +66 -0
  1021. data/lib/puppet/util/log.rb +343 -0
  1022. data/lib/puppet/util/log/destination.rb +49 -0
  1023. data/lib/puppet/util/log/destinations.rb +228 -0
  1024. data/lib/puppet/util/log/rate_limited_logger.rb +40 -0
  1025. data/lib/puppet/util/logging.rb +143 -0
  1026. data/lib/puppet/util/metaid.rb +21 -0
  1027. data/lib/puppet/util/methodhelper.rb +32 -0
  1028. data/lib/puppet/util/metric.rb +210 -0
  1029. data/lib/puppet/util/monkey_patches.rb +225 -0
  1030. data/lib/puppet/util/monkey_patches/lines.rb +13 -0
  1031. data/lib/puppet/util/nagios_maker.rb +85 -0
  1032. data/lib/puppet/util/network_device.rb +17 -0
  1033. data/lib/puppet/util/network_device/base.rb +27 -0
  1034. data/lib/puppet/util/network_device/cisco.rb +4 -0
  1035. data/lib/puppet/util/network_device/cisco/device.rb +267 -0
  1036. data/lib/puppet/util/network_device/cisco/facts.rb +72 -0
  1037. data/lib/puppet/util/network_device/cisco/interface.rb +82 -0
  1038. data/lib/puppet/util/network_device/config.rb +93 -0
  1039. data/lib/puppet/util/network_device/ipcalc.rb +68 -0
  1040. data/lib/puppet/util/network_device/transport.rb +5 -0
  1041. data/lib/puppet/util/network_device/transport/base.rb +26 -0
  1042. data/lib/puppet/util/network_device/transport/ssh.rb +122 -0
  1043. data/lib/puppet/util/network_device/transport/telnet.rb +44 -0
  1044. data/lib/puppet/util/package.rb +31 -0
  1045. data/lib/puppet/util/pidlock.rb +56 -0
  1046. data/lib/puppet/util/platform.rb +22 -0
  1047. data/lib/puppet/util/plugins.rb +82 -0
  1048. data/lib/puppet/util/posix.rb +147 -0
  1049. data/lib/puppet/util/profiler.rb +45 -0
  1050. data/lib/puppet/util/profiler/logging.rb +47 -0
  1051. data/lib/puppet/util/profiler/none.rb +8 -0
  1052. data/lib/puppet/util/profiler/object_counts.rb +17 -0
  1053. data/lib/puppet/util/profiler/wall_clock.rb +34 -0
  1054. data/lib/puppet/util/provider_features.rb +184 -0
  1055. data/lib/puppet/util/pson.rb +13 -0
  1056. data/lib/puppet/util/queue.rb +96 -0
  1057. data/lib/puppet/util/queue/stomp.rb +60 -0
  1058. data/lib/puppet/util/rails/cache_accumulator.rb +65 -0
  1059. data/lib/puppet/util/rails/collection_merger.rb +17 -0
  1060. data/lib/puppet/util/rails/reference_serializer.rb +32 -0
  1061. data/lib/puppet/util/rdoc.rb +89 -0
  1062. data/lib/puppet/util/rdoc/code_objects.rb +334 -0
  1063. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +910 -0
  1064. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1085 -0
  1065. data/lib/puppet/util/rdoc/parser.rb +22 -0
  1066. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +477 -0
  1067. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc1.rb +19 -0
  1068. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
  1069. data/lib/puppet/util/reference.rb +124 -0
  1070. data/lib/puppet/util/resource_template.rb +61 -0
  1071. data/lib/puppet/util/retryaction.rb +47 -0
  1072. data/lib/puppet/util/rubygems.rb +65 -0
  1073. data/lib/puppet/util/run_mode.rb +82 -0
  1074. data/lib/puppet/util/selinux.rb +222 -0
  1075. data/lib/puppet/util/ssl.rb +53 -0
  1076. data/lib/puppet/util/storage.rb +89 -0
  1077. data/lib/puppet/util/suidmanager.rb +198 -0
  1078. data/lib/puppet/util/symbolic_file_mode.rb +144 -0
  1079. data/lib/puppet/util/tag_set.rb +41 -0
  1080. data/lib/puppet/util/tagging.rb +55 -0
  1081. data/lib/puppet/util/terminal.rb +16 -0
  1082. data/lib/puppet/util/user_attr.rb +21 -0
  1083. data/lib/puppet/util/warnings.rb +32 -0
  1084. data/lib/puppet/util/watched_file.rb +37 -0
  1085. data/lib/puppet/util/watcher.rb +17 -0
  1086. data/lib/puppet/util/watcher/change_watcher.rb +33 -0
  1087. data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
  1088. data/lib/puppet/util/watcher/timer.rb +19 -0
  1089. data/lib/puppet/util/windows.rb +17 -0
  1090. data/lib/puppet/util/windows/access_control_entry.rb +84 -0
  1091. data/lib/puppet/util/windows/access_control_list.rb +113 -0
  1092. data/lib/puppet/util/windows/error.rb +16 -0
  1093. data/lib/puppet/util/windows/file.rb +279 -0
  1094. data/lib/puppet/util/windows/process.rb +238 -0
  1095. data/lib/puppet/util/windows/registry.rb +70 -0
  1096. data/lib/puppet/util/windows/root_certs.rb +101 -0
  1097. data/lib/puppet/util/windows/security.rb +649 -0
  1098. data/lib/puppet/util/windows/security_descriptor.rb +62 -0
  1099. data/lib/puppet/util/windows/sid.rb +118 -0
  1100. data/lib/puppet/util/windows/string.rb +14 -0
  1101. data/lib/puppet/util/windows/user.rb +108 -0
  1102. data/lib/puppet/util/yaml.rb +24 -0
  1103. data/lib/puppet/util/zaml.rb +419 -0
  1104. data/lib/puppet/vendor.rb +55 -0
  1105. data/lib/puppet/vendor/load_safe_yaml.rb +1 -0
  1106. data/lib/puppet/vendor/require_vendored.rb +5 -0
  1107. data/lib/puppet/vendor/safe_yaml/CHANGES.md +104 -0
  1108. data/lib/puppet/vendor/safe_yaml/Gemfile +11 -0
  1109. data/lib/puppet/vendor/safe_yaml/LICENSE.txt +22 -0
  1110. data/lib/puppet/vendor/safe_yaml/README.md +179 -0
  1111. data/lib/puppet/vendor/safe_yaml/Rakefile +6 -0
  1112. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml.rb +253 -0
  1113. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/deep.rb +34 -0
  1114. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/date.rb +27 -0
  1115. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/hexadecimal.rb +12 -0
  1116. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/sexagesimal.rb +26 -0
  1117. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/psych_handler.rb +92 -0
  1118. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/psych_resolver.rb +52 -0
  1119. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/resolver.rb +94 -0
  1120. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/safe_to_ruby_visitor.rb +17 -0
  1121. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_hack.rb +36 -0
  1122. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_node_monkeypatch.rb +43 -0
  1123. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_resolver.rb +38 -0
  1124. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform.rb +41 -0
  1125. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_boolean.rb +21 -0
  1126. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_date.rb +11 -0
  1127. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_float.rb +33 -0
  1128. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_integer.rb +25 -0
  1129. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_nil.rb +18 -0
  1130. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_symbol.rb +13 -0
  1131. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/transformation_map.rb +47 -0
  1132. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/version.rb +3 -0
  1133. data/lib/puppet/vendor/safe_yaml/run_specs_all_ruby_versions.sh +21 -0
  1134. data/lib/puppet/vendor/safe_yaml/safe_yaml.gemspec +18 -0
  1135. data/lib/puppet/vendor/safe_yaml/spec/exploit.1.9.2.yaml +2 -0
  1136. data/lib/puppet/vendor/safe_yaml/spec/exploit.1.9.3.yaml +2 -0
  1137. data/lib/puppet/vendor/safe_yaml/spec/psych_resolver_spec.rb +10 -0
  1138. data/lib/puppet/vendor/safe_yaml/spec/resolver_specs.rb +250 -0
  1139. data/lib/puppet/vendor/safe_yaml/spec/safe_yaml_spec.rb +702 -0
  1140. data/lib/puppet/vendor/safe_yaml/spec/spec_helper.rb +18 -0
  1141. data/lib/puppet/vendor/safe_yaml/spec/support/exploitable_back_door.rb +29 -0
  1142. data/lib/puppet/vendor/safe_yaml/spec/syck_resolver_spec.rb +10 -0
  1143. data/lib/puppet/vendor/safe_yaml/spec/transform/base64_spec.rb +11 -0
  1144. data/lib/puppet/vendor/safe_yaml/spec/transform/to_date_spec.rb +34 -0
  1145. data/lib/puppet/vendor/safe_yaml/spec/transform/to_float_spec.rb +42 -0
  1146. data/lib/puppet/vendor/safe_yaml/spec/transform/to_integer_spec.rb +59 -0
  1147. data/lib/puppet/vendor/safe_yaml/spec/transform/to_symbol_spec.rb +49 -0
  1148. data/lib/puppet/vendor/safe_yaml_patches.rb +9 -0
  1149. data/lib/puppet/version.rb +89 -0
  1150. data/lib/puppetx.rb +89 -0
  1151. data/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
  1152. data/lib/puppetx/puppet/syntax_checker.rb +91 -0
  1153. data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +37 -0
  1154. data/lib/semver.rb +124 -0
  1155. data/man/man5/puppet.conf.5 +1581 -0
  1156. data/man/man8/extlookup2hiera.8 +23 -0
  1157. data/man/man8/puppet-agent.8 +157 -0
  1158. data/man/man8/puppet-apply.8 +80 -0
  1159. data/man/man8/puppet-ca.8 +170 -0
  1160. data/man/man8/puppet-catalog.8 +292 -0
  1161. data/man/man8/puppet-cert.8 +97 -0
  1162. data/man/man8/puppet-certificate.8 +238 -0
  1163. data/man/man8/puppet-certificate_request.8 +168 -0
  1164. data/man/man8/puppet-certificate_revocation_list.8 +165 -0
  1165. data/man/man8/puppet-config.8 +76 -0
  1166. data/man/man8/puppet-describe.8 +51 -0
  1167. data/man/man8/puppet-device.8 +86 -0
  1168. data/man/man8/puppet-doc.8 +119 -0
  1169. data/man/man8/puppet-facts.8 +223 -0
  1170. data/man/man8/puppet-file.8 +215 -0
  1171. data/man/man8/puppet-filebucket.8 +81 -0
  1172. data/man/man8/puppet-help.8 +64 -0
  1173. data/man/man8/puppet-inspect.8 +36 -0
  1174. data/man/man8/puppet-instrumentation_data.8 +141 -0
  1175. data/man/man8/puppet-instrumentation_listener.8 +218 -0
  1176. data/man/man8/puppet-instrumentation_probe.8 +203 -0
  1177. data/man/man8/puppet-key.8 +129 -0
  1178. data/man/man8/puppet-kick.8 +131 -0
  1179. data/man/man8/puppet-man.8 +70 -0
  1180. data/man/man8/puppet-master.8 +78 -0
  1181. data/man/man8/puppet-module.8 +422 -0
  1182. data/man/man8/puppet-node.8 +211 -0
  1183. data/man/man8/puppet-parser.8 +73 -0
  1184. data/man/man8/puppet-plugin.8 +73 -0
  1185. data/man/man8/puppet-queue.8 +55 -0
  1186. data/man/man8/puppet-report.8 +186 -0
  1187. data/man/man8/puppet-resource.8 +84 -0
  1188. data/man/man8/puppet-resource_type.8 +214 -0
  1189. data/man/man8/puppet-secret_agent.8 +70 -0
  1190. data/man/man8/puppet-status.8 +150 -0
  1191. data/man/man8/puppet.8 +10 -0
  1192. data/spec/fixtures/faulty_face/puppet/face/syntax.rb +8 -0
  1193. data/spec/fixtures/hiera.yaml +9 -0
  1194. data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +2 -0
  1195. data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +6 -0
  1196. data/spec/fixtures/integration/node/environment/sitedir/03_empty.pp +0 -0
  1197. data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +2 -0
  1198. data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +19 -0
  1199. data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +18 -0
  1200. data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +15 -0
  1201. data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +4 -0
  1202. data/spec/fixtures/integration/provider/cron/crontab/modify_entry +13 -0
  1203. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +15 -0
  1204. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +6 -0
  1205. data/spec/fixtures/integration/provider/cron/crontab/purged +8 -0
  1206. data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +12 -0
  1207. data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +14 -0
  1208. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +15 -0
  1209. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +28 -0
  1210. data/spec/fixtures/manifests/site.pp +0 -0
  1211. data/spec/fixtures/releases/jamtur01-apache/Modulefile +2 -0
  1212. data/spec/fixtures/releases/jamtur01-apache/files/httpd +24 -0
  1213. data/spec/fixtures/releases/jamtur01-apache/files/test.vhost +18 -0
  1214. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +21 -0
  1215. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/type/a2mod.rb +12 -0
  1216. data/spec/fixtures/releases/jamtur01-apache/manifests/dev.pp +5 -0
  1217. data/spec/fixtures/releases/jamtur01-apache/manifests/init.pp +34 -0
  1218. data/spec/fixtures/releases/jamtur01-apache/manifests/params.pp +17 -0
  1219. data/spec/fixtures/releases/jamtur01-apache/manifests/php.pp +5 -0
  1220. data/spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp +15 -0
  1221. data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +15 -0
  1222. data/spec/fixtures/releases/jamtur01-apache/metadata.json +1 -0
  1223. data/spec/fixtures/releases/jamtur01-apache/templates/vhost-default.conf.erb +20 -0
  1224. data/spec/fixtures/releases/jamtur01-apache/tests/apache.pp +1 -0
  1225. data/spec/fixtures/releases/jamtur01-apache/tests/dev.pp +1 -0
  1226. data/spec/fixtures/releases/jamtur01-apache/tests/init.pp +1 -0
  1227. data/spec/fixtures/releases/jamtur01-apache/tests/php.pp +1 -0
  1228. data/spec/fixtures/releases/jamtur01-apache/tests/ssl.pp +1 -0
  1229. data/spec/fixtures/releases/jamtur01-apache/tests/vhost.pp +2 -0
  1230. data/spec/fixtures/unit/indirector/data_binding/hiera/global.yaml +10 -0
  1231. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +1 -0
  1232. data/spec/fixtures/unit/module/trailing-comma.json +24 -0
  1233. data/spec/fixtures/unit/parser/lexer/aliastest.pp +16 -0
  1234. data/spec/fixtures/unit/parser/lexer/append.pp +11 -0
  1235. data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +14 -0
  1236. data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +8 -0
  1237. data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +3 -0
  1238. data/spec/fixtures/unit/parser/lexer/casestatement.pp +65 -0
  1239. data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +15 -0
  1240. data/spec/fixtures/unit/parser/lexer/classincludes.pp +17 -0
  1241. data/spec/fixtures/unit/parser/lexer/classpathtest.pp +11 -0
  1242. data/spec/fixtures/unit/parser/lexer/collection.pp +10 -0
  1243. data/spec/fixtures/unit/parser/lexer/collection_override.pp +8 -0
  1244. data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +20 -0
  1245. data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +11 -0
  1246. data/spec/fixtures/unit/parser/lexer/componentrequire.pp +8 -0
  1247. data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +23 -0
  1248. data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +17 -0
  1249. data/spec/fixtures/unit/parser/lexer/emptyclass.pp +9 -0
  1250. data/spec/fixtures/unit/parser/lexer/emptyexec.pp +3 -0
  1251. data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +9 -0
  1252. data/spec/fixtures/unit/parser/lexer/falsevalues.pp +3 -0
  1253. data/spec/fixtures/unit/parser/lexer/filecreate.pp +11 -0
  1254. data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +5 -0
  1255. data/spec/fixtures/unit/parser/lexer/fqparents.pp +11 -0
  1256. data/spec/fixtures/unit/parser/lexer/funccomma.pp +5 -0
  1257. data/spec/fixtures/unit/parser/lexer/hash.pp +33 -0
  1258. data/spec/fixtures/unit/parser/lexer/ifexpression.pp +12 -0
  1259. data/spec/fixtures/unit/parser/lexer/implicititeration.pp +15 -0
  1260. data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +10 -0
  1261. data/spec/fixtures/unit/parser/lexer/multipleclass.pp +9 -0
  1262. data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +7 -0
  1263. data/spec/fixtures/unit/parser/lexer/multisubs.pp +13 -0
  1264. data/spec/fixtures/unit/parser/lexer/namevartest.pp +9 -0
  1265. data/spec/fixtures/unit/parser/lexer/scopetest.pp +13 -0
  1266. data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +49 -0
  1267. data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +5 -0
  1268. data/spec/fixtures/unit/parser/lexer/simpleselector.pp +38 -0
  1269. data/spec/fixtures/unit/parser/lexer/singleary.pp +19 -0
  1270. data/spec/fixtures/unit/parser/lexer/singlequote.pp +11 -0
  1271. data/spec/fixtures/unit/parser/lexer/singleselector.pp +22 -0
  1272. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +11 -0
  1273. data/spec/fixtures/unit/parser/lexer/tag.pp +9 -0
  1274. data/spec/fixtures/unit/parser/lexer/tagged.pp +35 -0
  1275. data/spec/fixtures/unit/parser/lexer/virtualresources.pp +14 -0
  1276. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +10 -0
  1277. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +10 -0
  1278. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +20 -0
  1279. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppetx/awesome2/echo_scheme_handler.rb +18 -0
  1280. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +5 -0
  1281. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +6 -0
  1282. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +9 -0
  1283. data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +16 -0
  1284. data/spec/fixtures/unit/pops/parser/lexer/append.pp +11 -0
  1285. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +14 -0
  1286. data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +8 -0
  1287. data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +3 -0
  1288. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +65 -0
  1289. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +15 -0
  1290. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +17 -0
  1291. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +11 -0
  1292. data/spec/fixtures/unit/pops/parser/lexer/collection.pp +10 -0
  1293. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +8 -0
  1294. data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +20 -0
  1295. data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +11 -0
  1296. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +8 -0
  1297. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +23 -0
  1298. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +17 -0
  1299. data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +9 -0
  1300. data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +3 -0
  1301. data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +9 -0
  1302. data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +3 -0
  1303. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +11 -0
  1304. data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +5 -0
  1305. data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +11 -0
  1306. data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +5 -0
  1307. data/spec/fixtures/unit/pops/parser/lexer/hash.pp +33 -0
  1308. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +12 -0
  1309. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +15 -0
  1310. data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +10 -0
  1311. data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +9 -0
  1312. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +7 -0
  1313. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +13 -0
  1314. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +9 -0
  1315. data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +13 -0
  1316. data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +49 -0
  1317. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +5 -0
  1318. data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +38 -0
  1319. data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +19 -0
  1320. data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +11 -0
  1321. data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +22 -0
  1322. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +11 -0
  1323. data/spec/fixtures/unit/pops/parser/lexer/tag.pp +9 -0
  1324. data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +35 -0
  1325. data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +14 -0
  1326. data/spec/fixtures/unit/provider/augeas/augeas/augeas/lenses/test.aug +13 -0
  1327. data/spec/fixtures/unit/provider/augeas/augeas/etc/fstab +10 -0
  1328. data/spec/fixtures/unit/provider/augeas/augeas/etc/hosts +6 -0
  1329. data/spec/fixtures/unit/provider/augeas/augeas/etc/test +3 -0
  1330. data/spec/fixtures/unit/provider/augeas/augeas/test.aug +13 -0
  1331. data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +272 -0
  1332. data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +3 -0
  1333. data/spec/fixtures/unit/provider/cron/parsed/managed +6 -0
  1334. data/spec/fixtures/unit/provider/cron/parsed/simple +9 -0
  1335. data/spec/fixtures/unit/provider/host/parsed/valid_hosts +19 -0
  1336. data/spec/fixtures/unit/provider/mount/mount-output.aix.txt +7 -0
  1337. data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +144 -0
  1338. data/spec/fixtures/unit/provider/mount/parsed/aix.mount +7 -0
  1339. data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +6 -0
  1340. data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +8 -0
  1341. data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +3 -0
  1342. data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +17 -0
  1343. data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +11 -0
  1344. data/spec/fixtures/unit/provider/mount/parsed/linux.mount +5 -0
  1345. data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +9 -0
  1346. data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +8 -0
  1347. data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +4 -0
  1348. data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +4 -0
  1349. data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +11 -0
  1350. data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +6 -0
  1351. data/spec/fixtures/unit/provider/package/gem/line-with-1.8.5-warning +14 -0
  1352. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.detail +19 -0
  1353. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.list +10 -0
  1354. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.query +1 -0
  1355. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +2 -0
  1356. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris10 +1 -0
  1357. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.installed +1 -0
  1358. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known +1 -0
  1359. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed +1 -0
  1360. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known +1 -0
  1361. data/spec/fixtures/unit/provider/package/pkg/incomplete +1 -0
  1362. data/spec/fixtures/unit/provider/package/pkg/publisher +2 -0
  1363. data/spec/fixtures/unit/provider/package/pkg/simple +2 -0
  1364. data/spec/fixtures/unit/provider/package/pkg/solaris11 +2 -0
  1365. data/spec/fixtures/unit/provider/package/pkg/unknown_status +12 -0
  1366. data/spec/fixtures/unit/provider/package/sun/dummy.server +12 -0
  1367. data/spec/fixtures/unit/provider/package/sun/simple +24 -0
  1368. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-SLES11sp1.out +369 -0
  1369. data/spec/fixtures/unit/provider/parsedfile/simple.txt +4 -0
  1370. data/spec/fixtures/unit/provider/service/gentoo/rc_update_show +30 -0
  1371. data/spec/fixtures/unit/provider/service/openrc/rcservice_list +8 -0
  1372. data/spec/fixtures/unit/provider/service/openrc/rcstatus +43 -0
  1373. data/spec/fixtures/unit/provider/service/smf/svcs.out +3 -0
  1374. data/spec/fixtures/unit/provider/service/systemd/list_units_services +17 -0
  1375. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +7 -0
  1376. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +3 -0
  1377. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +1 -0
  1378. data/spec/fixtures/unit/provider/sshkey/parsed/sample +21 -0
  1379. data/spec/fixtures/unit/provider/zfs/zfs/zfs-list.out +2 -0
  1380. data/spec/fixtures/unit/provider/zpool/zpool/zpool-list.out +2 -0
  1381. data/spec/fixtures/unit/reports/tagmail/tagmail_email.conf +2 -0
  1382. data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +3 -0
  1383. data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +30 -0
  1384. data/spec/fixtures/unit/util/filetype/aixtab_output +44 -0
  1385. data/spec/fixtures/unit/util/filetype/suntab_output +9 -0
  1386. data/spec/fixtures/unit/util/monkey_patches/x509.pem +32 -0
  1387. data/spec/fixtures/unit/util/rdoc/basic.pp +16 -0
  1388. data/spec/fixtures/yaml/report0.25.x.yaml +64 -0
  1389. data/spec/fixtures/yaml/report2.6.x.yaml +190 -0
  1390. data/spec/fixtures/yaml/test.local.yaml +16 -0
  1391. data/spec/integration/agent/logging_spec.rb +178 -0
  1392. data/spec/integration/application/apply_spec.rb +108 -0
  1393. data/spec/integration/application/doc_spec.rb +56 -0
  1394. data/spec/integration/configurer_spec.rb +81 -0
  1395. data/spec/integration/data_binding.rb +100 -0
  1396. data/spec/integration/defaults_spec.rb +315 -0
  1397. data/spec/integration/directory_environments_spec.rb +50 -0
  1398. data/spec/integration/faces/ca_spec.rb +354 -0
  1399. data/spec/integration/faces/documentation_spec.rb +62 -0
  1400. data/spec/integration/file_bucket/file_spec.rb +44 -0
  1401. data/spec/integration/file_serving/content_spec.rb +8 -0
  1402. data/spec/integration/file_serving/fileset_spec.rb +13 -0
  1403. data/spec/integration/file_serving/metadata_spec.rb +9 -0
  1404. data/spec/integration/file_serving/terminus_helper_spec.rb +21 -0
  1405. data/spec/integration/indirector/catalog/compiler_spec.rb +67 -0
  1406. data/spec/integration/indirector/catalog/queue_spec.rb +57 -0
  1407. data/spec/integration/indirector/direct_file_server_spec.rb +67 -0
  1408. data/spec/integration/indirector/facts/facter_spec.rb +22 -0
  1409. data/spec/integration/indirector/file_content/file_server_spec.rb +89 -0
  1410. data/spec/integration/indirector/file_metadata/file_server_spec.rb +14 -0
  1411. data/spec/integration/indirector/node/ldap_spec.rb +14 -0
  1412. data/spec/integration/network/authconfig_spec.rb +257 -0
  1413. data/spec/integration/network/formats_spec.rb +91 -0
  1414. data/spec/integration/node/environment_spec.rb +109 -0
  1415. data/spec/integration/node/facts_spec.rb +41 -0
  1416. data/spec/integration/node_spec.rb +82 -0
  1417. data/spec/integration/parser/catalog_spec.rb +125 -0
  1418. data/spec/integration/parser/collector_spec.rb +117 -0
  1419. data/spec/integration/parser/compiler_spec.rb +513 -0
  1420. data/spec/integration/parser/functions/require_spec.rb +43 -0
  1421. data/spec/integration/parser/future_compiler_spec.rb +416 -0
  1422. data/spec/integration/parser/parser_spec.rb +207 -0
  1423. data/spec/integration/parser/ruby_manifest_spec.rb +128 -0
  1424. data/spec/integration/parser/scope_spec.rb +757 -0
  1425. data/spec/integration/parser/undef_param_spec.rb +87 -0
  1426. data/spec/integration/provider/cron/crontab_spec.rb +217 -0
  1427. data/spec/integration/provider/mailalias/aliases_spec.rb +10 -0
  1428. data/spec/integration/provider/mount_spec.rb +169 -0
  1429. data/spec/integration/provider/package_spec.rb +44 -0
  1430. data/spec/integration/provider/service/init_spec.rb +46 -0
  1431. data/spec/integration/provider/service/systemd_spec.rb +20 -0
  1432. data/spec/integration/provider/ssh_authorized_key_spec.rb +219 -0
  1433. data/spec/integration/reference/providers_spec.rb +16 -0
  1434. data/spec/integration/reports_spec.rb +14 -0
  1435. data/spec/integration/resource/catalog_spec.rb +54 -0
  1436. data/spec/integration/resource/type_collection_spec.rb +94 -0
  1437. data/spec/integration/ssl/autosign_spec.rb +130 -0
  1438. data/spec/integration/ssl/certificate_authority_spec.rb +137 -0
  1439. data/spec/integration/ssl/certificate_request_spec.rb +54 -0
  1440. data/spec/integration/ssl/certificate_revocation_list_spec.rb +37 -0
  1441. data/spec/integration/ssl/host_spec.rb +84 -0
  1442. data/spec/integration/transaction/report_spec.rb +24 -0
  1443. data/spec/integration/transaction_spec.rb +346 -0
  1444. data/spec/integration/type/exec_spec.rb +77 -0
  1445. data/spec/integration/type/file_spec.rb +1375 -0
  1446. data/spec/integration/type/nagios_spec.rb +80 -0
  1447. data/spec/integration/type/package_spec.rb +28 -0
  1448. data/spec/integration/type/tidy_spec.rb +31 -0
  1449. data/spec/integration/type_spec.rb +32 -0
  1450. data/spec/integration/util/autoload_spec.rb +107 -0
  1451. data/spec/integration/util/execution_spec.rb +17 -0
  1452. data/spec/integration/util/feature_spec.rb +53 -0
  1453. data/spec/integration/util/rdoc/parser_spec.rb +261 -0
  1454. data/spec/integration/util/settings_spec.rb +89 -0
  1455. data/spec/integration/util/windows/process_spec.rb +22 -0
  1456. data/spec/integration/util/windows/security_spec.rb +846 -0
  1457. data/spec/integration/util/windows/user_spec.rb +59 -0
  1458. data/spec/integration/util_spec.rb +111 -0
  1459. data/spec/lib/matchers/containment_matchers.rb +52 -0
  1460. data/spec/lib/matchers/include.rb +27 -0
  1461. data/spec/lib/matchers/include_in_order.rb +21 -0
  1462. data/spec/lib/matchers/include_in_order_spec.rb +30 -0
  1463. data/spec/lib/matchers/include_spec.rb +32 -0
  1464. data/spec/lib/matchers/json.rb +167 -0
  1465. data/spec/lib/matchers/match_tokens2.rb +74 -0
  1466. data/spec/lib/matchers/relationship_graph_matchers.rb +48 -0
  1467. data/spec/lib/matchers/resource.rb +35 -0
  1468. data/spec/lib/puppet/face/1.0.0/huzzah.rb +8 -0
  1469. data/spec/lib/puppet/face/basetest.rb +51 -0
  1470. data/spec/lib/puppet/face/huzzah.rb +8 -0
  1471. data/spec/lib/puppet/face/huzzah/obsolete.rb +6 -0
  1472. data/spec/lib/puppet/face/version_matching.rb +12 -0
  1473. data/spec/lib/puppet/indirector/indirector_testing/json.rb +6 -0
  1474. data/spec/lib/puppet/indirector/indirector_testing/memory.rb +7 -0
  1475. data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +6 -0
  1476. data/spec/lib/puppet/indirector_testing.rb +37 -0
  1477. data/spec/lib/puppet_spec/compiler.rb +36 -0
  1478. data/spec/lib/puppet_spec/database.rb +29 -0
  1479. data/spec/lib/puppet_spec/files.rb +60 -0
  1480. data/spec/lib/puppet_spec/fixtures.rb +28 -0
  1481. data/spec/lib/puppet_spec/matchers.rb +120 -0
  1482. data/spec/lib/puppet_spec/modules.rb +26 -0
  1483. data/spec/lib/puppet_spec/pops.rb +16 -0
  1484. data/spec/lib/puppet_spec/scope.rb +14 -0
  1485. data/spec/lib/puppet_spec/settings.rb +15 -0
  1486. data/spec/lib/puppet_spec/verbose.rb +9 -0
  1487. data/spec/monkey_patches/alias_should_to_must.rb +21 -0
  1488. data/spec/shared_behaviours/all_parsedfile_providers.rb +21 -0
  1489. data/spec/shared_behaviours/an_indirector_face.rb +6 -0
  1490. data/spec/shared_behaviours/documentation_on_faces.rb +263 -0
  1491. data/spec/shared_behaviours/file_server_terminus.rb +41 -0
  1492. data/spec/shared_behaviours/file_serving.rb +75 -0
  1493. data/spec/shared_behaviours/file_serving_model.rb +72 -0
  1494. data/spec/shared_behaviours/memory_terminus.rb +28 -0
  1495. data/spec/shared_behaviours/path_parameters.rb +160 -0
  1496. data/spec/shared_behaviours/store_configs_terminus.rb +21 -0
  1497. data/spec/shared_behaviours/things_that_declare_options.rb +262 -0
  1498. data/spec/shared_contexts/platform.rb +52 -0
  1499. data/spec/spec_helper.rb +193 -0
  1500. data/spec/unit/agent/disabler_spec.rb +64 -0
  1501. data/spec/unit/agent/locker_spec.rb +100 -0
  1502. data/spec/unit/agent_spec.rb +327 -0
  1503. data/spec/unit/application/agent_spec.rb +656 -0
  1504. data/spec/unit/application/apply_spec.rb +455 -0
  1505. data/spec/unit/application/cert_spec.rb +220 -0
  1506. data/spec/unit/application/certificate_spec.rb +22 -0
  1507. data/spec/unit/application/config_spec.rb +9 -0
  1508. data/spec/unit/application/describe_spec.rb +79 -0
  1509. data/spec/unit/application/device_spec.rb +415 -0
  1510. data/spec/unit/application/doc_spec.rb +333 -0
  1511. data/spec/unit/application/face_base_spec.rb +408 -0
  1512. data/spec/unit/application/facts_spec.rb +32 -0
  1513. data/spec/unit/application/filebucket_spec.rb +207 -0
  1514. data/spec/unit/application/indirection_base_spec.rb +44 -0
  1515. data/spec/unit/application/inspect_spec.rb +285 -0
  1516. data/spec/unit/application/kick_spec.rb +296 -0
  1517. data/spec/unit/application/master_spec.rb +355 -0
  1518. data/spec/unit/application/queue_spec.rb +168 -0
  1519. data/spec/unit/application/resource_spec.rb +214 -0
  1520. data/spec/unit/application/secret_agent_spec.rb +34 -0
  1521. data/spec/unit/application_spec.rb +645 -0
  1522. data/spec/unit/configurer/downloader_spec.rb +210 -0
  1523. data/spec/unit/configurer/fact_handler_spec.rb +89 -0
  1524. data/spec/unit/configurer/plugin_handler_spec.rb +42 -0
  1525. data/spec/unit/configurer_spec.rb +655 -0
  1526. data/spec/unit/confine/exists_spec.rb +80 -0
  1527. data/spec/unit/confine/false_spec.rb +52 -0
  1528. data/spec/unit/confine/feature_spec.rb +57 -0
  1529. data/spec/unit/confine/true_spec.rb +52 -0
  1530. data/spec/unit/confine/variable_spec.rb +106 -0
  1531. data/spec/unit/confine_collection_spec.rb +133 -0
  1532. data/spec/unit/confine_spec.rb +77 -0
  1533. data/spec/unit/confiner_spec.rb +62 -0
  1534. data/spec/unit/context/trusted_information_spec.rb +124 -0
  1535. data/spec/unit/context_spec.rb +74 -0
  1536. data/spec/unit/daemon_spec.rb +255 -0
  1537. data/spec/unit/data_binding_spec.rb +11 -0
  1538. data/spec/unit/defaults_spec.rb +44 -0
  1539. data/spec/unit/dsl/resource_api_spec.rb +180 -0
  1540. data/spec/unit/dsl/resource_type_api_spec.rb +53 -0
  1541. data/spec/unit/environments_spec.rb +126 -0
  1542. data/spec/unit/face/catalog_spec.rb +7 -0
  1543. data/spec/unit/face/certificate_request_spec.rb +7 -0
  1544. data/spec/unit/face/certificate_revocation_list_spec.rb +7 -0
  1545. data/spec/unit/face/certificate_spec.rb +223 -0
  1546. data/spec/unit/face/config_spec.rb +46 -0
  1547. data/spec/unit/face/facts_spec.rb +23 -0
  1548. data/spec/unit/face/file_spec.rb +12 -0
  1549. data/spec/unit/face/help_spec.rb +144 -0
  1550. data/spec/unit/face/instrumentation_data_spec.rb +7 -0
  1551. data/spec/unit/face/instrumentation_listener_spec.rb +38 -0
  1552. data/spec/unit/face/instrumentation_probe_spec.rb +21 -0
  1553. data/spec/unit/face/key_spec.rb +7 -0
  1554. data/spec/unit/face/module/build_spec.rb +69 -0
  1555. data/spec/unit/face/module/install_spec.rb +113 -0
  1556. data/spec/unit/face/module/list_spec.rb +195 -0
  1557. data/spec/unit/face/module/search_spec.rb +201 -0
  1558. data/spec/unit/face/module/uninstall_spec.rb +70 -0
  1559. data/spec/unit/face/module/upgrade_spec.rb +26 -0
  1560. data/spec/unit/face/module_spec.rb +3 -0
  1561. data/spec/unit/face/node_spec.rb +272 -0
  1562. data/spec/unit/face/parser_spec.rb +70 -0
  1563. data/spec/unit/face/plugin_spec.rb +10 -0
  1564. data/spec/unit/face/report_spec.rb +7 -0
  1565. data/spec/unit/face/resource_spec.rb +7 -0
  1566. data/spec/unit/face/resource_type_spec.rb +7 -0
  1567. data/spec/unit/face/secret_agent_spec.rb +27 -0
  1568. data/spec/unit/face_spec.rb +1 -0
  1569. data/spec/unit/file_bucket/dipper_spec.rb +170 -0
  1570. data/spec/unit/file_bucket/file_spec.rb +128 -0
  1571. data/spec/unit/file_serving/base_spec.rb +168 -0
  1572. data/spec/unit/file_serving/configuration/parser_spec.rb +186 -0
  1573. data/spec/unit/file_serving/configuration_spec.rb +231 -0
  1574. data/spec/unit/file_serving/content_spec.rb +112 -0
  1575. data/spec/unit/file_serving/fileset_spec.rb +354 -0
  1576. data/spec/unit/file_serving/metadata_spec.rb +432 -0
  1577. data/spec/unit/file_serving/mount/file_spec.rb +189 -0
  1578. data/spec/unit/file_serving/mount/modules_spec.rb +70 -0
  1579. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +73 -0
  1580. data/spec/unit/file_serving/mount/plugins_spec.rb +73 -0
  1581. data/spec/unit/file_serving/mount_spec.rb +31 -0
  1582. data/spec/unit/file_serving/terminus_helper_spec.rb +94 -0
  1583. data/spec/unit/file_serving/terminus_selector_spec.rb +58 -0
  1584. data/spec/unit/file_system/path_pattern_spec.rb +138 -0
  1585. data/spec/unit/file_system/tempfile_spec.rb +48 -0
  1586. data/spec/unit/file_system_spec.rb +508 -0
  1587. data/spec/unit/forge/errors_spec.rb +82 -0
  1588. data/spec/unit/forge/repository_spec.rb +121 -0
  1589. data/spec/unit/forge_spec.rb +60 -0
  1590. data/spec/unit/graph/key_spec.rb +41 -0
  1591. data/spec/unit/graph/rb_tree_map_spec.rb +572 -0
  1592. data/spec/unit/graph/relationship_graph_spec.rb +387 -0
  1593. data/spec/unit/graph/sequential_prioritizer_spec.rb +32 -0
  1594. data/spec/unit/graph/simple_graph.rb +721 -0
  1595. data/spec/unit/graph/title_hash_prioritizer_spec.rb +49 -0
  1596. data/spec/unit/hiera/backend/puppet_backend_spec.rb +148 -0
  1597. data/spec/unit/hiera/scope_spec.rb +89 -0
  1598. data/spec/unit/hiera_puppet_spec.rb +118 -0
  1599. data/spec/unit/indirector/active_record_spec.rb +75 -0
  1600. data/spec/unit/indirector/catalog/active_record_spec.rb +107 -0
  1601. data/spec/unit/indirector/catalog/compiler_spec.rb +253 -0
  1602. data/spec/unit/indirector/catalog/json_spec.rb +12 -0
  1603. data/spec/unit/indirector/catalog/msgpack_spec.rb +12 -0
  1604. data/spec/unit/indirector/catalog/queue_spec.rb +19 -0
  1605. data/spec/unit/indirector/catalog/rest_spec.rb +10 -0
  1606. data/spec/unit/indirector/catalog/static_compiler_spec.rb +225 -0
  1607. data/spec/unit/indirector/catalog/store_configs_spec.rb +17 -0
  1608. data/spec/unit/indirector/catalog/yaml_spec.rb +24 -0
  1609. data/spec/unit/indirector/certificate/ca_spec.rb +23 -0
  1610. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +33 -0
  1611. data/spec/unit/indirector/certificate/file_spec.rb +23 -0
  1612. data/spec/unit/indirector/certificate/rest_spec.rb +63 -0
  1613. data/spec/unit/indirector/certificate_request/ca_spec.rb +57 -0
  1614. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +33 -0
  1615. data/spec/unit/indirector/certificate_request/file_spec.rb +15 -0
  1616. data/spec/unit/indirector/certificate_request/rest_spec.rb +26 -0
  1617. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +16 -0
  1618. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +33 -0
  1619. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +17 -0
  1620. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +26 -0
  1621. data/spec/unit/indirector/certificate_status/file_spec.rb +191 -0
  1622. data/spec/unit/indirector/certificate_status/rest_spec.rb +18 -0
  1623. data/spec/unit/indirector/code_spec.rb +31 -0
  1624. data/spec/unit/indirector/data_binding/hiera_spec.rb +114 -0
  1625. data/spec/unit/indirector/data_binding/none_spec.rb +28 -0
  1626. data/spec/unit/indirector/direct_file_server_spec.rb +80 -0
  1627. data/spec/unit/indirector/envelope_spec.rb +33 -0
  1628. data/spec/unit/indirector/exec_spec.rb +58 -0
  1629. data/spec/unit/indirector/face_spec.rb +70 -0
  1630. data/spec/unit/indirector/facts/active_record_spec.rb +113 -0
  1631. data/spec/unit/indirector/facts/couch_spec.rb +102 -0
  1632. data/spec/unit/indirector/facts/facter_spec.rb +197 -0
  1633. data/spec/unit/indirector/facts/inventory_active_record_spec.rb +175 -0
  1634. data/spec/unit/indirector/facts/inventory_service_spec.rb +21 -0
  1635. data/spec/unit/indirector/facts/network_device_spec.rb +88 -0
  1636. data/spec/unit/indirector/facts/rest_spec.rb +10 -0
  1637. data/spec/unit/indirector/facts/store_configs_spec.rb +17 -0
  1638. data/spec/unit/indirector/facts/yaml_spec.rb +239 -0
  1639. data/spec/unit/indirector/file_bucket_file/file_spec.rb +285 -0
  1640. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +10 -0
  1641. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +29 -0
  1642. data/spec/unit/indirector/file_content/file_server_spec.rb +14 -0
  1643. data/spec/unit/indirector/file_content/file_spec.rb +14 -0
  1644. data/spec/unit/indirector/file_content/rest_spec.rb +14 -0
  1645. data/spec/unit/indirector/file_content/selector_spec.rb +10 -0
  1646. data/spec/unit/indirector/file_metadata/file_server_spec.rb +14 -0
  1647. data/spec/unit/indirector/file_metadata/file_spec.rb +50 -0
  1648. data/spec/unit/indirector/file_metadata/rest_spec.rb +13 -0
  1649. data/spec/unit/indirector/file_metadata/selector_spec.rb +11 -0
  1650. data/spec/unit/indirector/file_server_spec.rb +263 -0
  1651. data/spec/unit/indirector/indirection_spec.rb +875 -0
  1652. data/spec/unit/indirector/instrumentation_data/local_spec.rb +52 -0
  1653. data/spec/unit/indirector/instrumentation_data/rest_spec.rb +11 -0
  1654. data/spec/unit/indirector/instrumentation_listener/local_spec.rb +65 -0
  1655. data/spec/unit/indirector/instrumentation_listener/rest_spec.rb +11 -0
  1656. data/spec/unit/indirector/instrumentation_probe/local_spec.rb +65 -0
  1657. data/spec/unit/indirector/instrumentation_probe/rest_spec.rb +11 -0
  1658. data/spec/unit/indirector/json_spec.rb +193 -0
  1659. data/spec/unit/indirector/key/ca_spec.rb +23 -0
  1660. data/spec/unit/indirector/key/disabled_ca_spec.rb +33 -0
  1661. data/spec/unit/indirector/key/file_spec.rb +97 -0
  1662. data/spec/unit/indirector/ldap_spec.rb +137 -0
  1663. data/spec/unit/indirector/memory_spec.rb +27 -0
  1664. data/spec/unit/indirector/msgpack_spec.rb +191 -0
  1665. data/spec/unit/indirector/node/active_record_spec.rb +48 -0
  1666. data/spec/unit/indirector/node/exec_spec.rb +76 -0
  1667. data/spec/unit/indirector/node/ldap_spec.rb +441 -0
  1668. data/spec/unit/indirector/node/memory_spec.rb +18 -0
  1669. data/spec/unit/indirector/node/msgpack_spec.rb +24 -0
  1670. data/spec/unit/indirector/node/plain_spec.rb +26 -0
  1671. data/spec/unit/indirector/node/rest_spec.rb +12 -0
  1672. data/spec/unit/indirector/node/store_configs_spec.rb +17 -0
  1673. data/spec/unit/indirector/node/yaml_spec.rb +24 -0
  1674. data/spec/unit/indirector/none_spec.rb +33 -0
  1675. data/spec/unit/indirector/plain_spec.rb +27 -0
  1676. data/spec/unit/indirector/queue_spec.rb +115 -0
  1677. data/spec/unit/indirector/report/msgpack_spec.rb +28 -0
  1678. data/spec/unit/indirector/report/processor_spec.rb +100 -0
  1679. data/spec/unit/indirector/report/rest_spec.rb +67 -0
  1680. data/spec/unit/indirector/report/yaml_spec.rb +28 -0
  1681. data/spec/unit/indirector/request_spec.rb +605 -0
  1682. data/spec/unit/indirector/resource/active_record_spec.rb +166 -0
  1683. data/spec/unit/indirector/resource/ral_spec.rb +142 -0
  1684. data/spec/unit/indirector/resource/rest_spec.rb +10 -0
  1685. data/spec/unit/indirector/resource/store_configs_spec.rb +23 -0
  1686. data/spec/unit/indirector/resource_type/parser_spec.rb +249 -0
  1687. data/spec/unit/indirector/resource_type/rest_spec.rb +14 -0
  1688. data/spec/unit/indirector/rest_spec.rb +537 -0
  1689. data/spec/unit/indirector/run/local_spec.rb +21 -0
  1690. data/spec/unit/indirector/run/rest_spec.rb +10 -0
  1691. data/spec/unit/indirector/ssl_file_spec.rb +328 -0
  1692. data/spec/unit/indirector/status/local_spec.rb +11 -0
  1693. data/spec/unit/indirector/status/rest_spec.rb +10 -0
  1694. data/spec/unit/indirector/store_configs_spec.rb +8 -0
  1695. data/spec/unit/indirector/terminus_spec.rb +264 -0
  1696. data/spec/unit/indirector/yaml_spec.rb +166 -0
  1697. data/spec/unit/indirector_spec.rb +150 -0
  1698. data/spec/unit/interface/action_builder_spec.rb +217 -0
  1699. data/spec/unit/interface/action_manager_spec.rb +280 -0
  1700. data/spec/unit/interface/action_spec.rb +650 -0
  1701. data/spec/unit/interface/documentation_spec.rb +33 -0
  1702. data/spec/unit/interface/face_collection_spec.rb +200 -0
  1703. data/spec/unit/interface/option_builder_spec.rb +86 -0
  1704. data/spec/unit/interface/option_spec.rb +156 -0
  1705. data/spec/unit/interface_spec.rb +271 -0
  1706. data/spec/unit/man_spec.rb +32 -0
  1707. data/spec/unit/module_spec.rb +710 -0
  1708. data/spec/unit/module_tool/application_spec.rb +25 -0
  1709. data/spec/unit/module_tool/applications/builder_spec.rb +38 -0
  1710. data/spec/unit/module_tool/applications/checksummer_spec.rb +134 -0
  1711. data/spec/unit/module_tool/applications/installer_spec.rb +331 -0
  1712. data/spec/unit/module_tool/applications/searcher_spec.rb +38 -0
  1713. data/spec/unit/module_tool/applications/uninstaller_spec.rb +207 -0
  1714. data/spec/unit/module_tool/applications/unpacker_spec.rb +34 -0
  1715. data/spec/unit/module_tool/applications/upgrader_spec.rb +34 -0
  1716. data/spec/unit/module_tool/install_directory_spec.rb +70 -0
  1717. data/spec/unit/module_tool/metadata_spec.rb +24 -0
  1718. data/spec/unit/module_tool/tar/gnu_spec.rb +22 -0
  1719. data/spec/unit/module_tool/tar/mini_spec.rb +59 -0
  1720. data/spec/unit/module_tool/tar/solaris_spec.rb +22 -0
  1721. data/spec/unit/module_tool/tar_spec.rb +45 -0
  1722. data/spec/unit/module_tool_spec.rb +204 -0
  1723. data/spec/unit/network/auth_config_parser_spec.rb +101 -0
  1724. data/spec/unit/network/authconfig_spec.rb +109 -0
  1725. data/spec/unit/network/authentication_spec.rb +100 -0
  1726. data/spec/unit/network/authorization_spec.rb +34 -0
  1727. data/spec/unit/network/authstore_spec.rb +424 -0
  1728. data/spec/unit/network/format_handler_spec.rb +94 -0
  1729. data/spec/unit/network/format_spec.rb +197 -0
  1730. data/spec/unit/network/format_support_spec.rb +199 -0
  1731. data/spec/unit/network/formats_spec.rb +422 -0
  1732. data/spec/unit/network/http/api/v1_spec.rb +519 -0
  1733. data/spec/unit/network/http/api/v2/authorization_spec.rb +57 -0
  1734. data/spec/unit/network/http/api/v2/environments_spec.rb +42 -0
  1735. data/spec/unit/network/http/api/v2_spec.rb +14 -0
  1736. data/spec/unit/network/http/compression_spec.rb +196 -0
  1737. data/spec/unit/network/http/connection_spec.rb +271 -0
  1738. data/spec/unit/network/http/error_spec.rb +30 -0
  1739. data/spec/unit/network/http/handler_spec.rb +222 -0
  1740. data/spec/unit/network/http/rack/rest_spec.rb +316 -0
  1741. data/spec/unit/network/http/rack_spec.rb +43 -0
  1742. data/spec/unit/network/http/route_spec.rb +75 -0
  1743. data/spec/unit/network/http/webrick/rest_spec.rb +231 -0
  1744. data/spec/unit/network/http/webrick_spec.rb +271 -0
  1745. data/spec/unit/network/http_pool_spec.rb +74 -0
  1746. data/spec/unit/network/resolver_spec.rb +207 -0
  1747. data/spec/unit/network/rights_spec.rb +438 -0
  1748. data/spec/unit/network/server_spec.rb +95 -0
  1749. data/spec/unit/node/environment_spec.rb +466 -0
  1750. data/spec/unit/node/facts_spec.rb +175 -0
  1751. data/spec/unit/node_spec.rb +323 -0
  1752. data/spec/unit/other/selinux_spec.rb +99 -0
  1753. data/spec/unit/parameter/boolean_spec.rb +35 -0
  1754. data/spec/unit/parameter/package_options_spec.rb +44 -0
  1755. data/spec/unit/parameter/path_spec.rb +24 -0
  1756. data/spec/unit/parameter/value_collection_spec.rb +166 -0
  1757. data/spec/unit/parameter/value_spec.rb +87 -0
  1758. data/spec/unit/parameter_spec.rb +193 -0
  1759. data/spec/unit/parser/ast/arithmetic_operator_spec.rb +160 -0
  1760. data/spec/unit/parser/ast/astarray_spec.rb +56 -0
  1761. data/spec/unit/parser/ast/asthash_spec.rb +98 -0
  1762. data/spec/unit/parser/ast/block_expression_spec.rb +67 -0
  1763. data/spec/unit/parser/ast/boolean_operator_spec.rb +54 -0
  1764. data/spec/unit/parser/ast/casestatement_spec.rb +168 -0
  1765. data/spec/unit/parser/ast/collection_spec.rb +70 -0
  1766. data/spec/unit/parser/ast/collexpr_spec.rb +120 -0
  1767. data/spec/unit/parser/ast/comparison_operator_spec.rb +118 -0
  1768. data/spec/unit/parser/ast/definition_spec.rb +21 -0
  1769. data/spec/unit/parser/ast/function_spec.rb +92 -0
  1770. data/spec/unit/parser/ast/hostclass_spec.rb +72 -0
  1771. data/spec/unit/parser/ast/ifstatement_spec.rb +77 -0
  1772. data/spec/unit/parser/ast/in_operator_spec.rb +61 -0
  1773. data/spec/unit/parser/ast/leaf_spec.rb +511 -0
  1774. data/spec/unit/parser/ast/match_operator_spec.rb +51 -0
  1775. data/spec/unit/parser/ast/minus_spec.rb +37 -0
  1776. data/spec/unit/parser/ast/node_spec.rb +30 -0
  1777. data/spec/unit/parser/ast/nop_spec.rb +19 -0
  1778. data/spec/unit/parser/ast/not_spec.rb +31 -0
  1779. data/spec/unit/parser/ast/relationship_spec.rb +87 -0
  1780. data/spec/unit/parser/ast/resource_defaults_spec.rb +21 -0
  1781. data/spec/unit/parser/ast/resource_override_spec.rb +50 -0
  1782. data/spec/unit/parser/ast/resource_reference_spec.rb +56 -0
  1783. data/spec/unit/parser/ast/resource_spec.rb +183 -0
  1784. data/spec/unit/parser/ast/resourceparam_spec.rb +51 -0
  1785. data/spec/unit/parser/ast/selector_spec.rb +88 -0
  1786. data/spec/unit/parser/ast/vardef_spec.rb +68 -0
  1787. data/spec/unit/parser/ast_spec.rb +76 -0
  1788. data/spec/unit/parser/collector_spec.rb +438 -0
  1789. data/spec/unit/parser/compiler_spec.rb +903 -0
  1790. data/spec/unit/parser/eparser_adapter_spec.rb +407 -0
  1791. data/spec/unit/parser/files_spec.rb +149 -0
  1792. data/spec/unit/parser/functions/contain_spec.rb +185 -0
  1793. data/spec/unit/parser/functions/create_resources_spec.rb +206 -0
  1794. data/spec/unit/parser/functions/defined_spec.rb +114 -0
  1795. data/spec/unit/parser/functions/epp_spec.rb +88 -0
  1796. data/spec/unit/parser/functions/extlookup_spec.rb +102 -0
  1797. data/spec/unit/parser/functions/fail_spec.rb +28 -0
  1798. data/spec/unit/parser/functions/file_spec.rb +55 -0
  1799. data/spec/unit/parser/functions/fqdn_rand_spec.rb +46 -0
  1800. data/spec/unit/parser/functions/generate_spec.rb +132 -0
  1801. data/spec/unit/parser/functions/hiera_array_spec.rb +26 -0
  1802. data/spec/unit/parser/functions/hiera_hash_spec.rb +22 -0
  1803. data/spec/unit/parser/functions/hiera_include_spec.rb +39 -0
  1804. data/spec/unit/parser/functions/hiera_spec.rb +22 -0
  1805. data/spec/unit/parser/functions/include_spec.rb +51 -0
  1806. data/spec/unit/parser/functions/inline_epp_spec.rb +82 -0
  1807. data/spec/unit/parser/functions/inline_template_spec.rb +34 -0
  1808. data/spec/unit/parser/functions/lookup_spec.rb +146 -0
  1809. data/spec/unit/parser/functions/realize_spec.rb +53 -0
  1810. data/spec/unit/parser/functions/regsubst_spec.rb +196 -0
  1811. data/spec/unit/parser/functions/require_spec.rb +61 -0
  1812. data/spec/unit/parser/functions/search_spec.rb +23 -0
  1813. data/spec/unit/parser/functions/shellquote_spec.rb +67 -0
  1814. data/spec/unit/parser/functions/split_spec.rb +53 -0
  1815. data/spec/unit/parser/functions/sprintf_spec.rb +51 -0
  1816. data/spec/unit/parser/functions/tag_spec.rb +28 -0
  1817. data/spec/unit/parser/functions/template_spec.rb +89 -0
  1818. data/spec/unit/parser/functions/versioncmp_spec.rb +33 -0
  1819. data/spec/unit/parser/functions_spec.rb +135 -0
  1820. data/spec/unit/parser/lexer_spec.rb +868 -0
  1821. data/spec/unit/parser/methods/each_spec.rb +91 -0
  1822. data/spec/unit/parser/methods/filter_spec.rb +135 -0
  1823. data/spec/unit/parser/methods/map_spec.rb +184 -0
  1824. data/spec/unit/parser/methods/reduce_spec.rb +78 -0
  1825. data/spec/unit/parser/methods/shared.rb +45 -0
  1826. data/spec/unit/parser/methods/slice_spec.rb +135 -0
  1827. data/spec/unit/parser/parser_spec.rb +535 -0
  1828. data/spec/unit/parser/relationship_spec.rb +93 -0
  1829. data/spec/unit/parser/resource/param_spec.rb +44 -0
  1830. data/spec/unit/parser/resource_spec.rb +586 -0
  1831. data/spec/unit/parser/scope_spec.rb +661 -0
  1832. data/spec/unit/parser/templatewrapper_spec.rb +118 -0
  1833. data/spec/unit/parser/type_loader_spec.rb +225 -0
  1834. data/spec/unit/pops/adaptable_spec.rb +141 -0
  1835. data/spec/unit/pops/benchmark_spec.rb +142 -0
  1836. data/spec/unit/pops/binder/binder_spec.rb +43 -0
  1837. data/spec/unit/pops/binder/bindings_checker_spec.rb +155 -0
  1838. data/spec/unit/pops/binder/bindings_composer_spec.rb +64 -0
  1839. data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +18 -0
  1840. data/spec/unit/pops/binder/config/binder_config_spec.rb +35 -0
  1841. data/spec/unit/pops/binder/injector_spec.rb +784 -0
  1842. data/spec/unit/pops/containment_spec.rb +26 -0
  1843. data/spec/unit/pops/evaluator/access_ops_spec.rb +376 -0
  1844. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +77 -0
  1845. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +103 -0
  1846. data/spec/unit/pops/evaluator/collections_ops_spec.rb +111 -0
  1847. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +256 -0
  1848. data/spec/unit/pops/evaluator/conditionals_spec.rb +190 -0
  1849. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1045 -0
  1850. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +75 -0
  1851. data/spec/unit/pops/evaluator/logical_ops_spec.rb +90 -0
  1852. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +44 -0
  1853. data/spec/unit/pops/evaluator/variables_spec.rb +194 -0
  1854. data/spec/unit/pops/factory_rspec_helper.rb +77 -0
  1855. data/spec/unit/pops/factory_spec.rb +306 -0
  1856. data/spec/unit/pops/issues_spec.rb +26 -0
  1857. data/spec/unit/pops/label_provider_spec.rb +42 -0
  1858. data/spec/unit/pops/model/ast_transformer_spec.rb +76 -0
  1859. data/spec/unit/pops/model/model_spec.rb +37 -0
  1860. data/spec/unit/pops/parser/epp_parser_spec.rb +86 -0
  1861. data/spec/unit/pops/parser/evaluating_parser_spec.rb +90 -0
  1862. data/spec/unit/pops/parser/lexer2_spec.rb +428 -0
  1863. data/spec/unit/pops/parser/lexer_spec.rb +840 -0
  1864. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +273 -0
  1865. data/spec/unit/pops/parser/parse_calls_spec.rb +101 -0
  1866. data/spec/unit/pops/parser/parse_conditionals_spec.rb +150 -0
  1867. data/spec/unit/pops/parser/parse_containers_spec.rb +206 -0
  1868. data/spec/unit/pops/parser/parse_heredoc_spec.rb +73 -0
  1869. data/spec/unit/pops/parser/parse_resource_spec.rb +242 -0
  1870. data/spec/unit/pops/parser/parser_rspec_helper.rb +11 -0
  1871. data/spec/unit/pops/parser/parser_spec.rb +17 -0
  1872. data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +23 -0
  1873. data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +243 -0
  1874. data/spec/unit/pops/transformer/transform_calls_spec.rb +115 -0
  1875. data/spec/unit/pops/transformer/transform_conditionals_spec.rb +123 -0
  1876. data/spec/unit/pops/transformer/transform_containers_spec.rb +190 -0
  1877. data/spec/unit/pops/transformer/transform_resource_spec.rb +185 -0
  1878. data/spec/unit/pops/transformer/transformer_rspec_helper.rb +27 -0
  1879. data/spec/unit/pops/types/enumeration_spec.rb +50 -0
  1880. data/spec/unit/pops/types/type_calculator_spec.rb +1459 -0
  1881. data/spec/unit/pops/types/type_factory_spec.rb +169 -0
  1882. data/spec/unit/pops/types/type_parser_spec.rb +197 -0
  1883. data/spec/unit/pops/validator/validator_spec.rb +68 -0
  1884. data/spec/unit/pops/visitor_spec.rb +94 -0
  1885. data/spec/unit/property/boolean_spec.rb +24 -0
  1886. data/spec/unit/property/ensure_spec.rb +12 -0
  1887. data/spec/unit/property/keyvalue_spec.rb +170 -0
  1888. data/spec/unit/property/list_spec.rb +165 -0
  1889. data/spec/unit/property/ordered_list_spec.rb +63 -0
  1890. data/spec/unit/property_spec.rb +541 -0
  1891. data/spec/unit/provider/README.markdown +4 -0
  1892. data/spec/unit/provider/aixobject_spec.rb +101 -0
  1893. data/spec/unit/provider/augeas/augeas_spec.rb +897 -0
  1894. data/spec/unit/provider/cisco_spec.rb +15 -0
  1895. data/spec/unit/provider/command_spec.rb +62 -0
  1896. data/spec/unit/provider/cron/crontab_spec.rb +206 -0
  1897. data/spec/unit/provider/cron/parsed_spec.rb +321 -0
  1898. data/spec/unit/provider/exec/posix_spec.rb +211 -0
  1899. data/spec/unit/provider/exec/shell_spec.rb +53 -0
  1900. data/spec/unit/provider/exec/windows_spec.rb +107 -0
  1901. data/spec/unit/provider/exec_spec.rb +35 -0
  1902. data/spec/unit/provider/file/posix_spec.rb +232 -0
  1903. data/spec/unit/provider/file/windows_spec.rb +154 -0
  1904. data/spec/unit/provider/group/groupadd_spec.rb +76 -0
  1905. data/spec/unit/provider/group/ldap_spec.rb +101 -0
  1906. data/spec/unit/provider/group/pw_spec.rb +81 -0
  1907. data/spec/unit/provider/group/windows_adsi_spec.rb +168 -0
  1908. data/spec/unit/provider/host/parsed_spec.rb +197 -0
  1909. data/spec/unit/provider/interface/cisco_spec.rb +57 -0
  1910. data/spec/unit/provider/ldap_spec.rb +244 -0
  1911. data/spec/unit/provider/macauthorization_spec.rb +152 -0
  1912. data/spec/unit/provider/mcx/mcxcontent_spec.rb +192 -0
  1913. data/spec/unit/provider/mount/parsed_spec.rb +283 -0
  1914. data/spec/unit/provider/mount_spec.rb +165 -0
  1915. data/spec/unit/provider/naginator_spec.rb +65 -0
  1916. data/spec/unit/provider/nameservice/directoryservice_spec.rb +189 -0
  1917. data/spec/unit/provider/nameservice_spec.rb +304 -0
  1918. data/spec/unit/provider/network_device_spec.rb +152 -0
  1919. data/spec/unit/provider/package/aix_spec.rb +107 -0
  1920. data/spec/unit/provider/package/appdmg_spec.rb +42 -0
  1921. data/spec/unit/provider/package/apt_spec.rb +146 -0
  1922. data/spec/unit/provider/package/aptitude_spec.rb +45 -0
  1923. data/spec/unit/provider/package/aptrpm_spec.rb +45 -0
  1924. data/spec/unit/provider/package/dpkg_spec.rb +281 -0
  1925. data/spec/unit/provider/package/freebsd_spec.rb +54 -0
  1926. data/spec/unit/provider/package/gem_spec.rb +162 -0
  1927. data/spec/unit/provider/package/hpux_spec.rb +51 -0
  1928. data/spec/unit/provider/package/macports_spec.rb +140 -0
  1929. data/spec/unit/provider/package/msi_spec.rb +229 -0
  1930. data/spec/unit/provider/package/nim_spec.rb +250 -0
  1931. data/spec/unit/provider/package/openbsd_spec.rb +312 -0
  1932. data/spec/unit/provider/package/opkg_spec.rb +180 -0
  1933. data/spec/unit/provider/package/pacman_spec.rb +295 -0
  1934. data/spec/unit/provider/package/pip_spec.rb +247 -0
  1935. data/spec/unit/provider/package/pkg_spec.rb +255 -0
  1936. data/spec/unit/provider/package/pkgdmg_spec.rb +144 -0
  1937. data/spec/unit/provider/package/pkgin_spec.rb +178 -0
  1938. data/spec/unit/provider/package/pkgutil_spec.rb +235 -0
  1939. data/spec/unit/provider/package/portage_spec.rb +65 -0
  1940. data/spec/unit/provider/package/rpm_spec.rb +367 -0
  1941. data/spec/unit/provider/package/sun_spec.rb +114 -0
  1942. data/spec/unit/provider/package/up2date_spec.rb +24 -0
  1943. data/spec/unit/provider/package/urpmi.rb +80 -0
  1944. data/spec/unit/provider/package/windows/exe_package_spec.rb +99 -0
  1945. data/spec/unit/provider/package/windows/msi_package_spec.rb +115 -0
  1946. data/spec/unit/provider/package/windows/package_spec.rb +126 -0
  1947. data/spec/unit/provider/package/windows_spec.rb +251 -0
  1948. data/spec/unit/provider/package/yum_spec.rb +195 -0
  1949. data/spec/unit/provider/package/zypper_spec.rb +141 -0
  1950. data/spec/unit/provider/parsedfile_spec.rb +228 -0
  1951. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +1574 -0
  1952. data/spec/unit/provider/selboolean_spec.rb +36 -0
  1953. data/spec/unit/provider/selmodule-example.pp +0 -0
  1954. data/spec/unit/provider/selmodule_spec.rb +73 -0
  1955. data/spec/unit/provider/service/base_spec.rb +77 -0
  1956. data/spec/unit/provider/service/daemontools_spec.rb +171 -0
  1957. data/spec/unit/provider/service/debian_spec.rb +116 -0
  1958. data/spec/unit/provider/service/freebsd_spec.rb +75 -0
  1959. data/spec/unit/provider/service/gentoo_spec.rb +241 -0
  1960. data/spec/unit/provider/service/init_spec.rb +212 -0
  1961. data/spec/unit/provider/service/launchd_spec.rb +290 -0
  1962. data/spec/unit/provider/service/openbsd_spec.rb +125 -0
  1963. data/spec/unit/provider/service/openrc_spec.rb +225 -0
  1964. data/spec/unit/provider/service/openwrt_spec.rb +109 -0
  1965. data/spec/unit/provider/service/redhat_spec.rb +148 -0
  1966. data/spec/unit/provider/service/runit_spec.rb +145 -0
  1967. data/spec/unit/provider/service/smf_spec.rb +153 -0
  1968. data/spec/unit/provider/service/src_spec.rb +173 -0
  1969. data/spec/unit/provider/service/systemd_spec.rb +162 -0
  1970. data/spec/unit/provider/service/upstart_spec.rb +522 -0
  1971. data/spec/unit/provider/service/windows_spec.rb +183 -0
  1972. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +255 -0
  1973. data/spec/unit/provider/sshkey/parsed_spec.rb +71 -0
  1974. data/spec/unit/provider/user/aix_spec.rb +162 -0
  1975. data/spec/unit/provider/user/directoryservice_spec.rb +1063 -0
  1976. data/spec/unit/provider/user/hpux_spec.rb +52 -0
  1977. data/spec/unit/provider/user/ldap_spec.rb +289 -0
  1978. data/spec/unit/provider/user/pw_spec.rb +214 -0
  1979. data/spec/unit/provider/user/user_role_add_spec.rb +335 -0
  1980. data/spec/unit/provider/user/useradd_spec.rb +430 -0
  1981. data/spec/unit/provider/user/windows_adsi_spec.rb +173 -0
  1982. data/spec/unit/provider/vlan/cisco_spec.rb +55 -0
  1983. data/spec/unit/provider/yumrepo/inifile_spec.rb +105 -0
  1984. data/spec/unit/provider/zfs/zfs_spec.rb +106 -0
  1985. data/spec/unit/provider/zone/solaris_spec.rb +195 -0
  1986. data/spec/unit/provider/zpool/zpool_spec.rb +214 -0
  1987. data/spec/unit/provider_spec.rb +714 -0
  1988. data/spec/unit/puppet_spec.rb +41 -0
  1989. data/spec/unit/rails/host_spec.rb +162 -0
  1990. data/spec/unit/rails/param_value_spec.rb +46 -0
  1991. data/spec/unit/rails/resource_spec.rb +115 -0
  1992. data/spec/unit/rails_spec.rb +244 -0
  1993. data/spec/unit/relationship_spec.rb +228 -0
  1994. data/spec/unit/reports/http_spec.rb +100 -0
  1995. data/spec/unit/reports/rrdgraph_spec.rb +29 -0
  1996. data/spec/unit/reports/store_spec.rb +76 -0
  1997. data/spec/unit/reports/tagmail_spec.rb +218 -0
  1998. data/spec/unit/reports_spec.rb +60 -0
  1999. data/spec/unit/resource/catalog_spec.rb +973 -0
  2000. data/spec/unit/resource/status_spec.rb +220 -0
  2001. data/spec/unit/resource/type_collection_helper_spec.rb +24 -0
  2002. data/spec/unit/resource/type_collection_spec.rb +417 -0
  2003. data/spec/unit/resource/type_spec.rb +777 -0
  2004. data/spec/unit/resource_spec.rb +979 -0
  2005. data/spec/unit/run_spec.rb +175 -0
  2006. data/spec/unit/scheduler/job_spec.rb +79 -0
  2007. data/spec/unit/scheduler/scheduler_spec.rb +116 -0
  2008. data/spec/unit/scheduler/splay_job_spec.rb +35 -0
  2009. data/spec/unit/semver_spec.rb +303 -0
  2010. data/spec/unit/settings/autosign_setting_spec.rb +103 -0
  2011. data/spec/unit/settings/config_file_spec.rb +153 -0
  2012. data/spec/unit/settings/directory_setting_spec.rb +32 -0
  2013. data/spec/unit/settings/duration_setting_spec.rb +45 -0
  2014. data/spec/unit/settings/enum_setting_spec.rb +27 -0
  2015. data/spec/unit/settings/file_setting_spec.rb +297 -0
  2016. data/spec/unit/settings/ini_file_spec.rb +184 -0
  2017. data/spec/unit/settings/path_setting_spec.rb +30 -0
  2018. data/spec/unit/settings/priority_setting_spec.rb +66 -0
  2019. data/spec/unit/settings/string_setting_spec.rb +75 -0
  2020. data/spec/unit/settings/terminus_setting_spec.rb +28 -0
  2021. data/spec/unit/settings/value_translator_spec.rb +77 -0
  2022. data/spec/unit/settings_spec.rb +1735 -0
  2023. data/spec/unit/ssl/base_spec.rb +85 -0
  2024. data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +30 -0
  2025. data/spec/unit/ssl/certificate_authority/interface_spec.rb +366 -0
  2026. data/spec/unit/ssl/certificate_authority_spec.rb +1105 -0
  2027. data/spec/unit/ssl/certificate_factory_spec.rb +168 -0
  2028. data/spec/unit/ssl/certificate_request_attributes_spec.rb +61 -0
  2029. data/spec/unit/ssl/certificate_request_spec.rb +369 -0
  2030. data/spec/unit/ssl/certificate_revocation_list_spec.rb +196 -0
  2031. data/spec/unit/ssl/certificate_spec.rb +193 -0
  2032. data/spec/unit/ssl/configuration_spec.rb +134 -0
  2033. data/spec/unit/ssl/digest_spec.rb +35 -0
  2034. data/spec/unit/ssl/host_spec.rb +940 -0
  2035. data/spec/unit/ssl/inventory_spec.rb +137 -0
  2036. data/spec/unit/ssl/key_spec.rb +191 -0
  2037. data/spec/unit/ssl/oids_spec.rb +48 -0
  2038. data/spec/unit/ssl/validator_spec.rb +354 -0
  2039. data/spec/unit/status_spec.rb +51 -0
  2040. data/spec/unit/transaction/additional_resource_generator_spec.rb +411 -0
  2041. data/spec/unit/transaction/event_manager_spec.rb +310 -0
  2042. data/spec/unit/transaction/event_spec.rb +192 -0
  2043. data/spec/unit/transaction/report_spec.rb +497 -0
  2044. data/spec/unit/transaction/resource_harness_spec.rb +478 -0
  2045. data/spec/unit/transaction_spec.rb +671 -0
  2046. data/spec/unit/type/README.markdown +4 -0
  2047. data/spec/unit/type/augeas_spec.rb +119 -0
  2048. data/spec/unit/type/component_spec.rb +53 -0
  2049. data/spec/unit/type/computer_spec.rb +80 -0
  2050. data/spec/unit/type/cron_spec.rb +544 -0
  2051. data/spec/unit/type/exec_spec.rb +763 -0
  2052. data/spec/unit/type/file/checksum_spec.rb +73 -0
  2053. data/spec/unit/type/file/content_spec.rb +463 -0
  2054. data/spec/unit/type/file/ctime_spec.rb +34 -0
  2055. data/spec/unit/type/file/ensure_spec.rb +123 -0
  2056. data/spec/unit/type/file/group_spec.rb +60 -0
  2057. data/spec/unit/type/file/mode_spec.rb +195 -0
  2058. data/spec/unit/type/file/mtime_spec.rb +34 -0
  2059. data/spec/unit/type/file/owner_spec.rb +58 -0
  2060. data/spec/unit/type/file/selinux_spec.rb +89 -0
  2061. data/spec/unit/type/file/source_spec.rb +555 -0
  2062. data/spec/unit/type/file/type_spec.rb +19 -0
  2063. data/spec/unit/type/file_spec.rb +1502 -0
  2064. data/spec/unit/type/filebucket_spec.rb +103 -0
  2065. data/spec/unit/type/group_spec.rb +84 -0
  2066. data/spec/unit/type/host_spec.rb +665 -0
  2067. data/spec/unit/type/interface_spec.rb +97 -0
  2068. data/spec/unit/type/k5login_spec.rb +115 -0
  2069. data/spec/unit/type/macauthorization_spec.rb +110 -0
  2070. data/spec/unit/type/mailalias_spec.rb +21 -0
  2071. data/spec/unit/type/maillist_spec.rb +41 -0
  2072. data/spec/unit/type/mcx_spec.rb +79 -0
  2073. data/spec/unit/type/mount_spec.rb +592 -0
  2074. data/spec/unit/type/nagios_spec.rb +284 -0
  2075. data/spec/unit/type/noop_metaparam_spec.rb +38 -0
  2076. data/spec/unit/type/package/package_settings_spec.rb +135 -0
  2077. data/spec/unit/type/package_spec.rb +304 -0
  2078. data/spec/unit/type/resources_spec.rb +284 -0
  2079. data/spec/unit/type/schedule_spec.rb +607 -0
  2080. data/spec/unit/type/scheduled_task_spec.rb +103 -0
  2081. data/spec/unit/type/selboolean_spec.rb +44 -0
  2082. data/spec/unit/type/selmodule_spec.rb +17 -0
  2083. data/spec/unit/type/service_spec.rb +261 -0
  2084. data/spec/unit/type/ssh_authorized_key_spec.rb +258 -0
  2085. data/spec/unit/type/sshkey_spec.rb +77 -0
  2086. data/spec/unit/type/stage_spec.rb +8 -0
  2087. data/spec/unit/type/tidy_spec.rb +433 -0
  2088. data/spec/unit/type/user_spec.rb +419 -0
  2089. data/spec/unit/type/vlan_spec.rb +44 -0
  2090. data/spec/unit/type/whit_spec.rb +10 -0
  2091. data/spec/unit/type/yumrepo_spec.rb +78 -0
  2092. data/spec/unit/type/zfs_spec.rb +46 -0
  2093. data/spec/unit/type/zone_spec.rb +129 -0
  2094. data/spec/unit/type/zpool_spec.rb +109 -0
  2095. data/spec/unit/type_spec.rb +1094 -0
  2096. data/spec/unit/util/adsi_spec.rb +437 -0
  2097. data/spec/unit/util/autoload_spec.rb +256 -0
  2098. data/spec/unit/util/backups_spec.rb +134 -0
  2099. data/spec/unit/util/cache_accumulator_spec.rb +74 -0
  2100. data/spec/unit/util/cacher_spec.rb +107 -0
  2101. data/spec/unit/util/checksums_spec.rb +173 -0
  2102. data/spec/unit/util/colors_spec.rb +83 -0
  2103. data/spec/unit/util/command_line_spec.rb +188 -0
  2104. data/spec/unit/util/command_line_utils/puppet_option_parser_spec.rb +129 -0
  2105. data/spec/unit/util/constant_inflector_spec.rb +56 -0
  2106. data/spec/unit/util/diff_spec.rb +31 -0
  2107. data/spec/unit/util/docs_spec.rb +100 -0
  2108. data/spec/unit/util/errors_spec.rb +37 -0
  2109. data/spec/unit/util/execution_spec.rb +637 -0
  2110. data/spec/unit/util/execution_stub_spec.rb +39 -0
  2111. data/spec/unit/util/feature_spec.rb +92 -0
  2112. data/spec/unit/util/filetype_spec.rb +211 -0
  2113. data/spec/unit/util/http_proxy_spec.rb +83 -0
  2114. data/spec/unit/util/inline_docs_spec.rb +31 -0
  2115. data/spec/unit/util/instrumentation/data_spec.rb +46 -0
  2116. data/spec/unit/util/instrumentation/indirection_probe_spec.rb +21 -0
  2117. data/spec/unit/util/instrumentation/instrumentable_spec.rb +186 -0
  2118. data/spec/unit/util/instrumentation/listener_spec.rb +101 -0
  2119. data/spec/unit/util/instrumentation/listeners/log_spec.rb +34 -0
  2120. data/spec/unit/util/instrumentation/listeners/performance_spec.rb +36 -0
  2121. data/spec/unit/util/instrumentation_spec.rb +181 -0
  2122. data/spec/unit/util/json_lockfile_spec.rb +50 -0
  2123. data/spec/unit/util/ldap/connection_spec.rb +161 -0
  2124. data/spec/unit/util/ldap/generator_spec.rb +50 -0
  2125. data/spec/unit/util/ldap/manager_spec.rb +641 -0
  2126. data/spec/unit/util/lockfile_spec.rb +118 -0
  2127. data/spec/unit/util/log/destinations_spec.rb +183 -0
  2128. data/spec/unit/util/log/rate_limited_logger_spec.rb +51 -0
  2129. data/spec/unit/util/log_spec.rb +378 -0
  2130. data/spec/unit/util/logging_spec.rb +151 -0
  2131. data/spec/unit/util/metric_spec.rb +98 -0
  2132. data/spec/unit/util/monkey_patches/lines_spec.rb +83 -0
  2133. data/spec/unit/util/monkey_patches_spec.rb +328 -0
  2134. data/spec/unit/util/nagios_maker_spec.rb +122 -0
  2135. data/spec/unit/util/network_device/cisco/device_spec.rb +445 -0
  2136. data/spec/unit/util/network_device/cisco/facts_spec.rb +64 -0
  2137. data/spec/unit/util/network_device/cisco/interface_spec.rb +88 -0
  2138. data/spec/unit/util/network_device/config_spec.rb +86 -0
  2139. data/spec/unit/util/network_device/ipcalc_spec.rb +62 -0
  2140. data/spec/unit/util/network_device/transport/base_spec.rb +41 -0
  2141. data/spec/unit/util/network_device/transport/ssh_spec.rb +218 -0
  2142. data/spec/unit/util/network_device/transport/telnet_spec.rb +84 -0
  2143. data/spec/unit/util/network_device_spec.rb +50 -0
  2144. data/spec/unit/util/package_spec.rb +20 -0
  2145. data/spec/unit/util/pidlock_spec.rb +182 -0
  2146. data/spec/unit/util/posix_spec.rb +251 -0
  2147. data/spec/unit/util/profiler/logging_spec.rb +81 -0
  2148. data/spec/unit/util/profiler/none_spec.rb +12 -0
  2149. data/spec/unit/util/profiler/object_counts_spec.rb +14 -0
  2150. data/spec/unit/util/profiler/wall_clock_spec.rb +13 -0
  2151. data/spec/unit/util/pson_spec.rb +71 -0
  2152. data/spec/unit/util/queue/stomp_spec.rb +137 -0
  2153. data/spec/unit/util/queue_spec.rb +95 -0
  2154. data/spec/unit/util/rdoc/parser_spec.rb +599 -0
  2155. data/spec/unit/util/rdoc_spec.rb +141 -0
  2156. data/spec/unit/util/reference_serializer_spec.rb +51 -0
  2157. data/spec/unit/util/reference_spec.rb +39 -0
  2158. data/spec/unit/util/resource_template_spec.rb +57 -0
  2159. data/spec/unit/util/retryaction_spec.rb +62 -0
  2160. data/spec/unit/util/rubygems_spec.rb +68 -0
  2161. data/spec/unit/util/run_mode_spec.rb +145 -0
  2162. data/spec/unit/util/selinux_spec.rb +289 -0
  2163. data/spec/unit/util/ssl_spec.rb +92 -0
  2164. data/spec/unit/util/storage_spec.rb +210 -0
  2165. data/spec/unit/util/suidmanager_spec.rb +297 -0
  2166. data/spec/unit/util/symbolic_file_mode_spec.rb +182 -0
  2167. data/spec/unit/util/tag_set_spec.rb +46 -0
  2168. data/spec/unit/util/tagging_spec.rb +131 -0
  2169. data/spec/unit/util/terminal_spec.rb +42 -0
  2170. data/spec/unit/util/user_attr_spec.rb +46 -0
  2171. data/spec/unit/util/warnings_spec.rb +38 -0
  2172. data/spec/unit/util/watched_file_spec.rb +52 -0
  2173. data/spec/unit/util/watcher/periodic_watcher_spec.rb +52 -0
  2174. data/spec/unit/util/watcher_spec.rb +56 -0
  2175. data/spec/unit/util/windows/access_control_entry_spec.rb +67 -0
  2176. data/spec/unit/util/windows/access_control_list_spec.rb +133 -0
  2177. data/spec/unit/util/windows/registry_spec.rb +140 -0
  2178. data/spec/unit/util/windows/root_certs_spec.rb +17 -0
  2179. data/spec/unit/util/windows/security_descriptor_spec.rb +117 -0
  2180. data/spec/unit/util/windows/sid_spec.rb +169 -0
  2181. data/spec/unit/util/windows/string_spec.rb +54 -0
  2182. data/spec/unit/util/yaml_spec.rb +55 -0
  2183. data/spec/unit/util/zaml_spec.rb +304 -0
  2184. data/spec/unit/util_spec.rb +577 -0
  2185. data/spec/unit/version_spec.rb +42 -0
  2186. data/spec/watchr.rb +142 -0
  2187. data/tasks/benchmark.rake +109 -0
  2188. data/tasks/ci.rake +29 -0
  2189. data/tasks/manpages.rake +84 -0
  2190. data/tasks/parallel.rake +408 -0
  2191. data/tasks/parser.rake +5 -0
  2192. data/tasks/yard.rake +59 -0
  2193. metadata +3515 -0
@@ -0,0 +1,1735 @@
1
+ #! /usr/bin/env ruby
2
+ require 'spec_helper'
3
+ require 'ostruct'
4
+ require 'puppet/settings/errors'
5
+
6
+ describe Puppet::Settings do
7
+ include PuppetSpec::Files
8
+
9
+ let(:main_config_file_default_location) do
10
+ File.join(Puppet::Util::RunMode[:master].conf_dir, "puppet.conf")
11
+ end
12
+
13
+ let(:user_config_file_default_location) do
14
+ File.join(Puppet::Util::RunMode[:user].conf_dir, "puppet.conf")
15
+ end
16
+
17
+ describe "when specifying defaults" do
18
+ before do
19
+ @settings = Puppet::Settings.new
20
+ end
21
+
22
+ it "should start with no defined parameters" do
23
+ @settings.params.length.should == 0
24
+ end
25
+
26
+ it "should not allow specification of default values associated with a section as an array" do
27
+ expect {
28
+ @settings.define_settings(:section, :myvalue => ["defaultval", "my description"])
29
+ }.to raise_error
30
+ end
31
+
32
+ it "should not allow duplicate parameter specifications" do
33
+ @settings.define_settings(:section, :myvalue => { :default => "a", :desc => "b" })
34
+ lambda { @settings.define_settings(:section, :myvalue => { :default => "c", :desc => "d" }) }.should raise_error(ArgumentError)
35
+ end
36
+
37
+ it "should allow specification of default values associated with a section as a hash" do
38
+ @settings.define_settings(:section, :myvalue => {:default => "defaultval", :desc => "my description"})
39
+ end
40
+
41
+ it "should consider defined parameters to be valid" do
42
+ @settings.define_settings(:section, :myvalue => { :default => "defaultval", :desc => "my description" })
43
+ @settings.valid?(:myvalue).should be_true
44
+ end
45
+
46
+ it "should require a description when defaults are specified with a hash" do
47
+ lambda { @settings.define_settings(:section, :myvalue => {:default => "a value"}) }.should raise_error(ArgumentError)
48
+ end
49
+
50
+ it "should support specifying owner, group, and mode when specifying files" do
51
+ @settings.define_settings(:section, :myvalue => {:type => :file, :default => "/some/file", :owner => "service", :mode => "boo", :group => "service", :desc => "whatever"})
52
+ end
53
+
54
+ it "should support specifying a short name" do
55
+ @settings.define_settings(:section, :myvalue => {:default => "w", :desc => "b", :short => "m"})
56
+ end
57
+
58
+ it "should support specifying the setting type" do
59
+ @settings.define_settings(:section, :myvalue => {:default => "/w", :desc => "b", :type => :string})
60
+ @settings.setting(:myvalue).should be_instance_of(Puppet::Settings::StringSetting)
61
+ end
62
+
63
+ it "should fail if an invalid setting type is specified" do
64
+ lambda { @settings.define_settings(:section, :myvalue => {:default => "w", :desc => "b", :type => :foo}) }.should raise_error(ArgumentError)
65
+ end
66
+
67
+ it "should fail when short names conflict" do
68
+ @settings.define_settings(:section, :myvalue => {:default => "w", :desc => "b", :short => "m"})
69
+ lambda { @settings.define_settings(:section, :myvalue => {:default => "w", :desc => "b", :short => "m"}) }.should raise_error(ArgumentError)
70
+ end
71
+ end
72
+
73
+
74
+ describe "when initializing application defaults do" do
75
+ let(:default_values) do
76
+ values = {}
77
+ PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.keys.each do |key|
78
+ values[key] = 'default value'
79
+ end
80
+ values
81
+ end
82
+
83
+ before do
84
+ @settings = Puppet::Settings.new
85
+ @settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
86
+ end
87
+
88
+ it "should fail if the app defaults hash is missing any required values" do
89
+ incomplete_default_values = default_values.reject { |key, _| key == :confdir }
90
+ expect {
91
+ @settings.initialize_app_defaults(default_values.reject { |key, _| key == :confdir })
92
+ }.to raise_error(Puppet::Settings::SettingsError)
93
+ end
94
+
95
+ # ultimately I'd like to stop treating "run_mode" as a normal setting, because it has so many special
96
+ # case behaviors / uses. However, until that time... we need to make sure that our private run_mode=
97
+ # setter method gets properly called during app initialization.
98
+ it "sets the preferred run mode when initializing the app defaults" do
99
+ @settings.initialize_app_defaults(default_values.merge(:run_mode => :master))
100
+
101
+ @settings.preferred_run_mode.should == :master
102
+ end
103
+ end
104
+
105
+ describe "#call_hooks_deferred_to_application_initialization" do
106
+ let(:good_default) { "yay" }
107
+ let(:bad_default) { "$doesntexist" }
108
+ before(:each) do
109
+ @settings = Puppet::Settings.new
110
+ end
111
+
112
+ describe "when ignoring dependency interpolation errors" do
113
+ let(:options) { {:ignore_interpolation_dependency_errors => true} }
114
+
115
+ describe "if interpolation error" do
116
+ it "should not raise an error" do
117
+ hook_values = []
118
+ @settings.define_settings(:section, :badhook => {:default => bad_default, :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| hook_values << v }})
119
+ expect do
120
+ @settings.send(:call_hooks_deferred_to_application_initialization, options)
121
+ end.to_not raise_error
122
+ end
123
+ end
124
+ describe "if no interpolation error" do
125
+ it "should not raise an error" do
126
+ hook_values = []
127
+ @settings.define_settings(:section, :goodhook => {:default => good_default, :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| hook_values << v }})
128
+ expect do
129
+ @settings.send(:call_hooks_deferred_to_application_initialization, options)
130
+ end.to_not raise_error
131
+ end
132
+ end
133
+ end
134
+
135
+ describe "when not ignoring dependency interpolation errors" do
136
+ [ {}, {:ignore_interpolation_dependency_errors => false}].each do |options|
137
+ describe "if interpolation error" do
138
+ it "should raise an error" do
139
+ hook_values = []
140
+ @settings.define_settings(
141
+ :section,
142
+ :badhook => {
143
+ :default => bad_default,
144
+ :desc => "boo",
145
+ :call_hook => :on_initialize_and_write,
146
+ :hook => lambda { |v| hook_values << v }
147
+ }
148
+ )
149
+ expect do
150
+ @settings.send(:call_hooks_deferred_to_application_initialization, options)
151
+ end.to raise_error(Puppet::Settings::InterpolationError)
152
+ end
153
+ it "should contain the setting name in error message" do
154
+ hook_values = []
155
+ @settings.define_settings(
156
+ :section,
157
+ :badhook => {
158
+ :default => bad_default,
159
+ :desc => "boo",
160
+ :call_hook => :on_initialize_and_write,
161
+ :hook => lambda { |v| hook_values << v }
162
+ }
163
+ )
164
+ expect do
165
+ @settings.send(:call_hooks_deferred_to_application_initialization, options)
166
+ end.to raise_error(Puppet::Settings::InterpolationError, /badhook/)
167
+ end
168
+ end
169
+ describe "if no interpolation error" do
170
+ it "should not raise an error" do
171
+ hook_values = []
172
+ @settings.define_settings(
173
+ :section,
174
+ :goodhook => {
175
+ :default => good_default,
176
+ :desc => "boo",
177
+ :call_hook => :on_initialize_and_write,
178
+ :hook => lambda { |v| hook_values << v }
179
+ }
180
+ )
181
+ expect do
182
+ @settings.send(:call_hooks_deferred_to_application_initialization, options)
183
+ end.to_not raise_error
184
+ end
185
+ end
186
+ end
187
+ end
188
+ end
189
+
190
+ describe "when setting values" do
191
+ before do
192
+ @settings = Puppet::Settings.new
193
+ @settings.define_settings :main, :myval => { :default => "val", :desc => "desc" }
194
+ @settings.define_settings :main, :bool => { :type => :boolean, :default => true, :desc => "desc" }
195
+ end
196
+
197
+ it "should provide a method for setting values from other objects" do
198
+ @settings[:myval] = "something else"
199
+ @settings[:myval].should == "something else"
200
+ end
201
+
202
+ it "should support a getopt-specific mechanism for setting values" do
203
+ @settings.handlearg("--myval", "newval")
204
+ @settings[:myval].should == "newval"
205
+ end
206
+
207
+ it "should support a getopt-specific mechanism for turning booleans off" do
208
+ @settings.override_default(:bool, true)
209
+ @settings.handlearg("--no-bool", "")
210
+ @settings[:bool].should == false
211
+ end
212
+
213
+ it "should support a getopt-specific mechanism for turning booleans on" do
214
+ # Turn it off first
215
+ @settings.override_default(:bool, false)
216
+ @settings.handlearg("--bool", "")
217
+ @settings[:bool].should == true
218
+ end
219
+
220
+ it "should consider a cli setting with no argument to be a boolean" do
221
+ # Turn it off first
222
+ @settings.override_default(:bool, false)
223
+ @settings.handlearg("--bool")
224
+ @settings[:bool].should == true
225
+ end
226
+
227
+ it "should consider a cli setting with an empty string as an argument to be an empty argument, if the setting itself is not a boolean" do
228
+ @settings.override_default(:myval, "bob")
229
+ @settings.handlearg("--myval", "")
230
+ @settings[:myval].should == ""
231
+ end
232
+
233
+ it "should consider a cli setting with a boolean as an argument to be a boolean" do
234
+ # Turn it off first
235
+ @settings.override_default(:bool, false)
236
+ @settings.handlearg("--bool", "true")
237
+ @settings[:bool].should == true
238
+ end
239
+
240
+ it "should not consider a cli setting of a non boolean with a boolean as an argument to be a boolean" do
241
+ @settings.override_default(:myval, "bob")
242
+ @settings.handlearg("--no-myval", "")
243
+ @settings[:myval].should == ""
244
+ end
245
+
246
+ it "should flag string settings from the CLI" do
247
+ @settings.handlearg("--myval", "12")
248
+ @settings.set_by_cli?(:myval).should be_true
249
+ end
250
+
251
+ it "should flag bool settings from the CLI" do
252
+ @settings.handlearg("--bool")
253
+ @settings.set_by_cli?(:bool).should be_true
254
+ end
255
+
256
+ it "should not flag settings memory as from CLI" do
257
+ @settings[:myval] = "12"
258
+ @settings.set_by_cli?(:myval).should be_false
259
+ end
260
+
261
+ describe "setbycli" do
262
+ it "should generate a deprecation warning" do
263
+ Puppet.expects(:deprecation_warning).at_least(1)
264
+ @settings.setting(:myval).setbycli = true
265
+ end
266
+ it "should set the value" do
267
+ @settings[:myval] = "blah"
268
+ @settings.setting(:myval).setbycli = true
269
+ @settings.set_by_cli?(:myval).should be_true
270
+ end
271
+ it "should raise error if trying to unset value" do
272
+ @settings.handlearg("--myval", "blah")
273
+ expect do
274
+ @settings.setting(:myval).setbycli = nil
275
+ end.to raise_error(ArgumentError, /unset/)
276
+ end
277
+ end
278
+
279
+ it "should clear the cache when setting getopt-specific values" do
280
+ @settings.define_settings :mysection,
281
+ :one => { :default => "whah", :desc => "yay" },
282
+ :two => { :default => "$one yay", :desc => "bah" }
283
+ @settings.expects(:unsafe_flush_cache)
284
+ @settings[:two].should == "whah yay"
285
+ @settings.handlearg("--one", "else")
286
+ @settings[:two].should == "else yay"
287
+ end
288
+
289
+ it "should clear the cache when the preferred_run_mode is changed" do
290
+ @settings.expects(:flush_cache)
291
+ @settings.preferred_run_mode = :master
292
+ end
293
+
294
+ it "should not clear other values when setting getopt-specific values" do
295
+ @settings[:myval] = "yay"
296
+ @settings.handlearg("--no-bool", "")
297
+ @settings[:myval].should == "yay"
298
+ end
299
+
300
+ it "should clear the list of used sections" do
301
+ @settings.expects(:clearused)
302
+ @settings[:myval] = "yay"
303
+ end
304
+
305
+ describe "call_hook" do
306
+ Puppet::Settings::StringSetting.available_call_hook_values.each do |val|
307
+ describe "when :#{val}" do
308
+ describe "and definition invalid" do
309
+ it "should raise error if no hook defined" do
310
+ expect do
311
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => val})
312
+ end.to raise_error(ArgumentError, /no :hook/)
313
+ end
314
+ it "should include the setting name in the error message" do
315
+ expect do
316
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => val})
317
+ end.to raise_error(ArgumentError, /for :hooker/)
318
+ end
319
+ end
320
+ describe "and definition valid" do
321
+ before(:each) do
322
+ hook_values = []
323
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => val, :hook => lambda { |v| hook_values << v }})
324
+ end
325
+
326
+ it "should call the hook when value written" do
327
+ @settings.setting(:hooker).expects(:handle).with("something").once
328
+ @settings[:hooker] = "something"
329
+ end
330
+ end
331
+ end
332
+ end
333
+
334
+ it "should have a default value of :on_write_only" do
335
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
336
+ @settings.setting(:hooker).call_hook.should == :on_write_only
337
+ end
338
+
339
+ describe "when nil" do
340
+ it "should generate a warning" do
341
+ Puppet.expects(:warning)
342
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => nil, :hook => lambda { |v| hook_values << v }})
343
+ end
344
+ it "should use default" do
345
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => nil, :hook => lambda { |v| hook_values << v }})
346
+ @settings.setting(:hooker).call_hook.should == :on_write_only
347
+ end
348
+ end
349
+
350
+ describe "when invalid" do
351
+ it "should raise an error" do
352
+ expect do
353
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => :foo, :hook => lambda { |v| hook_values << v }})
354
+ end.to raise_error(ArgumentError, /invalid.*call_hook/i)
355
+ end
356
+ end
357
+
358
+ describe "when :on_define_and_write" do
359
+ it "should call the hook at definition" do
360
+ hook_values = []
361
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| hook_values << v }})
362
+ @settings.setting(:hooker).call_hook.should == :on_define_and_write
363
+ hook_values.should == %w{yay}
364
+ end
365
+ end
366
+
367
+ describe "when :on_initialize_and_write" do
368
+ before(:each) do
369
+ @hook_values = []
370
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| @hook_values << v }})
371
+ end
372
+
373
+ it "should not call the hook at definition" do
374
+ @hook_values.should == []
375
+ @hook_values.should_not == %w{yay}
376
+ end
377
+
378
+ it "should call the hook at initialization" do
379
+ app_defaults = {}
380
+ Puppet::Settings::REQUIRED_APP_SETTINGS.each do |key|
381
+ app_defaults[key] = "foo"
382
+ end
383
+ app_defaults[:run_mode] = :user
384
+ @settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
385
+
386
+ @settings.setting(:hooker).expects(:handle).with("yay").once
387
+
388
+ @settings.initialize_app_defaults app_defaults
389
+ end
390
+ end
391
+ end
392
+
393
+ describe "call_on_define" do
394
+ [true, false].each do |val|
395
+ describe "to #{val}" do
396
+ it "should generate a deprecation warning" do
397
+ Puppet.expects(:deprecation_warning)
398
+ values = []
399
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_on_define => val, :hook => lambda { |v| values << v }})
400
+ end
401
+
402
+ it "should should set call_hook" do
403
+ values = []
404
+ name = "hooker_#{val}".to_sym
405
+ @settings.define_settings(:section, name => {:default => "yay", :desc => "boo", :call_on_define => val, :hook => lambda { |v| values << v }})
406
+
407
+ @settings.setting(name).call_hook.should == :on_define_and_write if val
408
+ @settings.setting(name).call_hook.should == :on_write_only unless val
409
+ end
410
+ end
411
+ end
412
+ end
413
+
414
+ it "should call passed blocks when values are set" do
415
+ values = []
416
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
417
+ values.should == []
418
+
419
+ @settings[:hooker] = "something"
420
+ values.should == %w{something}
421
+ end
422
+
423
+ it "should call passed blocks when values are set via the command line" do
424
+ values = []
425
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
426
+ values.should == []
427
+
428
+ @settings.handlearg("--hooker", "yay")
429
+
430
+ values.should == %w{yay}
431
+ end
432
+
433
+ it "should provide an option to call passed blocks during definition" do
434
+ values = []
435
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| values << v }})
436
+ values.should == %w{yay}
437
+ end
438
+
439
+ it "should pass the fully interpolated value to the hook when called on definition" do
440
+ values = []
441
+ @settings.define_settings(:section, :one => { :default => "test", :desc => "a" })
442
+ @settings.define_settings(:section, :hooker => {:default => "$one/yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| values << v }})
443
+ values.should == %w{test/yay}
444
+ end
445
+
446
+ it "should munge values using the setting-specific methods" do
447
+ @settings[:bool] = "false"
448
+ @settings[:bool].should == false
449
+ end
450
+
451
+ it "should prefer values set in ruby to values set on the cli" do
452
+ @settings[:myval] = "memarg"
453
+ @settings.handlearg("--myval", "cliarg")
454
+
455
+ @settings[:myval].should == "memarg"
456
+ end
457
+
458
+ it "should clear the list of environments" do
459
+ Puppet::Node::Environment.expects(:clear).at_least(1)
460
+ @settings[:myval] = "memarg"
461
+ end
462
+
463
+ it "should raise an error if we try to set a setting that hasn't been defined'" do
464
+ lambda{
465
+ @settings[:why_so_serious] = "foo"
466
+ }.should raise_error(ArgumentError, /unknown setting/)
467
+ end
468
+
469
+ it "allows overriding cli args based on the cli-set value" do
470
+ @settings.handlearg("--myval", "cliarg")
471
+ @settings.set_value(:myval, "modified #{@settings[:myval]}", :cli)
472
+ expect(@settings[:myval]).to eq("modified cliarg")
473
+ end
474
+ end
475
+
476
+ describe "when returning values" do
477
+ before do
478
+ @settings = Puppet::Settings.new
479
+ @settings.define_settings :section,
480
+ :config => { :type => :file, :default => "/my/file", :desc => "eh" },
481
+ :one => { :default => "ONE", :desc => "a" },
482
+ :two => { :default => "$one TWO", :desc => "b"},
483
+ :three => { :default => "$one $two THREE", :desc => "c"},
484
+ :four => { :default => "$two $three FOUR", :desc => "d"},
485
+ :five => { :default => nil, :desc => "e" }
486
+ Puppet::FileSystem.stubs(:exist?).returns true
487
+ end
488
+
489
+ describe "call_on_define" do
490
+ it "should generate a deprecation warning" do
491
+ Puppet.expects(:deprecation_warning)
492
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
493
+ @settings.setting(:hooker).call_on_define
494
+ end
495
+
496
+ Puppet::Settings::StringSetting.available_call_hook_values.each do |val|
497
+ it "should match value for call_hook => :#{val}" do
498
+ hook_values = []
499
+ @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => val, :hook => lambda { |v| hook_values << v }})
500
+ @settings.setting(:hooker).call_on_define.should == @settings.setting(:hooker).call_hook_on_define?
501
+ end
502
+ end
503
+ end
504
+
505
+ it "should provide a mechanism for returning set values" do
506
+ @settings[:one] = "other"
507
+ @settings[:one].should == "other"
508
+ end
509
+
510
+ it "setting a value to nil causes it to return to its default" do
511
+ default_values = { :one => "skipped value" }
512
+ [:logdir, :confdir, :vardir].each do |key|
513
+ default_values[key] = 'default value'
514
+ end
515
+ @settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
516
+ @settings.initialize_app_defaults(default_values)
517
+ @settings[:one] = "value will disappear"
518
+
519
+ @settings[:one] = nil
520
+
521
+ @settings[:one].should == "ONE"
522
+ end
523
+
524
+ it "should interpolate default values for other parameters into returned parameter values" do
525
+ @settings[:one].should == "ONE"
526
+ @settings[:two].should == "ONE TWO"
527
+ @settings[:three].should == "ONE ONE TWO THREE"
528
+ end
529
+
530
+ it "should interpolate default values that themselves need to be interpolated" do
531
+ @settings[:four].should == "ONE TWO ONE ONE TWO THREE FOUR"
532
+ end
533
+
534
+ it "should provide a method for returning uninterpolated values" do
535
+ @settings[:two] = "$one tw0"
536
+ @settings.uninterpolated_value(:two).should == "$one tw0"
537
+ @settings.uninterpolated_value(:four).should == "$two $three FOUR"
538
+ end
539
+
540
+ it "should interpolate set values for other parameters into returned parameter values" do
541
+ @settings[:one] = "on3"
542
+ @settings[:two] = "$one tw0"
543
+ @settings[:three] = "$one $two thr33"
544
+ @settings[:four] = "$one $two $three f0ur"
545
+ @settings[:one].should == "on3"
546
+ @settings[:two].should == "on3 tw0"
547
+ @settings[:three].should == "on3 on3 tw0 thr33"
548
+ @settings[:four].should == "on3 on3 tw0 on3 on3 tw0 thr33 f0ur"
549
+ end
550
+
551
+ it "should not cache interpolated values such that stale information is returned" do
552
+ @settings[:two].should == "ONE TWO"
553
+ @settings[:one] = "one"
554
+ @settings[:two].should == "one TWO"
555
+ end
556
+
557
+ it "should not cache values such that information from one environment is returned for another environment" do
558
+ text = "[env1]\none = oneval\n[env2]\none = twoval\n"
559
+ @settings.stubs(:read_file).returns(text)
560
+ @settings.send(:parse_config_files)
561
+
562
+ @settings.value(:one, "env1").should == "oneval"
563
+ @settings.value(:one, "env2").should == "twoval"
564
+ end
565
+
566
+ it "should have a run_mode that defaults to user" do
567
+ @settings.preferred_run_mode.should == :user
568
+ end
569
+
570
+ it "interpolates a boolean false without raising an error" do
571
+ @settings.define_settings(:section,
572
+ :trip_wire => { :type => :boolean, :default => false, :desc => "a trip wire" },
573
+ :tripping => { :default => '$trip_wire', :desc => "once tripped if interpolated was false" })
574
+ @settings[:tripping].should == "false"
575
+ end
576
+
577
+ describe "setbycli" do
578
+ it "should generate a deprecation warning" do
579
+ @settings.handlearg("--one", "blah")
580
+ Puppet.expects(:deprecation_warning)
581
+ @settings.setting(:one).setbycli
582
+ end
583
+ it "should be true" do
584
+ @settings.handlearg("--one", "blah")
585
+ @settings.setting(:one).setbycli.should be_true
586
+ end
587
+ end
588
+ end
589
+
590
+ describe "when choosing which value to return" do
591
+ before do
592
+ @settings = Puppet::Settings.new
593
+ @settings.define_settings :section,
594
+ :config => { :type => :file, :default => "/my/file", :desc => "a" },
595
+ :one => { :default => "ONE", :desc => "a" },
596
+ :two => { :default => "TWO", :desc => "b" }
597
+ Puppet::FileSystem.stubs(:exist?).returns true
598
+ @settings.preferred_run_mode = :agent
599
+ end
600
+
601
+ it "should return default values if no values have been set" do
602
+ @settings[:one].should == "ONE"
603
+ end
604
+
605
+ it "should return values set on the cli before values set in the configuration file" do
606
+ text = "[main]\none = fileval\n"
607
+ @settings.stubs(:read_file).returns(text)
608
+ @settings.handlearg("--one", "clival")
609
+ @settings.send(:parse_config_files)
610
+
611
+ @settings[:one].should == "clival"
612
+ end
613
+
614
+ it "should return values set in the mode-specific section before values set in the main section" do
615
+ text = "[main]\none = mainval\n[agent]\none = modeval\n"
616
+ @settings.stubs(:read_file).returns(text)
617
+ @settings.send(:parse_config_files)
618
+
619
+ @settings[:one].should == "modeval"
620
+ end
621
+
622
+ it "should not return values outside of its search path" do
623
+ text = "[other]\none = oval\n"
624
+ file = "/some/file"
625
+ @settings.stubs(:read_file).returns(text)
626
+ @settings.send(:parse_config_files)
627
+ @settings[:one].should == "ONE"
628
+ end
629
+
630
+ it "should return values in a specified environment" do
631
+ text = "[env]\none = envval\n"
632
+ @settings.stubs(:read_file).returns(text)
633
+ @settings.send(:parse_config_files)
634
+ @settings.value(:one, "env").should == "envval"
635
+ end
636
+
637
+ it 'should use the current environment for $environment' do
638
+ @settings.define_settings :main, :myval => { :default => "$environment/foo", :desc => "mydocs" }
639
+
640
+ @settings.value(:myval, "myenv").should == "myenv/foo"
641
+ end
642
+
643
+ it "should interpolate found values using the current environment" do
644
+ text = "[main]\none = mainval\n[myname]\none = nameval\ntwo = $one/two\n"
645
+ @settings.stubs(:read_file).returns(text)
646
+ @settings.send(:parse_config_files)
647
+
648
+ @settings.value(:two, "myname").should == "nameval/two"
649
+ end
650
+
651
+ it "should return values in a specified environment before values in the main or name sections" do
652
+ text = "[env]\none = envval\n[main]\none = mainval\n[myname]\none = nameval\n"
653
+ @settings.stubs(:read_file).returns(text)
654
+ @settings.send(:parse_config_files)
655
+ @settings.value(:one, "env").should == "envval"
656
+ end
657
+ end
658
+
659
+
660
+ describe "when locating config files" do
661
+ before do
662
+ @settings = Puppet::Settings.new
663
+ end
664
+
665
+ describe "when root" do
666
+ it "should look for the main config file default location config settings haven't been overridden'" do
667
+ Puppet.features.stubs(:root?).returns(true)
668
+ Puppet::FileSystem.expects(:exist?).with(main_config_file_default_location).returns(false)
669
+ Puppet::FileSystem.expects(:exist?).with(user_config_file_default_location).never
670
+
671
+ @settings.send(:parse_config_files)
672
+ end
673
+ end
674
+
675
+ describe "when not root" do
676
+ it "should look for user config file default location if config settings haven't been overridden'" do
677
+ Puppet.features.stubs(:root?).returns(false)
678
+
679
+ seq = sequence "load config files"
680
+ Puppet::FileSystem.expects(:exist?).with(user_config_file_default_location).returns(false).in_sequence(seq)
681
+
682
+ @settings.send(:parse_config_files)
683
+ end
684
+ end
685
+ end
686
+
687
+ describe "when parsing its configuration" do
688
+ before do
689
+ @settings = Puppet::Settings.new
690
+ @settings.stubs(:service_user_available?).returns true
691
+ @settings.stubs(:service_group_available?).returns true
692
+ @file = make_absolute("/some/file")
693
+ @userconfig = make_absolute("/test/userconfigfile")
694
+ @settings.define_settings :section, :user => { :default => "suser", :desc => "doc" }, :group => { :default => "sgroup", :desc => "doc" }
695
+ @settings.define_settings :section,
696
+ :config => { :type => :file, :default => @file, :desc => "eh" },
697
+ :one => { :default => "ONE", :desc => "a" },
698
+ :two => { :default => "$one TWO", :desc => "b" },
699
+ :three => { :default => "$one $two THREE", :desc => "c" }
700
+ @settings.stubs(:user_config_file).returns(@userconfig)
701
+ Puppet::FileSystem.stubs(:exist?).with(@file).returns true
702
+ Puppet::FileSystem.stubs(:exist?).with(@userconfig).returns false
703
+ end
704
+
705
+ it "should not ignore the report setting" do
706
+ @settings.define_settings :section, :report => { :default => "false", :desc => "a" }
707
+ # This is needed in order to make sure we pass on windows
708
+ myfile = File.expand_path(@file)
709
+ @settings[:config] = myfile
710
+ text = <<-CONF
711
+ [puppetd]
712
+ report=true
713
+ CONF
714
+ Puppet::FileSystem.expects(:exist?).with(myfile).returns(true)
715
+ @settings.expects(:read_file).returns(text)
716
+ @settings.send(:parse_config_files)
717
+ @settings[:report].should be_true
718
+ end
719
+
720
+ it "should use its current ':config' value for the file to parse" do
721
+ myfile = make_absolute("/my/file") # do not stub expand_path here, as this leads to a stack overflow, when mocha tries to use it
722
+ @settings[:config] = myfile
723
+
724
+ Puppet::FileSystem.expects(:exist?).with(myfile).returns(true)
725
+
726
+ File.expects(:read).with(myfile).returns "[main]"
727
+
728
+ @settings.send(:parse_config_files)
729
+ end
730
+
731
+ it "should not try to parse non-existent files" do
732
+ Puppet::FileSystem.expects(:exist?).with(@file).returns false
733
+
734
+ File.expects(:read).with(@file).never
735
+
736
+ @settings.send(:parse_config_files)
737
+ end
738
+
739
+ it "should return values set in the configuration file" do
740
+ text = "[main]
741
+ one = fileval
742
+ "
743
+ @settings.expects(:read_file).returns(text)
744
+ @settings.send(:parse_config_files)
745
+ @settings[:one].should == "fileval"
746
+ end
747
+
748
+ #484 - this should probably be in the regression area
749
+ it "should not throw an exception on unknown parameters" do
750
+ text = "[main]\nnosuchparam = mval\n"
751
+ @settings.expects(:read_file).returns(text)
752
+ lambda { @settings.send(:parse_config_files) }.should_not raise_error
753
+ end
754
+
755
+ it "should convert booleans in the configuration file into Ruby booleans" do
756
+ text = "[main]
757
+ one = true
758
+ two = false
759
+ "
760
+ @settings.expects(:read_file).returns(text)
761
+ @settings.send(:parse_config_files)
762
+ @settings[:one].should == true
763
+ @settings[:two].should == false
764
+ end
765
+
766
+ it "should convert integers in the configuration file into Ruby Integers" do
767
+ text = "[main]
768
+ one = 65
769
+ "
770
+ @settings.expects(:read_file).returns(text)
771
+ @settings.send(:parse_config_files)
772
+ @settings[:one].should == 65
773
+ end
774
+
775
+ it "should support specifying all metadata (owner, group, mode) in the configuration file" do
776
+ @settings.define_settings :section, :myfile => { :type => :file, :default => make_absolute("/myfile"), :desc => "a" }
777
+
778
+ otherfile = make_absolute("/other/file")
779
+ @settings.parse_config(<<-CONF)
780
+ [main]
781
+ myfile = #{otherfile} {owner = service, group = service, mode = 644}
782
+ CONF
783
+
784
+ @settings[:myfile].should == otherfile
785
+ @settings.metadata(:myfile).should == {:owner => "suser", :group => "sgroup", :mode => "644"}
786
+ end
787
+
788
+ it "should support specifying a single piece of metadata (owner, group, or mode) in the configuration file" do
789
+ @settings.define_settings :section, :myfile => { :type => :file, :default => make_absolute("/myfile"), :desc => "a" }
790
+
791
+ otherfile = make_absolute("/other/file")
792
+ @settings.parse_config(<<-CONF)
793
+ [main]
794
+ myfile = #{otherfile} {owner = service}
795
+ CONF
796
+
797
+ @settings[:myfile].should == otherfile
798
+ @settings.metadata(:myfile).should == {:owner => "suser"}
799
+ end
800
+
801
+ it "should support loading metadata (owner, group, or mode) from a run_mode section in the configuration file" do
802
+ default_values = {}
803
+ PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.keys.each do |key|
804
+ default_values[key] = 'default value'
805
+ end
806
+ @settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
807
+ @settings.define_settings :master, :myfile => { :type => :file, :default => make_absolute("/myfile"), :desc => "a" }
808
+
809
+ otherfile = make_absolute("/other/file")
810
+ text = "[master]
811
+ myfile = #{otherfile} {mode = 664}
812
+ "
813
+ @settings.expects(:read_file).returns(text)
814
+
815
+ # will start initialization as user
816
+ @settings.preferred_run_mode.should == :user
817
+ @settings.send(:parse_config_files)
818
+
819
+ # change app run_mode to master
820
+ @settings.initialize_app_defaults(default_values.merge(:run_mode => :master))
821
+ @settings.preferred_run_mode.should == :master
822
+
823
+ # initializing the app should have reloaded the metadata based on run_mode
824
+ @settings[:myfile].should == otherfile
825
+ @settings.metadata(:myfile).should == {:mode => "664"}
826
+ end
827
+
828
+ it "does not use the metadata from the same setting in a different section" do
829
+ default_values = {}
830
+ PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.keys.each do |key|
831
+ default_values[key] = 'default value'
832
+ end
833
+
834
+ file = make_absolute("/file")
835
+ default_mode = "0600"
836
+ @settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
837
+ @settings.define_settings :master, :myfile => { :type => :file, :default => file, :desc => "a", :mode => default_mode }
838
+
839
+ text = "[master]
840
+ myfile = #{file}/foo
841
+ [agent]
842
+ myfile = #{file} {mode = 664}
843
+ "
844
+ @settings.expects(:read_file).returns(text)
845
+
846
+ # will start initialization as user
847
+ @settings.preferred_run_mode.should == :user
848
+ @settings.send(:parse_config_files)
849
+
850
+ # change app run_mode to master
851
+ @settings.initialize_app_defaults(default_values.merge(:run_mode => :master))
852
+ @settings.preferred_run_mode.should == :master
853
+
854
+ # initializing the app should have reloaded the metadata based on run_mode
855
+ @settings[:myfile].should == "#{file}/foo"
856
+ @settings.metadata(:myfile).should == { :mode => default_mode }
857
+ end
858
+
859
+ it "should call hooks associated with values set in the configuration file" do
860
+ values = []
861
+ @settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
862
+
863
+ text = "[main]
864
+ mysetting = setval
865
+ "
866
+ @settings.expects(:read_file).returns(text)
867
+ @settings.send(:parse_config_files)
868
+ values.should == ["setval"]
869
+ end
870
+
871
+ it "should not call the same hook for values set multiple times in the configuration file" do
872
+ values = []
873
+ @settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
874
+
875
+ text = "[user]
876
+ mysetting = setval
877
+ [main]
878
+ mysetting = other
879
+ "
880
+ @settings.expects(:read_file).returns(text)
881
+ @settings.send(:parse_config_files)
882
+ values.should == ["setval"]
883
+ end
884
+
885
+ it "should pass the environment-specific value to the hook when one is available" do
886
+ values = []
887
+ @settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
888
+ @settings.define_settings :section, :environment => { :default => "yay", :desc => "a" }
889
+ @settings.define_settings :section, :environments => { :default => "yay,foo", :desc => "a" }
890
+
891
+ text = "[main]
892
+ mysetting = setval
893
+ [yay]
894
+ mysetting = other
895
+ "
896
+ @settings.expects(:read_file).returns(text)
897
+ @settings.send(:parse_config_files)
898
+ values.should == ["other"]
899
+ end
900
+
901
+ it "should pass the interpolated value to the hook when one is available" do
902
+ values = []
903
+ @settings.define_settings :section, :base => {:default => "yay", :desc => "a", :hook => proc { |v| values << v }}
904
+ @settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
905
+
906
+ text = "[main]
907
+ mysetting = $base/setval
908
+ "
909
+ @settings.expects(:read_file).returns(text)
910
+ @settings.send(:parse_config_files)
911
+ values.should == ["yay/setval"]
912
+ end
913
+
914
+ it "should allow hooks invoked at parse time to be deferred" do
915
+ hook_invoked = false
916
+ @settings.define_settings :section, :deferred => {:desc => '',
917
+ :hook => proc { |v| hook_invoked = true },
918
+ :call_hook => :on_initialize_and_write, }
919
+
920
+ @settings.define_settings(:main,
921
+ :logdir => { :type => :directory, :default => nil, :desc => "logdir" },
922
+ :confdir => { :type => :directory, :default => nil, :desc => "confdir" },
923
+ :vardir => { :type => :directory, :default => nil, :desc => "vardir" })
924
+
925
+ text = <<-EOD
926
+ [main]
927
+ deferred=$confdir/goose
928
+ EOD
929
+
930
+ @settings.stubs(:read_file).returns(text)
931
+ @settings.initialize_global_settings
932
+
933
+ hook_invoked.should be_false
934
+
935
+ @settings.initialize_app_defaults(:logdir => '/path/to/logdir', :confdir => '/path/to/confdir', :vardir => '/path/to/vardir')
936
+
937
+ hook_invoked.should be_true
938
+ @settings[:deferred].should eq(File.expand_path('/path/to/confdir/goose'))
939
+ end
940
+
941
+ it "does not require the value for a setting without a hook to resolve during global setup" do
942
+ hook_invoked = false
943
+ @settings.define_settings :section, :can_cause_problems => {:desc => '' }
944
+
945
+ @settings.define_settings(:main,
946
+ :logdir => { :type => :directory, :default => nil, :desc => "logdir" },
947
+ :confdir => { :type => :directory, :default => nil, :desc => "confdir" },
948
+ :vardir => { :type => :directory, :default => nil, :desc => "vardir" })
949
+
950
+ text = <<-EOD
951
+ [main]
952
+ can_cause_problems=$confdir/goose
953
+ EOD
954
+
955
+ @settings.stubs(:read_file).returns(text)
956
+ @settings.initialize_global_settings
957
+ @settings.initialize_app_defaults(:logdir => '/path/to/logdir', :confdir => '/path/to/confdir', :vardir => '/path/to/vardir')
958
+
959
+ @settings[:can_cause_problems].should eq(File.expand_path('/path/to/confdir/goose'))
960
+ end
961
+
962
+ it "should allow empty values" do
963
+ @settings.define_settings :section, :myarg => { :default => "myfile", :desc => "a" }
964
+
965
+ text = "[main]
966
+ myarg =
967
+ "
968
+ @settings.stubs(:read_file).returns(text)
969
+ @settings.send(:parse_config_files)
970
+ @settings[:myarg].should == ""
971
+ end
972
+
973
+ describe "and when reading a non-positive filetimeout value from the config file" do
974
+ before do
975
+ @settings.define_settings :foo, :filetimeout => { :default => 5, :desc => "eh" }
976
+
977
+ somefile = "/some/file"
978
+ text = "[main]
979
+ filetimeout = -1
980
+ "
981
+ File.expects(:read).with(somefile).returns(text)
982
+ File.expects(:expand_path).with(somefile).returns somefile
983
+ @settings[:config] = somefile
984
+ end
985
+ end
986
+ end
987
+
988
+
989
+ describe "when there are multiple config files" do
990
+ let(:main_config_text) { "[main]\none = main\ntwo = main2" }
991
+ let(:user_config_text) { "[main]\none = user\n" }
992
+ let(:seq) { sequence "config_file_sequence" }
993
+
994
+ before :each do
995
+ @settings = Puppet::Settings.new
996
+ @settings.define_settings(:section,
997
+ { :confdir => { :default => nil, :desc => "Conf dir" },
998
+ :config => { :default => "$confdir/puppet.conf", :desc => "Config" },
999
+ :one => { :default => "ONE", :desc => "a" },
1000
+ :two => { :default => "TWO", :desc => "b" }, })
1001
+ end
1002
+
1003
+ context "running non-root without explicit config file" do
1004
+ before :each do
1005
+ Puppet.features.stubs(:root?).returns(false)
1006
+ Puppet::FileSystem.expects(:exist?).
1007
+ with(user_config_file_default_location).
1008
+ returns(true).in_sequence(seq)
1009
+ @settings.expects(:read_file).
1010
+ with(user_config_file_default_location).
1011
+ returns(user_config_text).in_sequence(seq)
1012
+ end
1013
+
1014
+ it "should return values from the user config file" do
1015
+ @settings.send(:parse_config_files)
1016
+ @settings[:one].should == "user"
1017
+ end
1018
+
1019
+ it "should not return values from the main config file" do
1020
+ @settings.send(:parse_config_files)
1021
+ @settings[:two].should == "TWO"
1022
+ end
1023
+ end
1024
+
1025
+ context "running as root without explicit config file" do
1026
+ before :each do
1027
+ Puppet.features.stubs(:root?).returns(true)
1028
+ Puppet::FileSystem.expects(:exist?).
1029
+ with(main_config_file_default_location).
1030
+ returns(true).in_sequence(seq)
1031
+ @settings.expects(:read_file).
1032
+ with(main_config_file_default_location).
1033
+ returns(main_config_text).in_sequence(seq)
1034
+ end
1035
+
1036
+ it "should return values from the main config file" do
1037
+ @settings.send(:parse_config_files)
1038
+ @settings[:one].should == "main"
1039
+ end
1040
+
1041
+ it "should not return values from the user config file" do
1042
+ @settings.send(:parse_config_files)
1043
+ @settings[:two].should == "main2"
1044
+ end
1045
+ end
1046
+
1047
+ context "running with an explicit config file as a user (e.g. Apache + Passenger)" do
1048
+ before :each do
1049
+ Puppet.features.stubs(:root?).returns(false)
1050
+ @settings[:confdir] = File.dirname(main_config_file_default_location)
1051
+ Puppet::FileSystem.expects(:exist?).
1052
+ with(main_config_file_default_location).
1053
+ returns(true).in_sequence(seq)
1054
+ @settings.expects(:read_file).
1055
+ with(main_config_file_default_location).
1056
+ returns(main_config_text).in_sequence(seq)
1057
+ end
1058
+
1059
+ it "should return values from the main config file" do
1060
+ @settings.send(:parse_config_files)
1061
+ @settings[:one].should == "main"
1062
+ end
1063
+
1064
+ it "should not return values from the user config file" do
1065
+ @settings.send(:parse_config_files)
1066
+ @settings[:two].should == "main2"
1067
+ end
1068
+ end
1069
+ end
1070
+
1071
+ describe "when reparsing its configuration" do
1072
+ before do
1073
+ @file = make_absolute("/test/file")
1074
+ @userconfig = make_absolute("/test/userconfigfile")
1075
+ @settings = Puppet::Settings.new
1076
+ @settings.define_settings :section,
1077
+ :config => { :type => :file, :default => @file, :desc => "a" },
1078
+ :one => { :default => "ONE", :desc => "a" },
1079
+ :two => { :default => "$one TWO", :desc => "b" },
1080
+ :three => { :default => "$one $two THREE", :desc => "c" }
1081
+ Puppet::FileSystem.stubs(:exist?).with(@file).returns true
1082
+ Puppet::FileSystem.stubs(:exist?).with(@userconfig).returns false
1083
+ @settings.stubs(:user_config_file).returns(@userconfig)
1084
+ end
1085
+
1086
+ it "does not create the WatchedFile instance and should not parse if the file does not exist" do
1087
+ Puppet::FileSystem.expects(:exist?).with(@file).returns false
1088
+ Puppet::Util::WatchedFile.expects(:new).never
1089
+
1090
+ @settings.expects(:parse_config_files).never
1091
+
1092
+ @settings.reparse_config_files
1093
+ end
1094
+
1095
+ context "and watched file exists" do
1096
+ before do
1097
+ @watched_file = Puppet::Util::WatchedFile.new(@file)
1098
+ Puppet::Util::WatchedFile.expects(:new).with(@file).returns @watched_file
1099
+ end
1100
+
1101
+ it "uses a WatchedFile instance to determine if the file has changed" do
1102
+ @watched_file.expects(:changed?)
1103
+
1104
+ @settings.reparse_config_files
1105
+ end
1106
+
1107
+ it "does not reparse if the file has not changed" do
1108
+ @watched_file.expects(:changed?).returns false
1109
+
1110
+ @settings.expects(:parse_config_files).never
1111
+
1112
+ @settings.reparse_config_files
1113
+ end
1114
+
1115
+ it "reparses if the file has changed" do
1116
+ @watched_file.expects(:changed?).returns true
1117
+
1118
+ @settings.expects(:parse_config_files)
1119
+
1120
+ @settings.reparse_config_files
1121
+ end
1122
+
1123
+ it "replaces in-memory values with on-file values" do
1124
+ @watched_file.stubs(:changed?).returns(true)
1125
+ @settings[:one] = "init"
1126
+
1127
+ # Now replace the value
1128
+ text = "[main]\none = disk-replace\n"
1129
+ @settings.stubs(:read_file).returns(text)
1130
+ @settings.reparse_config_files
1131
+ @settings[:one].should == "disk-replace"
1132
+ end
1133
+ end
1134
+
1135
+ it "should retain parameters set by cli when configuration files are reparsed" do
1136
+ @settings.handlearg("--one", "clival")
1137
+
1138
+ text = "[main]\none = on-disk\n"
1139
+ @settings.stubs(:read_file).returns(text)
1140
+ @settings.send(:parse_config_files)
1141
+
1142
+ @settings[:one].should == "clival"
1143
+ end
1144
+
1145
+ it "should remove in-memory values that are no longer set in the file" do
1146
+ # Init the value
1147
+ text = "[main]\none = disk-init\n"
1148
+ @settings.expects(:read_file).returns(text)
1149
+ @settings.send(:parse_config_files)
1150
+ @settings[:one].should == "disk-init"
1151
+
1152
+ # Now replace the value
1153
+ text = "[main]\ntwo = disk-replace\n"
1154
+ @settings.expects(:read_file).returns(text)
1155
+ @settings.send(:parse_config_files)
1156
+
1157
+ # The originally-overridden value should be replaced with the default
1158
+ @settings[:one].should == "ONE"
1159
+
1160
+ # and we should now have the new value in memory
1161
+ @settings[:two].should == "disk-replace"
1162
+ end
1163
+
1164
+ it "should retain in-memory values if the file has a syntax error" do
1165
+ # Init the value
1166
+ text = "[main]\none = initial-value\n"
1167
+ @settings.expects(:read_file).with(@file).returns(text)
1168
+ @settings.send(:parse_config_files)
1169
+ @settings[:one].should == "initial-value"
1170
+
1171
+ # Now replace the value with something bogus
1172
+ text = "[main]\nkenny = killed-by-what-follows\n1 is 2, blah blah florp\n"
1173
+ @settings.expects(:read_file).with(@file).returns(text)
1174
+ @settings.send(:parse_config_files)
1175
+
1176
+ # The originally-overridden value should not be replaced with the default
1177
+ @settings[:one].should == "initial-value"
1178
+
1179
+ # and we should not have the new value in memory
1180
+ @settings[:kenny].should be_nil
1181
+ end
1182
+ end
1183
+
1184
+ it "should provide a method for creating a catalog of resources from its configuration" do
1185
+ Puppet::Settings.new.should respond_to(:to_catalog)
1186
+ end
1187
+
1188
+ describe "when creating a catalog" do
1189
+ before do
1190
+ @settings = Puppet::Settings.new
1191
+ @settings.stubs(:service_user_available?).returns true
1192
+ @prefix = Puppet.features.posix? ? "" : "C:"
1193
+ end
1194
+
1195
+ it "should add all file resources to the catalog if no sections have been specified" do
1196
+ @settings.define_settings :main,
1197
+ :maindir => { :type => :directory, :default => @prefix+"/maindir", :desc => "a"},
1198
+ :seconddir => { :type => :directory, :default => @prefix+"/seconddir", :desc => "a"}
1199
+ @settings.define_settings :other,
1200
+ :otherdir => { :type => :directory, :default => @prefix+"/otherdir", :desc => "a" }
1201
+
1202
+ catalog = @settings.to_catalog
1203
+
1204
+ [@prefix+"/maindir", @prefix+"/seconddir", @prefix+"/otherdir"].each do |path|
1205
+ catalog.resource(:file, path).should be_instance_of(Puppet::Resource)
1206
+ end
1207
+ end
1208
+
1209
+ it "should add only files in the specified sections if section names are provided" do
1210
+ @settings.define_settings :main, :maindir => { :type => :directory, :default => @prefix+"/maindir", :desc => "a" }
1211
+ @settings.define_settings :other, :otherdir => { :type => :directory, :default => @prefix+"/otherdir", :desc => "a" }
1212
+ catalog = @settings.to_catalog(:main)
1213
+ catalog.resource(:file, @prefix+"/otherdir").should be_nil
1214
+ catalog.resource(:file, @prefix+"/maindir").should be_instance_of(Puppet::Resource)
1215
+ end
1216
+
1217
+ it "should not try to add the same file twice" do
1218
+ @settings.define_settings :main, :maindir => { :type => :directory, :default => @prefix+"/maindir", :desc => "a" }
1219
+ @settings.define_settings :other, :otherdir => { :type => :directory, :default => @prefix+"/maindir", :desc => "a" }
1220
+ lambda { @settings.to_catalog }.should_not raise_error
1221
+ end
1222
+
1223
+ it "should ignore files whose :to_resource method returns nil" do
1224
+ @settings.define_settings :main, :maindir => { :type => :directory, :default => @prefix+"/maindir", :desc => "a" }
1225
+ @settings.setting(:maindir).expects(:to_resource).returns nil
1226
+
1227
+ Puppet::Resource::Catalog.any_instance.expects(:add_resource).never
1228
+ @settings.to_catalog
1229
+ end
1230
+
1231
+ describe "on Microsoft Windows" do
1232
+ before :each do
1233
+ Puppet.features.stubs(:root?).returns true
1234
+ Puppet.features.stubs(:microsoft_windows?).returns true
1235
+
1236
+ @settings.define_settings :foo,
1237
+ :mkusers => { :type => :boolean, :default => true, :desc => "e" },
1238
+ :user => { :default => "suser", :desc => "doc" },
1239
+ :group => { :default => "sgroup", :desc => "doc" }
1240
+ @settings.define_settings :other,
1241
+ :otherdir => { :type => :directory, :default => "/otherdir", :desc => "a", :owner => "service", :group => "service"}
1242
+
1243
+ @catalog = @settings.to_catalog
1244
+ end
1245
+
1246
+ it "it should not add users and groups to the catalog" do
1247
+ @catalog.resource(:user, "suser").should be_nil
1248
+ @catalog.resource(:group, "sgroup").should be_nil
1249
+ end
1250
+ end
1251
+
1252
+ describe "when adding users and groups to the catalog" do
1253
+ before do
1254
+ Puppet.features.stubs(:root?).returns true
1255
+ Puppet.features.stubs(:microsoft_windows?).returns false
1256
+
1257
+ @settings.define_settings :foo,
1258
+ :mkusers => { :type => :boolean, :default => true, :desc => "e" },
1259
+ :user => { :default => "suser", :desc => "doc" },
1260
+ :group => { :default => "sgroup", :desc => "doc" }
1261
+ @settings.define_settings :other, :otherdir => {:type => :directory, :default => "/otherdir", :desc => "a", :owner => "service", :group => "service"}
1262
+
1263
+ @catalog = @settings.to_catalog
1264
+ end
1265
+
1266
+ it "should add each specified user and group to the catalog if :mkusers is a valid setting, is enabled, and we're running as root" do
1267
+ @catalog.resource(:user, "suser").should be_instance_of(Puppet::Resource)
1268
+ @catalog.resource(:group, "sgroup").should be_instance_of(Puppet::Resource)
1269
+ end
1270
+
1271
+ it "should only add users and groups to the catalog from specified sections" do
1272
+ @settings.define_settings :yay, :yaydir => { :type => :directory, :default => "/yaydir", :desc => "a", :owner => "service", :group => "service"}
1273
+ catalog = @settings.to_catalog(:other)
1274
+ catalog.resource(:user, "jane").should be_nil
1275
+ catalog.resource(:group, "billy").should be_nil
1276
+ end
1277
+
1278
+ it "should not add users or groups to the catalog if :mkusers not running as root" do
1279
+ Puppet.features.stubs(:root?).returns false
1280
+
1281
+ catalog = @settings.to_catalog
1282
+ catalog.resource(:user, "suser").should be_nil
1283
+ catalog.resource(:group, "sgroup").should be_nil
1284
+ end
1285
+
1286
+ it "should not add users or groups to the catalog if :mkusers is not a valid setting" do
1287
+ Puppet.features.stubs(:root?).returns true
1288
+ settings = Puppet::Settings.new
1289
+ settings.define_settings :other, :otherdir => {:type => :directory, :default => "/otherdir", :desc => "a", :owner => "service", :group => "service"}
1290
+
1291
+ catalog = settings.to_catalog
1292
+ catalog.resource(:user, "suser").should be_nil
1293
+ catalog.resource(:group, "sgroup").should be_nil
1294
+ end
1295
+
1296
+ it "should not add users or groups to the catalog if :mkusers is a valid setting but is disabled" do
1297
+ @settings[:mkusers] = false
1298
+
1299
+ catalog = @settings.to_catalog
1300
+ catalog.resource(:user, "suser").should be_nil
1301
+ catalog.resource(:group, "sgroup").should be_nil
1302
+ end
1303
+
1304
+ it "should not try to add users or groups to the catalog twice" do
1305
+ @settings.define_settings :yay, :yaydir => {:type => :directory, :default => "/yaydir", :desc => "a", :owner => "service", :group => "service"}
1306
+
1307
+ # This would fail if users/groups were added twice
1308
+ lambda { @settings.to_catalog }.should_not raise_error
1309
+ end
1310
+
1311
+ it "should set :ensure to :present on each created user and group" do
1312
+ @catalog.resource(:user, "suser")[:ensure].should == :present
1313
+ @catalog.resource(:group, "sgroup")[:ensure].should == :present
1314
+ end
1315
+
1316
+ it "should set each created user's :gid to the service group" do
1317
+ @settings.to_catalog.resource(:user, "suser")[:gid].should == "sgroup"
1318
+ end
1319
+
1320
+ it "should not attempt to manage the root user" do
1321
+ Puppet.features.stubs(:root?).returns true
1322
+ @settings.define_settings :foo, :foodir => {:type => :directory, :default => "/foodir", :desc => "a", :owner => "root", :group => "service"}
1323
+
1324
+ @settings.to_catalog.resource(:user, "root").should be_nil
1325
+ end
1326
+ end
1327
+ end
1328
+
1329
+ it "should be able to be converted to a manifest" do
1330
+ Puppet::Settings.new.should respond_to(:to_manifest)
1331
+ end
1332
+
1333
+ describe "when being converted to a manifest" do
1334
+ it "should produce a string with the code for each resource joined by two carriage returns" do
1335
+ @settings = Puppet::Settings.new
1336
+ @settings.define_settings :main,
1337
+ :maindir => { :type => :directory, :default => "/maindir", :desc => "a"},
1338
+ :seconddir => { :type => :directory, :default => "/seconddir", :desc => "a"}
1339
+
1340
+ main = stub 'main_resource', :ref => "File[/maindir]"
1341
+ main.expects(:to_manifest).returns "maindir"
1342
+ second = stub 'second_resource', :ref => "File[/seconddir]"
1343
+ second.expects(:to_manifest).returns "seconddir"
1344
+ @settings.setting(:maindir).expects(:to_resource).returns main
1345
+ @settings.setting(:seconddir).expects(:to_resource).returns second
1346
+
1347
+ @settings.to_manifest.split("\n\n").sort.should == %w{maindir seconddir}
1348
+ end
1349
+ end
1350
+
1351
+ describe "when using sections of the configuration to manage the local host" do
1352
+ before do
1353
+ @settings = Puppet::Settings.new
1354
+ @settings.stubs(:service_user_available?).returns true
1355
+ @settings.stubs(:service_group_available?).returns true
1356
+ @settings.define_settings :main, :noop => { :default => false, :desc => "", :type => :boolean }
1357
+ @settings.define_settings :main,
1358
+ :maindir => { :type => :directory, :default => make_absolute("/maindir"), :desc => "a" },
1359
+ :seconddir => { :type => :directory, :default => make_absolute("/seconddir"), :desc => "a"}
1360
+ @settings.define_settings :main, :user => { :default => "suser", :desc => "doc" }, :group => { :default => "sgroup", :desc => "doc" }
1361
+ @settings.define_settings :other, :otherdir => {:type => :directory, :default => make_absolute("/otherdir"), :desc => "a", :owner => "service", :group => "service", :mode => 0755}
1362
+ @settings.define_settings :third, :thirddir => { :type => :directory, :default => make_absolute("/thirddir"), :desc => "b"}
1363
+ @settings.define_settings :files, :myfile => {:type => :file, :default => make_absolute("/myfile"), :desc => "a", :mode => 0755}
1364
+ end
1365
+
1366
+ it "should provide a method that creates directories with the correct modes" do
1367
+ Puppet::Util::SUIDManager.expects(:asuser).with("suser", "sgroup").yields
1368
+ Dir.expects(:mkdir).with(make_absolute("/otherdir"), 0755)
1369
+ @settings.mkdir(:otherdir)
1370
+ end
1371
+
1372
+ it "should create a catalog with the specified sections" do
1373
+ @settings.expects(:to_catalog).with(:main, :other).returns Puppet::Resource::Catalog.new("foo")
1374
+ @settings.use(:main, :other)
1375
+ end
1376
+
1377
+ it "should canonicalize the sections" do
1378
+ @settings.expects(:to_catalog).with(:main, :other).returns Puppet::Resource::Catalog.new("foo")
1379
+ @settings.use("main", "other")
1380
+ end
1381
+
1382
+ it "should ignore sections that have already been used" do
1383
+ @settings.expects(:to_catalog).with(:main).returns Puppet::Resource::Catalog.new("foo")
1384
+ @settings.use(:main)
1385
+ @settings.expects(:to_catalog).with(:other).returns Puppet::Resource::Catalog.new("foo")
1386
+ @settings.use(:main, :other)
1387
+ end
1388
+
1389
+ it "should convert the created catalog to a RAL catalog" do
1390
+ @catalog = Puppet::Resource::Catalog.new("foo")
1391
+ @settings.expects(:to_catalog).with(:main).returns @catalog
1392
+
1393
+ @catalog.expects(:to_ral).returns @catalog
1394
+ @settings.use(:main)
1395
+ end
1396
+
1397
+ it "should specify that it is not managing a host catalog" do
1398
+ catalog = Puppet::Resource::Catalog.new("foo")
1399
+ catalog.expects(:apply)
1400
+ @settings.expects(:to_catalog).returns catalog
1401
+
1402
+ catalog.stubs(:to_ral).returns catalog
1403
+
1404
+ catalog.expects(:host_config=).with false
1405
+
1406
+ @settings.use(:main)
1407
+ end
1408
+
1409
+ it "should support a method for re-using all currently used sections" do
1410
+ @settings.expects(:to_catalog).with(:main, :third).times(2).returns Puppet::Resource::Catalog.new("foo")
1411
+
1412
+ @settings.use(:main, :third)
1413
+ @settings.reuse
1414
+ end
1415
+
1416
+ it "should fail with an appropriate message if any resources fail" do
1417
+ @catalog = Puppet::Resource::Catalog.new("foo")
1418
+ @catalog.stubs(:to_ral).returns @catalog
1419
+ @settings.expects(:to_catalog).returns @catalog
1420
+
1421
+ @trans = mock("transaction")
1422
+ @catalog.expects(:apply).yields(@trans)
1423
+
1424
+ @trans.expects(:any_failed?).returns(true)
1425
+
1426
+ resource = Puppet::Type.type(:notify).new(:title => 'failed')
1427
+ status = Puppet::Resource::Status.new(resource)
1428
+ event = Puppet::Transaction::Event.new(
1429
+ :name => 'failure',
1430
+ :status => 'failure',
1431
+ :message => 'My failure')
1432
+ status.add_event(event)
1433
+
1434
+ report = Puppet::Transaction::Report.new('apply')
1435
+ report.add_resource_status(status)
1436
+
1437
+ @trans.expects(:report).returns report
1438
+
1439
+ @settings.expects(:raise).with(includes("My failure"))
1440
+ @settings.use(:whatever)
1441
+ end
1442
+ end
1443
+
1444
+ describe "when dealing with printing configs" do
1445
+ before do
1446
+ @settings = Puppet::Settings.new
1447
+ #these are the magic default values
1448
+ @settings.stubs(:value).with(:configprint).returns("")
1449
+ @settings.stubs(:value).with(:genconfig).returns(false)
1450
+ @settings.stubs(:value).with(:genmanifest).returns(false)
1451
+ @settings.stubs(:value).with(:environment).returns(nil)
1452
+ end
1453
+
1454
+ describe "when checking print_config?" do
1455
+ it "should return false when the :configprint, :genconfig and :genmanifest are not set" do
1456
+ @settings.print_configs?.should be_false
1457
+ end
1458
+
1459
+ it "should return true when :configprint has a value" do
1460
+ @settings.stubs(:value).with(:configprint).returns("something")
1461
+ @settings.print_configs?.should be_true
1462
+ end
1463
+
1464
+ it "should return true when :genconfig has a value" do
1465
+ @settings.stubs(:value).with(:genconfig).returns(true)
1466
+ @settings.print_configs?.should be_true
1467
+ end
1468
+
1469
+ it "should return true when :genmanifest has a value" do
1470
+ @settings.stubs(:value).with(:genmanifest).returns(true)
1471
+ @settings.print_configs?.should be_true
1472
+ end
1473
+ end
1474
+
1475
+ describe "when printing configs" do
1476
+ describe "when :configprint has a value" do
1477
+ it "should call print_config_options" do
1478
+ @settings.stubs(:value).with(:configprint).returns("something")
1479
+ @settings.expects(:print_config_options)
1480
+ @settings.print_configs
1481
+ end
1482
+
1483
+ it "should get the value of the option using the environment" do
1484
+ @settings.stubs(:value).with(:configprint).returns("something")
1485
+ @settings.stubs(:include?).with("something").returns(true)
1486
+ @settings.expects(:value).with(:environment).returns("env")
1487
+ @settings.expects(:value).with("something", "env").returns("foo")
1488
+ @settings.stubs(:puts).with("foo")
1489
+ @settings.print_configs
1490
+ end
1491
+
1492
+ it "should print the value of the option" do
1493
+ @settings.stubs(:value).with(:configprint).returns("something")
1494
+ @settings.stubs(:include?).with("something").returns(true)
1495
+ @settings.stubs(:value).with("something", nil).returns("foo")
1496
+ @settings.expects(:puts).with("foo")
1497
+ @settings.print_configs
1498
+ end
1499
+
1500
+ it "should print the value pairs if there are multiple options" do
1501
+ @settings.stubs(:value).with(:configprint).returns("bar,baz")
1502
+ @settings.stubs(:include?).with("bar").returns(true)
1503
+ @settings.stubs(:include?).with("baz").returns(true)
1504
+ @settings.stubs(:value).with("bar", nil).returns("foo")
1505
+ @settings.stubs(:value).with("baz", nil).returns("fud")
1506
+ @settings.expects(:puts).with("bar = foo")
1507
+ @settings.expects(:puts).with("baz = fud")
1508
+ @settings.print_configs
1509
+ end
1510
+
1511
+ it "should return true after printing" do
1512
+ @settings.stubs(:value).with(:configprint).returns("something")
1513
+ @settings.stubs(:include?).with("something").returns(true)
1514
+ @settings.stubs(:value).with("something", nil).returns("foo")
1515
+ @settings.stubs(:puts).with("foo")
1516
+ @settings.print_configs.should be_true
1517
+ end
1518
+
1519
+ it "should return false if a config param is not found" do
1520
+ @settings.stubs :puts
1521
+ @settings.stubs(:value).with(:configprint).returns("something")
1522
+ @settings.stubs(:include?).with("something").returns(false)
1523
+ @settings.print_configs.should be_false
1524
+ end
1525
+ end
1526
+
1527
+ describe "when genconfig is true" do
1528
+ before do
1529
+ @settings.stubs :puts
1530
+ end
1531
+
1532
+ it "should call to_config" do
1533
+ @settings.stubs(:value).with(:genconfig).returns(true)
1534
+ @settings.expects(:to_config)
1535
+ @settings.print_configs
1536
+ end
1537
+
1538
+ it "should return true from print_configs" do
1539
+ @settings.stubs(:value).with(:genconfig).returns(true)
1540
+ @settings.stubs(:to_config)
1541
+ @settings.print_configs.should be_true
1542
+ end
1543
+ end
1544
+
1545
+ describe "when genmanifest is true" do
1546
+ before do
1547
+ @settings.stubs :puts
1548
+ end
1549
+
1550
+ it "should call to_config" do
1551
+ @settings.stubs(:value).with(:genmanifest).returns(true)
1552
+ @settings.expects(:to_manifest)
1553
+ @settings.print_configs
1554
+ end
1555
+
1556
+ it "should return true from print_configs" do
1557
+ @settings.stubs(:value).with(:genmanifest).returns(true)
1558
+ @settings.stubs(:to_manifest)
1559
+ @settings.print_configs.should be_true
1560
+ end
1561
+ end
1562
+ end
1563
+ end
1564
+
1565
+ describe "when determining if the service user is available" do
1566
+ let(:settings) do
1567
+ settings = Puppet::Settings.new
1568
+ settings.define_settings :main, :user => { :default => nil, :desc => "doc" }
1569
+ settings
1570
+ end
1571
+
1572
+ def a_user_type_for(username)
1573
+ user = mock 'user'
1574
+ Puppet::Type.type(:user).expects(:new).with { |args| args[:name] == username }.returns user
1575
+ user
1576
+ end
1577
+
1578
+ it "should return false if there is no user setting" do
1579
+ settings.should_not be_service_user_available
1580
+ end
1581
+
1582
+ it "should return false if the user provider says the user is missing" do
1583
+ settings[:user] = "foo"
1584
+
1585
+ a_user_type_for("foo").expects(:exists?).returns false
1586
+
1587
+ settings.should_not be_service_user_available
1588
+ end
1589
+
1590
+ it "should return true if the user provider says the user is present" do
1591
+ settings[:user] = "foo"
1592
+
1593
+ a_user_type_for("foo").expects(:exists?).returns true
1594
+
1595
+ settings.should be_service_user_available
1596
+ end
1597
+
1598
+ it "caches the result of determining if the user is present" do
1599
+ settings[:user] = "foo"
1600
+
1601
+ a_user_type_for("foo").expects(:exists?).returns true
1602
+ settings.should be_service_user_available
1603
+
1604
+ settings.should be_service_user_available
1605
+ end
1606
+ end
1607
+
1608
+ describe "when determining if the service group is available" do
1609
+ let(:settings) do
1610
+ settings = Puppet::Settings.new
1611
+ settings.define_settings :main, :group => { :default => nil, :desc => "doc" }
1612
+ settings
1613
+ end
1614
+
1615
+ def a_group_type_for(groupname)
1616
+ group = mock 'group'
1617
+ Puppet::Type.type(:group).expects(:new).with { |args| args[:name] == groupname }.returns group
1618
+ group
1619
+ end
1620
+
1621
+ it "should return false if there is no group setting" do
1622
+ settings.should_not be_service_group_available
1623
+ end
1624
+
1625
+ it "should return false if the group provider says the group is missing" do
1626
+ settings[:group] = "foo"
1627
+
1628
+ a_group_type_for("foo").expects(:exists?).returns false
1629
+
1630
+ settings.should_not be_service_group_available
1631
+ end
1632
+
1633
+ it "should return true if the group provider says the group is present" do
1634
+ settings[:group] = "foo"
1635
+
1636
+ a_group_type_for("foo").expects(:exists?).returns true
1637
+
1638
+ settings.should be_service_group_available
1639
+ end
1640
+
1641
+ it "caches the result of determining if the group is present" do
1642
+ settings[:group] = "foo"
1643
+
1644
+ a_group_type_for("foo").expects(:exists?).returns true
1645
+ settings.should be_service_group_available
1646
+
1647
+ settings.should be_service_group_available
1648
+ end
1649
+ end
1650
+
1651
+ describe "when dealing with command-line options" do
1652
+ let(:settings) { Puppet::Settings.new }
1653
+
1654
+ it "should get options from Puppet.settings.optparse_addargs" do
1655
+ settings.expects(:optparse_addargs).returns([])
1656
+
1657
+ settings.send(:parse_global_options, [])
1658
+ end
1659
+
1660
+ it "should add options to OptionParser" do
1661
+ settings.stubs(:optparse_addargs).returns( [["--option","-o", "Funny Option", :NONE]])
1662
+ settings.expects(:handlearg).with("--option", true)
1663
+ settings.send(:parse_global_options, ["--option"])
1664
+ end
1665
+
1666
+ it "should not die if it sees an unrecognized option, because the app/face may handle it later" do
1667
+ expect { settings.send(:parse_global_options, ["--topuppet", "value"]) } .to_not raise_error
1668
+ end
1669
+
1670
+ it "should not pass an unrecognized option to handleargs" do
1671
+ settings.expects(:handlearg).with("--topuppet", "value").never
1672
+ expect { settings.send(:parse_global_options, ["--topuppet", "value"]) } .to_not raise_error
1673
+ end
1674
+
1675
+ it "should pass valid puppet settings options to handlearg even if they appear after an unrecognized option" do
1676
+ settings.stubs(:optparse_addargs).returns( [["--option","-o", "Funny Option", :NONE]])
1677
+ settings.expects(:handlearg).with("--option", true)
1678
+ settings.send(:parse_global_options, ["--invalidoption", "--option"])
1679
+ end
1680
+
1681
+ it "should transform boolean option to normal form" do
1682
+ Puppet::Settings.clean_opt("--[no-]option", true).should == ["--option", true]
1683
+ end
1684
+
1685
+ it "should transform boolean option to no- form" do
1686
+ Puppet::Settings.clean_opt("--[no-]option", false).should == ["--no-option", false]
1687
+ end
1688
+
1689
+ it "should set preferred run mode from --run_mode <foo> string without error" do
1690
+ args = ["--run_mode", "master"]
1691
+ settings.expects(:handlearg).with("--run_mode", "master").never
1692
+ expect { settings.send(:parse_global_options, args) } .to_not raise_error
1693
+ Puppet.settings.preferred_run_mode.should == :master
1694
+ args.empty?.should == true
1695
+ end
1696
+
1697
+ it "should set preferred run mode from --run_mode=<foo> string without error" do
1698
+ args = ["--run_mode=master"]
1699
+ settings.expects(:handlearg).with("--run_mode", "master").never
1700
+ expect { settings.send(:parse_global_options, args) } .to_not raise_error
1701
+ Puppet.settings.preferred_run_mode.should == :master
1702
+ args.empty?.should == true
1703
+ end
1704
+ end
1705
+
1706
+ describe "default_certname" do
1707
+ describe "using hostname and domainname" do
1708
+ before :each do
1709
+ Puppet::Settings.stubs(:hostname_fact).returns("testhostname")
1710
+ Puppet::Settings.stubs(:domain_fact).returns("domain.test.")
1711
+ end
1712
+
1713
+ it "should use both to generate fqdn" do
1714
+ Puppet::Settings.default_certname.should =~ /testhostname\.domain\.test/
1715
+ end
1716
+ it "should remove trailing dots from fqdn" do
1717
+ Puppet::Settings.default_certname.should == 'testhostname.domain.test'
1718
+ end
1719
+ end
1720
+
1721
+ describe "using just hostname" do
1722
+ before :each do
1723
+ Puppet::Settings.stubs(:hostname_fact).returns("testhostname")
1724
+ Puppet::Settings.stubs(:domain_fact).returns("")
1725
+ end
1726
+
1727
+ it "should use only hostname to generate fqdn" do
1728
+ Puppet::Settings.default_certname.should == "testhostname"
1729
+ end
1730
+ it "should removing trailing dots from fqdn" do
1731
+ Puppet::Settings.default_certname.should == "testhostname"
1732
+ end
1733
+ end
1734
+ end
1735
+ end