puppet 3.7.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (2487) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +244 -0
  3. data/CONTRIBUTING.md +91 -0
  4. data/Gemfile +100 -0
  5. data/LICENSE +17 -0
  6. data/README.md +76 -0
  7. data/Rakefile +68 -0
  8. data/bin/extlookup2hiera +56 -0
  9. data/bin/puppet +8 -0
  10. data/conf/auth.conf +120 -0
  11. data/conf/fileserver.conf +42 -0
  12. data/conf/tagmail.conf +16 -0
  13. data/examples/hiera/README.md +91 -0
  14. data/examples/hiera/etc/hiera.yaml +15 -0
  15. data/examples/hiera/etc/hieradb/common.yaml +3 -0
  16. data/examples/hiera/etc/hieradb/dc1.yaml +6 -0
  17. data/examples/hiera/etc/hieradb/development.yaml +2 -0
  18. data/examples/hiera/etc/puppet.conf +3 -0
  19. data/examples/hiera/modules/data/manifests/common.pp +4 -0
  20. data/examples/hiera/modules/ntp/manifests/config.pp +6 -0
  21. data/examples/hiera/modules/ntp/manifests/data.pp +4 -0
  22. data/examples/hiera/modules/ntp/templates/ntp.conf.erb +3 -0
  23. data/examples/hiera/modules/users/manifests/common.pp +4 -0
  24. data/examples/hiera/modules/users/manifests/dc1.pp +4 -0
  25. data/examples/hiera/modules/users/manifests/development.pp +4 -0
  26. data/examples/hiera/site.pp +3 -0
  27. data/ext/README.environment +8 -0
  28. data/ext/autotest/Rakefile +8 -0
  29. data/ext/autotest/config +43 -0
  30. data/ext/autotest/readme.rst +16 -0
  31. data/ext/build_defaults.yaml +38 -0
  32. data/ext/cert_inspector +140 -0
  33. data/ext/dbfix.sql +132 -0
  34. data/ext/debian/README.Debian +8 -0
  35. data/ext/debian/README.source +2 -0
  36. data/ext/debian/TODO.Debian +1 -0
  37. data/ext/debian/changelog.erb +1122 -0
  38. data/ext/debian/compat +1 -0
  39. data/ext/debian/control +144 -0
  40. data/ext/debian/copyright +361 -0
  41. data/ext/debian/docs +1 -0
  42. data/ext/debian/fileserver.conf +41 -0
  43. data/ext/debian/puppet-common.dirs +13 -0
  44. data/ext/debian/puppet-common.install +4 -0
  45. data/ext/debian/puppet-common.lintian-overrides +5 -0
  46. data/ext/debian/puppet-common.manpages +35 -0
  47. data/ext/debian/puppet-common.postinst +35 -0
  48. data/ext/debian/puppet-common.postrm +33 -0
  49. data/ext/debian/puppet-el.dirs +1 -0
  50. data/ext/debian/puppet-el.emacsen-install +25 -0
  51. data/ext/debian/puppet-el.emacsen-remove +11 -0
  52. data/ext/debian/puppet-el.emacsen-startup +9 -0
  53. data/ext/debian/puppet-el.install +1 -0
  54. data/ext/debian/puppet-testsuite.install +2 -0
  55. data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
  56. data/ext/debian/puppet.conf +14 -0
  57. data/ext/debian/puppet.default +9 -0
  58. data/ext/debian/puppet.init +117 -0
  59. data/ext/debian/puppet.lintian-overrides +3 -0
  60. data/ext/debian/puppet.logrotate +12 -0
  61. data/ext/debian/puppet.postinst +20 -0
  62. data/ext/debian/puppet.postrm +20 -0
  63. data/ext/debian/puppet.preinst +20 -0
  64. data/ext/debian/puppetmaster-common.install +2 -0
  65. data/ext/debian/puppetmaster-common.manpages +2 -0
  66. data/ext/debian/puppetmaster-common.puppetqd.default +27 -0
  67. data/ext/debian/puppetmaster-common.puppetqd.init +84 -0
  68. data/ext/debian/puppetmaster-passenger.dirs +4 -0
  69. data/ext/debian/puppetmaster-passenger.postinst +162 -0
  70. data/ext/debian/puppetmaster-passenger.postrm +61 -0
  71. data/ext/debian/puppetmaster.README.debian +15 -0
  72. data/ext/debian/puppetmaster.default +14 -0
  73. data/ext/debian/puppetmaster.init +137 -0
  74. data/ext/debian/puppetmaster.lintian-overrides +3 -0
  75. data/ext/debian/puppetmaster.postinst +20 -0
  76. data/ext/debian/puppetmaster.postrm +5 -0
  77. data/ext/debian/puppetmaster.preinst +22 -0
  78. data/ext/debian/rules +129 -0
  79. data/ext/debian/source/format +1 -0
  80. data/ext/debian/source/options +1 -0
  81. data/ext/debian/vim-puppet.README.Debian +13 -0
  82. data/ext/debian/vim-puppet.dirs +3 -0
  83. data/ext/debian/vim-puppet.yaml +5 -0
  84. data/ext/debian/watch +2 -0
  85. data/ext/emacs/puppet-mode-init.el +6 -0
  86. data/ext/emacs/puppet-mode.el +434 -0
  87. data/ext/envpuppet +139 -0
  88. data/ext/envpuppet.bat +14 -0
  89. data/ext/freebsd/puppetd +26 -0
  90. data/ext/freebsd/puppetmasterd +26 -0
  91. data/ext/gentoo/conf.d/puppet +5 -0
  92. data/ext/gentoo/conf.d/puppetmaster +12 -0
  93. data/ext/gentoo/init.d/puppet +38 -0
  94. data/ext/gentoo/init.d/puppetmaster +51 -0
  95. data/ext/gentoo/puppet/fileserver.conf +41 -0
  96. data/ext/gentoo/puppet/puppet.conf +25 -0
  97. data/ext/ips/puppet-agent +44 -0
  98. data/ext/ips/puppet-master +44 -0
  99. data/ext/ips/puppet.conf +29 -0
  100. data/ext/ips/puppet.p5m.erb +12 -0
  101. data/ext/ips/puppetagent.xml +42 -0
  102. data/ext/ips/puppetmaster.xml +42 -0
  103. data/ext/ips/rules +19 -0
  104. data/ext/ips/transforms +34 -0
  105. data/ext/ldap/puppet.schema +24 -0
  106. data/ext/logcheck/puppet +23 -0
  107. data/ext/nagios/check_puppet.rb +123 -0
  108. data/ext/nagios/naggen +309 -0
  109. data/ext/osx/file_mapping.yaml +33 -0
  110. data/ext/osx/postflight.erb +109 -0
  111. data/ext/osx/preflight.erb +52 -0
  112. data/ext/osx/prototype.plist.erb +38 -0
  113. data/ext/project_data.yaml +50 -0
  114. data/ext/puppet-load.rb +393 -0
  115. data/ext/puppet-nm-dispatcher +13 -0
  116. data/ext/puppet-test +566 -0
  117. data/ext/puppetlisten/puppetlisten.rb +75 -0
  118. data/ext/puppetlisten/puppetrun.rb +38 -0
  119. data/ext/pure_ruby_dsl/dsl_test.rb +7 -0
  120. data/ext/rack/config.ru +36 -0
  121. data/ext/rack/example-passenger-vhost.conf +57 -0
  122. data/ext/redhat/client.init +119 -0
  123. data/ext/redhat/client.sysconfig +11 -0
  124. data/ext/redhat/fileserver.conf +41 -0
  125. data/ext/redhat/logrotate +10 -0
  126. data/ext/redhat/puppet.conf +25 -0
  127. data/ext/redhat/puppet.spec.erb +860 -0
  128. data/ext/redhat/queue.init +105 -0
  129. data/ext/redhat/server.init +128 -0
  130. data/ext/redhat/server.sysconfig +13 -0
  131. data/ext/regexp_nodes/classes/databases +2 -0
  132. data/ext/regexp_nodes/classes/webservers +2 -0
  133. data/ext/regexp_nodes/environment/development +2 -0
  134. data/ext/regexp_nodes/parameters/service/prod +1 -0
  135. data/ext/regexp_nodes/parameters/service/qa +3 -0
  136. data/ext/regexp_nodes/parameters/service/sandbox +1 -0
  137. data/ext/regexp_nodes/regexp_nodes.rb +271 -0
  138. data/ext/solaris/pkginfo +6 -0
  139. data/ext/solaris/smf/puppetd.xml +77 -0
  140. data/ext/solaris/smf/puppetmasterd.xml +77 -0
  141. data/ext/solaris/smf/svc-puppetd +64 -0
  142. data/ext/solaris/smf/svc-puppetmasterd +60 -0
  143. data/ext/suse/client.init +144 -0
  144. data/ext/suse/puppet.spec +310 -0
  145. data/ext/suse/server.init +173 -0
  146. data/ext/systemd/puppet.service +12 -0
  147. data/ext/systemd/puppetmaster.service +11 -0
  148. data/ext/upload_facts.rb +119 -0
  149. data/ext/vim/README +3 -0
  150. data/ext/vim/ftdetect/puppet.vim +2 -0
  151. data/ext/vim/ftplugin/puppet.vim +94 -0
  152. data/ext/vim/indent/puppet.vim +76 -0
  153. data/ext/vim/syntax/puppet.vim +115 -0
  154. data/ext/windows/eventlog/Rakefile +32 -0
  155. data/ext/windows/eventlog/puppetres.dll +0 -0
  156. data/ext/windows/eventlog/puppetres.mc +18 -0
  157. data/ext/windows/service/daemon.bat +6 -0
  158. data/ext/windows/service/daemon.rb +175 -0
  159. data/ext/yaml_nodes.rb +105 -0
  160. data/install.rb +429 -0
  161. data/lib/hiera/backend/puppet_backend.rb +103 -0
  162. data/lib/hiera/scope.rb +60 -0
  163. data/lib/hiera_puppet.rb +87 -0
  164. data/lib/puppet.rb +277 -0
  165. data/lib/puppet/agent.rb +121 -0
  166. data/lib/puppet/agent/disabler.rb +53 -0
  167. data/lib/puppet/agent/locker.rb +43 -0
  168. data/lib/puppet/application.rb +516 -0
  169. data/lib/puppet/application/agent.rb +480 -0
  170. data/lib/puppet/application/apply.rb +299 -0
  171. data/lib/puppet/application/ca.rb +5 -0
  172. data/lib/puppet/application/catalog.rb +4 -0
  173. data/lib/puppet/application/cert.rb +277 -0
  174. data/lib/puppet/application/certificate.rb +15 -0
  175. data/lib/puppet/application/certificate_request.rb +7 -0
  176. data/lib/puppet/application/certificate_revocation_list.rb +7 -0
  177. data/lib/puppet/application/config.rb +4 -0
  178. data/lib/puppet/application/describe.rb +254 -0
  179. data/lib/puppet/application/device.rb +238 -0
  180. data/lib/puppet/application/doc.rb +273 -0
  181. data/lib/puppet/application/face_base.rb +250 -0
  182. data/lib/puppet/application/facts.rb +4 -0
  183. data/lib/puppet/application/file.rb +4 -0
  184. data/lib/puppet/application/filebucket.rb +184 -0
  185. data/lib/puppet/application/help.rb +4 -0
  186. data/lib/puppet/application/indirection_base.rb +4 -0
  187. data/lib/puppet/application/inspect.rb +179 -0
  188. data/lib/puppet/application/instrumentation_data.rb +7 -0
  189. data/lib/puppet/application/instrumentation_listener.rb +7 -0
  190. data/lib/puppet/application/instrumentation_probe.rb +7 -0
  191. data/lib/puppet/application/key.rb +4 -0
  192. data/lib/puppet/application/kick.rb +351 -0
  193. data/lib/puppet/application/man.rb +4 -0
  194. data/lib/puppet/application/master.rb +304 -0
  195. data/lib/puppet/application/module.rb +4 -0
  196. data/lib/puppet/application/node.rb +4 -0
  197. data/lib/puppet/application/parser.rb +5 -0
  198. data/lib/puppet/application/plugin.rb +3 -0
  199. data/lib/puppet/application/queue.rb +161 -0
  200. data/lib/puppet/application/report.rb +4 -0
  201. data/lib/puppet/application/resource.rb +228 -0
  202. data/lib/puppet/application/resource_type.rb +7 -0
  203. data/lib/puppet/application/secret_agent.rb +9 -0
  204. data/lib/puppet/application/status.rb +4 -0
  205. data/lib/puppet/bindings.rb +147 -0
  206. data/lib/puppet/coercion.rb +40 -0
  207. data/lib/puppet/configurer.rb +303 -0
  208. data/lib/puppet/configurer/downloader.rb +66 -0
  209. data/lib/puppet/configurer/downloader_factory.rb +34 -0
  210. data/lib/puppet/configurer/fact_handler.rb +37 -0
  211. data/lib/puppet/configurer/plugin_handler.rb +23 -0
  212. data/lib/puppet/confine.rb +80 -0
  213. data/lib/puppet/confine/any.rb +26 -0
  214. data/lib/puppet/confine/exists.rb +19 -0
  215. data/lib/puppet/confine/false.rb +19 -0
  216. data/lib/puppet/confine/feature.rb +17 -0
  217. data/lib/puppet/confine/true.rb +20 -0
  218. data/lib/puppet/confine/variable.rb +59 -0
  219. data/lib/puppet/confine_collection.rb +50 -0
  220. data/lib/puppet/confiner.rb +46 -0
  221. data/lib/puppet/context.rb +101 -0
  222. data/lib/puppet/context/trusted_information.rb +56 -0
  223. data/lib/puppet/daemon.rb +182 -0
  224. data/lib/puppet/data_binding.rb +12 -0
  225. data/lib/puppet/defaults.rb +2091 -0
  226. data/lib/puppet/dsl.rb +7 -0
  227. data/lib/puppet/dsl/resource_api.rb +120 -0
  228. data/lib/puppet/dsl/resource_type_api.rb +34 -0
  229. data/lib/puppet/environments.rb +367 -0
  230. data/lib/puppet/error.rb +62 -0
  231. data/lib/puppet/external/dot.rb +326 -0
  232. data/lib/puppet/external/nagios.rb +46 -0
  233. data/lib/puppet/external/nagios/base.rb +472 -0
  234. data/lib/puppet/external/nagios/grammar.ry +248 -0
  235. data/lib/puppet/external/nagios/makefile +9 -0
  236. data/lib/puppet/external/nagios/parser.rb +400 -0
  237. data/lib/puppet/external/pson/common.rb +385 -0
  238. data/lib/puppet/external/pson/pure.rb +15 -0
  239. data/lib/puppet/external/pson/pure/generator.rb +394 -0
  240. data/lib/puppet/external/pson/pure/parser.rb +318 -0
  241. data/lib/puppet/external/pson/version.rb +8 -0
  242. data/lib/puppet/face.rb +12 -0
  243. data/lib/puppet/face/ca.rb +254 -0
  244. data/lib/puppet/face/catalog.rb +130 -0
  245. data/lib/puppet/face/catalog/select.rb +49 -0
  246. data/lib/puppet/face/certificate.rb +160 -0
  247. data/lib/puppet/face/certificate_request.rb +53 -0
  248. data/lib/puppet/face/certificate_revocation_list.rb +58 -0
  249. data/lib/puppet/face/config.rb +119 -0
  250. data/lib/puppet/face/facts.rb +81 -0
  251. data/lib/puppet/face/file.rb +47 -0
  252. data/lib/puppet/face/file/download.rb +57 -0
  253. data/lib/puppet/face/file/store.rb +21 -0
  254. data/lib/puppet/face/help.rb +194 -0
  255. data/lib/puppet/face/help/action.erb +86 -0
  256. data/lib/puppet/face/help/face.erb +111 -0
  257. data/lib/puppet/face/help/global.erb +16 -0
  258. data/lib/puppet/face/help/man.erb +152 -0
  259. data/lib/puppet/face/instrumentation_data.rb +30 -0
  260. data/lib/puppet/face/instrumentation_listener.rb +98 -0
  261. data/lib/puppet/face/instrumentation_probe.rb +79 -0
  262. data/lib/puppet/face/key.rb +15 -0
  263. data/lib/puppet/face/man.rb +99 -0
  264. data/lib/puppet/face/module.rb +19 -0
  265. data/lib/puppet/face/module/build.rb +63 -0
  266. data/lib/puppet/face/module/changes.rb +41 -0
  267. data/lib/puppet/face/module/generate.rb +251 -0
  268. data/lib/puppet/face/module/install.rb +145 -0
  269. data/lib/puppet/face/module/list.rb +275 -0
  270. data/lib/puppet/face/module/search.rb +94 -0
  271. data/lib/puppet/face/module/uninstall.rb +78 -0
  272. data/lib/puppet/face/module/upgrade.rb +86 -0
  273. data/lib/puppet/face/node.rb +43 -0
  274. data/lib/puppet/face/node/clean.rb +159 -0
  275. data/lib/puppet/face/parser.rb +160 -0
  276. data/lib/puppet/face/plugin.rb +65 -0
  277. data/lib/puppet/face/report.rb +54 -0
  278. data/lib/puppet/face/resource.rb +53 -0
  279. data/lib/puppet/face/resource_type.rb +81 -0
  280. data/lib/puppet/face/secret_agent.rb +54 -0
  281. data/lib/puppet/face/status.rb +53 -0
  282. data/lib/puppet/feature/base.rb +94 -0
  283. data/lib/puppet/feature/cfacter.rb +14 -0
  284. data/lib/puppet/feature/eventlog.rb +5 -0
  285. data/lib/puppet/feature/external_facts.rb +5 -0
  286. data/lib/puppet/feature/libuser.rb +8 -0
  287. data/lib/puppet/feature/msgpack.rb +3 -0
  288. data/lib/puppet/feature/pe_license.rb +4 -0
  289. data/lib/puppet/feature/pson.rb +4 -0
  290. data/lib/puppet/feature/rack.rb +19 -0
  291. data/lib/puppet/feature/rails.rb +47 -0
  292. data/lib/puppet/feature/rdoc1.rb +16 -0
  293. data/lib/puppet/feature/rubygems.rb +7 -0
  294. data/lib/puppet/feature/selinux.rb +3 -0
  295. data/lib/puppet/feature/ssh.rb +3 -0
  296. data/lib/puppet/feature/stomp.rb +5 -0
  297. data/lib/puppet/feature/zlib.rb +5 -0
  298. data/lib/puppet/file_bucket.rb +4 -0
  299. data/lib/puppet/file_bucket/dipper.rb +119 -0
  300. data/lib/puppet/file_bucket/file.rb +157 -0
  301. data/lib/puppet/file_collection.rb +19 -0
  302. data/lib/puppet/file_collection/lookup.rb +10 -0
  303. data/lib/puppet/file_serving.rb +3 -0
  304. data/lib/puppet/file_serving/base.rb +95 -0
  305. data/lib/puppet/file_serving/configuration.rb +109 -0
  306. data/lib/puppet/file_serving/configuration/parser.rb +121 -0
  307. data/lib/puppet/file_serving/content.rb +45 -0
  308. data/lib/puppet/file_serving/fileset.rb +172 -0
  309. data/lib/puppet/file_serving/metadata.rb +199 -0
  310. data/lib/puppet/file_serving/mount.rb +39 -0
  311. data/lib/puppet/file_serving/mount/file.rb +121 -0
  312. data/lib/puppet/file_serving/mount/modules.rb +24 -0
  313. data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
  314. data/lib/puppet/file_serving/mount/plugins.rb +35 -0
  315. data/lib/puppet/file_serving/terminus_helper.rb +21 -0
  316. data/lib/puppet/file_serving/terminus_selector.rb +30 -0
  317. data/lib/puppet/file_system.rb +366 -0
  318. data/lib/puppet/file_system/file18.rb +5 -0
  319. data/lib/puppet/file_system/file19.rb +46 -0
  320. data/lib/puppet/file_system/file19windows.rb +107 -0
  321. data/lib/puppet/file_system/file_impl.rb +145 -0
  322. data/lib/puppet/file_system/memory_file.rb +71 -0
  323. data/lib/puppet/file_system/memory_impl.rb +78 -0
  324. data/lib/puppet/file_system/path_pattern.rb +97 -0
  325. data/lib/puppet/file_system/uniquefile.rb +190 -0
  326. data/lib/puppet/forge.rb +226 -0
  327. data/lib/puppet/forge/cache.rb +59 -0
  328. data/lib/puppet/forge/errors.rb +112 -0
  329. data/lib/puppet/forge/repository.rb +182 -0
  330. data/lib/puppet/functions.rb +555 -0
  331. data/lib/puppet/functions/assert_type.rb +59 -0
  332. data/lib/puppet/functions/each.rb +111 -0
  333. data/lib/puppet/functions/epp.rb +54 -0
  334. data/lib/puppet/functions/filter.rb +113 -0
  335. data/lib/puppet/functions/import.rb +7 -0
  336. data/lib/puppet/functions/inline_epp.rb +88 -0
  337. data/lib/puppet/functions/map.rb +97 -0
  338. data/lib/puppet/functions/match.rb +102 -0
  339. data/lib/puppet/functions/reduce.rb +94 -0
  340. data/lib/puppet/functions/slice.rb +126 -0
  341. data/lib/puppet/functions/with.rb +23 -0
  342. data/lib/puppet/graph.rb +11 -0
  343. data/lib/puppet/graph/key.rb +26 -0
  344. data/lib/puppet/graph/prioritizer.rb +29 -0
  345. data/lib/puppet/graph/random_prioritizer.rb +16 -0
  346. data/lib/puppet/graph/rb_tree_map.rb +388 -0
  347. data/lib/puppet/graph/relationship_graph.rb +246 -0
  348. data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
  349. data/lib/puppet/graph/simple_graph.rb +566 -0
  350. data/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
  351. data/lib/puppet/indirector.rb +61 -0
  352. data/lib/puppet/indirector/active_record.rb +29 -0
  353. data/lib/puppet/indirector/catalog/active_record.rb +39 -0
  354. data/lib/puppet/indirector/catalog/compiler.rb +182 -0
  355. data/lib/puppet/indirector/catalog/json.rb +6 -0
  356. data/lib/puppet/indirector/catalog/msgpack.rb +6 -0
  357. data/lib/puppet/indirector/catalog/queue.rb +9 -0
  358. data/lib/puppet/indirector/catalog/rest.rb +6 -0
  359. data/lib/puppet/indirector/catalog/static_compiler.rb +214 -0
  360. data/lib/puppet/indirector/catalog/store_configs.rb +8 -0
  361. data/lib/puppet/indirector/catalog/yaml.rb +22 -0
  362. data/lib/puppet/indirector/certificate/ca.rb +9 -0
  363. data/lib/puppet/indirector/certificate/disabled_ca.rb +22 -0
  364. data/lib/puppet/indirector/certificate/file.rb +9 -0
  365. data/lib/puppet/indirector/certificate/rest.rb +16 -0
  366. data/lib/puppet/indirector/certificate_request/ca.rb +22 -0
  367. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
  368. data/lib/puppet/indirector/certificate_request/file.rb +8 -0
  369. data/lib/puppet/indirector/certificate_request/memory.rb +6 -0
  370. data/lib/puppet/indirector/certificate_request/rest.rb +10 -0
  371. data/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
  372. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
  373. data/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
  374. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +10 -0
  375. data/lib/puppet/indirector/certificate_status.rb +4 -0
  376. data/lib/puppet/indirector/certificate_status/file.rb +91 -0
  377. data/lib/puppet/indirector/certificate_status/rest.rb +11 -0
  378. data/lib/puppet/indirector/code.rb +6 -0
  379. data/lib/puppet/indirector/couch.rb +78 -0
  380. data/lib/puppet/indirector/data_binding/hiera.rb +7 -0
  381. data/lib/puppet/indirector/data_binding/none.rb +5 -0
  382. data/lib/puppet/indirector/direct_file_server.rb +19 -0
  383. data/lib/puppet/indirector/envelope.rb +11 -0
  384. data/lib/puppet/indirector/errors.rb +5 -0
  385. data/lib/puppet/indirector/exec.rb +38 -0
  386. data/lib/puppet/indirector/face.rb +139 -0
  387. data/lib/puppet/indirector/facts/active_record.rb +44 -0
  388. data/lib/puppet/indirector/facts/couch.rb +36 -0
  389. data/lib/puppet/indirector/facts/facter.rb +78 -0
  390. data/lib/puppet/indirector/facts/inventory_active_record.rb +110 -0
  391. data/lib/puppet/indirector/facts/inventory_service.rb +20 -0
  392. data/lib/puppet/indirector/facts/memory.rb +9 -0
  393. data/lib/puppet/indirector/facts/network_device.rb +24 -0
  394. data/lib/puppet/indirector/facts/rest.rb +8 -0
  395. data/lib/puppet/indirector/facts/store_configs.rb +8 -0
  396. data/lib/puppet/indirector/facts/yaml.rb +82 -0
  397. data/lib/puppet/indirector/file_bucket_file/file.rb +142 -0
  398. data/lib/puppet/indirector/file_bucket_file/rest.rb +8 -0
  399. data/lib/puppet/indirector/file_bucket_file/selector.rb +53 -0
  400. data/lib/puppet/indirector/file_content.rb +5 -0
  401. data/lib/puppet/indirector/file_content/file.rb +7 -0
  402. data/lib/puppet/indirector/file_content/file_server.rb +7 -0
  403. data/lib/puppet/indirector/file_content/rest.rb +9 -0
  404. data/lib/puppet/indirector/file_content/selector.rb +30 -0
  405. data/lib/puppet/indirector/file_metadata.rb +5 -0
  406. data/lib/puppet/indirector/file_metadata/file.rb +22 -0
  407. data/lib/puppet/indirector/file_metadata/file_server.rb +7 -0
  408. data/lib/puppet/indirector/file_metadata/rest.rb +9 -0
  409. data/lib/puppet/indirector/file_metadata/selector.rb +30 -0
  410. data/lib/puppet/indirector/file_server.rb +65 -0
  411. data/lib/puppet/indirector/hiera.rb +48 -0
  412. data/lib/puppet/indirector/indirection.rb +336 -0
  413. data/lib/puppet/indirector/instrumentation_data.rb +3 -0
  414. data/lib/puppet/indirector/instrumentation_data/local.rb +22 -0
  415. data/lib/puppet/indirector/instrumentation_data/rest.rb +8 -0
  416. data/lib/puppet/indirector/instrumentation_listener.rb +3 -0
  417. data/lib/puppet/indirector/instrumentation_listener/local.rb +26 -0
  418. data/lib/puppet/indirector/instrumentation_listener/rest.rb +8 -0
  419. data/lib/puppet/indirector/instrumentation_probe.rb +3 -0
  420. data/lib/puppet/indirector/instrumentation_probe/local.rb +27 -0
  421. data/lib/puppet/indirector/instrumentation_probe/rest.rb +8 -0
  422. data/lib/puppet/indirector/json.rb +76 -0
  423. data/lib/puppet/indirector/key/ca.rb +16 -0
  424. data/lib/puppet/indirector/key/disabled_ca.rb +22 -0
  425. data/lib/puppet/indirector/key/file.rb +49 -0
  426. data/lib/puppet/indirector/key/memory.rb +6 -0
  427. data/lib/puppet/indirector/ldap.rb +79 -0
  428. data/lib/puppet/indirector/memory.rb +34 -0
  429. data/lib/puppet/indirector/msgpack.rb +82 -0
  430. data/lib/puppet/indirector/node/active_record.rb +22 -0
  431. data/lib/puppet/indirector/node/exec.rb +69 -0
  432. data/lib/puppet/indirector/node/ldap.rb +257 -0
  433. data/lib/puppet/indirector/node/memory.rb +10 -0
  434. data/lib/puppet/indirector/node/msgpack.rb +7 -0
  435. data/lib/puppet/indirector/node/plain.rb +20 -0
  436. data/lib/puppet/indirector/node/rest.rb +7 -0
  437. data/lib/puppet/indirector/node/store_configs.rb +8 -0
  438. data/lib/puppet/indirector/node/write_only_yaml.rb +32 -0
  439. data/lib/puppet/indirector/node/yaml.rb +22 -0
  440. data/lib/puppet/indirector/none.rb +9 -0
  441. data/lib/puppet/indirector/plain.rb +9 -0
  442. data/lib/puppet/indirector/queue.rb +80 -0
  443. data/lib/puppet/indirector/report/msgpack.rb +11 -0
  444. data/lib/puppet/indirector/report/processor.rb +59 -0
  445. data/lib/puppet/indirector/report/rest.rb +15 -0
  446. data/lib/puppet/indirector/report/yaml.rb +11 -0
  447. data/lib/puppet/indirector/request.rb +318 -0
  448. data/lib/puppet/indirector/resource/active_record.rb +104 -0
  449. data/lib/puppet/indirector/resource/ral.rb +64 -0
  450. data/lib/puppet/indirector/resource/rest.rb +17 -0
  451. data/lib/puppet/indirector/resource/store_configs.rb +13 -0
  452. data/lib/puppet/indirector/resource/validator.rb +8 -0
  453. data/lib/puppet/indirector/resource_type.rb +5 -0
  454. data/lib/puppet/indirector/resource_type/parser.rb +101 -0
  455. data/lib/puppet/indirector/resource_type/rest.rb +7 -0
  456. data/lib/puppet/indirector/rest.rb +267 -0
  457. data/lib/puppet/indirector/run/local.rb +15 -0
  458. data/lib/puppet/indirector/run/rest.rb +12 -0
  459. data/lib/puppet/indirector/ssl_file.rb +180 -0
  460. data/lib/puppet/indirector/status.rb +3 -0
  461. data/lib/puppet/indirector/status/local.rb +12 -0
  462. data/lib/puppet/indirector/status/rest.rb +9 -0
  463. data/lib/puppet/indirector/store_configs.rb +30 -0
  464. data/lib/puppet/indirector/terminus.rb +169 -0
  465. data/lib/puppet/indirector/yaml.rb +63 -0
  466. data/lib/puppet/interface.rb +235 -0
  467. data/lib/puppet/interface/action.rb +374 -0
  468. data/lib/puppet/interface/action_builder.rb +149 -0
  469. data/lib/puppet/interface/action_manager.rb +101 -0
  470. data/lib/puppet/interface/documentation.rb +342 -0
  471. data/lib/puppet/interface/face_collection.rb +125 -0
  472. data/lib/puppet/interface/option.rb +150 -0
  473. data/lib/puppet/interface/option_builder.rb +93 -0
  474. data/lib/puppet/interface/option_manager.rb +99 -0
  475. data/lib/puppet/loaders.rb +19 -0
  476. data/lib/puppet/metatype/manager.rb +184 -0
  477. data/lib/puppet/module.rb +339 -0
  478. data/lib/puppet/module_tool.rb +194 -0
  479. data/lib/puppet/module_tool/applications.rb +14 -0
  480. data/lib/puppet/module_tool/applications/application.rb +98 -0
  481. data/lib/puppet/module_tool/applications/builder.rb +148 -0
  482. data/lib/puppet/module_tool/applications/checksummer.rb +62 -0
  483. data/lib/puppet/module_tool/applications/installer.rb +353 -0
  484. data/lib/puppet/module_tool/applications/searcher.rb +29 -0
  485. data/lib/puppet/module_tool/applications/uninstaller.rb +117 -0
  486. data/lib/puppet/module_tool/applications/unpacker.rb +100 -0
  487. data/lib/puppet/module_tool/applications/upgrader.rb +279 -0
  488. data/lib/puppet/module_tool/checksums.rb +49 -0
  489. data/lib/puppet/module_tool/contents_description.rb +84 -0
  490. data/lib/puppet/module_tool/dependency.rb +42 -0
  491. data/lib/puppet/module_tool/errors.rb +11 -0
  492. data/lib/puppet/module_tool/errors/base.rb +15 -0
  493. data/lib/puppet/module_tool/errors/installer.rb +95 -0
  494. data/lib/puppet/module_tool/errors/shared.rb +188 -0
  495. data/lib/puppet/module_tool/errors/uninstaller.rb +45 -0
  496. data/lib/puppet/module_tool/errors/upgrader.rb +63 -0
  497. data/lib/puppet/module_tool/install_directory.rb +45 -0
  498. data/lib/puppet/module_tool/installed_modules.rb +98 -0
  499. data/lib/puppet/module_tool/local_tarball.rb +90 -0
  500. data/lib/puppet/module_tool/metadata.rb +209 -0
  501. data/lib/puppet/module_tool/modulefile.rb +78 -0
  502. data/lib/puppet/module_tool/shared_behaviors.rb +180 -0
  503. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +7 -0
  504. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +79 -0
  505. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +18 -0
  506. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +41 -0
  507. data/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +1 -0
  508. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +7 -0
  509. data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +1 -0
  510. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +12 -0
  511. data/lib/puppet/module_tool/tar.rb +17 -0
  512. data/lib/puppet/module_tool/tar/gnu.rb +19 -0
  513. data/lib/puppet/module_tool/tar/mini.rb +53 -0
  514. data/lib/puppet/network.rb +3 -0
  515. data/lib/puppet/network/auth_config_parser.rb +84 -0
  516. data/lib/puppet/network/authconfig.rb +76 -0
  517. data/lib/puppet/network/authentication.rb +35 -0
  518. data/lib/puppet/network/authorization.rb +34 -0
  519. data/lib/puppet/network/authstore.rb +282 -0
  520. data/lib/puppet/network/client_request.rb +29 -0
  521. data/lib/puppet/network/format.rb +110 -0
  522. data/lib/puppet/network/format_handler.rb +105 -0
  523. data/lib/puppet/network/format_support.rb +124 -0
  524. data/lib/puppet/network/formats.rb +216 -0
  525. data/lib/puppet/network/http.rb +20 -0
  526. data/lib/puppet/network/http/api.rb +2 -0
  527. data/lib/puppet/network/http/api/v1.rb +222 -0
  528. data/lib/puppet/network/http/api/v2.rb +32 -0
  529. data/lib/puppet/network/http/api/v2/authorization.rb +15 -0
  530. data/lib/puppet/network/http/api/v2/environments.rb +35 -0
  531. data/lib/puppet/network/http/compression.rb +114 -0
  532. data/lib/puppet/network/http/connection.rb +240 -0
  533. data/lib/puppet/network/http/error.rb +69 -0
  534. data/lib/puppet/network/http/factory.rb +44 -0
  535. data/lib/puppet/network/http/handler.rb +186 -0
  536. data/lib/puppet/network/http/issues.rb +11 -0
  537. data/lib/puppet/network/http/memory_response.rb +13 -0
  538. data/lib/puppet/network/http/nocache_pool.rb +21 -0
  539. data/lib/puppet/network/http/pool.rb +120 -0
  540. data/lib/puppet/network/http/rack.rb +33 -0
  541. data/lib/puppet/network/http/rack/rest.rb +138 -0
  542. data/lib/puppet/network/http/request.rb +56 -0
  543. data/lib/puppet/network/http/response.rb +11 -0
  544. data/lib/puppet/network/http/route.rb +100 -0
  545. data/lib/puppet/network/http/session.rb +17 -0
  546. data/lib/puppet/network/http/site.rb +39 -0
  547. data/lib/puppet/network/http/webrick.rb +119 -0
  548. data/lib/puppet/network/http/webrick/rest.rb +104 -0
  549. data/lib/puppet/network/http_pool.rb +61 -0
  550. data/lib/puppet/network/resolver.rb +86 -0
  551. data/lib/puppet/network/rest_controller.rb +2 -0
  552. data/lib/puppet/network/rights.rb +219 -0
  553. data/lib/puppet/network/server.rb +39 -0
  554. data/lib/puppet/node.rb +184 -0
  555. data/lib/puppet/node/environment.rb +595 -0
  556. data/lib/puppet/node/facts.rb +155 -0
  557. data/lib/puppet/parameter.rb +585 -0
  558. data/lib/puppet/parameter/boolean.rb +15 -0
  559. data/lib/puppet/parameter/package_options.rb +31 -0
  560. data/lib/puppet/parameter/path.rb +57 -0
  561. data/lib/puppet/parameter/value.rb +93 -0
  562. data/lib/puppet/parameter/value_collection.rb +211 -0
  563. data/lib/puppet/parser.rb +7 -0
  564. data/lib/puppet/parser/ast.rb +129 -0
  565. data/lib/puppet/parser/ast/arithmetic_operator.rb +91 -0
  566. data/lib/puppet/parser/ast/astarray.rb +50 -0
  567. data/lib/puppet/parser/ast/asthash.rb +37 -0
  568. data/lib/puppet/parser/ast/block_expression.rb +40 -0
  569. data/lib/puppet/parser/ast/boolean_operator.rb +46 -0
  570. data/lib/puppet/parser/ast/branch.rb +22 -0
  571. data/lib/puppet/parser/ast/caseopt.rb +52 -0
  572. data/lib/puppet/parser/ast/casestatement.rb +41 -0
  573. data/lib/puppet/parser/ast/collection.rb +53 -0
  574. data/lib/puppet/parser/ast/collexpr.rb +109 -0
  575. data/lib/puppet/parser/ast/comparison_operator.rb +38 -0
  576. data/lib/puppet/parser/ast/definition.rb +17 -0
  577. data/lib/puppet/parser/ast/else.rb +22 -0
  578. data/lib/puppet/parser/ast/function.rb +59 -0
  579. data/lib/puppet/parser/ast/hostclass.rb +29 -0
  580. data/lib/puppet/parser/ast/ifstatement.rb +34 -0
  581. data/lib/puppet/parser/ast/in_operator.rb +24 -0
  582. data/lib/puppet/parser/ast/lambda.rb +135 -0
  583. data/lib/puppet/parser/ast/leaf.rb +232 -0
  584. data/lib/puppet/parser/ast/match_operator.rb +28 -0
  585. data/lib/puppet/parser/ast/method_call.rb +77 -0
  586. data/lib/puppet/parser/ast/minus.rb +23 -0
  587. data/lib/puppet/parser/ast/node.rb +25 -0
  588. data/lib/puppet/parser/ast/nop.rb +11 -0
  589. data/lib/puppet/parser/ast/not.rb +19 -0
  590. data/lib/puppet/parser/ast/pops_bridge.rb +252 -0
  591. data/lib/puppet/parser/ast/relationship.rb +47 -0
  592. data/lib/puppet/parser/ast/resource.rb +67 -0
  593. data/lib/puppet/parser/ast/resource_defaults.rb +24 -0
  594. data/lib/puppet/parser/ast/resource_instance.rb +9 -0
  595. data/lib/puppet/parser/ast/resource_override.rb +62 -0
  596. data/lib/puppet/parser/ast/resource_reference.rb +28 -0
  597. data/lib/puppet/parser/ast/resourceparam.rb +27 -0
  598. data/lib/puppet/parser/ast/selector.rb +50 -0
  599. data/lib/puppet/parser/ast/top_level_construct.rb +4 -0
  600. data/lib/puppet/parser/ast/vardef.rb +38 -0
  601. data/lib/puppet/parser/code_merger.rb +13 -0
  602. data/lib/puppet/parser/collector.rb +177 -0
  603. data/lib/puppet/parser/compiler.rb +626 -0
  604. data/lib/puppet/parser/e4_parser_adapter.rb +81 -0
  605. data/lib/puppet/parser/files.rb +137 -0
  606. data/lib/puppet/parser/functions.rb +262 -0
  607. data/lib/puppet/parser/functions/assert_type.rb +31 -0
  608. data/lib/puppet/parser/functions/contain.rb +36 -0
  609. data/lib/puppet/parser/functions/create_resources.rb +82 -0
  610. data/lib/puppet/parser/functions/defined.rb +73 -0
  611. data/lib/puppet/parser/functions/digest.rb +5 -0
  612. data/lib/puppet/parser/functions/each.rb +48 -0
  613. data/lib/puppet/parser/functions/epp.rb +45 -0
  614. data/lib/puppet/parser/functions/extlookup.rb +153 -0
  615. data/lib/puppet/parser/functions/fail.rb +4 -0
  616. data/lib/puppet/parser/functions/file.rb +31 -0
  617. data/lib/puppet/parser/functions/filter.rb +44 -0
  618. data/lib/puppet/parser/functions/fqdn_rand.rb +21 -0
  619. data/lib/puppet/parser/functions/generate.rb +37 -0
  620. data/lib/puppet/parser/functions/hiera.rb +26 -0
  621. data/lib/puppet/parser/functions/hiera_array.rb +27 -0
  622. data/lib/puppet/parser/functions/hiera_hash.rb +29 -0
  623. data/lib/puppet/parser/functions/hiera_include.rb +44 -0
  624. data/lib/puppet/parser/functions/include.rb +35 -0
  625. data/lib/puppet/parser/functions/inline_epp.rb +76 -0
  626. data/lib/puppet/parser/functions/inline_template.rb +21 -0
  627. data/lib/puppet/parser/functions/lookup.rb +144 -0
  628. data/lib/puppet/parser/functions/map.rb +43 -0
  629. data/lib/puppet/parser/functions/match.rb +28 -0
  630. data/lib/puppet/parser/functions/md5.rb +5 -0
  631. data/lib/puppet/parser/functions/realize.rb +14 -0
  632. data/lib/puppet/parser/functions/reduce.rb +71 -0
  633. data/lib/puppet/parser/functions/regsubst.rb +116 -0
  634. data/lib/puppet/parser/functions/require.rb +61 -0
  635. data/lib/puppet/parser/functions/search.rb +12 -0
  636. data/lib/puppet/parser/functions/sha1.rb +5 -0
  637. data/lib/puppet/parser/functions/shellquote.rb +61 -0
  638. data/lib/puppet/parser/functions/slice.rb +48 -0
  639. data/lib/puppet/parser/functions/split.rb +28 -0
  640. data/lib/puppet/parser/functions/sprintf.rb +36 -0
  641. data/lib/puppet/parser/functions/tag.rb +6 -0
  642. data/lib/puppet/parser/functions/tagged.rb +18 -0
  643. data/lib/puppet/parser/functions/template.rb +30 -0
  644. data/lib/puppet/parser/functions/versioncmp.rb +30 -0
  645. data/lib/puppet/parser/functions/with.rb +21 -0
  646. data/lib/puppet/parser/grammar.ra +806 -0
  647. data/lib/puppet/parser/lexer.rb +608 -0
  648. data/lib/puppet/parser/makefile +8 -0
  649. data/lib/puppet/parser/methods.rb +69 -0
  650. data/lib/puppet/parser/parser.rb +2559 -0
  651. data/lib/puppet/parser/parser_factory.rb +76 -0
  652. data/lib/puppet/parser/parser_support.rb +195 -0
  653. data/lib/puppet/parser/relationship.rb +62 -0
  654. data/lib/puppet/parser/resource.rb +277 -0
  655. data/lib/puppet/parser/resource/param.rb +25 -0
  656. data/lib/puppet/parser/scope.rb +906 -0
  657. data/lib/puppet/parser/templatewrapper.rb +127 -0
  658. data/lib/puppet/parser/type_loader.rb +152 -0
  659. data/lib/puppet/parser/yaml_trimmer.rb +7 -0
  660. data/lib/puppet/pops.rb +118 -0
  661. data/lib/puppet/pops/adaptable.rb +190 -0
  662. data/lib/puppet/pops/adapters.rb +109 -0
  663. data/lib/puppet/pops/binder/binder.rb +393 -0
  664. data/lib/puppet/pops/binder/binder_issues.rb +122 -0
  665. data/lib/puppet/pops/binder/bindings_checker.rb +197 -0
  666. data/lib/puppet/pops/binder/bindings_composer.rb +175 -0
  667. data/lib/puppet/pops/binder/bindings_factory.rb +805 -0
  668. data/lib/puppet/pops/binder/bindings_label_provider.rb +43 -0
  669. data/lib/puppet/pops/binder/bindings_loader.rb +88 -0
  670. data/lib/puppet/pops/binder/bindings_model.rb +68 -0
  671. data/lib/puppet/pops/binder/bindings_model_dumper.rb +187 -0
  672. data/lib/puppet/pops/binder/bindings_model_meta.rb +215 -0
  673. data/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
  674. data/lib/puppet/pops/binder/config/binder_config.rb +107 -0
  675. data/lib/puppet/pops/binder/config/binder_config_checker.rb +142 -0
  676. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
  677. data/lib/puppet/pops/binder/config/issues.rb +86 -0
  678. data/lib/puppet/pops/binder/injector.rb +767 -0
  679. data/lib/puppet/pops/binder/injector_entry.rb +57 -0
  680. data/lib/puppet/pops/binder/key_factory.rb +67 -0
  681. data/lib/puppet/pops/binder/lookup.rb +199 -0
  682. data/lib/puppet/pops/binder/producers.rb +826 -0
  683. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
  684. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
  685. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +53 -0
  686. data/lib/puppet/pops/binder/system_bindings.rb +60 -0
  687. data/lib/puppet/pops/containment.rb +104 -0
  688. data/lib/puppet/pops/evaluator/access_operator.rb +604 -0
  689. data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +175 -0
  690. data/lib/puppet/pops/evaluator/callable_signature.rb +100 -0
  691. data/lib/puppet/pops/evaluator/closure.rb +228 -0
  692. data/lib/puppet/pops/evaluator/compare_operator.rb +172 -0
  693. data/lib/puppet/pops/evaluator/epp_evaluator.rb +88 -0
  694. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1115 -0
  695. data/lib/puppet/pops/evaluator/external_syntax_support.rb +49 -0
  696. data/lib/puppet/pops/evaluator/relationship_operator.rb +157 -0
  697. data/lib/puppet/pops/evaluator/runtime3_support.rb +573 -0
  698. data/lib/puppet/pops/functions/dispatch.rb +76 -0
  699. data/lib/puppet/pops/functions/dispatcher.rb +70 -0
  700. data/lib/puppet/pops/functions/function.rb +77 -0
  701. data/lib/puppet/pops/issue_reporter.rb +87 -0
  702. data/lib/puppet/pops/issues.rb +548 -0
  703. data/lib/puppet/pops/label_provider.rb +76 -0
  704. data/lib/puppet/pops/loader/base_loader.rb +102 -0
  705. data/lib/puppet/pops/loader/dependency_loader.rb +60 -0
  706. data/lib/puppet/pops/loader/gem_support.rb +49 -0
  707. data/lib/puppet/pops/loader/loader.rb +180 -0
  708. data/lib/puppet/pops/loader/loader_paths.rb +118 -0
  709. data/lib/puppet/pops/loader/module_loaders.rb +242 -0
  710. data/lib/puppet/pops/loader/null_loader.rb +44 -0
  711. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +34 -0
  712. data/lib/puppet/pops/loader/simple_environment_loader.rb +20 -0
  713. data/lib/puppet/pops/loader/static_loader.rb +79 -0
  714. data/lib/puppet/pops/loader/uri_helper.rb +22 -0
  715. data/lib/puppet/pops/loaders.rb +240 -0
  716. data/lib/puppet/pops/model/ast_transformer.rb +643 -0
  717. data/lib/puppet/pops/model/ast_tree_dumper.rb +386 -0
  718. data/lib/puppet/pops/model/factory.rb +1040 -0
  719. data/lib/puppet/pops/model/model.rb +114 -0
  720. data/lib/puppet/pops/model/model_label_provider.rb +106 -0
  721. data/lib/puppet/pops/model/model_meta.rb +576 -0
  722. data/lib/puppet/pops/model/model_tree_dumper.rb +407 -0
  723. data/lib/puppet/pops/model/tree_dumper.rb +59 -0
  724. data/lib/puppet/pops/parser/code_merger.rb +17 -0
  725. data/lib/puppet/pops/parser/egrammar.ra +757 -0
  726. data/lib/puppet/pops/parser/eparser.rb +2655 -0
  727. data/lib/puppet/pops/parser/epp_parser.rb +51 -0
  728. data/lib/puppet/pops/parser/epp_support.rb +247 -0
  729. data/lib/puppet/pops/parser/evaluating_parser.rb +140 -0
  730. data/lib/puppet/pops/parser/heredoc_support.rb +139 -0
  731. data/lib/puppet/pops/parser/interpolation_support.rb +231 -0
  732. data/lib/puppet/pops/parser/lexer2.rb +696 -0
  733. data/lib/puppet/pops/parser/lexer_support.rb +113 -0
  734. data/lib/puppet/pops/parser/locatable.rb +23 -0
  735. data/lib/puppet/pops/parser/locator.rb +291 -0
  736. data/lib/puppet/pops/parser/parser_support.rb +213 -0
  737. data/lib/puppet/pops/parser/slurp_support.rb +95 -0
  738. data/lib/puppet/pops/patterns.rb +44 -0
  739. data/lib/puppet/pops/semantic_error.rb +17 -0
  740. data/lib/puppet/pops/types/class_loader.rb +129 -0
  741. data/lib/puppet/pops/types/enumeration.rb +34 -0
  742. data/lib/puppet/pops/types/type_calculator.rb +1698 -0
  743. data/lib/puppet/pops/types/type_factory.rb +432 -0
  744. data/lib/puppet/pops/types/type_parser.rb +475 -0
  745. data/lib/puppet/pops/types/types.rb +397 -0
  746. data/lib/puppet/pops/types/types_meta.rb +223 -0
  747. data/lib/puppet/pops/utils.rb +122 -0
  748. data/lib/puppet/pops/validation.rb +432 -0
  749. data/lib/puppet/pops/validation/checker4_0.rb +760 -0
  750. data/lib/puppet/pops/validation/validator_factory_4_0.rb +30 -0
  751. data/lib/puppet/pops/visitable.rb +6 -0
  752. data/lib/puppet/pops/visitor.rb +89 -0
  753. data/lib/puppet/property.rb +617 -0
  754. data/lib/puppet/property/boolean.rb +7 -0
  755. data/lib/puppet/property/ensure.rb +105 -0
  756. data/lib/puppet/property/keyvalue.rb +95 -0
  757. data/lib/puppet/property/list.rb +78 -0
  758. data/lib/puppet/property/ordered_list.rb +29 -0
  759. data/lib/puppet/provider.rb +651 -0
  760. data/lib/puppet/provider/aixobject.rb +392 -0
  761. data/lib/puppet/provider/augeas/augeas.rb +509 -0
  762. data/lib/puppet/provider/cisco.rb +9 -0
  763. data/lib/puppet/provider/command.rb +25 -0
  764. data/lib/puppet/provider/computer/computer.rb +20 -0
  765. data/lib/puppet/provider/confine.rb +6 -0
  766. data/lib/puppet/provider/cron/crontab.rb +260 -0
  767. data/lib/puppet/provider/exec.rb +100 -0
  768. data/lib/puppet/provider/exec/posix.rb +48 -0
  769. data/lib/puppet/provider/exec/shell.rb +25 -0
  770. data/lib/puppet/provider/exec/windows.rb +55 -0
  771. data/lib/puppet/provider/file/posix.rb +136 -0
  772. data/lib/puppet/provider/file/windows.rb +104 -0
  773. data/lib/puppet/provider/group/aix.rb +141 -0
  774. data/lib/puppet/provider/group/directoryservice.rb +12 -0
  775. data/lib/puppet/provider/group/groupadd.rb +85 -0
  776. data/lib/puppet/provider/group/ldap.rb +45 -0
  777. data/lib/puppet/provider/group/pw.rb +48 -0
  778. data/lib/puppet/provider/group/windows_adsi.rb +86 -0
  779. data/lib/puppet/provider/host/parsed.rb +44 -0
  780. data/lib/puppet/provider/interface/cisco.rb +27 -0
  781. data/lib/puppet/provider/ldap.rb +137 -0
  782. data/lib/puppet/provider/macauthorization/macauthorization.rb +309 -0
  783. data/lib/puppet/provider/mailalias/aliases.rb +39 -0
  784. data/lib/puppet/provider/maillist/mailman.rb +108 -0
  785. data/lib/puppet/provider/mcx/mcxcontent.rb +172 -0
  786. data/lib/puppet/provider/mount.rb +58 -0
  787. data/lib/puppet/provider/mount/parsed.rb +123 -0
  788. data/lib/puppet/provider/naginator.rb +63 -0
  789. data/lib/puppet/provider/nameservice.rb +292 -0
  790. data/lib/puppet/provider/nameservice/directoryservice.rb +588 -0
  791. data/lib/puppet/provider/nameservice/objectadd.rb +33 -0
  792. data/lib/puppet/provider/nameservice/pw.rb +21 -0
  793. data/lib/puppet/provider/network_device.rb +68 -0
  794. data/lib/puppet/provider/package.rb +52 -0
  795. data/lib/puppet/provider/package/aix.rb +152 -0
  796. data/lib/puppet/provider/package/appdmg.rb +106 -0
  797. data/lib/puppet/provider/package/apple.rb +47 -0
  798. data/lib/puppet/provider/package/apt.rb +116 -0
  799. data/lib/puppet/provider/package/aptitude.rb +29 -0
  800. data/lib/puppet/provider/package/aptrpm.rb +83 -0
  801. data/lib/puppet/provider/package/blastwave.rb +111 -0
  802. data/lib/puppet/provider/package/dpkg.rb +165 -0
  803. data/lib/puppet/provider/package/fink.rb +79 -0
  804. data/lib/puppet/provider/package/freebsd.rb +47 -0
  805. data/lib/puppet/provider/package/gem.rb +135 -0
  806. data/lib/puppet/provider/package/hpux.rb +44 -0
  807. data/lib/puppet/provider/package/macports.rb +107 -0
  808. data/lib/puppet/provider/package/msi.rb +125 -0
  809. data/lib/puppet/provider/package/nim.rb +280 -0
  810. data/lib/puppet/provider/package/openbsd.rb +228 -0
  811. data/lib/puppet/provider/package/opkg.rb +76 -0
  812. data/lib/puppet/provider/package/pacman.rb +234 -0
  813. data/lib/puppet/provider/package/pip.rb +119 -0
  814. data/lib/puppet/provider/package/pkg.rb +190 -0
  815. data/lib/puppet/provider/package/pkgdmg.rb +149 -0
  816. data/lib/puppet/provider/package/pkgin.rb +87 -0
  817. data/lib/puppet/provider/package/pkgutil.rb +186 -0
  818. data/lib/puppet/provider/package/portage.rb +149 -0
  819. data/lib/puppet/provider/package/ports.rb +94 -0
  820. data/lib/puppet/provider/package/portupgrade.rb +241 -0
  821. data/lib/puppet/provider/package/rpm.rb +187 -0
  822. data/lib/puppet/provider/package/rug.rb +52 -0
  823. data/lib/puppet/provider/package/sun.rb +132 -0
  824. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  825. data/lib/puppet/provider/package/up2date.rb +40 -0
  826. data/lib/puppet/provider/package/urpmi.rb +55 -0
  827. data/lib/puppet/provider/package/windows.rb +113 -0
  828. data/lib/puppet/provider/package/windows/exe_package.rb +70 -0
  829. data/lib/puppet/provider/package/windows/msi_package.rb +62 -0
  830. data/lib/puppet/provider/package/windows/package.rb +92 -0
  831. data/lib/puppet/provider/package/yum.rb +199 -0
  832. data/lib/puppet/provider/package/yumhelper.py +159 -0
  833. data/lib/puppet/provider/package/zypper.rb +90 -0
  834. data/lib/puppet/provider/parsedfile.rb +459 -0
  835. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +559 -0
  836. data/lib/puppet/provider/selboolean/getsetsebool.rb +47 -0
  837. data/lib/puppet/provider/selmodule/semodule.rb +134 -0
  838. data/lib/puppet/provider/service/base.rb +106 -0
  839. data/lib/puppet/provider/service/bsd.rb +51 -0
  840. data/lib/puppet/provider/service/daemontools.rb +194 -0
  841. data/lib/puppet/provider/service/debian.rb +64 -0
  842. data/lib/puppet/provider/service/freebsd.rb +143 -0
  843. data/lib/puppet/provider/service/gentoo.rb +45 -0
  844. data/lib/puppet/provider/service/init.rb +169 -0
  845. data/lib/puppet/provider/service/launchd.rb +353 -0
  846. data/lib/puppet/provider/service/openbsd.rb +342 -0
  847. data/lib/puppet/provider/service/openrc.rb +71 -0
  848. data/lib/puppet/provider/service/openwrt.rb +36 -0
  849. data/lib/puppet/provider/service/redhat.rb +67 -0
  850. data/lib/puppet/provider/service/runit.rb +111 -0
  851. data/lib/puppet/provider/service/service.rb +42 -0
  852. data/lib/puppet/provider/service/smf.rb +116 -0
  853. data/lib/puppet/provider/service/src.rb +120 -0
  854. data/lib/puppet/provider/service/systemd.rb +65 -0
  855. data/lib/puppet/provider/service/upstart.rb +355 -0
  856. data/lib/puppet/provider/service/windows.rb +106 -0
  857. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +89 -0
  858. data/lib/puppet/provider/sshkey/parsed.rb +40 -0
  859. data/lib/puppet/provider/user/aix.rb +369 -0
  860. data/lib/puppet/provider/user/directoryservice.rb +685 -0
  861. data/lib/puppet/provider/user/hpux.rb +66 -0
  862. data/lib/puppet/provider/user/ldap.rb +128 -0
  863. data/lib/puppet/provider/user/pw.rb +97 -0
  864. data/lib/puppet/provider/user/user_role_add.rb +210 -0
  865. data/lib/puppet/provider/user/useradd.rb +231 -0
  866. data/lib/puppet/provider/user/windows_adsi.rb +99 -0
  867. data/lib/puppet/provider/vlan/cisco.rb +28 -0
  868. data/lib/puppet/provider/yumrepo/inifile.rb +300 -0
  869. data/lib/puppet/provider/zfs/zfs.rb +83 -0
  870. data/lib/puppet/provider/zone/solaris.rb +361 -0
  871. data/lib/puppet/provider/zpool/zpool.rb +120 -0
  872. data/lib/puppet/rails.rb +139 -0
  873. data/lib/puppet/rails/benchmark.rb +63 -0
  874. data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +13 -0
  875. data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +13 -0
  876. data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
  877. data/lib/puppet/rails/database/004_add_inventory_service_tables.rb +36 -0
  878. data/lib/puppet/rails/database/schema.rb +136 -0
  879. data/lib/puppet/rails/fact_name.rb +7 -0
  880. data/lib/puppet/rails/fact_value.rb +10 -0
  881. data/lib/puppet/rails/host.rb +258 -0
  882. data/lib/puppet/rails/inventory_fact.rb +5 -0
  883. data/lib/puppet/rails/inventory_node.rb +43 -0
  884. data/lib/puppet/rails/param_name.rb +25 -0
  885. data/lib/puppet/rails/param_value.rb +74 -0
  886. data/lib/puppet/rails/puppet_tag.rb +10 -0
  887. data/lib/puppet/rails/resource.rb +235 -0
  888. data/lib/puppet/rails/resource_tag.rb +26 -0
  889. data/lib/puppet/rails/source_file.rb +8 -0
  890. data/lib/puppet/reference/configuration.rb +73 -0
  891. data/lib/puppet/reference/function.rb +17 -0
  892. data/lib/puppet/reference/indirection.rb +71 -0
  893. data/lib/puppet/reference/metaparameter.rb +44 -0
  894. data/lib/puppet/reference/providers.rb +119 -0
  895. data/lib/puppet/reference/report.rb +23 -0
  896. data/lib/puppet/reference/type.rb +116 -0
  897. data/lib/puppet/relationship.rb +103 -0
  898. data/lib/puppet/reports.rb +89 -0
  899. data/lib/puppet/reports/http.rb +31 -0
  900. data/lib/puppet/reports/log.rb +14 -0
  901. data/lib/puppet/reports/rrdgraph.rb +128 -0
  902. data/lib/puppet/reports/store.rb +68 -0
  903. data/lib/puppet/reports/tagmail.rb +179 -0
  904. data/lib/puppet/resource.rb +610 -0
  905. data/lib/puppet/resource/catalog.rb +554 -0
  906. data/lib/puppet/resource/status.rb +155 -0
  907. data/lib/puppet/resource/type.rb +413 -0
  908. data/lib/puppet/resource/type_collection.rb +230 -0
  909. data/lib/puppet/resource/type_collection_helper.rb +7 -0
  910. data/lib/puppet/run.rb +109 -0
  911. data/lib/puppet/scheduler.rb +16 -0
  912. data/lib/puppet/scheduler/job.rb +53 -0
  913. data/lib/puppet/scheduler/scheduler.rb +44 -0
  914. data/lib/puppet/scheduler/splay_job.rb +32 -0
  915. data/lib/puppet/scheduler/timer.rb +13 -0
  916. data/lib/puppet/settings.rb +1392 -0
  917. data/lib/puppet/settings/array_setting.rb +17 -0
  918. data/lib/puppet/settings/autosign_setting.rb +22 -0
  919. data/lib/puppet/settings/base_setting.rb +195 -0
  920. data/lib/puppet/settings/boolean_setting.rb +32 -0
  921. data/lib/puppet/settings/config_file.rb +139 -0
  922. data/lib/puppet/settings/directory_setting.rb +12 -0
  923. data/lib/puppet/settings/duration_setting.rb +32 -0
  924. data/lib/puppet/settings/enum_setting.rb +16 -0
  925. data/lib/puppet/settings/environment_conf.rb +175 -0
  926. data/lib/puppet/settings/errors.rb +11 -0
  927. data/lib/puppet/settings/file_or_directory_setting.rb +34 -0
  928. data/lib/puppet/settings/file_setting.rb +234 -0
  929. data/lib/puppet/settings/ini_file.rb +171 -0
  930. data/lib/puppet/settings/path_setting.rb +8 -0
  931. data/lib/puppet/settings/priority_setting.rb +42 -0
  932. data/lib/puppet/settings/string_setting.rb +9 -0
  933. data/lib/puppet/settings/terminus_setting.rb +14 -0
  934. data/lib/puppet/settings/ttl_setting.rb +48 -0
  935. data/lib/puppet/settings/value_translator.rb +15 -0
  936. data/lib/puppet/ssl.rb +13 -0
  937. data/lib/puppet/ssl/base.rb +140 -0
  938. data/lib/puppet/ssl/certificate.rb +65 -0
  939. data/lib/puppet/ssl/certificate_authority.rb +517 -0
  940. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +45 -0
  941. data/lib/puppet/ssl/certificate_authority/interface.rb +178 -0
  942. data/lib/puppet/ssl/certificate_factory.rb +219 -0
  943. data/lib/puppet/ssl/certificate_request.rb +299 -0
  944. data/lib/puppet/ssl/certificate_request_attributes.rb +37 -0
  945. data/lib/puppet/ssl/certificate_revocation_list.rb +110 -0
  946. data/lib/puppet/ssl/certificate_signer.rb +22 -0
  947. data/lib/puppet/ssl/configuration.rb +64 -0
  948. data/lib/puppet/ssl/digest.rb +20 -0
  949. data/lib/puppet/ssl/host.rb +372 -0
  950. data/lib/puppet/ssl/inventory.rb +55 -0
  951. data/lib/puppet/ssl/key.rb +59 -0
  952. data/lib/puppet/ssl/oids.rb +78 -0
  953. data/lib/puppet/ssl/validator.rb +60 -0
  954. data/lib/puppet/ssl/validator/default_validator.rb +154 -0
  955. data/lib/puppet/ssl/validator/no_validator.rb +20 -0
  956. data/lib/puppet/status.rb +45 -0
  957. data/lib/puppet/test/test_helper.rb +243 -0
  958. data/lib/puppet/transaction.rb +369 -0
  959. data/lib/puppet/transaction/additional_resource_generator.rb +126 -0
  960. data/lib/puppet/transaction/event.rb +107 -0
  961. data/lib/puppet/transaction/event_manager.rb +122 -0
  962. data/lib/puppet/transaction/report.rb +383 -0
  963. data/lib/puppet/transaction/resource_harness.rb +251 -0
  964. data/lib/puppet/type.rb +2452 -0
  965. data/lib/puppet/type/augeas.rb +201 -0
  966. data/lib/puppet/type/component.rb +77 -0
  967. data/lib/puppet/type/computer.rb +66 -0
  968. data/lib/puppet/type/cron.rb +488 -0
  969. data/lib/puppet/type/exec.rb +592 -0
  970. data/lib/puppet/type/file.rb +933 -0
  971. data/lib/puppet/type/file/checksum.rb +43 -0
  972. data/lib/puppet/type/file/content.rb +241 -0
  973. data/lib/puppet/type/file/ctime.rb +20 -0
  974. data/lib/puppet/type/file/ensure.rb +189 -0
  975. data/lib/puppet/type/file/group.rb +41 -0
  976. data/lib/puppet/type/file/mode.rb +168 -0
  977. data/lib/puppet/type/file/mtime.rb +18 -0
  978. data/lib/puppet/type/file/owner.rb +44 -0
  979. data/lib/puppet/type/file/selcontext.rb +124 -0
  980. data/lib/puppet/type/file/source.rb +259 -0
  981. data/lib/puppet/type/file/target.rb +87 -0
  982. data/lib/puppet/type/file/type.rb +19 -0
  983. data/lib/puppet/type/filebucket.rb +122 -0
  984. data/lib/puppet/type/group.rb +188 -0
  985. data/lib/puppet/type/host.rb +86 -0
  986. data/lib/puppet/type/interface.rb +116 -0
  987. data/lib/puppet/type/k5login.rb +88 -0
  988. data/lib/puppet/type/macauthorization.rb +167 -0
  989. data/lib/puppet/type/mailalias.rb +48 -0
  990. data/lib/puppet/type/maillist.rb +62 -0
  991. data/lib/puppet/type/mcx.rb +98 -0
  992. data/lib/puppet/type/mount.rb +286 -0
  993. data/lib/puppet/type/nagios_command.rb +3 -0
  994. data/lib/puppet/type/nagios_contact.rb +3 -0
  995. data/lib/puppet/type/nagios_contactgroup.rb +3 -0
  996. data/lib/puppet/type/nagios_host.rb +3 -0
  997. data/lib/puppet/type/nagios_hostdependency.rb +3 -0
  998. data/lib/puppet/type/nagios_hostescalation.rb +3 -0
  999. data/lib/puppet/type/nagios_hostextinfo.rb +3 -0
  1000. data/lib/puppet/type/nagios_hostgroup.rb +3 -0
  1001. data/lib/puppet/type/nagios_service.rb +3 -0
  1002. data/lib/puppet/type/nagios_servicedependency.rb +3 -0
  1003. data/lib/puppet/type/nagios_serviceescalation.rb +3 -0
  1004. data/lib/puppet/type/nagios_serviceextinfo.rb +3 -0
  1005. data/lib/puppet/type/nagios_servicegroup.rb +3 -0
  1006. data/lib/puppet/type/nagios_timeperiod.rb +3 -0
  1007. data/lib/puppet/type/notify.rb +44 -0
  1008. data/lib/puppet/type/package.rb +466 -0
  1009. data/lib/puppet/type/resources.rb +187 -0
  1010. data/lib/puppet/type/router.rb +17 -0
  1011. data/lib/puppet/type/schedule.rb +469 -0
  1012. data/lib/puppet/type/scheduled_task.rb +169 -0
  1013. data/lib/puppet/type/selboolean.rb +26 -0
  1014. data/lib/puppet/type/selmodule.rb +59 -0
  1015. data/lib/puppet/type/service.rb +234 -0
  1016. data/lib/puppet/type/ssh_authorized_key.rb +153 -0
  1017. data/lib/puppet/type/sshkey.rb +73 -0
  1018. data/lib/puppet/type/stage.rb +27 -0
  1019. data/lib/puppet/type/tidy.rb +324 -0
  1020. data/lib/puppet/type/user.rb +688 -0
  1021. data/lib/puppet/type/vlan.rb +26 -0
  1022. data/lib/puppet/type/whit.rb +34 -0
  1023. data/lib/puppet/type/yumrepo.rb +363 -0
  1024. data/lib/puppet/type/zfs.rb +150 -0
  1025. data/lib/puppet/type/zone.rb +382 -0
  1026. data/lib/puppet/type/zpool.rb +91 -0
  1027. data/lib/puppet/util.rb +554 -0
  1028. data/lib/puppet/util/autoload.rb +227 -0
  1029. data/lib/puppet/util/backups.rb +86 -0
  1030. data/lib/puppet/util/cacher.rb +74 -0
  1031. data/lib/puppet/util/checksums.rb +202 -0
  1032. data/lib/puppet/util/classgen.rb +236 -0
  1033. data/lib/puppet/util/colors.rb +217 -0
  1034. data/lib/puppet/util/command_line.rb +199 -0
  1035. data/lib/puppet/util/command_line/puppet_option_parser.rb +87 -0
  1036. data/lib/puppet/util/command_line/trollop.rb +824 -0
  1037. data/lib/puppet/util/constant_inflector.rb +24 -0
  1038. data/lib/puppet/util/diff.rb +79 -0
  1039. data/lib/puppet/util/docs.rb +128 -0
  1040. data/lib/puppet/util/errors.rb +106 -0
  1041. data/lib/puppet/util/execution.rb +327 -0
  1042. data/lib/puppet/util/execution_stub.rb +26 -0
  1043. data/lib/puppet/util/feature.rb +97 -0
  1044. data/lib/puppet/util/file_watcher.rb +28 -0
  1045. data/lib/puppet/util/fileparsing.rb +376 -0
  1046. data/lib/puppet/util/filetype.rb +303 -0
  1047. data/lib/puppet/util/http_proxy.rb +65 -0
  1048. data/lib/puppet/util/inifile.rb +341 -0
  1049. data/lib/puppet/util/inline_docs.rb +26 -0
  1050. data/lib/puppet/util/instance_loader.rb +81 -0
  1051. data/lib/puppet/util/instrumentation.rb +152 -0
  1052. data/lib/puppet/util/instrumentation/data.rb +46 -0
  1053. data/lib/puppet/util/instrumentation/indirection_probe.rb +41 -0
  1054. data/lib/puppet/util/instrumentation/instrumentable.rb +136 -0
  1055. data/lib/puppet/util/instrumentation/listener.rb +72 -0
  1056. data/lib/puppet/util/instrumentation/listeners/log.rb +23 -0
  1057. data/lib/puppet/util/instrumentation/listeners/performance.rb +24 -0
  1058. data/lib/puppet/util/json_lockfile.rb +44 -0
  1059. data/lib/puppet/util/ldap.rb +2 -0
  1060. data/lib/puppet/util/ldap/connection.rb +71 -0
  1061. data/lib/puppet/util/ldap/generator.rb +42 -0
  1062. data/lib/puppet/util/ldap/manager.rb +278 -0
  1063. data/lib/puppet/util/libuser.conf +15 -0
  1064. data/lib/puppet/util/libuser.rb +12 -0
  1065. data/lib/puppet/util/limits.rb +12 -0
  1066. data/lib/puppet/util/lockfile.rb +66 -0
  1067. data/lib/puppet/util/log.rb +343 -0
  1068. data/lib/puppet/util/log/destination.rb +49 -0
  1069. data/lib/puppet/util/log/destinations.rb +232 -0
  1070. data/lib/puppet/util/log/rate_limited_logger.rb +40 -0
  1071. data/lib/puppet/util/logging.rb +181 -0
  1072. data/lib/puppet/util/metaid.rb +21 -0
  1073. data/lib/puppet/util/methodhelper.rb +32 -0
  1074. data/lib/puppet/util/metric.rb +210 -0
  1075. data/lib/puppet/util/monkey_patches.rb +225 -0
  1076. data/lib/puppet/util/monkey_patches/lines.rb +13 -0
  1077. data/lib/puppet/util/nagios_maker.rb +85 -0
  1078. data/lib/puppet/util/network_device.rb +17 -0
  1079. data/lib/puppet/util/network_device/base.rb +27 -0
  1080. data/lib/puppet/util/network_device/cisco.rb +4 -0
  1081. data/lib/puppet/util/network_device/cisco/device.rb +267 -0
  1082. data/lib/puppet/util/network_device/cisco/facts.rb +72 -0
  1083. data/lib/puppet/util/network_device/cisco/interface.rb +82 -0
  1084. data/lib/puppet/util/network_device/config.rb +93 -0
  1085. data/lib/puppet/util/network_device/ipcalc.rb +68 -0
  1086. data/lib/puppet/util/network_device/transport.rb +5 -0
  1087. data/lib/puppet/util/network_device/transport/base.rb +26 -0
  1088. data/lib/puppet/util/network_device/transport/ssh.rb +122 -0
  1089. data/lib/puppet/util/network_device/transport/telnet.rb +44 -0
  1090. data/lib/puppet/util/package.rb +31 -0
  1091. data/lib/puppet/util/pidlock.rb +62 -0
  1092. data/lib/puppet/util/platform.rb +22 -0
  1093. data/lib/puppet/util/plugins.rb +82 -0
  1094. data/lib/puppet/util/posix.rb +137 -0
  1095. data/lib/puppet/util/profiler.rb +53 -0
  1096. data/lib/puppet/util/profiler/aggregate.rb +85 -0
  1097. data/lib/puppet/util/profiler/around_profiler.rb +67 -0
  1098. data/lib/puppet/util/profiler/logging.rb +48 -0
  1099. data/lib/puppet/util/profiler/object_counts.rb +17 -0
  1100. data/lib/puppet/util/profiler/wall_clock.rb +35 -0
  1101. data/lib/puppet/util/provider_features.rb +184 -0
  1102. data/lib/puppet/util/pson.rb +13 -0
  1103. data/lib/puppet/util/queue.rb +96 -0
  1104. data/lib/puppet/util/queue/stomp.rb +60 -0
  1105. data/lib/puppet/util/rails/cache_accumulator.rb +65 -0
  1106. data/lib/puppet/util/rails/collection_merger.rb +17 -0
  1107. data/lib/puppet/util/rails/reference_serializer.rb +32 -0
  1108. data/lib/puppet/util/rdoc.rb +96 -0
  1109. data/lib/puppet/util/rdoc/code_objects.rb +334 -0
  1110. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +910 -0
  1111. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1085 -0
  1112. data/lib/puppet/util/rdoc/parser.rb +22 -0
  1113. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +477 -0
  1114. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc1.rb +19 -0
  1115. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
  1116. data/lib/puppet/util/reference.rb +124 -0
  1117. data/lib/puppet/util/resource_template.rb +61 -0
  1118. data/lib/puppet/util/retryaction.rb +47 -0
  1119. data/lib/puppet/util/rubygems.rb +75 -0
  1120. data/lib/puppet/util/run_mode.rb +82 -0
  1121. data/lib/puppet/util/selinux.rb +222 -0
  1122. data/lib/puppet/util/ssl.rb +53 -0
  1123. data/lib/puppet/util/storage.rb +89 -0
  1124. data/lib/puppet/util/suidmanager.rb +191 -0
  1125. data/lib/puppet/util/symbolic_file_mode.rb +144 -0
  1126. data/lib/puppet/util/tag_set.rb +41 -0
  1127. data/lib/puppet/util/tagging.rb +56 -0
  1128. data/lib/puppet/util/terminal.rb +16 -0
  1129. data/lib/puppet/util/user_attr.rb +21 -0
  1130. data/lib/puppet/util/warnings.rb +32 -0
  1131. data/lib/puppet/util/watched_file.rb +37 -0
  1132. data/lib/puppet/util/watcher.rb +17 -0
  1133. data/lib/puppet/util/watcher/change_watcher.rb +33 -0
  1134. data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
  1135. data/lib/puppet/util/watcher/timer.rb +19 -0
  1136. data/lib/puppet/util/windows.rb +28 -0
  1137. data/lib/puppet/util/windows/access_control_entry.rb +84 -0
  1138. data/lib/puppet/util/windows/access_control_list.rb +113 -0
  1139. data/lib/puppet/util/windows/adsi.rb +430 -0
  1140. data/lib/puppet/util/windows/api_types.rb +255 -0
  1141. data/lib/puppet/util/windows/com.rb +224 -0
  1142. data/lib/puppet/util/windows/error.rb +83 -0
  1143. data/lib/puppet/util/windows/file.rb +401 -0
  1144. data/lib/puppet/util/windows/process.rb +354 -0
  1145. data/lib/puppet/util/windows/registry.rb +80 -0
  1146. data/lib/puppet/util/windows/root_certs.rb +108 -0
  1147. data/lib/puppet/util/windows/security.rb +920 -0
  1148. data/lib/puppet/util/windows/security_descriptor.rb +62 -0
  1149. data/lib/puppet/util/windows/sid.rb +162 -0
  1150. data/lib/puppet/util/windows/string.rb +16 -0
  1151. data/lib/puppet/util/windows/taskscheduler.rb +1241 -0
  1152. data/lib/puppet/util/windows/user.rb +292 -0
  1153. data/lib/puppet/util/yaml.rb +24 -0
  1154. data/lib/puppet/util/zaml.rb +419 -0
  1155. data/lib/puppet/vendor.rb +57 -0
  1156. data/lib/puppet/vendor/load_pathspec.rb +1 -0
  1157. data/lib/puppet/vendor/load_rgen.rb +1 -0
  1158. data/lib/puppet/vendor/load_safe_yaml.rb +1 -0
  1159. data/lib/puppet/vendor/load_semantic.rb +1 -0
  1160. data/lib/puppet/vendor/pathspec/CHANGELOG.md +2 -0
  1161. data/lib/puppet/vendor/pathspec/LICENSE +201 -0
  1162. data/lib/puppet/vendor/pathspec/PUPPET_README.md +6 -0
  1163. data/lib/puppet/vendor/pathspec/README.md +53 -0
  1164. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +121 -0
  1165. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +275 -0
  1166. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +17 -0
  1167. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +14 -0
  1168. data/lib/puppet/vendor/require_vendored.rb +9 -0
  1169. data/lib/puppet/vendor/rgen/CHANGELOG +197 -0
  1170. data/lib/puppet/vendor/rgen/MIT-LICENSE +20 -0
  1171. data/lib/puppet/vendor/rgen/PUPPET_README.md +6 -0
  1172. data/lib/puppet/vendor/rgen/README.rdoc +78 -0
  1173. data/lib/puppet/vendor/rgen/Rakefile +41 -0
  1174. data/lib/puppet/vendor/rgen/TODO +41 -0
  1175. data/lib/puppet/vendor/rgen/anounce.txt +61 -0
  1176. data/lib/puppet/vendor/rgen/design_rationale.txt +71 -0
  1177. data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +54 -0
  1178. data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +32 -0
  1179. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +562 -0
  1180. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +45 -0
  1181. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +43 -0
  1182. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +103 -0
  1183. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +89 -0
  1184. data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +559 -0
  1185. data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +26 -0
  1186. data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +20 -0
  1187. data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +91 -0
  1188. data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +28 -0
  1189. data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +37 -0
  1190. data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +172 -0
  1191. data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +45 -0
  1192. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +218 -0
  1193. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +81 -0
  1194. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +69 -0
  1195. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +47 -0
  1196. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +167 -0
  1197. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +91 -0
  1198. data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +129 -0
  1199. data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +63 -0
  1200. data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +140 -0
  1201. data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +289 -0
  1202. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +66 -0
  1203. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +66 -0
  1204. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +117 -0
  1205. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +169 -0
  1206. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +126 -0
  1207. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +331 -0
  1208. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +94 -0
  1209. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +137 -0
  1210. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +97 -0
  1211. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +128 -0
  1212. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +47 -0
  1213. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +168 -0
  1214. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +224 -0
  1215. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +556 -0
  1216. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +174 -0
  1217. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +89 -0
  1218. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +77 -0
  1219. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +30 -0
  1220. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +168 -0
  1221. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +23 -0
  1222. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +42 -0
  1223. data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +32 -0
  1224. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +334 -0
  1225. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +225 -0
  1226. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +156 -0
  1227. data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +121 -0
  1228. data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +18 -0
  1229. data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +47 -0
  1230. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +116 -0
  1231. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +71 -0
  1232. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +98 -0
  1233. data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +297 -0
  1234. data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +83 -0
  1235. data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +87 -0
  1236. data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +234 -0
  1237. data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +26 -0
  1238. data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +475 -0
  1239. data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +61 -0
  1240. data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +67 -0
  1241. data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +124 -0
  1242. data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +84 -0
  1243. data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +114 -0
  1244. data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +68 -0
  1245. data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +142 -0
  1246. data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +29 -0
  1247. data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +42 -0
  1248. data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +329 -0
  1249. data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +79 -0
  1250. data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +127 -0
  1251. data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +64 -0
  1252. data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +35 -0
  1253. data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +23 -0
  1254. data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +54 -0
  1255. data/lib/puppet/vendor/rgen/test/environment_test.rb +90 -0
  1256. data/lib/puppet/vendor/rgen/test/json_test.rb +171 -0
  1257. data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +1482 -0
  1258. data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +57 -0
  1259. data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +131 -0
  1260. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +98 -0
  1261. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +70 -0
  1262. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +42 -0
  1263. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +44 -0
  1264. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +9 -0
  1265. data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +178 -0
  1266. data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +59 -0
  1267. data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +242 -0
  1268. data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +163 -0
  1269. data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +163 -0
  1270. data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +156 -0
  1271. data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +94 -0
  1272. data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +42 -0
  1273. data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +23 -0
  1274. data/lib/puppet/vendor/rgen/test/model_builder_test.rb +6 -0
  1275. data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +30 -0
  1276. data/lib/puppet/vendor/rgen/test/output_handler_test.rb +58 -0
  1277. data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +48 -0
  1278. data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +102 -0
  1279. data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +117 -0
  1280. data/lib/puppet/vendor/rgen/test/rgen_test.rb +26 -0
  1281. data/lib/puppet/vendor/rgen/test/template_language_test.rb +163 -0
  1282. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +29 -0
  1283. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +9 -0
  1284. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +4 -0
  1285. data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +1 -0
  1286. data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +1 -0
  1287. data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +12 -0
  1288. data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +5 -0
  1289. data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +11 -0
  1290. data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +7 -0
  1291. data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +5 -0
  1292. data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +8 -0
  1293. data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +8 -0
  1294. data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +7 -0
  1295. data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +12 -0
  1296. data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +1 -0
  1297. data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +3 -0
  1298. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +5 -0
  1299. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +3 -0
  1300. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +3 -0
  1301. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +24 -0
  1302. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +13 -0
  1303. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +10 -0
  1304. data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +17 -0
  1305. data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +31 -0
  1306. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +9 -0
  1307. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +3 -0
  1308. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +4 -0
  1309. data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +29 -0
  1310. data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +119 -0
  1311. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
  1312. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +1029 -0
  1313. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +317 -0
  1314. data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +101 -0
  1315. data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +22 -0
  1316. data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +67 -0
  1317. data/lib/puppet/vendor/rgen/test/transformer_test.rb +254 -0
  1318. data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +99 -0
  1319. data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +97 -0
  1320. data/lib/puppet/vendor/rgen/test/util_test.rb +5 -0
  1321. data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +160 -0
  1322. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +94 -0
  1323. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +53 -0
  1324. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +49 -0
  1325. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +75 -0
  1326. data/lib/puppet/vendor/safe_yaml/CHANGES.md +104 -0
  1327. data/lib/puppet/vendor/safe_yaml/Gemfile +11 -0
  1328. data/lib/puppet/vendor/safe_yaml/LICENSE.txt +22 -0
  1329. data/lib/puppet/vendor/safe_yaml/PUPPET_README.md +6 -0
  1330. data/lib/puppet/vendor/safe_yaml/README.md +179 -0
  1331. data/lib/puppet/vendor/safe_yaml/Rakefile +6 -0
  1332. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml.rb +253 -0
  1333. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/deep.rb +34 -0
  1334. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/date.rb +27 -0
  1335. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/hexadecimal.rb +12 -0
  1336. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/sexagesimal.rb +26 -0
  1337. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/psych_handler.rb +92 -0
  1338. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/psych_resolver.rb +52 -0
  1339. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/resolver.rb +94 -0
  1340. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/safe_to_ruby_visitor.rb +17 -0
  1341. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_hack.rb +36 -0
  1342. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_node_monkeypatch.rb +43 -0
  1343. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_resolver.rb +38 -0
  1344. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform.rb +41 -0
  1345. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_boolean.rb +21 -0
  1346. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_date.rb +11 -0
  1347. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_float.rb +33 -0
  1348. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_integer.rb +25 -0
  1349. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_nil.rb +18 -0
  1350. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_symbol.rb +13 -0
  1351. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/transformation_map.rb +47 -0
  1352. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/version.rb +3 -0
  1353. data/lib/puppet/vendor/safe_yaml/run_specs_all_ruby_versions.sh +21 -0
  1354. data/lib/puppet/vendor/safe_yaml/safe_yaml.gemspec +18 -0
  1355. data/lib/puppet/vendor/safe_yaml/spec/exploit.1.9.2.yaml +2 -0
  1356. data/lib/puppet/vendor/safe_yaml/spec/exploit.1.9.3.yaml +2 -0
  1357. data/lib/puppet/vendor/safe_yaml/spec/psych_resolver_spec.rb +10 -0
  1358. data/lib/puppet/vendor/safe_yaml/spec/resolver_specs.rb +250 -0
  1359. data/lib/puppet/vendor/safe_yaml/spec/safe_yaml_spec.rb +702 -0
  1360. data/lib/puppet/vendor/safe_yaml/spec/spec_helper.rb +18 -0
  1361. data/lib/puppet/vendor/safe_yaml/spec/support/exploitable_back_door.rb +29 -0
  1362. data/lib/puppet/vendor/safe_yaml/spec/syck_resolver_spec.rb +10 -0
  1363. data/lib/puppet/vendor/safe_yaml/spec/transform/base64_spec.rb +11 -0
  1364. data/lib/puppet/vendor/safe_yaml/spec/transform/to_date_spec.rb +34 -0
  1365. data/lib/puppet/vendor/safe_yaml/spec/transform/to_float_spec.rb +42 -0
  1366. data/lib/puppet/vendor/safe_yaml/spec/transform/to_integer_spec.rb +59 -0
  1367. data/lib/puppet/vendor/safe_yaml/spec/transform/to_symbol_spec.rb +49 -0
  1368. data/lib/puppet/vendor/safe_yaml_patches.rb +9 -0
  1369. data/lib/puppet/vendor/semantic/Gemfile +20 -0
  1370. data/lib/puppet/vendor/semantic/PUPPET_README.md +6 -0
  1371. data/lib/puppet/vendor/semantic/Rakefile +69 -0
  1372. data/lib/puppet/vendor/semantic/lib/semantic.rb +7 -0
  1373. data/lib/puppet/vendor/semantic/lib/semantic/dependency.rb +181 -0
  1374. data/lib/puppet/vendor/semantic/lib/semantic/dependency/graph.rb +60 -0
  1375. data/lib/puppet/vendor/semantic/lib/semantic/dependency/graph_node.rb +117 -0
  1376. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +46 -0
  1377. data/lib/puppet/vendor/semantic/lib/semantic/dependency/source.rb +25 -0
  1378. data/lib/puppet/vendor/semantic/lib/semantic/dependency/unsatisfiable_graph.rb +31 -0
  1379. data/lib/puppet/vendor/semantic/lib/semantic/version.rb +168 -0
  1380. data/lib/puppet/vendor/semantic/lib/semantic/version_range.rb +424 -0
  1381. data/lib/puppet/vendor/semantic/spec/spec_helper.rb +24 -0
  1382. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +141 -0
  1383. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +162 -0
  1384. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +143 -0
  1385. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +5 -0
  1386. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +44 -0
  1387. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +383 -0
  1388. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +307 -0
  1389. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +608 -0
  1390. data/lib/puppet/version.rb +89 -0
  1391. data/lib/puppetx.rb +89 -0
  1392. data/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
  1393. data/lib/puppetx/puppet/syntax_checker.rb +91 -0
  1394. data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +37 -0
  1395. data/lib/semver.rb +124 -0
  1396. data/man/man5/puppet.conf.5 +1581 -0
  1397. data/man/man8/extlookup2hiera.8 +23 -0
  1398. data/man/man8/puppet-agent.8 +157 -0
  1399. data/man/man8/puppet-apply.8 +80 -0
  1400. data/man/man8/puppet-ca.8 +170 -0
  1401. data/man/man8/puppet-catalog.8 +292 -0
  1402. data/man/man8/puppet-cert.8 +97 -0
  1403. data/man/man8/puppet-certificate.8 +238 -0
  1404. data/man/man8/puppet-certificate_request.8 +168 -0
  1405. data/man/man8/puppet-certificate_revocation_list.8 +165 -0
  1406. data/man/man8/puppet-config.8 +76 -0
  1407. data/man/man8/puppet-describe.8 +51 -0
  1408. data/man/man8/puppet-device.8 +86 -0
  1409. data/man/man8/puppet-doc.8 +119 -0
  1410. data/man/man8/puppet-facts.8 +223 -0
  1411. data/man/man8/puppet-file.8 +215 -0
  1412. data/man/man8/puppet-filebucket.8 +81 -0
  1413. data/man/man8/puppet-help.8 +64 -0
  1414. data/man/man8/puppet-inspect.8 +36 -0
  1415. data/man/man8/puppet-instrumentation_data.8 +141 -0
  1416. data/man/man8/puppet-instrumentation_listener.8 +218 -0
  1417. data/man/man8/puppet-instrumentation_probe.8 +203 -0
  1418. data/man/man8/puppet-key.8 +129 -0
  1419. data/man/man8/puppet-kick.8 +131 -0
  1420. data/man/man8/puppet-man.8 +70 -0
  1421. data/man/man8/puppet-master.8 +78 -0
  1422. data/man/man8/puppet-module.8 +422 -0
  1423. data/man/man8/puppet-node.8 +211 -0
  1424. data/man/man8/puppet-parser.8 +73 -0
  1425. data/man/man8/puppet-plugin.8 +73 -0
  1426. data/man/man8/puppet-queue.8 +55 -0
  1427. data/man/man8/puppet-report.8 +186 -0
  1428. data/man/man8/puppet-resource.8 +84 -0
  1429. data/man/man8/puppet-resource_type.8 +214 -0
  1430. data/man/man8/puppet-secret_agent.8 +70 -0
  1431. data/man/man8/puppet-status.8 +150 -0
  1432. data/man/man8/puppet.8 +10 -0
  1433. data/spec/fixtures/faulty_face/puppet/face/syntax.rb +8 -0
  1434. data/spec/fixtures/hiera.yaml +9 -0
  1435. data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +2 -0
  1436. data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +6 -0
  1437. data/spec/fixtures/integration/node/environment/sitedir/03_empty.pp +0 -0
  1438. data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +2 -0
  1439. data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +2 -0
  1440. data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +6 -0
  1441. data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +1 -0
  1442. data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +2 -0
  1443. data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +19 -0
  1444. data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +18 -0
  1445. data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +15 -0
  1446. data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +4 -0
  1447. data/spec/fixtures/integration/provider/cron/crontab/modify_entry +13 -0
  1448. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +15 -0
  1449. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +6 -0
  1450. data/spec/fixtures/integration/provider/cron/crontab/purged +8 -0
  1451. data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +12 -0
  1452. data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +14 -0
  1453. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +15 -0
  1454. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +28 -0
  1455. data/spec/fixtures/java.tgz +0 -0
  1456. data/spec/fixtures/manifests/site.pp +0 -0
  1457. data/spec/fixtures/releases/jamtur01-apache/Modulefile +2 -0
  1458. data/spec/fixtures/releases/jamtur01-apache/files/httpd +24 -0
  1459. data/spec/fixtures/releases/jamtur01-apache/files/test.vhost +18 -0
  1460. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +21 -0
  1461. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/type/a2mod.rb +12 -0
  1462. data/spec/fixtures/releases/jamtur01-apache/manifests/dev.pp +5 -0
  1463. data/spec/fixtures/releases/jamtur01-apache/manifests/init.pp +34 -0
  1464. data/spec/fixtures/releases/jamtur01-apache/manifests/params.pp +17 -0
  1465. data/spec/fixtures/releases/jamtur01-apache/manifests/php.pp +5 -0
  1466. data/spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp +15 -0
  1467. data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +15 -0
  1468. data/spec/fixtures/releases/jamtur01-apache/metadata.json +1 -0
  1469. data/spec/fixtures/releases/jamtur01-apache/templates/vhost-default.conf.erb +20 -0
  1470. data/spec/fixtures/releases/jamtur01-apache/tests/apache.pp +1 -0
  1471. data/spec/fixtures/releases/jamtur01-apache/tests/dev.pp +1 -0
  1472. data/spec/fixtures/releases/jamtur01-apache/tests/init.pp +1 -0
  1473. data/spec/fixtures/releases/jamtur01-apache/tests/php.pp +1 -0
  1474. data/spec/fixtures/releases/jamtur01-apache/tests/ssl.pp +1 -0
  1475. data/spec/fixtures/releases/jamtur01-apache/tests/vhost.pp +2 -0
  1476. data/spec/fixtures/stdlib.tgz +0 -0
  1477. data/spec/fixtures/unit/indirector/data_binding/hiera/global.yaml +10 -0
  1478. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +1 -0
  1479. data/spec/fixtures/unit/indirector/hiera/global.yaml +10 -0
  1480. data/spec/fixtures/unit/indirector/hiera/invalid.yaml +1 -0
  1481. data/spec/fixtures/unit/module/trailing-comma.json +24 -0
  1482. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +3 -0
  1483. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +3 -0
  1484. data/spec/fixtures/unit/parser/lexer/aliastest.pp +16 -0
  1485. data/spec/fixtures/unit/parser/lexer/append.pp +11 -0
  1486. data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +14 -0
  1487. data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +8 -0
  1488. data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +3 -0
  1489. data/spec/fixtures/unit/parser/lexer/casestatement.pp +65 -0
  1490. data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +15 -0
  1491. data/spec/fixtures/unit/parser/lexer/classincludes.pp +17 -0
  1492. data/spec/fixtures/unit/parser/lexer/classpathtest.pp +11 -0
  1493. data/spec/fixtures/unit/parser/lexer/collection.pp +10 -0
  1494. data/spec/fixtures/unit/parser/lexer/collection_override.pp +8 -0
  1495. data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +20 -0
  1496. data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +11 -0
  1497. data/spec/fixtures/unit/parser/lexer/componentrequire.pp +8 -0
  1498. data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +23 -0
  1499. data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +17 -0
  1500. data/spec/fixtures/unit/parser/lexer/emptyclass.pp +9 -0
  1501. data/spec/fixtures/unit/parser/lexer/emptyexec.pp +3 -0
  1502. data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +9 -0
  1503. data/spec/fixtures/unit/parser/lexer/falsevalues.pp +3 -0
  1504. data/spec/fixtures/unit/parser/lexer/filecreate.pp +11 -0
  1505. data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +5 -0
  1506. data/spec/fixtures/unit/parser/lexer/fqparents.pp +11 -0
  1507. data/spec/fixtures/unit/parser/lexer/funccomma.pp +5 -0
  1508. data/spec/fixtures/unit/parser/lexer/hash.pp +33 -0
  1509. data/spec/fixtures/unit/parser/lexer/ifexpression.pp +12 -0
  1510. data/spec/fixtures/unit/parser/lexer/implicititeration.pp +15 -0
  1511. data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +10 -0
  1512. data/spec/fixtures/unit/parser/lexer/multipleclass.pp +9 -0
  1513. data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +7 -0
  1514. data/spec/fixtures/unit/parser/lexer/multisubs.pp +13 -0
  1515. data/spec/fixtures/unit/parser/lexer/namevartest.pp +9 -0
  1516. data/spec/fixtures/unit/parser/lexer/scopetest.pp +13 -0
  1517. data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +49 -0
  1518. data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +5 -0
  1519. data/spec/fixtures/unit/parser/lexer/simpleselector.pp +38 -0
  1520. data/spec/fixtures/unit/parser/lexer/singleary.pp +19 -0
  1521. data/spec/fixtures/unit/parser/lexer/singlequote.pp +11 -0
  1522. data/spec/fixtures/unit/parser/lexer/singleselector.pp +22 -0
  1523. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +11 -0
  1524. data/spec/fixtures/unit/parser/lexer/tag.pp +9 -0
  1525. data/spec/fixtures/unit/parser/lexer/tagged.pp +35 -0
  1526. data/spec/fixtures/unit/parser/lexer/virtualresources.pp +14 -0
  1527. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +10 -0
  1528. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +10 -0
  1529. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +20 -0
  1530. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppetx/awesome2/echo_scheme_handler.rb +18 -0
  1531. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +5 -0
  1532. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +6 -0
  1533. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +9 -0
  1534. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/usee/lib/puppet/functions/usee/callee.rb +5 -0
  1535. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/user/lib/puppet/functions/user/caller.rb +5 -0
  1536. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/user/metadata.json +9 -0
  1537. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb +5 -0
  1538. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb +5 -0
  1539. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp +3 -0
  1540. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +19 -0
  1541. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb +6 -0
  1542. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp +3 -0
  1543. data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +16 -0
  1544. data/spec/fixtures/unit/pops/parser/lexer/append.pp +11 -0
  1545. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +14 -0
  1546. data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +8 -0
  1547. data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +3 -0
  1548. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +65 -0
  1549. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +15 -0
  1550. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +17 -0
  1551. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +11 -0
  1552. data/spec/fixtures/unit/pops/parser/lexer/collection.pp +10 -0
  1553. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +8 -0
  1554. data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +20 -0
  1555. data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +11 -0
  1556. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +8 -0
  1557. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +23 -0
  1558. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +17 -0
  1559. data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +9 -0
  1560. data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +3 -0
  1561. data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +9 -0
  1562. data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +3 -0
  1563. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +11 -0
  1564. data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +5 -0
  1565. data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +11 -0
  1566. data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +5 -0
  1567. data/spec/fixtures/unit/pops/parser/lexer/hash.pp +33 -0
  1568. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +12 -0
  1569. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +15 -0
  1570. data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +10 -0
  1571. data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +9 -0
  1572. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +7 -0
  1573. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +13 -0
  1574. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +9 -0
  1575. data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +13 -0
  1576. data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +49 -0
  1577. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +5 -0
  1578. data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +38 -0
  1579. data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +19 -0
  1580. data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +11 -0
  1581. data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +22 -0
  1582. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +11 -0
  1583. data/spec/fixtures/unit/pops/parser/lexer/tag.pp +9 -0
  1584. data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +35 -0
  1585. data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +14 -0
  1586. data/spec/fixtures/unit/provider/augeas/augeas/augeas/lenses/test.aug +13 -0
  1587. data/spec/fixtures/unit/provider/augeas/augeas/etc/fstab +10 -0
  1588. data/spec/fixtures/unit/provider/augeas/augeas/etc/hosts +6 -0
  1589. data/spec/fixtures/unit/provider/augeas/augeas/etc/test +3 -0
  1590. data/spec/fixtures/unit/provider/augeas/augeas/test.aug +13 -0
  1591. data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +272 -0
  1592. data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +3 -0
  1593. data/spec/fixtures/unit/provider/cron/parsed/managed +6 -0
  1594. data/spec/fixtures/unit/provider/cron/parsed/simple +9 -0
  1595. data/spec/fixtures/unit/provider/host/parsed/valid_hosts +19 -0
  1596. data/spec/fixtures/unit/provider/mount/mount-output.aix.txt +7 -0
  1597. data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +144 -0
  1598. data/spec/fixtures/unit/provider/mount/parsed/aix.mount +7 -0
  1599. data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +6 -0
  1600. data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +8 -0
  1601. data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +3 -0
  1602. data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +17 -0
  1603. data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +11 -0
  1604. data/spec/fixtures/unit/provider/mount/parsed/linux.mount +5 -0
  1605. data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +9 -0
  1606. data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +8 -0
  1607. data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +4 -0
  1608. data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +4 -0
  1609. data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +11 -0
  1610. data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +6 -0
  1611. data/spec/fixtures/unit/provider/naginator/define_empty_param +6 -0
  1612. data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +4 -0
  1613. data/spec/fixtures/unit/provider/package/gem/line-with-1.8.5-warning +14 -0
  1614. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.detail +19 -0
  1615. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.list +10 -0
  1616. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.query +1 -0
  1617. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +2 -0
  1618. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris10 +1 -0
  1619. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.installed +1 -0
  1620. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known +1 -0
  1621. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed +1 -0
  1622. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known +1 -0
  1623. data/spec/fixtures/unit/provider/package/pkg/incomplete +1 -0
  1624. data/spec/fixtures/unit/provider/package/pkg/publisher +2 -0
  1625. data/spec/fixtures/unit/provider/package/pkg/simple +2 -0
  1626. data/spec/fixtures/unit/provider/package/pkg/solaris11 +2 -0
  1627. data/spec/fixtures/unit/provider/package/pkg/unknown_status +12 -0
  1628. data/spec/fixtures/unit/provider/package/sun/dummy.server +12 -0
  1629. data/spec/fixtures/unit/provider/package/sun/simple +24 -0
  1630. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-SLES11sp1.out +369 -0
  1631. data/spec/fixtures/unit/provider/parsedfile/simple.txt +4 -0
  1632. data/spec/fixtures/unit/provider/service/gentoo/rc_update_show +30 -0
  1633. data/spec/fixtures/unit/provider/service/openrc/rcservice_list +8 -0
  1634. data/spec/fixtures/unit/provider/service/openrc/rcstatus +43 -0
  1635. data/spec/fixtures/unit/provider/service/smf/svcs.out +3 -0
  1636. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +7 -0
  1637. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +7 -0
  1638. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +3 -0
  1639. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +1 -0
  1640. data/spec/fixtures/unit/provider/sshkey/parsed/sample +21 -0
  1641. data/spec/fixtures/unit/provider/zfs/zfs/zfs-list.out +2 -0
  1642. data/spec/fixtures/unit/provider/zpool/zpool/zpool-list.out +2 -0
  1643. data/spec/fixtures/unit/reports/tagmail/tagmail_email.conf +2 -0
  1644. data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +3 -0
  1645. data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +30 -0
  1646. data/spec/fixtures/unit/type/user/authorized_keys +5 -0
  1647. data/spec/fixtures/unit/util/filetype/aixtab_output +44 -0
  1648. data/spec/fixtures/unit/util/filetype/suntab_output +9 -0
  1649. data/spec/fixtures/unit/util/monkey_patches/x509.pem +32 -0
  1650. data/spec/fixtures/unit/util/rdoc/basic.pp +16 -0
  1651. data/spec/fixtures/yaml/report0.25.x.yaml +64 -0
  1652. data/spec/fixtures/yaml/report2.6.x.yaml +190 -0
  1653. data/spec/fixtures/yaml/test.local.yaml +16 -0
  1654. data/spec/integration/agent/logging_spec.rb +182 -0
  1655. data/spec/integration/application/apply_spec.rb +109 -0
  1656. data/spec/integration/application/doc_spec.rb +57 -0
  1657. data/spec/integration/configurer_spec.rb +67 -0
  1658. data/spec/integration/data_binding.rb +100 -0
  1659. data/spec/integration/defaults_spec.rb +341 -0
  1660. data/spec/integration/directory_environments_spec.rb +51 -0
  1661. data/spec/integration/environments/default_manifest_spec.rb +274 -0
  1662. data/spec/integration/faces/ca_spec.rb +354 -0
  1663. data/spec/integration/faces/documentation_spec.rb +58 -0
  1664. data/spec/integration/faces/plugin_spec.rb +62 -0
  1665. data/spec/integration/file_bucket/file_spec.rb +65 -0
  1666. data/spec/integration/file_serving/content_spec.rb +8 -0
  1667. data/spec/integration/file_serving/fileset_spec.rb +13 -0
  1668. data/spec/integration/file_serving/metadata_spec.rb +9 -0
  1669. data/spec/integration/file_serving/terminus_helper_spec.rb +21 -0
  1670. data/spec/integration/indirector/catalog/compiler_spec.rb +65 -0
  1671. data/spec/integration/indirector/catalog/queue_spec.rb +55 -0
  1672. data/spec/integration/indirector/direct_file_server_spec.rb +64 -0
  1673. data/spec/integration/indirector/facts/facter_spec.rb +22 -0
  1674. data/spec/integration/indirector/file_content/file_server_spec.rb +89 -0
  1675. data/spec/integration/indirector/file_metadata/file_server_spec.rb +14 -0
  1676. data/spec/integration/indirector/node/ldap_spec.rb +14 -0
  1677. data/spec/integration/network/authconfig_spec.rb +257 -0
  1678. data/spec/integration/network/formats_spec.rb +91 -0
  1679. data/spec/integration/node/environment_spec.rb +125 -0
  1680. data/spec/integration/node/facts_spec.rb +41 -0
  1681. data/spec/integration/node_spec.rb +82 -0
  1682. data/spec/integration/parser/catalog_spec.rb +125 -0
  1683. data/spec/integration/parser/class_spec.rb +37 -0
  1684. data/spec/integration/parser/collector_spec.rb +276 -0
  1685. data/spec/integration/parser/compiler_spec.rb +525 -0
  1686. data/spec/integration/parser/conditionals_spec.rb +117 -0
  1687. data/spec/integration/parser/functions/require_spec.rb +43 -0
  1688. data/spec/integration/parser/future_compiler_spec.rb +750 -0
  1689. data/spec/integration/parser/node_spec.rb +185 -0
  1690. data/spec/integration/parser/parser_spec.rb +207 -0
  1691. data/spec/integration/parser/resource_expressions_spec.rb +286 -0
  1692. data/spec/integration/parser/ruby_manifest_spec.rb +119 -0
  1693. data/spec/integration/parser/scope_spec.rb +741 -0
  1694. data/spec/integration/parser/undef_param_spec.rb +87 -0
  1695. data/spec/integration/provider/cron/crontab_spec.rb +241 -0
  1696. data/spec/integration/provider/mailalias/aliases_spec.rb +10 -0
  1697. data/spec/integration/provider/mount_spec.rb +169 -0
  1698. data/spec/integration/provider/package_spec.rb +44 -0
  1699. data/spec/integration/provider/service/init_spec.rb +46 -0
  1700. data/spec/integration/provider/service/systemd_spec.rb +20 -0
  1701. data/spec/integration/provider/ssh_authorized_key_spec.rb +219 -0
  1702. data/spec/integration/reference/providers_spec.rb +16 -0
  1703. data/spec/integration/reports_spec.rb +14 -0
  1704. data/spec/integration/resource/catalog_spec.rb +54 -0
  1705. data/spec/integration/resource/type_collection_spec.rb +94 -0
  1706. data/spec/integration/ssl/autosign_spec.rb +130 -0
  1707. data/spec/integration/ssl/certificate_authority_spec.rb +163 -0
  1708. data/spec/integration/ssl/certificate_request_spec.rb +48 -0
  1709. data/spec/integration/ssl/certificate_revocation_list_spec.rb +35 -0
  1710. data/spec/integration/ssl/host_spec.rb +82 -0
  1711. data/spec/integration/transaction/report_spec.rb +24 -0
  1712. data/spec/integration/transaction_spec.rb +362 -0
  1713. data/spec/integration/type/exec_spec.rb +77 -0
  1714. data/spec/integration/type/file_spec.rb +1378 -0
  1715. data/spec/integration/type/nagios_spec.rb +71 -0
  1716. data/spec/integration/type/package_spec.rb +28 -0
  1717. data/spec/integration/type/sshkey_spec.rb +22 -0
  1718. data/spec/integration/type/tidy_spec.rb +34 -0
  1719. data/spec/integration/type/user_spec.rb +36 -0
  1720. data/spec/integration/type_spec.rb +32 -0
  1721. data/spec/integration/util/autoload_spec.rb +107 -0
  1722. data/spec/integration/util/execution_spec.rb +17 -0
  1723. data/spec/integration/util/feature_spec.rb +53 -0
  1724. data/spec/integration/util/rdoc/parser_spec.rb +268 -0
  1725. data/spec/integration/util/settings_spec.rb +89 -0
  1726. data/spec/integration/util/windows/process_spec.rb +34 -0
  1727. data/spec/integration/util/windows/security_spec.rb +864 -0
  1728. data/spec/integration/util/windows/user_spec.rb +125 -0
  1729. data/spec/integration/util_spec.rb +111 -0
  1730. data/spec/lib/matchers/containment_matchers.rb +52 -0
  1731. data/spec/lib/matchers/include.rb +27 -0
  1732. data/spec/lib/matchers/include_in_order.rb +21 -0
  1733. data/spec/lib/matchers/include_in_order_spec.rb +30 -0
  1734. data/spec/lib/matchers/include_spec.rb +32 -0
  1735. data/spec/lib/matchers/json.rb +167 -0
  1736. data/spec/lib/matchers/match_tokens2.rb +74 -0
  1737. data/spec/lib/matchers/relationship_graph_matchers.rb +48 -0
  1738. data/spec/lib/matchers/resource.rb +68 -0
  1739. data/spec/lib/puppet/face/1.0.0/huzzah.rb +8 -0
  1740. data/spec/lib/puppet/face/basetest.rb +51 -0
  1741. data/spec/lib/puppet/face/huzzah.rb +8 -0
  1742. data/spec/lib/puppet/face/huzzah/obsolete.rb +6 -0
  1743. data/spec/lib/puppet/face/version_matching.rb +12 -0
  1744. data/spec/lib/puppet/indirector/indirector_testing/json.rb +6 -0
  1745. data/spec/lib/puppet/indirector/indirector_testing/memory.rb +7 -0
  1746. data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +6 -0
  1747. data/spec/lib/puppet/indirector_testing.rb +37 -0
  1748. data/spec/lib/puppet_spec/compiler.rb +49 -0
  1749. data/spec/lib/puppet_spec/database.rb +29 -0
  1750. data/spec/lib/puppet_spec/files.rb +88 -0
  1751. data/spec/lib/puppet_spec/fixtures.rb +28 -0
  1752. data/spec/lib/puppet_spec/language.rb +74 -0
  1753. data/spec/lib/puppet_spec/matchers.rb +147 -0
  1754. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +56 -0
  1755. data/spec/lib/puppet_spec/module_tool/stub_source.rb +136 -0
  1756. data/spec/lib/puppet_spec/modules.rb +26 -0
  1757. data/spec/lib/puppet_spec/pops.rb +16 -0
  1758. data/spec/lib/puppet_spec/scope.rb +14 -0
  1759. data/spec/lib/puppet_spec/settings.rb +15 -0
  1760. data/spec/lib/puppet_spec/verbose.rb +9 -0
  1761. data/spec/monkey_patches/alias_should_to_must.rb +21 -0
  1762. data/spec/shared_behaviours/all_parsedfile_providers.rb +21 -0
  1763. data/spec/shared_behaviours/an_indirector_face.rb +6 -0
  1764. data/spec/shared_behaviours/documentation_on_faces.rb +263 -0
  1765. data/spec/shared_behaviours/file_server_terminus.rb +41 -0
  1766. data/spec/shared_behaviours/file_serving.rb +75 -0
  1767. data/spec/shared_behaviours/file_serving_model.rb +72 -0
  1768. data/spec/shared_behaviours/hiera_indirections.rb +99 -0
  1769. data/spec/shared_behaviours/iterative_functions.rb +69 -0
  1770. data/spec/shared_behaviours/memory_terminus.rb +28 -0
  1771. data/spec/shared_behaviours/path_parameters.rb +160 -0
  1772. data/spec/shared_behaviours/store_configs_terminus.rb +21 -0
  1773. data/spec/shared_behaviours/things_that_declare_options.rb +262 -0
  1774. data/spec/shared_contexts/checksums.rb +55 -0
  1775. data/spec/shared_contexts/platform.rb +52 -0
  1776. data/spec/spec_helper.rb +193 -0
  1777. data/spec/unit/agent/disabler_spec.rb +64 -0
  1778. data/spec/unit/agent/locker_spec.rb +100 -0
  1779. data/spec/unit/agent_spec.rb +327 -0
  1780. data/spec/unit/application/agent_spec.rb +656 -0
  1781. data/spec/unit/application/apply_spec.rb +460 -0
  1782. data/spec/unit/application/cert_spec.rb +220 -0
  1783. data/spec/unit/application/certificate_spec.rb +22 -0
  1784. data/spec/unit/application/config_spec.rb +9 -0
  1785. data/spec/unit/application/describe_spec.rb +79 -0
  1786. data/spec/unit/application/device_spec.rb +415 -0
  1787. data/spec/unit/application/doc_spec.rb +344 -0
  1788. data/spec/unit/application/face_base_spec.rb +408 -0
  1789. data/spec/unit/application/facts_spec.rb +32 -0
  1790. data/spec/unit/application/filebucket_spec.rb +207 -0
  1791. data/spec/unit/application/indirection_base_spec.rb +52 -0
  1792. data/spec/unit/application/inspect_spec.rb +287 -0
  1793. data/spec/unit/application/kick_spec.rb +296 -0
  1794. data/spec/unit/application/master_spec.rb +363 -0
  1795. data/spec/unit/application/queue_spec.rb +168 -0
  1796. data/spec/unit/application/resource_spec.rb +209 -0
  1797. data/spec/unit/application/secret_agent_spec.rb +34 -0
  1798. data/spec/unit/application_spec.rb +645 -0
  1799. data/spec/unit/configurer/downloader_factory_spec.rb +96 -0
  1800. data/spec/unit/configurer/downloader_spec.rb +222 -0
  1801. data/spec/unit/configurer/fact_handler_spec.rb +89 -0
  1802. data/spec/unit/configurer/plugin_handler_spec.rb +39 -0
  1803. data/spec/unit/configurer_spec.rb +680 -0
  1804. data/spec/unit/confine/exists_spec.rb +80 -0
  1805. data/spec/unit/confine/false_spec.rb +52 -0
  1806. data/spec/unit/confine/feature_spec.rb +57 -0
  1807. data/spec/unit/confine/true_spec.rb +52 -0
  1808. data/spec/unit/confine/variable_spec.rb +106 -0
  1809. data/spec/unit/confine_collection_spec.rb +133 -0
  1810. data/spec/unit/confine_spec.rb +77 -0
  1811. data/spec/unit/confiner_spec.rb +62 -0
  1812. data/spec/unit/context/trusted_information_spec.rb +124 -0
  1813. data/spec/unit/context_spec.rb +136 -0
  1814. data/spec/unit/daemon_spec.rb +255 -0
  1815. data/spec/unit/data_binding_spec.rb +11 -0
  1816. data/spec/unit/defaults_spec.rb +74 -0
  1817. data/spec/unit/dsl/resource_api_spec.rb +180 -0
  1818. data/spec/unit/dsl/resource_type_api_spec.rb +53 -0
  1819. data/spec/unit/environments_spec.rb +383 -0
  1820. data/spec/unit/face/catalog_spec.rb +7 -0
  1821. data/spec/unit/face/certificate_spec.rb +223 -0
  1822. data/spec/unit/face/config_spec.rb +147 -0
  1823. data/spec/unit/face/facts_spec.rb +23 -0
  1824. data/spec/unit/face/file_spec.rb +12 -0
  1825. data/spec/unit/face/help_spec.rb +144 -0
  1826. data/spec/unit/face/instrumentation_data_spec.rb +7 -0
  1827. data/spec/unit/face/instrumentation_listener_spec.rb +38 -0
  1828. data/spec/unit/face/instrumentation_probe_spec.rb +21 -0
  1829. data/spec/unit/face/module/build_spec.rb +69 -0
  1830. data/spec/unit/face/module/install_spec.rb +42 -0
  1831. data/spec/unit/face/module/list_spec.rb +241 -0
  1832. data/spec/unit/face/module/search_spec.rb +201 -0
  1833. data/spec/unit/face/module/uninstall_spec.rb +49 -0
  1834. data/spec/unit/face/module/upgrade_spec.rb +26 -0
  1835. data/spec/unit/face/module_spec.rb +3 -0
  1836. data/spec/unit/face/node_spec.rb +272 -0
  1837. data/spec/unit/face/parser_spec.rb +111 -0
  1838. data/spec/unit/face/plugin_spec.rb +10 -0
  1839. data/spec/unit/face/secret_agent_spec.rb +27 -0
  1840. data/spec/unit/face_spec.rb +1 -0
  1841. data/spec/unit/file_bucket/dipper_spec.rb +176 -0
  1842. data/spec/unit/file_bucket/file_spec.rb +76 -0
  1843. data/spec/unit/file_serving/base_spec.rb +168 -0
  1844. data/spec/unit/file_serving/configuration/parser_spec.rb +186 -0
  1845. data/spec/unit/file_serving/configuration_spec.rb +231 -0
  1846. data/spec/unit/file_serving/content_spec.rb +112 -0
  1847. data/spec/unit/file_serving/fileset_spec.rb +354 -0
  1848. data/spec/unit/file_serving/metadata_spec.rb +432 -0
  1849. data/spec/unit/file_serving/mount/file_spec.rb +189 -0
  1850. data/spec/unit/file_serving/mount/modules_spec.rb +70 -0
  1851. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +73 -0
  1852. data/spec/unit/file_serving/mount/plugins_spec.rb +73 -0
  1853. data/spec/unit/file_serving/mount_spec.rb +31 -0
  1854. data/spec/unit/file_serving/terminus_helper_spec.rb +94 -0
  1855. data/spec/unit/file_serving/terminus_selector_spec.rb +58 -0
  1856. data/spec/unit/file_system/path_pattern_spec.rb +138 -0
  1857. data/spec/unit/file_system/uniquefile_spec.rb +184 -0
  1858. data/spec/unit/file_system_spec.rb +508 -0
  1859. data/spec/unit/forge/errors_spec.rb +80 -0
  1860. data/spec/unit/forge/module_release_spec.rb +220 -0
  1861. data/spec/unit/forge/repository_spec.rb +230 -0
  1862. data/spec/unit/forge_spec.rb +172 -0
  1863. data/spec/unit/functions/assert_type_spec.rb +78 -0
  1864. data/spec/unit/functions/each_spec.rb +111 -0
  1865. data/spec/unit/functions/epp_spec.rb +155 -0
  1866. data/spec/unit/functions/filter_spec.rb +131 -0
  1867. data/spec/unit/functions/inline_epp_spec.rb +97 -0
  1868. data/spec/unit/functions/map_spec.rb +169 -0
  1869. data/spec/unit/functions/match_spec.rb +57 -0
  1870. data/spec/unit/functions/reduce_spec.rb +96 -0
  1871. data/spec/unit/functions/slice_spec.rb +148 -0
  1872. data/spec/unit/functions/with_spec.rb +35 -0
  1873. data/spec/unit/functions4_spec.rb +670 -0
  1874. data/spec/unit/graph/key_spec.rb +41 -0
  1875. data/spec/unit/graph/rb_tree_map_spec.rb +572 -0
  1876. data/spec/unit/graph/relationship_graph_spec.rb +387 -0
  1877. data/spec/unit/graph/sequential_prioritizer_spec.rb +32 -0
  1878. data/spec/unit/graph/simple_graph.rb +721 -0
  1879. data/spec/unit/graph/title_hash_prioritizer_spec.rb +49 -0
  1880. data/spec/unit/hiera/backend/puppet_backend_spec.rb +148 -0
  1881. data/spec/unit/hiera/scope_spec.rb +89 -0
  1882. data/spec/unit/hiera_puppet_spec.rb +118 -0
  1883. data/spec/unit/indirector/active_record_spec.rb +75 -0
  1884. data/spec/unit/indirector/catalog/active_record_spec.rb +107 -0
  1885. data/spec/unit/indirector/catalog/compiler_spec.rb +272 -0
  1886. data/spec/unit/indirector/catalog/json_spec.rb +12 -0
  1887. data/spec/unit/indirector/catalog/msgpack_spec.rb +12 -0
  1888. data/spec/unit/indirector/catalog/queue_spec.rb +19 -0
  1889. data/spec/unit/indirector/catalog/rest_spec.rb +10 -0
  1890. data/spec/unit/indirector/catalog/static_compiler_spec.rb +236 -0
  1891. data/spec/unit/indirector/catalog/store_configs_spec.rb +17 -0
  1892. data/spec/unit/indirector/catalog/yaml_spec.rb +24 -0
  1893. data/spec/unit/indirector/certificate/ca_spec.rb +23 -0
  1894. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +33 -0
  1895. data/spec/unit/indirector/certificate/file_spec.rb +23 -0
  1896. data/spec/unit/indirector/certificate/rest_spec.rb +63 -0
  1897. data/spec/unit/indirector/certificate_request/ca_spec.rb +57 -0
  1898. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +33 -0
  1899. data/spec/unit/indirector/certificate_request/file_spec.rb +15 -0
  1900. data/spec/unit/indirector/certificate_request/rest_spec.rb +26 -0
  1901. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +16 -0
  1902. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +33 -0
  1903. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +17 -0
  1904. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +26 -0
  1905. data/spec/unit/indirector/certificate_status/file_spec.rb +191 -0
  1906. data/spec/unit/indirector/certificate_status/rest_spec.rb +18 -0
  1907. data/spec/unit/indirector/code_spec.rb +31 -0
  1908. data/spec/unit/indirector/data_binding/hiera_spec.rb +19 -0
  1909. data/spec/unit/indirector/data_binding/none_spec.rb +28 -0
  1910. data/spec/unit/indirector/direct_file_server_spec.rb +80 -0
  1911. data/spec/unit/indirector/envelope_spec.rb +33 -0
  1912. data/spec/unit/indirector/exec_spec.rb +58 -0
  1913. data/spec/unit/indirector/face_spec.rb +70 -0
  1914. data/spec/unit/indirector/facts/active_record_spec.rb +113 -0
  1915. data/spec/unit/indirector/facts/couch_spec.rb +102 -0
  1916. data/spec/unit/indirector/facts/facter_spec.rb +170 -0
  1917. data/spec/unit/indirector/facts/inventory_active_record_spec.rb +175 -0
  1918. data/spec/unit/indirector/facts/inventory_service_spec.rb +21 -0
  1919. data/spec/unit/indirector/facts/network_device_spec.rb +88 -0
  1920. data/spec/unit/indirector/facts/rest_spec.rb +10 -0
  1921. data/spec/unit/indirector/facts/store_configs_spec.rb +17 -0
  1922. data/spec/unit/indirector/facts/yaml_spec.rb +239 -0
  1923. data/spec/unit/indirector/file_bucket_file/file_spec.rb +286 -0
  1924. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +10 -0
  1925. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +29 -0
  1926. data/spec/unit/indirector/file_content/file_server_spec.rb +14 -0
  1927. data/spec/unit/indirector/file_content/file_spec.rb +14 -0
  1928. data/spec/unit/indirector/file_content/rest_spec.rb +14 -0
  1929. data/spec/unit/indirector/file_content/selector_spec.rb +10 -0
  1930. data/spec/unit/indirector/file_metadata/file_server_spec.rb +14 -0
  1931. data/spec/unit/indirector/file_metadata/file_spec.rb +50 -0
  1932. data/spec/unit/indirector/file_metadata/rest_spec.rb +13 -0
  1933. data/spec/unit/indirector/file_metadata/selector_spec.rb +11 -0
  1934. data/spec/unit/indirector/file_server_spec.rb +263 -0
  1935. data/spec/unit/indirector/hiera_spec.rb +17 -0
  1936. data/spec/unit/indirector/indirection_spec.rb +875 -0
  1937. data/spec/unit/indirector/instrumentation_data/local_spec.rb +52 -0
  1938. data/spec/unit/indirector/instrumentation_data/rest_spec.rb +11 -0
  1939. data/spec/unit/indirector/instrumentation_listener/local_spec.rb +65 -0
  1940. data/spec/unit/indirector/instrumentation_listener/rest_spec.rb +11 -0
  1941. data/spec/unit/indirector/instrumentation_probe/local_spec.rb +65 -0
  1942. data/spec/unit/indirector/instrumentation_probe/rest_spec.rb +11 -0
  1943. data/spec/unit/indirector/json_spec.rb +193 -0
  1944. data/spec/unit/indirector/key/ca_spec.rb +23 -0
  1945. data/spec/unit/indirector/key/disabled_ca_spec.rb +33 -0
  1946. data/spec/unit/indirector/key/file_spec.rb +97 -0
  1947. data/spec/unit/indirector/ldap_spec.rb +137 -0
  1948. data/spec/unit/indirector/memory_spec.rb +27 -0
  1949. data/spec/unit/indirector/msgpack_spec.rb +191 -0
  1950. data/spec/unit/indirector/node/active_record_spec.rb +48 -0
  1951. data/spec/unit/indirector/node/exec_spec.rb +76 -0
  1952. data/spec/unit/indirector/node/ldap_spec.rb +441 -0
  1953. data/spec/unit/indirector/node/memory_spec.rb +18 -0
  1954. data/spec/unit/indirector/node/msgpack_spec.rb +24 -0
  1955. data/spec/unit/indirector/node/plain_spec.rb +26 -0
  1956. data/spec/unit/indirector/node/rest_spec.rb +12 -0
  1957. data/spec/unit/indirector/node/store_configs_spec.rb +17 -0
  1958. data/spec/unit/indirector/node/yaml_spec.rb +24 -0
  1959. data/spec/unit/indirector/none_spec.rb +33 -0
  1960. data/spec/unit/indirector/plain_spec.rb +27 -0
  1961. data/spec/unit/indirector/queue_spec.rb +115 -0
  1962. data/spec/unit/indirector/report/msgpack_spec.rb +28 -0
  1963. data/spec/unit/indirector/report/processor_spec.rb +100 -0
  1964. data/spec/unit/indirector/report/rest_spec.rb +67 -0
  1965. data/spec/unit/indirector/report/yaml_spec.rb +28 -0
  1966. data/spec/unit/indirector/request_spec.rb +603 -0
  1967. data/spec/unit/indirector/resource/active_record_spec.rb +166 -0
  1968. data/spec/unit/indirector/resource/ral_spec.rb +147 -0
  1969. data/spec/unit/indirector/resource/rest_spec.rb +10 -0
  1970. data/spec/unit/indirector/resource/store_configs_spec.rb +23 -0
  1971. data/spec/unit/indirector/resource_type/parser_spec.rb +254 -0
  1972. data/spec/unit/indirector/resource_type/rest_spec.rb +14 -0
  1973. data/spec/unit/indirector/rest_spec.rb +589 -0
  1974. data/spec/unit/indirector/run/local_spec.rb +21 -0
  1975. data/spec/unit/indirector/run/rest_spec.rb +10 -0
  1976. data/spec/unit/indirector/ssl_file_spec.rb +328 -0
  1977. data/spec/unit/indirector/status/local_spec.rb +11 -0
  1978. data/spec/unit/indirector/status/rest_spec.rb +10 -0
  1979. data/spec/unit/indirector/store_configs_spec.rb +8 -0
  1980. data/spec/unit/indirector/terminus_spec.rb +264 -0
  1981. data/spec/unit/indirector/yaml_spec.rb +166 -0
  1982. data/spec/unit/indirector_spec.rb +150 -0
  1983. data/spec/unit/interface/action_builder_spec.rb +217 -0
  1984. data/spec/unit/interface/action_manager_spec.rb +280 -0
  1985. data/spec/unit/interface/action_spec.rb +650 -0
  1986. data/spec/unit/interface/documentation_spec.rb +33 -0
  1987. data/spec/unit/interface/face_collection_spec.rb +212 -0
  1988. data/spec/unit/interface/option_builder_spec.rb +86 -0
  1989. data/spec/unit/interface/option_spec.rb +156 -0
  1990. data/spec/unit/interface_spec.rb +271 -0
  1991. data/spec/unit/man_spec.rb +32 -0
  1992. data/spec/unit/module_spec.rb +722 -0
  1993. data/spec/unit/module_tool/application_spec.rb +25 -0
  1994. data/spec/unit/module_tool/applications/builder_spec.rb +416 -0
  1995. data/spec/unit/module_tool/applications/checksummer_spec.rb +115 -0
  1996. data/spec/unit/module_tool/applications/installer_spec.rb +363 -0
  1997. data/spec/unit/module_tool/applications/searcher_spec.rb +38 -0
  1998. data/spec/unit/module_tool/applications/uninstaller_spec.rb +165 -0
  1999. data/spec/unit/module_tool/applications/unpacker_spec.rb +74 -0
  2000. data/spec/unit/module_tool/applications/upgrader_spec.rb +324 -0
  2001. data/spec/unit/module_tool/install_directory_spec.rb +70 -0
  2002. data/spec/unit/module_tool/installed_modules_spec.rb +49 -0
  2003. data/spec/unit/module_tool/metadata_spec.rb +301 -0
  2004. data/spec/unit/module_tool/tar/gnu_spec.rb +23 -0
  2005. data/spec/unit/module_tool/tar/mini_spec.rb +60 -0
  2006. data/spec/unit/module_tool/tar_spec.rb +31 -0
  2007. data/spec/unit/module_tool_spec.rb +330 -0
  2008. data/spec/unit/network/auth_config_parser_spec.rb +101 -0
  2009. data/spec/unit/network/authconfig_spec.rb +109 -0
  2010. data/spec/unit/network/authentication_spec.rb +104 -0
  2011. data/spec/unit/network/authorization_spec.rb +34 -0
  2012. data/spec/unit/network/authstore_spec.rb +424 -0
  2013. data/spec/unit/network/format_handler_spec.rb +94 -0
  2014. data/spec/unit/network/format_spec.rb +197 -0
  2015. data/spec/unit/network/format_support_spec.rb +199 -0
  2016. data/spec/unit/network/formats_spec.rb +422 -0
  2017. data/spec/unit/network/http/api/v1_spec.rb +529 -0
  2018. data/spec/unit/network/http/api/v2/authorization_spec.rb +57 -0
  2019. data/spec/unit/network/http/api/v2/environments_spec.rb +63 -0
  2020. data/spec/unit/network/http/api/v2_spec.rb +14 -0
  2021. data/spec/unit/network/http/compression_spec.rb +196 -0
  2022. data/spec/unit/network/http/connection_spec.rb +306 -0
  2023. data/spec/unit/network/http/error_spec.rb +30 -0
  2024. data/spec/unit/network/http/factory_spec.rb +82 -0
  2025. data/spec/unit/network/http/handler_spec.rb +232 -0
  2026. data/spec/unit/network/http/nocache_pool_spec.rb +43 -0
  2027. data/spec/unit/network/http/pool_spec.rb +269 -0
  2028. data/spec/unit/network/http/rack/rest_spec.rb +316 -0
  2029. data/spec/unit/network/http/rack_spec.rb +43 -0
  2030. data/spec/unit/network/http/route_spec.rb +91 -0
  2031. data/spec/unit/network/http/session_spec.rb +43 -0
  2032. data/spec/unit/network/http/site_spec.rb +90 -0
  2033. data/spec/unit/network/http/webrick/rest_spec.rb +231 -0
  2034. data/spec/unit/network/http/webrick_spec.rb +271 -0
  2035. data/spec/unit/network/http_pool_spec.rb +98 -0
  2036. data/spec/unit/network/http_spec.rb +10 -0
  2037. data/spec/unit/network/resolver_spec.rb +207 -0
  2038. data/spec/unit/network/rights_spec.rb +440 -0
  2039. data/spec/unit/network/server_spec.rb +95 -0
  2040. data/spec/unit/node/environment_spec.rb +581 -0
  2041. data/spec/unit/node/facts_spec.rb +175 -0
  2042. data/spec/unit/node_spec.rb +321 -0
  2043. data/spec/unit/other/selinux_spec.rb +99 -0
  2044. data/spec/unit/parameter/boolean_spec.rb +35 -0
  2045. data/spec/unit/parameter/package_options_spec.rb +44 -0
  2046. data/spec/unit/parameter/path_spec.rb +24 -0
  2047. data/spec/unit/parameter/value_collection_spec.rb +166 -0
  2048. data/spec/unit/parameter/value_spec.rb +87 -0
  2049. data/spec/unit/parameter_spec.rb +193 -0
  2050. data/spec/unit/parser/ast/arithmetic_operator_spec.rb +160 -0
  2051. data/spec/unit/parser/ast/astarray_spec.rb +56 -0
  2052. data/spec/unit/parser/ast/asthash_spec.rb +98 -0
  2053. data/spec/unit/parser/ast/block_expression_spec.rb +67 -0
  2054. data/spec/unit/parser/ast/boolean_operator_spec.rb +54 -0
  2055. data/spec/unit/parser/ast/casestatement_spec.rb +168 -0
  2056. data/spec/unit/parser/ast/collection_spec.rb +70 -0
  2057. data/spec/unit/parser/ast/collexpr_spec.rb +120 -0
  2058. data/spec/unit/parser/ast/comparison_operator_spec.rb +118 -0
  2059. data/spec/unit/parser/ast/definition_spec.rb +21 -0
  2060. data/spec/unit/parser/ast/function_spec.rb +92 -0
  2061. data/spec/unit/parser/ast/hostclass_spec.rb +72 -0
  2062. data/spec/unit/parser/ast/ifstatement_spec.rb +77 -0
  2063. data/spec/unit/parser/ast/in_operator_spec.rb +61 -0
  2064. data/spec/unit/parser/ast/leaf_spec.rb +511 -0
  2065. data/spec/unit/parser/ast/match_operator_spec.rb +51 -0
  2066. data/spec/unit/parser/ast/minus_spec.rb +37 -0
  2067. data/spec/unit/parser/ast/node_spec.rb +30 -0
  2068. data/spec/unit/parser/ast/nop_spec.rb +19 -0
  2069. data/spec/unit/parser/ast/not_spec.rb +31 -0
  2070. data/spec/unit/parser/ast/relationship_spec.rb +87 -0
  2071. data/spec/unit/parser/ast/resource_defaults_spec.rb +21 -0
  2072. data/spec/unit/parser/ast/resource_override_spec.rb +50 -0
  2073. data/spec/unit/parser/ast/resource_reference_spec.rb +56 -0
  2074. data/spec/unit/parser/ast/resource_spec.rb +183 -0
  2075. data/spec/unit/parser/ast/resourceparam_spec.rb +51 -0
  2076. data/spec/unit/parser/ast/selector_spec.rb +88 -0
  2077. data/spec/unit/parser/ast/vardef_spec.rb +68 -0
  2078. data/spec/unit/parser/ast_spec.rb +76 -0
  2079. data/spec/unit/parser/collector_spec.rb +438 -0
  2080. data/spec/unit/parser/compiler_spec.rb +910 -0
  2081. data/spec/unit/parser/files_spec.rb +168 -0
  2082. data/spec/unit/parser/functions/contain_spec.rb +236 -0
  2083. data/spec/unit/parser/functions/create_resources_spec.rb +213 -0
  2084. data/spec/unit/parser/functions/defined_spec.rb +114 -0
  2085. data/spec/unit/parser/functions/digest_spec.rb +31 -0
  2086. data/spec/unit/parser/functions/extlookup_spec.rb +102 -0
  2087. data/spec/unit/parser/functions/fail_spec.rb +28 -0
  2088. data/spec/unit/parser/functions/file_spec.rb +98 -0
  2089. data/spec/unit/parser/functions/fqdn_rand_spec.rb +46 -0
  2090. data/spec/unit/parser/functions/generate_spec.rb +136 -0
  2091. data/spec/unit/parser/functions/hiera_array_spec.rb +26 -0
  2092. data/spec/unit/parser/functions/hiera_hash_spec.rb +22 -0
  2093. data/spec/unit/parser/functions/hiera_include_spec.rb +39 -0
  2094. data/spec/unit/parser/functions/hiera_spec.rb +22 -0
  2095. data/spec/unit/parser/functions/include_spec.rb +65 -0
  2096. data/spec/unit/parser/functions/inline_template_spec.rb +34 -0
  2097. data/spec/unit/parser/functions/lookup_spec.rb +146 -0
  2098. data/spec/unit/parser/functions/realize_spec.rb +61 -0
  2099. data/spec/unit/parser/functions/regsubst_spec.rb +196 -0
  2100. data/spec/unit/parser/functions/require_spec.rb +75 -0
  2101. data/spec/unit/parser/functions/search_spec.rb +28 -0
  2102. data/spec/unit/parser/functions/shared.rb +82 -0
  2103. data/spec/unit/parser/functions/shellquote_spec.rb +67 -0
  2104. data/spec/unit/parser/functions/split_spec.rb +53 -0
  2105. data/spec/unit/parser/functions/sprintf_spec.rb +51 -0
  2106. data/spec/unit/parser/functions/tag_spec.rb +28 -0
  2107. data/spec/unit/parser/functions/template_spec.rb +89 -0
  2108. data/spec/unit/parser/functions/versioncmp_spec.rb +33 -0
  2109. data/spec/unit/parser/functions_spec.rb +132 -0
  2110. data/spec/unit/parser/lexer_spec.rb +877 -0
  2111. data/spec/unit/parser/parser_spec.rb +535 -0
  2112. data/spec/unit/parser/relationship_spec.rb +93 -0
  2113. data/spec/unit/parser/resource/param_spec.rb +44 -0
  2114. data/spec/unit/parser/resource_spec.rb +586 -0
  2115. data/spec/unit/parser/scope_spec.rb +661 -0
  2116. data/spec/unit/parser/templatewrapper_spec.rb +118 -0
  2117. data/spec/unit/parser/type_loader_spec.rb +224 -0
  2118. data/spec/unit/pops/adaptable_spec.rb +141 -0
  2119. data/spec/unit/pops/benchmark_spec.rb +142 -0
  2120. data/spec/unit/pops/binder/binder_spec.rb +43 -0
  2121. data/spec/unit/pops/binder/bindings_checker_spec.rb +155 -0
  2122. data/spec/unit/pops/binder/bindings_composer_spec.rb +66 -0
  2123. data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +18 -0
  2124. data/spec/unit/pops/binder/config/binder_config_spec.rb +35 -0
  2125. data/spec/unit/pops/binder/injector_spec.rb +786 -0
  2126. data/spec/unit/pops/containment_spec.rb +26 -0
  2127. data/spec/unit/pops/evaluator/access_ops_spec.rb +441 -0
  2128. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +77 -0
  2129. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +103 -0
  2130. data/spec/unit/pops/evaluator/collections_ops_spec.rb +111 -0
  2131. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +259 -0
  2132. data/spec/unit/pops/evaluator/conditionals_spec.rb +190 -0
  2133. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1300 -0
  2134. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +75 -0
  2135. data/spec/unit/pops/evaluator/logical_ops_spec.rb +90 -0
  2136. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +44 -0
  2137. data/spec/unit/pops/evaluator/variables_spec.rb +89 -0
  2138. data/spec/unit/pops/factory_rspec_helper.rb +77 -0
  2139. data/spec/unit/pops/factory_spec.rb +306 -0
  2140. data/spec/unit/pops/issues_spec.rb +196 -0
  2141. data/spec/unit/pops/label_provider_spec.rb +42 -0
  2142. data/spec/unit/pops/loaders/dependency_loader_spec.rb +61 -0
  2143. data/spec/unit/pops/loaders/loader_paths_spec.rb +55 -0
  2144. data/spec/unit/pops/loaders/loaders_spec.rb +125 -0
  2145. data/spec/unit/pops/loaders/module_loaders_spec.rb +90 -0
  2146. data/spec/unit/pops/loaders/static_loader_spec.rb +52 -0
  2147. data/spec/unit/pops/model/ast_transformer_spec.rb +76 -0
  2148. data/spec/unit/pops/model/model_spec.rb +37 -0
  2149. data/spec/unit/pops/parser/epp_parser_spec.rb +115 -0
  2150. data/spec/unit/pops/parser/evaluating_parser_spec.rb +89 -0
  2151. data/spec/unit/pops/parser/lexer2_spec.rb +464 -0
  2152. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +278 -0
  2153. data/spec/unit/pops/parser/parse_calls_spec.rb +104 -0
  2154. data/spec/unit/pops/parser/parse_conditionals_spec.rb +157 -0
  2155. data/spec/unit/pops/parser/parse_containers_spec.rb +261 -0
  2156. data/spec/unit/pops/parser/parse_heredoc_spec.rb +87 -0
  2157. data/spec/unit/pops/parser/parse_resource_spec.rb +324 -0
  2158. data/spec/unit/pops/parser/parser_rspec_helper.rb +11 -0
  2159. data/spec/unit/pops/parser/parser_spec.rb +33 -0
  2160. data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +72 -0
  2161. data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +23 -0
  2162. data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +243 -0
  2163. data/spec/unit/pops/transformer/transform_calls_spec.rb +115 -0
  2164. data/spec/unit/pops/transformer/transform_conditionals_spec.rb +123 -0
  2165. data/spec/unit/pops/transformer/transform_containers_spec.rb +190 -0
  2166. data/spec/unit/pops/transformer/transformer_rspec_helper.rb +27 -0
  2167. data/spec/unit/pops/types/enumeration_spec.rb +50 -0
  2168. data/spec/unit/pops/types/type_calculator_spec.rb +1800 -0
  2169. data/spec/unit/pops/types/type_factory_spec.rb +281 -0
  2170. data/spec/unit/pops/types/type_parser_spec.rb +240 -0
  2171. data/spec/unit/pops/validator/validator_spec.rb +184 -0
  2172. data/spec/unit/pops/visitor_spec.rb +94 -0
  2173. data/spec/unit/property/boolean_spec.rb +24 -0
  2174. data/spec/unit/property/ensure_spec.rb +12 -0
  2175. data/spec/unit/property/keyvalue_spec.rb +170 -0
  2176. data/spec/unit/property/list_spec.rb +173 -0
  2177. data/spec/unit/property/ordered_list_spec.rb +63 -0
  2178. data/spec/unit/property_spec.rb +541 -0
  2179. data/spec/unit/provider/README.markdown +4 -0
  2180. data/spec/unit/provider/aixobject_spec.rb +101 -0
  2181. data/spec/unit/provider/augeas/augeas_spec.rb +944 -0
  2182. data/spec/unit/provider/cisco_spec.rb +15 -0
  2183. data/spec/unit/provider/command_spec.rb +62 -0
  2184. data/spec/unit/provider/cron/crontab_spec.rb +207 -0
  2185. data/spec/unit/provider/cron/parsed_spec.rb +336 -0
  2186. data/spec/unit/provider/exec/posix_spec.rb +219 -0
  2187. data/spec/unit/provider/exec/shell_spec.rb +53 -0
  2188. data/spec/unit/provider/exec/windows_spec.rb +107 -0
  2189. data/spec/unit/provider/exec_spec.rb +35 -0
  2190. data/spec/unit/provider/file/posix_spec.rb +232 -0
  2191. data/spec/unit/provider/file/windows_spec.rb +154 -0
  2192. data/spec/unit/provider/group/groupadd_spec.rb +76 -0
  2193. data/spec/unit/provider/group/ldap_spec.rb +101 -0
  2194. data/spec/unit/provider/group/pw_spec.rb +81 -0
  2195. data/spec/unit/provider/group/windows_adsi_spec.rb +168 -0
  2196. data/spec/unit/provider/host/parsed_spec.rb +197 -0
  2197. data/spec/unit/provider/interface/cisco_spec.rb +57 -0
  2198. data/spec/unit/provider/ldap_spec.rb +244 -0
  2199. data/spec/unit/provider/macauthorization_spec.rb +152 -0
  2200. data/spec/unit/provider/mcx/mcxcontent_spec.rb +192 -0
  2201. data/spec/unit/provider/mount/parsed_spec.rb +283 -0
  2202. data/spec/unit/provider/mount_spec.rb +165 -0
  2203. data/spec/unit/provider/naginator_spec.rb +79 -0
  2204. data/spec/unit/provider/nameservice/directoryservice_spec.rb +189 -0
  2205. data/spec/unit/provider/nameservice_spec.rb +304 -0
  2206. data/spec/unit/provider/network_device_spec.rb +152 -0
  2207. data/spec/unit/provider/package/aix_spec.rb +107 -0
  2208. data/spec/unit/provider/package/appdmg_spec.rb +42 -0
  2209. data/spec/unit/provider/package/apt_spec.rb +160 -0
  2210. data/spec/unit/provider/package/aptitude_spec.rb +45 -0
  2211. data/spec/unit/provider/package/aptrpm_spec.rb +47 -0
  2212. data/spec/unit/provider/package/dpkg_spec.rb +281 -0
  2213. data/spec/unit/provider/package/freebsd_spec.rb +54 -0
  2214. data/spec/unit/provider/package/gem_spec.rb +187 -0
  2215. data/spec/unit/provider/package/hpux_spec.rb +51 -0
  2216. data/spec/unit/provider/package/macports_spec.rb +140 -0
  2217. data/spec/unit/provider/package/msi_spec.rb +229 -0
  2218. data/spec/unit/provider/package/nim_spec.rb +250 -0
  2219. data/spec/unit/provider/package/openbsd_spec.rb +369 -0
  2220. data/spec/unit/provider/package/opkg_spec.rb +180 -0
  2221. data/spec/unit/provider/package/pacman_spec.rb +314 -0
  2222. data/spec/unit/provider/package/pip_spec.rb +247 -0
  2223. data/spec/unit/provider/package/pkg_spec.rb +255 -0
  2224. data/spec/unit/provider/package/pkgdmg_spec.rb +144 -0
  2225. data/spec/unit/provider/package/pkgin_spec.rb +178 -0
  2226. data/spec/unit/provider/package/pkgutil_spec.rb +235 -0
  2227. data/spec/unit/provider/package/portage_spec.rb +65 -0
  2228. data/spec/unit/provider/package/rpm_spec.rb +390 -0
  2229. data/spec/unit/provider/package/sun_spec.rb +114 -0
  2230. data/spec/unit/provider/package/up2date_spec.rb +24 -0
  2231. data/spec/unit/provider/package/urpmi.rb +80 -0
  2232. data/spec/unit/provider/package/windows/exe_package_spec.rb +99 -0
  2233. data/spec/unit/provider/package/windows/msi_package_spec.rb +115 -0
  2234. data/spec/unit/provider/package/windows/package_spec.rb +141 -0
  2235. data/spec/unit/provider/package/windows_spec.rb +251 -0
  2236. data/spec/unit/provider/package/yum_spec.rb +308 -0
  2237. data/spec/unit/provider/package/zypper_spec.rb +186 -0
  2238. data/spec/unit/provider/parsedfile_spec.rb +228 -0
  2239. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +1574 -0
  2240. data/spec/unit/provider/selboolean_spec.rb +36 -0
  2241. data/spec/unit/provider/selmodule-example.pp +0 -0
  2242. data/spec/unit/provider/selmodule_spec.rb +73 -0
  2243. data/spec/unit/provider/service/base_spec.rb +77 -0
  2244. data/spec/unit/provider/service/daemontools_spec.rb +171 -0
  2245. data/spec/unit/provider/service/debian_spec.rb +116 -0
  2246. data/spec/unit/provider/service/freebsd_spec.rb +75 -0
  2247. data/spec/unit/provider/service/gentoo_spec.rb +241 -0
  2248. data/spec/unit/provider/service/init_spec.rb +212 -0
  2249. data/spec/unit/provider/service/launchd_spec.rb +290 -0
  2250. data/spec/unit/provider/service/openbsd_spec.rb +256 -0
  2251. data/spec/unit/provider/service/openrc_spec.rb +225 -0
  2252. data/spec/unit/provider/service/openwrt_spec.rb +109 -0
  2253. data/spec/unit/provider/service/redhat_spec.rb +162 -0
  2254. data/spec/unit/provider/service/runit_spec.rb +145 -0
  2255. data/spec/unit/provider/service/smf_spec.rb +153 -0
  2256. data/spec/unit/provider/service/src_spec.rb +173 -0
  2257. data/spec/unit/provider/service/systemd_spec.rb +158 -0
  2258. data/spec/unit/provider/service/upstart_spec.rb +533 -0
  2259. data/spec/unit/provider/service/windows_spec.rb +183 -0
  2260. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +261 -0
  2261. data/spec/unit/provider/sshkey/parsed_spec.rb +71 -0
  2262. data/spec/unit/provider/user/aix_spec.rb +162 -0
  2263. data/spec/unit/provider/user/directoryservice_spec.rb +1114 -0
  2264. data/spec/unit/provider/user/hpux_spec.rb +52 -0
  2265. data/spec/unit/provider/user/ldap_spec.rb +289 -0
  2266. data/spec/unit/provider/user/pw_spec.rb +214 -0
  2267. data/spec/unit/provider/user/user_role_add_spec.rb +357 -0
  2268. data/spec/unit/provider/user/useradd_spec.rb +430 -0
  2269. data/spec/unit/provider/user/windows_adsi_spec.rb +173 -0
  2270. data/spec/unit/provider/vlan/cisco_spec.rb +55 -0
  2271. data/spec/unit/provider/yumrepo/inifile_spec.rb +309 -0
  2272. data/spec/unit/provider/zfs/zfs_spec.rb +106 -0
  2273. data/spec/unit/provider/zone/solaris_spec.rb +195 -0
  2274. data/spec/unit/provider/zpool/zpool_spec.rb +214 -0
  2275. data/spec/unit/provider_spec.rb +714 -0
  2276. data/spec/unit/puppet_spec.rb +41 -0
  2277. data/spec/unit/rails/host_spec.rb +162 -0
  2278. data/spec/unit/rails/param_value_spec.rb +46 -0
  2279. data/spec/unit/rails/resource_spec.rb +115 -0
  2280. data/spec/unit/rails_spec.rb +244 -0
  2281. data/spec/unit/relationship_spec.rb +228 -0
  2282. data/spec/unit/reports/http_spec.rb +100 -0
  2283. data/spec/unit/reports/rrdgraph_spec.rb +29 -0
  2284. data/spec/unit/reports/store_spec.rb +60 -0
  2285. data/spec/unit/reports/tagmail_spec.rb +218 -0
  2286. data/spec/unit/reports_spec.rb +60 -0
  2287. data/spec/unit/resource/catalog_spec.rb +884 -0
  2288. data/spec/unit/resource/status_spec.rb +220 -0
  2289. data/spec/unit/resource/type_collection_helper_spec.rb +24 -0
  2290. data/spec/unit/resource/type_collection_spec.rb +418 -0
  2291. data/spec/unit/resource/type_spec.rb +777 -0
  2292. data/spec/unit/resource_spec.rb +979 -0
  2293. data/spec/unit/run_spec.rb +175 -0
  2294. data/spec/unit/scheduler/job_spec.rb +79 -0
  2295. data/spec/unit/scheduler/scheduler_spec.rb +116 -0
  2296. data/spec/unit/scheduler/splay_job_spec.rb +35 -0
  2297. data/spec/unit/semver_spec.rb +303 -0
  2298. data/spec/unit/settings/array_setting_spec.rb +39 -0
  2299. data/spec/unit/settings/autosign_setting_spec.rb +103 -0
  2300. data/spec/unit/settings/config_file_spec.rb +176 -0
  2301. data/spec/unit/settings/directory_setting_spec.rb +32 -0
  2302. data/spec/unit/settings/duration_setting_spec.rb +45 -0
  2303. data/spec/unit/settings/enum_setting_spec.rb +27 -0
  2304. data/spec/unit/settings/environment_conf_spec.rb +118 -0
  2305. data/spec/unit/settings/file_setting_spec.rb +298 -0
  2306. data/spec/unit/settings/ini_file_spec.rb +184 -0
  2307. data/spec/unit/settings/path_setting_spec.rb +30 -0
  2308. data/spec/unit/settings/priority_setting_spec.rb +66 -0
  2309. data/spec/unit/settings/string_setting_spec.rb +75 -0
  2310. data/spec/unit/settings/terminus_setting_spec.rb +28 -0
  2311. data/spec/unit/settings/value_translator_spec.rb +77 -0
  2312. data/spec/unit/settings_spec.rb +1883 -0
  2313. data/spec/unit/ssl/base_spec.rb +85 -0
  2314. data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +30 -0
  2315. data/spec/unit/ssl/certificate_authority/interface_spec.rb +366 -0
  2316. data/spec/unit/ssl/certificate_authority_spec.rb +1130 -0
  2317. data/spec/unit/ssl/certificate_factory_spec.rb +168 -0
  2318. data/spec/unit/ssl/certificate_request_attributes_spec.rb +61 -0
  2319. data/spec/unit/ssl/certificate_request_spec.rb +369 -0
  2320. data/spec/unit/ssl/certificate_revocation_list_spec.rb +196 -0
  2321. data/spec/unit/ssl/certificate_spec.rb +193 -0
  2322. data/spec/unit/ssl/configuration_spec.rb +134 -0
  2323. data/spec/unit/ssl/digest_spec.rb +35 -0
  2324. data/spec/unit/ssl/host_spec.rb +940 -0
  2325. data/spec/unit/ssl/inventory_spec.rb +150 -0
  2326. data/spec/unit/ssl/key_spec.rb +191 -0
  2327. data/spec/unit/ssl/oids_spec.rb +48 -0
  2328. data/spec/unit/ssl/validator_spec.rb +353 -0
  2329. data/spec/unit/status_spec.rb +51 -0
  2330. data/spec/unit/transaction/additional_resource_generator_spec.rb +411 -0
  2331. data/spec/unit/transaction/event_manager_spec.rb +310 -0
  2332. data/spec/unit/transaction/event_spec.rb +192 -0
  2333. data/spec/unit/transaction/report_spec.rb +497 -0
  2334. data/spec/unit/transaction/resource_harness_spec.rb +542 -0
  2335. data/spec/unit/transaction_spec.rb +722 -0
  2336. data/spec/unit/type/README.markdown +4 -0
  2337. data/spec/unit/type/augeas_spec.rb +119 -0
  2338. data/spec/unit/type/component_spec.rb +53 -0
  2339. data/spec/unit/type/computer_spec.rb +80 -0
  2340. data/spec/unit/type/cron_spec.rb +543 -0
  2341. data/spec/unit/type/exec_spec.rb +772 -0
  2342. data/spec/unit/type/file/checksum_spec.rb +79 -0
  2343. data/spec/unit/type/file/content_spec.rb +516 -0
  2344. data/spec/unit/type/file/ctime_spec.rb +34 -0
  2345. data/spec/unit/type/file/ensure_spec.rb +123 -0
  2346. data/spec/unit/type/file/group_spec.rb +60 -0
  2347. data/spec/unit/type/file/mode_spec.rb +220 -0
  2348. data/spec/unit/type/file/mtime_spec.rb +34 -0
  2349. data/spec/unit/type/file/owner_spec.rb +58 -0
  2350. data/spec/unit/type/file/selinux_spec.rb +89 -0
  2351. data/spec/unit/type/file/source_spec.rb +577 -0
  2352. data/spec/unit/type/file/type_spec.rb +19 -0
  2353. data/spec/unit/type/file_spec.rb +1504 -0
  2354. data/spec/unit/type/filebucket_spec.rb +103 -0
  2355. data/spec/unit/type/group_spec.rb +84 -0
  2356. data/spec/unit/type/host_spec.rb +665 -0
  2357. data/spec/unit/type/interface_spec.rb +97 -0
  2358. data/spec/unit/type/k5login_spec.rb +115 -0
  2359. data/spec/unit/type/macauthorization_spec.rb +110 -0
  2360. data/spec/unit/type/mailalias_spec.rb +21 -0
  2361. data/spec/unit/type/maillist_spec.rb +41 -0
  2362. data/spec/unit/type/mcx_spec.rb +79 -0
  2363. data/spec/unit/type/mount_spec.rb +592 -0
  2364. data/spec/unit/type/nagios_spec.rb +293 -0
  2365. data/spec/unit/type/noop_metaparam_spec.rb +38 -0
  2366. data/spec/unit/type/package/package_settings_spec.rb +135 -0
  2367. data/spec/unit/type/package_spec.rb +324 -0
  2368. data/spec/unit/type/resources_spec.rb +318 -0
  2369. data/spec/unit/type/schedule_spec.rb +607 -0
  2370. data/spec/unit/type/scheduled_task_spec.rb +103 -0
  2371. data/spec/unit/type/selboolean_spec.rb +44 -0
  2372. data/spec/unit/type/selmodule_spec.rb +17 -0
  2373. data/spec/unit/type/service_spec.rb +261 -0
  2374. data/spec/unit/type/ssh_authorized_key_spec.rb +258 -0
  2375. data/spec/unit/type/sshkey_spec.rb +77 -0
  2376. data/spec/unit/type/stage_spec.rb +8 -0
  2377. data/spec/unit/type/tidy_spec.rb +433 -0
  2378. data/spec/unit/type/user_spec.rb +514 -0
  2379. data/spec/unit/type/vlan_spec.rb +44 -0
  2380. data/spec/unit/type/whit_spec.rb +10 -0
  2381. data/spec/unit/type/yumrepo_spec.rb +387 -0
  2382. data/spec/unit/type/zfs_spec.rb +46 -0
  2383. data/spec/unit/type/zone_spec.rb +172 -0
  2384. data/spec/unit/type/zpool_spec.rb +109 -0
  2385. data/spec/unit/type_spec.rb +1114 -0
  2386. data/spec/unit/util/autoload_spec.rb +256 -0
  2387. data/spec/unit/util/backups_spec.rb +134 -0
  2388. data/spec/unit/util/cache_accumulator_spec.rb +74 -0
  2389. data/spec/unit/util/cacher_spec.rb +107 -0
  2390. data/spec/unit/util/checksums_spec.rb +180 -0
  2391. data/spec/unit/util/colors_spec.rb +89 -0
  2392. data/spec/unit/util/command_line_spec.rb +192 -0
  2393. data/spec/unit/util/command_line_utils/puppet_option_parser_spec.rb +129 -0
  2394. data/spec/unit/util/constant_inflector_spec.rb +56 -0
  2395. data/spec/unit/util/diff_spec.rb +39 -0
  2396. data/spec/unit/util/docs_spec.rb +100 -0
  2397. data/spec/unit/util/errors_spec.rb +37 -0
  2398. data/spec/unit/util/execution_spec.rb +630 -0
  2399. data/spec/unit/util/execution_stub_spec.rb +39 -0
  2400. data/spec/unit/util/feature_spec.rb +106 -0
  2401. data/spec/unit/util/filetype_spec.rb +211 -0
  2402. data/spec/unit/util/http_proxy_spec.rb +125 -0
  2403. data/spec/unit/util/inifile_spec.rb +492 -0
  2404. data/spec/unit/util/inline_docs_spec.rb +31 -0
  2405. data/spec/unit/util/instrumentation/data_spec.rb +46 -0
  2406. data/spec/unit/util/instrumentation/indirection_probe_spec.rb +21 -0
  2407. data/spec/unit/util/instrumentation/instrumentable_spec.rb +186 -0
  2408. data/spec/unit/util/instrumentation/listener_spec.rb +101 -0
  2409. data/spec/unit/util/instrumentation/listeners/log_spec.rb +34 -0
  2410. data/spec/unit/util/instrumentation/listeners/performance_spec.rb +36 -0
  2411. data/spec/unit/util/instrumentation_spec.rb +181 -0
  2412. data/spec/unit/util/json_lockfile_spec.rb +50 -0
  2413. data/spec/unit/util/ldap/connection_spec.rb +161 -0
  2414. data/spec/unit/util/ldap/generator_spec.rb +50 -0
  2415. data/spec/unit/util/ldap/manager_spec.rb +641 -0
  2416. data/spec/unit/util/lockfile_spec.rb +118 -0
  2417. data/spec/unit/util/log/destinations_spec.rb +227 -0
  2418. data/spec/unit/util/log/rate_limited_logger_spec.rb +51 -0
  2419. data/spec/unit/util/log_spec.rb +378 -0
  2420. data/spec/unit/util/logging_spec.rb +205 -0
  2421. data/spec/unit/util/metric_spec.rb +98 -0
  2422. data/spec/unit/util/monkey_patches/lines_spec.rb +83 -0
  2423. data/spec/unit/util/monkey_patches_spec.rb +328 -0
  2424. data/spec/unit/util/nagios_maker_spec.rb +122 -0
  2425. data/spec/unit/util/network_device/cisco/device_spec.rb +445 -0
  2426. data/spec/unit/util/network_device/cisco/facts_spec.rb +64 -0
  2427. data/spec/unit/util/network_device/cisco/interface_spec.rb +88 -0
  2428. data/spec/unit/util/network_device/config_spec.rb +86 -0
  2429. data/spec/unit/util/network_device/ipcalc_spec.rb +62 -0
  2430. data/spec/unit/util/network_device/transport/base_spec.rb +41 -0
  2431. data/spec/unit/util/network_device/transport/ssh_spec.rb +218 -0
  2432. data/spec/unit/util/network_device/transport/telnet_spec.rb +84 -0
  2433. data/spec/unit/util/network_device_spec.rb +50 -0
  2434. data/spec/unit/util/package_spec.rb +20 -0
  2435. data/spec/unit/util/pidlock_spec.rb +218 -0
  2436. data/spec/unit/util/posix_spec.rb +251 -0
  2437. data/spec/unit/util/profiler/aggregate_spec.rb +59 -0
  2438. data/spec/unit/util/profiler/around_profiler_spec.rb +61 -0
  2439. data/spec/unit/util/profiler/logging_spec.rb +70 -0
  2440. data/spec/unit/util/profiler/object_counts_spec.rb +14 -0
  2441. data/spec/unit/util/profiler/wall_clock_spec.rb +13 -0
  2442. data/spec/unit/util/profiler_spec.rb +55 -0
  2443. data/spec/unit/util/pson_spec.rb +71 -0
  2444. data/spec/unit/util/queue/stomp_spec.rb +137 -0
  2445. data/spec/unit/util/queue_spec.rb +94 -0
  2446. data/spec/unit/util/rdoc/parser_spec.rb +608 -0
  2447. data/spec/unit/util/rdoc_spec.rb +141 -0
  2448. data/spec/unit/util/reference_serializer_spec.rb +51 -0
  2449. data/spec/unit/util/reference_spec.rb +39 -0
  2450. data/spec/unit/util/resource_template_spec.rb +57 -0
  2451. data/spec/unit/util/retryaction_spec.rb +62 -0
  2452. data/spec/unit/util/rubygems_spec.rb +82 -0
  2453. data/spec/unit/util/run_mode_spec.rb +145 -0
  2454. data/spec/unit/util/selinux_spec.rb +289 -0
  2455. data/spec/unit/util/ssl_spec.rb +92 -0
  2456. data/spec/unit/util/storage_spec.rb +210 -0
  2457. data/spec/unit/util/suidmanager_spec.rb +297 -0
  2458. data/spec/unit/util/symbolic_file_mode_spec.rb +182 -0
  2459. data/spec/unit/util/tag_set_spec.rb +46 -0
  2460. data/spec/unit/util/tagging_spec.rb +162 -0
  2461. data/spec/unit/util/terminal_spec.rb +42 -0
  2462. data/spec/unit/util/user_attr_spec.rb +46 -0
  2463. data/spec/unit/util/warnings_spec.rb +38 -0
  2464. data/spec/unit/util/watched_file_spec.rb +52 -0
  2465. data/spec/unit/util/watcher/periodic_watcher_spec.rb +52 -0
  2466. data/spec/unit/util/watcher_spec.rb +56 -0
  2467. data/spec/unit/util/windows/access_control_entry_spec.rb +67 -0
  2468. data/spec/unit/util/windows/access_control_list_spec.rb +133 -0
  2469. data/spec/unit/util/windows/adsi_spec.rb +440 -0
  2470. data/spec/unit/util/windows/api_types_spec.rb +28 -0
  2471. data/spec/unit/util/windows/registry_spec.rb +141 -0
  2472. data/spec/unit/util/windows/root_certs_spec.rb +17 -0
  2473. data/spec/unit/util/windows/security_descriptor_spec.rb +117 -0
  2474. data/spec/unit/util/windows/sid_spec.rb +166 -0
  2475. data/spec/unit/util/windows/string_spec.rb +58 -0
  2476. data/spec/unit/util/yaml_spec.rb +55 -0
  2477. data/spec/unit/util/zaml_spec.rb +308 -0
  2478. data/spec/unit/util_spec.rb +577 -0
  2479. data/spec/unit/version_spec.rb +42 -0
  2480. data/spec/watchr.rb +142 -0
  2481. data/tasks/benchmark.rake +144 -0
  2482. data/tasks/ci.rake +29 -0
  2483. data/tasks/manpages.rake +84 -0
  2484. data/tasks/parallel.rake +408 -0
  2485. data/tasks/parser.rake +19 -0
  2486. data/tasks/yard.rake +59 -0
  2487. metadata +3727 -0
@@ -0,0 +1,57 @@
1
+ # Represents an entry in the injectors internal data.
2
+ #
3
+ # @api public
4
+ #
5
+ class Puppet::Pops::Binder::InjectorEntry
6
+ # @return [Object] An opaque (comparable) object representing the precedence
7
+ # @api public
8
+ attr_reader :precedence
9
+
10
+ # @return [Puppet::Pops::Binder::Bindings::Binding] The binding for this entry
11
+ # @api public
12
+ attr_reader :binding
13
+
14
+ # @api private
15
+ attr_accessor :resolved
16
+
17
+ # @api private
18
+ attr_accessor :cached_producer
19
+
20
+ # @api private
21
+ def initialize(binding, precedence = 0)
22
+ @precedence = precedence.freeze
23
+ @binding = binding
24
+ @cached_producer = nil
25
+ end
26
+
27
+ # Marks an overriding entry as resolved (if not an overriding entry, the marking has no effect).
28
+ # @api private
29
+ #
30
+ def mark_override_resolved()
31
+ @resolved = true
32
+ end
33
+
34
+ # The binding is resolved if it is non-override, or if the override has been resolved
35
+ # @api private
36
+ #
37
+ def is_resolved?()
38
+ !binding.override || resolved
39
+ end
40
+
41
+ def is_abstract?
42
+ binding.abstract
43
+ end
44
+
45
+ def is_final?
46
+ binding.final
47
+ end
48
+
49
+ # Compares against another InjectorEntry by comparing precedence.
50
+ # @param injector_entry [InjectorEntry] entry to compare against.
51
+ # @return [Integer] 1, if this entry has higher precedence, 0 if equal, and -1 if given entry has higher precedence.
52
+ # @api public
53
+ #
54
+ def <=> (injector_entry)
55
+ precedence <=> injector_entry.precedence
56
+ end
57
+ end
@@ -0,0 +1,67 @@
1
+ # The KeyFactory is responsible for creating keys used for lookup of bindings.
2
+ # @api public
3
+ #
4
+ class Puppet::Pops::Binder::KeyFactory
5
+
6
+ attr_reader :type_calculator
7
+ # @api public
8
+ def initialize(type_calculator = Puppet::Pops::Types::TypeCalculator.new())
9
+ @type_calculator = type_calculator
10
+ end
11
+
12
+ # @api public
13
+ def binding_key(binding)
14
+ named_key(binding.type, binding.name)
15
+ end
16
+
17
+ # @api public
18
+ def named_key(type, name)
19
+ [(@type_calculator.assignable?(@type_calculator.data, type) ? @type_calculator.data : type), name]
20
+ end
21
+
22
+ # @api public
23
+ def data_key(name)
24
+ [@type_calculator.data, name]
25
+ end
26
+
27
+ # @api public
28
+ def is_contributions_key?(s)
29
+ return false unless s.is_a?(String)
30
+ s.start_with?('mc_')
31
+ end
32
+
33
+ # @api public
34
+ def multibind_contributions(multibind_id)
35
+ "mc_#{multibind_id}"
36
+ end
37
+
38
+ # @api public
39
+ def multibind_contribution_key_to_id(contributions_key)
40
+ # removes the leading "mc_" from the key to get the multibind_id
41
+ contributions_key[3..-1]
42
+ end
43
+
44
+ # @api public
45
+ def is_named?(key)
46
+ key.is_a?(Array) && key[1] && !key[1].empty?
47
+ end
48
+
49
+ # @api public
50
+ def is_data?(key)
51
+ return false unless key.is_a?(Array) && key[0].is_a?(Puppet::Pops::Types::PAnyType)
52
+ type_calculator.assignable?(type_calculator.data(), key[0])
53
+ end
54
+
55
+ # @api public
56
+ def is_ruby?(key)
57
+ key.is_a?(Array) && key[0].is_a?(Puppet::Pops::Types::PRuntimeType) && key[0].runtime == :ruby
58
+ end
59
+
60
+ # Returns the type of the key
61
+ # @api public
62
+ #
63
+ def get_type(key)
64
+ return nil unless key.is_a?(Array)
65
+ key[0]
66
+ end
67
+ end
@@ -0,0 +1,199 @@
1
+ # This class is the backing implementation of the Puppet function 'lookup'.
2
+ # See puppet/parser/functions/lookup.rb for documentation.
3
+ #
4
+ class Puppet::Pops::Binder::Lookup
5
+
6
+ def self.parse_lookup_args(args)
7
+ options = {}
8
+ pblock = if args[-1].respond_to?(:puppet_lambda)
9
+ args.pop
10
+ end
11
+
12
+ case args.size
13
+ when 1
14
+ # name, or all options
15
+ if args[ 0 ].is_a?(Hash)
16
+ options = to_symbolic_hash(args[ 0 ])
17
+ else
18
+ options[ :name ] = args[ 0 ]
19
+ end
20
+
21
+ when 2
22
+ # name and type, or name and options
23
+ if args[ 1 ].is_a?(Hash)
24
+ options = to_symbolic_hash(args[ 1 ])
25
+ options[:name] = args[ 0 ] # silently overwrite option with given name
26
+ else
27
+ options[:name] = args[ 0 ]
28
+ options[:type] = args[ 1 ]
29
+ end
30
+
31
+ when 3
32
+ # name, type, default (no options)
33
+ options[ :name ] = args[ 0 ]
34
+ options[ :type ] = args[ 1 ]
35
+ options[ :default ] = args[ 2 ]
36
+ else
37
+ raise Puppet::ParseError, "The lookup function accepts 1-3 arguments, got #{args.size}"
38
+ end
39
+ options[:pblock] = pblock
40
+ options
41
+ end
42
+
43
+ def self.to_symbolic_hash(input)
44
+ names = [:name, :type, :default, :accept_undef, :extra, :override]
45
+ options = {}
46
+ names.each {|n| options[n] = undef_as_nil(input[n.to_s] || input[n]) }
47
+ options
48
+ end
49
+
50
+ def self.type_mismatch(type_calculator, expected, got)
51
+ "has wrong type, expected #{type_calculator.string(expected)}, got #{type_calculator.string(got)}"
52
+ end
53
+
54
+ def self.fail(msg)
55
+ raise Puppet::ParseError, "Function lookup() " + msg
56
+ end
57
+
58
+ def self.fail_lookup(names)
59
+ name_part = if names.size == 1
60
+ "the name '#{names[0]}'"
61
+ else
62
+ "any of the names ['" + names.join(', ') + "']"
63
+ end
64
+ fail("did not find a value for #{name_part}")
65
+ end
66
+
67
+ def self.validate_options(options, type_calculator)
68
+ type_parser = Puppet::Pops::Types::TypeParser.new
69
+ name_type = type_parser.parse('Variant[Array[String], String]')
70
+
71
+ if is_nil_or_undef?(options[:name]) || options[:name].is_a?(Array) && options[:name].empty?
72
+ fail ("requires a name, or array of names. Got nothing to lookup.")
73
+ end
74
+
75
+ t = type_calculator.infer(options[:name])
76
+ if ! type_calculator.assignable?(name_type, t)
77
+ fail("given 'name' argument, #{type_mismatch(type_calculator, options[:name], t)}")
78
+ end
79
+
80
+ # unless a type is already given (future case), parse the type (or default 'Data'), fails if invalid type is given
81
+ unless options[:type].is_a?(Puppet::Pops::Types::PAnyType)
82
+ options[:type] = type_parser.parse(options[:type] || 'Data')
83
+ end
84
+
85
+ # default value must comply with the given type
86
+ if options[:default]
87
+ t = type_calculator.infer(options[:default])
88
+ if ! type_calculator.assignable?(options[:type], t)
89
+ fail("'default' value #{type_mismatch(type_calculator, options[:type], t)}")
90
+ end
91
+ end
92
+
93
+ if options[:extra] && !options[:extra].is_a?(Hash)
94
+ # do not perform inference here, it is enough to know that it is not a hash
95
+ fail("'extra' value must be a Hash, got #{options[:extra].class}")
96
+ end
97
+ options[:extra] = {} unless options[:extra]
98
+
99
+ if options[:override] && !options[:override].is_a?(Hash)
100
+ # do not perform inference here, it is enough to know that it is not a hash
101
+ fail("'override' value must be a Hash, got #{options[:extra].class}")
102
+ end
103
+ options[:override] = {} unless options[:override]
104
+
105
+ end
106
+
107
+ def self.nil_as_undef(x)
108
+ x.nil? ? :undef : x
109
+ end
110
+
111
+ def self.undef_as_nil(x)
112
+ is_nil_or_undef?(x) ? nil : x
113
+ end
114
+
115
+ def self.is_nil_or_undef?(x)
116
+ x.nil? || x == :undef
117
+ end
118
+
119
+ # This is used as a marker - a value that cannot (at least not easily) by mistake be found in
120
+ # hiera data.
121
+ #
122
+ class PrivateNotFoundMarker; end
123
+
124
+ def self.search_for(scope, type, name, options)
125
+ # search in order, override, injector, hiera, then extra
126
+ if !(result = options[:override][name]).nil?
127
+ result
128
+ elsif !(result = scope.compiler.injector.lookup(scope, type, name)).nil?
129
+ result
130
+ else
131
+ result = scope.function_hiera([name, PrivateNotFoundMarker])
132
+ if !result.nil? && result != PrivateNotFoundMarker
133
+ result
134
+ else
135
+ options[:extra][name]
136
+ end
137
+ end
138
+ end
139
+
140
+ # This is the method called from the puppet/parser/functions/lookup.rb
141
+ # @param args [Array] array following the puppet function call conventions
142
+ def self.lookup(scope, args)
143
+ type_calculator = Puppet::Pops::Types::TypeCalculator.new
144
+ options = parse_lookup_args(args)
145
+ validate_options(options, type_calculator)
146
+ names = [options[:name]].flatten
147
+ type = options[:type]
148
+
149
+ result_with_name = names.reduce([]) do |memo, name|
150
+ break memo if !memo[1].nil?
151
+ [name, search_for(scope, type, name, options)]
152
+ end
153
+
154
+ result = if result_with_name[1].nil?
155
+ # not found, use default (which may be nil), the default is already type checked
156
+ options[:default]
157
+ else
158
+ # injector.lookup is type-safe already do no need to type check the result
159
+ result_with_name[1]
160
+ end
161
+
162
+ # If a block is given it is called with :undef passed as 'nil' since the lookup function
163
+ # is available from 3x with --binder turned on, and the evaluation is always 4x.
164
+ # TODO PUPPET4: Simply pass the value
165
+ #
166
+ result = if pblock = options[:pblock]
167
+ result2 = case pblock.parameter_count
168
+ when 1
169
+ pblock.call(scope, undef_as_nil(result))
170
+ when 2
171
+ pblock.call(scope, result_with_name[ 0 ], undef_as_nil(result))
172
+ else
173
+ pblock.call(scope, result_with_name[ 0 ], undef_as_nil(result), undef_as_nil(options[ :default ]))
174
+ end
175
+
176
+ # if the given result was returned, there is no need to type-check it again
177
+ if !result2.equal?(result)
178
+ t = type_calculator.infer(undef_as_nil(result2))
179
+ if !type_calculator.assignable?(type, t)
180
+ fail "the value produced by the given code block #{type_mismatch(type_calculator, type, t)}"
181
+ end
182
+ end
183
+ result2
184
+ else
185
+ result
186
+ end
187
+
188
+ # Finally, the result if nil must be acceptable or an error is raised
189
+ if is_nil_or_undef?(result) && !options[:accept_undef]
190
+ fail_lookup(names)
191
+ else
192
+ # Since the function may be used without future parser being in effect, nil is not handled in a good
193
+ # way, and should instead be turned into :undef.
194
+ # TODO PUPPET4: Simply return the result
195
+ #
196
+ Puppet[:parser] == 'future' ? result : nil_as_undef(result)
197
+ end
198
+ end
199
+ end
@@ -0,0 +1,826 @@
1
+ # This module contains the various producers used by Puppet Bindings.
2
+ # The main (abstract) class is {Puppet::Pops::Binder::Producers::Producer} which documents the
3
+ # Producer API and serves as a base class for all other producers.
4
+ # It is required that custom producers inherit from this producer (directly or indirectly).
5
+ #
6
+ # The selection of a Producer is typically performed by the Innjector when it configures itself
7
+ # from a Bindings model where a {Puppet::Pops::Binder::Bindings::ProducerDescriptor} describes
8
+ # which producer to use. The configuration uses this to create the concrete producer.
9
+ # It is possible to describe that a particular producer class is to be used, and also to describe that
10
+ # a custom producer (derived from Producer) should be used. This is available for both regular
11
+ # bindings as well as multi-bindings.
12
+ #
13
+ #
14
+ # @api public
15
+ #
16
+ module Puppet::Pops::Binder::Producers
17
+ # Producer is an abstract base class representing the base contract for a bound producer.
18
+ # Typically, when a lookup is performed it is the value that is returned (via a producer), but
19
+ # it is also possible to lookup the producer, and ask it to produce the value (the producer may
20
+ # return a series of values, which makes this especially useful).
21
+ #
22
+ # When looking up a producer, it is of importance to only use the API of the Producer class
23
+ # unless it is known that a particular custom producer class has been bound.
24
+ #
25
+ # Custom Producers
26
+ # ----------------
27
+ # The intent is that this class is derived for custom producers that require additional
28
+ # options/arguments when producing an instance. Such a custom producer may raise an error if called
29
+ # with too few arguments, or may implement specific `produce` methods and always raise an
30
+ # error on #produce indicating that this producer requires custom calls and that it can not
31
+ # be used as an implicit producer.
32
+ #
33
+ # Features of Producer
34
+ # --------------------
35
+ # The Producer class is abstract, but offers the ability to transform the produced result
36
+ # by passing the option `:transformer` which should be a Puppet Lambda Expression taking one argument
37
+ # and producing the transformed (wanted) result.
38
+ #
39
+ # @abstract
40
+ # @api public
41
+ #
42
+ class Producer
43
+ # A Puppet 3 AST Lambda Expression
44
+ # @api public
45
+ #
46
+ attr_reader :transformer
47
+
48
+ # Creates a Producer.
49
+ # Derived classes should call this constructor to get support for transformer lambda.
50
+ #
51
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
52
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
53
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
54
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
55
+ # @api public
56
+ #
57
+ def initialize(injector, binding, scope, options)
58
+ if transformer_lambda = options[:transformer]
59
+ if transformer_lambda.is_a?(Proc)
60
+ raise ArgumentError, "Transformer Proc must take two arguments; scope, value." unless transformer_lambda.arity == 2
61
+ @transformer = transformer_lambda
62
+ else
63
+ raise ArgumentError, "Transformer must be a LambdaExpression" unless transformer_lambda.is_a?(Puppet::Pops::Model::LambdaExpression)
64
+ raise ArgumentError, "Transformer lambda must take one argument; value." unless transformer_lambda.parameters.size() == 1
65
+ @transformer = Puppet::Pops::Parser::EvaluatingParser.new.closure(transformer_lambda, scope)
66
+ end
67
+ end
68
+ end
69
+
70
+ # Produces an instance.
71
+ # @param scope [Puppet::Parser:Scope] the scope to use for evaluation
72
+ # @param args [Object] arguments to custom producers, always empty for implicit productions
73
+ # @return [Object] the produced instance (should never be nil).
74
+ # @api public
75
+ #
76
+ def produce(scope, *args)
77
+ do_transformation(scope, internal_produce(scope))
78
+ end
79
+
80
+ # Returns the producer after possibly having recreated an internal/wrapped producer.
81
+ # This implementation returns `self`. A derived class may want to override this method
82
+ # to perform initialization/refresh of its internal state. This method is called when
83
+ # a producer is requested.
84
+ # @see Puppet::Pops::Binder::ProducerProducer for an example of implementation.
85
+ # @param scope [Puppet::Parser:Scope] the scope to use for evaluation
86
+ # @return [Puppet::Pops::Binder::Producer] the producer to use
87
+ # @api public
88
+ #
89
+ def producer(scope)
90
+ self
91
+ end
92
+
93
+ protected
94
+
95
+ # Derived classes should implement this method to do the production of a value
96
+ # @param scope [Puppet::Parser::Scope] the scope to use when performing lookup and evaluation
97
+ # @raise [NotImplementedError] this implementation always raises an error
98
+ # @abstract
99
+ # @api private
100
+ #
101
+ def internal_produce(scope)
102
+ raise NotImplementedError, "Producer-class '#{self.class.name}' should implement #internal_produce(scope)"
103
+ end
104
+
105
+ # Transforms the produced value if a transformer has been defined.
106
+ # @param scope [Puppet::Parser::Scope] the scope used for evaluation
107
+ # @param produced_value [Object, nil] the produced value (possibly nil)
108
+ # @return [Object] the transformed value if a transformer is defined, else the given `produced_value`
109
+ # @api private
110
+ #
111
+ def do_transformation(scope, produced_value)
112
+ return produced_value unless transformer
113
+ transformer.call(scope, produced_value)
114
+ end
115
+ end
116
+
117
+ # Abstract Producer holding a value
118
+ # @abstract
119
+ # @api public
120
+ #
121
+ class AbstractValueProducer < Producer
122
+
123
+ # @api public
124
+ attr_reader :value
125
+
126
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
127
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
128
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
129
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
130
+ # @option options [Puppet::Pops::Model::LambdaExpression, nil] :value (nil) the value to produce
131
+ # @api public
132
+ #
133
+ def initialize(injector, binding, scope, options)
134
+ super
135
+ # nil is ok here, as an abstract value producer may be used to signal "not found"
136
+ @value = options[:value]
137
+ end
138
+ end
139
+
140
+ # Produces the same/singleton value on each production
141
+ # @api public
142
+ #
143
+ class SingletonProducer < AbstractValueProducer
144
+ protected
145
+
146
+ # @api private
147
+ def internal_produce(scope)
148
+ value()
149
+ end
150
+ end
151
+
152
+ # Produces a deep clone of its value on each production.
153
+ # @api public
154
+ #
155
+ class DeepCloningProducer < AbstractValueProducer
156
+ protected
157
+
158
+ # @api private
159
+ def internal_produce(scope)
160
+ case value
161
+ when Integer, Float, TrueClass, FalseClass, Symbol
162
+ # These are immutable
163
+ return value
164
+ when String
165
+ # ok if frozen, else fall through to default
166
+ return value() if value.frozen?
167
+ end
168
+ # The default: serialize/deserialize to get a deep copy
169
+ Marshal.load(Marshal.dump(value()))
170
+ end
171
+ end
172
+
173
+ # This abstract producer class remembers the injector and binding.
174
+ # @abstract
175
+ # @api public
176
+ #
177
+ class AbstractArgumentedProducer < Producer
178
+
179
+ # @api public
180
+ attr_reader :injector
181
+
182
+ # @api public
183
+ attr_reader :binding
184
+
185
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
186
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
187
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
188
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
189
+ # @api public
190
+ #
191
+ def initialize(injector, binding, scope, options)
192
+ super
193
+ @injector = injector
194
+ @binding = binding
195
+ end
196
+ end
197
+
198
+ # @api public
199
+ class InstantiatingProducer < AbstractArgumentedProducer
200
+
201
+ # @api public
202
+ attr_reader :the_class
203
+
204
+ # @api public
205
+ attr_reader :init_args
206
+
207
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
208
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
209
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
210
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
211
+ # @option options [String] :class_name The name of the class to create instance of
212
+ # @option options [Array<Object>] :init_args ([]) Optional arguments to class constructor
213
+ # @api public
214
+ #
215
+ def initialize(injector, binding, scope, options)
216
+ # Better do this, even if a transformation of a created instance is kind of an odd thing to do, one can imagine
217
+ # sending it to a function for further detailing.
218
+ #
219
+ super
220
+ class_name = options[:class_name]
221
+ raise ArgumentError, "Option 'class_name' must be given for an InstantiatingProducer" unless class_name
222
+ # get class by name
223
+ @the_class = Puppet::Pops::Types::ClassLoader.provide(class_name)
224
+ @init_args = options[:init_args] || []
225
+ raise ArgumentError, "Can not load the class #{class_name} specified in binding named: '#{binding.name}'" unless @the_class
226
+ end
227
+
228
+ protected
229
+
230
+ # Performs initialization the same way as Assisted Inject does (but handle arguments to
231
+ # constructor)
232
+ # @api private
233
+ #
234
+ def internal_produce(scope)
235
+ result = nil
236
+ # A class :inject method wins over an instance :initialize if it is present, unless a more specific
237
+ # constructor exists. (i.e do not pick :inject from superclass if class has a constructor).
238
+ #
239
+ if the_class.respond_to?(:inject)
240
+ inject_method = the_class.method(:inject)
241
+ initialize_method = the_class.instance_method(:initialize)
242
+ if inject_method.owner <= initialize_method.owner
243
+ result = the_class.inject(injector, scope, binding, *init_args)
244
+ end
245
+ end
246
+ if result.nil?
247
+ result = the_class.new(*init_args)
248
+ end
249
+ result
250
+ end
251
+ end
252
+
253
+ # @api public
254
+ class FirstFoundProducer < Producer
255
+ # @api public
256
+ attr_reader :producers
257
+
258
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
259
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
260
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
261
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
262
+ # @option options [Array<Puppet::Pops::Binder::Producers::Producer>] :producers list of producers to consult. Required.
263
+ # @api public
264
+ #
265
+ def initialize(injector, binding, scope, options)
266
+ super
267
+ @producers = options[:producers]
268
+ raise ArgumentError, "Option :producers' must be set to a list of producers." if @producers.nil?
269
+ raise ArgumentError, "Given 'producers' option is not an Array" unless @producers.is_a?(Array)
270
+ end
271
+
272
+ protected
273
+
274
+ # @api private
275
+ def internal_produce(scope)
276
+ # return the first produced value that is non-nil (unfortunately there is no such enumerable method)
277
+ producers.reduce(nil) {|memo, p| break memo unless memo.nil?; p.produce(scope)}
278
+ end
279
+ end
280
+
281
+ # Evaluates a Puppet Expression and returns the result.
282
+ # This is typically used for strings with interpolated expressions.
283
+ # @api public
284
+ #
285
+ class EvaluatingProducer < Producer
286
+ # A Puppet 3 AST Expression
287
+ # @api public
288
+ #
289
+ attr_reader :expression
290
+
291
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
292
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
293
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
294
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
295
+ # @option options [Array<Puppet::Pops::Model::Expression>] :expression The expression to evaluate
296
+ # @api public
297
+ #
298
+ def initialize(injector, binding, scope, options)
299
+ super
300
+ @expression = options[:expression]
301
+ raise ArgumentError, "Option 'expression' must be given to an EvaluatingProducer." unless @expression
302
+ end
303
+
304
+ # @api private
305
+ def internal_produce(scope)
306
+ Puppet::Pops::Parser::EvaluatingParser.new.evaluate(scope, expression)
307
+ end
308
+ end
309
+
310
+ # @api public
311
+ class LookupProducer < AbstractArgumentedProducer
312
+
313
+ # @api public
314
+ attr_reader :type
315
+
316
+ # @api public
317
+ attr_reader :name
318
+
319
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
320
+ # @param binder [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
321
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
322
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
323
+ # @option options [Puppet::Pops::Types::PAnyType] :type The type to lookup
324
+ # @option options [String] :name ('') The name to lookup
325
+ # @api public
326
+ #
327
+ def initialize(injector, binder, scope, options)
328
+ super
329
+ @type = options[:type]
330
+ @name = options[:name] || ''
331
+ raise ArgumentError, "Option 'type' must be given in a LookupProducer." unless @type
332
+ end
333
+
334
+ protected
335
+
336
+ # @api private
337
+ def internal_produce(scope)
338
+ injector.lookup_type(scope, type, name)
339
+ end
340
+ end
341
+
342
+ # @api public
343
+ class LookupKeyProducer < LookupProducer
344
+
345
+ # @api public
346
+ attr_reader :key
347
+
348
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
349
+ # @param binder [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
350
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
351
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
352
+ # @option options [Puppet::Pops::Types::PAnyType] :type The type to lookup
353
+ # @option options [String] :name ('') The name to lookup
354
+ # @option options [Puppet::Pops::Types::PAnyType] :key The key to lookup in the hash
355
+ # @api public
356
+ #
357
+ def initialize(injector, binder, scope, options)
358
+ super
359
+ @key = options[:key]
360
+ raise ArgumentError, "Option 'key' must be given in a LookupKeyProducer." if key.nil?
361
+ end
362
+
363
+ protected
364
+
365
+ # @api private
366
+ def internal_produce(scope)
367
+
368
+ result = super
369
+ result.is_a?(Hash) ? result[key] : nil
370
+ end
371
+ end
372
+
373
+ # Produces the given producer, then uses that producer.
374
+ # @see ProducerProducer for the non singleton version
375
+ # @api public
376
+ #
377
+ class SingletonProducerProducer < Producer
378
+
379
+ # @api public
380
+ attr_reader :value_producer
381
+
382
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
383
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
384
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
385
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
386
+ # @option options [Puppet::Pops::Model::LambdaExpression] :producer_producer a producer of a value producer (required)
387
+ # @api public
388
+ #
389
+ def initialize(injector, binding, scope, options)
390
+ super
391
+ p = options[:producer_producer]
392
+ raise ArgumentError, "Option :producer_producer must be given in a SingletonProducerProducer" unless p
393
+ @value_producer = p.produce(scope)
394
+ end
395
+
396
+ protected
397
+
398
+ # @api private
399
+ def internal_produce(scope)
400
+ value_producer.produce(scope)
401
+ end
402
+ end
403
+
404
+ # A ProducerProducer creates a producer via another producer, and then uses this created producer
405
+ # to produce values. This is useful for custom production of series of values.
406
+ # On each request for a producer, this producer will reset its internal producer (i.e. restarting
407
+ # the series).
408
+ #
409
+ # @param producer_producer [#produce(scope)] the producer of the producer
410
+ #
411
+ # @api public
412
+ #
413
+ class ProducerProducer < Producer
414
+
415
+ # @api public
416
+ attr_reader :producer_producer
417
+
418
+ # @api public
419
+ attr_reader :value_producer
420
+
421
+ # Creates new ProducerProducer given a producer.
422
+ #
423
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
424
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
425
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
426
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
427
+ # @option options [Puppet::Pops::Binder::Producer] :producer_producer a producer of a value producer (required)
428
+ #
429
+ # @api public
430
+ #
431
+ def initialize(injector, binding, scope, options)
432
+ super
433
+ unless producer_producer = options[:producer_producer]
434
+ raise ArgumentError, "The option :producer_producer must be set in a ProducerProducer"
435
+ end
436
+ raise ArgumentError, "Argument must be a Producer" unless producer_producer.is_a?(Producer)
437
+
438
+ @producer_producer = producer_producer
439
+ @value_producer = nil
440
+ end
441
+
442
+ # Updates the internal state to use a new instance of the wrapped producer.
443
+ # @api public
444
+ #
445
+ def producer(scope)
446
+ @value_producer = @producer_producer.produce(scope)
447
+ self
448
+ end
449
+
450
+ protected
451
+
452
+ # Produces a value after having created an instance of the wrapped producer (if not already created).
453
+ # @api private
454
+ #
455
+ def internal_produce(scope, *args)
456
+ producer() unless value_producer
457
+ value_producer.produce(scope)
458
+ end
459
+ end
460
+
461
+ # This type of producer should only be created by the Injector.
462
+ #
463
+ # @api private
464
+ #
465
+ class AssistedInjectProducer < Producer
466
+ # An Assisted Inject Producer is created when a lookup is made of a type that is
467
+ # not bound. It does not support a transformer lambda.
468
+ # @note This initializer has a different signature than all others. Do not use in regular logic.
469
+ # @api private
470
+ #
471
+ def initialize(injector, clazz)
472
+ raise ArgumentError, "class must be given" unless clazz.is_a?(Class)
473
+
474
+ @injector = injector
475
+ @clazz = clazz
476
+ @inst = nil
477
+ end
478
+
479
+ def produce(scope, *args)
480
+ producer(scope, *args) unless @inst
481
+ @inst
482
+ end
483
+
484
+ # @api private
485
+ def producer(scope, *args)
486
+ @inst = nil
487
+ # A class :inject method wins over an instance :initialize if it is present, unless a more specific zero args
488
+ # constructor exists. (i.e do not pick :inject from superclass if class has a zero args constructor).
489
+ #
490
+ if @clazz.respond_to?(:inject)
491
+ inject_method = @clazz.method(:inject)
492
+ initialize_method = @clazz.instance_method(:initialize)
493
+ if inject_method.owner <= initialize_method.owner || initialize_method.arity != 0
494
+ @inst = @clazz.inject(@injector, scope, nil, *args)
495
+ end
496
+ end
497
+ if @inst.nil?
498
+ unless args.empty?
499
+ raise ArgumentError, "Assisted Inject can not pass arguments to no-args constructor when there is no class inject method."
500
+ end
501
+ @inst = @clazz.new()
502
+ end
503
+ self
504
+ end
505
+ end
506
+
507
+ # Abstract base class for multibind producers.
508
+ # Is suitable as base class for custom implementations of multibind producers.
509
+ # @abstract
510
+ # @api public
511
+ #
512
+ class MultibindProducer < AbstractArgumentedProducer
513
+ attr_reader :contributions_key
514
+
515
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
516
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
517
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
518
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
519
+ #
520
+ # @api public
521
+ #
522
+ def initialize(injector, binding, scope, options)
523
+ super
524
+ @contributions_key = injector.key_factory.multibind_contributions(binding.id)
525
+ end
526
+
527
+ # @param expected [Array<Puppet::Pops::Types::PAnyType>, Puppet::Pops::Types::PAnyType] expected type or types
528
+ # @param actual [Object, Puppet::Pops::Types::PAnyType> the actual value (or its type)
529
+ # @return [String] a formatted string for inclusion as detail in an error message
530
+ # @api private
531
+ #
532
+ def type_error_detail(expected, actual)
533
+ tc = injector.type_calculator
534
+ expected = [expected] unless expected.is_a?(Array)
535
+ actual_t = tc.is_ptype?(actual) ? actual : tc.infer(actual)
536
+ expstrs = expected.collect {|t| tc.string(t) }
537
+ "expected: #{expstrs.join(', or ')}, got: #{tc.string(actual_t)}"
538
+ end
539
+ end
540
+
541
+ # A configurable multibind producer for Array type multibindings.
542
+ #
543
+ # This implementation collects all contributions to the multibind and then combines them using the following rules:
544
+ #
545
+ # - all *unnamed* entries are added unless the option `:priority_on_unnamed` is set to true, in which case the unnamed
546
+ # contribution with the highest priority is added, and the rest are ignored (unless they have the same priority in which
547
+ # case an error is raised).
548
+ # - all *named* entries are handled the same way as *unnamed* but the option `:priority_on_named` controls their handling.
549
+ # - the option `:uniq` post processes the result to only contain unique entries
550
+ # - the option `:flatten` post processes the result by flattening all nested arrays.
551
+ # - If both `:flatten` and `:uniq` are true, flattening is done first.
552
+ #
553
+ # @note
554
+ # Collection accepts elements that comply with the array's element type, or the entire type (i.e. Array[element_type]).
555
+ # If the type is restrictive - e.g. Array[String] and an Array[String] is contributed, the result will not be type
556
+ # compliant without also using the `:flatten` option, and a type error will be raised. For an array with relaxed typing
557
+ # i.e. Array[Data], it is valid to produce a result such as `['a', ['b', 'c'], 'd']` and no flattening is required
558
+ # and no error is raised (but using the array needs to be aware of potential array, non-array entries.
559
+ # The use of the option `:flatten` controls how the result is flattened.
560
+ #
561
+ # @api public
562
+ #
563
+ class ArrayMultibindProducer < MultibindProducer
564
+
565
+ # @return [Boolean] whether the result should be made contain unique (non-equal) entries or not
566
+ # @api public
567
+ attr_reader :uniq
568
+
569
+ # @return [Boolean, Integer] If result should be flattened (true), or not (false), or flattened to given level (0 = none, -1 = all)
570
+ # @api public
571
+ attr_reader :flatten
572
+
573
+ # @return [Boolean] whether priority should be considered for named contributions
574
+ # @api public
575
+ attr_reader :priority_on_named
576
+
577
+ # @return [Boolean] whether priority should be considered for unnamed contributions
578
+ # @api public
579
+ attr_reader :priority_on_unnamed
580
+
581
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
582
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
583
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
584
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
585
+ # @option options [Boolean] :uniq (false) if collected result should be post-processed to contain only unique entries
586
+ # @option options [Boolean, Integer] :flatten (false) if collected result should be post-processed so all contained arrays
587
+ # are flattened. May be set to an Integer value to indicate the level of recursion (-1 is endless, 0 is none).
588
+ # @option options [Boolean] :priority_on_named (true) if highest precedented named element should win or if all should be included
589
+ # @option options [Boolean] :priority_on_unnamed (false) if highest precedented unnamed element should win or if all should be included
590
+ # @api public
591
+ #
592
+ def initialize(injector, binding, scope, options)
593
+ super
594
+ @uniq = !!options[:uniq]
595
+ @flatten = options[:flatten]
596
+ @priority_on_named = options[:priority_on_named].nil? ? true : options[:priority_on_name]
597
+ @priority_on_unnamed = !!options[:priority_on_unnamed]
598
+
599
+ case @flatten
600
+ when Integer
601
+ when true
602
+ @flatten = -1
603
+ when false
604
+ @flatten = nil
605
+ when NilClass
606
+ @flatten = nil
607
+ else
608
+ raise ArgumentError, "Option :flatten must be nil, Boolean, or an integer value" unless @flatten.is_a?(Integer)
609
+ end
610
+ end
611
+
612
+ protected
613
+
614
+ # @api private
615
+ def internal_produce(scope)
616
+ seen = {}
617
+ included_keys = []
618
+
619
+ injector.get_contributions(scope, contributions_key).each do |element|
620
+ key = element[0]
621
+ entry = element[1]
622
+
623
+ name = entry.binding.name
624
+ existing = seen[name]
625
+ empty_name = name.nil? || name.empty?
626
+ if existing
627
+ if empty_name && priority_on_unnamed
628
+ if (seen[name] <=> entry) >= 0
629
+ raise ArgumentError, "Duplicate key (same priority) contributed to Array Multibinding '#{binding.name}' with unnamed entry."
630
+ end
631
+ next
632
+ elsif !empty_name && priority_on_named
633
+ if (seen[name] <=> entry) >= 0
634
+ raise ArgumentError, "Duplicate key (same priority) contributed to Array Multibinding '#{binding.name}', key: '#{name}'."
635
+ end
636
+ next
637
+ end
638
+ else
639
+ seen[name] = entry
640
+ end
641
+ included_keys << key
642
+ end
643
+ result = included_keys.collect do |k|
644
+ x = injector.lookup_key(scope, k)
645
+ assert_type(binding(), injector.type_calculator(), x)
646
+ x
647
+ end
648
+
649
+ result.flatten!(flatten) if flatten
650
+ result.uniq! if uniq
651
+ result
652
+ end
653
+
654
+ # @api private
655
+ def assert_type(binding, tc, value)
656
+ infered = tc.infer(value)
657
+ unless tc.assignable?(binding.type.element_type, infered) || tc.assignable?(binding.type, infered)
658
+ raise ArgumentError, ["Type Error: contribution to '#{binding.name}' does not match type of multibind, ",
659
+ "#{type_error_detail([binding.type.element_type, binding.type], value)}"].join()
660
+ end
661
+ end
662
+ end
663
+
664
+ # @api public
665
+ class HashMultibindProducer < MultibindProducer
666
+
667
+ # @return [Symbol] One of `:error`, `:merge`, `:append`, `:priority`, `:ignore`
668
+ # @api public
669
+ attr_reader :conflict_resolution
670
+
671
+ # @return [Boolean]
672
+ # @api public
673
+ attr_reader :uniq
674
+
675
+ # @return [Boolean, Integer] Flatten all if true, or none if false, or to given level (0 = none, -1 = all)
676
+ # @api public
677
+ attr_reader :flatten
678
+
679
+ # The hash multibind producer provides options to control conflict resolution.
680
+ # By default, the hash is produced using `:priority` resolution - the highest entry is selected, the rest are
681
+ # ignored unless they have the same priority which is an error.
682
+ #
683
+ # @param injector [Puppet::Pops::Binder::Injector] The injector where the lookup originates
684
+ # @param binding [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
685
+ # @param scope [Puppet::Parser::Scope] The scope to use for evaluation
686
+ # @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
687
+ # @option options [Symbol, String] :conflict_resolution (:priority) One of `:error`, `:merge`, `:append`, `:priority`, `:ignore`
688
+ # <ul><li> `ignore` the first found highest priority contribution is used, the rest are ignored</li>
689
+ # <li>`error` any duplicate key is an error</li>
690
+ # <li>`append` element type must be compatible with Array, makes elements be arrays and appends all found</li>
691
+ # <li>`merge` element type must be compatible with hash, merges hashes with retention of highest priority hash content</li>
692
+ # <li>`priority` the first found highest priority contribution is used, duplicates with same priority raises and error, the rest are
693
+ # ignored.</li></ul>
694
+ # @option options [Boolean, Integer] :flatten (false) If appended should be flattened. Also see {#flatten}.
695
+ # @option options [Boolean] :uniq (false) If appended result should be made unique.
696
+ #
697
+ # @api public
698
+ #
699
+ def initialize(injector, binding, scope, options)
700
+ super
701
+ @conflict_resolution = options[:conflict_resolution].nil? ? :priority : options[:conflict_resolution]
702
+ @uniq = !!options[:uniq]
703
+ @flatten = options[:flatten]
704
+
705
+ unless [:error, :merge, :append, :priority, :ignore].include?(@conflict_resolution)
706
+ raise ArgumentError, "Unknown conflict_resolution for Multibind Hash: '#{@conflict_resolution}."
707
+ end
708
+
709
+ case @flatten
710
+ when Integer
711
+ when true
712
+ @flatten = -1
713
+ when false
714
+ @flatten = nil
715
+ when NilClass
716
+ @flatten = nil
717
+ else
718
+ raise ArgumentError, "Option :flatten must be nil, Boolean, or an integer value" unless @flatten.is_a?(Integer)
719
+ end
720
+
721
+ if uniq || flatten || conflict_resolution.to_s == 'append'
722
+ etype = binding.type.element_type
723
+ unless etype.class == Puppet::Pops::Types::PDataType || etype.is_a?(Puppet::Pops::Types::PArrayType)
724
+ detail = []
725
+ detail << ":uniq" if uniq
726
+ detail << ":flatten" if flatten
727
+ detail << ":conflict_resolution => :append" if conflict_resolution.to_s == 'append'
728
+ raise ArgumentError, ["Options #{detail.join(', and ')} cannot be used with a Multibind ",
729
+ "of type #{injector.type_calculator.string(binding.type)}"].join()
730
+ end
731
+ end
732
+ end
733
+
734
+ protected
735
+
736
+ # @api private
737
+ def internal_produce(scope)
738
+ seen = {}
739
+ included_entries = []
740
+
741
+ injector.get_contributions(scope, contributions_key).each do |element|
742
+ key = element[0]
743
+ entry = element[1]
744
+
745
+ name = entry.binding.name
746
+ raise ArgumentError, "A Hash Multibind contribution to '#{binding.name}' must have a name." if name.nil? || name.empty?
747
+
748
+ existing = seen[name]
749
+ if existing
750
+ case conflict_resolution.to_s
751
+ when 'priority'
752
+ # skip if duplicate has lower prio
753
+ if (comparison = (seen[name] <=> entry)) <= 0
754
+ raise ArgumentError, "Internal Error: contributions not given in decreasing precedence order" unless comparison == 0
755
+ raise ArgumentError, "Duplicate key (same priority) contributed to Hash Multibinding '#{binding.name}', key: '#{name}'."
756
+ end
757
+ next
758
+
759
+ when 'ignore'
760
+ # skip, ignore conflict if prio is the same
761
+ next
762
+
763
+ when 'error'
764
+ raise ArgumentError, "Duplicate key contributed to Hash Multibinding '#{binding.name}', key: '#{name}'."
765
+
766
+ end
767
+ else
768
+ seen[name] = entry
769
+ end
770
+ included_entries << [key, entry]
771
+ end
772
+ result = {}
773
+ included_entries.each do |element|
774
+ k = element[ 0 ]
775
+ entry = element[ 1 ]
776
+ x = injector.lookup_key(scope, k)
777
+ name = entry.binding.name
778
+ assert_type(binding(), injector.type_calculator(), name, x)
779
+ if result[ name ]
780
+ merge(result, name, result[ name ], x)
781
+ else
782
+ result[ name ] = conflict_resolution().to_s == 'append' ? [x] : x
783
+ end
784
+ end
785
+ result
786
+ end
787
+
788
+ # @api private
789
+ def merge(result, name, higher, lower)
790
+ case conflict_resolution.to_s
791
+ when 'append'
792
+ unless higher.is_a?(Array)
793
+ higher = [higher]
794
+ end
795
+ tmp = higher + [lower]
796
+ tmp.flatten!(flatten) if flatten
797
+ tmp.uniq! if uniq
798
+ result[name] = tmp
799
+
800
+ when 'merge'
801
+ result[name] = lower.merge(higher)
802
+
803
+ end
804
+ end
805
+
806
+ # @api private
807
+ def assert_type(binding, tc, key, value)
808
+ unless tc.instance?(binding.type.key_type, key)
809
+ raise ArgumentError, ["Type Error: key contribution to #{binding.name}['#{key}'] ",
810
+ "is incompatible with key type: #{tc.label(binding.type)}, ",
811
+ type_error_detail(binding.type.key_type, key)].join()
812
+ end
813
+
814
+ if key.nil? || !key.is_a?(String) || key.empty?
815
+ raise ArgumentError, "Entry contributing to multibind hash with id '#{binding.id}' must have a name."
816
+ end
817
+
818
+ unless tc.instance?(binding.type.element_type, value)
819
+ raise ArgumentError, ["Type Error: value contribution to #{binding.name}['#{key}'] ",
820
+ "is incompatible, ",
821
+ type_error_detail(binding.type.element_type, value)].join()
822
+ end
823
+ end
824
+ end
825
+
826
+ end